aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2020-05-27 15:34:07 +0200
committerAnton Khirnov <anton@khirnov.net>2020-06-10 12:36:44 +0200
commitc0d6eaca50ad65fb8f45b02863d31b3421899959 (patch)
treee40e0a64c81d52f62d1757e8e6fc72940f007011
parente0fbb6cf2bea2427c5b794a5a9fbd39fd0b4f888 (diff)
downloadffmpeg-c0d6eaca50ad65fb8f45b02863d31b3421899959.tar.gz
bsf: switch to child_class_iterate()
-rw-r--r--libavcodec/bitstream_filters.c14
-rw-r--r--libavcodec/bsf.c3
-rw-r--r--libavcodec/bsf_internal.h4
3 files changed, 21 insertions, 0 deletions
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 */