[FFmpeg-cvslog] rawdec: fix decoding of QT WRAW files
ami_stuff
git at videolan.org
Wed May 25 00:18:27 CEST 2011
ffmpeg | branch: master | ami_stuff <ami_stuff at o2.pl> | Tue May 24 23:38:01 2011 +0200| [040e1c67edab57177adb88a7dd1cc9ed38d2b74e] | committer: Stefano Sabatini
rawdec: fix decoding of QT WRAW files
Fix decoding of QT WRAW files.
>From some tests it results that:
1. all of the AVI/MOV WRAW files (at least from the link posted
to the trac ticket #108) need to be flipped
2. mov WRAW files need to use AVI color modes
3. assigning PAL8 mode by default to WRAW codec is not correct
Fix decoding of file CarltonMovie2.mov, fix trac issue #108.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=040e1c67edab57177adb88a7dd1cc9ed38d2b74e
---
libavcodec/raw.c | 1 -
libavcodec/rawdec.c | 4 +++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/libavcodec/raw.c b/libavcodec/raw.c
index 7481b2f..0bc04df 100644
--- a/libavcodec/raw.c
+++ b/libavcodec/raw.c
@@ -123,7 +123,6 @@ const PixelFormatTag ff_raw_pix_fmt_tags[] = {
{ PIX_FMT_YUYV422, MKTAG('y', 'u', 'v', '2') },
{ PIX_FMT_YUYV422, MKTAG('y', 'u', 'v', 's') },
{ PIX_FMT_YUYV422, MKTAG('D', 'V', 'O', 'O') }, /* Digital Voodoo SD 8 Bit */
- { PIX_FMT_PAL8, MKTAG('W', 'R', 'A', 'W') },
{ PIX_FMT_RGB555LE,MKTAG('L', '5', '5', '5') },
{ PIX_FMT_RGB565LE,MKTAG('L', '5', '6', '5') },
{ PIX_FMT_RGB565BE,MKTAG('B', '5', '6', '5') },
diff --git a/libavcodec/rawdec.c b/libavcodec/rawdec.c
index 6bf749f..9702f98 100644
--- a/libavcodec/rawdec.c
+++ b/libavcodec/rawdec.c
@@ -90,6 +90,8 @@ static av_cold int raw_init_decoder(AVCodecContext *avctx)
if (avctx->codec_tag == MKTAG('r','a','w',' '))
avctx->pix_fmt = ff_find_pix_fmt(pix_fmt_bps_mov, avctx->bits_per_coded_sample);
+ else if (avctx->codec_tag == MKTAG('W','R','A','W'))
+ avctx->pix_fmt = ff_find_pix_fmt(pix_fmt_bps_avi, avctx->bits_per_coded_sample);
else if (avctx->codec_tag)
avctx->pix_fmt = ff_find_pix_fmt(ff_raw_pix_fmt_tags, avctx->codec_tag);
else if (avctx->pix_fmt == PIX_FMT_NONE && avctx->bits_per_coded_sample)
@@ -110,7 +112,7 @@ static av_cold int raw_init_decoder(AVCodecContext *avctx)
avctx->coded_frame= &context->pic;
if((avctx->extradata_size >= 9 && !memcmp(avctx->extradata + avctx->extradata_size - 9, "BottomUp", 9)) ||
- avctx->codec_tag == MKTAG( 3 , 0 , 0 , 0 ))
+ avctx->codec_tag == MKTAG(3, 0, 0, 0) || avctx->codec_tag == MKTAG('W','R','A','W'))
context->flip=1;
return 0;
More information about the ffmpeg-cvslog
mailing list