Commit 1e791ee3 authored by Paul B Mahol's avatar Paul B Mahol Committed by Vittorio Giovara

segafilm: set video and audio stream duration

Signed-off-by: 's avatarVittorio Giovara <vittorio.giovara@gmail.com>
parent c012c6f1
...@@ -89,6 +89,7 @@ static int film_read_header(AVFormatContext *s) ...@@ -89,6 +89,7 @@ static int film_read_header(AVFormatContext *s)
int i, ret; int i, ret;
unsigned int data_offset; unsigned int data_offset;
unsigned int audio_frame_counter; unsigned int audio_frame_counter;
unsigned int video_frame_counter;
film->sample_table = NULL; film->sample_table = NULL;
...@@ -212,7 +213,7 @@ static int film_read_header(AVFormatContext *s) ...@@ -212,7 +213,7 @@ static int film_read_header(AVFormatContext *s)
avpriv_set_pts_info(st, 64, 1, film->audio_samplerate); 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++) { for (i = 0; i < film->sample_count; i++) {
/* load the next sample record and transfer it to an internal struct */ /* load the next sample record and transfer it to an internal struct */
if (avio_read(pb, scratch, 16) != 16) { if (avio_read(pb, scratch, 16) != 16) {
...@@ -240,6 +241,7 @@ static int film_read_header(AVFormatContext *s) ...@@ -240,6 +241,7 @@ static int film_read_header(AVFormatContext *s)
film->sample_table[i].stream = film->video_stream_index; film->sample_table[i].stream = film->video_stream_index;
film->sample_table[i].pts = AV_RB32(&scratch[8]) & 0x7FFFFFFF; film->sample_table[i].pts = AV_RB32(&scratch[8]) & 0x7FFFFFFF;
film->sample_table[i].keyframe = (scratch[8] & 0x80) ? 0 : 1; film->sample_table[i].keyframe = (scratch[8] & 0x80) ? 0 : 1;
video_frame_counter++;
av_add_index_entry(s->streams[film->video_stream_index], av_add_index_entry(s->streams[film->video_stream_index],
film->sample_table[i].sample_offset, film->sample_table[i].sample_offset,
film->sample_table[i].pts, film->sample_table[i].pts,
...@@ -248,6 +250,12 @@ static int film_read_header(AVFormatContext *s) ...@@ -248,6 +250,12 @@ 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; film->current_sample = 0;
return 0; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment