On Sun, Sep 28, 2014 at 10:15:51AM +0200, wm4 wrote: > On Sun, 21 Sep 2014 10:17:16 +0100 > Reimar Döffinger <reimar.doeffin...@gmx.de> wrote: > > diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c > > index 3434341..c04e156 100644 > > --- a/libavformat/mpegts.c > > +++ b/libavformat/mpegts.c > > @@ -2659,6 +2659,12 @@ void ff_mpegts_parse_close(MpegTSContext *ts) > > av_free(ts); > > } > > > > +static int mpegts_read_seek(AVFormatContext *s, int stream_index, > > + int64_t ts, int flags) > > +{ > > + return avio_seek_time(s->pb, stream_index, ts, flags); > > +} > > + > > AVInputFormat ff_mpegts_demuxer = { > > .name = "mpegts", > > .long_name = NULL_IF_CONFIG_SMALL("MPEG-TS (MPEG-2 Transport > > Stream)"), > > @@ -2668,6 +2674,7 @@ AVInputFormat ff_mpegts_demuxer = { > > .read_packet = mpegts_read_packet, > > .read_close = mpegts_read_close, > > .read_timestamp = mpegts_get_dts, > > + .read_seek = mpegts_read_seek, > > .flags = AVFMT_SHOW_IDS | AVFMT_TS_DISCONT, > > .priv_class = &mpegts_class, > > }; > > @@ -2680,6 +2687,7 @@ AVInputFormat ff_mpegtsraw_demuxer = { > > .read_packet = mpegts_raw_read_packet, > > .read_close = mpegts_read_close, > > .read_timestamp = mpegts_get_dts, > > + .read_seek = mpegts_read_seek, > > .flags = AVFMT_SHOW_IDS | AVFMT_TS_DISCONT, > > .priv_class = &mpegtsraw_class, > > }; > > IMO this is not a good idea. Seeking should seek the stream to a > timestamp; but the demuxer will output mismatching timestamps with a > different offset!
Oh well. This is actually what makes it not work in MPlayer. Plus I think it's a bug that MPlayer ends up calling the demuxer seek code in the first place. So thanks for making me think once more. I still think all this is a mess that needs to be improved on _FFmpeg_ side, but I am not quite sure how anymore. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel