Message ID | 20180209101603.396-1-mfcc64@gmail.com |
---|---|
State | Accepted |
Commit | 909e00ae816df9b6a05b1c4d0cafb794d4d0ca28 |
Headers | show |
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@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.
On Fri, Feb 9, 2018 at 7:04 PM, James Almer <jamrial@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@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.
On Sat, Feb 10, 2018 at 1:08 AM, Muhammad Faiz <mfcc64@gmail.com> wrote: > On Fri, Feb 9, 2018 at 7:04 PM, James Almer <jamrial@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@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.
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; }
Should fix https://ffmpeg.org/pipermail/ffmpeg-devel/2018-February/225066.html Signed-off-by: Muhammad Faiz <mfcc64@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(-)