diff options
author | Carl Eugen Hoyos <cehoyos@rainbow.studorg.tuwien.ac.at> | 2009-10-19 15:41:28 +0000 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@rainbow.studorg.tuwien.ac.at> | 2009-10-19 15:41:28 +0000 |
commit | 643fc8f1076bce3c971b09400019397be98065de (patch) | |
tree | 4e14bab905ce0affa4b4b478901100a02694c343 /libavcodec | |
parent | 11eb3cea7339633ea031b3c65da4778b5d9b38d1 (diff) | |
download | ffmpeg-643fc8f1076bce3c971b09400019397be98065de.tar.gz |
Flip (M)JPEG frames encoded by Intel JPEG library.
Fixes issues 1464 and 1468.
Originally committed as revision 20312 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/mjpegdec.c | 7 | ||||
-rw-r--r-- | libavcodec/mjpegdec.h | 1 |
2 files changed, 7 insertions, 1 deletions
diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 5e55614eef..d1d933fa86 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -105,6 +105,8 @@ av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx) av_log(avctx, AV_LOG_DEBUG, "mjpeg bottom field first\n"); } } + if (avctx->codec->id == CODEC_ID_AMV) + s->flipped = 1; return 0; } @@ -773,7 +775,7 @@ static int mjpeg_decode_scan(MJpegDecodeContext *s, int nb_components, int Ah, i data[c] = s->picture.data[c]; linesize[c]=s->linesize[c]; s->coefs_finished[c] |= 1; - if(s->avctx->codec->id==CODEC_ID_AMV) { + if(s->flipped) { //picture should be flipped upside-down for this codec assert(!(s->avctx->flags & CODEC_FLAG_EMU_EDGE)); data[c] += (linesize[c] * (s->v_scount[i] * (8 * s->mb_height -((s->height/s->v_max)&7)) - 1 )); @@ -1176,6 +1178,9 @@ static int mjpeg_decode_com(MJpegDecodeContext *s) else if(!strcmp(cbuf, "CS=ITU601")){ s->cs_itu601= 1; } + else if(len > 20 && !strncmp(cbuf, "Intel(R) JPEG Library", 21)){ + s->flipped = 1; + } av_free(cbuf); } diff --git a/libavcodec/mjpegdec.h b/libavcodec/mjpegdec.h index 9ef8987db3..d7a33b8c4f 100644 --- a/libavcodec/mjpegdec.h +++ b/libavcodec/mjpegdec.h @@ -101,6 +101,7 @@ typedef struct MJpegDecodeContext { int mjpb_skiptosod; int cur_scan; /* current scan, used by JPEG-LS */ + int flipped; /* true if picture is flipped */ } MJpegDecodeContext; int ff_mjpeg_decode_init(AVCodecContext *avctx); |