From patchwork Sun Oct 22 21:51:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 44320 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1b28:b0:15d:8365:d4b8 with SMTP id ch40csp1069787pzb; Sun, 22 Oct 2023 14:51:26 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEtaFAe7KpGRFxUwVttCZDHWsqadOXT1rCIP6yxz1XHFc3r1NNF0eTqph6gXGUMrd+vAbcX X-Received: by 2002:a2e:be1c:0:b0:2c5:13e8:d54e with SMTP id z28-20020a2ebe1c000000b002c513e8d54emr5945317ljq.38.1698011486338; Sun, 22 Oct 2023 14:51:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698011486; cv=none; d=google.com; s=arc-20160816; b=yPQWdZwmFwm8arB46TAm3hr+BNKyEEynWBlZOOa38zjgq+WHDDjTdIOUs3tPfBhzZO y8cGb6wxThWacwywKPzFsUpFRlK1yR2azEW6UnTOc2fM8aioLbhYBZpsRaheSf58A/Qn bHjfL6Vjapl+2nxV+tqKXn4jn/nVnfRWnysN4q4B3WxHTWcEiewlgLuGBga9aXd1DyWY CMHO85SG1fZhYpBl/aK9P1nNSLsmPgY5uc5rlbKi86UIVnCHTRlUM2mTz1ubARJAd85Q 3YE/sNJCwGrpNQgbvhniDl5qGwSvLh7oM0tJ+snTohANKztzLaHlKIl+WeRudgCevlUC jZnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:delivered-to; bh=DgJwnFnOSG+ZA/F+JpAKDizpjSymoMiNnLTv8u0kWn4=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=EESLWTY7CK2TkO1tVdv2ABw23NZ/yDVuD2ZcWuJU96EzXX+k1062AFl4okiffxtrNQ BroqWC3gDe8FX9UTPszq6KET9Vq//seE6YwUU9YiSf6ohfPatyTfo0fcD0O+a9JHACyQ E0PZg7PjoH+tjOzgLSEasCHxVR96MuteXZQmS27BCYTNwkUqPknmjmZU4c/1K95svJzq 2L7hc0AUCiq+gqANQRKsSk33tVPsRtnJLB0x6k2/lhOWQ0Evfq1wTtwbhQEoSpmTi04u L6cuxEr3oZYUvFelz7+VrmC7x9xeSj6xiSz97SgUvfN8AdOmWtggP76pPZTuvkOWldEE jfyA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id z2-20020a05640235c200b0053457324642si2758175edc.228.2023.10.22.14.51.25; Sun, 22 Oct 2023 14:51:26 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5571368CA1F; Mon, 23 Oct 2023 00:51:21 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay4-d.mail.gandi.net (relay4-d.mail.gandi.net [217.70.183.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BC44D68C65F for ; Mon, 23 Oct 2023 00:51:14 +0300 (EEST) Received: by mail.gandi.net (Postfix) with ESMTPSA id 1866CE0002 for ; Sun, 22 Oct 2023 21:51:13 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Sun, 22 Oct 2023 23:51:05 +0200 Message-Id: <20231022215113.3469-1-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 X-GND-Sasl: michael@niedermayer.cc Subject: [FFmpeg-devel] [PATCH 1/9] avcodec/vlc: merge lost 16bit end of array check 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: sfmArs5hj1HY Also cleanup related code Signed-off-by: Michael Niedermayer --- libavcodec/vlc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libavcodec/vlc.c b/libavcodec/vlc.c index e4bbf2945e1..4f62eddf0fb 100644 --- a/libavcodec/vlc.c +++ b/libavcodec/vlc.c @@ -358,8 +358,8 @@ static void add_level(VLC_MULTI_ELEM *table, const int nb_elems, const int minlen, const int max, unsigned* levelcnt, VLC_MULTI_ELEM *info) { - if (nb_elems > 256 && curlevel > 2) - return; // No room + int is16bit = nb_elems>256; + int max_symbols = VLC_MULTI_MAX_SYMBOLS >> is16bit; for (int i = num-1; i > max; i--) { for (int j = 0; j < 2; j++) { int newlimit, sym; @@ -373,7 +373,7 @@ static void add_level(VLC_MULTI_ELEM *table, const int nb_elems, code = curcode + (buf[t].code >> curlen); newlimit = curlimit - l; l += curlen; - if (nb_elems>256) AV_WN16(info->val+2*curlevel, sym); + if (is16bit) AV_WN16(info->val+2*curlevel, sym); else info->val[curlevel] = sym&0xFF; if (curlevel) { // let's not add single entries @@ -386,7 +386,7 @@ static void add_level(VLC_MULTI_ELEM *table, const int nb_elems, levelcnt[curlevel-1]++; } - if (curlevel+1 < VLC_MULTI_MAX_SYMBOLS && newlimit >= minlen) { + if (curlevel+1 < max_symbols && newlimit >= minlen) { add_level(table, nb_elems, num, numbits, buf, code, l, newlimit, curlevel+1, minlen, max, levelcnt, info); From patchwork Sun Oct 22 21:51:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 44321 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1b28:b0:15d:8365:d4b8 with SMTP id ch40csp1069829pzb; Sun, 22 Oct 2023 14:51:36 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHOJhSKf+IImwhjNLSjNHM4JAmBuqNiHe7DiSRRO489PRu91zsU+Kf6az2dRWLV9IIECarx X-Received: by 2002:a05:6512:4019:b0:507:a620:6b96 with SMTP id br25-20020a056512401900b00507a6206b96mr6300298lfb.57.1698011496658; Sun, 22 Oct 2023 14:51:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698011496; cv=none; d=google.com; s=arc-20160816; b=1B28y2/b93AdxaQUGI8/D0EK53oHAp1FeqkrdkkHI4sUYNCEhwIU2MJE62NAWOlAWa V39i3Q4gDN5Em0dO5eHE6jniwBEIbLHw338IoqbLA42csDngv2MDLSIDjcUIBcEbsFAT 8z+JwNWNLHKSo0lHm+XWQ96di1MaeUT//wu/3GExQzblhodCRCb+azWtcOHtUgvxGjRI faPnGVH2aKbA8p6qMMU7OcDrUSt37gqVfg0FnsrAtHfFY0sk08qx4y7wsN3Lp8KjBvyB NXS93PjxxbTIKH9DXtuUNrXk9h0n5SrNUIfWFlDonLeP00h+GhDga77UOBzO61ASZ9lo oviQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=UBNHWiw3HzsL8Pbn+yiiJS66jdCkxfUuZe5ItRGT7Z0=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=e9u+HNWHHY2JzuQhaVa4KW8DbFXIE99H55pnU2cZvz89Mpv23YqHvalwcTvr3YASmp CfpZ6+X+JI+FUkYzdTFStyVCoFGXR1xZz9Wh2IpAdmlOVwNFtm9VesKw8M/XOSS5MNTT BW+fgxBV+ZWM1UQES2oD6/ugVJ7RzuD/ruDcluQQcWEgShMSHHOGQi6PX9oJU3Q8f1Z6 J3mBzlFrpU1rt+e93HusaVSdZbdGLdCGyyZELOdvgdGTzm4ZDl+kbr5QrRkv/Wk7AE7O ZTwdJe5xT5W7FumMGzRDBnkUlMIwGeb+qp5m8LQbuJD9ygFveT6yzYZA+f7rA32k7vtd yXMA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 21-20020a508e15000000b0053fc8898e87si2823096edw.234.2023.10.22.14.51.36; Sun, 22 Oct 2023 14:51:36 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8886868CA13; Mon, 23 Oct 2023 00:51:22 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net [217.70.183.197]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9C70F68C65F for ; Mon, 23 Oct 2023 00:51:15 +0300 (EEST) Received: by mail.gandi.net (Postfix) with ESMTPSA id ED6011C0004 for ; Sun, 22 Oct 2023 21:51:14 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Sun, 22 Oct 2023 23:51:06 +0200 Message-Id: <20231022215113.3469-2-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20231022215113.3469-1-michael@niedermayer.cc> References: <20231022215113.3469-1-michael@niedermayer.cc> X-GND-Sasl: michael@niedermayer.cc Subject: [FFmpeg-devel] [PATCH 2/9] avcodec/vlc: dont pass nb_elems into multi vlc code 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: jHrl2l/tOPDQ Signed-off-by: Michael Niedermayer --- libavcodec/vlc.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/libavcodec/vlc.c b/libavcodec/vlc.c index 4f62eddf0fb..77860430861 100644 --- a/libavcodec/vlc.c +++ b/libavcodec/vlc.c @@ -350,7 +350,7 @@ fail: return AVERROR_INVALIDDATA; } -static void add_level(VLC_MULTI_ELEM *table, const int nb_elems, +static void add_level(VLC_MULTI_ELEM *table, const int is16bit, const int num, const int numbits, const VLCcode *buf, uint32_t curcode, int curlen, @@ -358,7 +358,6 @@ static void add_level(VLC_MULTI_ELEM *table, const int nb_elems, const int minlen, const int max, unsigned* levelcnt, VLC_MULTI_ELEM *info) { - int is16bit = nb_elems>256; int max_symbols = VLC_MULTI_MAX_SYMBOLS >> is16bit; for (int i = num-1; i > max; i--) { for (int j = 0; j < 2; j++) { @@ -387,7 +386,7 @@ static void add_level(VLC_MULTI_ELEM *table, const int nb_elems, } if (curlevel+1 < max_symbols && newlimit >= minlen) { - add_level(table, nb_elems, num, numbits, buf, + add_level(table, is16bit, num, numbits, buf, code, l, newlimit, curlevel+1, minlen, max, levelcnt, info); } @@ -396,7 +395,7 @@ static void add_level(VLC_MULTI_ELEM *table, const int nb_elems, } static int vlc_multi_gen(VLC_MULTI_ELEM *table, const VLC *single, - const int nb_elems, const int nb_codes, const int numbits, + const int is16bit, const int nb_codes, const int numbits, VLCcode *buf, void *logctx) { int minbits, maxbits, max = nb_codes-1; @@ -424,7 +423,7 @@ static int vlc_multi_gen(VLC_MULTI_ELEM *table, const VLC *single, AV_WN16(table[j].val, single->table[j].sym); } - add_level(table, nb_elems, nb_codes, numbits, buf, + add_level(table, is16bit, nb_codes, numbits, buf, 0, 0, FFMIN(maxbits, numbits), 0, minbits, max, count, &info); av_log(logctx, AV_LOG_DEBUG, "Joint: %d/%d/%d/%d/%d codes min=%ubits max=%u\n", @@ -480,7 +479,7 @@ int ff_vlc_init_multi_from_lengths(VLC *vlc, VLC_MULTI *multi, int nb_bits, int ret = vlc_common_end(vlc, nb_bits, j, buf, flags, buf); if (ret < 0) goto fail; - ret = vlc_multi_gen(multi->table, vlc, nb_elems, j, nb_bits, buf, logctx); + ret = vlc_multi_gen(multi->table, vlc, nb_elems > 256, j, nb_bits, buf, logctx); if (buf != localbuf) av_free(buf); return ret; From patchwork Sun Oct 22 21:51:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 44322 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1b28:b0:15d:8365:d4b8 with SMTP id ch40csp1069869pzb; Sun, 22 Oct 2023 14:51:45 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFKWg8q9Z1frebjvgbxm68zGeJir5cqoSKOoKcszlZpeSeG/PRKio5vNG04eYrlsu19V5TV X-Received: by 2002:a17:907:5cb:b0:9ae:4eb9:e09b with SMTP id wg11-20020a17090705cb00b009ae4eb9e09bmr6405231ejb.27.1698011505684; Sun, 22 Oct 2023 14:51:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698011505; cv=none; d=google.com; s=arc-20160816; b=RRcBPFHCfEFF3xP/L07/Z4wZflfja6UjsJK6CeCFLK80+RLTRpeEKxemokLixwrsvh f50N4tMenfQ7j0YKn0H2r73DUtndQNbiPvZSzUkLIFx9lwSIeHZDZYc4MlS9txFyfUE4 sKF14IGx9nGfgP3DQZi5tAjxqCyWew19kWcXE2s1Z33D23HCLfjyQ35Ol/m9eR3nSdQA 1Mb57PEDP44laWCEpn3S8Mi0C7F136iLthRyIHeFP4h+Nr9x5ssCFkbmuj9tpUVKYzJw tDRdLOeKqOxM++d7SxwkIQ6ltesbX2i2hFLGTI/E1rmStoHY8u8HHC93iRF+g6Q/fmK9 4eUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=5BY7mzyz7+FA5JHJfI3QJxs6nQYbwrAJm70BYpTmUHU=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=ZJ+fAT6DSxd1qGsQ8WK3OPTBQT0LE70tN6YFgwo6Y1JQV1wZES2S/NxITbgs9J+5p5 Bq7apyY/D9BQJEDJC+Ntw2rvrnSxL8XbIc9lW3u2sz2BbaW3mb27liiOXsPDS8jPFpbw F04slHKwx6n43vReBzFsv/rNTbybhTbAwksJSPzkh5ioDpgk/7y4SqSKgb1UlJdBX/J7 q0tKj8Iv5QmV5Mmmwut72FaclrfT+SIo/+qZpFFNmCjDuecmZAzQ7YFv4e31hiutTwuN wtS/5dVPh+Fffj3h8IiTYXAq4cnIsznJvgj8cux+2YCjOHNugh5GtlixxTywxas/8cxZ jdRg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id gs4-20020a170906f18400b009b28c286b38si2631842ejb.789.2023.10.22.14.51.45; Sun, 22 Oct 2023 14:51:45 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A672B68CA22; Mon, 23 Oct 2023 00:51:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net [217.70.183.198]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 91C9968CA20 for ; Mon, 23 Oct 2023 00:51:16 +0300 (EEST) Received: by mail.gandi.net (Postfix) with ESMTPSA id DEF33C0006 for ; Sun, 22 Oct 2023 21:51:15 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Sun, 22 Oct 2023 23:51:07 +0200 Message-Id: <20231022215113.3469-3-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20231022215113.3469-1-michael@niedermayer.cc> References: <20231022215113.3469-1-michael@niedermayer.cc> X-GND-Sasl: michael@niedermayer.cc Subject: [FFmpeg-devel] [PATCH 3/9] avcodec/vlc: Skip subtable entries in multi VLC 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Lh/OKUz6EHRC These entries do not correspond to VLC symbols that can be used they do corrupt various variables like min/max bits This also no longer assumes that there is a single non subtable entry Probably fixes some infinite loops too Signed-off-by: Michael Niedermayer --- libavcodec/vlc.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/libavcodec/vlc.c b/libavcodec/vlc.c index 77860430861..65883a506ff 100644 --- a/libavcodec/vlc.c +++ b/libavcodec/vlc.c @@ -401,15 +401,23 @@ static int vlc_multi_gen(VLC_MULTI_ELEM *table, const VLC *single, int minbits, maxbits, max = nb_codes-1; unsigned count[VLC_MULTI_MAX_SYMBOLS-1] = { 0, }; VLC_MULTI_ELEM info = { { 0, }, 0, 0, }; + int count0 = 0; - minbits = buf[0].bits; - maxbits = buf[0].bits; + for (int j = 0; j < 1<table[j].len > 0) { + count0 ++; + j += (1 << (numbits - single->table[j].len)) - 1; + } + } + + minbits = 32; + maxbits = 0; - for (int n = 1; n < nb_codes; n++) { + for (int n = nb_codes - count0; n < nb_codes; n++) { minbits = FFMIN(minbits, buf[n].bits); maxbits = FFMAX(maxbits, buf[n].bits); } - maxbits = FFMIN(maxbits, numbits); + av_assert0(maxbits <= numbits); while (max >= nb_codes/2) { if (buf[max].bits+minbits > maxbits) From patchwork Sun Oct 22 21:51:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 44323 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1b28:b0:15d:8365:d4b8 with SMTP id ch40csp1069893pzb; Sun, 22 Oct 2023 14:51:54 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHW/W0GnsW9jSzV3k1bMuHlS70krfN73IstLhFdSXeE9kvGio9SmUI6m8BR4nsPPwASuo75 X-Received: by 2002:a17:907:720f:b0:9bd:804a:5601 with SMTP id dr15-20020a170907720f00b009bd804a5601mr5394440ejc.54.1698011513838; Sun, 22 Oct 2023 14:51:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698011513; cv=none; d=google.com; s=arc-20160816; b=ZhmphS4pUljkm9Pv/8mz0TL8lgOqsBnXZ01qjIKj4/iLFgIu4Wzvnqke+oqbyy6rNa 3rWOAkQjTuyVr7Bd5o7UVfttX7yvaMrH1m8EfIthnaX1Yo8uGF6KfwIT/KzDVb6hKbJE eN6aarKPFRUlNJOifKkTcX3YrGkEdLI6XMWcvqzJNL1B1XLsZoGDSonopdQHOQiTXpfM Hw2Byz+9GvcVWEkZV/PHcw48yZOk2JVMlcB196Kas7l9xj6U59O0+fQC82jypD8wr1ur psY3MzInbamJTBJyttl/I4og50D55MBAdA13ySHIZQWohuT51zgg0SfzAOrmRZ/9jZKp vxOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=ysVV2V7vT2JRDKaLcpOxHhBKZOdBdzTEHeaGsBhsh/0=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=atZaW7yfM75psVkMJcfOyV/VhzwtMxFHJGlF7NrNt+FlSw8oh+BT6VL6lldqKPRcBL O5FFUDhf83Wopp3Eiotbr0eNb+QuiC9QYIs13cRVauT4VuFGCkJDneBJO48RgYNeGk9b XQG5gZXtLJARki2hB6hczriC49q5LBmD90KRYbLI9LuzsHesoFPDzALnU6W+4V0468Qe 25Dn4OnAiMOr9FkHRKmQun+1VQk7ZxnktwHHpHK4GMx5wixFK8G0OPuM9bXhkuEqDfbw lyNsr9GzEbQnAMsjx0YudaIVSZcRKxOBkrArtFtxtjhtTlsofB4QyihGEigwb6mfvMiH wVOg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id g12-20020a1709061c8c00b00992bdcb72f0si2663407ejh.339.2023.10.22.14.51.52; Sun, 22 Oct 2023 14:51:53 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BB41B68CA29; Mon, 23 Oct 2023 00:51:25 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay7-d.mail.gandi.net (relay7-d.mail.gandi.net [217.70.183.200]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7129068C65F for ; Mon, 23 Oct 2023 00:51:17 +0300 (EEST) Received: by mail.gandi.net (Postfix) with ESMTPSA id C8D8320003 for ; Sun, 22 Oct 2023 21:51:16 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Sun, 22 Oct 2023 23:51:08 +0200 Message-Id: <20231022215113.3469-4-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20231022215113.3469-1-michael@niedermayer.cc> References: <20231022215113.3469-1-michael@niedermayer.cc> X-GND-Sasl: michael@niedermayer.cc Subject: [FFmpeg-devel] [PATCH 4/9] avcodec/vlc: Replace mysterious max computation code in multi vlc 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 76isq/JE7NGk Signed-off-by: Michael Niedermayer --- libavcodec/vlc.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/libavcodec/vlc.c b/libavcodec/vlc.c index 65883a506ff..9b7a42f79a3 100644 --- a/libavcodec/vlc.c +++ b/libavcodec/vlc.c @@ -359,7 +359,7 @@ static void add_level(VLC_MULTI_ELEM *table, const int is16bit, unsigned* levelcnt, VLC_MULTI_ELEM *info) { int max_symbols = VLC_MULTI_MAX_SYMBOLS >> is16bit; - for (int i = num-1; i > max; i--) { + for (int i = num-1; i >= max; i--) { for (int j = 0; j < 2; j++) { int newlimit, sym; int t = j ? i-1 : i; @@ -398,7 +398,7 @@ static int vlc_multi_gen(VLC_MULTI_ELEM *table, const VLC *single, const int is16bit, const int nb_codes, const int numbits, VLCcode *buf, void *logctx) { - int minbits, maxbits, max = nb_codes-1; + int minbits, maxbits, max; unsigned count[VLC_MULTI_MAX_SYMBOLS-1] = { 0, }; VLC_MULTI_ELEM info = { { 0, }, 0, 0, }; int count0 = 0; @@ -419,10 +419,13 @@ static int vlc_multi_gen(VLC_MULTI_ELEM *table, const VLC *single, } av_assert0(maxbits <= numbits); - while (max >= nb_codes/2) { - if (buf[max].bits+minbits > maxbits) + for (max = nb_codes; max > nb_codes - count0; max--) { + // We can only add a code that fits with the shortest other code into the table + // We assume the table is sorted by bits and we skip subtables which from our + // point of view are basically random corrupted entries + // If we have not a single useable vlc we end with max = nb_codes + if (buf[max - 1].bits+minbits > numbits) break; - max--; } for (int j = 0; j < 1< X-Patchwork-Id: 44324 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1b28:b0:15d:8365:d4b8 with SMTP id ch40csp1069915pzb; Sun, 22 Oct 2023 14:52:02 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFjnB3+bnUngu6BXizZpvrfYO/CqCL89GEOtECkxud3dqQ8hG6+K/wLBP1NamRDEN6S5mlI X-Received: by 2002:a17:907:1c93:b0:9bd:e99b:82dc with SMTP id nb19-20020a1709071c9300b009bde99b82dcmr5652471ejc.61.1698011521966; Sun, 22 Oct 2023 14:52:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698011521; cv=none; d=google.com; s=arc-20160816; b=CJ391Eshd7NGSZTXdQ5KsnF7BUoJisuBRbaypqbeVcov9hPJ3csu41eCulk09MDLG/ eHVE97y0P36ChmDczNa2DOVOSd3sJ9z3VP++3DWE5zaPR6QtHOk9SsLldFbiPVc/IjYE 6wI6gsDMpGmBUXsIeW3iAfv8fPXoqHIxOEDAK40w/dFqHGKzmnrqIwaoEaH9Tt8nCRmr 09hM5LqiiaNOesdm1B8qFe0EXrhmQNtFRgtVsE5qQlQWriEz2oiTsiNWTUt1Ol8Q9xiH zQVoxFDXDsMUfTJQujZkQsDCgW8Toj7hGHgq52Kq48q8VXwpmG7xJ8ZgeV1IkGomipP+ D/UQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=i02K7+l5xlc3xkr6gk23+NTv6vrszqWleCQErVrO6gM=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=UKL/SlfjzZ+H6EudX+tAloEWco8sN2z5kdqre4pVozsUZRZVoTqLdYhP6BlMokVdym vew4YbQ77kFSS6BC8k0Wsym+1YqaGL9AoqwH9/AI4F/47iZ9SON29eXL++wpXOgIAyqS JSliYGeLzCVo+Uh3H7UQnmV+d9/cx06MSbeZvrdxo06CnXMAT5L49KVIfAI12QXvrtqr t81ATE/O9Iv9doFcN3ftImzCZgPCsRmblgiLFXa/I7GTeBdjK0vQ43L/jB+mUtfdRkIh vN78PjCIxqMTV5w/54XxzFdrh5MkA0C3bWG5QxhLyEOZ56aW5UMN1GpY8UKs9ivd3FqG MlDw== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ha22-20020a170906a89600b009ad84beca10si2568494ejb.765.2023.10.22.14.52.01; Sun, 22 Oct 2023 14:52:01 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C2C4E68CA63; Mon, 23 Oct 2023 00:51:26 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net [217.70.183.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9FE1568C9CC for ; Mon, 23 Oct 2023 00:51:18 +0300 (EEST) Received: by mail.gandi.net (Postfix) with ESMTPSA id ECB9B240002 for ; Sun, 22 Oct 2023 21:51:17 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Sun, 22 Oct 2023 23:51:09 +0200 Message-Id: <20231022215113.3469-5-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20231022215113.3469-1-michael@niedermayer.cc> References: <20231022215113.3469-1-michael@niedermayer.cc> X-GND-Sasl: michael@niedermayer.cc Subject: [FFmpeg-devel] [PATCH 5/9] avcodec/vlc: Pass VLC_MULTI_ELEM directly not by pointer 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: SzEm3tVWvxXq This makes the code more testable as uninitialized fields are 0 and not random values from the last call Signed-off-by: Michael Niedermayer --- libavcodec/vlc.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/libavcodec/vlc.c b/libavcodec/vlc.c index 9b7a42f79a3..4adec2da705 100644 --- a/libavcodec/vlc.c +++ b/libavcodec/vlc.c @@ -356,7 +356,7 @@ static void add_level(VLC_MULTI_ELEM *table, const int is16bit, uint32_t curcode, int curlen, int curlimit, int curlevel, const int minlen, const int max, - unsigned* levelcnt, VLC_MULTI_ELEM *info) + unsigned* levelcnt, VLC_MULTI_ELEM info) { int max_symbols = VLC_MULTI_MAX_SYMBOLS >> is16bit; for (int i = num-1; i >= max; i--) { @@ -372,16 +372,16 @@ static void add_level(VLC_MULTI_ELEM *table, const int is16bit, code = curcode + (buf[t].code >> curlen); newlimit = curlimit - l; l += curlen; - if (is16bit) AV_WN16(info->val+2*curlevel, sym); - else info->val[curlevel] = sym&0xFF; + if (is16bit) AV_WN16(info.val+2*curlevel, sym); + else info.val[curlevel] = sym&0xFF; if (curlevel) { // let's not add single entries uint32_t val = code >> (32 - numbits); uint32_t nb = val + (1U << (numbits - l)); - info->len = l; - info->num = curlevel+1; + info.len = l; + info.num = curlevel+1; for (; val < nb; val++) - AV_COPY64(table+val, info); + AV_COPY64(table+val, &info); levelcnt[curlevel-1]++; } @@ -435,7 +435,7 @@ static int vlc_multi_gen(VLC_MULTI_ELEM *table, const VLC *single, } add_level(table, is16bit, nb_codes, numbits, buf, - 0, 0, FFMIN(maxbits, numbits), 0, minbits, max, count, &info); + 0, 0, FFMIN(maxbits, numbits), 0, minbits, max, count, info); av_log(logctx, AV_LOG_DEBUG, "Joint: %d/%d/%d/%d/%d codes min=%ubits max=%u\n", count[0], count[1], count[2], count[3], count[4], minbits, max); From patchwork Sun Oct 22 21:51:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 44325 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1b28:b0:15d:8365:d4b8 with SMTP id ch40csp1069943pzb; Sun, 22 Oct 2023 14:52:10 -0700 (PDT) X-Google-Smtp-Source: AGHT+IExQfHq4Y/l4Iz2bTFI+kWLn6fx0s07FfjkDVEUQmxASaWbBhj38JlyBGnjIATcCo4pn5Sv X-Received: by 2002:a17:907:962a:b0:9bf:8e1e:b229 with SMTP id gb42-20020a170907962a00b009bf8e1eb229mr6112424ejc.21.1698011530115; Sun, 22 Oct 2023 14:52:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698011530; cv=none; d=google.com; s=arc-20160816; b=caLaTVQNQcAmCZKhv8WT6OEMtm0LDM0YuZC1xtv7dBn4rYVbubHWjqEkMcUuDwt6mk om7h92owH8zY8z6gwMms9K+rHALdv7T8+aNjO+feCHP0CmOdcM1GfbgjcUTDYxFi8i/c unoYtQ9gEAOGVlyGPQ1JjmKkw4d7l8ruAeE9FYVrQ20eQKA8KU7rcKdh1IQEQdo5lsNZ PRi5IGqy0g6vS8Q6tNlE0QVTuxsoJ1NGs4HMY6E5Wd0j8HebgFazT/CLYZd7neLbBbE0 IXU6Rdpt6LqRtDI2yMk9lcbQFRzC3iId3fNvUpQ1wEoxiNoU7ZK93tJWme9Nc7pY40gL MHfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=LAE6Wx8eMoGHuuaTUh1gh1TgW3NTd2iAak1a6kCtPkY=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=ESzSH1l1kSJzhKuuSs46ZlfQm0NNBQsQjbWoZUshN/+PmG0Xs7uKopc3ZOvCdH5+5h k3AdGYP9rBREHSwBXbyiL4KCYMsiXENVba79VJe8QN4NR20JaJFtbieU94wJa1JBcNst Mtp0Vb+jBVsXOc7MAqF5o5iKiNz4lXVrvbDp1wpatvk/I2lGrWkvK21nN1JzJ9jZi5Wz 7cx1dZh23C1bA5JncXfhXgXrF1Ha+FCZpX1m4Bo7yr1zUh8wu5QpWydkX2qgACwKsPqo d+zg3tcLsA5fqazlmQCDulHjzx4WVpJHiH8HCWUcarzpiXiTb8V7P7Ny38MHoGVTG2lC mVKA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id gn36-20020a1709070d2400b009a196ce523esi2946107ejc.473.2023.10.22.14.52.09; Sun, 22 Oct 2023 14:52:10 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B5FC168CA88; Mon, 23 Oct 2023 00:51:27 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net [217.70.183.197]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4299268CA22 for ; Mon, 23 Oct 2023 00:51:19 +0300 (EEST) Received: by mail.gandi.net (Postfix) with ESMTPSA id A06F91C0005 for ; Sun, 22 Oct 2023 21:51:18 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Sun, 22 Oct 2023 23:51:10 +0200 Message-Id: <20231022215113.3469-6-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20231022215113.3469-1-michael@niedermayer.cc> References: <20231022215113.3469-1-michael@niedermayer.cc> X-GND-Sasl: michael@niedermayer.cc Subject: [FFmpeg-devel] [PATCH 6/9] avcodec/vlc: Remove mysterious jitter loop in multi VLC 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: o7QWoNcCH/BU No difference in my testcase in the tables content Signed-off-by: Michael Niedermayer --- libavcodec/vlc.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/libavcodec/vlc.c b/libavcodec/vlc.c index 4adec2da705..4c96fcddc9b 100644 --- a/libavcodec/vlc.c +++ b/libavcodec/vlc.c @@ -360,16 +360,14 @@ static void add_level(VLC_MULTI_ELEM *table, const int is16bit, { int max_symbols = VLC_MULTI_MAX_SYMBOLS >> is16bit; for (int i = num-1; i >= max; i--) { - for (int j = 0; j < 2; j++) { int newlimit, sym; - int t = j ? i-1 : i; - int l = buf[t].bits; + int l = buf[i].bits; uint32_t code; - sym = buf[t].symbol; + sym = buf[i].symbol; if (l >= curlimit) return; - code = curcode + (buf[t].code >> curlen); + code = curcode + (buf[i].code >> curlen); newlimit = curlimit - l; l += curlen; if (is16bit) AV_WN16(info.val+2*curlevel, sym); @@ -390,7 +388,6 @@ static void add_level(VLC_MULTI_ELEM *table, const int is16bit, code, l, newlimit, curlevel+1, minlen, max, levelcnt, info); } - } } } From patchwork Sun Oct 22 21:51:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 44326 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1b28:b0:15d:8365:d4b8 with SMTP id ch40csp1069976pzb; Sun, 22 Oct 2023 14:52:18 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGBjGVEBHetbxCjbP0lsXJtae27OBiwkovCPsxQ0s6XKa+wd03XC38Luz9V18Sxo8d1oiXw X-Received: by 2002:a50:d4d6:0:b0:53e:2e74:7e0c with SMTP id e22-20020a50d4d6000000b0053e2e747e0cmr5616055edj.24.1698011538278; Sun, 22 Oct 2023 14:52:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698011538; cv=none; d=google.com; s=arc-20160816; b=QXfIIWu9mrZmIb3NcB7z1ZG+SoU0H0VnE2ieKX4yqVGS47y9uy+Av1hUEyuwAFHND9 BHUET78dnmP2cPzihQ5QUBIbv1BlmbY3eo7MVW5AF0YDUGbk7h4SIcMDz27lmFBthX/A 4lOpP1DBxPPXRByTN/jnA0fHE7Zu1CA+Wc21Ooaik3vvDMeyjWCv4OjDBFCBC7W+bRhQ XB1nWiflknuZ8tRo1wiomogGE69dWIlaPRb8k3AmveQR61QKINIdxgBsBnU8zzGKaEgM e9e83jFjs1EHXSUWvSZME167l1GITEIVUN4vYGK0/uNV19RevBRWozGuioXgj3MZ8vqg z2GA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=uTQTO8UcnV2wDOjgEPrue2ULSJHMCB4BRlu8mwKHWdI=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=xEV3Rh9tOhCjwKwWBmvadbT7oSdN65mAYpQlm+vawrJ15BGsZyBr5LD6FgBUY/mUOz SGOwXl+XeNBAMs7zAC+43xKmqXeplLtzKt8tlRBpn/DdmISpee1D2fInAtVkRLUInn45 bj5z6NaXarY8UkWyJpXiYNsNXGTL9aD7ZRIyPXxgGoWStwk3MW52Ng/9FtPrmVhkb90y lX7ZblTN0kDxYnmvAV3AlFGDl9CpXHJJ6QQscpqGaXxBdCSJ9GAK/O207oRRpIUCpldZ LdiJ72AZSvbSOK4isMmeIyHZy6UuQmRBO4xiT1mz4V4z5hTShPq/ricqmBbGMiO85z6E aHVg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id b11-20020a056402350b00b0053ded681e2csi2739968edd.144.2023.10.22.14.52.17; Sun, 22 Oct 2023 14:52: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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DB24C68CAAF; Mon, 23 Oct 2023 00:51:28 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net [217.70.183.201]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5D9C468C9CC for ; Mon, 23 Oct 2023 00:51:20 +0300 (EEST) Received: by mail.gandi.net (Postfix) with ESMTPSA id 825F41BF205 for ; Sun, 22 Oct 2023 21:51:19 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Sun, 22 Oct 2023 23:51:11 +0200 Message-Id: <20231022215113.3469-7-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20231022215113.3469-1-michael@niedermayer.cc> References: <20231022215113.3469-1-michael@niedermayer.cc> X-GND-Sasl: michael@niedermayer.cc Subject: [FFmpeg-devel] [PATCH 7/9] Revert "avcodec/vlc: add correct upper limit for recursive function" 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: fvqsH6F3epyg This reverts commit fa20f5cd9e131f22da06ef57bf5aedd87ff51a90. --- libavcodec/vlc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/vlc.c b/libavcodec/vlc.c index 4c96fcddc9b..79544006677 100644 --- a/libavcodec/vlc.c +++ b/libavcodec/vlc.c @@ -432,7 +432,7 @@ static int vlc_multi_gen(VLC_MULTI_ELEM *table, const VLC *single, } add_level(table, is16bit, nb_codes, numbits, buf, - 0, 0, FFMIN(maxbits, numbits), 0, minbits, max, count, info); + 0, 0, numbits, 0, minbits, max, count, info); av_log(logctx, AV_LOG_DEBUG, "Joint: %d/%d/%d/%d/%d codes min=%ubits max=%u\n", count[0], count[1], count[2], count[3], count[4], minbits, max); From patchwork Sun Oct 22 21:51:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 44327 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1b28:b0:15d:8365:d4b8 with SMTP id ch40csp1070009pzb; Sun, 22 Oct 2023 14:52:27 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFjMcSfDxfbZHXZfpBzvcYaIx7mdp/vYSS4B8W6Mpy2UGCrii9PKL0rNA+4MuGB1eGymdQP X-Received: by 2002:a17:907:94c3:b0:9bf:4e0b:fb06 with SMTP id dn3-20020a17090794c300b009bf4e0bfb06mr6114099ejc.14.1698011546995; Sun, 22 Oct 2023 14:52:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698011546; cv=none; d=google.com; s=arc-20160816; b=hqvLEHl3mm61Bf5xn+eh5dYhTBsfkpcZ5e02Zyg+27na8CekE4+/R+TRA76ZZ8fn0i CsdqS7CeU/BglZFQNoFXTP16hdo1CXgzaBFHFBs0O4f4UAw7Ic9MJrrvO7Z0j7NyVn5Y otYvKbDaPRsfqGk3rGP7krYXeq9nYjwTf/iZVGGPzhpX53RUZH17D0CboPdnDbhp2TU0 5S+sf0Ml7YXyW/ftg6M8vKmOg460Q8/kfoqtLBqi8OjGx8uCbMf0JvEiLmoNjgxrK/ty NRMAza+x6wreckIHPp8qxgcRFTKOBkDKEgkoQUgWZSrAEwbNU+EN9ahRIBkEWdng7CP3 1VEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=0zIJOYX2cmO1aDUGVm75wAuoeFR2kePUgK3Twt4ZOp8=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=eeJRmEgtJd6krofjT853ANlHCByw1ioNXPZ+VpdTEBAyMdCKxQ43cnekvdwiuzpRne yfHO3Yx5+7hsJwlOjYBXTCwuCdBl1TZDhLrpwfU9DR1zAE32Y6c+/dlu37d4bj/ddAyR 2cmsO6dOc8a9my/u5cUffpGjDMVFHh+ZLIX2LdLjHIn0iUTOWy02hs0XyIZdbVovlyve MlvtjomBk4VJ/ffHWhfoi/s+1LOTS3DoXXYJWO+/Mt1SK9rzz+4Z3EQELJQ2J1dWX+pi VQQwGcUQuSl1RO+3VpcV0+a3Mm0Ks0+GXVo7qEF+NU3KiSQh+koU/e4WWCgaP8ceS1Kj p5LQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id i26-20020a170906115a00b0099df733c29dsi2660935eja.285.2023.10.22.14.52.26; Sun, 22 Oct 2023 14:52:26 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EC5E568CAC6; Mon, 23 Oct 2023 00:51:29 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net [217.70.183.201]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C98CF68CA50 for ; Mon, 23 Oct 2023 00:51:20 +0300 (EEST) Received: by mail.gandi.net (Postfix) with ESMTPSA id 34B6A1BF208 for ; Sun, 22 Oct 2023 21:51:20 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Sun, 22 Oct 2023 23:51:12 +0200 Message-Id: <20231022215113.3469-8-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20231022215113.3469-1-michael@niedermayer.cc> References: <20231022215113.3469-1-michael@niedermayer.cc> X-GND-Sasl: michael@niedermayer.cc Subject: [FFmpeg-devel] [PATCH 8/9] Revert "avcodec/vlc: fix off by one in limit check for multi" 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: xHzKCZLN5A7q This with the last revert results in a table with additional entries This reverts commit b23eaf968e375f2d38865d90a788221caead3324. --- libavcodec/vlc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/vlc.c b/libavcodec/vlc.c index 79544006677..ceabeba5408 100644 --- a/libavcodec/vlc.c +++ b/libavcodec/vlc.c @@ -365,7 +365,7 @@ static void add_level(VLC_MULTI_ELEM *table, const int is16bit, uint32_t code; sym = buf[i].symbol; - if (l >= curlimit) + if (l > curlimit) return; code = curcode + (buf[i].code >> curlen); newlimit = curlimit - l; From patchwork Sun Oct 22 21:51:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 44328 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1b28:b0:15d:8365:d4b8 with SMTP id ch40csp1070042pzb; Sun, 22 Oct 2023 14:52:34 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGTrOfu393kScqqAqd7xIKQxEBsiKDLwOaEw2Q8kYRmI6MlNNsJ1Emh2FxgDb8Bw9Dbc832 X-Received: by 2002:a17:907:2cc4:b0:9c3:d356:ad0c with SMTP id hg4-20020a1709072cc400b009c3d356ad0cmr5961456ejc.24.1698011554652; Sun, 22 Oct 2023 14:52:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698011554; cv=none; d=google.com; s=arc-20160816; b=E+O8idESUBQ4TlhQMU+iYoaehKfFAIx1nucezGM4T0coGzbKaKoIea/tIRlSkfMt1X RTWkLVBA3CqDhB8AiBE+sCfGu89+CI6W8fvx+Pszarxup32L/tCJIQqXoLBNffXa+ZGR Zj5ziTeRjntzKg3ucU3AVv6psTUeEDkUDmV2GnOjVZRYlaWqADFf2joEztk5FGCP/eXc j7tugteGXf51dh0ngAe/Kbpew1136avjUqpqMfgp2qqrNMyAm78WgSXPsysY/01QMmUa +BxjRwERkXHcFlI6E/j6gwpHwu+DiRi+C0Nq1Ik45b7YiW1QHa5NxXKuHSs/eUgrCf2Q Td6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=pl2k5m118YDg+PM5EbcQen3mj3nMeBvxVzFFBt94WVk=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=O4iYeRHO3JtBrs6Q8ioLm/qALz+zytYMPf+79jX9a56GBzk+4NgW/rwTr9FfGcftSb NS3Yv1whe2J6mtjcOaNGdjHx0ZmVm5YWEmAr16aAhz1cITk3cxnBtSXQJnC8vaL3fQqy Oxoo1dnRQ1cvIjq9JkAXecGQqtDHwaDB/l7h6xWOFUQU0zk593Ji2dNxF+lkcB80RiUj qpMkKsO+edkgZy5SOAZTzHIMBgSBKyy11kqyUQjsoKJRoV3FgvDRpQiZ6w2aTDWaI4hK UF5aTdX2PfswQ5mR6c3um9RCmyN3QPzrb3mnwd8SJcp6d4SFsrl+xn6DhzsnHtdfA85E 7UUg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id j7-20020a170906534700b0099279210464si2680747ejo.420.2023.10.22.14.52.34; Sun, 22 Oct 2023 14:52:34 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1218168CAD1; Mon, 23 Oct 2023 00:51:31 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay7-d.mail.gandi.net (relay7-d.mail.gandi.net [217.70.183.200]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7BF4C68CA44 for ; Mon, 23 Oct 2023 00:51:21 +0300 (EEST) Received: by mail.gandi.net (Postfix) with ESMTPSA id E01B720005 for ; Sun, 22 Oct 2023 21:51:20 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Sun, 22 Oct 2023 23:51:13 +0200 Message-Id: <20231022215113.3469-9-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20231022215113.3469-1-michael@niedermayer.cc> References: <20231022215113.3469-1-michael@niedermayer.cc> X-GND-Sasl: michael@niedermayer.cc Subject: [FFmpeg-devel] [PATCH 9/9] avcodec/vlc: simplify min/maxbits in multi VLC 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: PBoLDc+Aj4Oy nothing uses maxbits, so its removed minbits is just the last entry (verified with assert on fate) This basically reverts 58d9b5caf3d332c6495f9af437158bf45531a05e for the minbits computation Signed-off-by: Michael Niedermayer --- libavcodec/vlc.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/libavcodec/vlc.c b/libavcodec/vlc.c index ceabeba5408..de16424c93d 100644 --- a/libavcodec/vlc.c +++ b/libavcodec/vlc.c @@ -395,7 +395,7 @@ static int vlc_multi_gen(VLC_MULTI_ELEM *table, const VLC *single, const int is16bit, const int nb_codes, const int numbits, VLCcode *buf, void *logctx) { - int minbits, maxbits, max; + int minbits, max; unsigned count[VLC_MULTI_MAX_SYMBOLS-1] = { 0, }; VLC_MULTI_ELEM info = { { 0, }, 0, 0, }; int count0 = 0; @@ -407,14 +407,9 @@ static int vlc_multi_gen(VLC_MULTI_ELEM *table, const VLC *single, } } - minbits = 32; - maxbits = 0; - - for (int n = nb_codes - count0; n < nb_codes; n++) { - minbits = FFMIN(minbits, buf[n].bits); - maxbits = FFMAX(maxbits, buf[n].bits); - } - av_assert0(maxbits <= numbits); + //This is only correct if count0 > 0 and the table is sorted + //minbits is not used if count0 == 0 and other parts assume the table is sorted too + minbits = buf[nb_codes - 1].bits; for (max = nb_codes; max > nb_codes - count0; max--) { // We can only add a code that fits with the shortest other code into the table