[FFmpeg-devel] [PATCH 2/2] lavf: fix AVStream private fields marker
wm4
nfxjfg at googlemail.com
Tue Feb 14 19:01:09 EET 2017
On Tue, 14 Feb 2017 13:50:16 -0300
James Almer <jamrial at gmail.com> wrote:
> On 2/13/2017 7:51 AM, wm4 wrote:
> > Public fields were added after the private fields (negating the entire
> > point of this). New private fields go into AVStreamInternal anyway.
> >
> > The new marker was set by guessing which fields are supposed to be
> > private and wshich not. recommended_encoder_configuration is accessed by
> > ffserver_config.c directly, and is supposed to use the public API.
> >
> > ffmpeg.c accesses AVStream.cur_dts, even though it's a private field,
> > but that seems to be an older error.
> > ---
> > libavformat/avformat.h | 10 +++++++++-
> > 1 file changed, 9 insertions(+), 1 deletion(-)
> >
> > diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> > index 64180bca9e..4c1b18e002 100644
> > --- a/libavformat/avformat.h
> > +++ b/libavformat/avformat.h
> > @@ -1005,7 +1005,9 @@ typedef struct AVStream {
> > * All fields below this line are not part of the public API. They
> > * may not be used outside of libavformat and can be changed and
> > * removed at will.
> > - * New public fields should be added right above.
> > + * Internal note: be aware that physically removing these fields
> > + * will break ABI. Replace removed fields with dummy fields, and
> > + * add new fields to AVStreamInternal.
> > *****************************************************************
> > */
> >
> > @@ -1201,6 +1203,12 @@ typedef struct AVStream {
> > */
> > int inject_global_side_data;
> >
> > + /*****************************************************************
> > + * All fields above this line are not part of the public API.
> > + * Fields below are part of the public API and ABI again.
> > + *****************************************************************
> > + */
> > +
> > /**
> > * String containing paris of key and values describing recommended encoder configuration.
> > * Paris are separated by ','.
> >
>
> This is incredibly confusing. Wouldn't it be a better idea to just wait
> until the next major bump and reorder the fields as needed?
>
> And for that matter, all the private fields are supposed to be moved to
> AVStreamInternal as well at the next bump.
The only way to fix this is a major bump. Until then, we shouldn't
document public fields like codecpar as private, because that's even
more confusing.
More information about the ffmpeg-devel
mailing list