From: Carl Eugen Hoyos <[email protected]>

Based on work by ami_stuff.

Signed-off-by: Vittorio Giovara <[email protected]>
---
 libavcodec/raw.c    |  1 +
 libavcodec/rawdec.c | 10 ++++++++++
 libavformat/riff.c  |  1 +
 3 files changed, 12 insertions(+)

diff --git a/libavcodec/raw.c b/libavcodec/raw.c
index 4ccc6cc..28943ae 100644
--- a/libavcodec/raw.c
+++ b/libavcodec/raw.c
@@ -163,6 +163,7 @@ const PixelFormatTag ff_raw_pix_fmt_tags[] = {
     /* special */
     { AV_PIX_FMT_RGB565LE,MKTAG( 3 ,  0 ,  0 ,  0 ) }, /* flipped RGB565LE */
     { AV_PIX_FMT_YUV444P, MKTAG('Y', 'V', '2', '4') }, /* YUV444P, swapped UV 
*/
+    { AV_PIX_FMT_YUYV422, MKTAG('Y', 'V', 'Y', 'U') }, /* YUYV, swapped UV */
 
     { AV_PIX_FMT_NONE, 0 },
 };
diff --git a/libavcodec/rawdec.c b/libavcodec/rawdec.c
index a8227c7..9ff03f7 100644
--- a/libavcodec/rawdec.c
+++ b/libavcodec/rawdec.c
@@ -240,6 +240,16 @@ static int raw_decode(AVCodecContext *avctx, void *data, 
int *got_frame,
             line += picture->linesize[0];
         }
     }
+    if (avctx->codec_tag == AV_RL32("YVYU") &&
+        avctx->pix_fmt   == AV_PIX_FMT_YUYV422) {
+        int x, y;
+        uint8_t *line = picture->data[0];
+        for (y = 0; y < avctx->height; y++) {
+            for (x = 0; x < avctx->width - 1; x += 2)
+                FFSWAP(uint8_t, line[2 * x + 1], line[2 * x + 3]);
+            line += picture->linesize[0];
+        }
+    }
 
     *got_frame = 1;
     return buf_size;
diff --git a/libavformat/riff.c b/libavformat/riff.c
index 545ecaf..38f4d4e 100644
--- a/libavformat/riff.c
+++ b/libavformat/riff.c
@@ -213,6 +213,7 @@ const AVCodecTag ff_codec_bmp_tags[] = {
     { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', 'U', 'V', '9') },
     { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', 'V', 'U', '9') },
     { AV_CODEC_ID_RAWVIDEO,     MKTAG('a', 'u', 'v', '2') },
+    { AV_CODEC_ID_RAWVIDEO,     MKTAG('Y', 'V', 'Y', 'U') },
     { AV_CODEC_ID_FRWU,         MKTAG('F', 'R', 'W', 'U') },
     { AV_CODEC_ID_R10K,         MKTAG('R', '1', '0', 'k') },
     { AV_CODEC_ID_R210,         MKTAG('r', '2', '1', '0') },
-- 
1.8.3.4 (Apple Git-47)

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to