|
|
@ -2508,10 +2508,11 @@ static int matroska_read_seek(AVFormatContext *s, int stream_index, |
|
|
|
if (tracks[i].type == MATROSKA_TRACK_TYPE_SUBTITLE |
|
|
|
if (tracks[i].type == MATROSKA_TRACK_TYPE_SUBTITLE |
|
|
|
&& tracks[i].stream->discard != AVDISCARD_ALL) { |
|
|
|
&& tracks[i].stream->discard != AVDISCARD_ALL) { |
|
|
|
index_sub = av_index_search_timestamp(tracks[i].stream, st->index_entries[index].timestamp, AVSEEK_FLAG_BACKWARD); |
|
|
|
index_sub = av_index_search_timestamp(tracks[i].stream, st->index_entries[index].timestamp, AVSEEK_FLAG_BACKWARD); |
|
|
|
if (index_sub >= 0 |
|
|
|
while(index_sub >= 0 |
|
|
|
&& st->index_entries[index_sub].pos < st->index_entries[index_min].pos |
|
|
|
&& index_min >= 0 |
|
|
|
&& st->index_entries[index].timestamp - st->index_entries[index_sub].timestamp < 30000000000/matroska->time_scale) |
|
|
|
&& tracks[i].stream->index_entries[index_sub].pos < st->index_entries[index_min].pos |
|
|
|
index_min = index_sub; |
|
|
|
&& st->index_entries[index].timestamp - tracks[i].stream->index_entries[index_sub].timestamp < 30000000000/matroska->time_scale) |
|
|
|
|
|
|
|
index_min--; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|