From patchwork Wed Jan 5 21:56:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 33105 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp1111837iog; Wed, 5 Jan 2022 13:57:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJwSGP42XqMS1tczTLvunWQJeq9vxMsY7psuiaFbGV3VhRyXTHLTwuhbkFfkMunSDz+omqGs X-Received: by 2002:a17:906:76ce:: with SMTP id q14mr45292074ejn.136.1641419832405; Wed, 05 Jan 2022 13:57:12 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id s21si69318edy.337.2022.01.05.13.57.12; Wed, 05 Jan 2022 13:57:12 -0800 (PST) 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=@outlook.com header.s=selector1 header.b=dhGg3BGo; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E469468AEF6; Wed, 5 Jan 2022 23:56:41 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075019.outbound.protection.outlook.com [40.92.75.19]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CB15C68AE3E for ; Wed, 5 Jan 2022 23:56:38 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MrKm2Vty5iO2b8eMimEiXQAHjDjLnP1krItanLTYLa6lRp5jyEqT3/nvzUc5E/AjTKG6YC10HL8zsDbHSw6Pe1gcS2+XFs2LfW22D6aqg4evyGZ4FvF4e/wKoG5+5EUfJ8bFWTdRThfQ5o/wizuXtmqHo57sQ4sed4ONcJJX/zTqrj7//d6v8NnDvAwmWy+N8pAOnXkA5ZC4/0VNQOpdNLW6MJlYFfGk5GbFBEgseSCXiwY47AJImo71B+IvRKHb3szrnLvTFOUoFiE4ZhhMOsmY8baQIBDQlb86Lve9SVN+0subrU1IHyCxtzcsCdhhwSxDpFb7c8o3P6gG/EssAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Cxx+ngHcjzULKChVu5YC3b1yvyzpYhNSGT3k00vBjJc=; b=P/zSk+Po9a4EVcUNfnSOo66hRH+nDKo+qGSkg8eBxqo7ovDbK8HkGiKQ9qALvkoRUgA7gMBfx9QyZHMfAz6dCxPWN8IXEfbctyOjDauY4OhTP02iNQwqXroYuVZHCojJI1N87BHooel9AL/yeQx5c+CYqEjq+ZMTcE79j8x+V0JK8JAEvKzsunHLUODPweuZsfTCZUgbuG/Zto4ycobwroNDbHt9fnu79oxCUNKpQ5vMoybjz7I2xJY9Q1w21X+RfNxH369ZNgoTP4nETRqJ2eSNs7KhXYs0sRF2LCaI7Tir0os+vSG9BV/38vSt+caNUHtznzJdSrRqwL9xGWyNXg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Cxx+ngHcjzULKChVu5YC3b1yvyzpYhNSGT3k00vBjJc=; b=dhGg3BGogY1HNp4xJgewf7FhUOQj7Y8Uo+9TIXHn4qcZL7h8ZCnpKirmyIgWgJgA7piqZLdMBX7c8VjDcmZXpMbqiMrGnOWVN/bG4wTpQ4NbwXfFh1UbcWdzLbkIWFQZwaJMIFXl5USQ7IgijBMQu7Gb2FbD3vCNyzcOSCrWuYvcrzmW5ajNdgtWc57b3NKVigE6hmfTBuFa4seS9X1hmcUA6dbeFTwfYmk3bTPy+J1Djmctks5E1rnz+wLQqnbsm65bhuLyAmco8AAgxg/8KDwih/sNGW4WfNps2DCCA4SMDhAe+r7aYd1m5CbudcpbvpGsW7H5vvJX+jYzFHv41A== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM7PR03MB6450.eurprd03.prod.outlook.com (2603:10a6:20b:1b2::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4867.7; Wed, 5 Jan 2022 21:56:28 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::19fc:be9f:2c9c:53f5]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::19fc:be9f:2c9c:53f5%9]) with mapi id 15.20.4867.009; Wed, 5 Jan 2022 21:56:28 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 5 Jan 2022 22:56:08 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [fgSudTkdN8kr11BwfckBpwXtmgnHW04/] X-ClientProxiedBy: AM0PR02CA0183.eurprd02.prod.outlook.com (2603:10a6:20b:28e::20) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20220105215610.813119-7-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b2cca0a5-d99b-42b2-4dee-08d9d0963982 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiR3EehW4kxQzdNcP2D/mG1Jng1cyjo8kmHuiH96ZYGatiLDFz4oxeW6l4U09lfLe2hQ6UX3gwhS26i2clsFfJlLJiA3ggpMMSpN9d6dSx+EMia4agxpTb1PAqHKlpsXNxKYVH9vtOZ0DzxhD+TJwflBJGy3ew/j9af9BLFEjCpkQCv0LEuAaDgS/uJvXou0Ej7w6uZE3Ekf7tIvfR5XkNTUspbfWpv5VFfc4Zi9AKvwiMatByCLZriWVIqfKkUNiVlpVmTIuINeiZEij49XNsjOoTxbmmjrktU2qI96os+kpAv+NXjjeh19CNmQfHFqitPtk/lj45ICx1ImbU68U3SRyg9NF7xcLsm6uxkZ4l0vMvsIK+N7Fn0i2OjCyZJCzr4/I7D59E7Cxh68qeYef3UL7dZay5yzOJ0cpFVTllhH0Gbllv4rmU7k8sfbyICTTed7vJKqSlY2jVnfAU+jWPZaMnqg8c8PIVuPDuuO+FQLd0dkRWZoHWl5aKDz8kXb1UzxENfUXF/7+ylPLGnxY6HHGuXWoVQdFkpU7WHhXbChcgTHrTyh7HZrSEvNp9a/q02kfVVJPsKf21kagOCd0LN6hpToVm0XyC1oVDg5/d/IyBSWj71/mzDVNFQIXCCUD0W1vm9XOoLGY9a6MWwvMWcDIVCFB+zVoMd/nLObk9VI5ZIh+sPqD/njo1IG2drnsYKBnzkUv/JfhlRp5yR7PE4uUrnmAIm/3VPc+M9SgYKE5Sl/ZeETLFvqqaA+n7qlTJI= X-MS-TrafficTypeDiagnostic: AM7PR03MB6450:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xSDdY6zDmfwpbDrKhKhCsiAP+wPg/eZf890Wb2UUL4BduE+o9RZpSe9mbq130L7SYZu9AzHjS7QbZVCvCSRSqn8dYybc54hgzcjukW1sK+m9QisjjAW7iLlhBTLeBmQIrUGSggYN5QGf/vJKm6quQ5EsuBQUFHie138O6gzc4SbR/6K9eakvURsUHoGJJ2zltHIdLdNcIxrYzHKNFXVHufrmChzz0IzLBixlobet6UoinCUynKzRUUc2XlQAlCccuqh72/kiC0J5nZeSYLdwOnK+E5MpGtSbOZ0USFu03e8/VPccXXYA0tsxRwB4sKLlwnEF7sQ1YL6pJaLmVvs4NwucBpLgn6oha9j3IbuAAkK8OmGHChgapFA7si1/WphUAl/kxdESM0HdD2SQAlEMgNPVf/oVcs99TJpoanKkuWIbLbudtoAyFQ4O2EGtgIlOE5diPO9j2iRx0iNRqhaG3lKA+oSY7cZ6cKq5Yl/vrTz5mA5iwBXW2n+IkVdQCYCz7yVRjj4cEMwuLqTpbzNeNLrWrXRI5LKfiIyMsiHUTI5KAg0KexmnwsEFmSRuSq+5Pe4QV8xHHg9gIBEXWlRXTg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: YR239vrMCMaQaNF5jgchWH3d9zdVEgCqgL89rKgMgBs0ill+HIjXWnESA/0pNQfWKvrE1YyHjWGU/I7lxxFrfuNEdmxTrl2Xh40CmwD9MfOcb2j8Mkr9fb/lrQ9iNxQTIzDGwlvCz3h0oNRsPibVj6zvKdMa00YzHEoQ5tdF2OLOXpS+4cASs5VNyhyAZNsqXAvHW4BTfAqDicSmMKI2TYeGc4TcHm3/4YXZVgMuLF8KZ+212G4zWKAVDNe9sJXLGiU/5fL7rfMdgukbao9S6ROPgKiCLZBB1y+a/YJQM0YuQUF/u8E4Dw9hFHzwEiJT3OGe+fR5kQ7LicJK4eFKmj7m3+P2oKPAk7LmiNH45kLCEEA9LfC8dlXUNU1e4VnD9P8vV/U/Pkrxh1elFCqsFkZT+3KiVdfc59nzuyYgDphjTeJOO9C1vdDuEDr2UES37H5ceR4wg0yfMUEr1ag59X64DYLxs3ssQA7jHfmeKb+HYgnkfa2255aJcYbnyPe3/88fhM2umLkca1SIrxJIB8bQ+6uJKByHxv5TQxEm7MW6B+gPnAkjsdD8zEJTyVUmf65ro1Ri8SYrUUJF869NmK3T2867Z8TrgjdGOsQuVkvTGwWyWwG5Z9AzS6uHj67WWaGF3fmRSmBFdxWr4VGGcPp7xxf4hXwceNylmGS4yIKEcTUbxfPhW7Eld0yvyExGFQYRn+D+c0rAEGy+mvg/oAsxmcOtpU3hwO25z1QVg4cxqf6t9FX6L6j+EpgoevHHDho5vtPtBNUhnImtOukVEiKlI7k6wePGRm7pHB5Y+oVhivvwKv+9EP667uzrWlXPVnn8aSBDBGbZcMspwuQVmKxL6klQO7cwT3DRWJYSeYgw3/Uh3uRJjFP42DPIExpA78vgX1HjhkF5YICji1nG2UTZKehQza6uD3b6vXJ4l/hP0osIWwsp2XHq2uS360ALYc3H0gR/lTEDAPTyy9q1EA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b2cca0a5-d99b-42b2-4dee-08d9d0963982 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2022 21:56:28.0023 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR03MB6450 Subject: [FFmpeg-devel] [PATCH 08/10] avcodec/bitstream: Don't pretend VLCs to be initialized concurrently 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: WeTRlSs4EI/k Since the MPEG-4 parser no longer initializes some MPEG-4 VLCs, no VLC is initialized concurrently by multiple threads (initializing static VLCs is guarded by locks and nonstatic VLCs never posed an issue in this regard). So remove the code in bitstream.c that only exists because of this possibility. Signed-off-by: Andreas Rheinhardt --- libavcodec/bitstream.c | 43 ++++++++++++++++-------------------------- 1 file changed, 16 insertions(+), 27 deletions(-) diff --git a/libavcodec/bitstream.c b/libavcodec/bitstream.c index 1f77cafae6..2dd0226614 100644 --- a/libavcodec/bitstream.c +++ b/libavcodec/bitstream.c @@ -142,21 +142,16 @@ typedef struct VLCcode { uint32_t code; } VLCcode; -static int vlc_common_init(VLC *vlc_arg, int nb_bits, int nb_codes, - VLC **vlc, VLC *localvlc, VLCcode **buf, - int flags) +static int vlc_common_init(VLC *vlc, int nb_bits, int nb_codes, + VLCcode **buf, int flags) { - *vlc = vlc_arg; - (*vlc)->bits = nb_bits; + vlc->bits = nb_bits; + vlc->table_size = 0; if (flags & INIT_VLC_USE_NEW_STATIC) { av_assert0(nb_codes <= LOCALBUF_ELEMS); - *localvlc = *vlc_arg; - *vlc = localvlc; - (*vlc)->table_size = 0; } else { - (*vlc)->table = NULL; - (*vlc)->table_allocated = 0; - (*vlc)->table_size = 0; + vlc->table = NULL; + vlc->table_allocated = 0; } if (nb_codes > LOCALBUF_ELEMS) { *buf = av_malloc_array(nb_codes, sizeof(VLCcode)); @@ -191,8 +186,8 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes, { int table_size, table_index, index, code_prefix, symbol, subtable_bits; int i, j, k, n, nb, inc; + VLC_TYPE (*table)[2]; uint32_t code; - volatile VLC_TYPE (* volatile table)[2]; // the double volatile is needed to prevent an internal compiler error in gcc 4.2 if (table_nb_bits > 30) return AVERROR(EINVAL); @@ -201,7 +196,7 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes, ff_dlog(NULL, "new table index=%d size=%d\n", table_index, table_size); if (table_index < 0) return table_index; - table = (volatile VLC_TYPE (*)[2])&vlc->table[table_index]; + table = &vlc->table[table_index]; /* first pass: map codes and compute auxiliary table sizes */ for (i = 0; i < nb_codes; i++) { @@ -257,7 +252,7 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes, if (index < 0) return index; /* note: realloc has been done, so reload tables */ - table = (volatile VLC_TYPE (*)[2])&vlc->table[table_index]; + table = &vlc->table[table_index]; table[j][0] = index; //code if (table[j][0] != index) { avpriv_request_sample(NULL, "strange codes"); @@ -276,7 +271,7 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes, } static int vlc_common_end(VLC *vlc, int nb_bits, int nb_codes, VLCcode *codes, - int flags, VLC *vlc_arg, VLCcode localbuf[LOCALBUF_ELEMS]) + int flags, VLCcode localbuf[LOCALBUF_ELEMS]) { int ret = build_table(vlc, nb_bits, nb_codes, codes, flags); @@ -285,7 +280,6 @@ static int vlc_common_end(VLC *vlc, int nb_bits, int nb_codes, VLCcode *codes, !(flags & (INIT_VLC_STATIC_OVERLONG & ~INIT_VLC_USE_NEW_STATIC))) av_log(NULL, AV_LOG_ERROR, "needed %d had %d\n", vlc->table_size, vlc->table_allocated); av_assert0(ret >= 0); - *vlc_arg = *vlc; } else { if (codes != localbuf) av_free(codes); @@ -320,7 +314,7 @@ static int vlc_common_end(VLC *vlc, int nb_bits, int nb_codes, VLCcode *codes, 'wrap' and 'size' make it possible to use any memory configuration and types (byte/word/long) to store the 'bits', 'codes', and 'symbols' tables. */ -int ff_init_vlc_sparse(VLC *vlc_arg, int nb_bits, int nb_codes, +int ff_init_vlc_sparse(VLC *vlc, int nb_bits, int nb_codes, const void *bits, int bits_wrap, int bits_size, const void *codes, int codes_wrap, int codes_size, const void *symbols, int symbols_wrap, int symbols_size, @@ -328,10 +322,8 @@ int ff_init_vlc_sparse(VLC *vlc_arg, int nb_bits, int nb_codes, { VLCcode localbuf[LOCALBUF_ELEMS], *buf = localbuf; int i, j, ret; - VLC localvlc, *vlc; - ret = vlc_common_init(vlc_arg, nb_bits, nb_codes, &vlc, &localvlc, - &buf, flags); + ret = vlc_common_init(vlc, nb_bits, nb_codes, &buf, flags); if (ret < 0) return ret; @@ -375,21 +367,19 @@ int ff_init_vlc_sparse(VLC *vlc_arg, int nb_bits, int nb_codes, nb_codes = j; return vlc_common_end(vlc, nb_bits, nb_codes, buf, - flags, vlc_arg, localbuf); + flags, localbuf); } -int ff_init_vlc_from_lengths(VLC *vlc_arg, int nb_bits, int nb_codes, +int ff_init_vlc_from_lengths(VLC *vlc, int nb_bits, int nb_codes, const int8_t *lens, int lens_wrap, const void *symbols, int symbols_wrap, int symbols_size, int offset, int flags, void *logctx) { VLCcode localbuf[LOCALBUF_ELEMS], *buf = localbuf; - VLC localvlc, *vlc; uint64_t code; int ret, j, len_max = FFMIN(32, 3 * nb_bits); - ret = vlc_common_init(vlc_arg, nb_bits, nb_codes, &vlc, &localvlc, - &buf, flags); + ret = vlc_common_init(vlc, nb_bits, nb_codes, &buf, flags); if (ret < 0) return ret; @@ -420,8 +410,7 @@ int ff_init_vlc_from_lengths(VLC *vlc_arg, int nb_bits, int nb_codes, goto fail; } } - return vlc_common_end(vlc, nb_bits, j, buf, - flags, vlc_arg, localbuf); + return vlc_common_end(vlc, nb_bits, j, buf, flags, localbuf); fail: if (buf != localbuf) av_free(buf);