# HG changeset patch # User pross # Date 1266923718 0 # Node ID 8a605bb5cee4caf16200967b93ea8e0e20e3e2ae # Parent 982edb9135cae9ea5c775126d05e17347713aa83 Set video stream duration for Bink demuxer diff -r 982edb9135ca -r 8a605bb5cee4 bink.c --- 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,