lavf: simplify format_child_class_next()

And fix the error introduced when adding private option to avio.
See 32caa7b13c
This commit is contained in:
Luca Barbato 2011-11-14 12:24:21 +01:00
parent ac3dbb4d58
commit caf27e37b6
1 changed files with 17 additions and 14 deletions

View File

@ -53,26 +53,29 @@ static const AVClass *format_child_class_next(const AVClass *prev)
AVInputFormat *ifmt = NULL;
AVOutputFormat *ofmt = NULL;
while (prev && (ifmt = av_iformat_next(ifmt)))
if (!prev)
#if !FF_API_OLD_AVIO
return &ffio_url_class;
#else
prev = (void *)&ifmt; // Dummy pointer;
#endif
while ((ifmt = av_iformat_next(ifmt)))
if (ifmt->priv_class == prev)
break;
if ((prev && ifmt) || (!prev))
if (!ifmt)
while ((ofmt = av_oformat_next(ofmt)))
if (ofmt->priv_class == prev)
break;
if (!ofmt)
while (ifmt = av_iformat_next(ifmt))
if (ifmt->priv_class)
return ifmt->priv_class;
while (prev && (ofmt = av_oformat_next(ofmt)))
if (ofmt->priv_class == prev)
break;
if ((prev && ofmt) || (!prev))
while (ofmt = av_oformat_next(ofmt))
if (ofmt->priv_class)
return ofmt->priv_class;
#if !FF_API_OLD_AVIO
if (prev != &ffio_url_class)
return &ffio_url_class;
#endif
while (ofmt = av_oformat_next(ofmt))
if (ofmt->priv_class)
return ofmt->priv_class;
return NULL;
}