[FFmpeg-devel] [PATCH 2/5] tests/api-flac-test: ensure the frame is writable before writing to it
James Almer
jamrial at gmail.com
Wed Feb 24 16:01:03 EET 2021
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.
> + if (result < 0)
> + return result;
> +
> generate_raw_frame((uint16_t*)(in_frame->data[0]), i, enc_ctx->sample_rate,
> enc_ctx->channels, enc_ctx->frame_size);
> in_frame_bytes = in_frame->nb_samples * in_frame->channels * sizeof(uint16_t);
>
More information about the ffmpeg-devel
mailing list