Support YV12 from video4linux2 devices.
authorCarl Eugen Hoyos <cehoyos@ag.or.at>
Sun, 5 Feb 2012 19:06:12 +0000 (20:06 +0100)
committerCarl Eugen Hoyos <cehoyos@ag.or.at>
Sun, 5 Feb 2012 19:06:12 +0000 (20:06 +0100)
Reviewed-by: Luca Abeni
libavdevice/v4l2.c

index ca8a61d..642df1d 100644 (file)
@@ -108,6 +108,7 @@ struct fmt_map {
 static struct fmt_map fmt_conversion_table[] = {
     //ff_fmt           codec_id           v4l2_fmt
     { PIX_FMT_YUV420P, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUV420  },
+    { PIX_FMT_YUV420P, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YVU420  },
     { PIX_FMT_YUV422P, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUV422P },
     { PIX_FMT_YUYV422, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUYV    },
     { PIX_FMT_UYVY422, CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_UYVY    },
@@ -793,6 +794,8 @@ static int v4l2_read_header(AVFormatContext *s1)
     if (codec_id == CODEC_ID_RAWVIDEO)
         st->codec->codec_tag =
             avcodec_pix_fmt_to_codec_tag(st->codec->pix_fmt);
+    if (desired_format == V4L2_PIX_FMT_YVU420)
+        st->codec->codec_tag = MKTAG('Y', 'V', '1', '2');
     st->codec->width = s->width;
     st->codec->height = s->height;
     st->codec->bit_rate = s->frame_size * 1/av_q2d(st->codec->time_base) * 8;