[FFmpeg-devel] [PATCH] avformat/format: temporarily use old next api

James Almer jamrial at gmail.com
Fri Feb 9 14:04:22 EET 2018


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.


More information about the ffmpeg-devel mailing list