diff options
author | Paul B Mahol <onemda@gmail.com> | 2015-10-30 12:09:48 +0100 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2015-11-02 10:53:06 +0100 |
commit | 85a5cdb4fa74193a72585881b255c07528f8f217 (patch) | |
tree | b609d91c3dc75285d7cf34e9ac89ed7ad6bb08e1 /libavformat/segafilm.c | |
parent | 0cb09b0511f438f4e3a6859f9d537f123fa1ae64 (diff) | |
download | ffmpeg-85a5cdb4fa74193a72585881b255c07528f8f217.tar.gz |
avformat/segafilm: set video stream duration
Signed-off-by: Paul B Mahol <onemda@gmail.com>
Diffstat (limited to 'libavformat/segafilm.c')
-rw-r--r-- | libavformat/segafilm.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/libavformat/segafilm.c b/libavformat/segafilm.c index 9c346e6b60..6aef48eba9 100644 --- a/libavformat/segafilm.c +++ b/libavformat/segafilm.c @@ -93,6 +93,7 @@ static int film_read_header(AVFormatContext *s) int i, ret; unsigned int data_offset; unsigned int audio_frame_counter; + unsigned int video_frame_counter; film->sample_table = NULL; @@ -211,7 +212,7 @@ static int film_read_header(AVFormatContext *s) avpriv_set_pts_info(st, 64, 1, film->audio_samplerate); } - audio_frame_counter = 0; + audio_frame_counter = video_frame_counter = 0; for (i = 0; i < film->sample_count; i++) { /* load the next sample record and transfer it to an internal struct */ if (avio_read(pb, scratch, 16) != 16) { @@ -239,6 +240,7 @@ static int film_read_header(AVFormatContext *s) film->sample_table[i].stream = film->video_stream_index; film->sample_table[i].pts = AV_RB32(&scratch[8]) & 0x7FFFFFFF; film->sample_table[i].keyframe = (scratch[8] & 0x80) ? 0 : 1; + video_frame_counter++; av_add_index_entry(s->streams[film->video_stream_index], film->sample_table[i].sample_offset, film->sample_table[i].pts, @@ -250,6 +252,9 @@ static int film_read_header(AVFormatContext *s) if (film->audio_type) s->streams[film->audio_stream_index]->duration = audio_frame_counter; + if (film->video_type) + s->streams[film->video_stream_index]->duration = video_frame_counter; + film->current_sample = 0; return 0; |