From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id DB8844EF5E for ; Fri, 20 Feb 2026 15:00:42 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'seW/3bw/RAJTXcDCqtc9KlQx0Z7KDxLO0EUDUQTvWZg=', expected b'AUvmUFWpyINQFq4K258rk84xfqfHJfERtSnj8EFq608=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1771599630; h=mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=seW/3bw/RAJTXcDCqtc9KlQx0Z7KDxLO0EUDUQTvWZg=; b=1vyqCFhNXPz2JsXIUiP9tJEi5SBuOI7uKGzDT1Wzy456nIsKUjvnqnG0gDPurPZbEqztO zC2a8SUT8OkUYGgCGyZ0QySRrlUCJmKjfjTUCd/2Geh5tPgHaVEhAuvpaiXFFeJVplOyBs5 Ra5MpxULJP/k9AkXsaMSHrQJ2BIndlLzYbPokYEy8mC3v8XMTv4tL8g/X6NS3Obf07NOpYb uxDLK0n7iiVQwazQSVKjCND/tdeWOaICbrOcCDhWu5h8bgQvoVLKxCdxCVwX0R9moMpj8Cj jEgBi20sxv8EWjDCA3oTGm9wMUUjV30Iiai7Cmla7jRu9vfOdJ896ihUMiKA== Received: from [172.18.0.3] (unknown [172.18.0.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 6850D691275; Fri, 20 Feb 2026 17:00:30 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1771599617; b=Z85dULCv2ahfyrWDz38RRzNLOAh9AOgfjPcbcWSSZYz3YWH9N5L2VVazEoQ2AMcefmQyh Cs/trhcgU3s8o04vEvkUW4CpfLi43sey/MAeavNu2QkkPFMKNqWBgPW1BvOo8L3bktsETYe OSiadYon7i9OkQX/CiS13gQrTfUGP3VADm5iJIaOYOFmh+J0dVuDpaNHW3zqiltj4pwLu+w HNaC1wUK581AYgo73VMVnDWPSn0qLgEstU3b59rhIcfhjQbA7xhSFE4Et+pyK4nJuDyhm98 U9IhZk4tOAqX5a1iI+LUCzSFhIfDK0gVUkIKB5iFm77dFQqXg+b8TCvlsM2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1771599617; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=KJW8Unix5A177SzUAkl3smzjUwwJngCV7dGQilFYBhA=; b=sNMrqOgycNh/hHLLkJqpV8g6lv1YrSWx4KTFmhVLFwk9sRc47z5jVmRgT7VpnWmWt9J3a jus1TfB740RDxp4ULNJd+MEixQ6B55IA8ulU2hSDhCYzFUtg5hjC6PCzwJycYETJ4z4hvXC fu/5Q/l2AlTWaLlQPYeRl540zF7xYBZ9EVOMYEd9RI10dikEZMDJ0DF0gx/wYyHnnhf1VWD f8KHDlzTuVffR1BGYczByhye9uvdqW2qjfgWJxEjrMtK1MRwmIqOsT8Hty+2o+Dm/Dq0vU3 sMcPZHyTCwyGB3TSnsolp3G49UnwrTzxX7C6BIAzocba59PyJPfohDKY7yJQ== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1771599609; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=AUvmUFWpyINQFq4K258rk84xfqfHJfERtSnj8EFq608=; b=DvEk3Xk7oF6fOWiSMLehyyWnKyGVNTNk5xXzAq/Dodcr8dsXSb9OpdfYmgTNO57Cq+J7P kS6PrBLlQBS+equgEhhgbvH13smLEk6izw7qGKcoJD9vRQzliX/+czLN9veGX4ta3Ct6nPB 16DHjM8LOmAF7SDmm+hD2FGM/VYsTjePTqeQXL7cJZbet5Pg78m4DpndwYg3/NCOSvyD1Pj xZA8BxF4SK5U53P+OhVruDGp/7hGOLA6GL2T1ebTNWmCnSPLvpAtNSEbvjKpaJUMe0MTlxa 3HiJDHv+I1Q4INz7lcq3RIDh643/vddn/RmW4zNCLL/qLIv6RsK6aevHxZMA== MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Fri, 20 Feb 2026 15:00:08 -0000 Message-ID: <177159960926.25.2499034709861494626@29965ddac10e> Message-ID-Hash: GXMYI5E4MDHLE23FQMZYSCIO42HUUJ7O X-Message-ID-Hash: GXMYI5E4MDHLE23FQMZYSCIO42HUUJ7O X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PR] libavformat/{apetag.c, id3v2enc.c}: use new av_str_is_ascii (PR #21813) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: toots via ffmpeg-devel Cc: toots Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #21813 opened by toots URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21813 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21813.patch >>From df2960c5a83ca7582c46a2092de7ff9fcc7e6f05 Mon Sep 17 00:00:00 2001 From: Romain Beauxis Date: Wed, 17 Dec 2025 18:05:13 -0600 Subject: [PATCH 1/2] libavutil: Add av_str_is_ascii(). --- doc/APIchanges | 3 +++ libavutil/avstring.c | 6 ++++++ libavutil/avstring.h | 5 +++++ 3 files changed, 14 insertions(+) diff --git a/doc/APIchanges b/doc/APIchanges index 2b43139b48..9d54cf6112 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -26,6 +26,9 @@ API changes, most recent first: 2025-12-xx - xxxxxxxxxx - lavf 62.x.xxx - avformat.h Add av_mime_codec_str +2025-12-xx - xxxxxxxxxx - lavu 60.20.100 - avstring.h + Add av_str_is_ascii(). + 2025-12-xx - xxxxxxxxxx - lavu 60.20.100 - hwcontext_vulkan.h Add av_vk_get_optional_instance_extensions(). Add av_vk_get_optional_device_extensions(). diff --git a/libavutil/avstring.c b/libavutil/avstring.c index 281c5cdc88..4c61accbee 100644 --- a/libavutil/avstring.c +++ b/libavutil/avstring.c @@ -227,6 +227,12 @@ int av_strncasecmp(const char *a, const char *b, size_t n) return c1 - c2; } +int av_str_is_ascii(const uint8_t *str) +{ + while (*str && *str >= 0x20 && *str <= 0x7e ) str++; + return !*str; +} + char *av_strireplace(const char *str, const char *from, const char *to) { char *ret = NULL; diff --git a/libavutil/avstring.h b/libavutil/avstring.h index 17f7b03db5..ad54603be1 100644 --- a/libavutil/avstring.h +++ b/libavutil/avstring.h @@ -268,6 +268,11 @@ int av_strncasecmp(const char *a, const char *b, size_t n); */ char *av_strireplace(const char *str, const char *from, const char *to); +/** Checks if a string is in ASCII format. + * @returns 0 if string is not ASCII and 1 if it is. + */ +int av_str_is_ascii(const uint8_t *str); + /** * Thread safe basename. * @param path the string to parse, on DOS both \ and / are considered separators. -- 2.52.0 >>From e82361d0c6fcea06e8d5f8c83088e564f10507ec Mon Sep 17 00:00:00 2001 From: Romain Beauxis Date: Wed, 17 Dec 2025 18:05:32 -0600 Subject: [PATCH 2/2] libavformat/{apetag.c, id3v2enc.c}: use new av_str_is_ascii --- libavformat/apetag.c | 9 ++------- libavformat/id3v2enc.c | 12 +++--------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/libavformat/apetag.c b/libavformat/apetag.c index 0989fcb094..dcf475c042 100644 --- a/libavformat/apetag.c +++ b/libavformat/apetag.c @@ -24,6 +24,7 @@ #include "libavutil/dict.h" #include "libavutil/mem.h" +#include "libavutil/avstring.h" #include "avformat.h" #include "avio_internal.h" #include "apetag.h" @@ -169,12 +170,6 @@ int64_t ff_ape_parse_tag(AVFormatContext *s) return tag_start; } -static int string_is_ascii(const uint8_t *str) -{ - while (*str && *str >= 0x20 && *str <= 0x7e ) str++; - return !*str; -} - int ff_ape_write_tag(AVFormatContext *s) { const AVDictionaryEntry *e = NULL; @@ -189,7 +184,7 @@ int ff_ape_write_tag(AVFormatContext *s) while ((e = av_dict_iterate(s->metadata, e))) { int val_len; - if (!string_is_ascii(e->key)) { + if (!av_str_is_ascii(e->key)) { av_log(s, AV_LOG_WARNING, "Non ASCII keys are not allowed\n"); continue; } diff --git a/libavformat/id3v2enc.c b/libavformat/id3v2enc.c index ac907c2758..d0095f545e 100644 --- a/libavformat/id3v2enc.c +++ b/libavformat/id3v2enc.c @@ -38,12 +38,6 @@ static void id3v2_put_size(AVIOContext *pb, int size) avio_w8(pb, size & 0x7f); } -static int string_is_ascii(const uint8_t *str) -{ - while (*str && *str < 128) str++; - return !*str; -} - static void id3v2_encode_string(AVIOContext *pb, const uint8_t *str, enum ID3v2Encoding enc) { @@ -74,8 +68,8 @@ static int id3v2_put_ttag(ID3v2EncContext *id3, AVIOContext *avioc, const char * /* check if the strings are ASCII-only and use UTF16 only if * they're not */ - if (enc == ID3v2_ENCODING_UTF16BOM && string_is_ascii(str1) && - (!str2 || string_is_ascii(str2))) + if (enc == ID3v2_ENCODING_UTF16BOM && av_str_is_ascii(str1) && + (!str2 || av_str_is_ascii(str2))) enc = ID3v2_ENCODING_ISO8859; avio_w8(dyn_buf, enc); @@ -390,7 +384,7 @@ int ff_id3v2_write_apic(AVFormatContext *s, ID3v2EncContext *id3, AVPacket *pkt) desc = e->value; /* use UTF16 only for non-ASCII strings */ - if (enc == ID3v2_ENCODING_UTF16BOM && string_is_ascii(desc)) + if (enc == ID3v2_ENCODING_UTF16BOM && av_str_is_ascii(desc)) enc = ID3v2_ENCODING_ISO8859; /* start writing */ -- 2.52.0 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org