[FFmpeg-devel] [PATCH] avformat/matroskadec: Fix cluster parsing loop which gathers seek information

Rodger Combs rodger.combs at gmail.com
Wed Oct 22 13:09:10 CEST 2014


> On Oct 21, 2014, at 21:38, Michael Niedermayer <michaelni at gmx.at> wrote:
> 
> Fixes Ticket2263
> Fixes Ticket3934
> 
> Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> ---
> libavformat/matroskadec.c |    4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
> index b742319..2ef3222 100644
> --- a/libavformat/matroskadec.c
> +++ b/libavformat/matroskadec.c
> @@ -2921,11 +2921,11 @@ static int matroska_read_seek(AVFormatContext *s, int stream_index,
>         goto err;
>     timestamp = FFMAX(timestamp, st->index_entries[0].timestamp);
> 
> -    if ((index = av_index_search_timestamp(st, timestamp, flags)) < 0) {
> +    if ((index = av_index_search_timestamp(st, timestamp, flags)) < 0 || index == st->nb_index_entries - 1) {
>         avio_seek(s->pb, st->index_entries[st->nb_index_entries - 1].pos,
>                   SEEK_SET);
>         matroska->current_id = 0;
> -        while ((index = av_index_search_timestamp(st, timestamp, flags)) < 0) {
> +        while ((index = av_index_search_timestamp(st, timestamp, flags)) < 0 || index == st->nb_index_entries - 1) {
>             matroska_clear_queue(matroska);
>             if (matroska_parse_cluster(matroska) < 0)
>                 break;
> -- 
> 1.7.9.5
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Looks good to me, and does fix the problem for my files.


More information about the ffmpeg-devel mailing list