[FFmpeg-cvslog] lavc/v210dec: Skip Canopus C210 extradata.
Carl Eugen Hoyos
git at videolan.org
Thu May 17 13:20:13 EEST 2018
ffmpeg | branch: master | Carl Eugen Hoyos <ceffmpeg at gmail.com> | Thu May 10 22:45:07 2018 +0200| [380ca1bc0ce886f043d1380b7aff99356220309b] | committer: Carl Eugen Hoyos
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
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=380ca1bc0ce886f043d1380b7aff99356220309b
---
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, \
More information about the ffmpeg-cvslog
mailing list