Hi, On Sun, Apr 8, 2018 at 6:27 PM, <mi...@brew.sh> wrote:
> From: Misty De Meo <mistyde...@gmail.com> > > --- > libavformat/segafilm.c | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/libavformat/segafilm.c b/libavformat/segafilm.c > index 4c0cca0140..e72c26b144 100644 > --- a/libavformat/segafilm.c > +++ b/libavformat/segafilm.c > @@ -270,6 +270,8 @@ static int film_read_packet(AVFormatContext *s, > FilmDemuxContext *film = s->priv_data; > AVIOContext *pb = s->pb; > film_sample *sample; > + film_sample *next_sample = NULL; > + int next_sample_id; > int ret = 0; > > if (film->current_sample >= film->sample_count) > @@ -277,6 +279,20 @@ static int film_read_packet(AVFormatContext *s, > > sample = &film->sample_table[film->current_sample]; > > + /* Find the next sample from the same stream, assuming there is one; > + * this is used to calculate the duration below */ > + next_sample_id = film->current_sample + 1; > + while (next_sample == NULL) { > + if (next_sample_id >= film->sample_count) > + break; > + > + next_sample = &film->sample_table[next_sample_id]; > + if (next_sample->stream != sample->stream) { > + next_sample = NULL; > + next_sample_id++; > + } > + } > + > /* position the stream (will probably be there anyway) */ > avio_seek(pb, sample->sample_offset, SEEK_SET); > > @@ -285,8 +301,11 @@ static int film_read_packet(AVFormatContext *s, > ret = AVERROR(EIO); > > pkt->stream_index = sample->stream; > + pkt->dts = sample->pts; > pkt->pts = sample->pts; > pkt->flags |= sample->keyframe ? AV_PKT_FLAG_KEY : 0; > + if (next_sample != NULL) > + pkt->duration = next_sample->pts - sample->pts; > > film->current_sample++; > > -- > 2.17.0 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > lgtm _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel