avformat/options: use the iterate API in format_child_class_next()

Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
James Almer 2020-10-09 23:52:28 -03:00
parent ac36080b2d
commit bddf53841a

View File

@ -55,35 +55,38 @@ static void *format_child_next(void *obj, void *prev)
} }
#if FF_API_CHILD_CLASS_NEXT #if FF_API_CHILD_CLASS_NEXT
FF_DISABLE_DEPRECATION_WARNINGS
static const AVClass *format_child_class_next(const AVClass *prev) static const AVClass *format_child_class_next(const AVClass *prev)
{ {
AVInputFormat *ifmt = NULL; const AVInputFormat *ifmt = NULL;
AVOutputFormat *ofmt = NULL; const AVOutputFormat *ofmt = NULL;
void *ifmt_iter = NULL, *ofmt_iter = NULL;
if (!prev) if (!prev)
return &ff_avio_class; return &ff_avio_class;
while ((ifmt = av_iformat_next(ifmt))) while ((ifmt = av_demuxer_iterate(&ifmt_iter)))
if (ifmt->priv_class == prev) if (ifmt->priv_class == prev)
break; break;
if (!ifmt) if (!ifmt) {
while ((ofmt = av_oformat_next(ofmt))) ifmt_iter = NULL;
while ((ofmt = av_muxer_iterate(&ofmt_iter)))
if (ofmt->priv_class == prev) if (ofmt->priv_class == prev)
break; break;
if (!ofmt) }
while (ifmt = av_iformat_next(ifmt)) if (!ofmt) {
ofmt_iter = NULL;
while ((ifmt = av_demuxer_iterate(&ifmt_iter)))
if (ifmt->priv_class) if (ifmt->priv_class)
return ifmt->priv_class; return ifmt->priv_class;
}
while (ofmt = av_oformat_next(ofmt)) while ((ofmt = av_muxer_iterate(&ofmt_iter)))
if (ofmt->priv_class) if (ofmt->priv_class)
return ofmt->priv_class; return ofmt->priv_class;
return NULL; return NULL;
} }
FF_ENABLE_DEPRECATION_WARNINGS
#endif #endif
enum { enum {