From patchwork Fri Mar 18 10:52:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34836 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp1664629nkb; Fri, 18 Mar 2022 03:53:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyy0M+RHh32VvQamuGFzRBctjJtUrzEhh+ifUsjPTC6MXW9tlgRoRqdX6rnI2q4os+3chc/ X-Received: by 2002:a05:6402:278f:b0:416:a887:9853 with SMTP id b15-20020a056402278f00b00416a8879853mr8898357ede.44.1647600796302; Fri, 18 Mar 2022 03:53:16 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 13-20020a508e0d000000b004190569130dsi1827377edw.167.2022.03.18.03.53.15; Fri, 18 Mar 2022 03:53:16 -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=@outlook.com header.s=selector1 header.b=LS6+cAhU; 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 800D468AB71; Fri, 18 Mar 2022 12:53:12 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073062.outbound.protection.outlook.com [40.92.73.62]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4F18668AB71 for ; Fri, 18 Mar 2022 12:53:05 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PiJ5uXCSF/4tnaQNW+tLz9pbmxfitkWGU1fVhbi8bbnzlrR80upNIxIGk3aQ8WBBWMFuDTVn+Pd0d9q9fqcw2a/FbF2n3cN++f9uU7dzOB/lWLZ2vU6KINyUXcNQgrQJs91s56QIvZuTuxrayskus0ZuFKp9C+UBredU8vF/FOdc37ioDNdRjzQJ2Cfzo2xD3mTw8+7GcsTor7p5u+Rz7i5iUzMCJMxZDkhG56YdNuf23VWIu1o0L8h5ylpGzdjEj/Zl5OXscrGWC6CuRVEWr8Z+++tcQ0wCPmrEC9FBQzSTUbk6Kdo2lXfNTs58NxRynnIMomMB5mH0a0WeoisFIQ== 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=Ma5IdUtb+cPKK5a+0NMoiZyp0Vw5ycUnNi3YlUMN++M=; b=j8bZvtvlbhygb5MI/Lg274Suzq2uWyXz/1aFJunbjMLsRwIu7j/1sBeonR9tCkhi08hbOOepMNJCIMrojnSJAS9MHBY0ogCfoGc2L2OA5dE1AFZ7GNgo5YcR/mew2B1JWusSY/2M2ABoW8iKM3fWnqPqiWir7syOevVVzeNjQ9tXT6GCksAQVf24LTL4OFn5BAFQ2jV5DR82V9ChQ7rJZ+a7Nz4GLlSxw90/qfdU+EVbKYDEt+mZLJND4HvIMgsZMncILciY63oyNF3fSVy/Zf7MC0+pxZm16qhG5aVsu5Gt3ArXZRHbVe8zoIQEEKoXKVEEl9fpxM5PhZ/ck+DOeQ== 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=Ma5IdUtb+cPKK5a+0NMoiZyp0Vw5ycUnNi3YlUMN++M=; b=LS6+cAhUPY8R66euIqhepYrWSW8maJUd/CS7ukahXi6pn0/CPwDY/tX2ZDdb83ibCjGiYGgVlQQt3Lb19gbZG193uVQWG9z8J/JS8S/9Ny6TGAFNlZYE74ll8muyF3BshZBla2HbfVH0FB+y+xzIVeT/0osmclP1wNzjWKysF7NLq2WXXWcRJmzbEXCwwhxNstFweBRJRKusAQCTb7LV4EE69EuQ9pggX5k84T35QRAjDbsTr7mHcls9AqWgOGgSI4d1xx+O6O57yqWW9GKvXTC2gb9Cy87X31CDVnUXk44PKXNzUIzGie3Xx6EmRMTB6ivzq4yx1ANu+kAcjxt6lQ== Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) by AM0PR01MB4178.eurprd01.prod.exchangelabs.com (2603:10a6:208:6c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.18; Fri, 18 Mar 2022 10:53:03 +0000 Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com ([fe80::9070:a5fd:e532:bdf8]) by AS1PR01MB9564.eurprd01.prod.exchangelabs.com ([fe80::9070:a5fd:e532:bdf8%3]) with mapi id 15.20.5081.016; Fri, 18 Mar 2022 10:53:03 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 18 Mar 2022 11:52:54 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [gv8bMNwSa29NbxVCEhNxoCKTwJwbWuuA] X-ClientProxiedBy: AS8PR04CA0039.eurprd04.prod.outlook.com (2603:10a6:20b:312::14) To AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) X-Microsoft-Original-Message-ID: <20220318105254.1245384-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: db497640-2fa2-402f-e42b-08da08cd793e X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiTSl0cvO99nxSwIgChegBQaNgNDDfPe72v1nUa5NdGp6OHyw2S81stsPLRw8Bw5LttNfwCeVWU2/52w09Az2cJ55DXP65QEN7bZovsQkWh94rKNDEJ5bPw6fwjKl/1ypT660fKN3B645jafGFT0Opp44xNOP+UWPSUKfybuO/zbtegnY/2FqZupV6oIJNpQ3ELAv4AAyg8sixlidtV5x16GtmhSGMWwE9lGW1gacEelZP8dsEV0imIYebNNKv7mi6AzfhwNtaAX/OarORHAS4nSjNaPmM7a9ibpl+VHr8zOAKxikeoeZU9UStSOBfcRAgoymTV6r+tbhPHpYmKnm5CCVdjmrXC2gJHqlSCmVSaWSBZQf0mJi/R+CR63KNL7tasmtoWFFHlUuZoE3uZpN9Sxd67Kkk1KkdDhimZ4QIU4oRnvGb1rIB23/ZPTegR5mfXuqMNPtHn8yi/HGo0K2rmNQcmS6KmMZ2zGWBvDkZEVgqVWk2Pi5CzXgwvNIuKnBqI//8RY92IkHxpdvcBFtWxoBY0jSXYVaOaUGaAocsdjsWP+ecemmYbJ/T5Ioz2bhCunzxnjgK4lEhQblofKIS9DoIp0ShdZLc/7EUnr4Ug+A8gDeERFCy2q4Ypn40bJhygWcbTuudUCRuoL5ULBlnEV9PtGEy8Genhei6OGvMPu8Ot+8lQpBehGQaH79EAZoGtJk7z89wbunkhbKmbxi1txUeWcuxx2btjBTeeyz4vG9XI/YjR17GdY9f9snYYy5SA= X-MS-TrafficTypeDiagnostic: AM0PR01MB4178:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PBViCnKJVZ8xfszuQGXMtJjNAPrsyS5w7kyrSuNTCuplBndnvm41zUxxOkE8V2xwsdo/JyWXUzoIEA1fh0Hko+tuxsDRyzTHG4Rdv718BFj6t/sqyXxmbA/G90nbEO6Yhqc9dRjx69uPUTu3EJYWZrmN8LfmVV08DdgvEOVQOr9CnZVp+QxNE6eFu5CzFSYk5ZYyZdLDlmlgdDDD9RwM2wa0leTwJXTy4m2n/CHrFX25KTvIsrmFBlNTFcZi4xBKgzXWOB+3Ii6DOvnjvfkmQu1iBewauUjT4y2bMSxZ8vouZkgYT9YzNwdQPm6DiCnW9dxgoukF2Pn6i+g0p1MQkpDoEL6+Q5Ex0CaX15UZVLsGffW/jD5qZCEYM1WNZoU/o4lxO33P+JBuZVNksgHMsAo7Na3+XSJEv30kjBjgi9DVmjHR2CWBvjD3CtJI+BBVtYdPqZZbZTBL1orrWvVr3GYWy9d++vQMMCv6IUuZRbc+s/Dj9i48bTR01OdcF9MDS7PL+Nm2coSqq619TwiIQ7lcKn46It/wimXDoVbmsmRXom1+CeZu7Ps85b2al1KeUUslz3+JKc2J2DksjdS+Gw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /SZHAZ0zA9vM/kCxU7Z4wOv5YCk8UllhcOu/KhugviGAMPcKU/m76eE9SFLjGjTr/UjTDd6x3khpoT0eHHXMNXvCx/2zACHz4nnfmA03DyfSzwwJaPuaBAaX/t4FnryFrUay2yFuSQdGqS2Nsccsl0CFu9nVS4EIeKdCu47iBtT3oGzb6kcGTW8uS2eD/b2dlLxsBrGTsBp6DmhizU6xKJzT5GP/WlWmAfuAKFpknujGJ2ceULrRNCSBx36aeqiBwvVJ7t8wP9lIWWBG6PiQaCmHMNzYUlZSDzxvf4h6khnZ7Rm79hxj/qjlc47XYCOxURfV5u8T/UNGILVDLhDVCcpiWQypjwZylvoMojbqsQ4UD+pMPD149Zt0GL6TCBLajSxYRCM/42jSdsu105YrnNMbJE6Lh7Vrn4+b9V6nBiPAjWLZQsoYPCNRp+tdL27b1UsLq8Xe4HsWXKAMzzg+5J51jjW2LE2edADvjto7xW3fKEVBKqVXQtg/WrpVnqGhDcnusk++MJgP7JvGAJ4CLMe+xv2OwNG6YlM5J4kFbFzXt/qg+D508hvWzD4IsMJz+FUpWV70mWPX0ACWYadworTPXolyFMkqzABT7McF4xsz3h0z4j9y86jZfDkRWs5qGc51B+ykn39956YmC95/39dlKdXCMv3ovmD6P8CclcWuDJwHA64L31QfgaA4FT+BpcoONTd86FtgLN7qOQUgC6PnVf9+kufqxofKv11kR+SYHM0N1pvBfBS38O+MJIQ5wkWO8O851fddpKrH+6UbcIgUKIeRY7RRvDn4d0xyIS0OdmkJ90CzDpNkcBJFkxfnyPvYtT179Npg41nKJptYUmVJfvMduKGBKhL/0XXLek8lVxKvO5GgoFozYGkg2RkwPr6S5iYTJZGldckxauxcwUttl/ziMzVJFcfB8NSEbKgDM6hhOFwDFr2gcLMfMPKqqU9UeF8Nz17G4KYV7YJFWKRNY1Ln+jHEhkm6ifyU5p4nMfm1auVrxS8qU4Z0XJ+3FnjuaF6cYnRRFe8mpLj6OFtjyo9sWsfumtGoCs5haxh6KOxx6OcIhdG2UtRjRODGWrJ1xc/ltjEs4CQaDIJVV6rjhOzWXB9C9PaOiV/gsRmn1p6xHyvqwtHXb/oTtDv5ChMm56OuDy3Wq5WI7MQr83QcQPMgil2W232zGGeKVok= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: db497640-2fa2-402f-e42b-08da08cd793e X-MS-Exchange-CrossTenant-AuthSource: AS1PR01MB9564.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2022 10:53:03.2776 (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: AM0PR01MB4178 Subject: [FFmpeg-devel] [PATCH 8/8] avcodec/codec_internal: Include codec_tags only when they are needed 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: s2hamX6xGYDy They are only needed for the fuzzer, so check for CONFIG_OSSFUZZ. This decreases sizeof(FFCodec), which is important given that FFCodecs reside in .data.rel.ro in case of ELF with position-independent code which is always loaded and can't be shared between processes. Signed-off-by: Andreas Rheinhardt --- libavcodec/bitpacked_dec.c | 5 +---- libavcodec/codec_internal.h | 10 ++++++++++ libavcodec/hapdec.c | 13 +++++-------- tools/target_dec_fuzzer.c | 2 ++ 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/libavcodec/bitpacked_dec.c b/libavcodec/bitpacked_dec.c index 419550dfe0..b62d88fa8f 100644 --- a/libavcodec/bitpacked_dec.c +++ b/libavcodec/bitpacked_dec.c @@ -151,9 +151,6 @@ const FFCodec ff_bitpacked_decoder = { .init = bitpacked_init_decoder, .decode = bitpacked_decode, .p.capabilities = AV_CODEC_CAP_FRAME_THREADS, - .codec_tags = (const uint32_t []){ - MKTAG('U', 'Y', 'V', 'Y'), - FF_CODEC_TAGS_END, - }, .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, + FF_CODEC_TAGS(MKTAG('U', 'Y', 'V', 'Y')) }; diff --git a/libavcodec/codec_internal.h b/libavcodec/codec_internal.h index 596cdbebd2..b6b5b05b44 100644 --- a/libavcodec/codec_internal.h +++ b/libavcodec/codec_internal.h @@ -21,6 +21,7 @@ #include +#include "config.h" #include "libavutil/attributes.h" #include "codec.h" @@ -74,10 +75,16 @@ */ #define FF_CODEC_CAP_SETS_FRAME_PROPS (1 << 8) +#if CONFIG_OSSFUZZ /** * FFCodec.codec_tags termination value */ #define FF_CODEC_TAGS_END -1 +#define FF_CODEC_TAGS(...) \ + .codec_tags = (const uint32_t[]){ __VA_ARGS__, FF_CODEC_TAGS_END }, +#else +#define FF_CODEC_TAGS(...) +#endif typedef struct FFCodecDefault { const char *key; @@ -196,10 +203,13 @@ typedef struct FFCodec { */ const struct AVCodecHWConfigInternal *const *hw_configs; +#if CONFIG_OSSFUZZ /** * List of supported codec_tags, terminated by FF_CODEC_TAGS_END. + * Should be defined with the FF_CODEC_TAGS() macro. */ const uint32_t *codec_tags; +#endif } FFCodec; static av_always_inline const FFCodec *ffcodec(const AVCodec *codec) diff --git a/libavcodec/hapdec.c b/libavcodec/hapdec.c index 4a7ac15a8e..72f922bc5b 100644 --- a/libavcodec/hapdec.c +++ b/libavcodec/hapdec.c @@ -486,12 +486,9 @@ const FFCodec ff_hap_decoder = { AV_CODEC_CAP_DR1, .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, - .codec_tags = (const uint32_t []){ - MKTAG('H','a','p','1'), - MKTAG('H','a','p','5'), - MKTAG('H','a','p','Y'), - MKTAG('H','a','p','A'), - MKTAG('H','a','p','M'), - FF_CODEC_TAGS_END, - }, + FF_CODEC_TAGS(MKTAG('H','a','p','1'), + MKTAG('H','a','p','5'), + MKTAG('H','a','p','Y'), + MKTAG('H','a','p','A'), + MKTAG('H','a','p','M')) }; diff --git a/tools/target_dec_fuzzer.c b/tools/target_dec_fuzzer.c index 288aa63313..77f4bb8dd8 100644 --- a/tools/target_dec_fuzzer.c +++ b/tools/target_dec_fuzzer.c @@ -279,12 +279,14 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { ctx->sample_rate = bytestream2_get_le32(&gbc) & 0x7FFFFFFF; ctx->ch_layout.nb_channels = (unsigned)bytestream2_get_le32(&gbc) % FF_SANE_NB_CHANNELS; ctx->block_align = bytestream2_get_le32(&gbc) & 0x7FFFFFFF; +#if CONFIG_OSSFUZZ ctx->codec_tag = bytestream2_get_le32(&gbc); if (c->codec_tags) { int n; for (n = 0; c->codec_tags[n] != FF_CODEC_TAGS_END; n++); ctx->codec_tag = c->codec_tags[ctx->codec_tag % n]; } +#endif keyframes = bytestream2_get_le64(&gbc); request_channel_layout = bytestream2_get_le64(&gbc);