From patchwork Mon Sep 23 10:18:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?RmlsaXAgTWHFoWnEhw==?= X-Patchwork-Id: 51742 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:d154:0:b0:48e:c0f8:d0de with SMTP id bt20csp2350927vqb; Mon, 23 Sep 2024 03:20:12 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXeE9su4wdAlo9QEDaeTKMJM5/eLJ8lH4QUs7J+au2lrmkCDocIyBG4Suwxghyd3CKCLxmDVDo2xQ8TmzZjiAKx@gmail.com X-Google-Smtp-Source: AGHT+IFu72OUwRhVD28jn1tUB+V/ezrwviCxWp7EuqArwrqrXRO4BG7Wox3Js0Rbnkc2BlycKs/g X-Received: by 2002:a05:6402:42c4:b0:5c5:c4af:7363 with SMTP id 4fb4d7f45d1cf-5c5c4af73c8mr931301a12.20.1727086812257; Mon, 23 Sep 2024 03:20:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727086812; cv=none; d=google.com; s=arc-20240605; b=WtteFva8mLn8lbO10ynmAlEmnOtF7fcehCJ7UYb0CUgHX7QyGxv04oEfqTQaLVbczi RlL/bhZ6bISDO5FZKWDxfPEkwoh3ZSxQZXTcpM0DvdyaGAw2wGMTpr1Ipm3QDxj7piUY vFmIUFLWevhZVIsPwtR1i70R3yl9LrpinHbEemdS4u1Go4YymPwOre1Vu6GhlmO8LOTn MqtzkrTH/EHEc1jmpvK0fsHq+l/hYNu657X6qOFDk46fnBdSzC9b4c+r3SHETVr/o8yA ZcPEM+00oi4pv2RB7FVgJcfY17BgCihCpEJJIpQL7uQOZ4196nmHkCgBUePFZDxoGD+0 ey1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=YyUFkHLlJGAQKzlx1yUroX+wbVXNLyDkWLWJhhF8soQ=; fh=vUG20E56bhII0xGyaMwCR+cO1JMOl7NOj4ka3/90tN8=; b=BLCzw87SwZl7uwveox1uTZTUWrycsdKtXCZ4cSYAcjKH/+6N//QpVWRJ88u7Vy6mX/ bcJnVrIlTEvZF0UQBOgFlRcfcYF6KG3s+pq+UWXFMV5KfATksaac1Y8NDnupP/4oMJVw ZoyXrfJ3ShPkzbj08oun0jiTcKiBrYTuWBzReoxlo6/FxUzAyx2jTqqSHAjhDSXIVOOM 1eXrgU3wSxoBHCCTtZiYR00cyd2N/FhxwYjZAN56vGIbDU9fCx+0gqbr07c6VnHDKVCj lpZjAinjBG7VPae5EDCIghtmkp3eCPsp8Hqz7z1RCkuSLQsMtvnXZavLVPE65esDSD+4 oIKA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=e1Qc0iS7; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; dara=fail header.i=@gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-5c42bb91256si13292192a12.209.2024.09.23.03.20.10; Mon, 23 Sep 2024 03:20:12 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=e1Qc0iS7; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; dara=fail header.i=@gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 84F6868D734; Mon, 23 Sep 2024 13:20:07 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8307268D558 for ; Mon, 23 Sep 2024 13:20:00 +0300 (EEST) Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-5c255e3c327so4113721a12.1 for ; Mon, 23 Sep 2024 03:20:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1727086799; x=1727691599; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=YEQEb/ITDaGXmnZgAu5medvtBgggeTgrReg8ngDHxnY=; b=e1Qc0iS7dc/23fFHE7lpGm3SvZ5L41IPpyKNz7F23rLdn+hiFUjgivNymIYWTuqoqT 8qX2VI+NEXoM/vOaCeJuLPySOfmgvJhh25lDLogdhAwme9IWMVUqKBASvmh4pOzIcX/9 fzCw5mI6Yd53AFXx2WChNHxmH7PrFt4OPPpXnv7EDNlc3DZwl6dHiXrZMGannaUGRtaO u8AhkaXXg8Ezzi8lX2O963wfJi7uwdThpWP67TObQgAEX3gvuGqGE75A4C1sN78AUCiX SAL3o8k6B4DXwxfyQlJ2RQziv+tNpldwlnRbKApld64l8Dg5PHQqW/OB2QY/fivkEV+O lDqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727086799; x=1727691599; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=YEQEb/ITDaGXmnZgAu5medvtBgggeTgrReg8ngDHxnY=; b=mJyr4C/0dqaJCq0Re17VWa/4FSFaa44Xqo3MjOQvAoJsmgGzzPJs45ZSJBYPMMnVue wADrOqNl9bESHubMd431czeDiY/svdSj021KsV0NElFEATiRz8IL/EX+rHa7VKM/ZTD3 7xCeq6U2ilLSW5iu1IDzgGzMagie66V2uf90xDTF1DJ0HIvACxcij6O1gsAYk+mvywMv tM9j3iL5G1IW8WJ5ReF3YmVI1GyN44HRTQRF5jEAZtz9/WHMuxRH7Yey4xP6tPcKaJYV HKkDPOPTRkc9Fmy8weMrQtKGVxIy+MEE+MW0EUC8my63WS/ujAxl8QEqpy+jDh/FugpN dJig== X-Gm-Message-State: AOJu0YzF3RwTEbcdUm3vtZDnBYYbSNAhsenV5e2M3Gery4QjiOsWn6LR he4E/7kLQBYPaDBjgNijcaND82PVEi4ghDKfEnn2MJGX2KuSesoDeeHX6w== X-Received: by 2002:a05:6402:34c8:b0:5c0:902c:e195 with SMTP id 4fb4d7f45d1cf-5c4643262cemr9514707a12.0.1727086798587; Mon, 23 Sep 2024 03:19:58 -0700 (PDT) Received: from localhost.localdomain ([2a02:6b6f:f680:db00:35c4:a7d4:ca83:357c]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5c42bb5f3d4sm10115963a12.51.2024.09.23.03.19.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Sep 2024 03:19:58 -0700 (PDT) From: =?utf-8?b?RmlsaXAgTWHFoWnEhw==?= To: ffmpeg-devel@ffmpeg.org Date: Mon, 23 Sep 2024 11:18:08 +0100 Message-ID: <20240923101931.790-1-shoutplenty@gmail.com> X-Mailer: git-send-email 2.46.0.windows.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 1/2] avformat/utils: added av_get_frame_filename3() (changed parameter int -> int64_t) X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: =?utf-8?b?RmlsaXAgTWHFoWnEhw==?= Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: mO+Ci69j1V66 Resolves an integer overflow with the frame_pts option (issue 11194). Signed-off-by: Filip Mašić --- doc/APIchanges | 3 +++ libavformat/avformat.h | 7 +++++-- libavformat/img2enc.c | 6 ++---- libavformat/utils.c | 12 +++++++++--- libavformat/version.h | 2 +- 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index 81537fea09..9f091f5ec5 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.7.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..1bc0e716dc 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -2932,11 +2932,14 @@ 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 path path with substitution template + * @param number the number to substitute * @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 #include #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, diff --git a/libavformat/version.h b/libavformat/version.h index 4bde82abb4..70c554c19c 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -31,7 +31,7 @@ #include "version_major.h" -#define LIBAVFORMAT_VERSION_MINOR 6 +#define LIBAVFORMAT_VERSION_MINOR 7 #define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \