diff mbox series

[FFmpeg-devel,v3,2/2] avformat: deprecated av_get_frame_filename() and av_get_frame_filename2()

Message ID 20240923101931.790-2-shoutplenty@gmail.com
State New
Headers show
Series [FFmpeg-devel,v3,1/2] avformat/utils: added av_get_frame_filename3() (changed parameter int -> int64_t) | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Filip Mašić Sept. 23, 2024, 10:18 a.m. UTC
---
 doc/APIchanges              |  3 ++-
 libavfilter/vf_signature.c  |  4 ++--
 libavformat/avformat.h      | 22 ++++++++++++++++++----
 libavformat/img2dec.c       | 10 +++++-----
 libavformat/segment.c       |  4 ++--
 libavformat/utils.c         |  2 +-
 libavformat/version_major.h |  2 +-
 libavformat/webm_chunk.c    |  4 ++--
 8 files changed, 33 insertions(+), 18 deletions(-)

Comments

Zhao Zhili Sept. 23, 2024, 12:18 p.m. UTC | #1
> On Sep 23, 2024, at 18:18, Filip Mašić <shoutplenty@gmail.com> wrote:
> 
> ---
> doc/APIchanges              |  3 ++-
> libavfilter/vf_signature.c  |  4 ++--
> libavformat/avformat.h      | 22 ++++++++++++++++++----
> libavformat/img2dec.c       | 10 +++++-----
> libavformat/segment.c       |  4 ++--
> libavformat/utils.c         |  2 +-
> libavformat/version_major.h |  2 +-
> libavformat/webm_chunk.c    |  4 ++--
> 8 files changed, 33 insertions(+), 18 deletions(-)

The doc of av_get_frame_filename2 says explicitly `number` is `frame number`,
I prefer fix img2enc.c over add another API:

https://ffmpeg.org//pipermail/ffmpeg-devel/2024-September/333820.html

> 
> diff --git a/doc/APIchanges b/doc/APIchanges
> index 9f091f5ec5..cbab71a408 100644
> --- a/doc/APIchanges
> +++ b/doc/APIchanges
> @@ -3,7 +3,8 @@ The last version increases of all libraries were on 2024-03-07
> API changes, most recent first:
> 
> 2024-09-xx - xxxxxxxxxx - lavf 61.7.100 - avformat.h
> -  Add av_get_frame_filename3()
> +  Deprecate av_get_frame_filename(), av_get_frame_filename2(),
> +  and replace them with av_get_frame_filename3().
> 
> 2024-09-18 - xxxxxxxxxx - lavc 61.17.100 - packet.h
>   Add AV_PKT_DATA_LCEVC.
> diff --git a/libavfilter/vf_signature.c b/libavfilter/vf_signature.c
> index f419522ac6..37f3ff227e 100644
> --- a/libavfilter/vf_signature.c
> +++ b/libavfilter/vf_signature.c
> @@ -562,7 +562,7 @@ static int export(AVFilterContext *ctx, StreamContext *sc, int input)
> 
>     if (sic->nb_inputs > 1) {
>         /* error already handled */
> -        av_assert0(av_get_frame_filename(filename, sizeof(filename), sic->filename, input) == 0);
> +        av_assert0(av_get_frame_filename3(filename, sizeof(filename), sic->filename, input, 0) == 0);
>     } else {
>         if (av_strlcpy(filename, sic->filename, sizeof(filename)) >= sizeof(filename))
>             return AVERROR(EINVAL);
> @@ -673,7 +673,7 @@ static av_cold int init(AVFilterContext *ctx)
>     }
> 
>     /* check filename */
> -    if (sic->nb_inputs > 1 && strlen(sic->filename) > 0 && av_get_frame_filename(tmp, sizeof(tmp), sic->filename, 0) == -1) {
> +    if (sic->nb_inputs > 1 && strlen(sic->filename) > 0 && av_get_frame_filename3(tmp, sizeof(tmp), sic->filename, 0, 0) == -1) {
>         av_log(ctx, AV_LOG_ERROR, "The filename must contain %%d or %%0nd, if you have more than one input.\n");
>         return AVERROR(EINVAL);
>     }
> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> index 1bc0e716dc..a407faecec 100644
> --- a/libavformat/avformat.h
> +++ b/libavformat/avformat.h
> @@ -2940,11 +2940,25 @@ void av_dump_format(AVFormatContext *ic,
> int av_get_frame_filename3(char *buf, int buf_size,
>                           const char *path, int64_t number, int flags);
> 
> -int av_get_frame_filename2(char *buf, int buf_size,
> -                          const char *path, int number, int flags);
> +#if FF_API_AV_GET_FRAME_FILENAME2
> +    /**
> +     * Like av_get_frame_filename3() but requires int-type number
> +     *
> +     * @deprecated use av_get_frame_filename3() with same arguments
> +     */
> +    attribute_deprecated
> +    int av_get_frame_filename2(char *buf, int buf_size,
> +                            const char *path, int number, int flags);
> 
> -int av_get_frame_filename(char *buf, int buf_size,
> -                          const char *path, int number);
> +    /**
> +     * Like av_get_frame_filename3() but requires int-type number and doesn't accept flags
> +     *
> +     * @deprecated use av_get_frame_filename3() with flags=0
> +     */
> +    attribute_deprecated
> +    int av_get_frame_filename(char *buf, int buf_size,
> +                            const char *path, int number);
> +#endif
> 
> /**
>  * Check whether filename actually is a numbered sequence generator.
> diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
> index 3389fa818e..df376ac612 100644
> --- a/libavformat/img2dec.c
> +++ b/libavformat/img2dec.c
> @@ -122,7 +122,7 @@ static int find_image_range(AVIOContext *pb, int *pfirst_index, int *plast_index
> 
>     /* find the first image */
>     for (first_index = start_index; first_index < start_index + start_index_range; first_index++) {
> -        if (av_get_frame_filename(buf, sizeof(buf), path, first_index) < 0) {
> +        if (av_get_frame_filename3(buf, sizeof(buf), path, first_index, 0) < 0) {
>             *pfirst_index =
>             *plast_index  = 1;
>             if (pb || avio_check(buf, AVIO_FLAG_READ) > 0)
> @@ -144,8 +144,8 @@ static int find_image_range(AVIOContext *pb, int *pfirst_index, int *plast_index
>                 range1 = 1;
>             else
>                 range1 = 2 * range;
> -            if (av_get_frame_filename(buf, sizeof(buf), path,
> -                                      last_index + range1) < 0)
> +            if (av_get_frame_filename3(buf, sizeof(buf), path,
> +                                      last_index + range1, 0) < 0)
>                 goto fail;
>             if (avio_check(buf, AVIO_FLAG_READ) <= 0)
>                 break;
> @@ -434,9 +434,9 @@ int ff_img_read_packet(AVFormatContext *s1, AVPacket *pkt)
>             filename = s->globstate.gl_pathv[s->img_number];
> #endif
>         } else {
> -        if (av_get_frame_filename(filename_bytes, sizeof(filename_bytes),
> +        if (av_get_frame_filename3(filename_bytes, sizeof(filename_bytes),
>                                   s->path,
> -                                  s->img_number) < 0 && s->img_number > 1)
> +                                  s->img_number, 0) < 0 && s->img_number > 1)
>             return AVERROR(EIO);
>         }
>         for (i = 0; i < 3; i++) {
> diff --git a/libavformat/segment.c b/libavformat/segment.c
> index 65323ec678..b366f94c43 100644
> --- a/libavformat/segment.c
> +++ b/libavformat/segment.c
> @@ -205,8 +205,8 @@ static int set_segment_filename(AVFormatContext *s)
>             av_log(oc, AV_LOG_ERROR, "Could not get segment filename with strftime\n");
>             return AVERROR(EINVAL);
>         }
> -    } else if (av_get_frame_filename(buf, sizeof(buf),
> -                                     s->url, seg->segment_idx) < 0) {
> +    } else if (av_get_frame_filename3(buf, sizeof(buf),
> +                                     s->url, seg->segment_idx, 0) < 0) {
>         av_log(oc, AV_LOG_ERROR, "Invalid segment filename template '%s'\n", s->url);
>         return AVERROR(EINVAL);
>     }
> diff --git a/libavformat/utils.c b/libavformat/utils.c
> index 0a7ed1a013..39e8d53e8a 100644
> --- a/libavformat/utils.c
> +++ b/libavformat/utils.c
> @@ -116,7 +116,7 @@ int av_filename_number_test(const char *filename)
> {
>     char buf[1024];
>     return filename &&
> -           (av_get_frame_filename(buf, sizeof(buf), filename, 1) >= 0);
> +           (av_get_frame_filename3(buf, sizeof(buf), filename, 1, 0) >= 0);
> }
> 
> /**********************************************************/
> diff --git a/libavformat/version_major.h b/libavformat/version_major.h
> index 7a9b06703d..d2bd8b5162 100644
> --- a/libavformat/version_major.h
> +++ b/libavformat/version_major.h
> @@ -45,7 +45,7 @@
> #define FF_API_LAVF_SHORTEST            (LIBAVFORMAT_VERSION_MAJOR < 62)
> #define FF_API_ALLOW_FLUSH              (LIBAVFORMAT_VERSION_MAJOR < 62)
> #define FF_API_AVSTREAM_SIDE_DATA       (LIBAVFORMAT_VERSION_MAJOR < 62)
> -
> +#define FF_API_AV_GET_FRAME_FILENAME2   (LIBAVFORMAT_VERSION_MAJOR < 62)
> #define FF_API_GET_DUR_ESTIMATE_METHOD  (LIBAVFORMAT_VERSION_MAJOR < 62)
> #define FF_API_INTERNAL_TIMING          (LIBAVFORMAT_VERSION_MAJOR < 62)
> 
> diff --git a/libavformat/webm_chunk.c b/libavformat/webm_chunk.c
> index 255b8697c5..aa6572e69f 100644
> --- a/libavformat/webm_chunk.c
> +++ b/libavformat/webm_chunk.c
> @@ -139,8 +139,8 @@ static int get_chunk_filename(AVFormatContext *s, char filename[MAX_FILENAME_SIZ
>     if (!filename) {
>         return AVERROR(EINVAL);
>     }
> -    if (av_get_frame_filename(filename, MAX_FILENAME_SIZE,
> -                              s->url, wc->chunk_index - 1) < 0) {
> +    if (av_get_frame_filename3(filename, MAX_FILENAME_SIZE,
> +                              s->url, wc->chunk_index - 1, 0) < 0) {
>         av_log(s, AV_LOG_ERROR, "Invalid chunk filename template '%s'\n", s->url);
>         return AVERROR(EINVAL);
>     }
> -- 
> 2.46.0.windows.1
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
Filip Mašić Sept. 23, 2024, 2:25 p.m. UTC | #2
I don't mind; whatever gets this merged the fastest is best for me. I
wasn't aware there was an internal header, and I don't know why any of the
av_get_frame_filename functions are exposed. I'll add some comments
regardless:

1. Even though the function was previously externally documented as taking
frame numbers, it has been used for timestamps internally for the past 7
years, so I think updating the external documentation to "any number" makes
more sense. My patch deprecated all of the old APIs in favour of what we
now think the new API should be.

2. Was there a reason you didn't update img2enc frame_pts to use the new
internal function?

3. You might consider the documentation clarifications I made for the
parameters:
> + * @param path path with substitution template
> + * @param number the number to substitute

Thanks for the help with this.

On Mon, 23 Sept 2024 at 13:18, Zhao Zhili <quinkblack@foxmail.com> wrote:

>
>
> On Sep 23, 2024, at 18:18, Filip Mašić <shoutplenty@gmail.com> wrote:
>
> ---
> doc/APIchanges              |  3 ++-
> libavfilter/vf_signature.c  |  4 ++--
> libavformat/avformat.h      | 22 ++++++++++++++++++----
> libavformat/img2dec.c       | 10 +++++-----
> libavformat/segment.c       |  4 ++--
> libavformat/utils.c         |  2 +-
> libavformat/version_major.h |  2 +-
> libavformat/webm_chunk.c    |  4 ++--
> 8 files changed, 33 insertions(+), 18 deletions(-)
>
>
> The doc of av_get_frame_filename2 says explicitly `number` is `frame
> number`,
> I prefer fix img2enc.c over add another API:
>
> https://ffmpeg.org//pipermail/ffmpeg-devel/2024-September/333820.html
>
>
> diff --git a/doc/APIchanges b/doc/APIchanges
> index 9f091f5ec5..cbab71a408 100644
> --- a/doc/APIchanges
> +++ b/doc/APIchanges
> @@ -3,7 +3,8 @@ The last version increases of all libraries were on
> 2024-03-07
> API changes, most recent first:
>
> 2024-09-xx - xxxxxxxxxx - lavf 61.7.100 - avformat.h
> -  Add av_get_frame_filename3()
> +  Deprecate av_get_frame_filename(), av_get_frame_filename2(),
> +  and replace them with av_get_frame_filename3().
>
> 2024-09-18 - xxxxxxxxxx - lavc 61.17.100 - packet.h
>   Add AV_PKT_DATA_LCEVC.
> diff --git a/libavfilter/vf_signature.c b/libavfilter/vf_signature.c
> index f419522ac6..37f3ff227e 100644
> --- a/libavfilter/vf_signature.c
> +++ b/libavfilter/vf_signature.c
> @@ -562,7 +562,7 @@ static int export(AVFilterContext *ctx, StreamContext
> *sc, int input)
>
>     if (sic->nb_inputs > 1) {
>         /* error already handled */
> -        av_assert0(av_get_frame_filename(filename, sizeof(filename),
> sic->filename, input) == 0);
> +        av_assert0(av_get_frame_filename3(filename, sizeof(filename),
> sic->filename, input, 0) == 0);
>     } else {
>         if (av_strlcpy(filename, sic->filename, sizeof(filename)) >=
> sizeof(filename))
>             return AVERROR(EINVAL);
> @@ -673,7 +673,7 @@ static av_cold int init(AVFilterContext *ctx)
>     }
>
>     /* check filename */
> -    if (sic->nb_inputs > 1 && strlen(sic->filename) > 0 &&
> av_get_frame_filename(tmp, sizeof(tmp), sic->filename, 0) == -1) {
> +    if (sic->nb_inputs > 1 && strlen(sic->filename) > 0 &&
> av_get_frame_filename3(tmp, sizeof(tmp), sic->filename, 0, 0) == -1) {
>         av_log(ctx, AV_LOG_ERROR, "The filename must contain %%d or %%0nd,
> if you have more than one input.\n");
>         return AVERROR(EINVAL);
>     }
> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> index 1bc0e716dc..a407faecec 100644
> --- a/libavformat/avformat.h
> +++ b/libavformat/avformat.h
> @@ -2940,11 +2940,25 @@ void av_dump_format(AVFormatContext *ic,
> int av_get_frame_filename3(char *buf, int buf_size,
>                           const char *path, int64_t number, int flags);
>
> -int av_get_frame_filename2(char *buf, int buf_size,
> -                          const char *path, int number, int flags);
> +#if FF_API_AV_GET_FRAME_FILENAME2
> +    /**
> +     * Like av_get_frame_filename3() but requires int-type number
> +     *
> +     * @deprecated use av_get_frame_filename3() with same arguments
> +     */
> +    attribute_deprecated
> +    int av_get_frame_filename2(char *buf, int buf_size,
> +                            const char *path, int number, int flags);
>
> -int av_get_frame_filename(char *buf, int buf_size,
> -                          const char *path, int number);
> +    /**
> +     * Like av_get_frame_filename3() but requires int-type number and
> doesn't accept flags
> +     *
> +     * @deprecated use av_get_frame_filename3() with flags=0
> +     */
> +    attribute_deprecated
> +    int av_get_frame_filename(char *buf, int buf_size,
> +                            const char *path, int number);
> +#endif
>
> /**
>  * Check whether filename actually is a numbered sequence generator.
> diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
> index 3389fa818e..df376ac612 100644
> --- a/libavformat/img2dec.c
> +++ b/libavformat/img2dec.c
> @@ -122,7 +122,7 @@ static int find_image_range(AVIOContext *pb, int
> *pfirst_index, int *plast_index
>
>     /* find the first image */
>     for (first_index = start_index; first_index < start_index +
> start_index_range; first_index++) {
> -        if (av_get_frame_filename(buf, sizeof(buf), path, first_index) <
> 0) {
> +        if (av_get_frame_filename3(buf, sizeof(buf), path, first_index,
> 0) < 0) {
>             *pfirst_index =
>             *plast_index  = 1;
>             if (pb || avio_check(buf, AVIO_FLAG_READ) > 0)
> @@ -144,8 +144,8 @@ static int find_image_range(AVIOContext *pb, int
> *pfirst_index, int *plast_index
>                 range1 = 1;
>             else
>                 range1 = 2 * range;
> -            if (av_get_frame_filename(buf, sizeof(buf), path,
> -                                      last_index + range1) < 0)
> +            if (av_get_frame_filename3(buf, sizeof(buf), path,
> +                                      last_index + range1, 0) < 0)
>                 goto fail;
>             if (avio_check(buf, AVIO_FLAG_READ) <= 0)
>                 break;
> @@ -434,9 +434,9 @@ int ff_img_read_packet(AVFormatContext *s1, AVPacket
> *pkt)
>             filename = s->globstate.gl_pathv[s->img_number];
> #endif
>         } else {
> -        if (av_get_frame_filename(filename_bytes, sizeof(filename_bytes),
> +        if (av_get_frame_filename3(filename_bytes, sizeof(filename_bytes),
>                                   s->path,
> -                                  s->img_number) < 0 && s->img_number > 1)
> +                                  s->img_number, 0) < 0 && s->img_number
> > 1)
>             return AVERROR(EIO);
>         }
>         for (i = 0; i < 3; i++) {
> diff --git a/libavformat/segment.c b/libavformat/segment.c
> index 65323ec678..b366f94c43 100644
> --- a/libavformat/segment.c
> +++ b/libavformat/segment.c
> @@ -205,8 +205,8 @@ static int set_segment_filename(AVFormatContext *s)
>             av_log(oc, AV_LOG_ERROR, "Could not get segment filename with
> strftime\n");
>             return AVERROR(EINVAL);
>         }
> -    } else if (av_get_frame_filename(buf, sizeof(buf),
> -                                     s->url, seg->segment_idx) < 0) {
> +    } else if (av_get_frame_filename3(buf, sizeof(buf),
> +                                     s->url, seg->segment_idx, 0) < 0) {
>         av_log(oc, AV_LOG_ERROR, "Invalid segment filename template
> '%s'\n", s->url);
>         return AVERROR(EINVAL);
>     }
> diff --git a/libavformat/utils.c b/libavformat/utils.c
> index 0a7ed1a013..39e8d53e8a 100644
> --- a/libavformat/utils.c
> +++ b/libavformat/utils.c
> @@ -116,7 +116,7 @@ int av_filename_number_test(const char *filename)
> {
>     char buf[1024];
>     return filename &&
> -           (av_get_frame_filename(buf, sizeof(buf), filename, 1) >= 0);
> +           (av_get_frame_filename3(buf, sizeof(buf), filename, 1, 0) >=
> 0);
> }
>
> /**********************************************************/
> diff --git a/libavformat/version_major.h b/libavformat/version_major.h
> index 7a9b06703d..d2bd8b5162 100644
> --- a/libavformat/version_major.h
> +++ b/libavformat/version_major.h
> @@ -45,7 +45,7 @@
> #define FF_API_LAVF_SHORTEST            (LIBAVFORMAT_VERSION_MAJOR < 62)
> #define FF_API_ALLOW_FLUSH              (LIBAVFORMAT_VERSION_MAJOR < 62)
> #define FF_API_AVSTREAM_SIDE_DATA       (LIBAVFORMAT_VERSION_MAJOR < 62)
> -
> +#define FF_API_AV_GET_FRAME_FILENAME2   (LIBAVFORMAT_VERSION_MAJOR < 62)
> #define FF_API_GET_DUR_ESTIMATE_METHOD  (LIBAVFORMAT_VERSION_MAJOR < 62)
> #define FF_API_INTERNAL_TIMING          (LIBAVFORMAT_VERSION_MAJOR < 62)
>
> diff --git a/libavformat/webm_chunk.c b/libavformat/webm_chunk.c
> index 255b8697c5..aa6572e69f 100644
> --- a/libavformat/webm_chunk.c
> +++ b/libavformat/webm_chunk.c
> @@ -139,8 +139,8 @@ static int get_chunk_filename(AVFormatContext *s, char
> filename[MAX_FILENAME_SIZ
>     if (!filename) {
>         return AVERROR(EINVAL);
>     }
> -    if (av_get_frame_filename(filename, MAX_FILENAME_SIZE,
> -                              s->url, wc->chunk_index - 1) < 0) {
> +    if (av_get_frame_filename3(filename, MAX_FILENAME_SIZE,
> +                              s->url, wc->chunk_index - 1, 0) < 0) {
>         av_log(s, AV_LOG_ERROR, "Invalid chunk filename template '%s'\n",
> s->url);
>         return AVERROR(EINVAL);
>     }
> --
> 2.46.0.windows.1
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>
>
>
Zhao Zhili Sept. 23, 2024, 3:17 p.m. UTC | #3
> On Sep 23, 2024, at 22:25, Filip Mašić <shoutplenty@gmail.com> wrote:
> 
> I don't mind; whatever gets this merged the fastest is best for me. I
> wasn't aware there was an internal header, and I don't know why any of the
> av_get_frame_filename functions are exposed. I'll add some comments
> regardless:
> 
> 1. Even though the function was previously externally documented as taking
> frame numbers, it has been used for timestamps internally for the past 7
> years, so I think updating the external documentation to "any number" makes
> more sense. My patch deprecated all of the old APIs in favour of what we
> now think the new API should be.

It’s a bug of img2enc no one noticed. We try to reduce API changes if possible.

> 
> 2. Was there a reason you didn't update img2enc frame_pts to use the new
> internal function?

Well, git send-email broken suddenly to send patch 2/2. I’m trying to figure out why.

> 
> 3. You might consider the documentation clarifications I made for the
> parameters:
>> + * @param path path with substitution template
>> + * @param number the number to substitute

I have added it to patch v2 1/2 and add co-authored-by you.

By the way, please don’t top-post.
> 
> Thanks for the help with this.
> 
> On Mon, 23 Sept 2024 at 13:18, Zhao Zhili <quinkblack@foxmail.com> wrote:
> 
>> 
>> 
>> On Sep 23, 2024, at 18:18, Filip Mašić <shoutplenty@gmail.com> wrote:
>> 
>> ---
>> doc/APIchanges              |  3 ++-
>> libavfilter/vf_signature.c  |  4 ++--
>> libavformat/avformat.h      | 22 ++++++++++++++++++----
>> libavformat/img2dec.c       | 10 +++++-----
>> libavformat/segment.c       |  4 ++--
>> libavformat/utils.c         |  2 +-
>> libavformat/version_major.h |  2 +-
>> libavformat/webm_chunk.c    |  4 ++--
>> 8 files changed, 33 insertions(+), 18 deletions(-)
>> 
>> 
>> The doc of av_get_frame_filename2 says explicitly `number` is `frame
>> number`,
>> I prefer fix img2enc.c over add another API:
>> 
>> https://ffmpeg.org//pipermail/ffmpeg-devel/2024-September/333820.html
>> 
>> 
>> diff --git a/doc/APIchanges b/doc/APIchanges
>> index 9f091f5ec5..cbab71a408 100644
>> --- a/doc/APIchanges
>> +++ b/doc/APIchanges
>> @@ -3,7 +3,8 @@ The last version increases of all libraries were on
>> 2024-03-07
>> API changes, most recent first:
>> 
>> 2024-09-xx - xxxxxxxxxx - lavf 61.7.100 - avformat.h
>> -  Add av_get_frame_filename3()
>> +  Deprecate av_get_frame_filename(), av_get_frame_filename2(),
>> +  and replace them with av_get_frame_filename3().
>> 
>> 2024-09-18 - xxxxxxxxxx - lavc 61.17.100 - packet.h
>>  Add AV_PKT_DATA_LCEVC.
>> diff --git a/libavfilter/vf_signature.c b/libavfilter/vf_signature.c
>> index f419522ac6..37f3ff227e 100644
>> --- a/libavfilter/vf_signature.c
>> +++ b/libavfilter/vf_signature.c
>> @@ -562,7 +562,7 @@ static int export(AVFilterContext *ctx, StreamContext
>> *sc, int input)
>> 
>>    if (sic->nb_inputs > 1) {
>>        /* error already handled */
>> -        av_assert0(av_get_frame_filename(filename, sizeof(filename),
>> sic->filename, input) == 0);
>> +        av_assert0(av_get_frame_filename3(filename, sizeof(filename),
>> sic->filename, input, 0) == 0);
>>    } else {
>>        if (av_strlcpy(filename, sic->filename, sizeof(filename)) >=
>> sizeof(filename))
>>            return AVERROR(EINVAL);
>> @@ -673,7 +673,7 @@ static av_cold int init(AVFilterContext *ctx)
>>    }
>> 
>>    /* check filename */
>> -    if (sic->nb_inputs > 1 && strlen(sic->filename) > 0 &&
>> av_get_frame_filename(tmp, sizeof(tmp), sic->filename, 0) == -1) {
>> +    if (sic->nb_inputs > 1 && strlen(sic->filename) > 0 &&
>> av_get_frame_filename3(tmp, sizeof(tmp), sic->filename, 0, 0) == -1) {
>>        av_log(ctx, AV_LOG_ERROR, "The filename must contain %%d or %%0nd,
>> if you have more than one input.\n");
>>        return AVERROR(EINVAL);
>>    }
>> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
>> index 1bc0e716dc..a407faecec 100644
>> --- a/libavformat/avformat.h
>> +++ b/libavformat/avformat.h
>> @@ -2940,11 +2940,25 @@ void av_dump_format(AVFormatContext *ic,
>> int av_get_frame_filename3(char *buf, int buf_size,
>>                          const char *path, int64_t number, int flags);
>> 
>> -int av_get_frame_filename2(char *buf, int buf_size,
>> -                          const char *path, int number, int flags);
>> +#if FF_API_AV_GET_FRAME_FILENAME2
>> +    /**
>> +     * Like av_get_frame_filename3() but requires int-type number
>> +     *
>> +     * @deprecated use av_get_frame_filename3() with same arguments
>> +     */
>> +    attribute_deprecated
>> +    int av_get_frame_filename2(char *buf, int buf_size,
>> +                            const char *path, int number, int flags);
>> 
>> -int av_get_frame_filename(char *buf, int buf_size,
>> -                          const char *path, int number);
>> +    /**
>> +     * Like av_get_frame_filename3() but requires int-type number and
>> doesn't accept flags
>> +     *
>> +     * @deprecated use av_get_frame_filename3() with flags=0
>> +     */
>> +    attribute_deprecated
>> +    int av_get_frame_filename(char *buf, int buf_size,
>> +                            const char *path, int number);
>> +#endif
>> 
>> /**
>> * Check whether filename actually is a numbered sequence generator.
>> diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
>> index 3389fa818e..df376ac612 100644
>> --- a/libavformat/img2dec.c
>> +++ b/libavformat/img2dec.c
>> @@ -122,7 +122,7 @@ static int find_image_range(AVIOContext *pb, int
>> *pfirst_index, int *plast_index
>> 
>>    /* find the first image */
>>    for (first_index = start_index; first_index < start_index +
>> start_index_range; first_index++) {
>> -        if (av_get_frame_filename(buf, sizeof(buf), path, first_index) <
>> 0) {
>> +        if (av_get_frame_filename3(buf, sizeof(buf), path, first_index,
>> 0) < 0) {
>>            *pfirst_index =
>>            *plast_index  = 1;
>>            if (pb || avio_check(buf, AVIO_FLAG_READ) > 0)
>> @@ -144,8 +144,8 @@ static int find_image_range(AVIOContext *pb, int
>> *pfirst_index, int *plast_index
>>                range1 = 1;
>>            else
>>                range1 = 2 * range;
>> -            if (av_get_frame_filename(buf, sizeof(buf), path,
>> -                                      last_index + range1) < 0)
>> +            if (av_get_frame_filename3(buf, sizeof(buf), path,
>> +                                      last_index + range1, 0) < 0)
>>                goto fail;
>>            if (avio_check(buf, AVIO_FLAG_READ) <= 0)
>>                break;
>> @@ -434,9 +434,9 @@ int ff_img_read_packet(AVFormatContext *s1, AVPacket
>> *pkt)
>>            filename = s->globstate.gl_pathv[s->img_number];
>> #endif
>>        } else {
>> -        if (av_get_frame_filename(filename_bytes, sizeof(filename_bytes),
>> +        if (av_get_frame_filename3(filename_bytes, sizeof(filename_bytes),
>>                                  s->path,
>> -                                  s->img_number) < 0 && s->img_number > 1)
>> +                                  s->img_number, 0) < 0 && s->img_number
>>> 1)
>>            return AVERROR(EIO);
>>        }
>>        for (i = 0; i < 3; i++) {
>> diff --git a/libavformat/segment.c b/libavformat/segment.c
>> index 65323ec678..b366f94c43 100644
>> --- a/libavformat/segment.c
>> +++ b/libavformat/segment.c
>> @@ -205,8 +205,8 @@ static int set_segment_filename(AVFormatContext *s)
>>            av_log(oc, AV_LOG_ERROR, "Could not get segment filename with
>> strftime\n");
>>            return AVERROR(EINVAL);
>>        }
>> -    } else if (av_get_frame_filename(buf, sizeof(buf),
>> -                                     s->url, seg->segment_idx) < 0) {
>> +    } else if (av_get_frame_filename3(buf, sizeof(buf),
>> +                                     s->url, seg->segment_idx, 0) < 0) {
>>        av_log(oc, AV_LOG_ERROR, "Invalid segment filename template
>> '%s'\n", s->url);
>>        return AVERROR(EINVAL);
>>    }
>> diff --git a/libavformat/utils.c b/libavformat/utils.c
>> index 0a7ed1a013..39e8d53e8a 100644
>> --- a/libavformat/utils.c
>> +++ b/libavformat/utils.c
>> @@ -116,7 +116,7 @@ int av_filename_number_test(const char *filename)
>> {
>>    char buf[1024];
>>    return filename &&
>> -           (av_get_frame_filename(buf, sizeof(buf), filename, 1) >= 0);
>> +           (av_get_frame_filename3(buf, sizeof(buf), filename, 1, 0) >=
>> 0);
>> }
>> 
>> /**********************************************************/
>> diff --git a/libavformat/version_major.h b/libavformat/version_major.h
>> index 7a9b06703d..d2bd8b5162 100644
>> --- a/libavformat/version_major.h
>> +++ b/libavformat/version_major.h
>> @@ -45,7 +45,7 @@
>> #define FF_API_LAVF_SHORTEST            (LIBAVFORMAT_VERSION_MAJOR < 62)
>> #define FF_API_ALLOW_FLUSH              (LIBAVFORMAT_VERSION_MAJOR < 62)
>> #define FF_API_AVSTREAM_SIDE_DATA       (LIBAVFORMAT_VERSION_MAJOR < 62)
>> -
>> +#define FF_API_AV_GET_FRAME_FILENAME2   (LIBAVFORMAT_VERSION_MAJOR < 62)
>> #define FF_API_GET_DUR_ESTIMATE_METHOD  (LIBAVFORMAT_VERSION_MAJOR < 62)
>> #define FF_API_INTERNAL_TIMING          (LIBAVFORMAT_VERSION_MAJOR < 62)
>> 
>> diff --git a/libavformat/webm_chunk.c b/libavformat/webm_chunk.c
>> index 255b8697c5..aa6572e69f 100644
>> --- a/libavformat/webm_chunk.c
>> +++ b/libavformat/webm_chunk.c
>> @@ -139,8 +139,8 @@ static int get_chunk_filename(AVFormatContext *s, char
>> filename[MAX_FILENAME_SIZ
>>    if (!filename) {
>>        return AVERROR(EINVAL);
>>    }
>> -    if (av_get_frame_filename(filename, MAX_FILENAME_SIZE,
>> -                              s->url, wc->chunk_index - 1) < 0) {
>> +    if (av_get_frame_filename3(filename, MAX_FILENAME_SIZE,
>> +                              s->url, wc->chunk_index - 1, 0) < 0) {
>>        av_log(s, AV_LOG_ERROR, "Invalid chunk filename template '%s'\n",
>> s->url);
>>        return AVERROR(EINVAL);
>>    }
>> --
>> 2.46.0.windows.1
>> 
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>> 
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>> 
>> 
>> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
diff mbox series

Patch

diff --git a/doc/APIchanges b/doc/APIchanges
index 9f091f5ec5..cbab71a408 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -3,7 +3,8 @@  The last version increases of all libraries were on 2024-03-07
 API changes, most recent first:
 
 2024-09-xx - xxxxxxxxxx - lavf 61.7.100 - avformat.h
-  Add av_get_frame_filename3()
+  Deprecate av_get_frame_filename(), av_get_frame_filename2(),
+  and replace them with av_get_frame_filename3().
 
 2024-09-18 - xxxxxxxxxx - lavc 61.17.100 - packet.h
   Add AV_PKT_DATA_LCEVC.
diff --git a/libavfilter/vf_signature.c b/libavfilter/vf_signature.c
index f419522ac6..37f3ff227e 100644
--- a/libavfilter/vf_signature.c
+++ b/libavfilter/vf_signature.c
@@ -562,7 +562,7 @@  static int export(AVFilterContext *ctx, StreamContext *sc, int input)
 
     if (sic->nb_inputs > 1) {
         /* error already handled */
-        av_assert0(av_get_frame_filename(filename, sizeof(filename), sic->filename, input) == 0);
+        av_assert0(av_get_frame_filename3(filename, sizeof(filename), sic->filename, input, 0) == 0);
     } else {
         if (av_strlcpy(filename, sic->filename, sizeof(filename)) >= sizeof(filename))
             return AVERROR(EINVAL);
@@ -673,7 +673,7 @@  static av_cold int init(AVFilterContext *ctx)
     }
 
     /* check filename */
-    if (sic->nb_inputs > 1 && strlen(sic->filename) > 0 && av_get_frame_filename(tmp, sizeof(tmp), sic->filename, 0) == -1) {
+    if (sic->nb_inputs > 1 && strlen(sic->filename) > 0 && av_get_frame_filename3(tmp, sizeof(tmp), sic->filename, 0, 0) == -1) {
         av_log(ctx, AV_LOG_ERROR, "The filename must contain %%d or %%0nd, if you have more than one input.\n");
         return AVERROR(EINVAL);
     }
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 1bc0e716dc..a407faecec 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -2940,11 +2940,25 @@  void av_dump_format(AVFormatContext *ic,
 int av_get_frame_filename3(char *buf, int buf_size,
                           const char *path, int64_t number, int flags);
 
-int av_get_frame_filename2(char *buf, int buf_size,
-                          const char *path, int number, int flags);
+#if FF_API_AV_GET_FRAME_FILENAME2
+    /**
+     * Like av_get_frame_filename3() but requires int-type number
+     *
+     * @deprecated use av_get_frame_filename3() with same arguments
+     */
+    attribute_deprecated
+    int av_get_frame_filename2(char *buf, int buf_size,
+                            const char *path, int number, int flags);
 
-int av_get_frame_filename(char *buf, int buf_size,
-                          const char *path, int number);
+    /**
+     * Like av_get_frame_filename3() but requires int-type number and doesn't accept flags
+     *
+     * @deprecated use av_get_frame_filename3() with flags=0
+     */
+    attribute_deprecated
+    int av_get_frame_filename(char *buf, int buf_size,
+                            const char *path, int number);
+#endif
 
 /**
  * Check whether filename actually is a numbered sequence generator.
diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
index 3389fa818e..df376ac612 100644
--- a/libavformat/img2dec.c
+++ b/libavformat/img2dec.c
@@ -122,7 +122,7 @@  static int find_image_range(AVIOContext *pb, int *pfirst_index, int *plast_index
 
     /* find the first image */
     for (first_index = start_index; first_index < start_index + start_index_range; first_index++) {
-        if (av_get_frame_filename(buf, sizeof(buf), path, first_index) < 0) {
+        if (av_get_frame_filename3(buf, sizeof(buf), path, first_index, 0) < 0) {
             *pfirst_index =
             *plast_index  = 1;
             if (pb || avio_check(buf, AVIO_FLAG_READ) > 0)
@@ -144,8 +144,8 @@  static int find_image_range(AVIOContext *pb, int *pfirst_index, int *plast_index
                 range1 = 1;
             else
                 range1 = 2 * range;
-            if (av_get_frame_filename(buf, sizeof(buf), path,
-                                      last_index + range1) < 0)
+            if (av_get_frame_filename3(buf, sizeof(buf), path,
+                                      last_index + range1, 0) < 0)
                 goto fail;
             if (avio_check(buf, AVIO_FLAG_READ) <= 0)
                 break;
@@ -434,9 +434,9 @@  int ff_img_read_packet(AVFormatContext *s1, AVPacket *pkt)
             filename = s->globstate.gl_pathv[s->img_number];
 #endif
         } else {
-        if (av_get_frame_filename(filename_bytes, sizeof(filename_bytes),
+        if (av_get_frame_filename3(filename_bytes, sizeof(filename_bytes),
                                   s->path,
-                                  s->img_number) < 0 && s->img_number > 1)
+                                  s->img_number, 0) < 0 && s->img_number > 1)
             return AVERROR(EIO);
         }
         for (i = 0; i < 3; i++) {
diff --git a/libavformat/segment.c b/libavformat/segment.c
index 65323ec678..b366f94c43 100644
--- a/libavformat/segment.c
+++ b/libavformat/segment.c
@@ -205,8 +205,8 @@  static int set_segment_filename(AVFormatContext *s)
             av_log(oc, AV_LOG_ERROR, "Could not get segment filename with strftime\n");
             return AVERROR(EINVAL);
         }
-    } else if (av_get_frame_filename(buf, sizeof(buf),
-                                     s->url, seg->segment_idx) < 0) {
+    } else if (av_get_frame_filename3(buf, sizeof(buf),
+                                     s->url, seg->segment_idx, 0) < 0) {
         av_log(oc, AV_LOG_ERROR, "Invalid segment filename template '%s'\n", s->url);
         return AVERROR(EINVAL);
     }
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 0a7ed1a013..39e8d53e8a 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -116,7 +116,7 @@  int av_filename_number_test(const char *filename)
 {
     char buf[1024];
     return filename &&
-           (av_get_frame_filename(buf, sizeof(buf), filename, 1) >= 0);
+           (av_get_frame_filename3(buf, sizeof(buf), filename, 1, 0) >= 0);
 }
 
 /**********************************************************/
diff --git a/libavformat/version_major.h b/libavformat/version_major.h
index 7a9b06703d..d2bd8b5162 100644
--- a/libavformat/version_major.h
+++ b/libavformat/version_major.h
@@ -45,7 +45,7 @@ 
 #define FF_API_LAVF_SHORTEST            (LIBAVFORMAT_VERSION_MAJOR < 62)
 #define FF_API_ALLOW_FLUSH              (LIBAVFORMAT_VERSION_MAJOR < 62)
 #define FF_API_AVSTREAM_SIDE_DATA       (LIBAVFORMAT_VERSION_MAJOR < 62)
-
+#define FF_API_AV_GET_FRAME_FILENAME2   (LIBAVFORMAT_VERSION_MAJOR < 62)
 #define FF_API_GET_DUR_ESTIMATE_METHOD  (LIBAVFORMAT_VERSION_MAJOR < 62)
 #define FF_API_INTERNAL_TIMING          (LIBAVFORMAT_VERSION_MAJOR < 62)
 
diff --git a/libavformat/webm_chunk.c b/libavformat/webm_chunk.c
index 255b8697c5..aa6572e69f 100644
--- a/libavformat/webm_chunk.c
+++ b/libavformat/webm_chunk.c
@@ -139,8 +139,8 @@  static int get_chunk_filename(AVFormatContext *s, char filename[MAX_FILENAME_SIZ
     if (!filename) {
         return AVERROR(EINVAL);
     }
-    if (av_get_frame_filename(filename, MAX_FILENAME_SIZE,
-                              s->url, wc->chunk_index - 1) < 0) {
+    if (av_get_frame_filename3(filename, MAX_FILENAME_SIZE,
+                              s->url, wc->chunk_index - 1, 0) < 0) {
         av_log(s, AV_LOG_ERROR, "Invalid chunk filename template '%s'\n", s->url);
         return AVERROR(EINVAL);
     }