diff options
author | Josh de Kock <josh@itanimul.li> | 2018-02-02 19:25:36 +0000 |
---|---|---|
committer | Josh de Kock <josh@itanimul.li> | 2018-02-06 18:57:43 +0000 |
commit | 26d879c1cea176d4f0e0a47d4b641c86495aa0e8 (patch) | |
tree | d985a97c170e831b5d2f047c5727ca9120233d67 /libavcodec/bitstream_filters.c | |
parent | cdc78058c78dfa4966758a342acd2c1f3b282c46 (diff) | |
download | ffmpeg-26d879c1cea176d4f0e0a47d4b641c86495aa0e8.tar.gz |
lavc/bsf: make BSF iteration the same as other iterators
Diffstat (limited to 'libavcodec/bitstream_filters.c')
-rw-r--r-- | libavcodec/bitstream_filters.c | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/libavcodec/bitstream_filters.c b/libavcodec/bitstream_filters.c index 7b0cb5032a..338ef8251b 100644 --- a/libavcodec/bitstream_filters.c +++ b/libavcodec/bitstream_filters.c @@ -52,7 +52,7 @@ extern const AVBitStreamFilter ff_vp9_superframe_split_bsf; #include "libavcodec/bsf_list.c" -const AVBitStreamFilter *av_bsf_next(void **opaque) +const AVBitStreamFilter *av_bsf_iterate(void **opaque) { uintptr_t i = (uintptr_t)*opaque; const AVBitStreamFilter *f = bitstream_filters[i]; @@ -63,12 +63,18 @@ const AVBitStreamFilter *av_bsf_next(void **opaque) return f; } +#if FF_API_NEXT +const AVBitStreamFilter *av_bsf_next(void **opaque) { + return av_bsf_iterate(opaque); +} +#endif + const AVBitStreamFilter *av_bsf_get_by_name(const char *name) { - int i; + const AVBitStreamFilter *f = NULL; + void *i = 0; - for (i = 0; bitstream_filters[i]; i++) { - const AVBitStreamFilter *f = bitstream_filters[i]; + while ((f = av_bsf_iterate(&i))) { if (!strcmp(f->name, name)) return f; } @@ -78,19 +84,20 @@ const AVBitStreamFilter *av_bsf_get_by_name(const char *name) const AVClass *ff_bsf_child_class_next(const AVClass *prev) { - int i; + const AVBitStreamFilter *f = NULL; + void *i = 0; /* find the filter that corresponds to prev */ - for (i = 0; prev && bitstream_filters[i]; i++) { - if (bitstream_filters[i]->priv_class == prev) { - i++; + while (prev && (f = av_bsf_iterate(&i))) { + if (f->priv_class == prev) { break; } } /* find next filter with priv options */ - for (; bitstream_filters[i]; i++) - if (bitstream_filters[i]->priv_class) - return bitstream_filters[i]->priv_class; + while ((f = av_bsf_iterate(&i))) { + if (f->priv_class) + return f->priv_class; + } return NULL; } |