This will be used to propagate global side data through the filterchain.

Signed-off-by: James Almer <jamr...@gmail.com>
---
 libavfilter/buffersink.c | 21 +++++++++++++++++++++
 libavfilter/buffersink.h |  5 +++++
 2 files changed, 26 insertions(+)

diff --git a/libavfilter/buffersink.c b/libavfilter/buffersink.c
index 565d084ddf..2ac7950b9b 100644
--- a/libavfilter/buffersink.c
+++ b/libavfilter/buffersink.c
@@ -364,6 +364,27 @@ int av_buffersink_get_ch_layout(const AVFilterContext 
*ctx, AVChannelLayout *out
     return 0;
 }
 
+int av_buffersink_get_side_data(const AVFilterContext *ctx,
+                                AVFrameSideData ***side_data,
+                                int *nb_side_data)
+{
+    AVFrameSideData **sd = NULL;
+    int nb_sd = 0;
+    av_assert0(ctx->filter->activate == activate);
+
+    for (int i = 0; i < ctx->inputs[0]->nb_side_data; i++) {
+        int ret = av_frame_side_data_clone(&sd, &nb_sd,
+                                           ctx->inputs[0]->side_data[i], 0);
+        if (ret < 0) {
+            av_frame_side_data_free(&sd, &nb_sd);
+            return ret;
+        }
+    }
+    *side_data = sd;
+    *nb_side_data = nb_sd;
+    return 0;
+}
+
 #if FF_API_BUFFERSINK_OPTS
 #define NB_ITEMS(list) (list ## _size / sizeof(*list))
 #endif
diff --git a/libavfilter/buffersink.h b/libavfilter/buffersink.h
index 08cb6b3804..79e994e112 100644
--- a/libavfilter/buffersink.h
+++ b/libavfilter/buffersink.h
@@ -48,6 +48,7 @@
  * - av_buffersink_get_channels(),
  * - av_buffersink_get_ch_layout(),
  * - av_buffersink_get_sample_rate().
+ * - av_buffersink_get_side_data().
  *
  * The layout returned by av_buffersink_get_ch_layout() must de uninitialized
  * by the caller.
@@ -122,6 +123,10 @@ int              av_buffersink_get_sample_rate         
(const AVFilterContext *c
 
 AVBufferRef *    av_buffersink_get_hw_frames_ctx       (const AVFilterContext 
*ctx);
 
+int              av_buffersink_get_side_data           (const AVFilterContext 
*ctx,
+                                                        AVFrameSideData 
***side_data,
+                                                        int *nb_side_data);
+
 /** @} */
 
 /**
-- 
2.47.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to