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 |
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 |
> 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".
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". > > >
> 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 --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); }