[FFmpeg-devel] [PATCH] avformat/format: temporarily use old next api
Muhammad Faiz
mfcc64 at gmail.com
Sat Feb 10 02:47:26 EET 2018
On Sat, Feb 10, 2018 at 1:08 AM, Muhammad Faiz <mfcc64 at gmail.com> wrote:
> On Fri, Feb 9, 2018 at 7:04 PM, James Almer <jamrial at gmail.com> wrote:
>> On 2/9/2018 7:16 AM, Muhammad Faiz wrote:
>>> Should fix https://ffmpeg.org/pipermail/ffmpeg-devel/2018-February/225066.html
>>>
>>> Signed-off-by: Muhammad Faiz <mfcc64 at gmail.com>
>>> ---
>>> The actual problem is that av*next() and av*iterate() have different
>>> semantics:
>>> - av*next() iterate all formats+devices
>>> - av*iterate() iterate formats only.
>>> Is this the intended behaviour?
>>>
>>> libavformat/format.c | 13 ++++++++++++-
>>> 1 file changed, 12 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/libavformat/format.c b/libavformat/format.c
>>> index b8c5a90a92..75951938cf 100644
>>> --- a/libavformat/format.c
>>> +++ b/libavformat/format.c
>>> @@ -52,7 +52,9 @@ AVOutputFormat *av_guess_format(const char *short_name, const char *filename,
>>> const char *mime_type)
>>> {
>>> AVOutputFormat *fmt = NULL, *fmt_found;
>>> +#if !FF_API_NEXT
>>> void *i = 0;
>>> +#endif
>>> int score_max, score;
>>>
>>> /* specific test for image sequences */
>>> @@ -66,7 +68,13 @@ AVOutputFormat *av_guess_format(const char *short_name, const char *filename,
>>> /* Find the proper file type. */
>>> fmt_found = NULL;
>>> score_max = 0;
>>> - while ((fmt = av_muxer_iterate(&i))) {
>>> +#if FF_API_NEXT
>>> +FF_DISABLE_DEPRECATION_WARNINGS
>>> + while ((fmt = av_oformat_next(fmt)))
>>> +#else
>>> + while ((fmt = av_muxer_iterate(&i)))
>>> +#endif
>>> + {
>>> score = 0;
>>> if (fmt->name && short_name && av_match_name(short_name, fmt->name))
>>> score += 100;
>>> @@ -81,6 +89,9 @@ AVOutputFormat *av_guess_format(const char *short_name, const char *filename,
>>> fmt_found = fmt;
>>> }
>>> }
>>> +#if FF_API_NEXT
>>> +FF_ENABLE_DEPRECATION_WARNINGS
>>> +#endif
>>> return fmt_found;
>>> }
>>
>> Is your intention to schedule this change to happen once the deprecation
>> period ends two years from now, or were you just disabling it for a bit
>> until the new API is fixed/finalized?
>> If the latter, then please don't add the wrappers. Just replace the
>> _iterate() calls.
>
> My intention is the first. With assumption that people agree with
> current new API, and
> the different semantic between av_iformat/oformat_next (which iterate
> formats+devices)
> and av_muxer/demuxer_iterate (which iterate formats only) is intended behaviour.
>
> Thank's.
Pushed.
Thank's.
More information about the ffmpeg-devel
mailing list