[FFmpeg-devel] [PATCH 2/5] tests/api-flac-test: ensure the frame is writable before writing to it

Anton Khirnov anton at khirnov.net
Mon Mar 1 15:43:51 EET 2021


Quoting James Almer (2021-02-24 15:01:03)
> On 2/24/2021 7:03 AM, Anton Khirnov wrote:
> > The encoder may keep a reference to frames that were sent to it, so the
> > caller cannot modify them without checking first.
> > ---
> >   tests/api/api-flac-test.c | 4 ++++
> >   1 file changed, 4 insertions(+)
> > 
> > diff --git a/tests/api/api-flac-test.c b/tests/api/api-flac-test.c
> > index 3fea3258f3..7c96a4d99e 100644
> > --- a/tests/api/api-flac-test.c
> > +++ b/tests/api/api-flac-test.c
> > @@ -154,6 +154,10 @@ static int run_test(AVCodec *enc, AVCodec *dec, AVCodecContext *enc_ctx,
> >           enc_pkt.data = NULL;
> >           enc_pkt.size = 0;
> >   
> > +        result = av_frame_make_writable(in_frame);
> 
> This is going to make a copy of the existing frame data, only for the 
> code below to completely replace it. It will also make copies (not 
> references) of side data, if any.
> Maybe instead unref it, set nb_samples, format and channel_layout again, 
> then call av_frame_get_buffer() (Factoring the existing relevant code 
> into its own function).
> 
> LGTM either way.

Watches pelcome. I'd rather not spend more effort on this code than
strictly necessary.

-- 
Anton Khirnov


More information about the ffmpeg-devel mailing list