[FFmpeg-devel] Re: [PATCH 01/48] avcodec/packet: deprecate av_init_packet()
Anton Khirnov
anton at khirnov.net
Sun Mar 21 16:16:47 EET 2021
Quoting James Almer (2021-03-21 14:54:22)
> On 3/21/2021 9:28 AM, Anton Khirnov wrote:
> > Quoting James Almer (2021-03-05 17:32:52)
> >> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> >> index 7da2f3d98e..783cc1b591 100644
> >> --- a/libavformat/avformat.h
> >> +++ b/libavformat/avformat.h
> >> @@ -954,7 +954,11 @@ typedef struct AVStream {
> >> * decoding: set by libavformat, must not be modified by the caller.
> >> * encoding: unused
> >> */
> >> +#if FF_API_INIT_PACKET
> >> AVPacket attached_pic;
> >> +#else
> >> + AVPacket *attached_pic;
> >> +#endif
> >
> > Sorry I'm late to the party, but as we are changing the type of an
> > existing field, we need to explicitly spell out a way for the callers to
> > make their code forward compatible. E.g. similarly to what I made for
> > thread_safe_callbacks deprecation.
>
> What do you suggest? The field is not printing deprecation warnings, so
> would a doxy comment be enough for people to notice it?
> Have we done a similar change before? I know at least for symbols like
> public functions we never change their signature in an incompatible way,
> and instead replace them altogether.
>
> Maybe we could add the deprecated attribute to attached_pic, introduce a
> temporary getter function that returns a pointer to the packet, mention
> in the doxy that the field is not going away, is just changing types,
> and they have the option of using the getter for a fire-and-forget
> migration process, then maybe deprecate and eventually remove the getter
> after the switch is done.
This seems like a lot of hoops to jump through. Wouldn't it then be
better to just add a new field with a new name?
--
Anton Khirnov
More information about the ffmpeg-devel
mailing list