[FFmpeg-devel] [PATCH] Fix empty G-VOP header decoding in MPEG-4
Måns Rullgård
mans
Sun Feb 13 13:44:33 CET 2011
Anatoly Nenashev <nenashev_as at mail.ru> writes:
>> From: Anatoly Nenashev<anatoly.nenashev at ovsoft.ru>
>> Date: Thu, 10 Feb 2011 16:09:48 +0000
>> Subject: [PATCH] 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<mans at mansr.com>
>> ---
>> libavcodec/mpeg4videodec.c | 18 +++++++++---------
>> 1 files changed, 9 insertions(+), 9 deletions(-)
>>
>> diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c
>> index 673c4e8..ad38df7 100644
>> --- a/libavcodec/mpeg4videodec.c
>> +++ b/libavcodec/mpeg4videodec.c
>> @@ -1494,16 +1494,16 @@ end:
>>
>> static int mpeg4_decode_gop_header(MpegEncContext * s, GetBitContext *gb){
>> int hours, minutes, seconds;
>> + unsigned time_code = show_bits(gb, 18);
>>
>> - 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);
>> + 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);
>> + } else {
>> + av_log(s->avctx, AV_LOG_WARNING, "GOP header missing marker_bit\n");
>> + }
>>
>> return 0;
>> }
>>
>
> This patch looks better than mine, thus it would be great to commit
> it. But I don't know has my opinion any matter due to new policy of
> review which I don't clearly understand.
You can obviously confirm whether it fixes your problem. I tested it on
your sample, but another test run can never hurt. If you do that, I
will push it. It's had enough review.
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list