Mercurial > libavformat.hg
changeset 5701:8a605bb5cee4 libavformat
Set video stream duration for Bink demuxer
author | pross |
---|---|
date | Tue, 23 Feb 2010 11:15:18 +0000 |
parents | 982edb9135ca |
children | c9466f118684 |
files | bink.c |
diffstat | 1 files changed, 5 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/bink.c Tue Feb 23 11:05:36 2010 +0000 +++ b/bink.c Tue Feb 23 11:15:18 2010 +0000 @@ -44,7 +44,6 @@ typedef struct { uint32_t file_size; - uint32_t total_frames; uint32_t num_audio_tracks; int current_track; ///< audio track to return in next packet @@ -86,9 +85,9 @@ vst->codec->codec_tag = get_le32(pb); bink->file_size = get_le32(pb) + 8; - bink->total_frames = get_le32(pb); + vst->duration = get_le32(pb); - if (bink->total_frames > 1000000) { + if (vst->duration > 1000000) { av_log(s, AV_LOG_ERROR, "invalid header: more than 1000000 frames\n"); return AVERROR(EIO); } @@ -149,9 +148,9 @@ /* frame index table */ pos = get_le32(pb) & ~1; - for (i = 0; i < bink->total_frames; i++) { + for (i = 0; i < vst->duration; i++) { prev_pos = pos; - if (i == bink->total_frames - 1) { + if (i == vst->duration - 1) { pos = bink->file_size; keyframe = 0; } else { @@ -183,7 +182,7 @@ int index_entry; AVStream *st = s->streams[0]; // stream 0 is video stream with index - if (bink->video_pts >= bink->total_frames) + if (bink->video_pts >= st->duration) return AVERROR(EIO); index_entry = av_index_search_timestamp(st, bink->video_pts,