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, \ From patchwork Mon Sep 23 10:18:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?RmlsaXAgTWHFoWnEhw==?= X-Patchwork-Id: 51743 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:d154:0:b0:48e:c0f8:d0de with SMTP id bt20csp2359486vqb; Mon, 23 Sep 2024 03:39:23 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUfcgoUsuvlMGd7xZ4eVSEjgQK90LQbHJnD57fknZmzSxum2ztJIIqV/wSeodoTHeSW/Qu9nUjbgXJWDKfy2s9n@gmail.com X-Google-Smtp-Source: AGHT+IGWbvno00VLPX01yE7AvnvIxUbKEpq3xrfCvkiRJT1nfFqQECKS0H5xoKeFLZOUFA1ia/Pg X-Received: by 2002:a2e:be23:0:b0:2f7:ad6b:a31e with SMTP id 38308e7fff4ca-2f7cc5bab12mr46058771fa.31.1727087963141; Mon, 23 Sep 2024 03:39:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727087963; cv=none; d=google.com; s=arc-20240605; b=VeO7evZtPwyX2jLrh32RY1jGG27nySd1pPBLu15LYHBnToFDxH49c2F5Tn8QuXs5fn oYU5+B2C0G/2Gvoa0vVkZndguHstl/l3o0/gKFYD/CaDgvursLMeHESMF2/Itg3FPa7x vuI0Dapr2SApmooVCTlWCSRR0DPhv46SI4kS7ORA0YHdQ3t3MdQPOMvhiw1WM1Vys5AA NqrLTg0Fk/EUpKZ5C55t++pNYn/xyqv2eobmvcPGRYo8NW5c2IbjJAouw5YgAGEA33zU zXP7UyCkhwPxSnim5MsynQeCniwPeOgdiPY5rIaHd6P6bl5yNROHdJZWy6kBgxK5FEUt mQEw== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=+I1dhLmbOyIX+9svQ3EzUo9guM7SsebV4OK4Kpbnl6Y=; fh=vUG20E56bhII0xGyaMwCR+cO1JMOl7NOj4ka3/90tN8=; b=EEcYcIWOtAyE1fGL+j2eq+FdB89t7i/Jwx6UsoKbQtUgbX+DnXcUI9DerRwuDqSZnC may36kaS/ScTFajvxrhZnJuv++zLa1HKzlA2IyNP6tgkklJZne4H93h9GmT5yCBzrby2 6VJy4Toalpal1DAEPzS0poXXVAe/RQXhbJOVcFtI/c+MgQ9H7nMwqjN0VbmaoEgKoaO9 twdH0mJKdRR29qDc0GHSeSWgByOQUvTHmtZE8Hxcd6csgRsXhuydBzK626iB1hRw4jdf sesmAybDZxqWf5e74WdpxqabTkxSzWyg0kDKpU3aBkFOiq7ZJunzD3yrzOd283o/QhEK +XAA==; 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=mKl6H2qM; 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-2f79d47b714si60910081fa.512.2024.09.23.03.39.22; Mon, 23 Sep 2024 03:39:23 -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=mKl6H2qM; 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 DB9AA68D8D8; Mon, 23 Sep 2024 13:20:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4B66468D63C for ; Mon, 23 Sep 2024 13:20:31 +0300 (EEST) Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-5c3d209db94so5464306a12.3 for ; Mon, 23 Sep 2024 03:20:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1727086830; x=1727691630; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jlOdmlp/pm4uPn60ABYLkfXIJ+qE8vOBHI5cmAg781c=; b=mKl6H2qMkhaRRLj1N3FkInhdMQstedN0lri7TgUKwqu4vjCjgM4O4Yjqw5Ai8c1R2W jtfvReu1H61IySOn8sKsjuc1937huoo7PT7zgEKp28WujMSm4BWN+iup9Knbhjx0yMl6 myL2WLE3RGpGZvbk3ExfSNXnruNHsz9JqhqC7ZzR+/HNkjeyttk0xRzdrRLmfiGw+jHs w7EvGeyQnMaISnpDbdwlc7oaBqoFf143t7ILY5jtjxf1mwOMOgJOk233fJBcuT1wB9Lt 109dovjRmR9/TzMlin7JBvJx/IOS6aROvkfUMwzDp4Uq2FrzJFDPr1syvFjZ5BzRO1Fq UPzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727086830; x=1727691630; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jlOdmlp/pm4uPn60ABYLkfXIJ+qE8vOBHI5cmAg781c=; b=cFu8pHBkuOxPHYyO6g8iReDAGms7DXAvrhtY41V7gD1ZYRLjH8KGroSptZLqhAr6ri Shc2Aupi6RjgDhTzdOCJCoRSTCo+6QRpOFwu7txtMs2Q9s3ETgIzpSR/BjtFOcyaDAD9 3nMDWwzh+7xKadWOR59kAFfA51ddkrPyMatTTirGlG59lYANX89F9em7vB0hVFYPfiHr 4SCi/FhVH6jjiq4JtM5VrdPrIVjYI0SV9BF6Kz5KPJSvfCM+pvZ/D9WdUTEbSdLKpzgc RUm696gixrAsHoXbv7xkt5EXoCm47Sb/GG0dr2OygUzN3CxGK/Ch8Zo0WJzWgpCgRX+H vbug== X-Gm-Message-State: AOJu0Yw/Pw8VnyqtGMlMwVxNVMnE9bHIDx5P+oBpBQKe1GrjF9WlS9R3 1DR9zhugJkCsBC1B4BDWOy9Vuqz/nr8ZY0kajTtL+27IuW34ithbq4dAbA== X-Received: by 2002:a05:6402:3506:b0:5c5:c2a7:d53a with SMTP id 4fb4d7f45d1cf-5c5c2a7d69amr2248335a12.12.1727086825117; Mon, 23 Sep 2024 03:20:25 -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.20.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Sep 2024 03:20:24 -0700 (PDT) From: =?utf-8?b?RmlsaXAgTWHFoWnEhw==?= To: ffmpeg-devel@ffmpeg.org Date: Mon, 23 Sep 2024 11:18:09 +0100 Message-ID: <20240923101931.790-2-shoutplenty@gmail.com> X-Mailer: git-send-email 2.46.0.windows.1 In-Reply-To: <20240923101931.790-1-shoutplenty@gmail.com> References: <20240923101931.790-1-shoutplenty@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 2/2] avformat: deprecated av_get_frame_filename() and av_get_frame_filename2() 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: U9/DA3IHtYT8 --- 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(-) 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); }