[FFmpeg-cvslog] r20312 - in trunk/libavcodec: mjpegdec.c mjpegdec.h

cehoyos subversion
Mon Oct 19 17:41:29 CEST 2009


Author: cehoyos
Date: Mon Oct 19 17:41:28 2009
New Revision: 20312

Log:
Flip (M)JPEG frames encoded by Intel JPEG library.
Fixes issues 1464 and 1468.

Modified:
   trunk/libavcodec/mjpegdec.c
   trunk/libavcodec/mjpegdec.h

Modified: trunk/libavcodec/mjpegdec.c
==============================================================================
--- trunk/libavcodec/mjpegdec.c	Mon Oct 19 17:14:00 2009	(r20311)
+++ trunk/libavcodec/mjpegdec.c	Mon Oct 19 17:41:28 2009	(r20312)
@@ -105,6 +105,8 @@ av_cold int ff_mjpeg_decode_init(AVCodec
             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(MJpegDecode
         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(MJpegDecodeC
             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);
         }

Modified: trunk/libavcodec/mjpegdec.h
==============================================================================
--- trunk/libavcodec/mjpegdec.h	Mon Oct 19 17:14:00 2009	(r20311)
+++ trunk/libavcodec/mjpegdec.h	Mon Oct 19 17:41:28 2009	(r20312)
@@ -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);



More information about the ffmpeg-cvslog mailing list