00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include <sys/time.h>
00018 #include <time.h>
00019 #include "cmodel_permutation.h"
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #define READ_YUV101010 \
00032 uint64_t y, u, v; \
00033 uint32_t input_i = input[0] | \
00034 (input[1] << 8) | \
00035 (input[2] << 16) | \
00036 (input[3] << 24); \
00037 \
00038 y = ((input_i & 0xffc00000) >> 16) | 0x3f; \
00039 u = ((input_i & 0x3ff000) >> 6) | 0x3f; \
00040 v = ((input_i & 0xffc) << 4) | 0x3f;
00041
00042
00043
00044
00045
00046
00047 static inline void transfer_YUV101010_to_RGB8(unsigned char *(*output), unsigned char *input)
00048 {
00049 int r, g, b;
00050
00051 READ_YUV101010
00052
00053 y = (y << 8) | (y >> 8);
00054
00055 YUV_TO_RGB16(y, u, v, r, g, b);
00056
00057 *(*output)++ = (unsigned char)(((input[0] & 0xc000) >> 8) +
00058 ((input[1] & 0xe000) >> 10) +
00059 ((input[2] & 0xe000) >> 13));
00060 }
00061
00062 static inline void transfer_YUV101010_to_BGR565(unsigned char *(*output), unsigned char *input)
00063 {
00064 int r, g, b;
00065
00066 READ_YUV101010
00067
00068 y = (y << 8) | (y >> 8);
00069
00070 YUV_TO_RGB16(y, u, v, r, g, b);
00071
00072 *(uint16_t*)(*output) = (b & 0xf800) |
00073 ((g & 0xfc00) >> 5) |
00074 ((r & 0xf800) >> 11);
00075 (*output) += 2;
00076 }
00077
00078 static inline void transfer_YUV101010_to_RGB565(unsigned char *(*output), unsigned char *input)
00079 {
00080 int r, g, b;
00081
00082 READ_YUV101010
00083
00084 y = (y << 8) | (y >> 8);
00085
00086 YUV_TO_RGB16(y, u, v, r, g, b);
00087
00088 *(uint16_t*)(*output) = (r & 0xf800) |
00089 ((g & 0xfc00) >> 5) |
00090 ((b & 0xf800) >> 11);
00091 (*output) += 2;
00092 }
00093
00094 static inline void transfer_YUV101010_to_BGR888(unsigned char *(*output), unsigned char *input)
00095 {
00096 int r, g, b;
00097
00098 READ_YUV101010
00099
00100 y = (y << 8) | (y >> 8);
00101
00102 YUV_TO_RGB16(y, u, v, r, g, b);
00103
00104 *(*output)++ = b >> 8;
00105 *(*output)++ = g >> 8;
00106 *(*output)++ = r >> 8;
00107 }
00108
00109 static inline void transfer_YUV101010_to_BGR8888(unsigned char *(*output), unsigned char *input)
00110 {
00111 int r, g, b;
00112
00113 READ_YUV101010
00114
00115 y = (y << 8) | (y >> 8);
00116
00117 YUV_TO_RGB16(y, u, v, r, g, b);
00118
00119 *(*output)++ = b >> 8;
00120 *(*output)++ = g >> 8;
00121 *(*output)++ = r >> 8;
00122 (*output)++;
00123 }
00124
00125 static inline void transfer_YUV101010_to_YUV888(unsigned char *(*output), unsigned char *input)
00126 {
00127 READ_YUV101010
00128
00129 *(*output)++ = y >> 8;
00130 *(*output)++ = u >> 8;
00131 *(*output)++ = v >> 8;
00132 }
00133
00134 static inline void transfer_YUV101010_to_YUVA8888(unsigned char *(*output), unsigned char *input)
00135 {
00136 READ_YUV101010
00137
00138 *(*output)++ = y >> 8;
00139 *(*output)++ = u >> 8;
00140 *(*output)++ = v >> 8;
00141 *(*output)++ = 0xff;
00142 }
00143
00144 static inline void transfer_YUV101010_to_YUV161616(uint16_t *(*output), unsigned char *input)
00145 {
00146 READ_YUV101010
00147
00148 *(*output)++ = y;
00149 *(*output)++ = u;
00150 *(*output)++ = v;
00151 }
00152
00153 static inline void transfer_YUV101010_to_YUVA16161616(uint16_t *(*output), unsigned char *input)
00154 {
00155 READ_YUV101010
00156
00157 *(*output)++ = y;
00158 *(*output)++ = u;
00159 *(*output)++ = v;
00160 *(*output)++ = 0xffff;
00161 }
00162
00163 static inline void transfer_YUV101010_to_RGB888(unsigned char *(*output), unsigned char *input)
00164 {
00165 int r, g, b;
00166
00167 READ_YUV101010
00168
00169 y = (y << 8) | (y >> 8);
00170
00171 YUV_TO_RGB16(y, u, v, r, g, b);
00172
00173 *(*output)++ = r >> 8;
00174 *(*output)++ = g >> 8;
00175 *(*output)++ = b >> 8;
00176 }
00177
00178 static inline void transfer_YUV101010_to_RGBA8888(unsigned char *(*output), unsigned char *input)
00179 {
00180 int r, g, b;
00181
00182 READ_YUV101010
00183
00184 y = (y << 8) | (y >> 8);
00185
00186 YUV_TO_RGB16(y, u, v, r, g, b);
00187
00188 *(*output)++ = r >> 8;
00189 *(*output)++ = g >> 8;
00190 *(*output)++ = b >> 8;
00191 *(*output)++ = 0xff;
00192 }
00193
00194 static inline void transfer_YUV101010_to_RGB161616(uint16_t *(*output), unsigned char *input)
00195 {
00196 int r, g, b;
00197
00198 READ_YUV101010
00199
00200 y = (y << 8) | (y >> 8);
00201
00202 YUV_TO_RGB16(y, u, v, r, g, b);
00203
00204 *(*output)++ = r;
00205 *(*output)++ = g;
00206 *(*output)++ = b;
00207 }
00208
00209 static inline void transfer_YUV101010_to_RGBA16161616(uint16_t *(*output), unsigned char *input)
00210 {
00211 int r, g, b;
00212
00213 READ_YUV101010
00214
00215 y = (y << 8) | (y >> 8);
00216
00217 YUV_TO_RGB16(y, u, v, r, g, b);
00218
00219 *(*output)++ = r;
00220 *(*output)++ = g;
00221 *(*output)++ = b;
00222 *(*output)++ = 0xffff;
00223 }
00224
00225
00226
00227
00228 static inline void transfer_YUV101010_to_RGB_FLOAT(float *(*output),
00229 unsigned char *input)
00230 {
00231 float r, g, b;
00232 float y_f;
00233
00234 READ_YUV101010
00235
00236 y_f = (float)y / 0xffff;
00237
00238 YUV16_TO_RGB_FLOAT(y_f, u, v, r, g, b);
00239
00240 *(*output)++ = r;
00241 *(*output)++ = g;
00242 *(*output)++ = b;
00243 }
00244
00245 static inline void transfer_YUV101010_to_RGBA_FLOAT(float *(*output),
00246 unsigned char *input)
00247 {
00248 float r, g, b;
00249 float y_f;
00250
00251 READ_YUV101010
00252
00253 y_f = (float)y / 0xffff;
00254
00255 YUV16_TO_RGB_FLOAT(y_f, u, v, r, g, b);
00256
00257 *(*output)++ = r;
00258 *(*output)++ = g;
00259 *(*output)++ = b;
00260 *(*output)++ = 1.0;
00261 }
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284 static inline void transfer_VYU888_to_RGB8(unsigned char *(*output), unsigned char *input)
00285 {
00286 int y, u, v;
00287 int r, g, b;
00288
00289 y = ((int)input[1]) << 16;
00290 u = input[2];
00291 v = input[0];
00292 YUV_TO_RGB(y, u, v, r, g, b);
00293
00294 *(*output) = (unsigned char)((r & 0xc0) +
00295 ((g & 0xe0) >> 2) +
00296 ((b & 0xe0) >> 5));
00297 (*output)++;
00298 }
00299
00300 static inline void transfer_VYU888_to_BGR565(unsigned char *(*output), unsigned char *input)
00301 {
00302 int y, u, v;
00303 int r, g, b;
00304
00305 y = ((int)input[1]) << 16;
00306 u = input[2];
00307 v = input[0];
00308 YUV_TO_RGB(y, u, v, r, g, b);
00309 *(uint16_t*)(*output) = ((b & 0xf8) << 8)
00310 + ((g & 0xfc) << 3)
00311 + ((r & 0xf8) >> 3);
00312 (*output) += 2;
00313 }
00314
00315 static inline void transfer_VYU888_to_RGB565(unsigned char *(*output), unsigned char *input)
00316 {
00317 int y, u, v;
00318 int r, g, b;
00319
00320 y = ((int)input[1]) << 16;
00321 u = input[2];
00322 v = input[0];
00323 YUV_TO_RGB(y, u, v, r, g, b);
00324 *(uint16_t*)(*output) = ((r & 0xf8) << 8)
00325 + ((g & 0xfc) << 3)
00326 + ((b & 0xf8) >> 3);
00327 (*output) += 2;
00328 }
00329
00330 static inline void transfer_VYU888_to_BGR888(unsigned char *(*output), unsigned char *input)
00331 {
00332 int y, u, v;
00333 int r, g, b;
00334
00335 y = ((int)input[1]) << 16;
00336 u = input[2];
00337 v = input[0];
00338 YUV_TO_RGB(y, u, v, r, g, b);
00339
00340 (*output)[2] = r;
00341 (*output)[1] = g;
00342 (*output)[0] = b;
00343 (*output) += 3;
00344 }
00345
00346 static inline void transfer_VYU888_to_BGR8888(unsigned char *(*output), unsigned char *input)
00347 {
00348 int y, u, v;
00349 int r, g, b;
00350
00351 y = ((int)input[1]) << 16;
00352 u = input[2];
00353 v = input[0];
00354 YUV_TO_RGB(y, u, v, r, g, b);
00355 (*output)[2] = r;
00356 (*output)[1] = g;
00357 (*output)[0] = b;
00358 (*output) += 4;
00359 }
00360
00361
00362 static inline void transfer_VYU888_to_RGB888(unsigned char *(*output), unsigned char *input)
00363 {
00364 int y, u, v;
00365 int r, g, b;
00366
00367 y = ((int)input[1]) << 16;
00368 u = input[2];
00369 v = input[0];
00370 YUV_TO_RGB(y, u, v, r, g, b);
00371
00372 (*output)[0] = r;
00373 (*output)[1] = g;
00374 (*output)[2] = b;
00375 (*output) += 3;
00376 }
00377
00378 static inline void transfer_VYU888_to_RGBA8888(unsigned char *(*output), unsigned char *input)
00379 {
00380 int y, u, v;
00381 int r, g, b;
00382
00383 y = ((int)input[1]) << 16;
00384 u = input[2];
00385 v = input[0];
00386 YUV_TO_RGB(y, u, v, r, g, b);
00387
00388 (*output)[0] = r;
00389 (*output)[1] = g;
00390 (*output)[2] = b;
00391 (*output)[3] = 0xff;
00392 (*output) += 4;
00393 }
00394
00395
00396 static inline void transfer_VYU888_to_RGB161616(uint16_t *(*output), unsigned char *input)
00397 {
00398 int y, u, v;
00399 int r, g, b;
00400
00401 y = (input[1] << 16) | (input[1] << 8) | input[1];
00402 u = (input[2] << 8) | input[2];
00403 v = (input[0] << 8) | input[0];
00404 YUV_TO_RGB16(y, u, v, r, g, b);
00405
00406 (*output)[0] = r;
00407 (*output)[1] = g;
00408 (*output)[2] = b;
00409 (*output) += 3;
00410 }
00411
00412 static inline void transfer_VYU888_to_RGBA16161616(uint16_t *(*output), unsigned char *input)
00413 {
00414 int y, u, v;
00415 int r, g, b;
00416
00417 y = (input[1] << 16) | (input[1] << 8) | input[1];
00418 u = (input[2] << 8) | input[2];
00419 v = (input[0] << 8) | input[0];
00420 YUV_TO_RGB16(y, u, v, r, g, b);
00421
00422 (*output)[0] = r;
00423 (*output)[1] = g;
00424 (*output)[2] = b;
00425 (*output)[3] = 0xffff;
00426 (*output) += 3;
00427 }
00428
00429
00430 static inline void transfer_VYU888_to_RGB_FLOAT(float *(*output), unsigned char *input)
00431 {
00432 float y;
00433 int u, v;
00434 float r, g, b;
00435
00436 v = *input++;
00437 y = (float)*input++ / 0xff;
00438 u = *input;
00439 YUV_TO_FLOAT(y, u, v, r, g, b);
00440
00441 *(*output)++ = r;
00442 *(*output)++ = g;
00443 *(*output)++ = b;
00444 }
00445
00446 static inline void transfer_VYU888_to_RGBA_FLOAT(float *(*output), unsigned char *input)
00447 {
00448 float y;
00449 int u, v;
00450 float r, g, b;
00451
00452 v = *input++;
00453 y = (float)*input++ / 0xff;
00454 u = *input;
00455 YUV_TO_FLOAT(y, u, v, r, g, b);
00456
00457 *(*output)++ = r;
00458 *(*output)++ = g;
00459 *(*output)++ = b;
00460 *(*output)++ = 1.0;
00461 }
00462
00463
00464 static inline void transfer_VYU888_to_YUV888(unsigned char *(*output), unsigned char *input)
00465 {
00466 (*output)[0] = input[1];
00467 (*output)[1] = input[2];
00468 (*output)[2] = input[0];
00469 (*output) += 3;
00470 }
00471
00472 static inline void transfer_VYU888_to_YUVA8888(unsigned char *(*output), unsigned char *input)
00473 {
00474 (*output)[0] = input[1];
00475 (*output)[1] = input[2];
00476 (*output)[2] = input[0];
00477 (*output)[3] = 0xff;
00478 (*output) += 4;
00479 }
00480
00481
00482 static inline void transfer_VYU888_to_YUV161616(uint16_t *(*output), unsigned char *input)
00483 {
00484 (*output)[0] = ((int)input[1]) << 8;
00485 (*output)[1] = ((int)input[2]) << 8;
00486 (*output)[2] = ((int)input[0]) << 8;
00487 (*output) += 3;
00488 }
00489
00490 static inline void transfer_VYU888_to_YUVA16161616(uint16_t *(*output), unsigned char *input)
00491 {
00492 (*output)[0] = ((int)input[1]) << 8;
00493 (*output)[1] = ((int)input[2]) << 8;
00494 (*output)[2] = ((int)input[0]) << 8;
00495 (*output)[3] = 0xff;
00496 (*output) += 4;
00497 }
00498
00499
00500
00501
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511
00512
00513 static inline void transfer_UYVA8888_to_RGB8(unsigned char *(*output), unsigned char *input)
00514 {
00515 int y, u, v;
00516 int r, g, b;
00517
00518 y = ((int)input[1]) << 16;
00519 u = input[0];
00520 v = input[2];
00521 YUV_TO_RGB(y, u, v, r, g, b);
00522
00523 r = r * input[3] / 0xff;
00524 g = g * input[3] / 0xff;
00525 b = b * input[3] / 0xff;
00526 *(*output) = (unsigned char)((r & 0xc0) +
00527 ((g & 0xe0) >> 2) +
00528 ((b & 0xe0) >> 5));
00529 (*output)++;
00530 }
00531
00532 static inline void transfer_UYVA8888_to_BGR565(unsigned char *(*output), unsigned char *input)
00533 {
00534 int y, u, v;
00535 int r, g, b;
00536
00537 y = ((int)input[1]) << 16;
00538 u = input[0];
00539 v = input[2];
00540 YUV_TO_RGB(y, u, v, r, g, b);
00541 r = r * input[3] / 0xff;
00542 g = g * input[3] / 0xff;
00543 b = b * input[3] / 0xff;
00544 *(uint16_t*)(*output) = ((b & 0xf8) << 8)
00545 + ((g & 0xfc) << 3)
00546 + ((r & 0xf8) >> 3);
00547 (*output) += 2;
00548 }
00549
00550 static inline void transfer_UYVA8888_to_RGB565(unsigned char *(*output), unsigned char *input)
00551 {
00552 int y, u, v;
00553 int r, g, b;
00554
00555 y = ((int)input[1]) << 16;
00556 u = input[0];
00557 v = input[2];
00558 YUV_TO_RGB(y, u, v, r, g, b);
00559 r = r * input[3] / 0xff;
00560 g = g * input[3] / 0xff;
00561 b = b * input[3] / 0xff;
00562 *(uint16_t*)(*output) = ((r & 0xf8) << 8)
00563 + ((g & 0xfc) << 3)
00564 + ((b & 0xf8) >> 3);
00565 (*output) += 2;
00566 }
00567
00568 static inline void transfer_UYVA8888_to_BGR888(unsigned char *(*output), unsigned char *input)
00569 {
00570 int y, u, v;
00571 int r, g, b;
00572
00573 y = ((int)input[1]) << 16;
00574 u = input[0];
00575 v = input[2];
00576 YUV_TO_RGB(y, u, v, r, g, b);
00577 r = r * input[3] / 0xff;
00578 g = g * input[3] / 0xff;
00579 b = b * input[3] / 0xff;
00580
00581 (*output)[2] = r;
00582 (*output)[1] = g;
00583 (*output)[0] = b;
00584 (*output) += 3;
00585 }
00586
00587 static inline void transfer_UYVA8888_to_BGR8888(unsigned char *(*output), unsigned char *input)
00588 {
00589 int y, u, v;
00590 int r, g, b;
00591
00592 y = ((int)input[1]) << 16;
00593 u = input[0];
00594 v = input[2];
00595 YUV_TO_RGB(y, u, v, r, g, b);
00596 r = r * input[3] / 0xff;
00597 g = g * input[3] / 0xff;
00598 b = b * input[3] / 0xff;
00599
00600 (*output)[2] = r;
00601 (*output)[1] = g;
00602 (*output)[0] = b;
00603 (*output) += 4;
00604 }
00605
00606
00607 static inline void transfer_UYVA8888_to_RGB888(unsigned char *(*output), unsigned char *input)
00608 {
00609 int y, u, v;
00610 int r, g, b;
00611
00612 y = ((int)input[1]) << 16;
00613 u = input[0];
00614 v = input[2];
00615 YUV_TO_RGB(y, u, v, r, g, b);
00616 r = r * input[3] / 0xff;
00617 g = g * input[3] / 0xff;
00618 b = b * input[3] / 0xff;
00619
00620 (*output)[0] = r;
00621 (*output)[1] = g;
00622 (*output)[2] = b;
00623 (*output) += 3;
00624 }
00625
00626 static inline void transfer_UYVA8888_to_RGBA8888(unsigned char *(*output), unsigned char *input)
00627 {
00628 int y, u, v;
00629 int r, g, b;
00630
00631 y = ((int)input[1]) << 16;
00632 u = input[0];
00633 v = input[2];
00634 YUV_TO_RGB(y, u, v, r, g, b);
00635
00636 (*output)[0] = r;
00637 (*output)[1] = g;
00638 (*output)[2] = b;
00639 (*output)[3] = input[3];
00640 (*output) += 4;
00641 }
00642
00643
00644 static inline void transfer_UYVA8888_to_RGB161616(uint16_t *(*output), unsigned char *input)
00645 {
00646 int y, u, v;
00647 int r, g, b;
00648
00649 y = ((int)input[1]) << 16;
00650 u = (input[0] << 8) | input[0];
00651 v = (input[2] << 8) | input[2];
00652 YUV_TO_RGB16(y, u, v, r, g, b);
00653 r = r * input[3] / 0xff;
00654 g = g * input[3] / 0xff;
00655 b = b * input[3] / 0xff;
00656
00657 (*output)[0] = r;
00658 (*output)[1] = g;
00659 (*output)[2] = b;
00660 (*output) += 3;
00661 }
00662
00663 static inline void transfer_UYVA8888_to_RGBA16161616(uint16_t *(*output), unsigned char *input)
00664 {
00665 int y, u, v;
00666 int r, g, b;
00667
00668 y = ((int)input[1]) << 16;
00669 u = (input[0] << 8) | input[0];
00670 v = (input[2] << 8) | input[2];
00671 YUV_TO_RGB16(y, u, v, r, g, b);
00672
00673 (*output)[0] = r;
00674 (*output)[1] = g;
00675 (*output)[2] = b;
00676 (*output)[3] = input[3] << 8;
00677 (*output) += 4;
00678 }
00679
00680 static inline void transfer_UYVA8888_to_RGB_FLOAT(float *(*output), unsigned char *input)
00681 {
00682 float y, a;
00683 int u, v;
00684 float r, g, b;
00685
00686 u = *input++;
00687 y = (float)*input++ / 0xff;
00688 v = *input++;
00689 a = (float)*input / 0xff;
00690 YUV_TO_FLOAT(y, u, v, r, g, b);
00691
00692 r = r * a;
00693 g = g * a;
00694 b = b * a;
00695
00696 *(*output)++ = r;
00697 *(*output)++ = g;
00698 *(*output)++ = b;
00699 }
00700
00701 static inline void transfer_UYVA8888_to_RGBA_FLOAT(float *(*output), unsigned char *input)
00702 {
00703 float y, a;
00704 int u, v;
00705 float r, g, b;
00706
00707 u = *input++;
00708 y = (float)*input++ / 0xff;
00709 v = *input++;
00710 a = (float)*input / 0xff;
00711 YUV_TO_FLOAT(y, u, v, r, g, b);
00712
00713 *(*output)++ = r;
00714 *(*output)++ = g;
00715 *(*output)++ = b;
00716 *(*output)++ = a;
00717 }
00718
00719
00720 static inline void transfer_UYVA8888_to_YUV888(unsigned char *(*output), unsigned char *input)
00721 {
00722 int a, anti_a;
00723 a = input[3];
00724 anti_a = 0xff - a;
00725
00726 (*output)[0] = (a * input[1]) / 0xff;
00727 (*output)[1] = (a * input[0] + anti_a * 0x80) / 0xff;
00728 (*output)[2] = (a * input[2] + anti_a * 0x80) / 0xff;
00729 (*output) += 3;
00730 }
00731
00732 static inline void transfer_UYVA8888_to_YUVA8888(unsigned char *(*output), unsigned char *input)
00733 {
00734 (*output)[0] = input[1];
00735 (*output)[1] = input[0];
00736 (*output)[2] = input[2];
00737 (*output)[3] = input[3];
00738 (*output) += 4;
00739 }
00740
00741
00742 static inline void transfer_UYVA8888_to_YUV161616(uint16_t *(*output), unsigned char *input)
00743 {
00744 int a, anti_a;
00745 a = input[3];
00746 anti_a = 0xff - a;
00747
00748 (*output)[0] = a * input[1];
00749 (*output)[1] = a * input[0] + anti_a * 0x80;
00750 (*output)[2] = a * input[2] + anti_a * 0x80;
00751 (*output) += 3;
00752 }
00753
00754 static inline void transfer_UYVA8888_to_YUVA16161616(uint16_t *(*output), unsigned char *input)
00755 {
00756 (*output)[0] = input[1] << 8;
00757 (*output)[1] = input[0] << 8;
00758 (*output)[2] = input[2] << 8;
00759 (*output)[3] = input[3] << 8;
00760 (*output) += 4;
00761 }
00762
00763
00764
00765
00766
00767
00768
00769
00770
00771
00772 #define TRANSFER_FRAME_DEFAULT(output, \
00773 input, \
00774 y_in_offset, \
00775 u_in_offset, \
00776 v_in_offset, \
00777 input_column) \
00778 { \
00779 register int i, j; \
00780 \
00781 switch(in_colormodel) \
00782 { \
00783 case BC_YUV888: \
00784 switch(out_colormodel) \
00785 { \
00786 case BC_RGB8: \
00787 TRANSFER_FRAME_HEAD \
00788 transfer_YUV888_to_RGB8((output), (input)); \
00789 TRANSFER_FRAME_TAIL \
00790 break; \
00791 case BC_BGR565: \
00792 TRANSFER_FRAME_HEAD \
00793 transfer_YUV888_to_BGR565((output), (input)); \
00794 TRANSFER_FRAME_TAIL \
00795 break; \
00796 case BC_RGB565: \
00797 TRANSFER_FRAME_HEAD \
00798 transfer_YUV888_to_RGB565((output), (input)); \
00799 TRANSFER_FRAME_TAIL \
00800 break; \
00801 case BC_BGR888: \
00802 TRANSFER_FRAME_HEAD \
00803 transfer_YUV888_to_BGR888((output), (input)); \
00804 TRANSFER_FRAME_TAIL \
00805 break; \
00806 case BC_BGR8888: \
00807 TRANSFER_FRAME_HEAD \
00808 transfer_YUV888_to_BGR8888((output), (input)); \
00809 TRANSFER_FRAME_TAIL \
00810 break; \
00811 case BC_RGB888: \
00812 TRANSFER_FRAME_HEAD \
00813 transfer_YUV888_to_RGB888((output), (input)); \
00814 TRANSFER_FRAME_TAIL \
00815 break; \
00816 case BC_RGBA8888: \
00817 TRANSFER_FRAME_HEAD \
00818 transfer_YUV888_to_RGBA8888((output), (input)); \
00819 TRANSFER_FRAME_TAIL \
00820 break; \
00821 case BC_ARGB8888: \
00822 TRANSFER_FRAME_HEAD \
00823 transfer_YUV888_to_ARGB8888((output), (input)); \
00824 TRANSFER_FRAME_TAIL \
00825 break; \
00826 case BC_RGB_FLOAT: \
00827 TRANSFER_FRAME_HEAD \
00828 transfer_YUV888_to_RGB_FLOAT((float**)(output), (input)); \
00829 TRANSFER_FRAME_TAIL \
00830 break; \
00831 case BC_RGBA_FLOAT: \
00832 TRANSFER_FRAME_HEAD \
00833 transfer_YUV888_to_RGBA_FLOAT((float**)(output), (input)); \
00834 TRANSFER_FRAME_TAIL \
00835 break; \
00836 case BC_YUV101010: \
00837 TRANSFER_FRAME_HEAD \
00838 transfer_YUV888_to_YUV101010((output), (input)); \
00839 TRANSFER_FRAME_TAIL \
00840 break; \
00841 case BC_YUV420P: \
00842 TRANSFER_YUV420P_OUT_HEAD \
00843 transfer_YUV888_to_YUV420P_YUV422P(output_y, \
00844 output_u, \
00845 output_v, \
00846 (input), \
00847 j); \
00848 TRANSFER_FRAME_TAIL \
00849 break; \
00850 case BC_YUV422P: \
00851 TRANSFER_YUV422P_OUT_HEAD \
00852 transfer_YUV888_to_YUV420P_YUV422P(output_y, \
00853 output_u, \
00854 output_v, \
00855 (input), \
00856 j); \
00857 TRANSFER_FRAME_TAIL \
00858 break; \
00859 case BC_YUV444P: \
00860 TRANSFER_YUV444P_OUT_HEAD \
00861 transfer_YUV888_to_YUV444P(output_y, \
00862 output_u, \
00863 output_v, \
00864 (input), \
00865 j); \
00866 TRANSFER_FRAME_TAIL \
00867 break; \
00868 case BC_YUV422: \
00869 TRANSFER_FRAME_HEAD \
00870 transfer_YUV888_to_YUV422((output), \
00871 (input), \
00872 j); \
00873 TRANSFER_FRAME_TAIL \
00874 break; \
00875 case BC_YUV888: \
00876 TRANSFER_FRAME_HEAD \
00877 transfer_YUV888_to_YUV888((output), (input)); \
00878 TRANSFER_FRAME_TAIL \
00879 break; \
00880 case BC_YUVA8888: \
00881 TRANSFER_FRAME_HEAD \
00882 transfer_YUV888_to_YUVA8888((output), (input)); \
00883 TRANSFER_FRAME_TAIL \
00884 break; \
00885 case BC_VYU888: \
00886 TRANSFER_FRAME_HEAD \
00887 transfer_YUV888_to_VYU888((output), (input)); \
00888 TRANSFER_FRAME_TAIL \
00889 break; \
00890 case BC_UYVA8888: \
00891 TRANSFER_FRAME_HEAD \
00892 transfer_YUV888_to_UYVA8888((output), (input)); \
00893 TRANSFER_FRAME_TAIL \
00894 break; \
00895 } \
00896 break; \
00897 \
00898 case BC_YUVA8888: \
00899 switch(out_colormodel) \
00900 { \
00901 case BC_RGB8: \
00902 TRANSFER_FRAME_HEAD \
00903 transfer_YUVA8888_to_RGB8((output), (input)); \
00904 TRANSFER_FRAME_TAIL \
00905 break; \
00906 case BC_BGR565: \
00907 TRANSFER_FRAME_HEAD \
00908 transfer_YUVA8888_to_BGR565((output), (input)); \
00909 TRANSFER_FRAME_TAIL \
00910 break; \
00911 case BC_RGB565: \
00912 TRANSFER_FRAME_HEAD \
00913 transfer_YUVA8888_to_RGB565((output), (input)); \
00914 TRANSFER_FRAME_TAIL \
00915 break; \
00916 case BC_BGR888: \
00917 TRANSFER_FRAME_HEAD \
00918 transfer_YUVA8888_to_BGR888((output), (input)); \
00919 TRANSFER_FRAME_TAIL \
00920 break; \
00921 case BC_BGR8888: \
00922 TRANSFER_FRAME_HEAD \
00923 transfer_YUVA8888_to_BGR8888((output), (input)); \
00924 TRANSFER_FRAME_TAIL \
00925 break; \
00926 case BC_RGB888: \
00927 TRANSFER_FRAME_HEAD \
00928 transfer_YUVA8888_to_RGB888((output), (input)); \
00929 TRANSFER_FRAME_TAIL \
00930 break; \
00931 case BC_RGBA8888: \
00932 TRANSFER_FRAME_HEAD \
00933 transfer_YUVA8888_to_RGBA8888((output), (input)); \
00934 TRANSFER_FRAME_TAIL \
00935 break; \
00936 case BC_ARGB8888: \
00937 TRANSFER_FRAME_HEAD \
00938 transfer_YUVA8888_to_ARGB8888((output), (input)); \
00939 TRANSFER_FRAME_TAIL \
00940 break; \
00941 case BC_RGB_FLOAT: \
00942 TRANSFER_FRAME_HEAD \
00943 transfer_YUVA8888_to_RGB_FLOAT((float**)(output), (input)); \
00944 TRANSFER_FRAME_TAIL \
00945 break; \
00946 case BC_RGBA_FLOAT: \
00947 TRANSFER_FRAME_HEAD \
00948 transfer_YUVA8888_to_RGBA_FLOAT((float**)(output), (input)); \
00949 TRANSFER_FRAME_TAIL \
00950 break; \
00951 case BC_VYU888: \
00952 TRANSFER_FRAME_HEAD \
00953 transfer_YUVA8888_to_VYU888((output), (input)); \
00954 TRANSFER_FRAME_TAIL \
00955 break; \
00956 case BC_YUVA8888: \
00957 TRANSFER_FRAME_HEAD \
00958 transfer_YUVA8888_to_YUVA8888((output), (input)); \
00959 TRANSFER_FRAME_TAIL \
00960 break; \
00961 case BC_UYVA8888: \
00962 TRANSFER_FRAME_HEAD \
00963 transfer_YUVA8888_to_UYVA8888((output), (input)); \
00964 TRANSFER_FRAME_TAIL \
00965 break; \
00966 case BC_YUV101010: \
00967 TRANSFER_FRAME_HEAD \
00968 transfer_YUVA8888_to_YUV101010((output), (input)); \
00969 TRANSFER_FRAME_TAIL \
00970 break; \
00971 case BC_YUV420P: \
00972 TRANSFER_YUV420P_OUT_HEAD \
00973 transfer_YUVA8888_to_YUV420P_YUV422P(output_y, \
00974 output_u, \
00975 output_v, \
00976 (input), \
00977 j); \
00978 TRANSFER_FRAME_TAIL \
00979 break; \
00980 case BC_YUV422P: \
00981 TRANSFER_YUV422P_OUT_HEAD \
00982 transfer_YUVA8888_to_YUV420P_YUV422P(output_y, \
00983 output_u, \
00984 output_v, \
00985 (input), \
00986 j); \
00987 TRANSFER_FRAME_TAIL \
00988 break; \
00989 case BC_YUV444P: \
00990 TRANSFER_YUV444P_OUT_HEAD \
00991 transfer_YUVA8888_to_YUV444P(output_y, \
00992 output_u, \
00993 output_v, \
00994 (input), \
00995 j); \
00996 TRANSFER_FRAME_TAIL \
00997 break; \
00998 case BC_YUV422: \
00999 TRANSFER_FRAME_HEAD \
01000 transfer_YUVA8888_to_YUV422((output), \
01001 (input), \
01002 j); \
01003 TRANSFER_FRAME_TAIL \
01004 break; \
01005 } \
01006 break; \
01007 \
01008 case BC_YUV161616: \
01009 switch(out_colormodel) \
01010 { \
01011 case BC_RGB8: \
01012 TRANSFER_FRAME_HEAD \
01013 transfer_YUV161616_to_RGB8((output), (uint16_t*)(input)); \
01014 TRANSFER_FRAME_TAIL \
01015 break; \
01016 case BC_BGR565: \
01017 TRANSFER_FRAME_HEAD \
01018 transfer_YUV161616_to_BGR565((output), (uint16_t*)(input)); \
01019 TRANSFER_FRAME_TAIL \
01020 break; \
01021 case BC_RGB565: \
01022 TRANSFER_FRAME_HEAD \
01023 transfer_YUV161616_to_RGB565((output), (uint16_t*)(input)); \
01024 TRANSFER_FRAME_TAIL \
01025 break; \
01026 case BC_BGR888: \
01027 TRANSFER_FRAME_HEAD \
01028 transfer_YUV161616_to_BGR888((output), (uint16_t*)(input)); \
01029 TRANSFER_FRAME_TAIL \
01030 break; \
01031 case BC_BGR8888: \
01032 TRANSFER_FRAME_HEAD \
01033 transfer_YUV161616_to_BGR8888((output), (uint16_t*)(input)); \
01034 TRANSFER_FRAME_TAIL \
01035 break; \
01036 case BC_RGB888: \
01037 TRANSFER_FRAME_HEAD \
01038 transfer_YUV161616_to_RGB888((output), (uint16_t*)(input)); \
01039 TRANSFER_FRAME_TAIL \
01040 break; \
01041 case BC_RGBA8888: \
01042 TRANSFER_FRAME_HEAD \
01043 transfer_YUV161616_to_RGBA8888((output), (uint16_t*)(input)); \
01044 TRANSFER_FRAME_TAIL \
01045 break; \
01046 case BC_ARGB8888: \
01047 TRANSFER_FRAME_HEAD \
01048 transfer_YUV161616_to_ARGB8888((output), (uint16_t*)(input)); \
01049 TRANSFER_FRAME_TAIL \
01050 break; \
01051 case BC_RGB_FLOAT: \
01052 TRANSFER_FRAME_HEAD \
01053 transfer_YUV161616_to_RGB_FLOAT((float**)(output), (uint16_t*)(input)); \
01054 TRANSFER_FRAME_TAIL \
01055 break; \
01056 case BC_RGBA_FLOAT: \
01057 TRANSFER_FRAME_HEAD \
01058 transfer_YUV161616_to_RGBA_FLOAT((float**)(output), (uint16_t*)(input)); \
01059 TRANSFER_FRAME_TAIL \
01060 break; \
01061 case BC_YUV420P: \
01062 TRANSFER_YUV420P_OUT_HEAD \
01063 transfer_YUV161616_to_YUV420P_YUV422P(output_y, \
01064 output_u, \
01065 output_v, \
01066 (uint16_t*)(input), \
01067 j); \
01068 TRANSFER_FRAME_TAIL \
01069 break; \
01070 case BC_YUV422P: \
01071 TRANSFER_YUV422P_OUT_HEAD \
01072 transfer_YUV161616_to_YUV420P_YUV422P(output_y, \
01073 output_u, \
01074 output_v, \
01075 (uint16_t*)(input), \
01076 j); \
01077 TRANSFER_FRAME_TAIL \
01078 break; \
01079 case BC_YUV444P: \
01080 TRANSFER_YUV444P_OUT_HEAD \
01081 transfer_YUV161616_to_YUV444P(output_y, \
01082 output_u, \
01083 output_v, \
01084 (uint16_t*)(input), \
01085 j); \
01086 TRANSFER_FRAME_TAIL \
01087 break; \
01088 case BC_YUV422: \
01089 TRANSFER_FRAME_HEAD \
01090 transfer_YUV161616_to_YUV422((output), \
01091 (uint16_t*)(input), \
01092 j); \
01093 TRANSFER_FRAME_TAIL \
01094 break; \
01095 case BC_YUV101010: \
01096 TRANSFER_FRAME_HEAD \
01097 transfer_YUV161616_to_YUV101010((output), (uint16_t*)(input)); \
01098 TRANSFER_FRAME_TAIL \
01099 break; \
01100 case BC_YUVA8888: \
01101 TRANSFER_FRAME_HEAD \
01102 transfer_YUV161616_to_YUVA8888((output), \
01103 (uint16_t*)(input)); \
01104 TRANSFER_FRAME_TAIL \
01105 break; \
01106 case BC_VYU888: \
01107 TRANSFER_FRAME_HEAD \
01108 transfer_YUV161616_to_VYU888((output), (uint16_t*)(input)); \
01109 TRANSFER_FRAME_TAIL \
01110 break; \
01111 case BC_UYVA8888: \
01112 TRANSFER_FRAME_HEAD \
01113 transfer_YUV161616_to_UYVA8888((output), (uint16_t*)(input)); \
01114 TRANSFER_FRAME_TAIL \
01115 break; \
01116 case BC_YUV161616: \
01117 TRANSFER_FRAME_HEAD \
01118 transfer_YUV161616_to_YUV161616((uint16_t**)(output), \
01119 (uint16_t*)(input)); \
01120 TRANSFER_FRAME_TAIL \
01121 break; \
01122 } \
01123 break; \
01124 \
01125 case BC_YUVA16161616: \
01126 switch(out_colormodel) \
01127 { \
01128 case BC_RGB8: \
01129 TRANSFER_FRAME_HEAD \
01130 transfer_YUVA16161616_to_RGB8((output), (uint16_t*)(input)); \
01131 TRANSFER_FRAME_TAIL \
01132 break; \
01133 case BC_BGR565: \
01134 TRANSFER_FRAME_HEAD \
01135 transfer_YUVA16161616_to_BGR565((output), (uint16_t*)(input)); \
01136 TRANSFER_FRAME_TAIL \
01137 break; \
01138 case BC_RGB565: \
01139 TRANSFER_FRAME_HEAD \
01140 transfer_YUVA16161616_to_RGB565((output), (uint16_t*)(input)); \
01141 TRANSFER_FRAME_TAIL \
01142 break; \
01143 case BC_BGR888: \
01144 TRANSFER_FRAME_HEAD \
01145 transfer_YUVA16161616_to_BGR888((output), (uint16_t*)(input)); \
01146 TRANSFER_FRAME_TAIL \
01147 break; \
01148 case BC_BGR8888: \
01149 TRANSFER_FRAME_HEAD \
01150 transfer_YUVA16161616_to_BGR8888((output), (uint16_t*)(input)); \
01151 TRANSFER_FRAME_TAIL \
01152 break; \
01153 case BC_RGB888: \
01154 TRANSFER_FRAME_HEAD \
01155 transfer_YUVA16161616_to_RGB888((output), (uint16_t*)(input)); \
01156 TRANSFER_FRAME_TAIL \
01157 break; \
01158 case BC_RGBA8888: \
01159 TRANSFER_FRAME_HEAD \
01160 transfer_YUVA16161616_to_RGBA8888((output), (uint16_t*)(input)); \
01161 TRANSFER_FRAME_TAIL \
01162 break; \
01163 case BC_ARGB8888: \
01164 TRANSFER_FRAME_HEAD \
01165 transfer_YUVA16161616_to_ARGB8888((output), (uint16_t*)(input)); \
01166 TRANSFER_FRAME_TAIL \
01167 break; \
01168 case BC_RGB_FLOAT: \
01169 TRANSFER_FRAME_HEAD \
01170 transfer_YUVA16161616_to_RGB_FLOAT((float**)(output), (uint16_t*)(input)); \
01171 TRANSFER_FRAME_TAIL \
01172 break; \
01173 case BC_RGBA_FLOAT: \
01174 TRANSFER_FRAME_HEAD \
01175 transfer_YUVA16161616_to_RGBA_FLOAT((float**)(output), (uint16_t*)(input)); \
01176 TRANSFER_FRAME_TAIL \
01177 break; \
01178 case BC_YUV101010: \
01179 TRANSFER_FRAME_HEAD \
01180 transfer_YUVA16161616_to_YUV101010((output), (uint16_t*)(input)); \
01181 TRANSFER_FRAME_TAIL \
01182 break; \
01183 case BC_VYU888: \
01184 TRANSFER_FRAME_HEAD \
01185 transfer_YUVA16161616_to_VYU888((output), (uint16_t*)(input)); \
01186 TRANSFER_FRAME_TAIL \
01187 break; \
01188 case BC_UYVA8888: \
01189 TRANSFER_FRAME_HEAD \
01190 transfer_YUVA16161616_to_UYVA8888((output), (uint16_t*)(input)); \
01191 TRANSFER_FRAME_TAIL \
01192 break; \
01193 case BC_YUVA16161616: \
01194 TRANSFER_FRAME_HEAD \
01195 transfer_YUVA16161616_to_YUVA16161616((uint16_t**)(output), (uint16_t*)(input)); \
01196 TRANSFER_FRAME_TAIL \
01197 break; \
01198 case BC_YUV420P: \
01199 TRANSFER_YUV420P_OUT_HEAD \
01200 transfer_YUVA16161616_to_YUV420P_YUV422P(output_y, \
01201 output_u, \
01202 output_v, \
01203 (uint16_t*)(input), \
01204 j); \
01205 TRANSFER_FRAME_TAIL \
01206 break; \
01207 case BC_YUV422P: \
01208 TRANSFER_YUV422P_OUT_HEAD \
01209 transfer_YUVA16161616_to_YUV420P_YUV422P(output_y, \
01210 output_u, \
01211 output_v, \
01212 (uint16_t*)(input), \
01213 j); \
01214 TRANSFER_FRAME_TAIL \
01215 break; \
01216 case BC_YUV444P: \
01217 TRANSFER_YUV444P_OUT_HEAD \
01218 transfer_YUVA16161616_to_YUV444P(output_y, \
01219 output_u, \
01220 output_v, \
01221 (uint16_t*)(input), \
01222 j); \
01223 TRANSFER_FRAME_TAIL \
01224 break; \
01225 case BC_YUV422: \
01226 TRANSFER_FRAME_HEAD \
01227 transfer_YUVA16161616_to_YUV422((output), \
01228 (uint16_t*)(input), \
01229 j); \
01230 TRANSFER_FRAME_TAIL \
01231 break; \
01232 } \
01233 break; \
01234 \
01235 case BC_YUV101010: \
01236 switch(out_colormodel) \
01237 { \
01238 case BC_RGB8: \
01239 TRANSFER_FRAME_HEAD \
01240 transfer_YUV101010_to_RGB8((output), (input)); \
01241 TRANSFER_FRAME_TAIL \
01242 break; \
01243 case BC_BGR565: \
01244 TRANSFER_FRAME_HEAD \
01245 transfer_YUV101010_to_BGR565((output), (input)); \
01246 TRANSFER_FRAME_TAIL \
01247 break; \
01248 case BC_RGB565: \
01249 TRANSFER_FRAME_HEAD \
01250 transfer_YUV101010_to_RGB565((output), (input)); \
01251 TRANSFER_FRAME_TAIL \
01252 break; \
01253 case BC_BGR888: \
01254 TRANSFER_FRAME_HEAD \
01255 transfer_YUV101010_to_BGR888((output), (input)); \
01256 TRANSFER_FRAME_TAIL \
01257 break; \
01258 case BC_BGR8888: \
01259 TRANSFER_FRAME_HEAD \
01260 transfer_YUV101010_to_BGR8888((output), (input)); \
01261 TRANSFER_FRAME_TAIL \
01262 break; \
01263 case BC_RGB888: \
01264 TRANSFER_FRAME_HEAD \
01265 transfer_YUV101010_to_RGB888((output), (input)); \
01266 TRANSFER_FRAME_TAIL \
01267 break; \
01268 case BC_RGBA8888: \
01269 TRANSFER_FRAME_HEAD \
01270 transfer_YUV101010_to_RGBA8888((output), (input)); \
01271 TRANSFER_FRAME_TAIL \
01272 break; \
01273 case BC_YUV888: \
01274 TRANSFER_FRAME_HEAD \
01275 transfer_YUV101010_to_YUV888((output), (input)); \
01276 TRANSFER_FRAME_TAIL \
01277 break; \
01278 case BC_YUVA8888: \
01279 TRANSFER_FRAME_HEAD \
01280 transfer_YUV101010_to_YUVA8888((output), (input)); \
01281 TRANSFER_FRAME_TAIL \
01282 break; \
01283 case BC_RGB161616: \
01284 TRANSFER_FRAME_HEAD \
01285 transfer_YUV101010_to_RGB161616((uint16_t**)(output), (input)); \
01286 TRANSFER_FRAME_TAIL \
01287 break; \
01288 case BC_RGBA16161616: \
01289 TRANSFER_FRAME_HEAD \
01290 transfer_YUV101010_to_RGBA16161616((uint16_t**)(output), (input)); \
01291 TRANSFER_FRAME_TAIL \
01292 break; \
01293 case BC_RGB_FLOAT: \
01294 TRANSFER_FRAME_HEAD \
01295 transfer_YUV101010_to_RGB_FLOAT((float**)(output), (input)); \
01296 TRANSFER_FRAME_TAIL \
01297 break; \
01298 case BC_RGBA_FLOAT: \
01299 TRANSFER_FRAME_HEAD \
01300 transfer_YUV101010_to_RGBA_FLOAT((float**)(output), (input)); \
01301 TRANSFER_FRAME_TAIL \
01302 break; \
01303 case BC_YUV161616: \
01304 TRANSFER_FRAME_HEAD \
01305 transfer_YUV101010_to_YUV161616((uint16_t**)(output), (input)); \
01306 TRANSFER_FRAME_TAIL \
01307 break; \
01308 case BC_YUVA16161616: \
01309 TRANSFER_FRAME_HEAD \
01310 transfer_YUV101010_to_YUVA16161616((uint16_t**)(output), (input)); \
01311 TRANSFER_FRAME_TAIL \
01312 break; \
01313 } \
01314 break; \
01315 \
01316 case BC_VYU888: \
01317 switch(out_colormodel) \
01318 { \
01319 case BC_RGB8: \
01320 TRANSFER_FRAME_HEAD \
01321 transfer_VYU888_to_RGB8((output), (input)); \
01322 TRANSFER_FRAME_TAIL \
01323 break; \
01324 case BC_BGR565: \
01325 TRANSFER_FRAME_HEAD \
01326 transfer_VYU888_to_BGR565((output), (input)); \
01327 TRANSFER_FRAME_TAIL \
01328 break; \
01329 case BC_RGB565: \
01330 TRANSFER_FRAME_HEAD \
01331 transfer_VYU888_to_RGB565((output), (input)); \
01332 TRANSFER_FRAME_TAIL \
01333 break; \
01334 case BC_BGR888: \
01335 TRANSFER_FRAME_HEAD \
01336 transfer_VYU888_to_BGR888((output), (input)); \
01337 TRANSFER_FRAME_TAIL \
01338 break; \
01339 case BC_BGR8888: \
01340 TRANSFER_FRAME_HEAD \
01341 transfer_VYU888_to_BGR8888((output), (input)); \
01342 TRANSFER_FRAME_TAIL \
01343 break; \
01344 case BC_RGB888: \
01345 TRANSFER_FRAME_HEAD \
01346 transfer_VYU888_to_RGB888((output), (input)); \
01347 TRANSFER_FRAME_TAIL \
01348 break; \
01349 case BC_RGBA8888: \
01350 TRANSFER_FRAME_HEAD \
01351 transfer_VYU888_to_RGBA8888((output), (input)); \
01352 TRANSFER_FRAME_TAIL \
01353 break; \
01354 case BC_YUV888: \
01355 TRANSFER_FRAME_HEAD \
01356 transfer_VYU888_to_YUV888((output), (input)); \
01357 TRANSFER_FRAME_TAIL \
01358 break; \
01359 case BC_YUVA8888: \
01360 TRANSFER_FRAME_HEAD \
01361 transfer_VYU888_to_YUVA8888((output), (input)); \
01362 TRANSFER_FRAME_TAIL \
01363 break; \
01364 case BC_RGB161616: \
01365 TRANSFER_FRAME_HEAD \
01366 transfer_VYU888_to_RGB161616((uint16_t**)(output), (input)); \
01367 TRANSFER_FRAME_TAIL \
01368 break; \
01369 case BC_RGBA16161616: \
01370 TRANSFER_FRAME_HEAD \
01371 transfer_VYU888_to_RGBA16161616((uint16_t**)(output), (input)); \
01372 TRANSFER_FRAME_TAIL \
01373 break; \
01374 case BC_RGB_FLOAT: \
01375 TRANSFER_FRAME_HEAD \
01376 transfer_VYU888_to_RGB_FLOAT((float**)(output), (input)); \
01377 TRANSFER_FRAME_TAIL \
01378 break; \
01379 case BC_RGBA_FLOAT: \
01380 TRANSFER_FRAME_HEAD \
01381 transfer_VYU888_to_RGBA_FLOAT((float**)(output), (input)); \
01382 TRANSFER_FRAME_TAIL \
01383 break; \
01384 case BC_YUV161616: \
01385 TRANSFER_FRAME_HEAD \
01386 transfer_VYU888_to_YUV161616((uint16_t**)(output), (input)); \
01387 TRANSFER_FRAME_TAIL \
01388 break; \
01389 case BC_YUVA16161616: \
01390 TRANSFER_FRAME_HEAD \
01391 transfer_VYU888_to_YUVA16161616((uint16_t**)(output), (input)); \
01392 TRANSFER_FRAME_TAIL \
01393 break; \
01394 } \
01395 break; \
01396 \
01397 case BC_UYVA8888: \
01398 switch(out_colormodel) \
01399 { \
01400 case BC_RGB8: \
01401 TRANSFER_FRAME_HEAD \
01402 transfer_UYVA8888_to_RGB8((output), (input)); \
01403 TRANSFER_FRAME_TAIL \
01404 break; \
01405 case BC_BGR565: \
01406 TRANSFER_FRAME_HEAD \
01407 transfer_UYVA8888_to_BGR565((output), (input)); \
01408 TRANSFER_FRAME_TAIL \
01409 break; \
01410 case BC_RGB565: \
01411 TRANSFER_FRAME_HEAD \
01412 transfer_UYVA8888_to_RGB565((output), (input)); \
01413 TRANSFER_FRAME_TAIL \
01414 break; \
01415 case BC_BGR888: \
01416 TRANSFER_FRAME_HEAD \
01417 transfer_UYVA8888_to_BGR888((output), (input)); \
01418 TRANSFER_FRAME_TAIL \
01419 break; \
01420 case BC_BGR8888: \
01421 TRANSFER_FRAME_HEAD \
01422 transfer_UYVA8888_to_BGR8888((output), (input)); \
01423 TRANSFER_FRAME_TAIL \
01424 break; \
01425 case BC_RGB888: \
01426 TRANSFER_FRAME_HEAD \
01427 transfer_UYVA8888_to_RGB888((output), (input)); \
01428 TRANSFER_FRAME_TAIL \
01429 break; \
01430 case BC_RGBA8888: \
01431 TRANSFER_FRAME_HEAD \
01432 transfer_UYVA8888_to_RGBA8888((output), (input)); \
01433 TRANSFER_FRAME_TAIL \
01434 break; \
01435 case BC_YUV888: \
01436 TRANSFER_FRAME_HEAD \
01437 transfer_UYVA8888_to_YUV888((output), (input)); \
01438 TRANSFER_FRAME_TAIL \
01439 break; \
01440 case BC_YUVA8888: \
01441 TRANSFER_FRAME_HEAD \
01442 transfer_UYVA8888_to_YUVA8888((output), (input)); \
01443 TRANSFER_FRAME_TAIL \
01444 break; \
01445 case BC_RGB161616: \
01446 TRANSFER_FRAME_HEAD \
01447 transfer_UYVA8888_to_RGB161616((uint16_t**)(output), (input)); \
01448 TRANSFER_FRAME_TAIL \
01449 break; \
01450 case BC_RGBA16161616: \
01451 TRANSFER_FRAME_HEAD \
01452 transfer_UYVA8888_to_RGBA16161616((uint16_t**)(output), (input)); \
01453 TRANSFER_FRAME_TAIL \
01454 break; \
01455 case BC_RGB_FLOAT: \
01456 TRANSFER_FRAME_HEAD \
01457 transfer_UYVA8888_to_RGB_FLOAT((float**)(output), (input)); \
01458 TRANSFER_FRAME_TAIL \
01459 break; \
01460 case BC_RGBA_FLOAT: \
01461 TRANSFER_FRAME_HEAD \
01462 transfer_UYVA8888_to_RGBA_FLOAT((float**)(output), (input)); \
01463 TRANSFER_FRAME_TAIL \
01464 break; \
01465 case BC_YUV161616: \
01466 TRANSFER_FRAME_HEAD \
01467 transfer_UYVA8888_to_YUV161616((uint16_t**)(output), (input)); \
01468 TRANSFER_FRAME_TAIL \
01469 break; \
01470 case BC_YUVA16161616: \
01471 TRANSFER_FRAME_HEAD \
01472 transfer_UYVA8888_to_YUVA16161616((uint16_t**)(output), (input)); \
01473 TRANSFER_FRAME_TAIL \
01474 break; \
01475 } \
01476 break; \
01477 \
01478 case BC_ARGB8888: \
01479 case BC_ABGR8888: \
01480 switch(out_colormodel) \
01481 { \
01482 case BC_ARGB8888: \
01483 case BC_ABGR8888: \
01484 TRANSFER_FRAME_HEAD \
01485 transfer_ARGB8888_to_ARGB8888((output), (input)); \
01486 TRANSFER_FRAME_TAIL \
01487 break; \
01488 case BC_RGBA8888: \
01489 TRANSFER_FRAME_HEAD \
01490 transfer_ARGB8888_to_RGBA8888((output), (input)); \
01491 TRANSFER_FRAME_TAIL \
01492 break; \
01493 case BC_RGB888: \
01494 TRANSFER_FRAME_HEAD \
01495 transfer_ARGB8888_to_RGB888((output), (input)); \
01496 TRANSFER_FRAME_TAIL \
01497 break; \
01498 case BC_BGR8888: \
01499 TRANSFER_FRAME_HEAD \
01500 transfer_ARGB8888_to_BGR8888((output), (input)); \
01501 TRANSFER_FRAME_TAIL \
01502 break; \
01503 } \
01504 break; \
01505 \
01506 case BC_RGB888: \
01507 switch(out_colormodel) \
01508 { \
01509 case BC_RGB8: \
01510 TRANSFER_FRAME_HEAD \
01511 transfer_RGB888_to_RGB8((output), (input)); \
01512 TRANSFER_FRAME_TAIL \
01513 break; \
01514 case BC_BGR565: \
01515 TRANSFER_FRAME_HEAD \
01516 transfer_RGB888_to_BGR565((output), (input)); \
01517 TRANSFER_FRAME_TAIL \
01518 break; \
01519 case BC_RGB565: \
01520 TRANSFER_FRAME_HEAD \
01521 transfer_RGB888_to_RGB565((output), (input)); \
01522 TRANSFER_FRAME_TAIL \
01523 break; \
01524 case BC_BGR888: \
01525 TRANSFER_FRAME_HEAD \
01526 transfer_RGB888_to_BGR888((output), (input)); \
01527 TRANSFER_FRAME_TAIL \
01528 break; \
01529 case BC_RGB888: \
01530 TRANSFER_FRAME_HEAD \
01531 transfer_RGB888_to_RGB888((output), (input)); \
01532 TRANSFER_FRAME_TAIL \
01533 break; \
01534 case BC_RGBA8888: \
01535 TRANSFER_FRAME_HEAD \
01536 transfer_RGB888_to_RGBA8888((output), (input)); \
01537 TRANSFER_FRAME_TAIL \
01538 break; \
01539 case BC_ARGB8888: \
01540 TRANSFER_FRAME_HEAD \
01541 transfer_RGB888_to_ARGB8888((output), (input)); \
01542 TRANSFER_FRAME_TAIL \
01543 break; \
01544 case BC_RGB161616: \
01545 TRANSFER_FRAME_HEAD \
01546 transfer_RGB888_to_RGB161616((uint16_t**)(output), (input)); \
01547 TRANSFER_FRAME_TAIL \
01548 break; \
01549 case BC_RGBA16161616: \
01550 TRANSFER_FRAME_HEAD \
01551 transfer_RGB888_to_RGBA16161616((uint16_t**)(output), (input)); \
01552 TRANSFER_FRAME_TAIL \
01553 break; \
01554 case BC_RGB_FLOAT: \
01555 TRANSFER_FRAME_HEAD \
01556 transfer_RGB888_to_RGB_FLOAT((float**)(output), (input)); \
01557 TRANSFER_FRAME_TAIL \
01558 break; \
01559 case BC_RGBA_FLOAT: \
01560 TRANSFER_FRAME_HEAD \
01561 transfer_RGB888_to_RGBA_FLOAT((float**)(output), (input)); \
01562 TRANSFER_FRAME_TAIL \
01563 break; \
01564 case BC_ABGR8888: \
01565 TRANSFER_FRAME_HEAD \
01566 transfer_RGB888_to_ABGR8888((output), (input)); \
01567 TRANSFER_FRAME_TAIL \
01568 break; \
01569 case BC_BGR8888: \
01570 TRANSFER_FRAME_HEAD \
01571 transfer_RGB888_to_BGR8888((output), (input)); \
01572 TRANSFER_FRAME_TAIL \
01573 break; \
01574 case BC_YUV888: \
01575 TRANSFER_FRAME_HEAD \
01576 transfer_RGB888_to_YUV888((output), (input)); \
01577 TRANSFER_FRAME_TAIL \
01578 break; \
01579 case BC_YUVA8888: \
01580 TRANSFER_FRAME_HEAD \
01581 transfer_RGB888_to_YUVA8888((output), (input)); \
01582 TRANSFER_FRAME_TAIL \
01583 break; \
01584 case BC_YUV161616: \
01585 TRANSFER_FRAME_HEAD \
01586 transfer_RGB888_to_YUV161616((uint16_t**)(output), (input)); \
01587 TRANSFER_FRAME_TAIL \
01588 break; \
01589 case BC_YUVA16161616: \
01590 TRANSFER_FRAME_HEAD \
01591 transfer_RGB888_to_YUVA16161616((uint16_t**)(output), (input)); \
01592 TRANSFER_FRAME_TAIL \
01593 break; \
01594 case BC_YUV101010: \
01595 TRANSFER_FRAME_HEAD \
01596 transfer_RGB888_to_YUV101010((output), (input)); \
01597 TRANSFER_FRAME_TAIL \
01598 break; \
01599 case BC_YUV420P: \
01600 TRANSFER_YUV420P_OUT_HEAD \
01601 transfer_RGB888_to_YUV420P_YUV422P(output_y, \
01602 output_u, \
01603 output_v, \
01604 (input), \
01605 j); \
01606 TRANSFER_FRAME_TAIL \
01607 break; \
01608 case BC_YUV422: \
01609 TRANSFER_FRAME_HEAD \
01610 transfer_RGB888_to_YUV422((output), (input), j); \
01611 TRANSFER_FRAME_TAIL \
01612 break; \
01613 case BC_YUV422P: \
01614 TRANSFER_YUV422P_OUT_HEAD \
01615 transfer_RGB888_to_YUV420P_YUV422P(output_y, \
01616 output_u, \
01617 output_v, \
01618 (input), \
01619 j); \
01620 TRANSFER_FRAME_TAIL \
01621 break; \
01622 case BC_YUV444P: \
01623 TRANSFER_YUV444P_OUT_HEAD \
01624 transfer_RGB888_to_YUV444P(output_y, \
01625 output_u, \
01626 output_v, \
01627 (input), \
01628 j); \
01629 TRANSFER_FRAME_TAIL \
01630 break; \
01631 } \
01632 break; \
01633 \
01634 case BC_RGBA8888: \
01635 switch(out_colormodel) \
01636 { \
01637 case BC_TRANSPARENCY: \
01638 TRANSFER_FRAME_HEAD \
01639 transfer_RGBA8888_to_TRANSPARENCY((output), (input), &bit_counter); \
01640 TRANSFER_FRAME_TAIL \
01641 break; \
01642 case BC_RGB8: \
01643 if(bg_color > 0) \
01644 TRANSFER_FRAME_HEAD \
01645 transfer_RGBA8888_to_RGB8bg((output), (input), bg_r, bg_g, bg_b); \
01646 TRANSFER_FRAME_TAIL \
01647 else \
01648 TRANSFER_FRAME_HEAD \
01649 transfer_RGBA8888_to_RGB8((output), (input)); \
01650 TRANSFER_FRAME_TAIL \
01651 break; \
01652 case BC_BGR565: \
01653 if(bg_color > 0) \
01654 TRANSFER_FRAME_HEAD \
01655 transfer_RGBA8888_to_BGR565bg((output), (input), bg_r, bg_g, bg_b); \
01656 TRANSFER_FRAME_TAIL \
01657 else \
01658 TRANSFER_FRAME_HEAD \
01659 transfer_RGBA8888_to_BGR565((output), (input)); \
01660 TRANSFER_FRAME_TAIL \
01661 break; \
01662 case BC_RGB565: \
01663 if(bg_color > 0) \
01664 TRANSFER_FRAME_HEAD \
01665 transfer_RGBA8888_to_RGB565bg((output), (input), bg_r, bg_g, bg_b); \
01666 TRANSFER_FRAME_TAIL \
01667 else \
01668 TRANSFER_FRAME_HEAD \
01669 transfer_RGBA8888_to_RGB565((output), (input)); \
01670 TRANSFER_FRAME_TAIL \
01671 break; \
01672 case BC_BGR888: \
01673 if(bg_color > 0) \
01674 TRANSFER_FRAME_HEAD \
01675 transfer_RGBA8888_to_BGR888bg((output), (input), bg_r, bg_g, bg_b); \
01676 TRANSFER_FRAME_TAIL \
01677 else \
01678 TRANSFER_FRAME_HEAD \
01679 transfer_RGBA8888_to_BGR888((output), (input)); \
01680 TRANSFER_FRAME_TAIL \
01681 break; \
01682 case BC_RGB888: \
01683 if(bg_color > 0) \
01684 TRANSFER_FRAME_HEAD \
01685 transfer_RGBA8888_to_RGB888bg((output), (input), bg_r, bg_g, bg_b); \
01686 TRANSFER_FRAME_TAIL \
01687 else \
01688 TRANSFER_FRAME_HEAD \
01689 transfer_RGBA8888_to_RGB888((output), (input)); \
01690 TRANSFER_FRAME_TAIL \
01691 break; \
01692 case BC_RGBA8888: \
01693 TRANSFER_FRAME_HEAD \
01694 transfer_RGBA8888_to_RGBA8888((output), (input)); \
01695 TRANSFER_FRAME_TAIL \
01696 break; \
01697 case BC_ARGB8888: \
01698 TRANSFER_FRAME_HEAD \
01699 transfer_RGBA8888_to_ARGB8888((output), (input)); \
01700 TRANSFER_FRAME_TAIL \
01701 break; \
01702 case BC_RGB161616: \
01703 TRANSFER_FRAME_HEAD \
01704 transfer_RGBA8888_to_RGB161616((uint16_t**)(output), (input)); \
01705 TRANSFER_FRAME_TAIL \
01706 break; \
01707 case BC_RGBA16161616: \
01708 TRANSFER_FRAME_HEAD \
01709 transfer_RGBA8888_to_RGBA16161616((uint16_t**)(output), (input)); \
01710 TRANSFER_FRAME_TAIL \
01711 break; \
01712 case BC_RGB_FLOAT: \
01713 TRANSFER_FRAME_HEAD \
01714 transfer_RGBA8888_to_RGB_FLOAT((float**)(output), (input)); \
01715 TRANSFER_FRAME_TAIL \
01716 break; \
01717 case BC_RGBA_FLOAT: \
01718 TRANSFER_FRAME_HEAD \
01719 transfer_RGBA8888_to_RGBA_FLOAT((float**)(output), (input)); \
01720 TRANSFER_FRAME_TAIL \
01721 break; \
01722 case BC_BGR8888: \
01723 if(bg_color > 0) \
01724 TRANSFER_FRAME_HEAD \
01725 transfer_RGBA8888_to_BGR8888bg((output), (input), bg_r, bg_g, bg_b); \
01726 TRANSFER_FRAME_TAIL \
01727 else \
01728 TRANSFER_FRAME_HEAD \
01729 transfer_RGBA8888_to_BGR8888((output), (input)); \
01730 TRANSFER_FRAME_TAIL \
01731 break; \
01732 case BC_YUV888: \
01733 TRANSFER_FRAME_HEAD \
01734 transfer_RGBA8888_to_YUV888((output), (input)); \
01735 TRANSFER_FRAME_TAIL \
01736 break; \
01737 case BC_YUVA8888: \
01738 TRANSFER_FRAME_HEAD \
01739 transfer_RGBA8888_to_YUVA8888((output), (input)); \
01740 TRANSFER_FRAME_TAIL \
01741 break; \
01742 case BC_YUV161616: \
01743 TRANSFER_FRAME_HEAD \
01744 transfer_RGBA8888_to_YUV161616((uint16_t**)(output), (input)); \
01745 TRANSFER_FRAME_TAIL \
01746 break; \
01747 case BC_YUVA16161616: \
01748 TRANSFER_FRAME_HEAD \
01749 transfer_RGBA8888_to_YUVA16161616((uint16_t**)(output), (input)); \
01750 TRANSFER_FRAME_TAIL \
01751 break; \
01752 case BC_YUV101010: \
01753 TRANSFER_FRAME_HEAD \
01754 transfer_RGBA8888_to_YUV101010((output), (input)); \
01755 TRANSFER_FRAME_TAIL \
01756 break; \
01757 case BC_YUV420P: \
01758 TRANSFER_YUV420P_OUT_HEAD \
01759 transfer_RGBA888_to_YUV420P_YUV422P(output_y, \
01760 output_u, \
01761 output_v, \
01762 (input), \
01763 j); \
01764 TRANSFER_FRAME_TAIL \
01765 break; \
01766 case BC_YUV422: \
01767 TRANSFER_FRAME_HEAD \
01768 transfer_RGBA888_to_YUV422((output), (input), j); \
01769 TRANSFER_FRAME_TAIL \
01770 break; \
01771 case BC_YUV422P: \
01772 TRANSFER_YUV422P_OUT_HEAD \
01773 transfer_RGBA888_to_YUV420P_YUV422P(output_y, \
01774 output_u, \
01775 output_v, \
01776 (input), \
01777 j); \
01778 TRANSFER_FRAME_TAIL \
01779 break; \
01780 case BC_YUV444P: \
01781 TRANSFER_YUV444P_OUT_HEAD \
01782 transfer_RGBA888_to_YUV444P(output_y, \
01783 output_u, \
01784 output_v, \
01785 (input), \
01786 j); \
01787 TRANSFER_FRAME_TAIL \
01788 break; \
01789 } \
01790 break; \
01791 \
01792 case BC_RGB161616: \
01793 switch(out_colormodel) \
01794 { \
01795 case BC_RGB8: \
01796 TRANSFER_FRAME_HEAD \
01797 transfer_RGB161616_to_RGB8((output), (uint16_t*)(input)); \
01798 TRANSFER_FRAME_TAIL \
01799 break; \
01800 case BC_BGR565: \
01801 TRANSFER_FRAME_HEAD \
01802 transfer_RGB161616_to_BGR565((output), (uint16_t*)(input)); \
01803 TRANSFER_FRAME_TAIL \
01804 break; \
01805 case BC_RGB565: \
01806 TRANSFER_FRAME_HEAD \
01807 transfer_RGB161616_to_RGB565((output), (uint16_t*)(input)); \
01808 TRANSFER_FRAME_TAIL \
01809 break; \
01810 case BC_BGR888: \
01811 TRANSFER_FRAME_HEAD \
01812 transfer_RGB161616_to_BGR888((output), (uint16_t*)(input)); \
01813 TRANSFER_FRAME_TAIL \
01814 break; \
01815 case BC_BGR8888: \
01816 TRANSFER_FRAME_HEAD \
01817 transfer_RGB161616_to_BGR8888((output), (uint16_t*)(input)); \
01818 TRANSFER_FRAME_TAIL \
01819 break; \
01820 case BC_RGB888: \
01821 TRANSFER_FRAME_HEAD \
01822 transfer_RGB161616_to_RGB888((output), (uint16_t*)(input)); \
01823 TRANSFER_FRAME_TAIL \
01824 break; \
01825 case BC_RGBA8888: \
01826 TRANSFER_FRAME_HEAD \
01827 transfer_RGB161616_to_RGBA8888((output), (uint16_t*)(input)); \
01828 TRANSFER_FRAME_TAIL \
01829 break; \
01830 case BC_RGB_FLOAT: \
01831 TRANSFER_FRAME_HEAD \
01832 transfer_RGB161616_to_RGB_FLOAT((float**)(output), (uint16_t*)(input)); \
01833 TRANSFER_FRAME_TAIL \
01834 break; \
01835 case BC_RGBA_FLOAT: \
01836 TRANSFER_FRAME_HEAD \
01837 transfer_RGB161616_to_RGBA_FLOAT((float**)(output), (uint16_t*)(input)); \
01838 TRANSFER_FRAME_TAIL \
01839 break; \
01840 case BC_YUV888: \
01841 TRANSFER_FRAME_HEAD \
01842 transfer_RGB161616_to_YUV888((output), (uint16_t*)(input)); \
01843 TRANSFER_FRAME_TAIL \
01844 break; \
01845 case BC_YUVA8888: \
01846 TRANSFER_FRAME_HEAD \
01847 transfer_RGB161616_to_YUVA8888((output), (uint16_t*)(input)); \
01848 TRANSFER_FRAME_TAIL \
01849 break; \
01850 case BC_YUV161616: \
01851 TRANSFER_FRAME_HEAD \
01852 transfer_RGB161616_to_YUV161616((uint16_t**)(output), (uint16_t*)(input)); \
01853 TRANSFER_FRAME_TAIL \
01854 break; \
01855 case BC_YUVA16161616: \
01856 TRANSFER_FRAME_HEAD \
01857 transfer_RGB161616_to_YUVA16161616((uint16_t**)(output), (uint16_t*)(input)); \
01858 TRANSFER_FRAME_TAIL \
01859 break; \
01860 case BC_YUV101010: \
01861 TRANSFER_FRAME_HEAD \
01862 transfer_RGB161616_to_YUV101010((output), (uint16_t*)(input)); \
01863 TRANSFER_FRAME_TAIL \
01864 break; \
01865 case BC_YUV420P: \
01866 TRANSFER_YUV420P_OUT_HEAD \
01867 transfer_RGB161616_to_YUV420P_YUV422P(output_y, \
01868 output_u, \
01869 output_v, \
01870 (uint16_t*)(input), \
01871 j); \
01872 TRANSFER_FRAME_TAIL \
01873 break; \
01874 case BC_YUV422P: \
01875 TRANSFER_YUV422P_OUT_HEAD \
01876 transfer_RGB161616_to_YUV420P_YUV422P(output_y, \
01877 output_u, \
01878 output_v, \
01879 (uint16_t*)(input), \
01880 j); \
01881 TRANSFER_FRAME_TAIL \
01882 break; \
01883 case BC_YUV444P: \
01884 TRANSFER_YUV444P_OUT_HEAD \
01885 transfer_RGB161616_to_YUV444P(output_y, \
01886 output_u, \
01887 output_v, \
01888 (uint16_t*)(input), \
01889 j); \
01890 TRANSFER_FRAME_TAIL \
01891 break; \
01892 } \
01893 break; \
01894 \
01895 case BC_RGBA16161616: \
01896 switch(out_colormodel) \
01897 { \
01898 case BC_RGB8: \
01899 TRANSFER_FRAME_HEAD \
01900 transfer_RGBA16161616_to_RGB8((output), (uint16_t*)(input)); \
01901 TRANSFER_FRAME_TAIL \
01902 break; \
01903 case BC_BGR565: \
01904 TRANSFER_FRAME_HEAD \
01905 transfer_RGBA16161616_to_BGR565((output), (uint16_t*)(input)); \
01906 TRANSFER_FRAME_TAIL \
01907 break; \
01908 case BC_RGB565: \
01909 TRANSFER_FRAME_HEAD \
01910 transfer_RGBA16161616_to_RGB565((output), (uint16_t*)(input)); \
01911 TRANSFER_FRAME_TAIL \
01912 break; \
01913 case BC_BGR888: \
01914 TRANSFER_FRAME_HEAD \
01915 transfer_RGBA16161616_to_BGR888((output), (uint16_t*)(input)); \
01916 TRANSFER_FRAME_TAIL \
01917 break; \
01918 case BC_BGR8888: \
01919 TRANSFER_FRAME_HEAD \
01920 transfer_RGBA16161616_to_BGR8888((output), (uint16_t*)(input)); \
01921 TRANSFER_FRAME_TAIL \
01922 break; \
01923 case BC_RGB888: \
01924 TRANSFER_FRAME_HEAD \
01925 transfer_RGBA16161616_to_RGB888((output), (uint16_t*)(input)); \
01926 TRANSFER_FRAME_TAIL \
01927 break; \
01928 case BC_RGBA8888: \
01929 TRANSFER_FRAME_HEAD \
01930 transfer_RGBA16161616_to_RGBA8888((output), (uint16_t*)(input)); \
01931 TRANSFER_FRAME_TAIL \
01932 break; \
01933 case BC_RGB_FLOAT: \
01934 TRANSFER_FRAME_HEAD \
01935 transfer_RGBA16161616_to_RGB_FLOAT((float**)(output), (uint16_t*)(input)); \
01936 TRANSFER_FRAME_TAIL \
01937 break; \
01938 case BC_RGBA_FLOAT: \
01939 TRANSFER_FRAME_HEAD \
01940 transfer_RGBA16161616_to_RGBA_FLOAT((float**)(output), (uint16_t*)(input)); \
01941 TRANSFER_FRAME_TAIL \
01942 break; \
01943 case BC_YUV888: \
01944 TRANSFER_FRAME_HEAD \
01945 transfer_RGBA16161616_to_YUV888((output), (uint16_t*)(input)); \
01946 TRANSFER_FRAME_TAIL \
01947 break; \
01948 case BC_YUVA8888: \
01949 TRANSFER_FRAME_HEAD \
01950 transfer_RGBA16161616_to_YUVA8888((output), (uint16_t*)(input)); \
01951 TRANSFER_FRAME_TAIL \
01952 break; \
01953 case BC_YUV161616: \
01954 TRANSFER_FRAME_HEAD \
01955 transfer_RGBA16161616_to_YUV161616(((uint16_t**)output), (uint16_t*)(input)); \
01956 TRANSFER_FRAME_TAIL \
01957 break; \
01958 case BC_YUVA16161616: \
01959 TRANSFER_FRAME_HEAD \
01960 transfer_RGBA16161616_to_YUVA16161616((uint16_t**)(output), (uint16_t*)(input)); \
01961 TRANSFER_FRAME_TAIL \
01962 break; \
01963 case BC_YUV101010: \
01964 TRANSFER_FRAME_HEAD \
01965 transfer_RGBA16161616_to_YUV101010((output), (uint16_t*)(input)); \
01966 TRANSFER_FRAME_TAIL \
01967 break; \
01968 case BC_YUV420P: \
01969 TRANSFER_YUV420P_OUT_HEAD \
01970 transfer_RGBA16161616_to_YUV420P_YUV422P(output_y, \
01971 output_u, \
01972 output_v, \
01973 (uint16_t*)(input), \
01974 j); \
01975 TRANSFER_FRAME_TAIL \
01976 break; \
01977 case BC_YUV422P: \
01978 TRANSFER_YUV422P_OUT_HEAD \
01979 transfer_RGBA16161616_to_YUV420P_YUV422P(output_y, \
01980 output_u, \
01981 output_v, \
01982 (uint16_t*)(input), \
01983 j); \
01984 TRANSFER_FRAME_TAIL \
01985 break; \
01986 case BC_YUV444P: \
01987 TRANSFER_YUV444P_OUT_HEAD \
01988 transfer_RGBA16161616_to_YUV444P(output_y, \
01989 output_u, \
01990 output_v, \
01991 (uint16_t*)(input), \
01992 j); \
01993 TRANSFER_FRAME_TAIL \
01994 break; \
01995 } \
01996 break; \
01997 \
01998 case BC_BGR8888: \
01999 switch(out_colormodel) \
02000 { \
02001 case BC_RGB888: \
02002 TRANSFER_FRAME_HEAD \
02003 transfer_BGR8888_to_RGB888((output), (input)); \
02004 TRANSFER_FRAME_TAIL \
02005 break; \
02006 case BC_BGR8888: \
02007 TRANSFER_FRAME_HEAD \
02008 transfer_BGR8888_to_BGR8888((output), (input)); \
02009 TRANSFER_FRAME_TAIL \
02010 break; \
02011 } \
02012 break; \
02013 \
02014 case BC_BGR888: \
02015 switch(out_colormodel) \
02016 { \
02017 case BC_RGB888: \
02018 TRANSFER_FRAME_HEAD \
02019 transfer_BGR888_to_RGB888((output), (input)); \
02020 TRANSFER_FRAME_TAIL \
02021 break; \
02022 } \
02023 break; \
02024 } \
02025 }
02026
02027 int64_t get_difference(struct timeval *start_time)
02028 {
02029 struct timeval new_time;
02030
02031 gettimeofday(&new_time, 0);
02032
02033 new_time.tv_usec -= start_time->tv_usec;
02034 new_time.tv_sec -= start_time->tv_sec;
02035 if(new_time.tv_usec < 0)
02036 {
02037 new_time.tv_usec += 1000000;
02038 new_time.tv_sec--;
02039 }
02040
02041 return (int64_t)new_time.tv_sec * 1000000 +
02042 (int64_t)new_time.tv_usec;
02043
02044 }
02045
02046
02047
02048
02049 void cmodel_default(PERMUTATION_ARGS)
02050 {
02051 if(scale)
02052 {
02053 int done = 0;
02054 switch (in_colormodel) {
02055 case BC_YUVA8888:
02056 switch (out_colormodel) {
02057 case BC_BGR8888:
02058 {
02059
02060
02061
02062 short int *utog_tab = yuv_table->utog_tab8;
02063 short int *vtog_tab = yuv_table->vtog_tab8;
02064 short int *vtor_tab = yuv_table->vtor_tab8;
02065 short int *utob_tab = yuv_table->utob_tab8;
02066
02067 short int i ;
02068 for(i = 0; i < out_h; i++)
02069 {
02070 unsigned char *input_row = input_rows[row_table[i]];
02071 unsigned char *output_row = output_rows[i + out_y] + out_x * out_pixelsize;
02072 unsigned char *input_data = input_row + (column_table[0] << 2);
02073 __builtin_prefetch (input_data, 0, 0);
02074
02075 short int j;
02076 for(j = 0; j < out_w; j++)
02077 {
02078 unsigned char y = input_data[0];
02079 unsigned char u = input_data[1];
02080 unsigned char v = input_data[2];
02081 unsigned char a = input_data[3];
02082
02083
02084
02085 input_data = input_row + (column_table[j + 1] << 2);
02086
02087 short int r = y + vtor_tab[v];
02088 short int g = y + utog_tab[u] + vtog_tab[v];
02089 short int b = y + utob_tab[u];
02090
02091 r = (r < 0 ? 0 : (r > 0xff ? 0xff : r));
02092 g = (g < 0 ? 0 : (g > 0xff ? 0xff : g));
02093 b = (b < 0 ? 0 : (b > 0xff ? 0xff : b));
02094
02095 r *= a;
02096 g *= a;
02097 b *= a;
02098
02099 output_row[0] = ((b) >> 8);
02100 output_row[1] = ((g) >> 8);
02101 output_row[2] = ((r) >> 8);
02102
02103 output_row += 4;
02104 }
02105
02106 }
02107
02108
02109
02110 done = 1;
02111 }
02112 break;
02113 }
02114 break;
02115
02116 }
02117 if (!done)
02118 {
02119 TRANSFER_FRAME_DEFAULT(&output_row,
02120 input_row + column_table[j] * in_pixelsize,
02121 0,
02122 0,
02123 0,
02124 0);
02125 }
02126 }
02127 else
02128 {
02129 TRANSFER_FRAME_DEFAULT(&output_row,
02130 input_row + j * in_pixelsize,
02131 0,
02132 0,
02133 0,
02134 0);
02135 }
02136 }