diff mbox series

[FFmpeg-devel,07/17] bsf: switch to child_class_iterate()

Message ID 20200528201559.22618-7-anton@khirnov.net
State Accepted
Commit c0d6eaca50ad65fb8f45b02863d31b3421899959
Headers show
Series [FFmpeg-devel,01/17] Remove unnecessary use of avcodec_close(). | expand

Checks

Context Check Description
andriy/default pending
andriy/make success Make finished
andriy/make_fate success Make fate finished

Commit Message

Anton Khirnov May 28, 2020, 8:15 p.m. UTC
---
 libavcodec/bitstream_filters.c | 14 ++++++++++++++
 libavcodec/bsf.c               |  3 +++
 libavcodec/bsf_internal.h      |  4 ++++
 3 files changed, 21 insertions(+)
diff mbox series

Patch

diff --git a/libavcodec/bitstream_filters.c b/libavcodec/bitstream_filters.c
index a7aa5dca65..b26d6a910e 100644
--- a/libavcodec/bitstream_filters.c
+++ b/libavcodec/bitstream_filters.c
@@ -96,6 +96,7 @@  const AVBitStreamFilter *av_bsf_get_by_name(const char *name)
     return NULL;
 }
 
+#if FF_API_CHILD_CLASS_NEXT
 const AVClass *ff_bsf_child_class_next(const AVClass *prev)
 {
     const AVBitStreamFilter *f = NULL;
@@ -115,3 +116,16 @@  const AVClass *ff_bsf_child_class_next(const AVClass *prev)
     }
     return NULL;
 }
+#endif
+
+const AVClass *ff_bsf_child_class_iterate(void **opaque)
+{
+    const AVBitStreamFilter *f;
+
+    /* find next filter with priv options */
+    while ((f = av_bsf_iterate(opaque))) {
+        if (f->priv_class)
+            return f->priv_class;
+    }
+    return NULL;
+}
diff --git a/libavcodec/bsf.c b/libavcodec/bsf.c
index 5e1c794a76..d71bc32584 100644
--- a/libavcodec/bsf.c
+++ b/libavcodec/bsf.c
@@ -79,7 +79,10 @@  static const AVClass bsf_class = {
     .item_name        = bsf_to_name,
     .version          = LIBAVUTIL_VERSION_INT,
     .child_next       = bsf_child_next,
+#if FF_API_CHILD_CLASS_NEXT
     .child_class_next = ff_bsf_child_class_next,
+#endif
+    .child_class_iterate = ff_bsf_child_class_iterate,
     .category         = AV_CLASS_CATEGORY_BITSTREAM_FILTER,
 };
 
diff --git a/libavcodec/bsf_internal.h b/libavcodec/bsf_internal.h
index fefd5b8905..b78c134bdd 100644
--- a/libavcodec/bsf_internal.h
+++ b/libavcodec/bsf_internal.h
@@ -42,6 +42,10 @@  int ff_bsf_get_packet(AVBSFContext *ctx, AVPacket **pkt);
  */
 int ff_bsf_get_packet_ref(AVBSFContext *ctx, AVPacket *pkt);
 
+#if FF_API_CHILD_CLASS_NEXT
 const AVClass *ff_bsf_child_class_next(const AVClass *prev);
+#endif
+
+const AVClass *ff_bsf_child_class_iterate(void **opaque);
 
 #endif /* AVCODEC_BSF_INTERNAL_H */