[FFmpeg-devel] [PATCH 1/3] nutdec: fix infinite resync loops
Andreas Cadhalpun
andreas.cadhalpun at googlemail.com
Wed May 20 16:34:49 CEST 2015
On 20.05.2015 02:00, Michael Niedermayer wrote:
> On Wed, May 20, 2015 at 12:49:49AM +0200, Andreas Cadhalpun wrote:
>> nut->last_syncpoint_pos doesn't necessarily change between resync
>> attempts, so find_any_startcode can return the same startcode again.
>>
>> Thus remember where the last resync happened and don't try to resync
>> before that.
>>
>> This can't be done locally in nut_read_packet, because this wouldn't
>> prevent infinite resync loops, where after the resync a packet is
>> returned and while reading a following packet the resync happens again.
>>
>> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun at googlemail.com>
>> ---
>> libavformat/nut.h | 1 +
>> libavformat/nutdec.c | 3 ++-
>> 2 files changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/libavformat/nut.h b/libavformat/nut.h
>> index 943081c..0c678a5 100644
>> --- a/libavformat/nut.h
>> +++ b/libavformat/nut.h
>> @@ -102,6 +102,7 @@ typedef struct NUTContext {
>> unsigned int max_distance;
>> unsigned int time_base_count;
>> int64_t last_syncpoint_pos;
>> + int64_t last_resync_pos;
>
> i think this and possibly some other fields must be reset on seeking
> otherwise resync after seeking could break
Attached patch resets last_resync_pos in read_seek.
I'm not sure if last_syncpoint_pos also has to be reset or if the
syncpoint handling at the end of read_seek is already enough.
Best regards,
Andreas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-nutdec-fix-infinite-resync-loops.patch
Type: text/x-diff
Size: 2133 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150520/60b3cfcc/attachment.bin>
More information about the ffmpeg-devel
mailing list