Mercurial > libavformat.hg
changeset 3922:56dc585dcda4 libavformat
matroskadec: simplify, first_timecode is already in the index
no need to duplicate it
author | aurel |
---|---|
date | Fri, 12 Sep 2008 00:06:06 +0000 |
parents | 6339a1e029de |
children | 83e51bcb03c2 |
files | matroskadec.c |
diffstat | 1 files changed, 5 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/matroskadec.c Thu Sep 11 22:42:17 2008 +0000 +++ b/matroskadec.c Fri Sep 12 00:06:06 2008 +0000 @@ -139,7 +139,6 @@ EbmlList encodings; AVStream *stream; - int64_t first_timecode; int64_t end_timecode; } MatroskaTrack; @@ -1182,7 +1181,6 @@ st = track->stream = av_new_stream(s, 0); if (st == NULL) return AVERROR(ENOMEM); - track->first_timecode = AV_NOPTS_VALUE; if (!strcmp(track->codec_id, "V_MS/VFW/FOURCC") && track->codec_priv.size >= 40 @@ -1468,11 +1466,8 @@ if (track->type == MATROSKA_TRACK_TYPE_SUBTITLE && timecode < track->end_timecode) is_keyframe = 0; /* overlapping subtitles are not key frame */ - if (is_keyframe) { + if (is_keyframe) av_add_index_entry(st, cluster_pos, timecode, 0,0,AVINDEX_KEYFRAME); - if (track->first_timecode == AV_NOPTS_VALUE) - track->first_timecode = timecode; - } track->end_timecode = FFMAX(track->end_timecode, timecode+duration); } @@ -1697,19 +1692,13 @@ MatroskaTrack *tracks = matroska->tracks.elem; AVStream *st = s->streams[stream_index]; int i, index, index_sub, index_min; - int64_t first_timecode = 0; - for (i=0; i < matroska->tracks.nb_elem; i++) - if (tracks[i].stream->index == stream_index && - tracks[i].first_timecode != AV_NOPTS_VALUE) - first_timecode = tracks[i].first_timecode; - - if (timestamp < first_timecode) - timestamp = first_timecode; + if (!st->nb_index_entries) + return 0; + timestamp = FFMAX(timestamp, st->index_entries[0].timestamp); if ((index = av_index_search_timestamp(st, timestamp, flags)) < 0) { - if (st->nb_index_entries) - url_fseek(s->pb, st->index_entries[st->nb_index_entries-1].pos, SEEK_SET); + url_fseek(s->pb, st->index_entries[st->nb_index_entries-1].pos, SEEK_SET); while ((index = av_index_search_timestamp(st, timestamp, flags)) < 0) { matroska_clear_queue(matroska); if (matroska_parse_cluster(matroska) < 0)