summaryrefslogtreecommitdiff
path: root/libavformat/segafilm.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2015-10-30 12:09:48 +0100
committerPaul B Mahol <onemda@gmail.com>2015-11-02 10:53:06 +0100
commit85a5cdb4fa74193a72585881b255c07528f8f217 (patch)
treeb609d91c3dc75285d7cf34e9ac89ed7ad6bb08e1 /libavformat/segafilm.c
parent0cb09b0511f438f4e3a6859f9d537f123fa1ae64 (diff)
downloadffmpeg-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.c7
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;