[FFmpeg-devel] [PATCH] nuv: Fix playback of RTjpeg from current MythTV,
Reimar Döffinger
Reimar.Doeffinger at gmx.de
Tue Jul 31 20:49:22 CEST 2012
The previous validity check seems to work only for some
(presumably older) files, in current versions the first bytes
now contain the data size.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger at gmx.de>
---
libavcodec/nuv.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/libavcodec/nuv.c b/libavcodec/nuv.c
index 17fcb70..00860fe 100644
--- a/libavcodec/nuv.c
+++ b/libavcodec/nuv.c
@@ -191,8 +191,15 @@ retry:
}
if (c->codec_frameheader) {
int w, h, q, res;
- if (buf_size < 12 || buf[0] != 'V') {
- av_log(avctx, AV_LOG_ERROR, "invalid nuv video frame (wrong codec_tag?)\n");
+ if (buf_size < 12) {
+ av_log(avctx, AV_LOG_ERROR, "Too small NUV video frame\n");
+ return AVERROR_INVALIDDATA;
+ }
+ // There seem to exist two variants of this header: one starts with 'V'
+ // and 5 bytes unknown, the other matches current MythTV and is 4 bytes size,
+ // 1 byte header size (== 12), 1 byte version (== 0)
+ if (buf[0] != 'V' && AV_RL16(&buf[4]) != 0x000c) {
+ av_log(avctx, AV_LOG_ERROR, "Unknown secondary frame header (wrong codec_tag?)\n");
return AVERROR_INVALIDDATA;
}
w = AV_RL16(&buf[6]);
--
1.7.10.4
More information about the ffmpeg-devel
mailing list