[FFmpeg-devel] [PATCH 2/2] avformat: add avformat_flush()

Michael Niedermayer michaelni at gmx.at
Wed Mar 4 23:16:48 CET 2015


On Wed, Oct 01, 2014 at 07:59:12AM +0200, Reimar Döffinger wrote:
> On 30.09.2014, at 22:25, wm4 <nfxjfg at googlemail.com> wrote:
> > On Tue, 30 Sep 2014 08:06:16 +0200
> > Reimar Döffinger <Reimar.Doeffinger at gmx.de> wrote:
> > 
> >> On 29.09.2014, at 22:02, Michael Niedermayer <michaelni at gmx.at> wrote:
> >>> On Mon, Sep 29, 2014 at 08:34:44PM +0200, wm4 wrote:
> >>>> On Mon, 29 Sep 2014 20:25:47 +0200
> >>>> Michael Niedermayer <michaelni at gmx.at> wrote:
> >>>> 
> >>>>> On Mon, Sep 29, 2014 at 07:41:28PM +0200, wm4 wrote:
> >>>>>> Useful for Bluray and DVD, since the libraries used to read them just
> >>>>>> change the byte stream under your feet on seeking.
> >>>>>> 
> >>>>>> Maybe there should be a AVInputFormat callback for this. But the
> >>>>>> mpeg-ps (DVD) and the mpeg-ts (Bluray) demuxers don't change much
> >>>>>> state during seeking - they just try to find a new packet with
> >>>>>> timestamps (in read_timestamp), so I haven't found a need for this
> >>>>>> yet. I don't want to add unused things.
> >>>>>> 
> >>>>>> I've also thought about adding a flush callback, and implementing
> >>>>>> them in mpeg.c and mpegts.c by just calling ff_read_frame_flush().
> >>>>>> Might be slightly better, because you can have avformat_flush() fail
> >>>>>> on formats which don't support this?
> >>>>>> 
> >>>>>> Or maybe a flag?
> >>>>>> 
> >>>>>> TODO: add entry to APIchanges, bump minor version.
> >>>>>> ---
> >>>>>> libavformat/avformat.h | 13 +++++++++++++
> >>>>>> libavformat/utils.c    |  6 ++++++
> >>>>>> 2 files changed, 19 insertions(+)
> >>>>>> 
> >>>>>> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> >>>>>> index 78054de..eaa52fa 100644
> >>>>>> --- a/libavformat/avformat.h
> >>>>>> +++ b/libavformat/avformat.h
> >>>>>> @@ -2173,6 +2173,19 @@ int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp,
> >>>>>> int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags);
> >>>>>> 
> >>>>>> /**
> >>>>>> + * Discard all internally buffered data. This can be useful when dealing with
> >>>>>> + * discontinuities in the byte stream. Generally works only with some simple
> >>>>>> + * formats.
> >>>>> 
> >>>>> id call them stream based or without a central header instead of
> >>>>> simple.
> >>>> 
> >>>> I can change that and replace "simple" with "headerless".
> >>> 
> >>> please do, headerless is more specific
> >> 
> >> Why does it require headerless?
> >> I would have expected this feature to work for e.g. Ogg as well, which clearly is not headerless.
> >> As such I'd claim headerless may be more specific, but it is also wrong.
> >> It should work for all formats that can be read without index and can resync reliably at least.
> > 
> > Do you have any concrete suggestions? I'm not sure what documentation
> > would be most appropriate.
> 

> Maybe "formats that can resync. This includes headerless formats like MPEG-TS/TS but should also work with NUT, Ogg and in a limited way AVI for example"
> Not sure that's the best way to do it either though.

Changed the text to this

Thanks

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

When you are offended at any man's fault, turn to yourself and study your
own failings. Then you will forget your anger. -- Epictetus
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150304/982df666/attachment.asc>


More information about the ffmpeg-devel mailing list