diff options
author | Carl Eugen Hoyos <cehoyos@rainbow.studorg.tuwien.ac.at> | 2010-01-12 00:29:26 +0000 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@rainbow.studorg.tuwien.ac.at> | 2010-01-12 00:29:26 +0000 |
commit | 0941ee0fa656eb3abc2bdf8abd57fa0eb8dd8bac (patch) | |
tree | 733e91adfce47097debd9531718532d86c3d5ac1 | |
parent | dc0d86facecd5b017fec4cd1cc3b0a55b31b0014 (diff) | |
download | ffmpeg-0941ee0fa656eb3abc2bdf8abd57fa0eb8dd8bac.tar.gz |
Support uncompressed ("Resolution 1:1") Avid AVI Codec, (partially) fixes issue 1474.
Originally committed as revision 21154 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavcodec/rawdec.c | 2 | ||||
-rw-r--r-- | libavformat/avidec.c | 5 |
2 files changed, 7 insertions, 0 deletions
diff --git a/libavcodec/rawdec.c b/libavcodec/rawdec.c index fe96440fce..47fcc7081a 100644 --- a/libavcodec/rawdec.c +++ b/libavcodec/rawdec.c @@ -74,6 +74,8 @@ static av_cold int raw_init_decoder(AVCodecContext *avctx) if (avctx->codec_tag == MKTAG('r','a','w',' ')) avctx->pix_fmt = findPixelFormat(pixelFormatBpsMOV, avctx->bits_per_coded_sample); + else if (avctx->codec_tag == MKTAG('A', 'V', 'R', 'n')) + avctx->pix_fmt = PIX_FMT_UYVY422; // Avid AVI Codec "Resolution 1:1" else if (avctx->codec_tag) avctx->pix_fmt = findPixelFormat(ff_raw_pixelFormatTags, avctx->codec_tag); else if (avctx->bits_per_coded_sample) diff --git a/libavformat/avidec.c b/libavformat/avidec.c index 6719c9d6e7..854ebc2654 100644 --- a/libavformat/avidec.c +++ b/libavformat/avidec.c @@ -518,6 +518,11 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap) st->codec->codec_tag = tag1; st->codec->codec_id = ff_codec_get_id(ff_codec_bmp_tags, tag1); st->need_parsing = AVSTREAM_PARSE_HEADERS; // This is needed to get the pict type which is necessary for generating correct pts. + // Support "Resolution 1:1" for Avid AVI Codec + if(tag1 == MKTAG('A', 'V', 'R', 'n') && + st->codec->extradata_size >= 31 && + !memcmp(&st->codec->extradata[28], "1:1", 3)) + st->codec->codec_id = CODEC_ID_RAWVIDEO; if(st->codec->codec_tag==0 && st->codec->height > 0 && st->codec->extradata_size < 1U<<30){ st->codec->extradata_size+= 9; |