From 380ca1bc0ce886f043d1380b7aff99356220309b Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Thu, 10 May 2018 22:45:07 +0200 Subject: [PATCH] lavc/v210dec: Skip Canopus C210 extradata. Unbreaks files with unknown extradata, the Canopus decoder accepts both files with and without this extradata (24 byte "INFO", 16 byte "RDRT", rest "FIEL"). Reported-by: Peter Bubestinger Tested-by: Piotr Bandurski --- libavcodec/v210dec.c | 6 ++++++ libavcodec/version.h | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/libavcodec/v210dec.c b/libavcodec/v210dec.c index 99199ddc15..ddc5dbe8be 100644 --- a/libavcodec/v210dec.c +++ b/libavcodec/v210dec.c @@ -27,6 +27,7 @@ #include "libavutil/bswap.h" #include "libavutil/internal.h" #include "libavutil/mem.h" +#include "libavutil/intreadwrite.h" #define READ_PIXELS(a, b, c) \ do { \ @@ -92,6 +93,11 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, return AVERROR_INVALIDDATA; } } + if ( avctx->codec_tag == MKTAG('C', '2', '1', '0') + && avpkt->size > 64 + && AV_RN32(psrc) == AV_RN32("INFO") + && avpkt->size - 64 >= stride * avctx->height) + psrc += 64; aligned_input = !((uintptr_t)psrc & 0xf) && !(stride & 0xf); if (aligned_input != s->aligned_input) { diff --git a/libavcodec/version.h b/libavcodec/version.h index 3fda743cf9..da893dacf1 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,7 +29,7 @@ #define LIBAVCODEC_VERSION_MAJOR 58 #define LIBAVCODEC_VERSION_MINOR 19 -#define LIBAVCODEC_VERSION_MICRO 101 +#define LIBAVCODEC_VERSION_MICRO 102 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \