gst_plugins_base/gst/ffmpegcolorspace/imgconvert.c
branchRCL_3
changeset 30 7e817e7e631c
parent 29 567bb019e3e3
--- a/gst_plugins_base/gst/ffmpegcolorspace/imgconvert.c	Tue Aug 31 15:30:33 2010 +0300
+++ b/gst_plugins_base/gst/ffmpegcolorspace/imgconvert.c	Wed Sep 01 12:16:41 2010 +0100
@@ -64,28 +64,6 @@
         /* .y_chroma_shift = */ 1,
         /* .depth          = */ 8,
       },
-  /* [PIX_FMT_NV12] = */ {
-        /* .format         = */ PIX_FMT_NV12,
-        /* .name           = */ "nv12",
-        /* .nb_channels    = */ 2,
-        /* .color_type     = */ FF_COLOR_YUV,
-        /* .pixel_type     = */ FF_PIXEL_PACKED,
-        /* .is_alpha       = */ 0,
-        /* .x_chroma_shift = */ 1,
-        /* .y_chroma_shift = */ 1,
-        /* .depth          = */ 8,
-      },
-  /* [PIX_FMT_NV21] = */ {
-        /* .format         = */ PIX_FMT_NV21,
-        /* .name           = */ "nv21",
-        /* .nb_channels    = */ 2,
-        /* .color_type     = */ FF_COLOR_YUV,
-        /* .pixel_type     = */ FF_PIXEL_PACKED,
-        /* .is_alpha       = */ 0,
-        /* .x_chroma_shift = */ 1,
-        /* .y_chroma_shift = */ 1,
-        /* .depth          = */ 8,
-      },
   /* [PIX_FMT_YUV422P] = */ {
         /* .format         = */ PIX_FMT_YUV422P,
         /* .name           = */ "yuv422p",
@@ -130,28 +108,6 @@
         /* .y_chroma_shift = */ 0,
         /* .depth          = */ 8,
       },
-  /* [PIX_FMT_YVYU422] = */ {
-        /* .format         = */ PIX_FMT_YVYU422,
-        /* .name           = */ "yvyu422",
-        /* .nb_channels    = */ 1,
-        /* .color_type     = */ FF_COLOR_YUV,
-        /* .pixel_type     = */ FF_PIXEL_PACKED,
-        /* .is_alpha       = */ 0,
-        /* .x_chroma_shift = */ 1,
-        /* .y_chroma_shift = */ 0,
-        /* .depth          = */ 8,
-      },
-  /* [PIX_FMT_V308] = */ {
-        /* .format         = */ PIX_FMT_V308,
-        /* .name           = */ "v308",
-        /* .nb_channels    = */ 1,
-        /* .color_type     = */ FF_COLOR_YUV,
-        /* .pixel_type     = */ FF_PIXEL_PACKED,
-        /* .is_alpha       = */ 0,
-        /* .x_chroma_shift = */ 0,
-        /* .y_chroma_shift = */ 0,
-        /* .depth          = */ 8,
-      },
   /* [PIX_FMT_YUV410P] = */ {
         /* .format         = */ PIX_FMT_YUV410P,
         /* .name           = */ "yuv410p",
@@ -367,28 +323,6 @@
         /* .y_chroma_shift = */ 0,
         /* .depth          = */ 8,
       },
-  /* [PIX_FMT_GRAY16_L] = */ {
-        /* .format         = */ PIX_FMT_GRAY16_L,
-        /* .name           = */ "gray",
-        /* .nb_channels    = */ 1,
-        /* .color_type     = */ FF_COLOR_GRAY,
-        /* .pixel_type     = */ FF_PIXEL_PLANAR,
-        /* .is_alpha       = */ 0,
-        /* .x_chroma_shift = */ 0,
-        /* .y_chroma_shift = */ 0,
-        /* .depth          = */ 16,
-      },
-  /* [PIX_FMT_GRAY16_B] = */ {
-        /* .format         = */ PIX_FMT_GRAY16_B,
-        /* .name           = */ "gray",
-        /* .nb_channels    = */ 1,
-        /* .color_type     = */ FF_COLOR_GRAY,
-        /* .pixel_type     = */ FF_PIXEL_PLANAR,
-        /* .is_alpha       = */ 0,
-        /* .x_chroma_shift = */ 0,
-        /* .y_chroma_shift = */ 0,
-        /* .depth          = */ 16,
-      },
   /* [PIX_FMT_MONOWHITE] = */ {
         /* .format         = */ PIX_FMT_MONOWHITE,
         /* .name           = */ "monow",
@@ -574,6 +508,7 @@
   return size;
 }
 #endif
+
 #ifdef __SYMBIAN32__
 EXPORT_C
 #endif
@@ -656,7 +591,6 @@
       switch (pix_fmt) {
         case PIX_FMT_YUV422:
         case PIX_FMT_UYVY422:
-        case PIX_FMT_YVYU422:
         case PIX_FMT_RGB565:
         case PIX_FMT_RGB555:
           bits = 16;
@@ -770,7 +704,7 @@
     int pix_fmt, int width, int height)
 {
   int bwidth, bits, i;
-  const PixFmtInfo *pf;
+  PixFmtInfo *pf = get_pix_fmt_info (pix_fmt);
 
   pf = get_pix_fmt_info (pix_fmt);
   switch (pf->pixel_type) {
@@ -778,7 +712,6 @@
       switch (pix_fmt) {
         case PIX_FMT_YUV422:
         case PIX_FMT_UYVY422:
-        case PIX_FMT_YVYU422:
         case PIX_FMT_RGB565:
         case PIX_FMT_RGB555:
           bits = 16;
@@ -879,31 +812,6 @@
 }
 
 static void
-uyvy422_to_gray (AVPicture * dst, const AVPicture * src, int width, int height)
-{
-  const uint8_t *p, *p1;
-  uint8_t *lum, *lum1;
-  int w;
-
-  p1 = src->data[0];
-  lum1 = dst->data[0];
-  for (; height > 0; height--) {
-    p = p1;
-    lum = lum1;
-
-    for (w = width; w >= 2; w -= 2) {
-      lum[0] = p[1];
-      lum[1] = p[3];
-      p += 4;
-      lum += 2;
-    }
-    p1 += src->linesize[0];
-    lum1 += dst->linesize[0];
-  }
-}
-
-
-static void
 uyvy422_to_yuv420p (AVPicture * dst, const AVPicture * src,
     int width, int height)
 {
@@ -996,122 +904,6 @@
   }
 }
 
-static void
-yvyu422_to_gray (AVPicture * dst, const AVPicture * src, int width, int height)
-{
-  const uint8_t *p, *p1;
-  uint8_t *lum, *lum1;
-  int w;
-
-  p1 = src->data[0];
-  lum1 = dst->data[0];
-  for (; height > 0; height--) {
-    p = p1;
-    lum = lum1;
-
-    for (w = width; w >= 2; w -= 2) {
-      lum[0] = p[0];
-      lum[1] = p[2];
-      p += 4;
-      lum += 2;
-    }
-    p1 += src->linesize[0];
-    lum1 += dst->linesize[0];
-  }
-}
-
-
-static void
-yvyu422_to_yuv420p (AVPicture * dst, const AVPicture * src,
-    int width, int height)
-{
-  const uint8_t *p, *p1;
-  uint8_t *lum, *cr, *cb, *lum1, *cr1, *cb1;
-  int w;
-
-  p1 = src->data[0];
-
-  lum1 = dst->data[0];
-  cb1 = dst->data[1];
-  cr1 = dst->data[2];
-
-  for (; height >= 1; height -= 2) {
-    p = p1;
-    lum = lum1;
-    cb = cb1;
-    cr = cr1;
-    for (w = width; w >= 2; w -= 2) {
-      lum[0] = p[0];
-      cb[0] = p[3];
-      lum[1] = p[2];
-      cr[0] = p[1];
-      p += 4;
-      lum += 2;
-      cb++;
-      cr++;
-    }
-    if (w) {
-      lum[0] = p[0];
-      cb[0] = p[3];
-      cr[0] = p[1];
-      cb++;
-      cr++;
-    }
-    p1 += src->linesize[0];
-    lum1 += dst->linesize[0];
-    if (height > 1) {
-      p = p1;
-      lum = lum1;
-      for (w = width; w >= 2; w -= 2) {
-        lum[0] = p[0];
-        lum[1] = p[2];
-        p += 4;
-        lum += 2;
-      }
-      if (w) {
-        lum[0] = p[0];
-      }
-      p1 += src->linesize[0];
-      lum1 += dst->linesize[0];
-    }
-    cb1 += dst->linesize[1];
-    cr1 += dst->linesize[2];
-  }
-}
-
-static void
-yvyu422_to_yuv422p (AVPicture * dst, const AVPicture * src,
-    int width, int height)
-{
-  const uint8_t *p, *p1;
-  uint8_t *lum, *cr, *cb, *lum1, *cr1, *cb1;
-  int w;
-
-  p1 = src->data[0];
-  lum1 = dst->data[0];
-  cb1 = dst->data[1];
-  cr1 = dst->data[2];
-  for (; height > 0; height--) {
-    p = p1;
-    lum = lum1;
-    cb = cb1;
-    cr = cr1;
-    for (w = width; w >= 2; w -= 2) {
-      lum[0] = p[0];
-      cb[0] = p[3];
-      lum[1] = p[2];
-      cr[0] = p[1];
-      p += 4;
-      lum += 2;
-      cb++;
-      cr++;
-    }
-    p1 += src->linesize[0];
-    lum1 += dst->linesize[0];
-    cb1 += dst->linesize[1];
-    cr1 += dst->linesize[2];
-  }
-}
 
 static void
 yuv422_to_yuv422p (AVPicture * dst, const AVPicture * src,
@@ -1220,40 +1012,6 @@
 }
 
 static void
-yuv422p_to_yvyu422 (AVPicture * dst, const AVPicture * src,
-    int width, int height)
-{
-  uint8_t *p, *p1;
-  const uint8_t *lum, *cr, *cb, *lum1, *cr1, *cb1;
-  int w;
-
-  p1 = dst->data[0];
-  lum1 = src->data[0];
-  cb1 = src->data[1];
-  cr1 = src->data[2];
-  for (; height > 0; height--) {
-    p = p1;
-    lum = lum1;
-    cb = cb1;
-    cr = cr1;
-    for (w = width; w >= 2; w -= 2) {
-      p[0] = lum[0];
-      p[3] = cb[0];
-      p[2] = lum[1];
-      p[1] = cr[0];
-      p += 4;
-      lum += 2;
-      cb++;
-      cr++;
-    }
-    p1 += dst->linesize[0];
-    lum1 += src->linesize[0];
-    cb1 += src->linesize[1];
-    cr1 += src->linesize[2];
-  }
-}
-
-static void
 uyvy411_to_yuv411p (AVPicture * dst, const AVPicture * src,
     int width, int height)
 {
@@ -1289,6 +1047,7 @@
   }
 }
 
+
 static void
 yuv420p_to_yuv422 (AVPicture * dst, const AVPicture * src,
     int width, int height)
@@ -1350,226 +1109,6 @@
   }
 }
 
-static void
-nv12_to_nv21 (AVPicture * dst, const AVPicture * src, int width, int height)
-{
-  const uint8_t *s_c_ptr;
-  uint8_t *d_c_ptr;
-  int w, c_wrap;
-
-  memcpy (dst->data[0], src->data[0], src->linesize[0] * height);
-
-  s_c_ptr = src->data[1];
-  d_c_ptr = dst->data[1];
-  c_wrap = src->linesize[1] - ((width + 1) & ~0x01);
-
-  for (; height >= 2; height -= 2) {
-    for (w = width; w >= 2; w -= 2) {
-      d_c_ptr[0] = s_c_ptr[1];
-      d_c_ptr[1] = s_c_ptr[0];
-      s_c_ptr += 2;
-      d_c_ptr += 2;
-    }
-
-    /* handle odd width */
-    if (w) {
-      d_c_ptr[0] = s_c_ptr[1];
-      d_c_ptr[1] = s_c_ptr[0];
-      s_c_ptr += 2;
-      d_c_ptr += 2;
-    }
-    s_c_ptr += c_wrap;
-    d_c_ptr += c_wrap;
-  }
-
-  /* handle odd height */
-  if (height) {
-    for (w = width; w >= 2; w -= 2) {
-      d_c_ptr[0] = s_c_ptr[1];
-      d_c_ptr[1] = s_c_ptr[0];
-      s_c_ptr += 2;
-      d_c_ptr += 2;
-    }
-
-    /* handle odd width */
-    if (w) {
-      d_c_ptr[0] = s_c_ptr[1];
-      d_c_ptr[1] = s_c_ptr[0];
-      s_c_ptr += 2;
-      d_c_ptr += 2;
-    }
-  }
-}
-
-static void
-nv12_to_yuv444p (AVPicture * dst, const AVPicture * src, int width, int height)
-{
-  int w, h;
-  uint8_t *dst_lum1, *dst_lum2, *dst_line = dst->data[0];
-  uint8_t *dst_cb1, *dst_cb2, *dst_cb_line = dst->data[1];
-  uint8_t *dst_cr1, *dst_cr2, *dst_cr_line = dst->data[2];
-  uint8_t *lum1, *lum2, *src_lum_line = src->data[0];
-  uint8_t *src_c1, *src_c_line = src->data[1];
-  uint8_t cb, cr;
-
-  for (h = height / 2; h--;) {
-    dst_lum1 = dst_line;
-    dst_lum2 = dst_line + dst->linesize[0];
-
-    dst_cb1 = dst_cb_line;
-    dst_cb2 = dst_cb_line + dst->linesize[1];
-    dst_cr1 = dst_cr_line;
-    dst_cr2 = dst_cr_line + dst->linesize[2];
-
-    lum1 = src_lum_line;
-    lum2 = src_lum_line + src->linesize[0];
-
-    src_c1 = src_c_line;
-
-    for (w = width / 2; w--;) {
-      cb = *src_c1++;
-      cr = *src_c1++;
-      *dst_lum1++ = *lum1++;
-      *dst_lum2++ = *lum2++;
-      *dst_cb1++ = *dst_cb2++ = cb;
-      *dst_cr1++ = *dst_cr2++ = cr;
-      *dst_lum1++ = *lum1++;
-      *dst_lum2++ = *lum2++;
-      *dst_cb1++ = *dst_cb2++ = cb;
-      *dst_cr1++ = *dst_cr2++ = cr;
-    }
-    /* odd width */
-    if (width % 2 != 0) {
-      cb = *src_c1++;
-      cr = *src_c1++;
-      *dst_lum1++ = *lum1++;
-      *dst_lum2++ = *lum2++;
-      *dst_cb1++ = *dst_cb2++ = *src_c1++;
-      *dst_cr1++ = *dst_cr2++ = *src_c1++;
-    }
-
-    dst_line += dst->linesize[0] * 2;
-    dst_cb_line += dst->linesize[1] * 2;
-    dst_cr_line += dst->linesize[2] * 2;
-    src_lum_line += src->linesize[0] * 2;
-    src_c_line += src->linesize[1];
-  }
-
-  /* odd height */
-  if (height % 2 != 0) {
-    dst_lum1 = dst_line;
-    lum1 = src_lum_line;
-    src_c1 = src_c_line;
-    dst_cb1 = dst_cb_line;
-    dst_cr1 = dst_cr_line;
-
-    for (w = width / 2; w--;) {
-      cb = *src_c1++;
-      cr = *src_c1++;
-      *dst_lum1++ = *lum1++;
-      *dst_cb1++ = cb;
-      *dst_cr1++ = cr;
-      *dst_lum1++ = *lum1++;
-      *dst_cb1++ = cb;
-      *dst_cr1++ = cr;
-    }
-    /* odd width */
-    if (width % 2 != 0) {
-      cb = *src_c1++;
-      cr = *src_c1++;
-      *dst_lum1++ = *lum1++;
-      *dst_cb1++ = cb;
-      *dst_cr1++ = cr;
-    }
-  }
-}
-
-#define nv21_to_nv12 nv12_to_nv21
-
-static void
-nv21_to_yuv444p (AVPicture * dst, const AVPicture * src, int width, int height)
-{
-  int w, h;
-  uint8_t *dst_lum1, *dst_lum2, *dst_line = dst->data[0];
-  uint8_t *dst_cb1, *dst_cb2, *dst_cb_line = dst->data[1];
-  uint8_t *dst_cr1, *dst_cr2, *dst_cr_line = dst->data[2];
-  uint8_t *lum1, *lum2, *src_lum_line = src->data[0];
-  uint8_t *src_c1, *src_c_line = src->data[1];
-  uint8_t cb, cr;
-
-  for (h = height / 2; h--;) {
-    dst_lum1 = dst_line;
-    dst_lum2 = dst_line + dst->linesize[0];
-
-    dst_cb1 = dst_cb_line;
-    dst_cb2 = dst_cb_line + dst->linesize[1];
-    dst_cr1 = dst_cr_line;
-    dst_cr2 = dst_cr_line + dst->linesize[2];
-
-    lum1 = src_lum_line;
-    lum2 = src_lum_line + src->linesize[0];
-
-    src_c1 = src_c_line;
-
-    for (w = width / 2; w--;) {
-      cr = *src_c1++;
-      cb = *src_c1++;
-      *dst_lum1++ = *lum1++;
-      *dst_lum2++ = *lum2++;
-      *dst_cb1++ = *dst_cb2++ = cb;
-      *dst_cr1++ = *dst_cr2++ = cr;
-      *dst_lum1++ = *lum1++;
-      *dst_lum2++ = *lum2++;
-      *dst_cb1++ = *dst_cb2++ = cb;
-      *dst_cr1++ = *dst_cr2++ = cr;
-    }
-    /* odd width */
-    if (width % 2 != 0) {
-      cr = *src_c1++;
-      cb = *src_c1++;
-      *dst_lum1++ = *lum1++;
-      *dst_lum2++ = *lum2++;
-      *dst_cb1++ = *dst_cb2++ = *src_c1++;
-      *dst_cr1++ = *dst_cr2++ = *src_c1++;
-    }
-
-    dst_line += dst->linesize[0] * 2;
-    dst_cb_line += dst->linesize[1] * 2;
-    dst_cr_line += dst->linesize[2] * 2;
-    src_lum_line += src->linesize[0] * 2;
-    src_c_line += src->linesize[1];
-  }
-
-  /* odd height */
-  if (height % 2 != 0) {
-    dst_lum1 = dst_line;
-    lum1 = src_lum_line;
-    src_c1 = src_c_line;
-
-    dst_cb1 = dst_cb_line;
-    dst_cr1 = dst_cr_line;
-
-    for (w = width / 2; w--;) {
-      cr = *src_c1++;
-      cb = *src_c1++;
-      *dst_lum1++ = *lum1++;
-      *dst_cb1++ = cb;
-      *dst_cr1++ = cr;
-      *dst_lum1++ = *lum1++;
-      *dst_cb1++ = cb;
-      *dst_cr1++ = cr;
-    }
-    /* odd width */
-    if (width % 2 != 0) {
-      cr = *src_c1++;
-      cb = *src_c1++;
-      *dst_lum1++ = *lum1++;
-      *dst_cb1++ = cb;
-      *dst_cr1++ = cr;
-    }
-  }
-}
-
 #define SCALEBITS 10
 #define ONE_HALF  (1 << (SCALEBITS - 1))
 #define FIX(x)    ((int) ((x) * (1<<SCALEBITS) + 0.5))
@@ -2371,133 +1910,6 @@
 #include "imgconvert_template.h"
 
 static void
-gray_to_gray16_l (AVPicture * dst, const AVPicture * src, int width, int height)
-{
-  const unsigned char *p;
-  unsigned char *q;
-  int dst_wrap, src_wrap;
-  int x, y;
-
-  p = src->data[0];
-  src_wrap = src->linesize[0] - width;
-
-  q = dst->data[0];
-  dst_wrap = dst->linesize[0] - 2 * width;
-
-  for (y = 0; y < height; y++) {
-    for (x = 0; x < width; x++) {
-      GST_WRITE_UINT16_LE (q, (*p << 8));
-      q += 2;
-      p++;
-    }
-    p += src_wrap;
-    q += dst_wrap;
-  }
-}
-
-static void
-gray_to_gray16_b (AVPicture * dst, const AVPicture * src, int width, int height)
-{
-  const unsigned char *p;
-  unsigned char *q;
-  int dst_wrap, src_wrap;
-  int x, y;
-
-  p = src->data[0];
-  src_wrap = src->linesize[0] - width;
-
-  q = dst->data[0];
-  dst_wrap = dst->linesize[0] - 2 * width;
-
-  for (y = 0; y < height; y++) {
-    for (x = 0; x < width; x++) {
-      GST_WRITE_UINT16_BE (q, (*p << 8));
-      q += 2;
-      p++;
-    }
-    p += src_wrap;
-    q += dst_wrap;
-  }
-}
-
-static void
-gray16_l_to_gray (AVPicture * dst, const AVPicture * src, int width, int height)
-{
-  const unsigned char *p;
-  unsigned char *q;
-  int dst_wrap, src_wrap;
-  int x, y;
-
-  p = src->data[0];
-  src_wrap = src->linesize[0] - 2 * width;
-
-  q = dst->data[0];
-  dst_wrap = dst->linesize[0] - width;
-
-  for (y = 0; y < height; y++) {
-    for (x = 0; x < width; x++) {
-      q[0] = GST_READ_UINT16_LE (p) >> 8;
-      q++;
-      p += 2;
-    }
-    p += src_wrap;
-    q += dst_wrap;
-  }
-}
-
-static void
-gray16_b_to_gray (AVPicture * dst, const AVPicture * src, int width, int height)
-{
-  const unsigned char *p;
-  unsigned char *q;
-  int dst_wrap, src_wrap;
-  int x, y;
-
-  p = src->data[0];
-  src_wrap = src->linesize[0] - 2 * width;
-
-  q = dst->data[0];
-  dst_wrap = dst->linesize[0] - width;
-
-  for (y = 0; y < height; y++) {
-    for (x = 0; x < width; x++) {
-      q[0] = GST_READ_UINT16_BE (p) >> 8;
-      q++;
-      p += 2;
-    }
-    p += src_wrap;
-    q += dst_wrap;
-  }
-}
-
-static void
-gray16_b_to_gray16_l (AVPicture * dst, const AVPicture * src,
-    int width, int height)
-{
-  const unsigned char *p;
-  unsigned char *q;
-  int dst_wrap, src_wrap;
-  int x, y;
-
-  p = src->data[0];
-  src_wrap = src->linesize[0] - 2 * width;
-
-  q = dst->data[0];
-  dst_wrap = dst->linesize[0] - 2 * width;
-
-  for (y = 0; y < height; y++) {
-    for (x = 0; x < width; x++) {
-      q[0] = p[1];
-      q[1] = p[0];
-      q += 2;
-      p += 2;
-    }
-    p += src_wrap;
-    q += dst_wrap;
-  }
-}
-
-static void
 mono_to_gray (AVPicture * dst, const AVPicture * src,
     int width, int height, int xor_mask)
 {
@@ -2652,39 +2064,8 @@
   {PIX_FMT_YUV420P, PIX_FMT_ARGB32, yuv420p_to_argb32},
   {PIX_FMT_YUV420P, PIX_FMT_ABGR32, yuv420p_to_abgr32},
 
-  {PIX_FMT_NV12, PIX_FMT_RGB555, nv12_to_rgb555},
-  {PIX_FMT_NV12, PIX_FMT_RGB565, nv12_to_rgb565},
-  {PIX_FMT_NV12, PIX_FMT_BGR24, nv12_to_bgr24},
-  {PIX_FMT_NV12, PIX_FMT_RGB24, nv12_to_rgb24},
-  {PIX_FMT_NV12, PIX_FMT_RGB32, nv12_to_rgb32},
-  {PIX_FMT_NV12, PIX_FMT_BGR32, nv12_to_bgr32},
-  {PIX_FMT_NV12, PIX_FMT_xRGB32, nv12_to_xrgb32},
-  {PIX_FMT_NV12, PIX_FMT_BGRx32, nv12_to_bgrx32},
-  {PIX_FMT_NV12, PIX_FMT_RGBA32, nv12_to_rgba32},
-  {PIX_FMT_NV12, PIX_FMT_BGRA32, nv12_to_bgra32},
-  {PIX_FMT_NV12, PIX_FMT_ARGB32, nv12_to_argb32},
-  {PIX_FMT_NV12, PIX_FMT_ABGR32, nv12_to_abgr32},
-  {PIX_FMT_NV12, PIX_FMT_NV21, nv12_to_nv21},
-  {PIX_FMT_NV12, PIX_FMT_YUV444P, nv12_to_yuv444p},
-
-  {PIX_FMT_NV21, PIX_FMT_RGB555, nv21_to_rgb555},
-  {PIX_FMT_NV21, PIX_FMT_RGB565, nv21_to_rgb565},
-  {PIX_FMT_NV21, PIX_FMT_BGR24, nv21_to_bgr24},
-  {PIX_FMT_NV21, PIX_FMT_RGB24, nv21_to_rgb24},
-  {PIX_FMT_NV21, PIX_FMT_RGB32, nv21_to_rgb32},
-  {PIX_FMT_NV21, PIX_FMT_BGR32, nv21_to_bgr32},
-  {PIX_FMT_NV21, PIX_FMT_xRGB32, nv21_to_xrgb32},
-  {PIX_FMT_NV21, PIX_FMT_BGRx32, nv21_to_bgrx32},
-  {PIX_FMT_NV21, PIX_FMT_RGBA32, nv21_to_rgba32},
-  {PIX_FMT_NV21, PIX_FMT_BGRA32, nv21_to_bgra32},
-  {PIX_FMT_NV21, PIX_FMT_ARGB32, nv21_to_argb32},
-  {PIX_FMT_NV21, PIX_FMT_ABGR32, nv21_to_abgr32},
-  {PIX_FMT_NV21, PIX_FMT_YUV444P, nv21_to_yuv444p},
-  {PIX_FMT_NV21, PIX_FMT_NV12, nv21_to_nv12},
-
   {PIX_FMT_YUV422P, PIX_FMT_YUV422, yuv422p_to_yuv422},
   {PIX_FMT_YUV422P, PIX_FMT_UYVY422, yuv422p_to_uyvy422},
-  {PIX_FMT_YUV422P, PIX_FMT_YVYU422, yuv422p_to_yvyu422},
 
   {PIX_FMT_YUV444P, PIX_FMT_RGB24, yuv444p_to_rgb24},
 
@@ -2708,15 +2089,8 @@
 
   {PIX_FMT_UYVY422, PIX_FMT_YUV420P, uyvy422_to_yuv420p},
   {PIX_FMT_UYVY422, PIX_FMT_YUV422P, uyvy422_to_yuv422p},
-  {PIX_FMT_UYVY422, PIX_FMT_GRAY8, uyvy422_to_gray},
-
-  {PIX_FMT_YVYU422, PIX_FMT_YUV420P, yvyu422_to_yuv420p},
-  {PIX_FMT_YVYU422, PIX_FMT_YUV422P, yvyu422_to_yuv422p},
-  {PIX_FMT_YVYU422, PIX_FMT_GRAY8, yvyu422_to_gray},
 
   {PIX_FMT_RGB24, PIX_FMT_YUV420P, rgb24_to_yuv420p},
-  {PIX_FMT_RGB24, PIX_FMT_NV12, rgb24_to_nv12},
-  {PIX_FMT_RGB24, PIX_FMT_NV21, rgb24_to_nv21},
   {PIX_FMT_RGB24, PIX_FMT_RGB565, rgb24_to_rgb565},
   {PIX_FMT_RGB24, PIX_FMT_RGB555, rgb24_to_rgb555},
   {PIX_FMT_RGB24, PIX_FMT_RGB32, rgb24_to_rgb32},
@@ -2729,33 +2103,22 @@
   {PIX_FMT_RGB24, PIX_FMT_ARGB32, rgb24_to_argb32},
   {PIX_FMT_RGB24, PIX_FMT_ABGR32, rgb24_to_abgr32},
   {PIX_FMT_RGB24, PIX_FMT_GRAY8, rgb24_to_gray},
-  {PIX_FMT_RGB24, PIX_FMT_GRAY16_L, rgb24_to_gray16_l},
-  {PIX_FMT_RGB24, PIX_FMT_GRAY16_B, rgb24_to_gray16_b},
   {PIX_FMT_RGB24, PIX_FMT_PAL8, rgb24_to_pal8},
   {PIX_FMT_RGB24, PIX_FMT_YUV444P, rgb24_to_yuv444p},
   {PIX_FMT_RGB24, PIX_FMT_YUVJ420P, rgb24_to_yuvj420p},
   {PIX_FMT_RGB24, PIX_FMT_YUVJ444P, rgb24_to_yuvj444p},
   {PIX_FMT_RGB24, PIX_FMT_AYUV4444, rgb24_to_ayuv4444},
-  {PIX_FMT_RGB24, PIX_FMT_V308, rgb24_to_v308},
 
   {PIX_FMT_RGB32, PIX_FMT_RGB24, rgb32_to_rgb24},
   {PIX_FMT_RGB32, PIX_FMT_RGB555, rgba32_to_rgb555},
   {PIX_FMT_RGB32, PIX_FMT_PAL8, rgb32_to_pal8},
   {PIX_FMT_RGB32, PIX_FMT_YUV420P, rgb32_to_yuv420p},
-  {PIX_FMT_RGB32, PIX_FMT_NV12, rgb32_to_nv12},
-  {PIX_FMT_RGB32, PIX_FMT_NV21, rgb32_to_nv21},
   {PIX_FMT_RGB32, PIX_FMT_GRAY8, rgb32_to_gray},
-  {PIX_FMT_RGB32, PIX_FMT_GRAY16_L, rgb32_to_gray16_l},
-  {PIX_FMT_RGB32, PIX_FMT_GRAY16_B, rgb32_to_gray16_b},
 
   {PIX_FMT_xRGB32, PIX_FMT_RGB24, xrgb32_to_rgb24},
   {PIX_FMT_xRGB32, PIX_FMT_PAL8, xrgb32_to_pal8},
   {PIX_FMT_xRGB32, PIX_FMT_YUV420P, xrgb32_to_yuv420p},
-  {PIX_FMT_xRGB32, PIX_FMT_NV12, xrgb32_to_nv12},
-  {PIX_FMT_xRGB32, PIX_FMT_NV21, xrgb32_to_nv21},
   {PIX_FMT_xRGB32, PIX_FMT_GRAY8, xrgb32_to_gray},
-  {PIX_FMT_xRGB32, PIX_FMT_GRAY16_L, xrgb32_to_gray16_l},
-  {PIX_FMT_xRGB32, PIX_FMT_GRAY16_B, xrgb32_to_gray16_b},
 
   {PIX_FMT_RGBA32, PIX_FMT_BGRA32, rgba32_to_bgra32},
   {PIX_FMT_RGBA32, PIX_FMT_ABGR32, rgba32_to_abgr32},
@@ -2767,84 +2130,48 @@
   {PIX_FMT_RGBA32, PIX_FMT_RGB555, rgba32_to_rgb555},
   {PIX_FMT_RGBA32, PIX_FMT_PAL8, rgba32_to_pal8},
   {PIX_FMT_RGBA32, PIX_FMT_YUV420P, rgba32_to_yuv420p},
-  {PIX_FMT_RGBA32, PIX_FMT_NV12, rgba32_to_nv12},
-  {PIX_FMT_RGBA32, PIX_FMT_NV21, rgba32_to_nv21},
   {PIX_FMT_RGBA32, PIX_FMT_GRAY8, rgba32_to_gray},
-  {PIX_FMT_RGBA32, PIX_FMT_GRAY16_L, rgba32_to_gray16_l},
-  {PIX_FMT_RGBA32, PIX_FMT_GRAY16_B, rgba32_to_gray16_b},
   {PIX_FMT_RGBA32, PIX_FMT_AYUV4444, rgba32_to_ayuv4444},
 
   {PIX_FMT_BGR24, PIX_FMT_RGB24, bgr24_to_rgb24},
   {PIX_FMT_BGR24, PIX_FMT_YUV420P, bgr24_to_yuv420p},
-  {PIX_FMT_BGR24, PIX_FMT_NV12, bgr24_to_nv12},
-  {PIX_FMT_BGR24, PIX_FMT_NV21, bgr24_to_nv21},
   {PIX_FMT_BGR24, PIX_FMT_GRAY8, bgr24_to_gray},
-  {PIX_FMT_BGR24, PIX_FMT_GRAY16_L, bgr24_to_gray16_l},
-  {PIX_FMT_BGR24, PIX_FMT_GRAY16_B, bgr24_to_gray16_b},
 
   {PIX_FMT_BGR32, PIX_FMT_RGB24, bgr32_to_rgb24},
   {PIX_FMT_BGR32, PIX_FMT_RGBA32, bgr32_to_rgba32},
   {PIX_FMT_BGR32, PIX_FMT_YUV420P, bgr32_to_yuv420p},
-  {PIX_FMT_BGR32, PIX_FMT_NV12, bgr32_to_nv12},
-  {PIX_FMT_BGR32, PIX_FMT_NV21, bgr32_to_nv21},
   {PIX_FMT_BGR32, PIX_FMT_GRAY8, bgr32_to_gray},
-  {PIX_FMT_BGR32, PIX_FMT_GRAY16_L, bgr32_to_gray16_l},
-  {PIX_FMT_BGR32, PIX_FMT_GRAY16_B, bgr32_to_gray16_b},
 
   {PIX_FMT_BGRx32, PIX_FMT_RGB24, bgrx32_to_rgb24},
   {PIX_FMT_BGRx32, PIX_FMT_RGBA32, bgrx32_to_rgba32},
   {PIX_FMT_BGRx32, PIX_FMT_YUV420P, bgrx32_to_yuv420p},
-  {PIX_FMT_BGRx32, PIX_FMT_NV12, bgrx32_to_nv12},
-  {PIX_FMT_BGRx32, PIX_FMT_NV21, bgrx32_to_nv21},
   {PIX_FMT_BGRx32, PIX_FMT_GRAY8, bgrx32_to_gray},
-  {PIX_FMT_BGRx32, PIX_FMT_GRAY16_L, bgrx32_to_gray16_l},
-  {PIX_FMT_BGRx32, PIX_FMT_GRAY16_B, bgrx32_to_gray16_b},
 
   {PIX_FMT_BGRA32, PIX_FMT_RGB24, bgra32_to_rgb24},
   {PIX_FMT_BGRA32, PIX_FMT_RGBA32, bgra32_to_rgba32},
   {PIX_FMT_BGRA32, PIX_FMT_YUV420P, bgra32_to_yuv420p},
-  {PIX_FMT_BGRA32, PIX_FMT_NV12, bgra32_to_nv12},
-  {PIX_FMT_BGRA32, PIX_FMT_NV21, bgra32_to_nv21},
   {PIX_FMT_BGRA32, PIX_FMT_GRAY8, bgra32_to_gray},
-  {PIX_FMT_BGRA32, PIX_FMT_GRAY16_L, bgra32_to_gray16_l},
-  {PIX_FMT_BGRA32, PIX_FMT_GRAY16_B, bgra32_to_gray16_b},
   {PIX_FMT_BGRA32, PIX_FMT_AYUV4444, bgra32_to_ayuv4444},
 
   {PIX_FMT_ABGR32, PIX_FMT_RGB24, abgr32_to_rgb24},
   {PIX_FMT_ABGR32, PIX_FMT_RGBA32, abgr32_to_rgba32},
   {PIX_FMT_ABGR32, PIX_FMT_YUV420P, abgr32_to_yuv420p},
-  {PIX_FMT_ABGR32, PIX_FMT_NV12, abgr32_to_nv12},
-  {PIX_FMT_ABGR32, PIX_FMT_NV21, abgr32_to_nv21},
   {PIX_FMT_ABGR32, PIX_FMT_GRAY8, abgr32_to_gray},
-  {PIX_FMT_ABGR32, PIX_FMT_GRAY16_L, abgr32_to_gray16_l},
-  {PIX_FMT_ABGR32, PIX_FMT_GRAY16_B, abgr32_to_gray16_b},
 
   {PIX_FMT_ARGB32, PIX_FMT_RGB24, argb32_to_rgb24},
   {PIX_FMT_ARGB32, PIX_FMT_RGBA32, argb32_to_rgba32},
   {PIX_FMT_ARGB32, PIX_FMT_YUV420P, argb32_to_yuv420p},
-  {PIX_FMT_ARGB32, PIX_FMT_NV12, argb32_to_nv12},
-  {PIX_FMT_ARGB32, PIX_FMT_NV21, argb32_to_nv21},
   {PIX_FMT_ARGB32, PIX_FMT_GRAY8, argb32_to_gray},
-  {PIX_FMT_ARGB32, PIX_FMT_GRAY16_L, argb32_to_gray16_l},
-  {PIX_FMT_ARGB32, PIX_FMT_GRAY16_B, argb32_to_gray16_b},
 
   {PIX_FMT_RGB555, PIX_FMT_RGB24, rgb555_to_rgb24},
   {PIX_FMT_RGB555, PIX_FMT_RGB32, rgb555_to_rgba32},
   {PIX_FMT_RGB555, PIX_FMT_RGBA32, rgb555_to_rgba32},
   {PIX_FMT_RGB555, PIX_FMT_YUV420P, rgb555_to_yuv420p},
-  {PIX_FMT_RGB555, PIX_FMT_NV12, rgb555_to_nv12},
-  {PIX_FMT_RGB555, PIX_FMT_NV21, rgb555_to_nv21},
   {PIX_FMT_RGB555, PIX_FMT_GRAY8, rgb555_to_gray},
-  {PIX_FMT_RGB555, PIX_FMT_GRAY16_L, rgb555_to_gray16_l},
-  {PIX_FMT_RGB555, PIX_FMT_GRAY16_B, rgb555_to_gray16_b},
 
   {PIX_FMT_RGB565, PIX_FMT_RGB24, rgb565_to_rgb24},
   {PIX_FMT_RGB565, PIX_FMT_YUV420P, rgb565_to_yuv420p},
-  {PIX_FMT_RGB565, PIX_FMT_NV12, rgb565_to_nv12},
-  {PIX_FMT_RGB565, PIX_FMT_NV21, rgb565_to_nv21},
   {PIX_FMT_RGB565, PIX_FMT_GRAY8, rgb565_to_gray},
-  {PIX_FMT_RGB565, PIX_FMT_GRAY16_L, rgb565_to_gray16_l},
-  {PIX_FMT_RGB565, PIX_FMT_GRAY16_B, rgb565_to_gray16_b},
 
   {PIX_FMT_GRAY8, PIX_FMT_RGB555, gray_to_rgb555},
   {PIX_FMT_GRAY8, PIX_FMT_RGB565, gray_to_rgb565},
@@ -2860,43 +2187,11 @@
   {PIX_FMT_GRAY8, PIX_FMT_ABGR32, gray_to_abgr32},
   {PIX_FMT_GRAY8, PIX_FMT_MONOWHITE, gray_to_monowhite},
   {PIX_FMT_GRAY8, PIX_FMT_MONOBLACK, gray_to_monoblack},
-  {PIX_FMT_GRAY8, PIX_FMT_GRAY16_L, gray_to_gray16_l},
-  {PIX_FMT_GRAY8, PIX_FMT_GRAY16_B, gray_to_gray16_b},
 
   {PIX_FMT_MONOWHITE, PIX_FMT_GRAY8, monowhite_to_gray},
 
   {PIX_FMT_MONOBLACK, PIX_FMT_GRAY8, monoblack_to_gray},
 
-  {PIX_FMT_GRAY16_L, PIX_FMT_GRAY8, gray16_l_to_gray},
-  {PIX_FMT_GRAY16_L, PIX_FMT_RGB555, gray16_l_to_rgb555},
-  {PIX_FMT_GRAY16_L, PIX_FMT_RGB565, gray16_l_to_rgb565},
-  {PIX_FMT_GRAY16_L, PIX_FMT_BGR24, gray16_l_to_bgr24},
-  {PIX_FMT_GRAY16_L, PIX_FMT_RGB24, gray16_l_to_rgb24},
-  {PIX_FMT_GRAY16_L, PIX_FMT_BGR32, gray16_l_to_bgr32},
-  {PIX_FMT_GRAY16_L, PIX_FMT_RGB32, gray16_l_to_rgb32},
-  {PIX_FMT_GRAY16_L, PIX_FMT_xRGB32, gray16_l_to_xrgb32},
-  {PIX_FMT_GRAY16_L, PIX_FMT_BGRx32, gray16_l_to_bgrx32},
-  {PIX_FMT_GRAY16_L, PIX_FMT_ABGR32, gray16_l_to_abgr32},
-  {PIX_FMT_GRAY16_L, PIX_FMT_ARGB32, gray16_l_to_argb32},
-  {PIX_FMT_GRAY16_L, PIX_FMT_BGRA32, gray16_l_to_bgra32},
-  {PIX_FMT_GRAY16_L, PIX_FMT_RGBA32, gray16_l_to_rgba32},
-  {PIX_FMT_GRAY16_L, PIX_FMT_GRAY16_B, gray16_b_to_gray16_l},
-
-  {PIX_FMT_GRAY16_B, PIX_FMT_GRAY8, gray16_b_to_gray},
-  {PIX_FMT_GRAY16_B, PIX_FMT_RGB555, gray16_b_to_rgb555},
-  {PIX_FMT_GRAY16_B, PIX_FMT_RGB565, gray16_b_to_rgb565},
-  {PIX_FMT_GRAY16_B, PIX_FMT_BGR24, gray16_b_to_bgr24},
-  {PIX_FMT_GRAY16_B, PIX_FMT_RGB24, gray16_b_to_rgb24},
-  {PIX_FMT_GRAY16_B, PIX_FMT_BGR32, gray16_b_to_bgr32},
-  {PIX_FMT_GRAY16_B, PIX_FMT_RGB32, gray16_b_to_rgb32},
-  {PIX_FMT_GRAY16_B, PIX_FMT_xRGB32, gray16_b_to_xrgb32},
-  {PIX_FMT_GRAY16_B, PIX_FMT_BGRx32, gray16_b_to_bgrx32},
-  {PIX_FMT_GRAY16_B, PIX_FMT_ABGR32, gray16_b_to_abgr32},
-  {PIX_FMT_GRAY16_B, PIX_FMT_ARGB32, gray16_b_to_argb32},
-  {PIX_FMT_GRAY16_B, PIX_FMT_BGRA32, gray16_b_to_bgra32},
-  {PIX_FMT_GRAY16_B, PIX_FMT_RGBA32, gray16_b_to_rgba32},
-  {PIX_FMT_GRAY16_B, PIX_FMT_GRAY16_L, gray16_b_to_gray16_l},
-
   {PIX_FMT_PAL8, PIX_FMT_RGB555, pal8_to_rgb555},
   {PIX_FMT_PAL8, PIX_FMT_RGB565, pal8_to_rgb565},
   {PIX_FMT_PAL8, PIX_FMT_BGR24, pal8_to_bgr24},
@@ -2912,10 +2207,9 @@
 
   {PIX_FMT_UYVY411, PIX_FMT_YUV411P, uyvy411_to_yuv411p},
 
-  {PIX_FMT_V308, PIX_FMT_RGB24, v308_to_rgb24},
+  {PIX_FMT_AYUV4444, PIX_FMT_RGBA32, ayuv4444_to_rgba32},
 
-  {PIX_FMT_AYUV4444, PIX_FMT_RGBA32, ayuv4444_to_rgba32},
-  {PIX_FMT_AYUV4444, PIX_FMT_RGB24, ayuv4444_to_rgb24},
+  {PIX_FMT_AYUV4444, PIX_FMT_RGB24, ayuv4444_to_rgb24}
 };
 
 static ConvertEntry *
@@ -3156,8 +2450,7 @@
   if (src_pix_fmt == PIX_FMT_YUV422 || dst_pix_fmt == PIX_FMT_YUV422) {
     /* specific case: convert to YUV422P first */
     int_pix_fmt = PIX_FMT_YUV422P;
-  } else if (src_pix_fmt == PIX_FMT_UYVY422 || dst_pix_fmt == PIX_FMT_UYVY422 ||
-      src_pix_fmt == PIX_FMT_YVYU422 || dst_pix_fmt == PIX_FMT_YVYU422) {
+  } else if (src_pix_fmt == PIX_FMT_UYVY422 || dst_pix_fmt == PIX_FMT_UYVY422) {
     /* specific case: convert to YUV422P first */
     int_pix_fmt = PIX_FMT_YUV422P;
   } else if (src_pix_fmt == PIX_FMT_UYVY411 || dst_pix_fmt == PIX_FMT_UYVY411) {
@@ -3243,7 +2536,7 @@
 int
 img_get_alpha_info (const AVPicture * src, int pix_fmt, int width, int height)
 {
-  const PixFmtInfo *pf;
+  PixFmtInfo *pf = get_pix_fmt_info (pix_fmt);
   int ret;
 
   pf = get_pix_fmt_info (pix_fmt);
@@ -3385,7 +2678,6 @@
   }
 #endif
 }
-
 static void
 deinterlace_line_inplace (uint8_t * lum_m4, uint8_t * lum_m3, uint8_t * lum_m2,
     uint8_t * lum_m1, uint8_t * lum, int size)