diff mbox series

[FFmpeg-devel,v2,02/12] avutil/frame: split side data list wiping out to non-AVFrame function

Message ID 20230411212052.159889-3-jeebjp@gmail.com
State New
Headers show
Series encoder AVCodecContext configuration side data | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Jan Ekström April 11, 2023, 9:20 p.m. UTC
---
 libavutil/frame.c | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

Comments

Anton Khirnov April 12, 2023, 8:21 a.m. UTC | #1
Quoting Jan Ekström (2023-04-11 23:20:42)
> ---
>  libavutil/frame.c | 20 ++++++++++++--------
>  1 file changed, 12 insertions(+), 8 deletions(-)
> 
> diff --git a/libavutil/frame.c b/libavutil/frame.c
> index c905e8d611..019613e4d2 100644
> --- a/libavutil/frame.c
> +++ b/libavutil/frame.c
> @@ -76,14 +76,18 @@ static void free_side_data(AVFrameSideData **ptr_sd)
>      av_freep(ptr_sd);
>  }
>  
> -static void wipe_side_data(AVFrame *frame)
> +static void wipe_side_data(AVFrameSideData ***sd, int *nb_side_data)
>  {
> -    for (int i = 0; i < frame->nb_side_data; i++) {
> -        free_side_data(&frame->side_data[i]);
> +    for (int i = 0; i < *nb_side_data; i++) {
> +        free_side_data(&((*sd)[i]));
>      }
> -    frame->nb_side_data = 0;
> +    *nb_side_data = 0;
> +
> +    av_freep(sd);
> +}
>  
> -    av_freep(&frame->side_data);
> +static void wipe_side_data_from_frame(AVFrame *frame) {

Wrong brace placement.

Also, I _much_ prefer consistent big-endian naming - in this case
something like frame_side_data_wipe()

The commit message should also mention it will be useful in future
commits, as this change by itself is not an improvement.
diff mbox series

Patch

diff --git a/libavutil/frame.c b/libavutil/frame.c
index c905e8d611..019613e4d2 100644
--- a/libavutil/frame.c
+++ b/libavutil/frame.c
@@ -76,14 +76,18 @@  static void free_side_data(AVFrameSideData **ptr_sd)
     av_freep(ptr_sd);
 }
 
-static void wipe_side_data(AVFrame *frame)
+static void wipe_side_data(AVFrameSideData ***sd, int *nb_side_data)
 {
-    for (int i = 0; i < frame->nb_side_data; i++) {
-        free_side_data(&frame->side_data[i]);
+    for (int i = 0; i < *nb_side_data; i++) {
+        free_side_data(&((*sd)[i]));
     }
-    frame->nb_side_data = 0;
+    *nb_side_data = 0;
+
+    av_freep(sd);
+}
 
-    av_freep(&frame->side_data);
+static void wipe_side_data_from_frame(AVFrame *frame) {
+    wipe_side_data(&frame->side_data, &frame->nb_side_data);
 }
 
 AVFrame *av_frame_alloc(void)
@@ -326,7 +330,7 @@  FF_ENABLE_DEPRECATION_WARNINGS
             sd_dst = av_frame_new_side_data(dst, sd_src->type,
                                             sd_src->size);
             if (!sd_dst) {
-                wipe_side_data(dst);
+                wipe_side_data_from_frame(dst);
                 return AVERROR(ENOMEM);
             }
             memcpy(sd_dst->data, sd_src->data, sd_src->size);
@@ -335,7 +339,7 @@  FF_ENABLE_DEPRECATION_WARNINGS
             sd_dst = av_frame_new_side_data_from_buf(dst, sd_src->type, ref);
             if (!sd_dst) {
                 av_buffer_unref(&ref);
-                wipe_side_data(dst);
+                wipe_side_data_from_frame(dst);
                 return AVERROR(ENOMEM);
             }
         }
@@ -486,7 +490,7 @@  void av_frame_unref(AVFrame *frame)
     if (!frame)
         return;
 
-    wipe_side_data(frame);
+    wipe_side_data_from_frame(frame);
 
     for (int i = 0; i < FF_ARRAY_ELEMS(frame->buf); i++)
         av_buffer_unref(&frame->buf[i]);