[FFmpeg-devel] [PATCH 4/5] avformat/utils: Also set io_repositioned for generic seeking
James Almer
jamrial at gmail.com
Sun Aug 22 17:23:14 EEST 2021
On 8/22/2021 8:29 AM, Andreas Rheinhardt wrote:
> It allows demuxers to perform certain tasks after
> a successful generic seek.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> ---
> This io_repositioned and the flags which contain which type of seeking
> a format supports are IMO implementation details that are only public
> because up until recently there were no internal flags.
io_repositioned could be made internal, yeah. It's apparently meant to
be used by demuxers, not callers.
>
> libavformat/utils.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/libavformat/utils.c b/libavformat/utils.c
> index 5754fc1537..39f082d98d 100644
> --- a/libavformat/utils.c
> +++ b/libavformat/utils.c
> @@ -2354,10 +2354,12 @@ static int seek_frame_generic(AVFormatContext *s, int stream_index,
> ie = &st->internal->index_entries[st->internal->nb_index_entries - 1];
> if ((ret = avio_seek(s->pb, ie->pos, SEEK_SET)) < 0)
> return ret;
> + s->io_repositioned = 1;
> avpriv_update_cur_dts(s, st, ie->timestamp);
> } else {
> if ((ret = avio_seek(s->pb, s->internal->data_offset, SEEK_SET)) < 0)
> return ret;
> + s->io_repositioned = 1;
> }
> av_packet_unref(pkt);
> for (;;) {
> @@ -2392,6 +2394,7 @@ static int seek_frame_generic(AVFormatContext *s, int stream_index,
> ie = &st->internal->index_entries[index];
> if ((ret = avio_seek(s->pb, ie->pos, SEEK_SET)) < 0)
> return ret;
> + s->io_repositioned = 1;
> avpriv_update_cur_dts(s, st, ie->timestamp);
>
> return 0;
>
Should be ok.
More information about the ffmpeg-devel
mailing list