Any mergers in the chat? If I'm understanding correctly, all you need to do for this one is compile it and run the sample command in issue #11194 (or better yet, the one in https://superuser.com/a/1854641 that cross-references it against vf=drawtext), and maybe also omit the frame_pts option to check that's fine as well.
Please lmk what's next. If you need me to test it, I think all I'm stuck on is the configure flags for including image2 in the build but who knows, there could be more impediments. Previous review: https://ffmpeg.org//pipermail/ffmpeg-devel/2024-September/333651.html I seem to have been lucky to avoid needing to rebase my changelogs 3 times so that's also ready to go :D. Thanks for your service. On Thu, 19 Sept 2024 at 17:25, Filip Mašić <shoutple...@gmail.com> wrote: > Resolves an integer overflow with the frame_pts option (issue 11194). > > Signed-off-by: Filip Mašić <shoutple...@gmail.com> > --- > doc/APIchanges | 3 +++ > libavformat/avformat.h | 5 ++++- > libavformat/img2enc.c | 6 ++---- > libavformat/utils.c | 12 +++++++++--- > 4 files changed, 18 insertions(+), 8 deletions(-) > > diff --git a/doc/APIchanges b/doc/APIchanges > index 81537fea09..d821f5d496 100644 > --- a/doc/APIchanges > +++ b/doc/APIchanges > @@ -2,6 +2,9 @@ The last version increases of all libraries were on > 2024-03-07 > > API changes, most recent first: > > +2024-09-xx - xxxxxxxxxx - lavf 61.6.100 - avformat.h > + Add av_get_frame_filename3() > + > 2024-09-18 - xxxxxxxxxx - lavc 61.17.100 - packet.h > Add AV_PKT_DATA_LCEVC. > > diff --git a/libavformat/avformat.h b/libavformat/avformat.h > index 56c1c80289..a2ef209e35 100644 > --- a/libavformat/avformat.h > +++ b/libavformat/avformat.h > @@ -2933,10 +2933,13 @@ void av_dump_format(AVFormatContext *ic, > * @param buf destination buffer > * @param buf_size destination buffer size > * @param path numbered sequence string > - * @param number frame number > + * @param number frame number (or pts if frame_pts option passed) > * @param flags AV_FRAME_FILENAME_FLAGS_* > * @return 0 if OK, -1 on format error > */ > +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); > > diff --git a/libavformat/img2enc.c b/libavformat/img2enc.c > index 526a11e5ee..460e6a38bd 100644 > --- a/libavformat/img2enc.c > +++ b/libavformat/img2enc.c > @@ -160,13 +160,11 @@ static int write_packet(AVFormatContext *s, AVPacket > *pkt) > return AVERROR(EINVAL); > } > } else if (img->frame_pts) { > - if (av_get_frame_filename2(filename, sizeof(filename), s->url, > pkt->pts, AV_FRAME_FILENAME_FLAGS_MULTIPLE) < 0) { > + if (av_get_frame_filename3(filename, sizeof(filename), s->url, > pkt->pts, AV_FRAME_FILENAME_FLAGS_MULTIPLE) < 0) { > av_log(s, AV_LOG_ERROR, "Cannot write filename by pts of the > frames."); > return AVERROR(EINVAL); > } > - } else if (av_get_frame_filename2(filename, sizeof(filename), s->url, > - img->img_number, > - AV_FRAME_FILENAME_FLAGS_MULTIPLE) < > 0) { > + } else if (av_get_frame_filename3(filename, sizeof(filename), s->url, > img->img_number, AV_FRAME_FILENAME_FLAGS_MULTIPLE) < 0) { > if (img->img_number == img->start_img_number) { > av_log(s, AV_LOG_WARNING, "The specified filename '%s' does > not contain an image sequence pattern or a pattern is invalid.\n", s->url); > av_log(s, AV_LOG_WARNING, > diff --git a/libavformat/utils.c b/libavformat/utils.c > index e9ded627ad..0a7ed1a013 100644 > --- a/libavformat/utils.c > +++ b/libavformat/utils.c > @@ -19,6 +19,7 @@ > * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA > 02110-1301 USA > */ > > +#include <inttypes.h> > #include <stdint.h> > > #include "config.h" > @@ -280,7 +281,7 @@ uint64_t ff_parse_ntp_time(uint64_t ntp_ts) > return (sec * 1000000) + usec; > } > > -int av_get_frame_filename2(char *buf, int buf_size, const char *path, int > number, int flags) > +int av_get_frame_filename3(char *buf, int buf_size, const char *path, > int64_t number, int flags) > { > const char *p; > char *q, buf1[20], c; > @@ -313,7 +314,7 @@ int av_get_frame_filename2(char *buf, int buf_size, > const char *path, int number > percentd_found = 1; > if (number < 0) > nd += 1; > - snprintf(buf1, sizeof(buf1), "%0*d", nd, number); > + snprintf(buf1, sizeof(buf1), "%0*"PRId64, nd, number); > len = strlen(buf1); > if ((q - buf + len) > buf_size - 1) > goto fail; > @@ -338,9 +339,14 @@ fail: > return -1; > } > > +int av_get_frame_filename2(char *buf, int buf_size, const char *path, int > number, int flags) > +{ > + return av_get_frame_filename3(buf, buf_size, path, number, flags); > +} > + > int av_get_frame_filename(char *buf, int buf_size, const char *path, int > number) > { > - return av_get_frame_filename2(buf, buf_size, path, number, 0); > + return av_get_frame_filename3(buf, buf_size, path, number, 0); > } > > void av_url_split(char *proto, int proto_size, > -- > 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-requ...@ffmpeg.org with subject "unsubscribe".