[FFmpeg-cvslog] avcodec/mjpegdec: Print error in case of CMYK

Michael Niedermayer git at videolan.org
Thu Feb 27 20:25:53 CET 2014


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Thu Feb 27 20:02:40 2014 +0100| [6904168c79f21911a04bf1a17b3e11abeedd5250] | committer: Michael Niedermayer

avcodec/mjpegdec: Print error in case of CMYK

Also fail if AV_EF_EXPLODE is set.
We do not fail by default, but rather return some image as it may be usefull to the
end user to see what is on the image, for example text could be read quite fine and
objects recognized.

Possibly fixes Ticket3424

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6904168c79f21911a04bf1a17b3e11abeedd5250
---

 libavcodec/mjpegdec.c |    6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c
index 3469f70..67b27e1 100644
--- a/libavcodec/mjpegdec.c
+++ b/libavcodec/mjpegdec.c
@@ -378,6 +378,11 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
         if (s->rgb)
             s->avctx->pix_fmt = s->bits <= 9 ? AV_PIX_FMT_ABGR : AV_PIX_FMT_RGBA64;
         else {
+            if (s->adobe_transform == 0) {
+                av_log(s->avctx, AV_LOG_ERROR, "CMYK Unsupported\n");
+                if (s->avctx->err_recognition & AV_EF_EXPLODE)
+                    goto unk_pixfmt;
+            }
             s->avctx->pix_fmt = s->bits <= 8 ? AV_PIX_FMT_YUVA444P : AV_PIX_FMT_YUVA444P16;
             s->avctx->color_range = s->cs_itu601 ? AVCOL_RANGE_MPEG : AVCOL_RANGE_JPEG;
         }
@@ -1836,6 +1841,7 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
 
     av_dict_free(&s->exif_metadata);
     av_freep(&s->stereo3d);
+    s->adobe_transform = -1;
 
     buf_ptr = buf;
     buf_end = buf + buf_size;



More information about the ffmpeg-cvslog mailing list