Go to the documentation of this file.
   35     const uint8_t *
s   = 
src;
 
   36     const uint8_t *end = 
s + src_size;
 
   59     const uint8_t *
s   = 
src;
 
   60     const uint8_t *end = 
s + src_size;
 
   87     register uint8_t *d         = 
dst;
 
   88     register const uint8_t *
s   = 
src;
 
   89     register const uint8_t *end = 
s + src_size;
 
   90     const uint8_t *mm_end       = end - 3;
 
   93         register unsigned x = *((
const uint32_t *)
s);
 
   94         *((uint32_t *)d)    = (x & 0x7FFF7FFF) + (x & 0x7FE07FE0);
 
   99         register unsigned short x = *((
const uint16_t *)
s);
 
  100         *((uint16_t *)d)          = (x & 0x7FFF) + (x & 0x7FE0);
 
  106     register uint8_t *d         = 
dst;
 
  107     register const uint8_t *
s   = 
src;
 
  108     register const uint8_t *end = 
s + src_size;
 
  109     const uint8_t *mm_end       = end - 3;
 
  112         register uint32_t x  = *((
const uint32_t *)
s);
 
  113         *((uint32_t *)d)     = ((x >> 1) & 0x7FE07FE0) | (x & 0x001F001F);
 
  118         register uint16_t x = *((
const uint16_t *)
s);
 
  119         *((uint16_t *)d)    = ((x >> 1) & 0x7FE0) | (x & 0x001F);
 
  125     uint16_t *d        = (uint16_t *)
dst;
 
  126     const uint8_t *
s   = 
src;
 
  127     const uint8_t *end = 
s + src_size;
 
  130         register int rgb  = *(
const uint32_t *)
s;
 
  132         *d++              = ((
rgb & 0xFF)     >> 3) +
 
  133                             ((
rgb & 0xFC00)   >> 5) +
 
  134                             ((
rgb & 0xF80000) >> 8);
 
  141     uint16_t *d        = (uint16_t *)
dst;
 
  142     const uint8_t *
s   = 
src;
 
  143     const uint8_t *end = 
s + src_size;
 
  146         register int rgb  = *(
const uint32_t *)
s;
 
  148         *d++              = ((
rgb & 0xF8)     << 8) +
 
  149                             ((
rgb & 0xFC00)   >> 5) +
 
  150                             ((
rgb & 0xF80000) >> 19);
 
  156     uint16_t *d        = (uint16_t *)
dst;
 
  157     const uint8_t *
s   = 
src;
 
  158     const uint8_t *end = 
s + src_size;
 
  161         register int rgb  = *(
const uint32_t *)
s;
 
  163         *d++              = ((
rgb & 0xFF)     >> 3) +
 
  164                             ((
rgb & 0xF800)   >> 6) +
 
  165                             ((
rgb & 0xF80000) >> 9);
 
  172     uint16_t *d        = (uint16_t *)
dst;
 
  173     const uint8_t *
s   = 
src;
 
  174     const uint8_t *end = 
s + src_size;
 
  177         register int rgb  = *(
const uint32_t *)
s;
 
  179         *d++              = ((
rgb & 0xF8)     <<  7) +
 
  180                             ((
rgb & 0xF800)   >>  6) +
 
  181                             ((
rgb & 0xF80000) >> 19);
 
  188     uint16_t *d        = (uint16_t *)
dst;
 
  189     const uint8_t *
s   = 
src;
 
  190     const uint8_t *end = 
s + src_size;
 
  196         *d++        = (
b >> 3) | ((
g & 0xFC) << 3) | ((
r & 0xF8) << 8);
 
  202     uint16_t *d        = (uint16_t *)
dst;
 
  203     const uint8_t *
s   = 
src;
 
  204     const uint8_t *end = 
s + src_size;
 
  210         *d++        = (
b >> 3) | ((
g & 0xFC) << 3) | ((
r & 0xF8) << 8);
 
  217     uint16_t *d        = (uint16_t *)
dst;
 
  218     const uint8_t *
s   = 
src;
 
  219     const uint8_t *end = 
s + src_size;
 
  225         *d++        = (
b >> 3) | ((
g & 0xF8) << 2) | ((
r & 0xF8) << 7);
 
  231     uint16_t *d        = (uint16_t *)
dst;
 
  232     const uint8_t *
s   = 
src;
 
  233     const uint8_t *end = 
s + src_size;
 
  239         *d++        = (
b >> 3) | ((
g & 0xF8) << 2) | ((
r & 0xF8) << 7);
 
  247     const uint16_t *
s   = (
const uint16_t *)
src;
 
  248     const uint16_t *end = 
s + src_size / 2;
 
  251         register uint16_t bgr = *
s++;
 
  252         *d++ = ((bgr&0x001F)<<3) | ((bgr&0x001F)>> 2);
 
  253         *d++ = ((bgr&0x03E0)>>2) | ((bgr&0x03E0)>> 7);
 
  254         *d++ = ((bgr&0x7C00)>>7) | ((bgr&0x7C00)>>12);
 
  261     uint8_t *d          = (uint8_t *)
dst;
 
  262     const uint16_t *
s   = (
const uint16_t *)
src;
 
  263     const uint16_t *end = 
s + src_size / 2;
 
  266         register uint16_t bgr = *
s++;
 
  267         *d++ = ((bgr&0x001F)<<3) | ((bgr&0x001F)>> 2);
 
  268         *d++ = ((bgr&0x07E0)>>3) | ((bgr&0x07E0)>> 9);
 
  269         *d++ = ((bgr&0xF800)>>8) | ((bgr&0xF800)>>13);
 
  276     const uint16_t *
s   = (
const uint16_t *)
src;
 
  277     const uint16_t *end = 
s + src_size / 2;
 
  280         register uint16_t bgr = *
s++;
 
  283         *d++ = ((bgr&0x7C00)>>7) | ((bgr&0x7C00)>>12);
 
  284         *d++ = ((bgr&0x03E0)>>2) | ((bgr&0x03E0)>> 7);
 
  285         *d++ = ((bgr&0x001F)<<3) | ((bgr&0x001F)>> 2);
 
  287         *d++ = ((bgr&0x001F)<<3) | ((bgr&0x001F)>> 2);
 
  288         *d++ = ((bgr&0x03E0)>>2) | ((bgr&0x03E0)>> 7);
 
  289         *d++ = ((bgr&0x7C00)>>7) | ((bgr&0x7C00)>>12);
 
  298     const uint16_t *
s   = (
const uint16_t *)
src;
 
  299     const uint16_t *end = 
s + src_size / 2;
 
  302         register uint16_t bgr = *
s++;
 
  305         *d++ = ((bgr&0xF800)>>8) | ((bgr&0xF800)>>13);
 
  306         *d++ = ((bgr&0x07E0)>>3) | ((bgr&0x07E0)>> 9);
 
  307         *d++ = ((bgr&0x001F)<<3) | ((bgr&0x001F)>> 2);
 
  309         *d++ = ((bgr&0x001F)<<3) | ((bgr&0x001F)>> 2);
 
  310         *d++ = ((bgr&0x07E0)>>3) | ((bgr&0x07E0)>> 9);
 
  311         *d++ = ((bgr&0xF800)>>8) | ((bgr&0xF800)>>13);
 
  320     int idx          = 15  - src_size;
 
  321     const uint8_t *
s = 
src - idx;
 
  322     uint8_t *d       = 
dst - idx;
 
  324     for (; idx < 15; idx += 4) {
 
  325         register unsigned v   = *(
const uint32_t *)&
s[idx], 
g = v & 0xff00ff00;
 
  327         *(uint32_t *)&d[idx]  = (v >> 16) + 
g + (v << 16);
 
  334     int idx          = 15  - src_size;
 
  335     const uint8_t *
s = 
src - idx;
 
  336     uint8_t *d       = 
dst - idx;
 
  338     for (; idx < 15; idx += 4) {
 
  339         register unsigned v   = *(
const uint32_t *)&
s[idx], 
g = v & 0x00ff00ff;
 
  341         *(uint32_t *)&d[idx]  = (v >> 16) + 
g + (v << 16);
 
  345 #define DEFINE_SHUFFLE_BYTES(name, a, b, c, d)                          \ 
  346 static void shuffle_bytes_##name (const uint8_t *src,                   \ 
  347                                         uint8_t *dst, int src_size)     \ 
  351     for (i = 0; i < src_size; i += 4) {                                 \ 
  352         dst[i + 0] = src[i + a];                                        \ 
  353         dst[i + 1] = src[i + b];                                        \ 
  354         dst[i + 2] = src[i + c];                                        \ 
  355         dst[i + 3] = src[i + d];                                        \ 
  367     for (
i = 0; 
i < src_size; 
i += 3) {
 
  368         register uint8_t x = 
src[
i + 2];
 
  376                                      const uint8_t *vsrc, uint8_t *
dst,
 
  378                                      int lumStride, 
int chromStride,
 
  379                                      int dstStride, 
int vertLumPerChroma)
 
  382     const int chromWidth = 
width >> 1;
 
  384     for (y = 0; y < 
height; y++) {
 
  386         uint64_t *ldst = (uint64_t *)
dst;
 
  387         const uint8_t *yc = ysrc, *uc = usrc, *vc = vsrc;
 
  388         for (
i = 0; 
i < chromWidth; 
i += 2) {
 
  389             uint64_t k = yc[0] + (uc[0] << 8) +
 
  390                          (yc[1] << 16) + ((unsigned) vc[0] << 24);
 
  391             uint64_t l = yc[2] + (uc[1] << 8) +
 
  392                          (yc[3] << 16) + ((unsigned) vc[1] << 24);
 
  393             *ldst++ = k + (l << 32);
 
  401         const uint8_t *yc = ysrc, *uc = usrc, *vc = vsrc;
 
  403         for (
i = 0; 
i < chromWidth; 
i++) {
 
  405             *idst++ = (yc[0] << 24) + (uc[0] << 16) +
 
  406                       (yc[1] <<  8) + (vc[0] <<  0);
 
  408             *idst++ = yc[0] + (uc[0] << 8) +
 
  409                       (yc[1] << 16) + (vc[0] << 24);
 
  416         if ((y & (vertLumPerChroma - 1)) == vertLumPerChroma - 1) {
 
  429 static inline void yv12toyuy2_c(
const uint8_t *ysrc, 
const uint8_t *usrc,
 
  430                                 const uint8_t *vsrc, uint8_t *
dst,
 
  432                                 int chromStride, 
int dstStride)
 
  436                       chromStride, dstStride, 2);
 
  440                                      const uint8_t *vsrc, uint8_t *
dst,
 
  442                                      int lumStride, 
int chromStride,
 
  443                                      int dstStride, 
int vertLumPerChroma)
 
  446     const int chromWidth = 
width >> 1;
 
  448     for (y = 0; y < 
height; y++) {
 
  450         uint64_t *ldst = (uint64_t *)
dst;
 
  451         const uint8_t *yc = ysrc, *uc = usrc, *vc = vsrc;
 
  452         for (
i = 0; 
i < chromWidth; 
i += 2) {
 
  453             uint64_t k = uc[0] + (yc[0] << 8) +
 
  454                          (vc[0] << 16) + ((unsigned) yc[1] << 24);
 
  455             uint64_t l = uc[1] + (yc[2] << 8) +
 
  456                          (vc[1] << 16) + ((unsigned) yc[3] << 24);
 
  457             *ldst++ = k + (l << 32);
 
  465         const uint8_t *yc = ysrc, *uc = usrc, *vc = vsrc;
 
  467         for (
i = 0; 
i < chromWidth; 
i++) {
 
  469             *idst++ = (uc[0] << 24) + (yc[0] << 16) +
 
  470                       (vc[0] <<  8) + (yc[1] <<  0);
 
  472             *idst++ = uc[0] + (yc[0] << 8) +
 
  473                       (vc[0] << 16) + (yc[1] << 24);
 
  480         if ((y & (vertLumPerChroma - 1)) == vertLumPerChroma - 1) {
 
  493 static inline void yv12touyvy_c(
const uint8_t *ysrc, 
const uint8_t *usrc,
 
  494                                 const uint8_t *vsrc, uint8_t *
dst,
 
  496                                 int chromStride, 
int dstStride)
 
  500                       chromStride, dstStride, 2);
 
  507                                    const uint8_t *vsrc, uint8_t *
dst,
 
  509                                    int chromStride, 
int dstStride)
 
  512                       chromStride, dstStride, 1);
 
  519                                    const uint8_t *vsrc, uint8_t *
dst,
 
  521                                    int chromStride, 
int dstStride)
 
  524                       chromStride, dstStride, 1);
 
  532                                 uint8_t *udst, uint8_t *vdst,
 
  534                                 int chromStride, 
int srcStride)
 
  537     const int chromWidth = 
width >> 1;
 
  539     for (y = 0; y < 
height; y += 2) {
 
  541         for (
i = 0; 
i < chromWidth; 
i++) {
 
  542             ydst[2 * 
i + 0] = 
src[4 * 
i + 0];
 
  543             udst[
i]         = 
src[4 * 
i + 1];
 
  544             ydst[2 * 
i + 1] = 
src[4 * 
i + 2];
 
  545             vdst[
i]         = 
src[4 * 
i + 3];
 
  550         for (
i = 0; 
i < chromWidth; 
i++) {
 
  551             ydst[2 * 
i + 0] = 
src[4 * 
i + 0];
 
  552             ydst[2 * 
i + 1] = 
src[4 * 
i + 2];
 
  562                               int srcHeight, 
int srcStride, 
int dstStride)
 
  569     for (x = 0; x < srcWidth - 1; x++) {
 
  570         dst[2 * x + 1] = (3 * 
src[x] + 
src[x + 1]) >> 2;
 
  571         dst[2 * x + 2] = (
src[x] + 3 * 
src[x + 1]) >> 2;
 
  573     dst[2 * srcWidth - 1] = 
src[srcWidth - 1];
 
  577     for (y = 1; y < srcHeight; y++) {
 
  578         const int mmxSize = 1;
 
  580         dst[0]         = (
src[0] * 3 + 
src[srcStride]) >> 2;
 
  581         dst[dstStride] = (
src[0] + 3 * 
src[srcStride]) >> 2;
 
  583         for (x = mmxSize - 1; x < srcWidth - 1; x++) {
 
  584             dst[2 * x + 1]             = (
src[x + 0] * 3 + 
src[x + srcStride + 1]) >> 2;
 
  585             dst[2 * x + dstStride + 2] = (
src[x + 0] + 3 * 
src[x + srcStride + 1]) >> 2;
 
  586             dst[2 * x + dstStride + 1] = (
src[x + 1] + 3 * 
src[x + srcStride])     >> 2;
 
  587             dst[2 * x + 2]             = (
src[x + 1] * 3 + 
src[x + srcStride])     >> 2;
 
  589         dst[srcWidth * 2 - 1]             = (
src[srcWidth - 1] * 3 + 
src[srcWidth - 1 + srcStride]) >> 2;
 
  590         dst[srcWidth * 2 - 1 + dstStride] = (
src[srcWidth - 1] + 3 * 
src[srcWidth - 1 + srcStride]) >> 2;
 
  592         dst += dstStride * 2;
 
  599     for (x = 0; x < srcWidth - 1; x++) {
 
  600         dst[2 * x + 1] = (
src[x] * 3 + 
src[x + 1]) >> 2;
 
  601         dst[2 * x + 2] = (
src[x] + 3 * 
src[x + 1]) >> 2;
 
  603     dst[2 * srcWidth - 1] = 
src[srcWidth - 1];
 
  613                                 uint8_t *udst, uint8_t *vdst,
 
  615                                 int chromStride, 
int srcStride)
 
  618     const int chromWidth = 
width >> 1;
 
  620     for (y = 0; y < 
height; y += 2) {
 
  622         for (
i = 0; 
i < chromWidth; 
i++) {
 
  623             udst[
i]         = 
src[4 * 
i + 0];
 
  624             ydst[2 * 
i + 0] = 
src[4 * 
i + 1];
 
  625             vdst[
i]         = 
src[4 * 
i + 2];
 
  626             ydst[2 * 
i + 1] = 
src[4 * 
i + 3];
 
  631         for (
i = 0; 
i < chromWidth; 
i++) {
 
  632             ydst[2 * 
i + 0] = 
src[4 * 
i + 1];
 
  633             ydst[2 * 
i + 1] = 
src[4 * 
i + 3];
 
  647                    uint8_t *vdst, 
int width, 
int height, 
int lumStride,
 
  654     const int chromWidth = 
width >> 1;
 
  656     const uint8_t *
src2 = 
src1 + srcStride;
 
  657     uint8_t *ydst1 = ydst;
 
  658     uint8_t *ydst2 = ydst + lumStride;
 
  660     for (y = 0; y < 
height; y += 2) {
 
  667         for (
i = 0; 
i < chromWidth; 
i++) {
 
  668             unsigned int b11 = 
src1[6 * 
i + 0];
 
  669             unsigned int g11 = 
src1[6 * 
i + 1];
 
  670             unsigned int r11 = 
src1[6 * 
i + 2];
 
  671             unsigned int b12 = 
src1[6 * 
i + 3];
 
  672             unsigned int g12 = 
src1[6 * 
i + 4];
 
  673             unsigned int r12 = 
src1[6 * 
i + 5];
 
  674             unsigned int b21 = 
src2[6 * 
i + 0];
 
  675             unsigned int g21 = 
src2[6 * 
i + 1];
 
  676             unsigned int r21 = 
src2[6 * 
i + 2];
 
  677             unsigned int b22 = 
src2[6 * 
i + 3];
 
  678             unsigned int g22 = 
src2[6 * 
i + 4];
 
  679             unsigned int r22 = 
src2[6 * 
i + 5];
 
  681             unsigned int Y11 = ((ry * r11 + gy * g11 + by * b11) >> 
RGB2YUV_SHIFT) + 16;
 
  682             unsigned int Y12 = ((ry * r12 + gy * g12 + by * b12) >> 
RGB2YUV_SHIFT) + 16;
 
  683             unsigned int Y21 = ((ry * r21 + gy * g21 + by * b21) >> 
RGB2YUV_SHIFT) + 16;
 
  684             unsigned int Y22 = ((ry * r22 + gy * g22 + by * b22) >> 
RGB2YUV_SHIFT) + 16;
 
  686             unsigned int bx = (b11 + b12 + b21 + b22) >> 2;
 
  687             unsigned int gx = (g11 + g12 + g21 + g22) >> 2;
 
  688             unsigned int rx = (r11 + r12 + r21 + r22) >> 2;
 
  690             unsigned int U  = ((ru * rx + gu * gx + bu * bx) >> 
RGB2YUV_SHIFT) + 128;
 
  691             unsigned int V  = ((rv * rx + gv * gx + bv * bx) >> 
RGB2YUV_SHIFT) + 128;
 
  693             ydst1[2 * 
i + 0] = Y11;
 
  694             ydst1[2 * 
i + 1] = Y12;
 
  695             ydst2[2 * 
i + 0] = Y21;
 
  696             ydst2[2 * 
i + 1] = Y22;
 
  700         src1  += srcStride * 2;
 
  701         src2  += srcStride * 2;
 
  702         ydst1 += lumStride * 2;
 
  703         ydst2 += lumStride * 2;
 
  711                               int src1Stride, 
int src2Stride, 
int dstStride)
 
  718             dest[2 * 
w + 0] = 
src1[
w];
 
  719             dest[2 * 
w + 1] = 
src2[
w];
 
  729                                 int dst1Stride, 
int dst2Stride)
 
  736             dst1[
w] = 
src[2 * 
w + 0];
 
  737             dst2[
w] = 
src[2 * 
w + 1];
 
  746                                  uint8_t *dst1, uint8_t *dst2,
 
  748                                  int srcStride1, 
int srcStride2,
 
  749                                  int dstStride1, 
int dstStride2)
 
  755     for (y = 0; y < 
h; y++) {
 
  756         const uint8_t *s1 = 
src1 + srcStride1 * (y >> 1);
 
  757         uint8_t *d        = dst1 + dstStride1 *  y;
 
  758         for (x = 0; x < 
w; x++)
 
  759             d[2 * x] = d[2 * x + 1] = s1[x];
 
  761     for (y = 0; y < 
h; y++) {
 
  762         const uint8_t *s2 = 
src2 + srcStride2 * (y >> 1);
 
  763         uint8_t *d        = dst2 + dstStride2 *  y;
 
  764         for (x = 0; x < 
w; x++)
 
  765             d[2 * x] = d[2 * x + 1] = s2[x];
 
  770                                   const uint8_t *src3, uint8_t *
dst,
 
  772                                   int srcStride1, 
int srcStride2,
 
  773                                   int srcStride3, 
int dstStride)
 
  779     for (y = 0; y < 
h; y++) {
 
  780         const uint8_t *yp = 
src1 + srcStride1 *  y;
 
  781         const uint8_t *up = 
src2 + srcStride2 * (y >> 2);
 
  782         const uint8_t *vp = src3 + srcStride3 * (y >> 2);
 
  783         uint8_t *d        = 
dst  + dstStride  *  y;
 
  784         for (x = 0; x < 
w; x++) {
 
  785             const int x2 = x << 2;
 
  786             d[8 * x + 0] = yp[x2];
 
  787             d[8 * x + 1] = up[x];
 
  788             d[8 * x + 2] = yp[x2 + 1];
 
  789             d[8 * x + 3] = vp[x];
 
  790             d[8 * x + 4] = yp[x2 + 2];
 
  791             d[8 * x + 5] = up[x];
 
  792             d[8 * x + 6] = yp[x2 + 3];
 
  793             d[8 * x + 7] = vp[x];
 
  804         dst[count] = 
src[2 * count];
 
  817         dst0[count] = 
src[4 * count + 0];
 
  818         dst1[count] = 
src[4 * count + 2];
 
  824                                uint8_t *dst0, uint8_t *dst1, 
int count)
 
  832         dst0[count] = (
src0[4 * count + 0] + 
src1[4 * count + 0]) >> 1;
 
  833         dst1[count] = (
src0[4 * count + 2] + 
src1[4 * count + 2]) >> 1;
 
  847         dst0[count] = 
src[4 * count + 0];
 
  848         dst1[count] = 
src[4 * count + 2];
 
  854                               uint8_t *dst0, uint8_t *dst1, 
int count)
 
  864         dst0[count] = (
src0[4 * count + 0] + 
src1[4 * count + 0]) >> 1;
 
  865         dst1[count] = (
src0[4 * count + 2] + 
src1[4 * count + 2]) >> 1;
 
  872                            int lumStride, 
int chromStride, 
int srcStride)
 
  877     for (y = 0; y < 
height; y++) {
 
  892                            int lumStride, 
int chromStride, 
int srcStride)
 
  897     for (y = 0; y < 
height; y++) {
 
  910                            int lumStride, 
int chromStride, 
int srcStride)
 
  915     for (y = 0; y < 
height; y++) {
 
  930                            int lumStride, 
int chromStride, 
int srcStride)
 
  935     for (y = 0; y < 
height; y++) {
 
  
static void yuvPlanartouyvy_c(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, int width, int height, int lumStride, int chromStride, int dstStride, int vertLumPerChroma)
 
static void rgb32to15_c(const uint8_t *src, uint8_t *dst, int src_size)
 
void(* rgb32tobgr24)(const uint8_t *src, uint8_t *dst, int src_size)
 
void(* shuffle_bytes_3012)(const uint8_t *src, uint8_t *dst, int src_size)
 
static void yuv422ptoyuy2_c(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, int width, int height, int lumStride, int chromStride, int dstStride)
Width should be a multiple of 16.
 
static void extract_even2_c(const uint8_t *src, uint8_t *dst0, uint8_t *dst1, int count)
 
void(* yv12toyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, int width, int height, int lumStride, int chromStride, int dstStride)
Height should be a multiple of 2 and width should be a multiple of 16.
 
static void rgb16to15_c(const uint8_t *src, uint8_t *dst, int src_size)
 
static void yv12touyvy_c(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, int width, int height, int lumStride, int chromStride, int dstStride)
Height should be a multiple of 2 and width should be a multiple of 16 (If this is a problem for anyon...
 
static void rgb24tobgr24_c(const uint8_t *src, uint8_t *dst, int src_size)
 
void(* yuy2toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int width, int height, int lumStride, int chromStride, int srcStride)
Height should be a multiple of 2 and width should be a multiple of 16.
 
void(* shuffle_bytes_3210)(const uint8_t *src, uint8_t *dst, int src_size)
 
static const char rgb2yuv[]
 
static void yuyvtoyuv422_c(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, int width, int height, int lumStride, int chromStride, int srcStride)
 
void(* rgb32tobgr16)(const uint8_t *src, uint8_t *dst, int src_size)
 
void(* yuyvtoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, int width, int height, int lumStride, int chromStride, int srcStride)
 
void(* rgb24tobgr16)(const uint8_t *src, uint8_t *dst, int src_size)
 
void(* rgb15to32)(const uint8_t *src, uint8_t *dst, int src_size)
 
void(* yv12touyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, int width, int height, int lumStride, int chromStride, int dstStride)
Height should be a multiple of 2 and width should be a multiple of 16.
 
static void rgb32tobgr15_c(const uint8_t *src, uint8_t *dst, int src_size)
 
void(* rgb32to16)(const uint8_t *src, uint8_t *dst, int src_size)
 
static void deinterleaveBytes_c(const uint8_t *src, uint8_t *dst1, uint8_t *dst2, int width, int height, int srcStride, int dst1Stride, int dst2Stride)
 
static void rgb15to32_c(const uint8_t *src, uint8_t *dst, int src_size)
 
static void shuffle_bytes_0321_c(const uint8_t *src, uint8_t *dst, int src_size)
 
#define DEFINE_SHUFFLE_BYTES(name, a, b, c, d)
 
static void interleaveBytes_c(const uint8_t *src1, const uint8_t *src2, uint8_t *dest, int width, int height, int src1Stride, int src2Stride, int dstStride)
 
static void extract_odd2avg_c(const uint8_t *src0, const uint8_t *src1, uint8_t *dst0, uint8_t *dst1, int count)
 
void(* ff_rgb24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int width, int height, int lumStride, int chromStride, int srcStride, int32_t *rgb2yuv)
Height should be a multiple of 2 and width should be a multiple of 2.
 
static void rgb32to16_c(const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb24to15_c(const uint8_t *src, uint8_t *dst, int src_size)
 
void(* rgb16tobgr24)(const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb15to16_c(const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb24tobgr32_c(const uint8_t *src, uint8_t *dst, int src_size)
 
#define AV_CEIL_RSHIFT(a, b)
 
static void rgb16to32_c(const uint8_t *src, uint8_t *dst, int src_size)
 
static void yuy2toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int width, int height, int lumStride, int chromStride, int srcStride)
Height should be a multiple of 2 and width should be a multiple of 16.
 
void(* shuffle_bytes_1230)(const uint8_t *src, uint8_t *dst, int src_size)
 
void(* rgb15tobgr24)(const uint8_t *src, uint8_t *dst, int src_size)
 
static void extract_odd2_c(const uint8_t *src, uint8_t *dst0, uint8_t *dst1, int count)
 
void(* yuv422ptoyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, int width, int height, int lumStride, int chromStride, int dstStride)
Width should be a multiple of 16.
 
void(* shuffle_bytes_2103)(const uint8_t *src, uint8_t *dst, int src_size)
 
void(* rgb32tobgr15)(const uint8_t *src, uint8_t *dst, int src_size)
 
void(* interleaveBytes)(const uint8_t *src1, const uint8_t *src2, uint8_t *dst, int width, int height, int src1Stride, int src2Stride, int dstStride)
 
void(* yvu9_to_yuy2)(const uint8_t *src1, const uint8_t *src2, const uint8_t *src3, uint8_t *dst, int width, int height, int srcStride1, int srcStride2, int srcStride3, int dstStride)
 
static void rgb24to16_c(const uint8_t *src, uint8_t *dst, int src_size)
 
static void uyvytoyuv422_c(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, int width, int height, int lumStride, int chromStride, int srcStride)
 
void(* rgb16to15)(const uint8_t *src, uint8_t *dst, int src_size)
 
static void yv12toyuy2_c(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, int width, int height, int lumStride, int chromStride, int dstStride)
Height should be a multiple of 2 and width should be a multiple of 16.
 
static void shuffle_bytes_2103_c(const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb32tobgr16_c(const uint8_t *src, uint8_t *dst, int src_size)
 
void(* yuyvtoyuv420)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, int width, int height, int lumStride, int chromStride, int srcStride)
 
void(* rgb24tobgr32)(const uint8_t *src, uint8_t *dst, int src_size)
 
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
 
static void yvu9_to_yuy2_c(const uint8_t *src1, const uint8_t *src2, const uint8_t *src3, uint8_t *dst, int width, int height, int srcStride1, int srcStride2, int srcStride3, int dstStride)
 
void(* shuffle_bytes_0321)(const uint8_t *src, uint8_t *dst, int src_size)
 
static void uyvytoyuv420_c(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, int width, int height, int lumStride, int chromStride, int srcStride)
 
void ff_rgb24toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int width, int height, int lumStride, int chromStride, int srcStride, int32_t *rgb2yuv)
width should be a multiple of 2.
 
void(* rgb24to16)(const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb24tobgr16_c(const uint8_t *src, uint8_t *dst, int src_size)
 
void(* uyvytoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, int width, int height, int lumStride, int chromStride, int srcStride)
 
#define i(width, name, range_min, range_max)
 
void(* rgb24to15)(const uint8_t *src, uint8_t *dst, int src_size)
 
static void extract_even_c(const uint8_t *src, uint8_t *dst, int count)
 
void(* rgb32to15)(const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb32tobgr24_c(const uint8_t *src, uint8_t *dst, int src_size)
 
static void uyvytoyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int width, int height, int lumStride, int chromStride, int srcStride)
Height should be a multiple of 2 and width should be a multiple of 16.
 
void(* deinterleaveBytes)(const uint8_t *src, uint8_t *dst1, uint8_t *dst2, int width, int height, int srcStride, int dst1Stride, int dst2Stride)
 
static void yuv422ptouyvy_c(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, int width, int height, int lumStride, int chromStride, int dstStride)
Width should be a multiple of 16.
 
static av_cold void rgb2rgb_init_c(void)
 
void(* uyvytoyuv420)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, int width, int height, int lumStride, int chromStride, int srcStride)
 
void(* rgb16to32)(const uint8_t *src, uint8_t *dst, int src_size)
 
static void vu9_to_vu12_c(const uint8_t *src1, const uint8_t *src2, uint8_t *dst1, uint8_t *dst2, int width, int height, int srcStride1, int srcStride2, int dstStride1, int dstStride2)
 
static void rgb24tobgr15_c(const uint8_t *src, uint8_t *dst, int src_size)
 
void(* rgb24tobgr15)(const uint8_t *src, uint8_t *dst, int src_size)
 
void(* rgb15to16)(const uint8_t *src, uint8_t *dst, int src_size)
 
void(* yuv422ptouyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, int width, int height, int lumStride, int chromStride, int dstStride)
Width should be a multiple of 16.
 
void(* vu9_to_vu12)(const uint8_t *src1, const uint8_t *src2, uint8_t *dst1, uint8_t *dst2, int width, int height, int srcStride1, int srcStride2, int dstStride1, int dstStride2)
 
void(* rgb24tobgr24)(const uint8_t *src, uint8_t *dst, int src_size)
 
static void extract_even2avg_c(const uint8_t *src0, const uint8_t *src1, uint8_t *dst0, uint8_t *dst1, int count)
 
static void yuyvtoyuv420_c(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, int width, int height, int lumStride, int chromStride, int srcStride)
 
static void rgb15tobgr24_c(const uint8_t *src, uint8_t *dst, int src_size)
 
void(* planar2x)(const uint8_t *src, uint8_t *dst, int width, int height, int srcStride, int dstStride)
 
static void planar2x_c(const uint8_t *src, uint8_t *dst, int srcWidth, int srcHeight, int srcStride, int dstStride)
 
static void yuvPlanartoyuy2_c(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, int width, int height, int lumStride, int chromStride, int dstStride, int vertLumPerChroma)
 
static void rgb16tobgr24_c(const uint8_t *src, uint8_t *dst, int src_size)