From patchwork Thu Sep 19 16:23:27 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: 51654 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:d154:0:b0:48e:c0f8:d0de with SMTP id bt20csp553012vqb; Thu, 19 Sep 2024 13:04:19 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVAKmld2EEpevKLKLrDvxcLMaO1EMVJyNTNC/B8mMTW7ts87N4ovV5XpdZHsl8cw0q0D/OwB14xEHMkw0My2hJP@gmail.com X-Google-Smtp-Source: AGHT+IEDiMKPdB3hfyw7UqLTklJ7/AkbE+RqkdoFbApAMmdgaBftdGJMF/rY9WahW+WxNfz8Avzj X-Received: by 2002:a2e:be22:0:b0:2f7:8b28:dcd5 with SMTP id 38308e7fff4ca-2f7cc5c3d77mr1170541fa.36.1726776258738; Thu, 19 Sep 2024 13:04:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1726776258; cv=none; d=google.com; s=arc-20240605; b=iIL+LuKEhaXW9mLZfH6tB2UrFszn+fwCZpSZi1/oP7PdBj48ED+x+lxArin4S7cgtd EPdwLppqKS4NjSiAtPrcpM7BVtahQOra8iXtY26KRhSOQZNM5rvKi80hYcTF9w9ceCI5 9VozC7T6HGZLz6bvL+bFkaCWU1A6B6Od730sdfnbC2unnGlW0DU4J2LKLjhRBqicIOge eGMGAQH0+sG5wj332UqDnk9l7XuE00jA/EK5YyzQS4Uf03MTv9ZUojAwQNos5cFNSu6f In/bBEztFjU+ojHbrxkL6BVvXh7A7mS/EoRgGRtl7P933+7AKMjspLlkOZkMSo69zour GDNg== 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=Ad/SQh8v2sEidgpjtfjA3ij2lt0OAhLxC0tYxBIP2Ho=; fh=vUG20E56bhII0xGyaMwCR+cO1JMOl7NOj4ka3/90tN8=; b=eSHMPo4jy6/ce1Hu3Bm5+xg44q9mVS1nC6TxwPnpQYYrY1oSeCZZCeUib1+JqMBI3w /Rl98v2gnPeRtMe7QHhwtK+wvWu9z8bmrMi6u7N6XOzv1/D/NcKCKfH/lkr8wedsQi/d StlCBp9LnbtbSKc/PMmLrdlw8MxE8uvJklhVrHhGS6UoF3mpZZ+xVj9GlAbNUrz8X8rC kXg3dGu9hZWsJczwNcBRrqoIGeARCKPaHLdr+gVSuojaflbLeKBilKBvSi90YrHk80zF LCthsFo87H72ldkrUblVbjEicSSYur0gM6yQcO0Gk05zRihkTIwVOu711A4WEbmyGIdR 5hfQ==; 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=Dxuzh2It; 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 38308e7fff4ca-2f79d47b50esi35859751fa.544.2024.09.19.13.04.18; Thu, 19 Sep 2024 13:04:18 -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=Dxuzh2It; 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 3EAFA68DC53; Thu, 19 Sep 2024 19:25:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C107468DC53 for ; Thu, 19 Sep 2024 19:25:52 +0300 (EEST) Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-42e748f78d6so8655225e9.0 for ; Thu, 19 Sep 2024 09:25:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1726763151; x=1727367951; 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=RfYHPR1YI/bSUjc4EmI8Qr0nuVfeMoUCgh8WrdFHe3o=; b=Dxuzh2It5O3o+Vog8embQd5pcYqTe5J8bS4XtD3X8tmOnPomgxWp95TCTzSNvSxtTj NH5WE3U0XaD0qlLJglMTf5qrlg5uyaFAvVL9uhn/4XSDevuG81uaBPgsazqRSH16e0t7 0TXZCtJEWhhemF8Dti01drBvcsoaLImL0//zOHJxCy/dEUTeukQhxBwignnxpfbeyqDS hHqJrERzaB1iD2U73+xTCNt4lSiJPnjM2XV8loJUCZY9/gk4XWBlPrMmPlel8NsSmFfA 6RypL5kL8LzEKu42tF9lizXayWrgD2FlcKZBeuJTOJiqChVHXWMq1OKbEeA0a/ldHr/2 oOSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726763151; x=1727367951; 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=RfYHPR1YI/bSUjc4EmI8Qr0nuVfeMoUCgh8WrdFHe3o=; b=QIuNX31VZzl/0+qqXrF620bDfP7I4xfuC3pFa+InBDHrjGyXTSdCkOHPQFjdPzshzb HR4csb623V6Ybjrb3e1FXqMCeB3ueAfoC/Vm2MQLaEgLSVJC521EUo3CNC1qiZVLz5UM kdJBtXSBQzwAVWwoXAvd6uvSmb4sgEZYo6S+f5Ugw9nF1FjqyNjC8zQWWDo2kNeGxT0P Z6uIyI+spLWdW02pWiUbJAVvGmah6OxHdu9iiVrCCR+rLdfIUbUpwjRncIxbNLhtNQGK TNdzgKCDufJzey8qMbWgQStRrVqQNGPWL8D9MsR/l5Tez8XwEcQ7yS/Nx3tSdykXjvWu dNMQ== X-Gm-Message-State: AOJu0YyJCo0MIuVjB3AbakEDRBOTJKe1bnHfmId240QtSXqzqGX/Qmfm jEeY8gs4/aXzd8iCckgWhG4jeUfdGf9zw5g2fVTcY4Hel7UarR+XvgrMDw== X-Received: by 2002:a05:600c:4695:b0:425:7bbf:fd07 with SMTP id 5b1f17b1804b1-42cdb4fb710mr202413495e9.5.1726763150906; Thu, 19 Sep 2024 09:25:50 -0700 (PDT) Received: from localhost.localdomain ([2a02:6b6f:f687:3400:6dd2:4425:ea2f:3226]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-378e78002afsm15492089f8f.75.2024.09.19.09.25.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Sep 2024 09:25:50 -0700 (PDT) From: =?utf-8?b?RmlsaXAgTWHFoWnEhw==?= To: ffmpeg-devel@ffmpeg.org Date: Thu, 19 Sep 2024 17:23:27 +0100 Message-ID: <20240919162517.48-1-shoutplenty@gmail.com> X-Mailer: git-send-email 2.46.0.windows.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] 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: JGvjcxeOn13T Resolves an integer overflow with the frame_pts option (issue 11194). Signed-off-by: Filip Mašić --- 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 #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,