From: Paul B Mahol Date: Thu, 5 Nov 2015 11:04:52 +0000 (+0100) Subject: segafilm: set video and audio stream duration X-Git-Tag: android-x86-7.1-r1~252^2~1815 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=1e791ee3aae63122afb10cbabe86a747aea58992;p=android-x86%2Fexternal-ffmpeg.git segafilm: set video and audio stream duration Signed-off-by: Vittorio Giovara --- diff --git a/libavformat/segafilm.c b/libavformat/segafilm.c index e9d86c18d8..bbbf7017ee 100644 --- a/libavformat/segafilm.c +++ b/libavformat/segafilm.c @@ -89,6 +89,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; @@ -212,7 +213,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) { @@ -240,6 +241,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, @@ -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; return 0;