From a75a9e8f64ec9660b7c6e16653299f07bfe00f9d Mon Sep 17 00:00:00 2001 From: Nick Renieris Date: Thu, 29 Aug 2019 16:10:48 +0300 Subject: lavc/mjpegdec: Enable decoding of single-component bayer images Also, ensure no false positives when determining DNG bayer images, by setting them in tiff.c instead of relying on a heuristic. There's no way to determine this just from the JPEG data, so we have to pass this information from outside the MJPEG decoder. Signed-off-by: Nick Renieris --- libavcodec/tiff.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'libavcodec/tiff.c') diff --git a/libavcodec/tiff.c b/libavcodec/tiff.c index 8cbcbdf7a5..bdc9335b9a 100644 --- a/libavcodec/tiff.c +++ b/libavcodec/tiff.c @@ -839,6 +839,13 @@ static int dng_decode_jpeg_tile(AVCodecContext *avctx, AVFrame *frame, jpkt.data = (uint8_t*)s->gb.buffer; jpkt.size = tile_byte_count; + if (s->is_bayer) { + MJpegDecodeContext *mjpegdecctx = s->avctx_mjpeg->priv_data; + /* We have to set this information here, there is no way to know if a given JPEG is a DNG-embedded + image or not from its own data (and we need that information when decoding it). */ + mjpegdecctx->bayer = 1; + } + ret = avcodec_send_packet(s->avctx_mjpeg, &jpkt); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, "Error submitting a packet for decoding\n"); -- cgit v1.2.3