[FFmpeg-devel] [PATCH 1/7 v4] avutil/frame: add a flag to allow overwritting existing entries
Anton Khirnov
anton at khirnov.net
Thu Mar 28 14:21:24 EET 2024
Quoting James Almer (2024-03-28 12:41:40)
> On 3/28/2024 8:23 AM, Anton Khirnov wrote:
> > Quoting James Almer (2024-03-28 04:12:04)
> >> Enable it only for side data types that don't allow more than one entry.
> >>
> >> Signed-off-by: James Almer <jamrial at gmail.com>
> >> ---
> >> libavutil/frame.c | 59 ++++++++++++++++++++++++++++---
> >> libavutil/frame.h | 27 +++++++++-----
> >> libavutil/tests/side_data_array.c | 52 +++++++++++++++------------
> >> tests/ref/fate/side_data_array | 22 ++++++------
> >> 4 files changed, 115 insertions(+), 45 deletions(-)
> >>
> >> diff --git a/libavutil/frame.c b/libavutil/frame.c
> >> index ef1613c344..d9bd19b2aa 100644
> >> --- a/libavutil/frame.c
> >> +++ b/libavutil/frame.c
> >> @@ -799,12 +799,34 @@ AVFrameSideData *av_frame_side_data_new(AVFrameSideData ***sd, int *nb_sd,
> >> enum AVFrameSideDataType type,
> >> size_t size, unsigned int flags)
> >> {
> >> - AVBufferRef *buf = av_buffer_alloc(size);
> >> + const AVSideDataDescriptor *desc = av_frame_side_data_desc(type);
> >> + AVBufferRef *buf;
> >> AVFrameSideData *ret = NULL;
> >>
> >> if (flags & AV_FRAME_SIDE_DATA_FLAG_UNIQUE)
> >> remove_side_data(sd, nb_sd, type);
> >> + if (!desc || !(desc->props & AV_SIDE_DATA_PROP_MULTI)) {
> >
> > desc == NULL means type is invalid
>
> This being a generic alloc function, it should IMO not be limited to
> currently defined types. And I chose to treat them as non multi, as
> that's the most common scenario.
Andreas argued in the thread adding descriptors that side data type
without a descriptor is invalid and should explode. I tend to agree.
--
Anton Khirnov
More information about the ffmpeg-devel
mailing list