Module: ffmpeg Branch: master Commit: 7a4abe5912405474039198823d451b2a38361c48
Author: Anatoly Nenashev <[email protected]> Date: Thu Feb 10 16:09:48 2011 +0000 mpeg4video: ignore broken GOP headers Some MPEG4 cameras produce files with empty GOP headers. This patch makes the decoder ignore such broken headers and proceed with the following I-frame. Without this change, the following start code is missed resulting in the entire I-frame being skipped. Signed-off-by: Mans Rullgard <[email protected]> --- libavcodec/mpeg4videodec.c | 21 +++++++++++---------- 1 files changed, 11 insertions(+), 10 deletions(-) diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c index 673c4e8..617dcb9 100644 --- a/libavcodec/mpeg4videodec.c +++ b/libavcodec/mpeg4videodec.c @@ -1494,16 +1494,17 @@ end: static int mpeg4_decode_gop_header(MpegEncContext * s, GetBitContext *gb){ int hours, minutes, seconds; - - hours= get_bits(gb, 5); - minutes= get_bits(gb, 6); - skip_bits1(gb); - seconds= get_bits(gb, 6); - - s->time_base= seconds + 60*(minutes + 60*hours); - - skip_bits1(gb); - skip_bits1(gb); + unsigned time_code = show_bits(gb, 18); + + if (time_code & 0x40) { /* marker_bit */ + hours = time_code >> 13; + minutes = time_code >> 7 & 0x3f; + seconds = time_code & 0x3f; + s->time_base = seconds + 60*(minutes + 60*hours); + skip_bits(gb, 20); /* time_code, closed_gov, broken_link */ + } else { + av_log(s->avctx, AV_LOG_WARNING, "GOP header missing marker_bit\n"); + } return 0; } _______________________________________________ ffmpeg-commits mailing list [email protected] https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-commits
