From patchwork Wed Aug 2 06:38:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43071 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp453364pzb; Tue, 1 Aug 2023 23:37:20 -0700 (PDT) X-Google-Smtp-Source: APBJJlEN8kBWsvQmrrrEffZwoMK4TwumocguGfM+xMdFTUiTzsN0USEWx/cVbjq5as8tJkeRlV+w X-Received: by 2002:a17:907:760e:b0:993:e860:f20 with SMTP id jx14-20020a170907760e00b00993e8600f20mr4411296ejc.19.1690958240289; Tue, 01 Aug 2023 23:37:20 -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 j17-20020a170906279100b0099bd1a97e1fsi10657069ejc.995.2023.08.01.23.37.19; Tue, 01 Aug 2023 23:37:20 -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=bH1kNSBe; 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 04FA968C54B; Wed, 2 Aug 2023 09:37:16 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04olkn2044.outbound.protection.outlook.com [40.92.73.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 315D868ADDB for ; Wed, 2 Aug 2023 09:37:08 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XRPaDmIxZnfNYGtVe33tKY/9pTaH0lcIZJFX9whn3Yh2gC3GQgySpX5bQKJQlt0ekM0OoALFsk1eB+IAKL1SclHOc18I8uGrBI6hKRoqlj3MF3p9wXYHE6HAgASRw9QJosRzH0Cv+AGf7Yaqk21HR7v9KdnCTJf2oCiSzdbjWcxtz4NjvdSPqjtVYOVzef5ojMaexkoTstj21dyHT3z2yUKcjuS4bAmJA1/HhPLAygxznhj+HacpRJW8DkvfTYOkFo6jnDUuEGISC5R7ITWNvl3gPhvOI6zgD96VZtmZVGY+qa2Nb2bm5IMM4SbdAW0dqgm69YYkF/BmH+D/GV/15A== 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=s67BGI5U8JBiA/f5So9vxGmBqP1aZlp2IbmTaRNGEqU=; b=Q6a34GWcbPFlG9S3ZplXo0NiO2PDFodogk7CxefxDM/bJBR76Cb953fB+A/QJjtnTEGFvXFSQ5I6qdw92H+rE5Yi15G0v5KFh2MxAwrUmifZUiSPk5j1qLv5xJNeH94RUBZKMKp00tm7Fvf8YbJz8AkjdYmFh0CGbgDuSjSx4WHCyIu5Xun2aT9hYSu0B7TMELicfxliPSsPVUai41N+rWTEDmLy6QXyxCl5X6d40hJDzNKclMrNtHVsZWOvJE6lo5e4IW2SBzecEeRvBOt0I7Qq6Tf4dktRFvIFx2oruBoaKUw+hQePvTEFeDmmHkuSHU+yllbxkth8yld0Fg90Rg== 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=s67BGI5U8JBiA/f5So9vxGmBqP1aZlp2IbmTaRNGEqU=; b=bH1kNSBelUcleBdmvrOuewmSDbMliBGam7ZrwP7HozLqvMW151D66weSNru9sY4kIhrpEIBQSYEtz6/2VdvDGc51TbiBLg2GdAiM9kyhZHQci/vvLK8SANAxSTP2ZawWRSuHPnKJCjVdnHKeOaFLoD9tCmHAkX5GBInEQfr59AwgtgMYhDDqn2VzppNoYMoKr1zB+8cPERzaxMHaOJYCleBhLTHiL4vp8GxtEWYR3LyWialRVv2vZLzkIXH4epEnP0+o7EAakLIHY3eB7HgJCXf4ajaXFw8DT38lMAaDals47hT2tCmcpOsCFkrv+eFQVyY2MBm3Ka8ugVXz8OSkiw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0048.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:23b::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 06:37:07 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 06:37:07 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 08:38:10 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 X-TMN: [/KmNPBlVaVdQDhmkzbP91GZ+QfHPkcdZdhLiZZYnkUM=] X-ClientProxiedBy: FR3P281CA0049.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:4a::22) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802063814.22317-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0048:EE_ X-MS-Office365-Filtering-Correlation-Id: e34f58ac-b2cd-438e-bd9c-08db9322e430 X-MS-Exchange-SLBlob-MailProps: EgT5Wr3QDKweTUlmISQeL3+BBxlmv2aXm6qJqo4vOIqkWRrMMI46hrdn2kF3rI3REfMCoH+dKiNtNTN1WaUdoiXSSsQkC3JW7BrWuWBvoGTZRNSOh+gea8zWcHIUV4LaER2Lp4VYLdqyvqeXqNpT3gcRfc0PIvUitcYo7hL7qu8FHFHfxUl/YnGgO/IeWruGiYeNEQczFXCsH/kHUORdsQe2/wyRPd+hVWf6jwt2sUhzqPTj0b4Xo6xdKkxz50M464xqXZth6S1+s1uHFunj4pfwVWOnWSbKyxOazc2tDFkbBrVmby0zvq0Fgp3O0yArUAG7qpJkxT/RPS7N5NZdhzHexF5g0FDf/OHCJzpgwsQwNRhOjusipIbrOheK8Bt2Eh38//hAEuFJGNM5eXBLCWZ2Ug+CngMxqoJEemDxmuXYezgFI2/bqkICC3ukHm9VTM6Y44fserz5YJ2KlAzZvAP1py2xyJi3giFZqhN/o4tCURX7Zl/qtHFbfs7SRUU7PdZWu4DHNlfxPL6EzyPSe9jEfq+/Pc/VeuG9lb4Swcxe+zjOYLPyMJmbipNz2bE4fvp0cwFi3Svo5O/EuhhuAfMGeaURpv81NiVQFtN3G/IQUatyIWpCiSuUmkY6qqvDYGQJR2McDfnxdoY0vljujmzOJdG56qezn4nHM5lq0N/zR8tW644VWecwDXsWO5tBI2Nl7kQ6LAxbrkKvydiBZ62HGEkFUxpEC0FkYZB4onQ= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8ZxEaP9lAU314AC/RPd6nCOH97gGvqWWXI8dS5/TBAavDiBREHN5ooFS6AAorxOqa4urgtJCYJecULDZ4R97ZAPw8+rcLJcZENcF7kklpGDH15XzLU/Z8BtFR6U8ItVzjiwhZMR8geTDvS8eOD9zEW909rFDHWFe+NIjz7+2Oei5XwuauI/jBwBYKekIdtg3PIjqRAPq5sdhrq2+Q7kWsSLWk2GrDkc2p4GxTEtqk/vViWsc4j5NW4IQZ1+wmywNdA+u9NMvF+NgPqz17uy3POfRbZz1wkcsdTtti4DAUQCAP8HWEMyiWRao0OvL370jAkMAb8RstRBxkcuCi5TtbQNRuuKct5xy99kYZ0RzcdsN07WiBLQl5upHY//1hYA246ysqVyo6tnIutKIikauLqc2b2vW7yGh4K0/pxrGSsexMdHAnCiBTmxRr9t2Ep6D0Dy8CUhUxaxfXqc3Wrxy//dC7WkK0J1NXU/qlMzUwoFtdUcPBJ/WJBt65pkbcWHfcizRMdW6mdyTv65N+WRqY9mnPtEkiE/Gj/xE0M7SUI3Xk3yZQdlBNJHUbE986o3r66veTG08cdO4wjqR/eskhXv48iNsFo+/Gl2oQrt2r1BtFDchR/Z5y9uDD+LXn7FH X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zrCKQB/gCQIea8eel4tkkxx+1Jx3t71aCMl2FHVPnZYzmZGQr9Mq8TKHutZ2YF82DvQJe+X0ppwUg9O95yHPD2p8AOiYDq+zpPBzzllUXIG8lQSRwk0u1hBqtA7zn/Y4GkvX9bjgxlhEiGifkyManUiSWEeJl4jA/lLpkCgYjE7pZN8v24vrSC4TwuVg3BRGWKmoKQOMAhkG1H1LdP70QhKQuLYAKDOaiDFFNlwZcvlDk9Skx34/P5j5LziFFyhFUMLqUwEtl1qLqXpoiKxTUE17fQmtLFqYw2ZbddprJetFNmRhwmxSf0k8rZlvQDJOBj6BIFZzP10TBFO/khqSCv2eid4GNXHfxbbN4jf2sXQpKZAKGRMae8SbhJ8G3fvoPfwe3mrVqmwbb/F2xfLF6F5NbWMP1vbPjBhVRTP4HsnC/V3JhP8vJ1BbU/QF6+Et1i3xmMQaxKUXXOCK6Cgg8wxRGP624o4WKdR0vYgmcTt7ZrqTyHaaYnS4FfdrwiC/tO6OfBOmGqRs0wSPyBL8YzXbVMgp1qDAJiLfXzm1tRRnFngf8RNd3yzXEXQh9difiJt+hjFXEl0DHO+Ybo0A5G/K0kcuiR8bpB2jW99wv1bShz6PEFpFszGuqPSHCqLlsd9FWNiBvEP/tcoHCO1Pj3Hl06eI1Oy4OVn60SZ/QQCcaxr6VejRY3KOBhaKR3FwTS/1re1YdT4NT4t9gwmcT1RONhDm2R8oXk8hpjcMARZimC/1Jn+S0qVFfMEwxqAFv4IJqMfy2qaqgJR5YrSe9I7LFkLypIMHT6m0PkE6Qc4X4eCw5Xo5eN1JAss3HIyMfG5hP/8LpAvyGiS4UfgeU8sFpBTqbvOK3VkRFBodYvaPnLahqaf+Er9scn/Var8ip3wQ/ORVUIly8eyTZwVTCxz2sq7WHKAGKJENuxshfLwwnaymo4oEsBEwipyqpybpJmlJ2F3zez3b4/FoJOg9zuPyP7spQc2dmI2FeBLzKMixD5pGe07yf8wFEa7CqNzRa5KcUBmyvrOrkvfNIGtNseYBDBz1qWrAKbLEGVDT9gkuJmFVs7uDbaxgdnNAmiyqnG6IhRPYdYE4d3U/fvJhC5+lTAtMHwsOOfuKz7MQZSd894kbTnsgvFMPbu/iAbnkdIAy6p3dEao36kJkcnnfMSTeKe2IkCQy6COkCvUPdGG7POqdbTZSZZdMvYiocSinwQzj/RWX9T8wCbQH+6pm5pb7U55JXs4Xt9brp2qVO5y+AQjUqS4D2C8ISzfmUYWR X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e34f58ac-b2cd-438e-bd9c-08db9322e430 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 06:37:07.2532 (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: DU2P250MB0048 Subject: [FFmpeg-devel] [PATCH 1/5] avcodec/nvdec_(mjpeg|vp8): Constify AVHWAccels 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: nSWW/vbGY2ZG The discrepancy between the actual definition and the declarations in hwaccels.h is actually UB. Signed-off-by: Andreas Rheinhardt --- Resending patches 1-3 because the last patch depends upon it. libavcodec/nvdec_mjpeg.c | 2 +- libavcodec/nvdec_vp8.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/nvdec_mjpeg.c b/libavcodec/nvdec_mjpeg.c index fce464c1f8..daaf0072ed 100644 --- a/libavcodec/nvdec_mjpeg.c +++ b/libavcodec/nvdec_mjpeg.c @@ -69,7 +69,7 @@ static int nvdec_mjpeg_frame_params(AVCodecContext *avctx, return ff_nvdec_frame_params(avctx, hw_frames_ctx, 1, 0); } -AVHWAccel ff_mjpeg_nvdec_hwaccel = { +const AVHWAccel ff_mjpeg_nvdec_hwaccel = { .name = "mjpeg_nvdec", .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_MJPEG, diff --git a/libavcodec/nvdec_vp8.c b/libavcodec/nvdec_vp8.c index f174ca430f..3812ef3e1a 100644 --- a/libavcodec/nvdec_vp8.c +++ b/libavcodec/nvdec_vp8.c @@ -90,7 +90,7 @@ static int nvdec_vp8_frame_params(AVCodecContext *avctx, return ff_nvdec_frame_params(avctx, hw_frames_ctx, 3, 0); } -AVHWAccel ff_vp8_nvdec_hwaccel = { +const AVHWAccel ff_vp8_nvdec_hwaccel = { .name = "vp8_nvdec", .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_VP8, From patchwork Wed Aug 2 06:43:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43072 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp455396pzb; Tue, 1 Aug 2023 23:42:42 -0700 (PDT) X-Google-Smtp-Source: APBJJlEEaVsGnOK1q7iJ9gUWdq3XVFQ7KEcDEWqZQCvI522toqucnD2HSDs0ZwXctdTXCo0aHbEG X-Received: by 2002:a17:907:60c7:b0:994:542c:8718 with SMTP id hv7-20020a17090760c700b00994542c8718mr3943313ejc.76.1690958561971; Tue, 01 Aug 2023 23:42:41 -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 fi1-20020a170906da0100b009932528281asi10166322ejb.579.2023.08.01.23.42.41; Tue, 01 Aug 2023 23:42:41 -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=nlvOEsQo; 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 935FE68C59B; Wed, 2 Aug 2023 09:42:38 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2068.outbound.protection.outlook.com [40.92.89.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2EF6E68C116 for ; Wed, 2 Aug 2023 09:42:31 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Mlmwwbq9i06W7XYMURmVYus9ex03O7o05bJQq1yQEamv/k5phDsDGyEWlc9HHsWw/GECf64AIcx66N8uYkDwB9+4qfoDVXm60yDIdghDIxPK4mZtuFwc+Cv5is3toGBiJvEmVXsn4c1LkEsHlH8E9e2MfK1vrcFeyLn2tv6n3D0EBClOuo/oiHJ2ua3Jj7MNshIFOjzfp2hVo9pc52t3K8O368TRzk7j8hVd4x/Tv3ArZ+DVTAXm4F4X/PKcGSuwmVMpM1XRGmcS4j/TGtxiXtWfAJEK4Pfp02ZJ/wU4nPDKWaRkk49nlLhXET3PtUz4IBh0T846HGP3YFVXEJqlEw== 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=h/J9dzxUTOzH5vXm8UFgT0ZXiwennc5nubQGW+jEQCk=; b=dNf9DjKElaNMHCcTo2ULPcvFFUSCJLqDMX9zyWOtQJ1MU7gya3K/hvcdaQEnOis3fZVzZ+u4utOLHDUIiTuhPhsDXnb7kx0XPQ0/b0BlEITlUp1fl7qB98vvtxNVNBlQgYh5oA4ncYcIOpA3prbahoFyMc3W8KqudeOruUy3uMUCQvKUFAGuxVkc4EmqJ74pbDIFoSvafhwIlUVdtw2g4besZAXaWPL/kfr11y4PUoBkxLGPSS8GrqChv2x5+E1WiGsul9z1r4PqiOfBcpXDnkiWljFaWUD/VqtTEz964ysIUdlkcN7d3Z+ZBwn495LsmQzUlh4yLIlxkIGsmhZmIg== 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=h/J9dzxUTOzH5vXm8UFgT0ZXiwennc5nubQGW+jEQCk=; b=nlvOEsQoo0RiRR5fdxHhcY74Z2f+SoZD4PBMUPxXuA78RYDn8HlN0eMlqBkEKebMx7SNGltm0KkxYqqFfPqdtf9JYLgj51wiu+HG8F9JQu61ec6bzrEFMiw718pcsSjGh8lw/X5GgNhi/jprp6W8hD9MxHYeJYw3yY8cvOfLIZDMg7msj9FteSsSPIWO4dKdtvBok/osKINutuvF8FTB8SJmX4ZoUKLxsowX34HbyOtrUTL+Qihq3zVdcVofa59BOwv7lKHLdoXdSHH/ygIg55IiYCbxT31iQcset1OzloPSLtAMFa4SV2KfPeuXfst1lpqPeZwzohcIexWBE75ZYg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0048.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:23b::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 06:42:29 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 06:42:29 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 08:43:29 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [ibuof5+zchRsUqe5vqUjGfc04858f5bfqBLIrHX1CN4=] X-ClientProxiedBy: FR0P281CA0148.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:96::9) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802064332.39795-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0048:EE_ X-MS-Office365-Filtering-Correlation-Id: c55d2ee0-e79a-47c8-a517-08db9323a433 X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmrpbvZQFz99JeucukBOVYaZQjBLAiHbfQ2gN9W/JUhXccNT1czoED2QCRlmnT6K9GcXw6K5buELzyk+SAKAtNw/jrO2T0JeWLUwyOXPPSZn3XskWtFY0rh/y3HyPdQw0H35yUVDGqPvMWi8L7ahzMO/PzJCKDU+pMY0MePqy2q0GIRIdzoViE4Kw4RtB5Mlt2KkuzyheazgX/yYSh4X7QY3fupeJeiTUFkuaanq+0Z9RVIOYgoi+14/p5Fo2idzItokPrfNaLiX+gdNRMpcoipgMXGSRFRq7jUjqInNsxc54UvlPuLCNHiBKc5S1WyGSCjr+HdnKHGPQMv4JFdwiTbi+5OSrZqi/kBjXHRcwC2G3gtv9OL4cWrS6F6srrcVlrT01eUbgw9RJCpO6nt7k4DvYfBBX791o3UI/xWepLBQGviHxkztB//MQ8a6M7Uq6skiwpqgeqBOZdYjHzCdcazMnO8iMgzvdHtqYh9CsVKW2EXrhhQC0jz5DF4tyn7truBZ2HprYnt9adYVhNIqZRsYr3OrYGotz+WUBufcfEUHchdnOv2GJCMZxM0REw5xHUoUyuik9wCSjsHV/ny1R9gtE5ZaWmqIxmeEYiBstaTyzlVI1S5n1AKs8bERuxN9nARh451reQ0oCWRe65yZ//LFHcPOumAOZaXWUDLqBAPcp3rDrCDx/J/wYkDfRnxy5BJV4AbCTPQlc0SCSQL/YYULWExnKRX/PafZQJNuA77LTIm5w1egAMLxQ7BAlm6QDis= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Wrse+HiluPCGb5Ls+lMyKDpYGzGYY9zMS8WhIJACyfI8OEJtEpTc0UZnKziaw0kIQ/wleTZvjTjwoE+p1ESIEcQ1IK6yK1sj7XBfF58xZSF1rb1nL8UwZ4UWEp+2JgZZ+g+DTJBYI/ibinkYwHFX25MC8PLLRfwQnCDjRIUMH8N9uOzm3gTQrOO1KX1IGIjGUUbjGCnpYKlNjX1oOYYDEIZ97kHRnXbNm6iG2k1uZzWpMH3Sfapp74nuFYKO4QovYHfODIzUQ9nffNeyTOzW0sIkNHbmQs+XQC7V73QPnBMNqknRIiw2/JRuZcSqTmyh3FwhyEgMXUZTPZC8j7P8fsjW+rNwGQ3hEPJw8Elt9LGONllOOBXoYdgjzorK7y4v4jg5G5VCyHmA4sf8U9rFCOlY+sKmMVAwqWxSwhNbKLdBcATXEMnqSKRt0mobsFXx7s0n2hbo8rs5KUimxyAjQVUbGtng3KvAR/nXoFT/8jm9KmDGttvCyROdw4iG2pOIXSlxrW/fDgZYKD5ceW8xo6ykHpjLptLtvP0k+xCzofDDoYBjchLYZZsNbMwieAdNUxaB/yenV0OvdxCv4/84rBPu4O7l3ZBPrYHsigBQhM4CBLF3MWkyOo5MfFnyFWQ0 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: qcFY2yISkv+rxReAkP+Litzk0ce5sSujqFU7ve6gJj6Ym4fXwL4U4ODyQ9xSNcYpNwhRdnhA3B8vSDjuFAhB+9NbsBYnDpYOyaJDXmSBW5QIyEIgrgfFpR13d4u/VEayQ6ktZ84+ithH4rFnFyzJ1cisVP0t/+T6sU0sJHkYiyxsR49hoyJn4Wvm+N+AYvyIjd/Q+0/elHE/PDHik17IvgNI9nfnXLBDYbDURYqaHR0ibJhNl3rwUfALYtZmXZsI3QVqykdikpMmLiBV0XQ4jO2wv5N9bK+I6MB26oEqfXEYoaTZGNuMtlasoKpYCv7GfflgZZSWK2ovE/rOoDe2PzS+Y/UWboFcPvlNFBxFTDPSlF/sycUu59rRqUvRWBWN/niBIziPxb6/zYrjAX7ZuEl2NmUBh/3xyPsKQtO8MRbYp00ro2GxooSIfO+d1nmr8sWOq/K27YQYJLNgXhnj5VF/XRBPjH2G8BaIG2yY9T+YMWHRDGIavH2IbWFaF+g53G8xZwoSj/38/zl/9Arj8v+Q20H32QLc4CY0SrfeMvC2rue2im4aEZdamNzWPkwjMgt/Vc73Y7wDNQzQKzLJBnSBsVVTPNNs0B89CsjsN9QEwfzYW9AIsgSDKGgcbwyIFzIMFc6pFeh1AsUFEt3h94BQD/HXU90RS8t8siIzvd31QJe8mz151AgRLjbKKniRKZHPRMA4Gl97scki0JIojElltAjnEK9p6+sgggC2LJ/FuRau1NEzFZQN0ApXnt5bWT7wluo6OvwKbYmUds9b2zRpwvi2+AMofBbUfV7ZIa81acTc75ZcrJ2TzHBj1al1Qkgyn4zIzsNFQQydMV91/guweXdxdAUO7/CVrQ4cG2E3U6WrnCFnCgWOIjzFU3wectUZ1jG1MXPEaAz7FSFC8AhENwZl38PDWKCiSyvYmAT96NojfwsUEYtI0BDDEC1ZQdTZGpMulI/0jfzjJSY6WnjL0Ghyt0nEQnyoaXygk1/EiFsOBpIQ66b5zgevgYk/MYoV7DJFkqOy2os0EJt6Kc+RyXCIM1VlmI+f6EmHzZSLm6FmX13/resfufP4n3tdtg/l3T9wUQNyCU8SJgMEUuGbbwgL4HkVfzdztl/fbZCVntEuCZ97crmS9Exxqx6yqG0R7LggO4kiE/WCSZCrcDCZ+IU5S7hoMqj9L8GcoS+UXZ3kzJejSWw9VWG+V8KMjISPwReqxu1RPIqovPJSjuWvubUbp09+9PZD8/xamUxmt5sJ3x3LtxuEMWP5vFKm X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c55d2ee0-e79a-47c8-a517-08db9323a433 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 06:42:29.3976 (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: DU2P250MB0048 Subject: [FFmpeg-devel] [PATCH 2/5] avcodec/error_resilience, mpeg12dec: Remove always-true checks 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: PgCAgSHdXx0i Having a decode_slice callback is mandatory for HWAccels; the only exception to this (and the reason why these checks were added) was XvMC, but it is no more since commit be95df12bb06b183c8d2aea3b0831fdf05466cf3. Signed-off-by: Andreas Rheinhardt --- libavcodec/error_resilience.c | 4 ++-- libavcodec/mpeg12dec.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libavcodec/error_resilience.c b/libavcodec/error_resilience.c index 2aa6f1d864..68e20925e0 100644 --- a/libavcodec/error_resilience.c +++ b/libavcodec/error_resilience.c @@ -804,7 +804,7 @@ void ff_er_frame_start(ERContext *s) static int er_supported(ERContext *s) { - if(s->avctx->hwaccel && s->avctx->hwaccel->decode_slice || + if (s->avctx->hwaccel || !s->cur_pic.f || s->cur_pic.field_picture ) @@ -828,7 +828,7 @@ void ff_er_add_slice(ERContext *s, int startx, int starty, const int end_xy = s->mb_index2xy[end_i]; int mask = -1; - if (s->avctx->hwaccel && s->avctx->hwaccel->decode_slice) + if (s->avctx->hwaccel) return; if (start_i > end_i || start_xy > end_xy) { diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index 27b45c6fc4..3737d77eca 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -1750,7 +1750,7 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y, return AVERROR_INVALIDDATA; } - if (avctx->hwaccel && avctx->hwaccel->decode_slice) { + if (avctx->hwaccel) { const uint8_t *buf_end, *buf_start = *buf - 4; /* include start_code */ int start_code = -1; buf_end = avpriv_find_start_code(buf_start + 2, *buf + buf_size, &start_code); From patchwork Wed Aug 2 06:43:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43073 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp455447pzb; Tue, 1 Aug 2023 23:42:51 -0700 (PDT) X-Google-Smtp-Source: APBJJlFk08i8H4YNS/PSY7LclD+2276r6g0BdlKfWaq0JQtrFwTXIXSyD9Ut/ofpo2xBi9hAqFvo X-Received: by 2002:a17:906:3cb1:b0:99b:f08d:a390 with SMTP id b17-20020a1709063cb100b0099bf08da390mr3911968ejh.26.1690958570976; Tue, 01 Aug 2023 23:42:50 -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 b14-20020a1709062b4e00b00991cb7517bdsi10319322ejg.948.2023.08.01.23.42.50; Tue, 01 Aug 2023 23:42:50 -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=aeUPRrz3; 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 BD3BD68C5A9; Wed, 2 Aug 2023 09:42:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2068.outbound.protection.outlook.com [40.92.89.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4A31368C489 for ; Wed, 2 Aug 2023 09:42:36 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PjxD//YmFqPU7duJT5Ercu+7jIMoan70DehODvQgRlSDlBr3+9W3WTDv2D0poZQKaasnIsgFGi6qIqAvEyvhlCk+KPUwLs9tL/uHs1VDuL3SQ738etFDcHbWglIK3/gW8Ix8KFQZkVT9Sr4k0ZeCPeBAwvlY3xJgDrx83aCYm6ZJskloemIZ6vsz9HROrXiA4daWlFL15lEUuzlihc5Ozo9tIDLRtpc5YAxwDv2TMhXSfsnxXGegr53kQNVcKn/7wRD6v62lG+TtlNYZfMTuKvo0sCk5977w69ZyqxEZ9Pv05iTj1WzY6T5jRMPUpwHE6zFEI8brr/6KQCqyY/iR6g== 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=yh0VYxc2uENDvPt8x5qLefNo3h9S5XZfr37ZvYS+trk=; b=L/96h5ggO+byoYzv9ErRIGS6OQj8NAXuzEkP0v4eXzh6pi4wVOKng4RPVxvGJZOR2l7prFSJVHm+MjYnhODe+w9r/cyJ4+DBL6wibmzgZTe7B1kjcd0wO5I2VwjdhVswLmgqifgYgxybn2XJ8KFAAuXuUlemEqDdfyuDnW2scI9gMGSq9xFJ/x+rJhM0kG+wmw+Yd1YVZ6YHdWUqnQ2c/P4Jyac/3FZsrImUuaePy0SSYUO7GdXznwD2oENlwphUfC/Iu+sLkjsod2S+Zs1xvfNtMNzwhnkEwEKrFYy4Dhi2SGrWkO02uuQ2tVkeMwc/+dvRoCUAIVTrAd4R5UkjHA== 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=yh0VYxc2uENDvPt8x5qLefNo3h9S5XZfr37ZvYS+trk=; b=aeUPRrz3Si65l4Lgx2FfdiU5xFoVEoqTePq/NY3CkysTqFCax+JxsjIMlIYGSQcJecVhSvOZW5viyzxiWm86kSmCpZcw5C/jafb5HOGz8SXkSQtRxpCssYqgQXknZEDfndcSM1Q7VVt9CH3b5hTp6VUgkIKjYKuZ98naEYf3WXnksuXCdC7ZFDgevR/VckJ6M+poQT1KGFeA0whISTcasCyspuzoMg97IJqLhr6yBT/OFFSFF2gkKcahgxXN5jsonU57nEsBHCsuRoN7shZ+xNsH1H3P2KxG5/ZPoEfbjv+hASBoKm9NJzizVZJd50z59dxuTA2gtOtOsKyWgqNMLw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0048.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:23b::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 06:42:34 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 06:42:34 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 08:43:30 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [j2ysBdH9YM2kvPpMhTMwwtXwWSsK7dK42THFjA90+/Q=] X-ClientProxiedBy: FR0P281CA0148.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:96::9) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802064332.39795-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0048:EE_ X-MS-Office365-Filtering-Correlation-Id: afb99a63-4181-4056-5e63-08db9323a71b X-MS-Exchange-SLBlob-MailProps: ZILSnhm0P3kJA0tFqbs8en6JIaQ9AKh8qSxPTRkAlv5lLCzEadnPYCd0wftLHTGYsUN1sHCTfXBvgJE7OqjNGJKrR65K7d8/t8jQjKkwwyhbcuAhsQu6U1CNf0GcUHCYiTJROD/VUa1RKwM2ERrvZxsSV5n3/Pcn5HzXaViXhZmz6gqyBHAnFF9Ne/OLM2ZuIhOaon7rcre+u9gCFLCEEH0+LBwuv0uityert3ic0yKYhtsROqNi2WkcziRyxNccvaGNJMRUAnGLGn9wq3SVnaovS+hBEHVCRvFEg8uwfNmdTFU9ummOck2b5A4+3AENjX03Dm6QTyT+xc97bpyiDVBg1auI825cVKfR7PqGgU18ZDHqyys4X7LF2cVLTjDWkv8Ip4IVOaLRsBpnw6UDvTaHdLiA/X3j5zMlTO4kFlF5k1FiWZkPj2QeZfng0mWY/nHRqf0Zw0lRxUaAZlZRSEsyZVCGsMXF3OSeMIbUO2cIwXQGTe8rjdfx9DVicvemFnbCse+v9MJBK4sEu+SB8DFUGWpbEMIbyTUpQCunW9XDBj5fF5bnmg9609sR+zfivF8JpOw1boRHVWE/ZVowUNLZZo7m/U4WhSSl8MK1cTJrPnWwKuzusNycCzu3xpl7WruDfHVpAeUxotxifnfcFI0/4PTgdYHZB2tLLe/G+Vxu6RIm8CVSt3hPRwDNNiGEAtqPNZ+ra3lL8FB/kiSc27bLFSadur+mqZLxIcRv8h0/uWF+O3msk/l8C1bvakOL2iHOw37dYF/p8ztogtXNeFVomib3yzTU X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: eri7LB3r9iuSux4tvJXiUVX9edBLA/mECV9HWEB1x3heJ/wCKqlWn6XEJK3jbvU0thGfmFW+39kpIvE3Qk976LVmrWIS9ljh8ED4SxOIJBoCn+Li8s6/UR+Juef2EVxPmtl+mJEStKEklRy1kQEZ1nY0GRooxojKU3Yb85ngJKjRIF9sLzaDXrjJTdZ9tisxlYP8+vJY3Go4Q6jPF8kzC3v051RHGqbpy7TdK2szTvFzUZl6RNmcvDodtQ/CV+c5t3YnuCua2RVhewZbqFkn9XFhe5+AZcdZA9CVwiuMSFWT/PLoKzVmHrAI0kVjIsO4TGB9wAhay/1G9V21BBoBVXzNsFU2VO9f/DD7JjhB6tNAWxUbTHwbQv8YXzTz30DzPPprrf6vEKfzyVk3zOn2//2XRV3h0VqAhu2AvfvysQZA68Br7bezK++9e/Hr5/pbHCJ5a1mZqnAczcxVqm24221SH7CVPkdqZp6tsbhqgOZ8ADRJdljfikKs1wxGpa74dAry4iXML40iixZ1SEXR/HQB0++AYrqG2fbm6fK5hneTPE5Xwnaa/uKs/H5/Oyitbo8x8R1bV6VLhEDG0MFu8NETR5dbdt54u2P8Xq7b3geD6sPthfxDEpuqXYFXIniS X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: tnSecI3ebphlbIT6L7v/echW8SY4NHFp0Z3fZjMynkw+PCqOxE2ZYk0Ws7DkC3iE6IMBnydO7ot+/gWi84h8ss2JEhgpqfJQDtw5yXw97v7k+IMw4v7hsnkBh7qKmZtDB3u5jE6yD1h0fiLlPwfIkyrD6luDYgL6+26FSNGueCyja//2dsGbWOmk16ksPACdTQxgas22Gwgzhncu0QPSlgThDw2gUYrBRCEXrEyBtLmBhEq+M8O6expV+rb3cqbDnhAL7aUlC2n8FCKft2CYqbpU2231wz+nuZIYZIkyaxwkH1DdOCLUt+SQ1HWicDKkgWzTGxdedHjEqrfyIS5VB3tzairSNF8jlvll7aBzU3HL1V8RcMB6atYAAAruc1gqepe/q5auEzENSAV2Ry/jkPCak5gG0XENY1qQx97NvZckyIs96b/kMQ/TIs6ij3YJrTCl/NN3ASZpWqxAvh7GJOkuRMtGNUYpd6IJ7/sAKYZpJA7qCIHAqaDjwEKts5/AeJi1qinLwjYEzxG0X3ptAtimFAWYGjv6utSdNN+O4ydSbwj355XrD048Mh6e3h56DfQhE6IfKmcRNhu66hXzHCidv70n0+JIXwhE39WU2s6V5vsIRZn9kOPDXth49yO3qurIWKGTrjsPcTZFiZI9ZO28BwuYf4KRfVM34jklwVxNXihgDqh7/TzAToHXMqZnb8TP9Aqyk9Ux/gkRB5yikFOHdkGfvlNqTlfWqEOtgt6B8aMkf0Gcv9/brfqH3HThWmAIAwg1ZQrvxY0cfxWhlQJRCSnjgl5MvR6GLiKOoGgmoyTvxNFbSxFuQ40pk3Q7q43g6vNhwm6f1sdYYMPdRol9PyehgRDvr7bADJfl1njXDyDbHHmGOHOOvA/Kiphua5a/FUO6pZNCvqclVemQ1Rmnk7Oia5msSB0HKJBWI7KxzMgzzi7QOD0A+hvisUfmhxqFqeYMh0LtnSOs0tswF8Al6aRwn4KRdHAtlZD69DMR9Yblr66hUrx30QTp9XMsGEL9JQbZpnedl1ByEIeLhj3PdNGkjyv+W9ahCh7m7CacgNHBqxRC1ESlaMM4n8rsqSiD28Nw+rhYlmU8Q3JpXRWmx9w4ydLA7tSLTkS4UaboH/NCQNTUIDb47lSrPs+nuhHYdHM0UsArWTva7Cz5wBwhaoFBJcihVUPZQE3LQb9Hj9XHr6g/HTvscwjGiF7zr9cqJDn1IlqEdh/RYp/XvDgwI5c5N5Z9EO64783zaHO4qAglvR+kp5Iwl/s7ucSz X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: afb99a63-4181-4056-5e63-08db9323a71b X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 06:42:34.2121 (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: DU2P250MB0048 Subject: [FFmpeg-devel] [PATCH 3/5] avcodec/hwconfig: Move HWACCEL_CAP_* to a new header 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: g2/GJfEZvyYV libavcodec/hwconfig.h currently contains HWACCEL_CAP_* flags as well as the definition of AVCodecHWConfigInternal and some macros to create them. The users of these two are nearly disjoint: The flags are used by files providing AVHWAccels whereas AVCodecHWConfigInternal is used by files providing codecs (for FFCodec.hw_configs). This patch therefore moves these flags to a new file hwaccel_internal.h. Signed-off-by: Andreas Rheinhardt --- libavcodec/hwaccel_internal.h | 29 +++++++++++++++++++++++++++++ libavcodec/hwconfig.h | 5 ----- libavcodec/pthread_frame.c | 1 + libavcodec/vaapi_av1.c | 3 +-- libavcodec/vaapi_h264.c | 2 +- libavcodec/vaapi_hevc.c | 2 +- libavcodec/vaapi_mjpeg.c | 2 +- libavcodec/vaapi_mpeg2.c | 2 +- libavcodec/vaapi_mpeg4.c | 2 +- libavcodec/vaapi_vc1.c | 3 +-- libavcodec/vaapi_vp8.c | 2 +- libavcodec/vaapi_vp9.c | 2 +- libavcodec/vdpau_av1.c | 2 +- libavcodec/vdpau_h264.c | 2 +- libavcodec/vdpau_hevc.c | 2 +- libavcodec/vdpau_mpeg12.c | 2 +- libavcodec/vdpau_mpeg4.c | 2 +- libavcodec/vdpau_vc1.c | 2 +- libavcodec/vdpau_vp9.c | 3 +-- libavcodec/vulkan_decode.h | 2 +- 20 files changed, 47 insertions(+), 25 deletions(-) create mode 100644 libavcodec/hwaccel_internal.h diff --git a/libavcodec/hwaccel_internal.h b/libavcodec/hwaccel_internal.h new file mode 100644 index 0000000000..6e6f5c7cf9 --- /dev/null +++ b/libavcodec/hwaccel_internal.h @@ -0,0 +1,29 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * Header providing the internals of AVHWAccel. + */ + +#ifndef AVCODEC_HWACCEL_INTERNAL_H +#define AVCODEC_HWACCEL_INTERNAL_H + +#define HWACCEL_CAP_ASYNC_SAFE (1 << 0) +#define HWACCEL_CAP_THREAD_SAFE (1 << 1) + +#endif /* AVCODEC_HWACCEL_INTERNAL */ diff --git a/libavcodec/hwconfig.h b/libavcodec/hwconfig.h index e8c6186151..3b19d5edad 100644 --- a/libavcodec/hwconfig.h +++ b/libavcodec/hwconfig.h @@ -22,11 +22,6 @@ #include "avcodec.h" #include "hwaccels.h" - -#define HWACCEL_CAP_ASYNC_SAFE (1 << 0) -#define HWACCEL_CAP_THREAD_SAFE (1 << 1) - - typedef struct AVCodecHWConfigInternal { /** * This is the structure which will be returned to the user by diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c index bc305f561f..c14010d803 100644 --- a/libavcodec/pthread_frame.c +++ b/libavcodec/pthread_frame.c @@ -31,6 +31,7 @@ #include "avcodec_internal.h" #include "codec_internal.h" #include "decode.h" +#include "hwaccel_internal.h" #include "hwconfig.h" #include "internal.h" #include "pthread_internal.h" diff --git a/libavcodec/vaapi_av1.c b/libavcodec/vaapi_av1.c index d0339b2705..67ea6af697 100644 --- a/libavcodec/vaapi_av1.c +++ b/libavcodec/vaapi_av1.c @@ -19,8 +19,7 @@ */ #include "libavutil/frame.h" -#include "libavutil/pixdesc.h" -#include "hwconfig.h" +#include "hwaccel_internal.h" #include "vaapi_decode.h" #include "internal.h" #include "av1dec.h" diff --git a/libavcodec/vaapi_h264.c b/libavcodec/vaapi_h264.c index 9332aa6f31..e7f8e920b2 100644 --- a/libavcodec/vaapi_h264.c +++ b/libavcodec/vaapi_h264.c @@ -22,7 +22,7 @@ #include "h264dec.h" #include "h264_ps.h" -#include "hwconfig.h" +#include "hwaccel_internal.h" #include "vaapi_decode.h" /** diff --git a/libavcodec/vaapi_hevc.c b/libavcodec/vaapi_hevc.c index 8b12484fff..87584d1edb 100644 --- a/libavcodec/vaapi_hevc.c +++ b/libavcodec/vaapi_hevc.c @@ -25,7 +25,7 @@ #include "avcodec.h" #include "hevcdec.h" -#include "hwconfig.h" +#include "hwaccel_internal.h" #include "vaapi_decode.h" #include "vaapi_hevc.h" #include "h265_profile_level.h" diff --git a/libavcodec/vaapi_mjpeg.c b/libavcodec/vaapi_mjpeg.c index 81582114b6..1947540ea1 100644 --- a/libavcodec/vaapi_mjpeg.c +++ b/libavcodec/vaapi_mjpeg.c @@ -19,7 +19,7 @@ #include #include -#include "hwconfig.h" +#include "hwaccel_internal.h" #include "vaapi_decode.h" #include "mjpegdec.h" diff --git a/libavcodec/vaapi_mpeg2.c b/libavcodec/vaapi_mpeg2.c index 5e2b889137..09636e0d26 100644 --- a/libavcodec/vaapi_mpeg2.c +++ b/libavcodec/vaapi_mpeg2.c @@ -20,7 +20,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "hwconfig.h" +#include "hwaccel_internal.h" #include "mpegutils.h" #include "mpegvideo.h" #include "mpegvideodec.h" diff --git a/libavcodec/vaapi_mpeg4.c b/libavcodec/vaapi_mpeg4.c index 4e74e0382b..ff31ca4d92 100644 --- a/libavcodec/vaapi_mpeg4.c +++ b/libavcodec/vaapi_mpeg4.c @@ -23,7 +23,7 @@ #include "config_components.h" #include "h263.h" -#include "hwconfig.h" +#include "hwaccel_internal.h" #include "mpeg4videodec.h" #include "mpegvideo.h" #include "mpegvideodec.h" diff --git a/libavcodec/vaapi_vc1.c b/libavcodec/vaapi_vc1.c index fb2132e814..a179e4df11 100644 --- a/libavcodec/vaapi_vc1.c +++ b/libavcodec/vaapi_vc1.c @@ -22,11 +22,10 @@ #include "config_components.h" -#include "hwconfig.h" +#include "hwaccel_internal.h" #include "mpegvideodec.h" #include "vaapi_decode.h" #include "vc1.h" -#include "vc1data.h" /** Translate FFmpeg MV modes to VA API */ static int get_VAMvModeVC1(enum MVModes mv_mode) diff --git a/libavcodec/vaapi_vp8.c b/libavcodec/vaapi_vp8.c index 5b18bf8f34..f833133f9f 100644 --- a/libavcodec/vaapi_vp8.c +++ b/libavcodec/vaapi_vp8.c @@ -19,7 +19,7 @@ #include #include -#include "hwconfig.h" +#include "hwaccel_internal.h" #include "vaapi_decode.h" #include "vp8.h" diff --git a/libavcodec/vaapi_vp9.c b/libavcodec/vaapi_vp9.c index 776382f683..cf735bb7b2 100644 --- a/libavcodec/vaapi_vp9.c +++ b/libavcodec/vaapi_vp9.c @@ -22,7 +22,7 @@ #include "libavutil/pixdesc.h" -#include "hwconfig.h" +#include "hwaccel_internal.h" #include "vaapi_decode.h" #include "vp9shared.h" diff --git a/libavcodec/vdpau_av1.c b/libavcodec/vdpau_av1.c index 3c3c8e61d1..557cbcebd7 100644 --- a/libavcodec/vdpau_av1.c +++ b/libavcodec/vdpau_av1.c @@ -25,7 +25,7 @@ #include "avcodec.h" #include "internal.h" #include "av1dec.h" -#include "hwconfig.h" +#include "hwaccel_internal.h" #include "vdpau.h" #include "vdpau_internal.h" diff --git a/libavcodec/vdpau_h264.c b/libavcodec/vdpau_h264.c index 525e208495..1c5622662b 100644 --- a/libavcodec/vdpau_h264.c +++ b/libavcodec/vdpau_h264.c @@ -26,7 +26,7 @@ #include "avcodec.h" #include "h264dec.h" #include "h264_ps.h" -#include "hwconfig.h" +#include "hwaccel_internal.h" #include "mpegutils.h" #include "vdpau.h" #include "vdpau_internal.h" diff --git a/libavcodec/vdpau_hevc.c b/libavcodec/vdpau_hevc.c index 2669040f78..fb1b71abdc 100644 --- a/libavcodec/vdpau_hevc.c +++ b/libavcodec/vdpau_hevc.c @@ -25,7 +25,7 @@ #include "avcodec.h" #include "hevc_data.h" #include "hevcdec.h" -#include "hwconfig.h" +#include "hwaccel_internal.h" #include "vdpau.h" #include "vdpau_internal.h" #include "h265_profile_level.h" diff --git a/libavcodec/vdpau_mpeg12.c b/libavcodec/vdpau_mpeg12.c index 79007aa1a8..d7223cdb4a 100644 --- a/libavcodec/vdpau_mpeg12.c +++ b/libavcodec/vdpau_mpeg12.c @@ -26,7 +26,7 @@ #include #include "avcodec.h" -#include "hwconfig.h" +#include "hwaccel_internal.h" #include "mpegvideo.h" #include "vdpau.h" #include "vdpau_internal.h" diff --git a/libavcodec/vdpau_mpeg4.c b/libavcodec/vdpau_mpeg4.c index 1211b1df2c..ce6d421196 100644 --- a/libavcodec/vdpau_mpeg4.c +++ b/libavcodec/vdpau_mpeg4.c @@ -24,7 +24,7 @@ #include #include "avcodec.h" -#include "hwconfig.h" +#include "hwaccel_internal.h" #include "mpeg4videodec.h" #include "vdpau.h" #include "vdpau_internal.h" diff --git a/libavcodec/vdpau_vc1.c b/libavcodec/vdpau_vc1.c index 00b33f420b..851a89d7cf 100644 --- a/libavcodec/vdpau_vc1.c +++ b/libavcodec/vdpau_vc1.c @@ -26,7 +26,7 @@ #include #include "avcodec.h" -#include "hwconfig.h" +#include "hwaccel_internal.h" #include "vc1.h" #include "vdpau.h" #include "vdpau_internal.h" diff --git a/libavcodec/vdpau_vp9.c b/libavcodec/vdpau_vp9.c index 49fe18189b..1e6a1fc007 100644 --- a/libavcodec/vdpau_vp9.c +++ b/libavcodec/vdpau_vp9.c @@ -23,9 +23,8 @@ #include #include "libavutil/pixdesc.h" #include "avcodec.h" -#include "vp9data.h" +#include "hwaccel_internal.h" #include "vp9dec.h" -#include "hwconfig.h" #include "vdpau.h" #include "vdpau_internal.h" diff --git a/libavcodec/vulkan_decode.h b/libavcodec/vulkan_decode.h index 1b4e1cc712..0aaa2e2de0 100644 --- a/libavcodec/vulkan_decode.h +++ b/libavcodec/vulkan_decode.h @@ -20,7 +20,7 @@ #define AVCODEC_VULKAN_DECODE_H #include "decode.h" -#include "hwconfig.h" +#include "hwaccel_internal.h" #include "internal.h" #include "vulkan_video.h" From patchwork Wed Aug 2 06:43:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43074 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp455487pzb; Tue, 1 Aug 2023 23:43:01 -0700 (PDT) X-Google-Smtp-Source: APBJJlEyRLrPX9jOuVPzY802qyqo78e2ItUy71LjFvuLFpOfLO9h46qaewGKhX3KUyrDZK+3jeNJ X-Received: by 2002:a17:906:30d7:b0:997:e8b8:8d6 with SMTP id b23-20020a17090630d700b00997e8b808d6mr4270388ejb.28.1690958580999; Tue, 01 Aug 2023 23:43:00 -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 kb10-20020a1709070f8a00b0099b6e6c095csi9694968ejc.698.2023.08.01.23.43.00; Tue, 01 Aug 2023 23:43:00 -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=VzfnSmbf; 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 CADF568C5C0; Wed, 2 Aug 2023 09:42:44 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2024.outbound.protection.outlook.com [40.92.90.24]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0DBC268C5AA for ; Wed, 2 Aug 2023 09:42:39 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QrlQTTw8YC3x8MZqNspqOLdLeK2JmwjMnsEZmli/Xm3DboBVix7P4OvtOFLu0rQ2xL0nY/dAcKWDVtFxQfVZlqLWw0HJbWrXHuxaRCBMSLaRob9wnqiLXf3c0haNAXyVSLdlZZ2fgfeuDISzQXCaz4/Cikv2uB5DM+NHI0lS+HCOtTpRx2B6dIKfssNhAfAmtQoIUw6Xne2zL+2gQeAeT00WmNqqiTZopYScvTQiLKTAw27T6nJ1izTnbZbU3HcbXhoYwosmCfredqTPrgjkP1tgFIIqToPhwXsp9l1hkmlJZCWvpUDwFgbhANUHZLbIe+i51D7qicrIEJKThlTnMA== 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=nlHk+bkD5kxlRKnrtQjvbOFU2kMpMw4VZMM6RflFHT4=; b=MnHV0SPNw5ShHTn017pOQwav5uzCSmVXnL6B95Ub3A6m57tA9ngkapXeTeXNhtkjRkLT4VSIV1pkZfBCMeouq7+xDG5J/ZzXNXkF0eLDx7mggOtU/wrQj4EnpbOTOV9wzeTxLngwU5NV9+nO1kk4r3DA9TgWWxr3apopLNmq7cnRqzbhNMFgV31jHQPgptpEqLvOvGsZzmgIjJ9RWq2pLwMjv5c9t5MrRNkS5vQzYuIgmnODqXPP8k77Ur3Z4UDq4pSt7DO/lXj3WgQem0iNj3jyceFfAuHL3dJcUtaFxxyZgpBLgMSJyRQy5mv06zn5uAKSzbJ+pMTMMGny/dbZ5Q== 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=nlHk+bkD5kxlRKnrtQjvbOFU2kMpMw4VZMM6RflFHT4=; b=VzfnSmbf509pkuhXyXeh47AWH1TXdSk4l1AqnOAmkO994bmmsqFaANBPhgw5Dd7T4HDbSEGgyyHPePlcW3L4sB+67F2x7fyz+riBIOL+Ur66pLjRebDcPqu/DQAymqpYUTVqqp9r7J1ctQjFjzP1fav5EMqGIcRLWyxgfv1weFHokE+YaNjy8XAumPT1JubiWcq8jFe8+e1wbCuRyAIYq00tdZ3iQbClf0b66gIBR4Q/HkUQ7Dyku/nBOz7ypJQpePw0QZxJrnjJp8VYAq6OC7Wo7HjGU1tFNZmAC8860MINHE1WTas6aOOlzlHlFTZE0aFZq9Bk2PVU5ovLCAa3Lw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0215.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:326::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 06:42:37 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 06:42:36 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 08:43:31 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [90vUCzTNlMWfYQGn7c7DBPYrqGtm9CQOzHnqXwbJLr0=] X-ClientProxiedBy: FR0P281CA0148.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:96::9) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802064332.39795-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0215:EE_ X-MS-Office365-Filtering-Correlation-Id: 69e5b44c-f706-4e07-2344-08db9323a8ba X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmrpbvZQFz99JeucukBOVYaZTuPIByLwW4X9qpDNbNkdNiQW77DDS8S9WF54nJxZuPhHlDjPappl2MGhcM5lyru30hVlzYdO+704ontpElyiONj4dgJXj7rY2F9HInpuL+Unh4Vt1MME7xhek2rUadbwSN8x3jNpaDgg2kqwC5Ikwk4eg2NsvCb72wsQVfw+DqVQS1Xx6VRE5x1NFFxGarI/PdvGNa5Ey2jLsi6PJZLDmpDw4L/7j9ntcCE+ur+JM0vFlnK1IIOQP8E4kGCWBZKi7ElN13y9thLPn4Z7+DG79nZpJrWQfUMKjgjfbKhmgk9QAsTW2E1nTblZxBwk59RRxGQe3L2YqMFoT8D0pFuzfQMUkZvHIHrEoycg4nBMPj4UuY3pQVgX4Of8ParNAj+xXBYb280PT7dmwZ5rdbjSLI2+yJNCSI/0AvsOXT11k0hCNKa8AnTpxAE//RlZucNoohv9zMPPK167rBXMjHONSWeW8yY+1hvKzxrmlyPjSzswn3YibVGIO+Etqne2kyOmoyx3aSC7DQLkhk10f0low4o162DzUJLHG9HboKZPz6b3lQKOgsHnIBWO6fvueRP9yjPrVmll5eCX1Ufwh9+z+E+wHUej+i1flbS16tAQ4Dp03yBn/OOAPauyh2w1bc0cRJjAwAgAwYB8/Wqag0W0eKR6sb7HYxCYTJB0Yz03pzmf1LQ2BgoWo05nWG7SNQ+68IPdvl8KD5PLyyE24TZ7iTTdwQ5RrONt/fVMXqEs5Bo= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: y4vddgxM/snjHtlHXXeOPKvZ/VGINB2icp/Xg7xbliQeNLiWgglO19t5fmfK7i5k+6DgZok+725JjlfK02Cf9KYdQp1+EIN6PS59WVLb9tGyN01AyFW8ElPgFmzHJL7jDGTm/BShEPjnz1VE+0nAVB7nzqofvJUkRYOFwtc0BCTE85YYw3b4SMYkb5jlueIMCVj+8Qqz7IljIqNZBEWIkRzz0iQzzIEsAXhHzNRhKXGiuzumzEB0LskDIRXjthQ5uiS+TNf9TDBZ1NdFNLgkZPk2XdtMbORhQ49BfsL0jYkl77Yvk38qnCZiWiEm8r2tvjSUV0sVCQ1k3/OLfADE0C3l33Eh9/tfqrWmeQUGxII1elQtpVmSR9Y8SkExUOH37Iyjq0DoG3enn4BUUvv6h26JLhEzHR8vfEhgasJrsIenTjzFLuE7G8l6VnNurD56xFI/TJ9kXbJzCYCYCDM4ILPrwMLe4rbp7KG4c+2AIAksAPUdE9JC6WS9vaTwqf9URc4KThJA2ca1QwT2IO8NTF4hNAkDtm10t0nU8ShyXsR/mZozDoX9fB6bYm5AcP/Cqr3xwto+c0hcjLcBdROazoA6eUwU9sLxRQQbB7ro1sO/28kCWoWyEkT5liK4bWUC X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: uaqWIJGpQ5gXovEQ6/jQQ6vn+HrkPtBNovGlTcfw4RbZ0hnrqYsRgdwo/yV+PyVmSv8t03coTt6lGdl014D+PJmvuHeW3KEeTjtAslklydZRS3LeWFTENEg4fgn+HG7cb3wPTjeaX8jdJwO6JoQcSzFAslmP82LzWnDx+/3c9puTbaXuqR7KmrUyJlJgSxhVmeOJdOun6tBBWqUq0b0zSLmmKSoGMQJ0WbImg3PONOzaOOlyTvSUTSLPtZkwzdthuSmhEAVW8Q0P0hVvEUGMeqEAqxlxjCyFwgDnBIbwsjPVHeV8iVavWXeDK4SV6cpRry1hH8qioymW59GFGHVjBxx+64w98z6ljJA0K4PIxxY3WCnUwDFbVvl8Wf5ZYYnIDxMbxFNIB4MkdaJGMqSWFZfCxNsjKACEeQobg13Sfa0yyTxp5ng7Z9qdYPx2vldsRli8CT80nKvtsOIWP9ntoxtV3FqW/cVBjM1B01498Qpun9WZnzBM004JskiTE7QmSG/8mcdKyLy7eSR8R/mOPhc+cUWVHGh/xGgwrxUJ6Lo/zj3crQxTf23UDwksDMFDIQXOrKqaj+MirvkyoKRf8XSfom5gU8KwMzgITYZXCS2VgE4EF3hOQldzBpOsrxpHUt0dJubkPUfjFg5BbrtZrHk14W6Y0kfaTn3H7B4SLh6fJDWyoXL6I4t+s56jsax8QtZLkFdoozq1UqMBVPOk3vQIp6UtXC2+U37oAtkHO67sVhe0A6dldGhEggUemtRNPNy8dNrMM7JzRLIb92huuXaZzlUlNxN4RmbvJ1u4ibD70Yf5ZiMUxCWplSSAkW7rUULgfv3C9oc88qo8VnIXJwXPZ1/ECNj7U6+IxrVTbu4M9G7P9/27fC7ANAsnAm+GUzyM/+qFaRcmbsFhy1ZS4BOuB4Hx1aTtzXHiKHYwR09oF0rP4ru4RjsgQnYJnvR8tTKiuRXdGXjVjbbruuKZoRtFoa03MYMpUTwbwL7e0HhLsErFtJKZR+ejyzJbU+vdyrP6umq1LLwyZdrhijXu/Z6UvBf2AAxiraFBU1HzNsk/tvwWKpLUCfn9oISt/lRG54lw2xJpE1Jy3AmOuIo3oJnf5/KvGhpeDoA1IhfhfK0VF9ivzwIPzKycgGrsVowWD8A9F/75xFDtPhlzbKXgNG9mqOp+toxC/dxtyqa6GDRKxsE0+4xyEQ33Fwqo/eZgWPF/LMQHHC6v7tlGKN22EfxSZbHk5CAKQ4RQO3eplCDF4MK+QJPLnlqAJBsK+pmB X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 69e5b44c-f706-4e07-2344-08db9323a8ba X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 06:42:36.9198 (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: AM8P250MB0215 Subject: [FFmpeg-devel] [PATCH 4/5] avcodec/decode: Extend ff_hwaccel_frame_priv_alloc()'s task 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: 2M3tGehy3ly9 All usages of ff_hwaccel_frame_priv_alloc() have the same pattern: Check for whether a hwaccel is in use; check whether it needs private frame-specific data; allocate the AVBuffer and set it. This commit modifies ff_hwaccel_frame_priv_alloc() to perform this task on its own. (It also seems that the H.264 decoder did not perform proper cleanup in case the buffer could not be allocated. This has been changed.) Signed-off-by: Andreas Rheinhardt --- libavcodec/av1dec.c | 16 +++++----------- libavcodec/decode.c | 26 +++++++++++++++++++------- libavcodec/decode.h | 17 ++++++++++------- libavcodec/h264_slice.c | 15 +++++---------- libavcodec/hevc_refs.c | 14 ++++---------- libavcodec/mpegpicture.c | 15 ++++----------- libavcodec/vp8.c | 18 ++++++++---------- libavcodec/vp9.c | 18 +++++++----------- 8 files changed, 62 insertions(+), 77 deletions(-) diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c index cc178464b9..09339529f7 100644 --- a/libavcodec/av1dec.c +++ b/libavcodec/av1dec.c @@ -907,17 +907,11 @@ static int av1_frame_alloc(AVCodecContext *avctx, AV1Frame *f) break; } - if (avctx->hwaccel) { - const AVHWAccel *hwaccel = avctx->hwaccel; - if (hwaccel->frame_priv_data_size) { - f->hwaccel_priv_buf = ff_hwaccel_frame_priv_alloc(avctx, hwaccel); - if (!f->hwaccel_priv_buf) { - ret = AVERROR(ENOMEM); - goto fail; - } - f->hwaccel_picture_private = f->hwaccel_priv_buf->data; - } - } + ret = ff_hwaccel_frame_priv_alloc(avctx, &f->hwaccel_picture_private, + &f->hwaccel_priv_buf); + if (ret < 0) + goto fail; + return 0; fail: diff --git a/libavcodec/decode.c b/libavcodec/decode.c index 53c90cddb7..be761873a3 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -1788,24 +1788,36 @@ int ff_copy_palette(void *dst, const AVPacket *src, void *logctx) return 0; } -AVBufferRef *ff_hwaccel_frame_priv_alloc(AVCodecContext *avctx, - const AVHWAccel *hwaccel) +int ff_hwaccel_frame_priv_alloc(AVCodecContext *avctx, void **hwaccel_picture_private, + AVBufferRef **hwaccel_priv_buf) { + const AVHWAccel *hwaccel = avctx->hwaccel; AVBufferRef *ref; - AVHWFramesContext *frames_ctx = (AVHWFramesContext *)avctx->hw_frames_ctx->data; - uint8_t *data = av_mallocz(hwaccel->frame_priv_data_size); + AVHWFramesContext *frames_ctx; + uint8_t *data; + + if (!hwaccel || !hwaccel->frame_priv_data_size) + return 0; + + av_assert0(!*hwaccel_picture_private); + data = av_mallocz(hwaccel->frame_priv_data_size); if (!data) - return NULL; + return AVERROR(ENOMEM); + + frames_ctx = (AVHWFramesContext *)avctx->hw_frames_ctx->data; ref = av_buffer_create(data, hwaccel->frame_priv_data_size, hwaccel->free_frame_priv, frames_ctx->device_ctx, 0); if (!ref) { av_free(data); - return NULL; + return AVERROR(ENOMEM); } - return ref; + *hwaccel_priv_buf = ref; + *hwaccel_picture_private = ref->data; + + return 0; } void ff_decode_flush_buffers(AVCodecContext *avctx) diff --git a/libavcodec/decode.h b/libavcodec/decode.h index 2b9fe59907..a52152e4a7 100644 --- a/libavcodec/decode.h +++ b/libavcodec/decode.h @@ -140,14 +140,17 @@ int ff_side_data_update_matrix_encoding(AVFrame *frame, enum AVMatrixEncoding matrix_encoding); /** - * Allocate a hwaccel frame private data and create an AVBufferRef - * from it. + * Allocate a hwaccel frame private data if the provided avctx + * uses a hwaccel method that needs it. The private data will + * be refcounted via the AVBuffer API (if allocated). * - * @param avctx The codec context which to attach as an opaque value - * @param hwaccel The hwaccel for which to allocate - * @return The allocated buffer + * @param avctx The codec context + * @param hwaccel_picture_private Pointer to return hwaccel_picture_private + * @param hwaccel_priv_buf Pointer to return the AVBufferRef owning + * hwaccel_picture_private + * @return 0 on success, < 0 on error */ -AVBufferRef *ff_hwaccel_frame_priv_alloc(AVCodecContext *avctx, - const AVHWAccel *hwaccel); +int ff_hwaccel_frame_priv_alloc(AVCodecContext *avctx, void **hwaccel_picture_private, + AVBufferRef **hwaccel_priv_buf); #endif /* AVCODEC_DECODE_H */ diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 790ba644cd..27fbd8d953 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -209,16 +209,11 @@ static int alloc_picture(H264Context *h, H264Picture *pic) goto fail; } - if (h->avctx->hwaccel) { - const AVHWAccel *hwaccel = h->avctx->hwaccel; - av_assert0(!pic->hwaccel_picture_private); - if (hwaccel->frame_priv_data_size) { - pic->hwaccel_priv_buf = ff_hwaccel_frame_priv_alloc(h->avctx, hwaccel); - if (!pic->hwaccel_priv_buf) - return AVERROR(ENOMEM); - pic->hwaccel_picture_private = pic->hwaccel_priv_buf->data; - } - } + ret = ff_hwaccel_frame_priv_alloc(h->avctx, &pic->hwaccel_picture_private, + &pic->hwaccel_priv_buf); + if (ret < 0) + goto fail; + if (CONFIG_GRAY && !h->avctx->hwaccel && h->flags & AV_CODEC_FLAG_GRAY && pic->f->data[2]) { int h_chroma_shift, v_chroma_shift; av_pix_fmt_get_chroma_sub_sample(pic->f->format, diff --git a/libavcodec/hevc_refs.c b/libavcodec/hevc_refs.c index 3aa8e19950..c5c1203ef8 100644 --- a/libavcodec/hevc_refs.c +++ b/libavcodec/hevc_refs.c @@ -118,16 +118,10 @@ static HEVCFrame *alloc_frame(HEVCContext *s) (s->sei.picture_timing.picture_struct == AV_PICTURE_STRUCTURE_BOTTOM_FIELD)) frame->frame->flags |= AV_FRAME_FLAG_INTERLACED; - if (s->avctx->hwaccel) { - const AVHWAccel *hwaccel = s->avctx->hwaccel; - av_assert0(!frame->hwaccel_picture_private); - if (hwaccel->frame_priv_data_size) { - frame->hwaccel_priv_buf = ff_hwaccel_frame_priv_alloc(s->avctx, hwaccel); - if (!frame->hwaccel_priv_buf) - goto fail; - frame->hwaccel_picture_private = frame->hwaccel_priv_buf->data; - } - } + ret = ff_hwaccel_frame_priv_alloc(s->avctx, &frame->hwaccel_picture_private, + &frame->hwaccel_priv_buf); + if (ret < 0) + goto fail; return frame; fail: diff --git a/libavcodec/mpegpicture.c b/libavcodec/mpegpicture.c index 71c7a3fd70..b7c804c8ec 100644 --- a/libavcodec/mpegpicture.c +++ b/libavcodec/mpegpicture.c @@ -171,17 +171,10 @@ static int alloc_frame_buffer(AVCodecContext *avctx, Picture *pic, pic->f->height = avctx->height; } - if (avctx->hwaccel) { - assert(!pic->hwaccel_picture_private); - if (avctx->hwaccel->frame_priv_data_size) { - pic->hwaccel_priv_buf = ff_hwaccel_frame_priv_alloc(avctx, avctx->hwaccel); - if (!pic->hwaccel_priv_buf) { - av_log(avctx, AV_LOG_ERROR, "alloc_frame_buffer() failed (hwaccel private data allocation)\n"); - return -1; - } - pic->hwaccel_picture_private = pic->hwaccel_priv_buf->data; - } - } + ret = ff_hwaccel_frame_priv_alloc(avctx, &pic->hwaccel_picture_private, + &pic->hwaccel_priv_buf); + if (ret < 0) + return ret; if ((linesize && linesize != pic->f->linesize[0]) || (uvlinesize && uvlinesize != pic->f->linesize[1])) { diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c index 50afe19b7a..15a2961f56 100644 --- a/libavcodec/vp8.c +++ b/libavcodec/vp8.c @@ -104,23 +104,21 @@ static int vp8_alloc_frame(VP8Context *s, VP8Frame *f, int ref) if ((ret = ff_thread_get_ext_buffer(s->avctx, &f->tf, ref ? AV_GET_BUFFER_FLAG_REF : 0)) < 0) return ret; - if (!(f->seg_map = av_buffer_allocz(s->mb_width * s->mb_height))) + if (!(f->seg_map = av_buffer_allocz(s->mb_width * s->mb_height))) { + ret = AVERROR(ENOMEM); goto fail; - if (s->avctx->hwaccel) { - const AVHWAccel *hwaccel = s->avctx->hwaccel; - if (hwaccel->frame_priv_data_size) { - f->hwaccel_priv_buf = ff_hwaccel_frame_priv_alloc(s->avctx, hwaccel); - if (!f->hwaccel_priv_buf) - goto fail; - f->hwaccel_picture_private = f->hwaccel_priv_buf->data; - } } + ret = ff_hwaccel_frame_priv_alloc(s->avctx, &f->hwaccel_picture_private, + &f->hwaccel_priv_buf); + if (ret < 0) + goto fail; + return 0; fail: av_buffer_unref(&f->seg_map); ff_thread_release_ext_buffer(s->avctx, &f->tf); - return AVERROR(ENOMEM); + return ret; } static void vp8_release_frame(VP8Context *s, VP8Frame *f) diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c index 4f704ec0dd..751dc7271f 100644 --- a/libavcodec/vp9.c +++ b/libavcodec/vp9.c @@ -119,12 +119,14 @@ static int vp9_frame_alloc(AVCodecContext *avctx, VP9Frame *f) s->frame_extradata_pool = av_buffer_pool_init(sz * (1 + sizeof(VP9mvrefPair)), NULL); if (!s->frame_extradata_pool) { s->frame_extradata_pool_size = 0; + ret = AVERROR(ENOMEM); goto fail; } s->frame_extradata_pool_size = sz; } f->extradata = av_buffer_pool_get(s->frame_extradata_pool); if (!f->extradata) { + ret = AVERROR(ENOMEM); goto fail; } memset(f->extradata->data, 0, f->extradata->size); @@ -132,22 +134,16 @@ static int vp9_frame_alloc(AVCodecContext *avctx, VP9Frame *f) f->segmentation_map = f->extradata->data; f->mv = (VP9mvrefPair *) (f->extradata->data + sz); - if (avctx->hwaccel) { - const AVHWAccel *hwaccel = avctx->hwaccel; - av_assert0(!f->hwaccel_picture_private); - if (hwaccel->frame_priv_data_size) { - f->hwaccel_priv_buf = ff_hwaccel_frame_priv_alloc(avctx, hwaccel); - if (!f->hwaccel_priv_buf) - goto fail; - f->hwaccel_picture_private = f->hwaccel_priv_buf->data; - } - } + ret = ff_hwaccel_frame_priv_alloc(avctx, &f->hwaccel_picture_private, + &f->hwaccel_priv_buf); + if (ret < 0) + goto fail; return 0; fail: vp9_frame_unref(avctx, f); - return AVERROR(ENOMEM); + return ret; } static int vp9_frame_ref(AVCodecContext *avctx, VP9Frame *dst, VP9Frame *src) From patchwork Wed Aug 2 06:43:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43075 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp455544pzb; Tue, 1 Aug 2023 23:43:11 -0700 (PDT) X-Google-Smtp-Source: APBJJlHxQRnkTzEINxXiCcYXzBa3hTZ2nOANx/q5FJ00sbkfdiItYvwjZqAmiFcUaMIAiIqT17hS X-Received: by 2002:a05:6402:40ce:b0:522:aad4:aae0 with SMTP id z14-20020a05640240ce00b00522aad4aae0mr5600805edb.3.1690958591386; Tue, 01 Aug 2023 23:43:11 -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 f4-20020a056402160400b0051e1616f27esi9380429edv.20.2023.08.01.23.43.10; Tue, 01 Aug 2023 23:43:11 -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=VS9rI0N6; 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 02BEE68C5FB; Wed, 2 Aug 2023 09:42:53 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01olkn2087.outbound.protection.outlook.com [40.92.64.87]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5B27968C32C for ; Wed, 2 Aug 2023 09:42:45 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L5HipzLn5+9oA9cewSsB2ltqfcRoiYfHUveL8ePNPT+mJh1w6lXG4+oRA98Zn0EevgCuVQeEIL0ribLmkkaYJ/+Umd4a4NNf22wzVdNN4FP+d7WzxKlpG2ZaoNuOl+wEWHIwUT2I0HXD25eLzzFheGyCPU9Q8tZn2Q5WRUR0tRqd15JuNUhuK96OxmJgDVSegvMa12iL3WSMif7ulPeqaTUVEqLFP1pdKlv7CBwPPiCYiZTNLDKeFG4fUnaLzG2k6av75KJuVLHHOqtLOLaWlfd7qdCoCC1WILpV/ZciFcPLAaY9eNxbf14lSCmwDE9V1ptgbokEQFGhoV7tuU6caw== 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=VHYPTFSe4iAmPaxbiHoOhf1VvXmx4SEsYbtFNrECNxM=; b=EUJo2o/0Hi/GM+9UuHUNe7Mts3CGxRiKaIfizOSr7TgDvqYJiD8BTxae9spRL+lVFjCTSYNCTG8qrQqeNA8t1ee1vPY+vhPZ2igUTDDuBJXPBWD9VzfO6cAf/OIR7XjkQMPBeFzWnXHav/d3a9nJKMvqGGM9ErW0fTe0Zn1DZ3YFjrcbJwslwZL4tfuEdDRPEcULZg5Aw7deIkJXt9gzVICHmPbjH+dHcFJDA6iP0/uUmwAUAPYsa95NZFnXP2m3tv6mnn/FCH2TGDk3MNQi4jC81PoqHXncxnw4yUFXu7/vkJJd7QR6dtgebi0lVEDTuqt84KL88S2IHNS7F5WFYw== 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=VHYPTFSe4iAmPaxbiHoOhf1VvXmx4SEsYbtFNrECNxM=; b=VS9rI0N6603H3c45OcXyfUmAnQr7RKFZetrQjEH9SMB2EaXXNubCdmgkPNNRU/IhlxC8e5rBfB5ZjsflWKfxH2RaNpDPk62kvWwzLXbESXG1/zcot/owKptok/h6abb8wfyaPikZb2eGPwc5D5eR09Kk7mY06t0f+TXC+G1VGzR1zK8LBRTJshiC+GY2PIBxCgczUrm2gR/ocoGIpnwE+SML7XXCaN5BS+lE/0n0R+6wDedAeXON223pcu8Ru4CFp/b0M3B+TthP890MQbMirdcM+8GdcpANe33HzyGh8lbGhcWOz673hC1P9VudFf/kLSRIcTWTvRb1NkgvEN4lNQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0215.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:326::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 06:42:39 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 06:42:39 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 08:43:32 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [oTiMGZ98QXTVDkHPIpg/HxmRJr2F+zWqzIQCMKYw8/w=] X-ClientProxiedBy: FR0P281CA0148.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:96::9) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802064332.39795-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0215:EE_ X-MS-Office365-Filtering-Correlation-Id: bd1d1440-83a0-48f5-8ead-08db9323a9f9 X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmrpbvZQFz99JeucukBOVYaZYq2BJNkFH89S4v7sFSAkaSCZYImLfULCNbN/kvR9cr0qhcvUNl8tdjIu8WcK3IuS6+8JK39IROStsuf6EDbqIVrMaIkBsorboBLEKSWZeqX/8ruz4nkshxtGanS9XaHrQAxFKHDKUK6p3jdlTNlxHMa62jjGr/2YWKU2t5VQDf3j0gWdnAlBCvgO8cIrtA45+wAfwKsbL96aat9AsyEAZmF5Jc1H/DrN+pULm633EtQ0HkN49Sw8n7UfQHzndl+793C8aQ8nj1bVv2oBKAqw0+yOeRh37gPhhk+bu0lN+AIm2mHWe0C7uaUsg/EGZ/OYZ+C7HsDEQaXQAbQ9BwSOh+OT0AsTmt0xdq1Mg82pM3e+V3noIBZPesy23Uolmg0esFkzvIrlsnFsHSwkOj7MeRInaiU0y0lO1ABV3hQaa7n6g/jYqKJf/MnFnq9OGk2RBBmEfaZ1FKHa6U8wp+V2AjGeTlQ23lHHAPx+puaXuTUehM9azEmSsf02phv8RvIc3sbg2U6JIr6/xCmm+iY5swFNt9M9b/EJq3aC1AfghNRjJIC63Xt8RF9lwT4+OFOfOc0qgfmBpZlsdAyGzjnLAnBh5HbI8weVSIlEDGm9qCw8GTUfSh7JQVMBnk3UOQDBFSb2Rtjm+bwspfH3K+we1jMS9CJ1GTTiQE1/ikzvN6aRnfNS5MfwbwWbJyMVixloswtfm+45+CmzHS4UcUuO4NmAYaxggJUSNrkHxG3f/08= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Pg23UN0DLIlLSrMw2Tj8Oh+ysbMuIk4K0dLwD0d+akObTJdXhXlC9shuyJamTsP506EnGNx0o65K1QYCjeuNPuUdz+i9T5npwzi40i90gKcUkeSVOLdo1ABiYHLzvDF7YHo+We2AQm1vYL5E1KrTkikSfGuZdanFcpNouUfrWEFxukyynGtW3gTyQz0Va/LKHm4pENGRS0NPsAmkGtTNljKPNk3gMzFX3O2MU5W82GEsobNrjP4XahTktDQPsAyDV9KVCENgvbe/RQXa/YSo7ASohlOveKno2v6ZG5KDJJXF83KMqvcXymssKgZmBP/AasVjD86fArOTSjcVzZ1ER5Dvp9w0V5iCEM4tAuTZpQk7WCqn+bFrdWQkczImaefWVOjOW6Ug3FQI1j/t0Pe7+AoAQ1lSug/gRCEAfq6o+pNtlin9LYh815jwk8T73O8O5zeycVxQsDw1/8X8ksC9jd1i91IWpQlyQiZTTt1yWiezs2KS0zCfZlQ3rpi1+9YNrDh1C/n8v+7f9tRzDY5E+uCMypLwEMCbGGIAqPim8QMR/MJzz9UQPJ7Alpd81i1KHHIUN4jRdYbNMAzjKgQZPgcBRgtj79jzQQRiujGseIVPqQ+eNrCcaWeFb8WlqycP X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: LO5lnAuI5Qu3rPXYm8/tJVtaN8Fa1EJfEd+zwSJFuP4PcbubEPSgSFmljNDW2MQupvW77Tu6vJsE0l/hySYFJDQmPi7Ff9bUAd1Yw+DhpPC2/+0sP+vSjFFJ2zvDYrevp4OhOq/b9ERScrD0XEi1p6tkk4G7E48vbBm4ApoymHKx+4jl+5dlMwj8scX4s6glzlsY9WmLLJqVOBKL0nmtvmeUaXUpAnp8Ngu0ETRfoZlPk3omyzSLQR/d01j89e26Kz1xE3qQ+aSWCwbZdOjj1xPYSkqGUaYIDVd1uEYuYtCzq50Mu8BkKM03rbxpraEtZec8iMDHAp9ZOAG9+n9J0HfKSztrbNXKGjVIIK5H/giuNfbkTnKrYvqnic0FxdEFurZs38KWCaLVDfpNcljYneduKHnkXKf6vf5A51XYZIytTNcZQ1RX5wvhUL2+7C+gdaWQPDgojmTbt3KStBNCPHUnnRRFa29Wrmqf4JtBAjTk1T5WE3c4/2yln6PrM2rQi9HxLZau5dvArxWE0Y/bYgvHF+XNpFoOpnTVRMAuVX/FIf+IVaJ6pGDXgxysjs/173fFT8ghjGqK78O6bnC5k5SpKcVI1VnFZ4pgMxmSs/gjTwCWPWp7RaFoSjt4NsTyFdO35NEg1qqFqcS82+VLpYuHrwF+QFHZ6q/9WmuZz5q7EyUuDtL/ijPKrG/T0d4VBZBz4cjlm2krNq0J/6eYV3pmYO0hH/u8lbJ/+uX7CjHfJReXCWdf/kaAOxeEBZ6f236CxxBtHFkAqvb0AG37FhM7F6Q4vuZkLGnTAPe0jGJ9Fat3uhB4zPiw8KIaH7HvfrojWUMWIuanCfb42hnO8MEFhz9jQtBj7rY8X67jmnzyR60UQM7rvU9QQt/EGvHnH2JCch7O7QRuTttux1iwc54oJ6TTmpmRYeX+nowez9vkSIcFnZtV6rFtg0AZGvRwFSbN0tg+TXW+/0ZQ9yfBf5KJP8gie/tFyEcRyAu8BE2zOFN8Fbu4RuxeuJdhvBEw/Aou0ly2cQHoJBxOAzvRE+RznAfv2DjIYSouUnB4gx7KlH92M7w0V0PYwubMZ+Bg50Rra3oxRsrJeDETDrETaczZ6gfxrjbZM3Uf5443P2eIdDKzp9nXD16QS7R6ZYA1mw9XzRiBvWD6WZhOnPG+7y3xTI9WBi8O09CJr2oN6MMmrY2F8LG5cZT1vmjBW2mustfgVO31r0LSB/ZYAOIwuBkReKoaNeFnUuyq9pBJ0T8KfYCa5nxEzLAK2zstu7f4 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bd1d1440-83a0-48f5-8ead-08db9323a9f9 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 06:42:39.1128 (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: AM8P250MB0215 Subject: [FFmpeg-devel] [PATCH 5/5] avcodec/avcodec: Add FFHWAccel, hide internals of AVHWAccel 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: TUlaQ+QRRM/J This commit is the AVHWAccel analogue of commit 20f972701806be20a77f808db332d9489343bb78: It moves the private fields of AVHWAccel to a new struct FFHWAccel extending AVHWAccel in an internal header (namely hwaccel_internal.h). Signed-off-by: Andreas Rheinhardt --- I wonder whether I should make a shortcut that returns the FFHWAccel from an avctx; but I don't know a better name than "ffhwaccel2". configure | 2 +- libavcodec/av1dec.c | 21 +++-- libavcodec/avcodec.h | 133 ------------------------------ libavcodec/decode.c | 21 ++--- libavcodec/dxva2_av1.c | 31 +++---- libavcodec/dxva2_h264.c | 31 +++---- libavcodec/dxva2_hevc.c | 31 +++---- libavcodec/dxva2_mpeg2.c | 31 +++---- libavcodec/dxva2_vc1.c | 61 +++++++------- libavcodec/dxva2_vp9.c | 31 +++---- libavcodec/h263dec.c | 9 +- libavcodec/h264_picture.c | 3 +- libavcodec/h264dec.c | 25 +++--- libavcodec/hevcdec.c | 43 ++++------ libavcodec/hwaccel_internal.h | 150 ++++++++++++++++++++++++++++++++++ libavcodec/hwaccels.h | 128 ++++++++++++++--------------- libavcodec/hwconfig.h | 2 +- libavcodec/mjpegdec.c | 16 ++-- libavcodec/mpeg12dec.c | 9 +- libavcodec/nvdec_av1.c | 11 +-- libavcodec/nvdec_h264.c | 11 +-- libavcodec/nvdec_hevc.c | 11 +-- libavcodec/nvdec_mjpeg.c | 11 +-- libavcodec/nvdec_mpeg12.c | 21 ++--- libavcodec/nvdec_mpeg4.c | 11 +-- libavcodec/nvdec_vc1.c | 21 ++--- libavcodec/nvdec_vp8.c | 11 +-- libavcodec/nvdec_vp9.c | 11 +-- libavcodec/proresdec2.c | 8 +- libavcodec/pthread_frame.c | 19 +++-- libavcodec/vaapi_av1.c | 10 +-- libavcodec/vaapi_h264.c | 10 +-- libavcodec/vaapi_hevc.c | 10 +-- libavcodec/vaapi_mjpeg.c | 10 +-- libavcodec/vaapi_mpeg2.c | 10 +-- libavcodec/vaapi_mpeg4.c | 20 ++--- libavcodec/vaapi_vc1.c | 20 ++--- libavcodec/vaapi_vp8.c | 10 +-- libavcodec/vaapi_vp9.c | 10 +-- libavcodec/vc1dec.c | 56 +++++++++---- libavcodec/vdpau.c | 5 +- libavcodec/vdpau_av1.c | 10 +-- libavcodec/vdpau_h264.c | 10 +-- libavcodec/vdpau_hevc.c | 10 +-- libavcodec/vdpau_mpeg12.c | 20 ++--- libavcodec/vdpau_mpeg4.c | 10 +-- libavcodec/vdpau_vc1.c | 20 ++--- libavcodec/vdpau_vp9.c | 10 +-- libavcodec/videotoolbox.c | 71 ++++++++-------- libavcodec/videotoolbox_vp9.c | 11 +-- libavcodec/vp8.c | 12 +-- libavcodec/vp9.c | 12 +-- libavcodec/vulkan_av1.c | 10 +-- libavcodec/vulkan_h264.c | 10 +-- libavcodec/vulkan_hevc.c | 10 +-- 55 files changed, 691 insertions(+), 630 deletions(-) diff --git a/configure b/configure index 99388e7664..d9372c5be6 100755 --- a/configure +++ b/configure @@ -4102,7 +4102,7 @@ CODEC_LIST=" " PARSER_LIST=$(find_things_extern parser AVCodecParser libavcodec/parsers.c) BSF_LIST=$(find_things_extern bsf FFBitStreamFilter libavcodec/bitstream_filters.c) -HWACCEL_LIST=$(find_things_extern hwaccel AVHWAccel libavcodec/hwaccels.h) +HWACCEL_LIST=$(find_things_extern hwaccel FFHWAccel libavcodec/hwaccels.h) PROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c) AVCODEC_COMPONENTS_LIST=" diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c index 09339529f7..03283ab064 100644 --- a/libavcodec/av1dec.c +++ b/libavcodec/av1dec.c @@ -33,6 +33,7 @@ #include "bytestream.h" #include "codec_internal.h" #include "decode.h" +#include "hwaccel_internal.h" #include "internal.h" #include "hwconfig.h" #include "profiles.h" @@ -1233,9 +1234,9 @@ static int av1_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame) } } - if (avctx->hwaccel && avctx->hwaccel->decode_params) { - ret = avctx->hwaccel->decode_params(avctx, unit->type, unit->data, - unit->data_size); + if (FF_HW_HAS_CB(avctx, decode_params)) { + ret = FF_HW_CALL(avctx, decode_params, unit->type, + unit->data, unit->data_size); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, "HW accel decode params fail.\n"); s->raw_seq = NULL; @@ -1305,8 +1306,7 @@ static int av1_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame) s->cur_frame.temporal_id = header->temporal_id; if (avctx->hwaccel && s->cur_frame.f->buf[0]) { - ret = avctx->hwaccel->start_frame(avctx, unit->data, - unit->data_size); + ret = FF_HW_CALL(avctx, start_frame, unit->data, unit->data_size); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, "HW accel start frame fail.\n"); goto end; @@ -1332,9 +1332,8 @@ static int av1_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame) goto end; if (avctx->hwaccel && s->cur_frame.f->buf[0]) { - ret = avctx->hwaccel->decode_slice(avctx, - raw_tile_group->tile_data.data, - raw_tile_group->tile_data.data_size); + ret = FF_HW_CALL(avctx, decode_slice, raw_tile_group->tile_data.data, + raw_tile_group->tile_data.data_size); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, "HW accel decode slice fail.\n"); @@ -1396,7 +1395,7 @@ static int av1_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame) if (raw_tile_group && (s->tile_num == raw_tile_group->tg_end + 1)) { int show_frame = s->raw_frame_header->show_frame; if (avctx->hwaccel && s->cur_frame.f->buf[0]) { - ret = avctx->hwaccel->end_frame(avctx); + ret = FF_HW_SIMPLE_CALL(avctx, end_frame); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, "HW accel end frame fail.\n"); goto end; @@ -1492,8 +1491,8 @@ static void av1_decode_flush(AVCodecContext *avctx) ff_cbs_fragment_reset(&s->current_obu); ff_cbs_flush(s->cbc); - if (avctx->hwaccel && avctx->hwaccel->flush) - avctx->hwaccel->flush(avctx); + if (FF_HW_HAS_CB(avctx, flush)) + FF_HW_SIMPLE_CALL(avctx, flush); } #define OFFSET(x) offsetof(AV1DecContext, x) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index fe41ecc3c9..a2680256d7 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2146,139 +2146,6 @@ typedef struct AVHWAccel { * see AV_HWACCEL_CODEC_CAP_* */ int capabilities; - - /***************************************************************** - * No fields below this line are part of the public API. They - * may not be used outside of libavcodec and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - - /** - * Allocate a custom buffer - */ - int (*alloc_frame)(AVCodecContext *avctx, AVFrame *frame); - - /** - * Called at the beginning of each frame or field picture. - * - * Meaningful frame information (codec specific) is guaranteed to - * be parsed at this point. This function is mandatory. - * - * Note that buf can be NULL along with buf_size set to 0. - * Otherwise, this means the whole frame is available at this point. - * - * @param avctx the codec context - * @param buf the frame data buffer base - * @param buf_size the size of the frame in bytes - * @return zero if successful, a negative value otherwise - */ - int (*start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); - - /** - * Callback for parameter data (SPS/PPS/VPS etc). - * - * Useful for hardware decoders which keep persistent state about the - * video parameters, and need to receive any changes to update that state. - * - * @param avctx the codec context - * @param type the nal unit type - * @param buf the nal unit data buffer - * @param buf_size the size of the nal unit in bytes - * @return zero if successful, a negative value otherwise - */ - int (*decode_params)(AVCodecContext *avctx, int type, const uint8_t *buf, uint32_t buf_size); - - /** - * Callback for each slice. - * - * Meaningful slice information (codec specific) is guaranteed to - * be parsed at this point. This function is mandatory. - * - * @param avctx the codec context - * @param buf the slice data buffer base - * @param buf_size the size of the slice in bytes - * @return zero if successful, a negative value otherwise - */ - int (*decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); - - /** - * Called at the end of each frame or field picture. - * - * The whole picture is parsed at this point and can now be sent - * to the hardware accelerator. This function is mandatory. - * - * @param avctx the codec context - * @return zero if successful, a negative value otherwise - */ - int (*end_frame)(AVCodecContext *avctx); - - /** - * Size of per-frame hardware accelerator private data. - * - * Private data is allocated with av_mallocz() before - * AVCodecContext.get_buffer() and deallocated after - * AVCodecContext.release_buffer(). - */ - int frame_priv_data_size; - - /** - * Initialize the hwaccel private data. - * - * This will be called from ff_get_format(), after hwaccel and - * hwaccel_context are set and the hwaccel private data in AVCodecInternal - * is allocated. - */ - int (*init)(AVCodecContext *avctx); - - /** - * Uninitialize the hwaccel private data. - * - * This will be called from get_format() or avcodec_close(), after hwaccel - * and hwaccel_context are already uninitialized. - */ - int (*uninit)(AVCodecContext *avctx); - - /** - * Size of the private data to allocate in - * AVCodecInternal.hwaccel_priv_data. - */ - int priv_data_size; - - /** - * Internal hwaccel capabilities. - */ - int caps_internal; - - /** - * Fill the given hw_frames context with current codec parameters. Called - * from get_format. Refer to avcodec_get_hw_frames_parameters() for - * details. - * - * This CAN be called before AVHWAccel.init is called, and you must assume - * that avctx->hwaccel_priv_data is invalid. - */ - int (*frame_params)(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx); - - /** - * Copy necessary context variables from a previous thread context to the current one. - * For thread-safe hwaccels only. - */ - int (*update_thread_context)(AVCodecContext *dst, const AVCodecContext *src); - - /** - * Callback to free the hwaccel-specific frame data. - * - * @param hwctx a pointer to an AVHWDeviceContext. - * @param data the per-frame hardware accelerator private data to be freed. - */ - void (*free_frame_priv)(void *hwctx, uint8_t *data); - - /** - * Callback to flush the hwaccel state. - */ - void (*flush)(AVCodecContext *avctx); } AVHWAccel; /** diff --git a/libavcodec/decode.c b/libavcodec/decode.c index be761873a3..7eada8e9ab 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -46,6 +46,7 @@ #include "bsf.h" #include "codec_internal.h" #include "decode.h" +#include "hwaccel_internal.h" #include "hwconfig.h" #include "internal.h" #include "packet_internal.h" @@ -1159,7 +1160,7 @@ int avcodec_get_hw_frames_parameters(AVCodecContext *avctx, { AVBufferRef *frames_ref = NULL; const AVCodecHWConfigInternal *hw_config; - const AVHWAccel *hwa; + const FFHWAccel *hwa; int i, ret; for (i = 0;; i++) { @@ -1211,14 +1212,14 @@ int avcodec_get_hw_frames_parameters(AVCodecContext *avctx, } static int hwaccel_init(AVCodecContext *avctx, - const AVHWAccel *hwaccel) + const FFHWAccel *hwaccel) { int err; - if (hwaccel->capabilities & AV_HWACCEL_CODEC_CAP_EXPERIMENTAL && + if (hwaccel->p.capabilities & AV_HWACCEL_CODEC_CAP_EXPERIMENTAL && avctx->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) { av_log(avctx, AV_LOG_WARNING, "Ignoring experimental hwaccel: %s\n", - hwaccel->name); + hwaccel->p.name); return AVERROR_PATCHWELCOME; } @@ -1229,13 +1230,13 @@ static int hwaccel_init(AVCodecContext *avctx, return AVERROR(ENOMEM); } - avctx->hwaccel = hwaccel; + avctx->hwaccel = &hwaccel->p; if (hwaccel->init) { err = hwaccel->init(avctx); if (err < 0) { av_log(avctx, AV_LOG_ERROR, "Failed setup for format %s: " "hwaccel initialisation returned error.\n", - av_get_pix_fmt_name(hwaccel->pix_fmt)); + av_get_pix_fmt_name(hwaccel->p.pix_fmt)); av_freep(&avctx->internal->hwaccel_priv_data); avctx->hwaccel = NULL; return err; @@ -1247,8 +1248,8 @@ static int hwaccel_init(AVCodecContext *avctx, void ff_hwaccel_uninit(AVCodecContext *avctx) { - if (avctx->hwaccel && avctx->hwaccel->uninit) - avctx->hwaccel->uninit(avctx); + if (FF_HW_HAS_CB(avctx, uninit)) + FF_HW_SIMPLE_CALL(avctx, uninit); av_freep(&avctx->internal->hwaccel_priv_data); @@ -1569,7 +1570,7 @@ int ff_attach_decode_data(AVFrame *frame) int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags) { - const AVHWAccel *hwaccel = avctx->hwaccel; + const FFHWAccel *hwaccel = ffhwaccel(avctx->hwaccel); int override_dimensions = 1; int ret; @@ -1791,7 +1792,7 @@ int ff_copy_palette(void *dst, const AVPacket *src, void *logctx) int ff_hwaccel_frame_priv_alloc(AVCodecContext *avctx, void **hwaccel_picture_private, AVBufferRef **hwaccel_priv_buf) { - const AVHWAccel *hwaccel = avctx->hwaccel; + const FFHWAccel *hwaccel = ffhwaccel(avctx->hwaccel); AVBufferRef *ref; AVHWFramesContext *frames_ctx; uint8_t *data; diff --git a/libavcodec/dxva2_av1.c b/libavcodec/dxva2_av1.c index 228f72ba18..ab118a4356 100644 --- a/libavcodec/dxva2_av1.c +++ b/libavcodec/dxva2_av1.c @@ -27,6 +27,7 @@ #include "dxva2_internal.h" #include "av1dec.h" +#include "hwaccel_internal.h" #define MAX_TILES 256 @@ -457,11 +458,11 @@ static int dxva2_av1_uninit(AVCodecContext *avctx) } #if CONFIG_AV1_DXVA2_HWACCEL -const AVHWAccel ff_av1_dxva2_hwaccel = { - .name = "av1_dxva2", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_AV1, - .pix_fmt = AV_PIX_FMT_DXVA2_VLD, +const FFHWAccel ff_av1_dxva2_hwaccel = { + .p.name = "av1_dxva2", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_AV1, + .p.pix_fmt = AV_PIX_FMT_DXVA2_VLD, .init = ff_dxva2_decode_init, .uninit = dxva2_av1_uninit, .start_frame = dxva2_av1_start_frame, @@ -474,11 +475,11 @@ const AVHWAccel ff_av1_dxva2_hwaccel = { #endif #if CONFIG_AV1_D3D11VA_HWACCEL -const AVHWAccel ff_av1_d3d11va_hwaccel = { - .name = "av1_d3d11va", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_AV1, - .pix_fmt = AV_PIX_FMT_D3D11VA_VLD, +const FFHWAccel ff_av1_d3d11va_hwaccel = { + .p.name = "av1_d3d11va", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_AV1, + .p.pix_fmt = AV_PIX_FMT_D3D11VA_VLD, .init = ff_dxva2_decode_init, .uninit = dxva2_av1_uninit, .start_frame = dxva2_av1_start_frame, @@ -491,11 +492,11 @@ const AVHWAccel ff_av1_d3d11va_hwaccel = { #endif #if CONFIG_AV1_D3D11VA2_HWACCEL -const AVHWAccel ff_av1_d3d11va2_hwaccel = { - .name = "av1_d3d11va2", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_AV1, - .pix_fmt = AV_PIX_FMT_D3D11, +const FFHWAccel ff_av1_d3d11va2_hwaccel = { + .p.name = "av1_d3d11va2", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_AV1, + .p.pix_fmt = AV_PIX_FMT_D3D11, .init = ff_dxva2_decode_init, .uninit = dxva2_av1_uninit, .start_frame = dxva2_av1_start_frame, diff --git a/libavcodec/dxva2_h264.c b/libavcodec/dxva2_h264.c index 6300b1418d..20e64f848d 100644 --- a/libavcodec/dxva2_h264.c +++ b/libavcodec/dxva2_h264.c @@ -28,6 +28,7 @@ #include "h264dec.h" #include "h264data.h" #include "h264_ps.h" +#include "hwaccel_internal.h" #include "mpegutils.h" struct dxva2_picture_context { @@ -516,11 +517,11 @@ static int dxva2_h264_end_frame(AVCodecContext *avctx) } #if CONFIG_H264_DXVA2_HWACCEL -const AVHWAccel ff_h264_dxva2_hwaccel = { - .name = "h264_dxva2", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_H264, - .pix_fmt = AV_PIX_FMT_DXVA2_VLD, +const FFHWAccel ff_h264_dxva2_hwaccel = { + .p.name = "h264_dxva2", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_H264, + .p.pix_fmt = AV_PIX_FMT_DXVA2_VLD, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_h264_start_frame, @@ -533,11 +534,11 @@ const AVHWAccel ff_h264_dxva2_hwaccel = { #endif #if CONFIG_H264_D3D11VA_HWACCEL -const AVHWAccel ff_h264_d3d11va_hwaccel = { - .name = "h264_d3d11va", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_H264, - .pix_fmt = AV_PIX_FMT_D3D11VA_VLD, +const FFHWAccel ff_h264_d3d11va_hwaccel = { + .p.name = "h264_d3d11va", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_H264, + .p.pix_fmt = AV_PIX_FMT_D3D11VA_VLD, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_h264_start_frame, @@ -550,11 +551,11 @@ const AVHWAccel ff_h264_d3d11va_hwaccel = { #endif #if CONFIG_H264_D3D11VA2_HWACCEL -const AVHWAccel ff_h264_d3d11va2_hwaccel = { - .name = "h264_d3d11va2", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_H264, - .pix_fmt = AV_PIX_FMT_D3D11, +const FFHWAccel ff_h264_d3d11va2_hwaccel = { + .p.name = "h264_d3d11va2", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_H264, + .p.pix_fmt = AV_PIX_FMT_D3D11, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_h264_start_frame, diff --git a/libavcodec/dxva2_hevc.c b/libavcodec/dxva2_hevc.c index 6b239d9917..b6c08943f0 100644 --- a/libavcodec/dxva2_hevc.c +++ b/libavcodec/dxva2_hevc.c @@ -27,6 +27,7 @@ #include "dxva2_internal.h" #include "hevc_data.h" #include "hevcdec.h" +#include "hwaccel_internal.h" #define MAX_SLICES 256 @@ -420,11 +421,11 @@ static int dxva2_hevc_end_frame(AVCodecContext *avctx) } #if CONFIG_HEVC_DXVA2_HWACCEL -const AVHWAccel ff_hevc_dxva2_hwaccel = { - .name = "hevc_dxva2", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_HEVC, - .pix_fmt = AV_PIX_FMT_DXVA2_VLD, +const FFHWAccel ff_hevc_dxva2_hwaccel = { + .p.name = "hevc_dxva2", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_HEVC, + .p.pix_fmt = AV_PIX_FMT_DXVA2_VLD, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_hevc_start_frame, @@ -437,11 +438,11 @@ const AVHWAccel ff_hevc_dxva2_hwaccel = { #endif #if CONFIG_HEVC_D3D11VA_HWACCEL -const AVHWAccel ff_hevc_d3d11va_hwaccel = { - .name = "hevc_d3d11va", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_HEVC, - .pix_fmt = AV_PIX_FMT_D3D11VA_VLD, +const FFHWAccel ff_hevc_d3d11va_hwaccel = { + .p.name = "hevc_d3d11va", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_HEVC, + .p.pix_fmt = AV_PIX_FMT_D3D11VA_VLD, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_hevc_start_frame, @@ -454,11 +455,11 @@ const AVHWAccel ff_hevc_d3d11va_hwaccel = { #endif #if CONFIG_HEVC_D3D11VA2_HWACCEL -const AVHWAccel ff_hevc_d3d11va2_hwaccel = { - .name = "hevc_d3d11va2", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_HEVC, - .pix_fmt = AV_PIX_FMT_D3D11, +const FFHWAccel ff_hevc_d3d11va2_hwaccel = { + .p.name = "hevc_d3d11va2", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_HEVC, + .p.pix_fmt = AV_PIX_FMT_D3D11, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_hevc_start_frame, diff --git a/libavcodec/dxva2_mpeg2.c b/libavcodec/dxva2_mpeg2.c index 1989c588dc..75c416654f 100644 --- a/libavcodec/dxva2_mpeg2.c +++ b/libavcodec/dxva2_mpeg2.c @@ -25,6 +25,7 @@ #include "libavutil/log.h" #include "dxva2_internal.h" +#include "hwaccel_internal.h" #include "mpegutils.h" #include "mpegvideodec.h" @@ -316,11 +317,11 @@ static int dxva2_mpeg2_end_frame(AVCodecContext *avctx) } #if CONFIG_MPEG2_DXVA2_HWACCEL -const AVHWAccel ff_mpeg2_dxva2_hwaccel = { - .name = "mpeg2_dxva2", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_MPEG2VIDEO, - .pix_fmt = AV_PIX_FMT_DXVA2_VLD, +const FFHWAccel ff_mpeg2_dxva2_hwaccel = { + .p.name = "mpeg2_dxva2", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MPEG2VIDEO, + .p.pix_fmt = AV_PIX_FMT_DXVA2_VLD, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_mpeg2_start_frame, @@ -333,11 +334,11 @@ const AVHWAccel ff_mpeg2_dxva2_hwaccel = { #endif #if CONFIG_MPEG2_D3D11VA_HWACCEL -const AVHWAccel ff_mpeg2_d3d11va_hwaccel = { - .name = "mpeg2_d3d11va", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_MPEG2VIDEO, - .pix_fmt = AV_PIX_FMT_D3D11VA_VLD, +const FFHWAccel ff_mpeg2_d3d11va_hwaccel = { + .p.name = "mpeg2_d3d11va", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MPEG2VIDEO, + .p.pix_fmt = AV_PIX_FMT_D3D11VA_VLD, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_mpeg2_start_frame, @@ -350,11 +351,11 @@ const AVHWAccel ff_mpeg2_d3d11va_hwaccel = { #endif #if CONFIG_MPEG2_D3D11VA2_HWACCEL -const AVHWAccel ff_mpeg2_d3d11va2_hwaccel = { - .name = "mpeg2_d3d11va2", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_MPEG2VIDEO, - .pix_fmt = AV_PIX_FMT_D3D11, +const FFHWAccel ff_mpeg2_d3d11va2_hwaccel = { + .p.name = "mpeg2_d3d11va2", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MPEG2VIDEO, + .p.pix_fmt = AV_PIX_FMT_D3D11, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_mpeg2_start_frame, diff --git a/libavcodec/dxva2_vc1.c b/libavcodec/dxva2_vc1.c index 12e3de59ec..b35fb115f7 100644 --- a/libavcodec/dxva2_vc1.c +++ b/libavcodec/dxva2_vc1.c @@ -23,6 +23,7 @@ #include "config_components.h" #include "dxva2_internal.h" +#include "hwaccel_internal.h" #include "mpegutils.h" #include "mpegvideodec.h" #include "vc1.h" @@ -376,11 +377,11 @@ static int dxva2_vc1_end_frame(AVCodecContext *avctx) } #if CONFIG_WMV3_DXVA2_HWACCEL -const AVHWAccel ff_wmv3_dxva2_hwaccel = { - .name = "wmv3_dxva2", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_WMV3, - .pix_fmt = AV_PIX_FMT_DXVA2_VLD, +const FFHWAccel ff_wmv3_dxva2_hwaccel = { + .p.name = "wmv3_dxva2", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_WMV3, + .p.pix_fmt = AV_PIX_FMT_DXVA2_VLD, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_vc1_start_frame, @@ -393,11 +394,11 @@ const AVHWAccel ff_wmv3_dxva2_hwaccel = { #endif #if CONFIG_VC1_DXVA2_HWACCEL -const AVHWAccel ff_vc1_dxva2_hwaccel = { - .name = "vc1_dxva2", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_VC1, - .pix_fmt = AV_PIX_FMT_DXVA2_VLD, +const FFHWAccel ff_vc1_dxva2_hwaccel = { + .p.name = "vc1_dxva2", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VC1, + .p.pix_fmt = AV_PIX_FMT_DXVA2_VLD, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_vc1_start_frame, @@ -410,11 +411,11 @@ const AVHWAccel ff_vc1_dxva2_hwaccel = { #endif #if CONFIG_WMV3_D3D11VA_HWACCEL -const AVHWAccel ff_wmv3_d3d11va_hwaccel = { - .name = "wmv3_d3d11va", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_WMV3, - .pix_fmt = AV_PIX_FMT_D3D11VA_VLD, +const FFHWAccel ff_wmv3_d3d11va_hwaccel = { + .p.name = "wmv3_d3d11va", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_WMV3, + .p.pix_fmt = AV_PIX_FMT_D3D11VA_VLD, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_vc1_start_frame, @@ -427,11 +428,11 @@ const AVHWAccel ff_wmv3_d3d11va_hwaccel = { #endif #if CONFIG_WMV3_D3D11VA2_HWACCEL -const AVHWAccel ff_wmv3_d3d11va2_hwaccel = { - .name = "wmv3_d3d11va2", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_WMV3, - .pix_fmt = AV_PIX_FMT_D3D11, +const FFHWAccel ff_wmv3_d3d11va2_hwaccel = { + .p.name = "wmv3_d3d11va2", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_WMV3, + .p.pix_fmt = AV_PIX_FMT_D3D11, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_vc1_start_frame, @@ -444,11 +445,11 @@ const AVHWAccel ff_wmv3_d3d11va2_hwaccel = { #endif #if CONFIG_VC1_D3D11VA_HWACCEL -const AVHWAccel ff_vc1_d3d11va_hwaccel = { - .name = "vc1_d3d11va", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_VC1, - .pix_fmt = AV_PIX_FMT_D3D11VA_VLD, +const FFHWAccel ff_vc1_d3d11va_hwaccel = { + .p.name = "vc1_d3d11va", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VC1, + .p.pix_fmt = AV_PIX_FMT_D3D11VA_VLD, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_vc1_start_frame, @@ -461,11 +462,11 @@ const AVHWAccel ff_vc1_d3d11va_hwaccel = { #endif #if CONFIG_VC1_D3D11VA2_HWACCEL -const AVHWAccel ff_vc1_d3d11va2_hwaccel = { - .name = "vc1_d3d11va2", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_VC1, - .pix_fmt = AV_PIX_FMT_D3D11, +const FFHWAccel ff_vc1_d3d11va2_hwaccel = { + .p.name = "vc1_d3d11va2", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VC1, + .p.pix_fmt = AV_PIX_FMT_D3D11, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_vc1_start_frame, diff --git a/libavcodec/dxva2_vp9.c b/libavcodec/dxva2_vp9.c index dbe6c08ad1..eba4df9031 100644 --- a/libavcodec/dxva2_vp9.c +++ b/libavcodec/dxva2_vp9.c @@ -26,6 +26,7 @@ #include "libavutil/pixdesc.h" #include "dxva2_internal.h" +#include "hwaccel_internal.h" #include "vp9shared.h" struct vp9_dxva2_picture_context { @@ -307,11 +308,11 @@ static int dxva2_vp9_end_frame(AVCodecContext *avctx) } #if CONFIG_VP9_DXVA2_HWACCEL -const AVHWAccel ff_vp9_dxva2_hwaccel = { - .name = "vp9_dxva2", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_VP9, - .pix_fmt = AV_PIX_FMT_DXVA2_VLD, +const FFHWAccel ff_vp9_dxva2_hwaccel = { + .p.name = "vp9_dxva2", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VP9, + .p.pix_fmt = AV_PIX_FMT_DXVA2_VLD, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_vp9_start_frame, @@ -324,11 +325,11 @@ const AVHWAccel ff_vp9_dxva2_hwaccel = { #endif #if CONFIG_VP9_D3D11VA_HWACCEL -const AVHWAccel ff_vp9_d3d11va_hwaccel = { - .name = "vp9_d3d11va", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_VP9, - .pix_fmt = AV_PIX_FMT_D3D11VA_VLD, +const FFHWAccel ff_vp9_d3d11va_hwaccel = { + .p.name = "vp9_d3d11va", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VP9, + .p.pix_fmt = AV_PIX_FMT_D3D11VA_VLD, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_vp9_start_frame, @@ -341,11 +342,11 @@ const AVHWAccel ff_vp9_d3d11va_hwaccel = { #endif #if CONFIG_VP9_D3D11VA2_HWACCEL -const AVHWAccel ff_vp9_d3d11va2_hwaccel = { - .name = "vp9_d3d11va2", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_VP9, - .pix_fmt = AV_PIX_FMT_D3D11, +const FFHWAccel ff_vp9_d3d11va2_hwaccel = { + .p.name = "vp9_d3d11va2", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VP9, + .p.pix_fmt = AV_PIX_FMT_D3D11, .init = ff_dxva2_decode_init, .uninit = ff_dxva2_decode_uninit, .start_frame = dxva2_vp9_start_frame, diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index 68a618a7ed..52e51dd489 100644 --- a/libavcodec/h263dec.c +++ b/libavcodec/h263dec.c @@ -36,6 +36,7 @@ #include "flvdec.h" #include "h263.h" #include "h263dec.h" +#include "hwaccel_internal.h" #include "hwconfig.h" #include "mpeg_er.h" #include "mpeg4video.h" @@ -190,7 +191,7 @@ static int decode_slice(MpegEncContext *s) if (s->avctx->hwaccel) { const uint8_t *start = s->gb.buffer + get_bits_count(&s->gb) / 8; - ret = s->avctx->hwaccel->decode_slice(s->avctx, start, s->gb.buffer_end - start); + ret = FF_HW_CALL(s->avctx, decode_slice, start, s->gb.buffer_end - start); // ensure we exit decode loop s->mb_y = s->mb_height; return ret; @@ -568,8 +569,8 @@ retry: ff_thread_finish_setup(avctx); if (avctx->hwaccel) { - ret = avctx->hwaccel->start_frame(avctx, s->gb.buffer, - s->gb.buffer_end - s->gb.buffer); + ret = FF_HW_CALL(avctx, start_frame, + s->gb.buffer, s->gb.buffer_end - s->gb.buffer); if (ret < 0 ) return ret; } @@ -624,7 +625,7 @@ frame_end: ff_er_frame_end(&s->er); if (avctx->hwaccel) { - ret = avctx->hwaccel->end_frame(avctx); + ret = FF_HW_SIMPLE_CALL(avctx, end_frame); if (ret < 0) return ret; } diff --git a/libavcodec/h264_picture.c b/libavcodec/h264_picture.c index dcaf0fdb0a..3192c70a91 100644 --- a/libavcodec/h264_picture.c +++ b/libavcodec/h264_picture.c @@ -29,6 +29,7 @@ #include "error_resilience.h" #include "avcodec.h" #include "h264dec.h" +#include "hwaccel_internal.h" #include "mpegutils.h" #include "thread.h" #include "threadframe.h" @@ -233,7 +234,7 @@ int ff_h264_field_end(H264Context *h, H264SliceContext *sl, int in_setup) } if (avctx->hwaccel) { - err = avctx->hwaccel->end_frame(avctx); + err = FF_HW_SIMPLE_CALL(avctx, end_frame); if (err < 0) av_log(avctx, AV_LOG_ERROR, "hardware accelerator failed to decode picture\n"); diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c index 19f8dba131..1c79d9842f 100644 --- a/libavcodec/h264dec.c +++ b/libavcodec/h264dec.c @@ -45,6 +45,7 @@ #include "h264data.h" #include "h264_ps.h" #include "golomb.h" +#include "hwaccel_internal.h" #include "hwconfig.h" #include "mpegutils.h" #include "profiles.h" @@ -485,8 +486,8 @@ static void h264_decode_flush(AVCodecContext *avctx) ff_h264_free_tables(h); h->context_initialized = 0; - if (avctx->hwaccel && avctx->hwaccel->flush) - avctx->hwaccel->flush(avctx); + if (FF_HW_HAS_CB(avctx, flush)) + FF_HW_SIMPLE_CALL(avctx, flush); } static int get_last_needed_nal(H264Context *h) @@ -652,14 +653,14 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size) } if (h->avctx->hwaccel && - (ret = h->avctx->hwaccel->start_frame(h->avctx, buf, buf_size)) < 0) + (ret = FF_HW_CALL(h->avctx, start_frame, buf, buf_size)) < 0) goto end; } max_slice_ctx = avctx->hwaccel ? 1 : h->nb_slice_ctx; if (h->nb_slice_ctx_queued == max_slice_ctx) { if (h->avctx->hwaccel) { - ret = avctx->hwaccel->decode_slice(avctx, nal->raw_data, nal->raw_size); + ret = FF_HW_CALL(avctx, decode_slice, nal->raw_data, nal->raw_size); h->nb_slice_ctx_queued = 0; } else ret = ff_h264_execute_decode_slices(h); @@ -686,11 +687,9 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size) break; case H264_NAL_SPS: { GetBitContext tmp_gb = nal->gb; - if (avctx->hwaccel && avctx->hwaccel->decode_params) { - ret = avctx->hwaccel->decode_params(avctx, - nal->type, - nal->raw_data, - nal->raw_size); + if (FF_HW_HAS_CB(avctx, decode_params)) { + ret = FF_HW_CALL(avctx, decode_params, + nal->type, nal->raw_data, nal->raw_size); if (ret < 0) goto end; } @@ -705,11 +704,9 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size) break; } case H264_NAL_PPS: - if (avctx->hwaccel && avctx->hwaccel->decode_params) { - ret = avctx->hwaccel->decode_params(avctx, - nal->type, - nal->raw_data, - nal->raw_size); + if (FF_HW_HAS_CB(avctx, decode_params)) { + ret = FF_HW_CALL(avctx, decode_params, + nal->type, nal->raw_data, nal->raw_size); if (ret < 0) goto end; } diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 15276edd33..df40c91ba6 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -46,6 +46,7 @@ #include "hevc_data.h" #include "hevc_parse.h" #include "hevcdec.h" +#include "hwaccel_internal.h" #include "hwconfig.h" #include "internal.h" #include "profiles.h" @@ -2948,11 +2949,9 @@ static int decode_nal_unit(HEVCContext *s, const H2645NAL *nal) switch (s->nal_unit_type) { case HEVC_NAL_VPS: - if (s->avctx->hwaccel && s->avctx->hwaccel->decode_params) { - ret = s->avctx->hwaccel->decode_params(s->avctx, - nal->type, - nal->raw_data, - nal->raw_size); + if (FF_HW_HAS_CB(s->avctx, decode_params)) { + ret = FF_HW_CALL(s->avctx, decode_params, + nal->type, nal->raw_data, nal->raw_size); if (ret < 0) goto fail; } @@ -2961,11 +2960,9 @@ static int decode_nal_unit(HEVCContext *s, const H2645NAL *nal) goto fail; break; case HEVC_NAL_SPS: - if (s->avctx->hwaccel && s->avctx->hwaccel->decode_params) { - ret = s->avctx->hwaccel->decode_params(s->avctx, - nal->type, - nal->raw_data, - nal->raw_size); + if (FF_HW_HAS_CB(s->avctx, decode_params)) { + ret = FF_HW_CALL(s->avctx, decode_params, + nal->type, nal->raw_data, nal->raw_size); if (ret < 0) goto fail; } @@ -2975,11 +2972,9 @@ static int decode_nal_unit(HEVCContext *s, const H2645NAL *nal) goto fail; break; case HEVC_NAL_PPS: - if (s->avctx->hwaccel && s->avctx->hwaccel->decode_params) { - ret = s->avctx->hwaccel->decode_params(s->avctx, - nal->type, - nal->raw_data, - nal->raw_size); + if (FF_HW_HAS_CB(s->avctx, decode_params)) { + ret = FF_HW_CALL(s->avctx, decode_params, + nal->type, nal->raw_data, nal->raw_size); if (ret < 0) goto fail; } @@ -2989,11 +2984,9 @@ static int decode_nal_unit(HEVCContext *s, const H2645NAL *nal) break; case HEVC_NAL_SEI_PREFIX: case HEVC_NAL_SEI_SUFFIX: - if (s->avctx->hwaccel && s->avctx->hwaccel->decode_params) { - ret = s->avctx->hwaccel->decode_params(s->avctx, - nal->type, - nal->raw_data, - nal->raw_size); + if (FF_HW_HAS_CB(s->avctx, decode_params)) { + ret = FF_HW_CALL(s->avctx, decode_params, + nal->type, nal->raw_data, nal->raw_size); if (ret < 0) goto fail; } @@ -3079,13 +3072,13 @@ static int decode_nal_unit(HEVCContext *s, const H2645NAL *nal) } if (s->sh.first_slice_in_pic_flag && s->avctx->hwaccel) { - ret = s->avctx->hwaccel->start_frame(s->avctx, NULL, 0); + ret = FF_HW_CALL(s->avctx, start_frame, NULL, 0); if (ret < 0) goto fail; } if (s->avctx->hwaccel) { - ret = s->avctx->hwaccel->decode_slice(s->avctx, nal->raw_data, nal->raw_size); + ret = FF_HW_CALL(s->avctx, decode_slice, nal->raw_data, nal->raw_size); if (ret < 0) goto fail; } else { @@ -3353,7 +3346,7 @@ static int hevc_decode_frame(AVCodecContext *avctx, AVFrame *rframe, return ret; if (avctx->hwaccel) { - if (s->ref && (ret = avctx->hwaccel->end_frame(avctx)) < 0) { + if (s->ref && (ret = FF_HW_SIMPLE_CALL(avctx, end_frame)) < 0) { av_log(avctx, AV_LOG_ERROR, "hardware accelerator failed to decode picture\n"); ff_hevc_unref_frame(s, s->ref, ~0); @@ -3669,8 +3662,8 @@ static void hevc_decode_flush(AVCodecContext *avctx) s->max_ra = INT_MAX; s->eos = 1; - if (avctx->hwaccel && avctx->hwaccel->flush) - avctx->hwaccel->flush(avctx); + if (FF_HW_HAS_CB(avctx, flush)) + FF_HW_SIMPLE_CALL(avctx, flush); } #define OFFSET(x) offsetof(HEVCContext, x) diff --git a/libavcodec/hwaccel_internal.h b/libavcodec/hwaccel_internal.h index 6e6f5c7cf9..edfe283150 100644 --- a/libavcodec/hwaccel_internal.h +++ b/libavcodec/hwaccel_internal.h @@ -23,7 +23,157 @@ #ifndef AVCODEC_HWACCEL_INTERNAL_H #define AVCODEC_HWACCEL_INTERNAL_H +#include + +#include "avcodec.h" + #define HWACCEL_CAP_ASYNC_SAFE (1 << 0) #define HWACCEL_CAP_THREAD_SAFE (1 << 1) +typedef struct FFHWAccel { + /** + * The public AVHWAccel. See avcodec.h for it. + */ + AVHWAccel p; + + /** + * Allocate a custom buffer + */ + int (*alloc_frame)(AVCodecContext *avctx, AVFrame *frame); + + /** + * Called at the beginning of each frame or field picture. + * + * Meaningful frame information (codec specific) is guaranteed to + * be parsed at this point. This function is mandatory. + * + * Note that buf can be NULL along with buf_size set to 0. + * Otherwise, this means the whole frame is available at this point. + * + * @param avctx the codec context + * @param buf the frame data buffer base + * @param buf_size the size of the frame in bytes + * @return zero if successful, a negative value otherwise + */ + int (*start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); + + /** + * Callback for parameter data (SPS/PPS/VPS etc). + * + * Useful for hardware decoders which keep persistent state about the + * video parameters, and need to receive any changes to update that state. + * + * @param avctx the codec context + * @param type the nal unit type + * @param buf the nal unit data buffer + * @param buf_size the size of the nal unit in bytes + * @return zero if successful, a negative value otherwise + */ + int (*decode_params)(AVCodecContext *avctx, int type, const uint8_t *buf, uint32_t buf_size); + + /** + * Callback for each slice. + * + * Meaningful slice information (codec specific) is guaranteed to + * be parsed at this point. This function is mandatory. + * + * @param avctx the codec context + * @param buf the slice data buffer base + * @param buf_size the size of the slice in bytes + * @return zero if successful, a negative value otherwise + */ + int (*decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); + + /** + * Called at the end of each frame or field picture. + * + * The whole picture is parsed at this point and can now be sent + * to the hardware accelerator. This function is mandatory. + * + * @param avctx the codec context + * @return zero if successful, a negative value otherwise + */ + int (*end_frame)(AVCodecContext *avctx); + + /** + * Size of per-frame hardware accelerator private data. + * + * Private data is allocated with av_mallocz() before + * AVCodecContext.get_buffer() and deallocated after + * AVCodecContext.release_buffer(). + */ + int frame_priv_data_size; + + /** + * Size of the private data to allocate in + * AVCodecInternal.hwaccel_priv_data. + */ + int priv_data_size; + + /** + * Internal hwaccel capabilities. + */ + int caps_internal; + + /** + * Initialize the hwaccel private data. + * + * This will be called from ff_get_format(), after hwaccel and + * hwaccel_context are set and the hwaccel private data in AVCodecInternal + * is allocated. + */ + int (*init)(AVCodecContext *avctx); + + /** + * Uninitialize the hwaccel private data. + * + * This will be called from get_format() or avcodec_close(), after hwaccel + * and hwaccel_context are already uninitialized. + */ + int (*uninit)(AVCodecContext *avctx); + + /** + * Fill the given hw_frames context with current codec parameters. Called + * from get_format. Refer to avcodec_get_hw_frames_parameters() for + * details. + * + * This CAN be called before AVHWAccel.init is called, and you must assume + * that avctx->hwaccel_priv_data is invalid. + */ + int (*frame_params)(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx); + + /** + * Copy necessary context variables from a previous thread context to the current one. + * For thread-safe hwaccels only. + */ + int (*update_thread_context)(AVCodecContext *dst, const AVCodecContext *src); + + /** + * Callback to free the hwaccel-specific frame data. + * + * @param hwctx a pointer to an AVHWDeviceContext. + * @param data the per-frame hardware accelerator private data to be freed. + */ + void (*free_frame_priv)(void *hwctx, uint8_t *data); + + /** + * Callback to flush the hwaccel state. + */ + void (*flush)(AVCodecContext *avctx); +} FFHWAccel; + +static inline const FFHWAccel *ffhwaccel(const AVHWAccel *codec) +{ + return (const FFHWAccel*)codec; +} + +#define FF_HW_CALL(avctx, function, ...) \ + (ffhwaccel((avctx)->hwaccel)->function((avctx), __VA_ARGS__)) + +#define FF_HW_SIMPLE_CALL(avctx, function) \ + (ffhwaccel((avctx)->hwaccel)->function(avctx)) + +#define FF_HW_HAS_CB(avctx, function) \ + ((avctx)->hwaccel && ffhwaccel((avctx)->hwaccel)->function) + #endif /* AVCODEC_HWACCEL_INTERNAL */ diff --git a/libavcodec/hwaccels.h b/libavcodec/hwaccels.h index 48dfc17f72..c4630718cf 100644 --- a/libavcodec/hwaccels.h +++ b/libavcodec/hwaccels.h @@ -19,70 +19,68 @@ #ifndef AVCODEC_HWACCELS_H #define AVCODEC_HWACCELS_H -#include "avcodec.h" - -extern const AVHWAccel ff_av1_d3d11va_hwaccel; -extern const AVHWAccel ff_av1_d3d11va2_hwaccel; -extern const AVHWAccel ff_av1_dxva2_hwaccel; -extern const AVHWAccel ff_av1_nvdec_hwaccel; -extern const AVHWAccel ff_av1_vaapi_hwaccel; -extern const AVHWAccel ff_av1_vdpau_hwaccel; -extern const AVHWAccel ff_av1_vulkan_hwaccel; -extern const AVHWAccel ff_h263_vaapi_hwaccel; -extern const AVHWAccel ff_h263_videotoolbox_hwaccel; -extern const AVHWAccel ff_h264_d3d11va_hwaccel; -extern const AVHWAccel ff_h264_d3d11va2_hwaccel; -extern const AVHWAccel ff_h264_dxva2_hwaccel; -extern const AVHWAccel ff_h264_nvdec_hwaccel; -extern const AVHWAccel ff_h264_vaapi_hwaccel; -extern const AVHWAccel ff_h264_vdpau_hwaccel; -extern const AVHWAccel ff_h264_videotoolbox_hwaccel; -extern const AVHWAccel ff_h264_vulkan_hwaccel; -extern const AVHWAccel ff_hevc_d3d11va_hwaccel; -extern const AVHWAccel ff_hevc_d3d11va2_hwaccel; -extern const AVHWAccel ff_hevc_dxva2_hwaccel; -extern const AVHWAccel ff_hevc_nvdec_hwaccel; -extern const AVHWAccel ff_hevc_vaapi_hwaccel; -extern const AVHWAccel ff_hevc_vdpau_hwaccel; -extern const AVHWAccel ff_hevc_videotoolbox_hwaccel; -extern const AVHWAccel ff_hevc_vulkan_hwaccel; -extern const AVHWAccel ff_mjpeg_nvdec_hwaccel; -extern const AVHWAccel ff_mjpeg_vaapi_hwaccel; -extern const AVHWAccel ff_mpeg1_nvdec_hwaccel; -extern const AVHWAccel ff_mpeg1_vdpau_hwaccel; -extern const AVHWAccel ff_mpeg1_videotoolbox_hwaccel; -extern const AVHWAccel ff_mpeg2_d3d11va_hwaccel; -extern const AVHWAccel ff_mpeg2_d3d11va2_hwaccel; -extern const AVHWAccel ff_mpeg2_nvdec_hwaccel; -extern const AVHWAccel ff_mpeg2_dxva2_hwaccel; -extern const AVHWAccel ff_mpeg2_vaapi_hwaccel; -extern const AVHWAccel ff_mpeg2_vdpau_hwaccel; -extern const AVHWAccel ff_mpeg2_videotoolbox_hwaccel; -extern const AVHWAccel ff_mpeg4_nvdec_hwaccel; -extern const AVHWAccel ff_mpeg4_vaapi_hwaccel; -extern const AVHWAccel ff_mpeg4_vdpau_hwaccel; -extern const AVHWAccel ff_mpeg4_videotoolbox_hwaccel; -extern const AVHWAccel ff_prores_videotoolbox_hwaccel; -extern const AVHWAccel ff_vc1_d3d11va_hwaccel; -extern const AVHWAccel ff_vc1_d3d11va2_hwaccel; -extern const AVHWAccel ff_vc1_dxva2_hwaccel; -extern const AVHWAccel ff_vc1_nvdec_hwaccel; -extern const AVHWAccel ff_vc1_vaapi_hwaccel; -extern const AVHWAccel ff_vc1_vdpau_hwaccel; -extern const AVHWAccel ff_vp8_nvdec_hwaccel; -extern const AVHWAccel ff_vp8_vaapi_hwaccel; -extern const AVHWAccel ff_vp9_d3d11va_hwaccel; -extern const AVHWAccel ff_vp9_d3d11va2_hwaccel; -extern const AVHWAccel ff_vp9_dxva2_hwaccel; -extern const AVHWAccel ff_vp9_nvdec_hwaccel; -extern const AVHWAccel ff_vp9_vaapi_hwaccel; -extern const AVHWAccel ff_vp9_vdpau_hwaccel; -extern const AVHWAccel ff_vp9_videotoolbox_hwaccel; -extern const AVHWAccel ff_wmv3_d3d11va_hwaccel; -extern const AVHWAccel ff_wmv3_d3d11va2_hwaccel; -extern const AVHWAccel ff_wmv3_dxva2_hwaccel; -extern const AVHWAccel ff_wmv3_nvdec_hwaccel; -extern const AVHWAccel ff_wmv3_vaapi_hwaccel; -extern const AVHWAccel ff_wmv3_vdpau_hwaccel; +extern const struct FFHWAccel ff_av1_d3d11va_hwaccel; +extern const struct FFHWAccel ff_av1_d3d11va2_hwaccel; +extern const struct FFHWAccel ff_av1_dxva2_hwaccel; +extern const struct FFHWAccel ff_av1_nvdec_hwaccel; +extern const struct FFHWAccel ff_av1_vaapi_hwaccel; +extern const struct FFHWAccel ff_av1_vdpau_hwaccel; +extern const struct FFHWAccel ff_av1_vulkan_hwaccel; +extern const struct FFHWAccel ff_h263_vaapi_hwaccel; +extern const struct FFHWAccel ff_h263_videotoolbox_hwaccel; +extern const struct FFHWAccel ff_h264_d3d11va_hwaccel; +extern const struct FFHWAccel ff_h264_d3d11va2_hwaccel; +extern const struct FFHWAccel ff_h264_dxva2_hwaccel; +extern const struct FFHWAccel ff_h264_nvdec_hwaccel; +extern const struct FFHWAccel ff_h264_vaapi_hwaccel; +extern const struct FFHWAccel ff_h264_vdpau_hwaccel; +extern const struct FFHWAccel ff_h264_videotoolbox_hwaccel; +extern const struct FFHWAccel ff_h264_vulkan_hwaccel; +extern const struct FFHWAccel ff_hevc_d3d11va_hwaccel; +extern const struct FFHWAccel ff_hevc_d3d11va2_hwaccel; +extern const struct FFHWAccel ff_hevc_dxva2_hwaccel; +extern const struct FFHWAccel ff_hevc_nvdec_hwaccel; +extern const struct FFHWAccel ff_hevc_vaapi_hwaccel; +extern const struct FFHWAccel ff_hevc_vdpau_hwaccel; +extern const struct FFHWAccel ff_hevc_videotoolbox_hwaccel; +extern const struct FFHWAccel ff_hevc_vulkan_hwaccel; +extern const struct FFHWAccel ff_mjpeg_nvdec_hwaccel; +extern const struct FFHWAccel ff_mjpeg_vaapi_hwaccel; +extern const struct FFHWAccel ff_mpeg1_nvdec_hwaccel; +extern const struct FFHWAccel ff_mpeg1_vdpau_hwaccel; +extern const struct FFHWAccel ff_mpeg1_videotoolbox_hwaccel; +extern const struct FFHWAccel ff_mpeg2_d3d11va_hwaccel; +extern const struct FFHWAccel ff_mpeg2_d3d11va2_hwaccel; +extern const struct FFHWAccel ff_mpeg2_dxva2_hwaccel; +extern const struct FFHWAccel ff_mpeg2_nvdec_hwaccel; +extern const struct FFHWAccel ff_mpeg2_vaapi_hwaccel; +extern const struct FFHWAccel ff_mpeg2_vdpau_hwaccel; +extern const struct FFHWAccel ff_mpeg2_videotoolbox_hwaccel; +extern const struct FFHWAccel ff_mpeg4_nvdec_hwaccel; +extern const struct FFHWAccel ff_mpeg4_vaapi_hwaccel; +extern const struct FFHWAccel ff_mpeg4_vdpau_hwaccel; +extern const struct FFHWAccel ff_mpeg4_videotoolbox_hwaccel; +extern const struct FFHWAccel ff_prores_videotoolbox_hwaccel; +extern const struct FFHWAccel ff_vc1_d3d11va_hwaccel; +extern const struct FFHWAccel ff_vc1_d3d11va2_hwaccel; +extern const struct FFHWAccel ff_vc1_dxva2_hwaccel; +extern const struct FFHWAccel ff_vc1_nvdec_hwaccel; +extern const struct FFHWAccel ff_vc1_vaapi_hwaccel; +extern const struct FFHWAccel ff_vc1_vdpau_hwaccel; +extern const struct FFHWAccel ff_vp8_nvdec_hwaccel; +extern const struct FFHWAccel ff_vp8_vaapi_hwaccel; +extern const struct FFHWAccel ff_vp9_d3d11va_hwaccel; +extern const struct FFHWAccel ff_vp9_d3d11va2_hwaccel; +extern const struct FFHWAccel ff_vp9_dxva2_hwaccel; +extern const struct FFHWAccel ff_vp9_nvdec_hwaccel; +extern const struct FFHWAccel ff_vp9_vaapi_hwaccel; +extern const struct FFHWAccel ff_vp9_vdpau_hwaccel; +extern const struct FFHWAccel ff_vp9_videotoolbox_hwaccel; +extern const struct FFHWAccel ff_wmv3_d3d11va_hwaccel; +extern const struct FFHWAccel ff_wmv3_d3d11va2_hwaccel; +extern const struct FFHWAccel ff_wmv3_dxva2_hwaccel; +extern const struct FFHWAccel ff_wmv3_nvdec_hwaccel; +extern const struct FFHWAccel ff_wmv3_vaapi_hwaccel; +extern const struct FFHWAccel ff_wmv3_vdpau_hwaccel; #endif /* AVCODEC_HWACCELS_H */ diff --git a/libavcodec/hwconfig.h b/libavcodec/hwconfig.h index 3b19d5edad..e164722a94 100644 --- a/libavcodec/hwconfig.h +++ b/libavcodec/hwconfig.h @@ -32,7 +32,7 @@ typedef struct AVCodecHWConfigInternal { * If this configuration uses a hwaccel, a pointer to it. * If not, NULL. */ - const AVHWAccel *hwaccel; + const struct FFHWAccel *hwaccel; } AVCodecHWConfigInternal; void ff_hwaccel_uninit(AVCodecContext *avctx); diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index b42e75bcdd..cef8625791 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -41,6 +41,7 @@ #include "codec_internal.h" #include "copy_block.h" #include "decode.h" +#include "hwaccel_internal.h" #include "hwconfig.h" #include "idctdsp.h" #include "internal.h" @@ -796,13 +797,14 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) } if (s->avctx->hwaccel) { + const FFHWAccel *hwaccel = ffhwaccel(s->avctx->hwaccel); s->hwaccel_picture_private = - av_mallocz(s->avctx->hwaccel->frame_priv_data_size); + av_mallocz(hwaccel->frame_priv_data_size); if (!s->hwaccel_picture_private) return AVERROR(ENOMEM); - ret = s->avctx->hwaccel->start_frame(s->avctx, s->raw_image_buffer, - s->raw_image_buffer_size); + ret = hwaccel->start_frame(s->avctx, s->raw_image_buffer, + s->raw_image_buffer_size); if (ret < 0) return ret; } @@ -1774,9 +1776,9 @@ next_field: av_assert0(bytes_to_start >= 0 && s->raw_scan_buffer_size >= bytes_to_start); - ret = s->avctx->hwaccel->decode_slice(s->avctx, - s->raw_scan_buffer + bytes_to_start, - s->raw_scan_buffer_size - bytes_to_start); + ret = FF_HW_CALL(s->avctx, decode_slice, + s->raw_scan_buffer + bytes_to_start, + s->raw_scan_buffer_size - bytes_to_start); if (ret < 0) return ret; @@ -2547,7 +2549,7 @@ eoi_parser: goto the_end_no_picture; } if (s->avctx->hwaccel) { - ret = s->avctx->hwaccel->end_frame(s->avctx); + ret = FF_HW_SIMPLE_CALL(s->avctx, end_frame); if (ret < 0) return ret; diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index 3737d77eca..e645b8e24a 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -42,6 +42,7 @@ #include "codec_internal.h" #include "decode.h" #include "error_resilience.h" +#include "hwaccel_internal.h" #include "hwconfig.h" #include "idctdsp.h" #include "internal.h" @@ -1656,7 +1657,7 @@ static int mpeg_field_start(MpegEncContext *s, const uint8_t *buf, int buf_size) } if (s->avctx->hwaccel) { - if ((ret = s->avctx->hwaccel->end_frame(s->avctx)) < 0) { + if ((ret = FF_HW_SIMPLE_CALL(s->avctx, end_frame)) < 0) { av_log(avctx, AV_LOG_ERROR, "hardware accelerator failed to decode first field\n"); return ret; @@ -1672,7 +1673,7 @@ static int mpeg_field_start(MpegEncContext *s, const uint8_t *buf, int buf_size) } if (avctx->hwaccel) { - if ((ret = avctx->hwaccel->start_frame(avctx, buf, buf_size)) < 0) + if ((ret = FF_HW_CALL(avctx, start_frame, buf, buf_size)) < 0) return ret; } @@ -1757,7 +1758,7 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y, if (buf_end < *buf + buf_size) buf_end -= 4; s->mb_y = mb_y; - if (avctx->hwaccel->decode_slice(avctx, buf_start, buf_end - buf_start) < 0) + if (FF_HW_CALL(avctx, decode_slice, buf_start, buf_end - buf_start) < 0) return DECODE_SLICE_ERROR; *buf = buf_end; return DECODE_SLICE_OK; @@ -2026,7 +2027,7 @@ static int slice_end(AVCodecContext *avctx, AVFrame *pict) return 0; if (s->avctx->hwaccel) { - int ret = s->avctx->hwaccel->end_frame(s->avctx); + int ret = FF_HW_SIMPLE_CALL(s->avctx, end_frame); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, "hardware accelerator failed to decode picture\n"); diff --git a/libavcodec/nvdec_av1.c b/libavcodec/nvdec_av1.c index 3bbcd76123..74b0442177 100644 --- a/libavcodec/nvdec_av1.c +++ b/libavcodec/nvdec_av1.c @@ -23,6 +23,7 @@ #include "avcodec.h" #include "nvdec.h" #include "decode.h" +#include "hwaccel_internal.h" #include "internal.h" #include "av1dec.h" @@ -337,11 +338,11 @@ static int nvdec_av1_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ return ff_nvdec_frame_params(avctx, hw_frames_ctx, 8 * 2, 0); } -const AVHWAccel ff_av1_nvdec_hwaccel = { - .name = "av1_nvdec", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_AV1, - .pix_fmt = AV_PIX_FMT_CUDA, +const FFHWAccel ff_av1_nvdec_hwaccel = { + .p.name = "av1_nvdec", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_AV1, + .p.pix_fmt = AV_PIX_FMT_CUDA, .start_frame = nvdec_av1_start_frame, .end_frame = ff_nvdec_simple_end_frame, .decode_slice = nvdec_av1_decode_slice, diff --git a/libavcodec/nvdec_h264.c b/libavcodec/nvdec_h264.c index 116bd4fb5d..f022619b64 100644 --- a/libavcodec/nvdec_h264.c +++ b/libavcodec/nvdec_h264.c @@ -28,6 +28,7 @@ #include "decode.h" #include "internal.h" #include "h264dec.h" +#include "hwaccel_internal.h" static void dpb_add(const H264Context *h, CUVIDH264DPBENTRY *dst, const H264Picture *src, int frame_idx) @@ -169,11 +170,11 @@ static int nvdec_h264_frame_params(AVCodecContext *avctx, return ff_nvdec_frame_params(avctx, hw_frames_ctx, sps->ref_frame_count + sps->num_reorder_frames, 0); } -const AVHWAccel ff_h264_nvdec_hwaccel = { - .name = "h264_nvdec", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_H264, - .pix_fmt = AV_PIX_FMT_CUDA, +const FFHWAccel ff_h264_nvdec_hwaccel = { + .p.name = "h264_nvdec", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_H264, + .p.pix_fmt = AV_PIX_FMT_CUDA, .start_frame = nvdec_h264_start_frame, .end_frame = ff_nvdec_end_frame, .decode_slice = nvdec_h264_decode_slice, diff --git a/libavcodec/nvdec_hevc.c b/libavcodec/nvdec_hevc.c index cd549d2ef6..91fb9f5384 100644 --- a/libavcodec/nvdec_hevc.c +++ b/libavcodec/nvdec_hevc.c @@ -29,6 +29,7 @@ #include "internal.h" #include "hevcdec.h" #include "hevc_data.h" +#include "hwaccel_internal.h" static void dpb_add(CUVIDHEVCPICPARAMS *pp, int idx, const HEVCFrame *src) { @@ -308,11 +309,11 @@ static int nvdec_hevc_decode_init(AVCodecContext *avctx) { return ff_nvdec_decode_init(avctx); } -const AVHWAccel ff_hevc_nvdec_hwaccel = { - .name = "hevc_nvdec", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_HEVC, - .pix_fmt = AV_PIX_FMT_CUDA, +const FFHWAccel ff_hevc_nvdec_hwaccel = { + .p.name = "hevc_nvdec", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_HEVC, + .p.pix_fmt = AV_PIX_FMT_CUDA, .start_frame = nvdec_hevc_start_frame, .end_frame = ff_nvdec_end_frame, .decode_slice = nvdec_hevc_decode_slice, diff --git a/libavcodec/nvdec_mjpeg.c b/libavcodec/nvdec_mjpeg.c index daaf0072ed..850634bf1a 100644 --- a/libavcodec/nvdec_mjpeg.c +++ b/libavcodec/nvdec_mjpeg.c @@ -25,6 +25,7 @@ #include "mjpegdec.h" #include "nvdec.h" #include "decode.h" +#include "hwaccel_internal.h" static int nvdec_mjpeg_start_frame(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size) { @@ -69,11 +70,11 @@ static int nvdec_mjpeg_frame_params(AVCodecContext *avctx, return ff_nvdec_frame_params(avctx, hw_frames_ctx, 1, 0); } -const AVHWAccel ff_mjpeg_nvdec_hwaccel = { - .name = "mjpeg_nvdec", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_MJPEG, - .pix_fmt = AV_PIX_FMT_CUDA, +const FFHWAccel ff_mjpeg_nvdec_hwaccel = { + .p.name = "mjpeg_nvdec", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MJPEG, + .p.pix_fmt = AV_PIX_FMT_CUDA, .start_frame = nvdec_mjpeg_start_frame, .end_frame = ff_nvdec_simple_end_frame, .decode_slice = nvdec_mjpeg_decode_slice, diff --git a/libavcodec/nvdec_mpeg12.c b/libavcodec/nvdec_mpeg12.c index 3b9ff60734..a4603c7ea7 100644 --- a/libavcodec/nvdec_mpeg12.c +++ b/libavcodec/nvdec_mpeg12.c @@ -23,6 +23,7 @@ #include "config_components.h" #include "avcodec.h" +#include "hwaccel_internal.h" #include "internal.h" #include "mpegvideo.h" #include "nvdec.h" @@ -99,11 +100,11 @@ static int nvdec_mpeg12_frame_params(AVCodecContext *avctx, } #if CONFIG_MPEG2_NVDEC_HWACCEL -const AVHWAccel ff_mpeg2_nvdec_hwaccel = { - .name = "mpeg2_nvdec", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_MPEG2VIDEO, - .pix_fmt = AV_PIX_FMT_CUDA, +const FFHWAccel ff_mpeg2_nvdec_hwaccel = { + .p.name = "mpeg2_nvdec", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MPEG2VIDEO, + .p.pix_fmt = AV_PIX_FMT_CUDA, .start_frame = nvdec_mpeg12_start_frame, .end_frame = ff_nvdec_simple_end_frame, .decode_slice = ff_nvdec_simple_decode_slice, @@ -115,11 +116,11 @@ const AVHWAccel ff_mpeg2_nvdec_hwaccel = { #endif #if CONFIG_MPEG1_NVDEC_HWACCEL -const AVHWAccel ff_mpeg1_nvdec_hwaccel = { - .name = "mpeg1_nvdec", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_MPEG1VIDEO, - .pix_fmt = AV_PIX_FMT_CUDA, +const FFHWAccel ff_mpeg1_nvdec_hwaccel = { + .p.name = "mpeg1_nvdec", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MPEG1VIDEO, + .p.pix_fmt = AV_PIX_FMT_CUDA, .start_frame = nvdec_mpeg12_start_frame, .end_frame = ff_nvdec_simple_end_frame, .decode_slice = ff_nvdec_simple_decode_slice, diff --git a/libavcodec/nvdec_mpeg4.c b/libavcodec/nvdec_mpeg4.c index c193f6b6e4..20a0499437 100644 --- a/libavcodec/nvdec_mpeg4.c +++ b/libavcodec/nvdec_mpeg4.c @@ -26,6 +26,7 @@ #include "mpeg4videodefs.h" #include "nvdec.h" #include "decode.h" +#include "hwaccel_internal.h" static int nvdec_mpeg4_start_frame(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size) { @@ -109,11 +110,11 @@ static int nvdec_mpeg4_frame_params(AVCodecContext *avctx, return ff_nvdec_frame_params(avctx, hw_frames_ctx, 2, 0); } -const AVHWAccel ff_mpeg4_nvdec_hwaccel = { - .name = "mpeg4_nvdec", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_MPEG4, - .pix_fmt = AV_PIX_FMT_CUDA, +const FFHWAccel ff_mpeg4_nvdec_hwaccel = { + .p.name = "mpeg4_nvdec", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MPEG4, + .p.pix_fmt = AV_PIX_FMT_CUDA, .start_frame = nvdec_mpeg4_start_frame, .end_frame = ff_nvdec_simple_end_frame, .decode_slice = nvdec_mpeg4_decode_slice, diff --git a/libavcodec/nvdec_vc1.c b/libavcodec/nvdec_vc1.c index fae1cb0ab2..5096d784df 100644 --- a/libavcodec/nvdec_vc1.c +++ b/libavcodec/nvdec_vc1.c @@ -23,6 +23,7 @@ #include "config_components.h" #include "avcodec.h" +#include "hwaccel_internal.h" #include "internal.h" #include "nvdec.h" #include "decode.h" @@ -113,11 +114,11 @@ static int nvdec_vc1_frame_params(AVCodecContext *avctx, return ff_nvdec_frame_params(avctx, hw_frames_ctx, 2, 0); } -const AVHWAccel ff_vc1_nvdec_hwaccel = { - .name = "vc1_nvdec", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_VC1, - .pix_fmt = AV_PIX_FMT_CUDA, +const FFHWAccel ff_vc1_nvdec_hwaccel = { + .p.name = "vc1_nvdec", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VC1, + .p.pix_fmt = AV_PIX_FMT_CUDA, .start_frame = nvdec_vc1_start_frame, .end_frame = ff_nvdec_simple_end_frame, .decode_slice = ff_nvdec_simple_decode_slice, @@ -128,11 +129,11 @@ const AVHWAccel ff_vc1_nvdec_hwaccel = { }; #if CONFIG_WMV3_NVDEC_HWACCEL -const AVHWAccel ff_wmv3_nvdec_hwaccel = { - .name = "wmv3_nvdec", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_WMV3, - .pix_fmt = AV_PIX_FMT_CUDA, +const FFHWAccel ff_wmv3_nvdec_hwaccel = { + .p.name = "wmv3_nvdec", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_WMV3, + .p.pix_fmt = AV_PIX_FMT_CUDA, .start_frame = nvdec_vc1_start_frame, .end_frame = ff_nvdec_simple_end_frame, .decode_slice = ff_nvdec_simple_decode_slice, diff --git a/libavcodec/nvdec_vp8.c b/libavcodec/nvdec_vp8.c index 3812ef3e1a..ff3b3f259c 100644 --- a/libavcodec/nvdec_vp8.c +++ b/libavcodec/nvdec_vp8.c @@ -23,6 +23,7 @@ #include "avcodec.h" #include "nvdec.h" #include "decode.h" +#include "hwaccel_internal.h" #include "internal.h" #include "vp8.h" @@ -90,11 +91,11 @@ static int nvdec_vp8_frame_params(AVCodecContext *avctx, return ff_nvdec_frame_params(avctx, hw_frames_ctx, 3, 0); } -const AVHWAccel ff_vp8_nvdec_hwaccel = { - .name = "vp8_nvdec", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_VP8, - .pix_fmt = AV_PIX_FMT_CUDA, +const FFHWAccel ff_vp8_nvdec_hwaccel = { + .p.name = "vp8_nvdec", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VP8, + .p.pix_fmt = AV_PIX_FMT_CUDA, .start_frame = nvdec_vp8_start_frame, .end_frame = ff_nvdec_simple_end_frame, .decode_slice = ff_nvdec_simple_decode_slice, diff --git a/libavcodec/nvdec_vp9.c b/libavcodec/nvdec_vp9.c index a76bcf9943..e196391c6d 100644 --- a/libavcodec/nvdec_vp9.c +++ b/libavcodec/nvdec_vp9.c @@ -25,6 +25,7 @@ #include "avcodec.h" #include "nvdec.h" #include "decode.h" +#include "hwaccel_internal.h" #include "internal.h" #include "vp9shared.h" @@ -169,11 +170,11 @@ static int nvdec_vp9_frame_params(AVCodecContext *avctx, return ff_nvdec_frame_params(avctx, hw_frames_ctx, 8, 0); } -const AVHWAccel ff_vp9_nvdec_hwaccel = { - .name = "vp9_nvdec", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_VP9, - .pix_fmt = AV_PIX_FMT_CUDA, +const FFHWAccel ff_vp9_nvdec_hwaccel = { + .p.name = "vp9_nvdec", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VP9, + .p.pix_fmt = AV_PIX_FMT_CUDA, .start_frame = nvdec_vp9_start_frame, .end_frame = ff_nvdec_simple_end_frame, .decode_slice = ff_nvdec_simple_decode_slice, diff --git a/libavcodec/proresdec2.c b/libavcodec/proresdec2.c index b86614adc0..ae5838eca4 100644 --- a/libavcodec/proresdec2.c +++ b/libavcodec/proresdec2.c @@ -37,6 +37,7 @@ #include "codec_internal.h" #include "decode.h" #include "get_bits.h" +#include "hwaccel_internal.h" #include "hwconfig.h" #include "idctdsp.h" #include "profiles.h" @@ -804,13 +805,14 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, ff_thread_finish_setup(avctx); if (avctx->hwaccel) { - ret = avctx->hwaccel->start_frame(avctx, NULL, 0); + const FFHWAccel *hwaccel = ffhwaccel(avctx->hwaccel); + ret = hwaccel->start_frame(avctx, NULL, 0); if (ret < 0) return ret; - ret = avctx->hwaccel->decode_slice(avctx, avpkt->data, avpkt->size); + ret = hwaccel->decode_slice(avctx, avpkt->data, avpkt->size); if (ret < 0) return ret; - ret = avctx->hwaccel->end_frame(avctx); + ret = hwaccel->end_frame(avctx); if (ret < 0) return ret; goto finish; diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c index c14010d803..6b792bfc39 100644 --- a/libavcodec/pthread_frame.c +++ b/libavcodec/pthread_frame.c @@ -151,7 +151,7 @@ typedef struct FrameThreadContext { static int hwaccel_serial(const AVCodecContext *avctx) { - return avctx->hwaccel && !(avctx->hwaccel->caps_internal & HWACCEL_CAP_THREAD_SAFE); + return avctx->hwaccel && !(ffhwaccel(avctx->hwaccel)->caps_internal & HWACCEL_CAP_THREAD_SAFE); } static void async_lock(FrameThreadContext *fctx) @@ -246,7 +246,7 @@ static attribute_align_arg void *frame_worker_thread(void *arg) pthread_mutex_unlock(&p->parent->hwaccel_mutex); } av_assert0(!avctx->hwaccel || - (avctx->hwaccel->caps_internal & HWACCEL_CAP_THREAD_SAFE)); + (ffhwaccel(avctx->hwaccel)->caps_internal & HWACCEL_CAP_THREAD_SAFE)); if (p->async_serializing) { p->async_serializing = 0; @@ -368,12 +368,13 @@ FF_ENABLE_DEPRECATION_WARNINGS // propagate hwaccel state for threadsafe hwaccels if (p_src->hwaccel_threadsafe) { + const FFHWAccel *hwaccel = ffhwaccel(src->hwaccel); if (!dst->hwaccel) { - if (src->hwaccel->priv_data_size) { - av_assert0(src->hwaccel->update_thread_context); + if (hwaccel->priv_data_size) { + av_assert0(hwaccel->update_thread_context); dst->internal->hwaccel_priv_data = - av_mallocz(src->hwaccel->priv_data_size); + av_mallocz(hwaccel->priv_data_size); if (!dst->internal->hwaccel_priv_data) return AVERROR(ENOMEM); } @@ -381,8 +382,8 @@ FF_ENABLE_DEPRECATION_WARNINGS } av_assert0(dst->hwaccel == src->hwaccel); - if (src->hwaccel->update_thread_context) { - err = src->hwaccel->update_thread_context(dst, src); + if (hwaccel->update_thread_context) { + err = hwaccel->update_thread_context(dst, src); if (err < 0) { av_log(dst, AV_LOG_ERROR, "Error propagating hwaccel state\n"); ff_hwaccel_uninit(dst); @@ -658,7 +659,7 @@ void ff_thread_finish_setup(AVCodecContext *avctx) { if (!(avctx->active_thread_type&FF_THREAD_FRAME)) return; p->hwaccel_threadsafe = avctx->hwaccel && - (avctx->hwaccel->caps_internal & HWACCEL_CAP_THREAD_SAFE); + (ffhwaccel(avctx->hwaccel)->caps_internal & HWACCEL_CAP_THREAD_SAFE); if (hwaccel_serial(avctx) && !p->hwaccel_serializing) { pthread_mutex_lock(&p->parent->hwaccel_mutex); @@ -667,7 +668,7 @@ void ff_thread_finish_setup(AVCodecContext *avctx) { /* this assumes that no hwaccel calls happen before ff_thread_finish_setup() */ if (avctx->hwaccel && - !(avctx->hwaccel->caps_internal & HWACCEL_CAP_ASYNC_SAFE)) { + !(ffhwaccel(avctx->hwaccel)->caps_internal & HWACCEL_CAP_ASYNC_SAFE)) { p->async_serializing = 1; async_lock(p->parent); diff --git a/libavcodec/vaapi_av1.c b/libavcodec/vaapi_av1.c index 67ea6af697..85b508438e 100644 --- a/libavcodec/vaapi_av1.c +++ b/libavcodec/vaapi_av1.c @@ -433,11 +433,11 @@ static int vaapi_av1_decode_slice(AVCodecContext *avctx, return 0; } -const AVHWAccel ff_av1_vaapi_hwaccel = { - .name = "av1_vaapi", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_AV1, - .pix_fmt = AV_PIX_FMT_VAAPI, +const FFHWAccel ff_av1_vaapi_hwaccel = { + .p.name = "av1_vaapi", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_AV1, + .p.pix_fmt = AV_PIX_FMT_VAAPI, .start_frame = vaapi_av1_start_frame, .end_frame = vaapi_av1_end_frame, .decode_slice = vaapi_av1_decode_slice, diff --git a/libavcodec/vaapi_h264.c b/libavcodec/vaapi_h264.c index e7f8e920b2..55cf5a05ee 100644 --- a/libavcodec/vaapi_h264.c +++ b/libavcodec/vaapi_h264.c @@ -385,11 +385,11 @@ static int vaapi_h264_decode_slice(AVCodecContext *avctx, return 0; } -const AVHWAccel ff_h264_vaapi_hwaccel = { - .name = "h264_vaapi", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_H264, - .pix_fmt = AV_PIX_FMT_VAAPI, +const FFHWAccel ff_h264_vaapi_hwaccel = { + .p.name = "h264_vaapi", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_H264, + .p.pix_fmt = AV_PIX_FMT_VAAPI, .start_frame = &vaapi_h264_start_frame, .end_frame = &vaapi_h264_end_frame, .decode_slice = &vaapi_h264_decode_slice, diff --git a/libavcodec/vaapi_hevc.c b/libavcodec/vaapi_hevc.c index 87584d1edb..d464fda18c 100644 --- a/libavcodec/vaapi_hevc.c +++ b/libavcodec/vaapi_hevc.c @@ -654,11 +654,11 @@ end: return VAProfileNone; } -const AVHWAccel ff_hevc_vaapi_hwaccel = { - .name = "hevc_vaapi", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_HEVC, - .pix_fmt = AV_PIX_FMT_VAAPI, +const FFHWAccel ff_hevc_vaapi_hwaccel = { + .p.name = "hevc_vaapi", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_HEVC, + .p.pix_fmt = AV_PIX_FMT_VAAPI, .start_frame = vaapi_hevc_start_frame, .end_frame = vaapi_hevc_end_frame, .decode_slice = vaapi_hevc_decode_slice, diff --git a/libavcodec/vaapi_mjpeg.c b/libavcodec/vaapi_mjpeg.c index 1947540ea1..5b8d47bb2a 100644 --- a/libavcodec/vaapi_mjpeg.c +++ b/libavcodec/vaapi_mjpeg.c @@ -142,11 +142,11 @@ fail: return err; } -const AVHWAccel ff_mjpeg_vaapi_hwaccel = { - .name = "mjpeg_vaapi", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_MJPEG, - .pix_fmt = AV_PIX_FMT_VAAPI, +const FFHWAccel ff_mjpeg_vaapi_hwaccel = { + .p.name = "mjpeg_vaapi", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MJPEG, + .p.pix_fmt = AV_PIX_FMT_VAAPI, .start_frame = &vaapi_mjpeg_start_frame, .end_frame = &vaapi_mjpeg_end_frame, .decode_slice = &vaapi_mjpeg_decode_slice, diff --git a/libavcodec/vaapi_mpeg2.c b/libavcodec/vaapi_mpeg2.c index 09636e0d26..eeb4e87321 100644 --- a/libavcodec/vaapi_mpeg2.c +++ b/libavcodec/vaapi_mpeg2.c @@ -172,11 +172,11 @@ static int vaapi_mpeg2_decode_slice(AVCodecContext *avctx, const uint8_t *buffer return 0; } -const AVHWAccel ff_mpeg2_vaapi_hwaccel = { - .name = "mpeg2_vaapi", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_MPEG2VIDEO, - .pix_fmt = AV_PIX_FMT_VAAPI, +const FFHWAccel ff_mpeg2_vaapi_hwaccel = { + .p.name = "mpeg2_vaapi", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MPEG2VIDEO, + .p.pix_fmt = AV_PIX_FMT_VAAPI, .start_frame = &vaapi_mpeg2_start_frame, .end_frame = &vaapi_mpeg2_end_frame, .decode_slice = &vaapi_mpeg2_decode_slice, diff --git a/libavcodec/vaapi_mpeg4.c b/libavcodec/vaapi_mpeg4.c index ff31ca4d92..363b686e42 100644 --- a/libavcodec/vaapi_mpeg4.c +++ b/libavcodec/vaapi_mpeg4.c @@ -180,11 +180,11 @@ static int vaapi_mpeg4_decode_slice(AVCodecContext *avctx, const uint8_t *buffer } #if CONFIG_MPEG4_VAAPI_HWACCEL -const AVHWAccel ff_mpeg4_vaapi_hwaccel = { - .name = "mpeg4_vaapi", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_MPEG4, - .pix_fmt = AV_PIX_FMT_VAAPI, +const FFHWAccel ff_mpeg4_vaapi_hwaccel = { + .p.name = "mpeg4_vaapi", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MPEG4, + .p.pix_fmt = AV_PIX_FMT_VAAPI, .start_frame = &vaapi_mpeg4_start_frame, .end_frame = &vaapi_mpeg4_end_frame, .decode_slice = &vaapi_mpeg4_decode_slice, @@ -198,11 +198,11 @@ const AVHWAccel ff_mpeg4_vaapi_hwaccel = { #endif #if CONFIG_H263_VAAPI_HWACCEL -const AVHWAccel ff_h263_vaapi_hwaccel = { - .name = "h263_vaapi", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_H263, - .pix_fmt = AV_PIX_FMT_VAAPI, +const FFHWAccel ff_h263_vaapi_hwaccel = { + .p.name = "h263_vaapi", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_H263, + .p.pix_fmt = AV_PIX_FMT_VAAPI, .start_frame = &vaapi_mpeg4_start_frame, .end_frame = &vaapi_mpeg4_end_frame, .decode_slice = &vaapi_mpeg4_decode_slice, diff --git a/libavcodec/vaapi_vc1.c b/libavcodec/vaapi_vc1.c index a179e4df11..09a5c852fc 100644 --- a/libavcodec/vaapi_vc1.c +++ b/libavcodec/vaapi_vc1.c @@ -500,11 +500,11 @@ static int vaapi_vc1_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, } #if CONFIG_WMV3_VAAPI_HWACCEL -const AVHWAccel ff_wmv3_vaapi_hwaccel = { - .name = "wmv3_vaapi", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_WMV3, - .pix_fmt = AV_PIX_FMT_VAAPI, +const FFHWAccel ff_wmv3_vaapi_hwaccel = { + .p.name = "wmv3_vaapi", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_WMV3, + .p.pix_fmt = AV_PIX_FMT_VAAPI, .start_frame = &vaapi_vc1_start_frame, .end_frame = &vaapi_vc1_end_frame, .decode_slice = &vaapi_vc1_decode_slice, @@ -517,11 +517,11 @@ const AVHWAccel ff_wmv3_vaapi_hwaccel = { }; #endif -const AVHWAccel ff_vc1_vaapi_hwaccel = { - .name = "vc1_vaapi", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_VC1, - .pix_fmt = AV_PIX_FMT_VAAPI, +const FFHWAccel ff_vc1_vaapi_hwaccel = { + .p.name = "vc1_vaapi", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VC1, + .p.pix_fmt = AV_PIX_FMT_VAAPI, .start_frame = &vaapi_vc1_start_frame, .end_frame = &vaapi_vc1_end_frame, .decode_slice = &vaapi_vc1_decode_slice, diff --git a/libavcodec/vaapi_vp8.c b/libavcodec/vaapi_vp8.c index f833133f9f..31137a45bd 100644 --- a/libavcodec/vaapi_vp8.c +++ b/libavcodec/vaapi_vp8.c @@ -220,11 +220,11 @@ fail: return err; } -const AVHWAccel ff_vp8_vaapi_hwaccel = { - .name = "vp8_vaapi", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_VP8, - .pix_fmt = AV_PIX_FMT_VAAPI, +const FFHWAccel ff_vp8_vaapi_hwaccel = { + .p.name = "vp8_vaapi", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VP8, + .p.pix_fmt = AV_PIX_FMT_VAAPI, .start_frame = &vaapi_vp8_start_frame, .end_frame = &vaapi_vp8_end_frame, .decode_slice = &vaapi_vp8_decode_slice, diff --git a/libavcodec/vaapi_vp9.c b/libavcodec/vaapi_vp9.c index cf735bb7b2..9dc7d5e72b 100644 --- a/libavcodec/vaapi_vp9.c +++ b/libavcodec/vaapi_vp9.c @@ -168,11 +168,11 @@ static int vaapi_vp9_decode_slice(AVCodecContext *avctx, return 0; } -const AVHWAccel ff_vp9_vaapi_hwaccel = { - .name = "vp9_vaapi", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_VP9, - .pix_fmt = AV_PIX_FMT_VAAPI, +const FFHWAccel ff_vp9_vaapi_hwaccel = { + .p.name = "vp9_vaapi", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VP9, + .p.pix_fmt = AV_PIX_FMT_VAAPI, .start_frame = vaapi_vp9_start_frame, .end_frame = vaapi_vp9_end_frame, .decode_slice = vaapi_vp9_decode_slice, diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c index 9e343d003f..a2a0e8f56f 100644 --- a/libavcodec/vc1dec.c +++ b/libavcodec/vc1dec.c @@ -34,6 +34,7 @@ #include "decode.h" #include "get_bits.h" #include "h263dec.h" +#include "hwaccel_internal.h" #include "hwconfig.h" #include "mpeg_er.h" #include "mpegvideo.h" @@ -1096,19 +1097,26 @@ static int vc1_decode_frame(AVCodecContext *avctx, AVFrame *pict, } if (avctx->hwaccel) { + const FFHWAccel *hwaccel = ffhwaccel(avctx->hwaccel); s->mb_y = 0; if (v->field_mode && buf_start_second_field) { // decode first field s->picture_structure = PICT_BOTTOM_FIELD - v->tff; - if ((ret = avctx->hwaccel->start_frame(avctx, buf_start, buf_start_second_field - buf_start)) < 0) + ret = hwaccel->start_frame(avctx, buf_start, + buf_start_second_field - buf_start); + if (ret < 0) goto err; if (n_slices1 == -1) { // no slices, decode the field as-is - if ((ret = avctx->hwaccel->decode_slice(avctx, buf_start, buf_start_second_field - buf_start)) < 0) + ret = hwaccel->decode_slice(avctx, buf_start, + buf_start_second_field - buf_start); + if (ret < 0) goto err; } else { - if ((ret = avctx->hwaccel->decode_slice(avctx, buf_start, slices[0].rawbuf - buf_start)) < 0) + ret = hwaccel->decode_slice(avctx, buf_start, + slices[0].rawbuf - buf_start); + if (ret < 0) goto err; for (i = 0 ; i < n_slices1 + 1; i++) { @@ -1126,12 +1134,14 @@ static int vc1_decode_frame(AVCodecContext *avctx, AVFrame *pict, } } - if ((ret = avctx->hwaccel->decode_slice(avctx, slices[i].rawbuf, slices[i].raw_size)) < 0) + ret = hwaccel->decode_slice(avctx, slices[i].rawbuf, + slices[i].raw_size); + if (ret < 0) goto err; } } - if ((ret = avctx->hwaccel->end_frame(avctx)) < 0) + if ((ret = hwaccel->end_frame(avctx)) < 0) goto err; // decode second field @@ -1147,15 +1157,21 @@ static int vc1_decode_frame(AVCodecContext *avctx, AVFrame *pict, } v->s.current_picture_ptr->f->pict_type = v->s.pict_type; - if ((ret = avctx->hwaccel->start_frame(avctx, buf_start_second_field, (buf + buf_size) - buf_start_second_field)) < 0) + ret = hwaccel->start_frame(avctx, buf_start_second_field, + (buf + buf_size) - buf_start_second_field); + if (ret < 0) goto err; if (n_slices - n_slices1 == 2) { // no slices, decode the field as-is - if ((ret = avctx->hwaccel->decode_slice(avctx, buf_start_second_field, (buf + buf_size) - buf_start_second_field)) < 0) + ret = hwaccel->decode_slice(avctx, buf_start_second_field, + (buf + buf_size) - buf_start_second_field); + if (ret < 0) goto err; } else { - if ((ret = avctx->hwaccel->decode_slice(avctx, buf_start_second_field, slices[n_slices1 + 2].rawbuf - buf_start_second_field)) < 0) + ret = hwaccel->decode_slice(avctx, buf_start_second_field, + slices[n_slices1 + 2].rawbuf - buf_start_second_field); + if (ret < 0) goto err; for (i = n_slices1 + 2; i < n_slices; i++) { @@ -1173,25 +1189,33 @@ static int vc1_decode_frame(AVCodecContext *avctx, AVFrame *pict, } } - if ((ret = avctx->hwaccel->decode_slice(avctx, slices[i].rawbuf, slices[i].raw_size)) < 0) + ret = hwaccel->decode_slice(avctx, slices[i].rawbuf, + slices[i].raw_size); + if (ret < 0) goto err; } } - if ((ret = avctx->hwaccel->end_frame(avctx)) < 0) + if ((ret = hwaccel->end_frame(avctx)) < 0) goto err; } else { s->picture_structure = PICT_FRAME; - if ((ret = avctx->hwaccel->start_frame(avctx, buf_start, (buf + buf_size) - buf_start)) < 0) + ret = hwaccel->start_frame(avctx, buf_start, + (buf + buf_size) - buf_start); + if (ret < 0) goto err; if (n_slices == 0) { // no slices, decode the frame as-is - if ((ret = avctx->hwaccel->decode_slice(avctx, buf_start, (buf + buf_size) - buf_start)) < 0) + ret = hwaccel->decode_slice(avctx, buf_start, + (buf + buf_size) - buf_start); + if (ret < 0) goto err; } else { // decode the frame part as the first slice - if ((ret = avctx->hwaccel->decode_slice(avctx, buf_start, slices[0].rawbuf - buf_start)) < 0) + ret = hwaccel->decode_slice(avctx, buf_start, + slices[0].rawbuf - buf_start); + if (ret < 0) goto err; // and process the slices as additional slices afterwards @@ -1210,11 +1234,13 @@ static int vc1_decode_frame(AVCodecContext *avctx, AVFrame *pict, } } - if ((ret = avctx->hwaccel->decode_slice(avctx, slices[i].rawbuf, slices[i].raw_size)) < 0) + ret = hwaccel->decode_slice(avctx, slices[i].rawbuf, + slices[i].raw_size); + if (ret < 0) goto err; } } - if ((ret = avctx->hwaccel->end_frame(avctx)) < 0) + if ((ret = hwaccel->end_frame(avctx)) < 0) goto err; } } else { diff --git a/libavcodec/vdpau.c b/libavcodec/vdpau.c index 0bb793c010..2b9b78d8d0 100644 --- a/libavcodec/vdpau.c +++ b/libavcodec/vdpau.c @@ -27,6 +27,7 @@ #include "avcodec.h" #include "decode.h" +#include "hwaccel_internal.h" #include "internal.h" #include "mpegvideodec.h" #include "vc1.h" @@ -324,8 +325,8 @@ static int ff_vdpau_common_reinit(AVCodecContext *avctx) avctx->coded_height == vdctx->height && (!hwctx || !hwctx->reset)) return 0; - avctx->hwaccel->uninit(avctx); - return avctx->hwaccel->init(avctx); + FF_HW_SIMPLE_CALL(avctx, uninit); + return FF_HW_SIMPLE_CALL(avctx, init); } int ff_vdpau_common_start_frame(struct vdpau_picture_context *pic_ctx, diff --git a/libavcodec/vdpau_av1.c b/libavcodec/vdpau_av1.c index 557cbcebd7..0ae62301cb 100644 --- a/libavcodec/vdpau_av1.c +++ b/libavcodec/vdpau_av1.c @@ -353,11 +353,11 @@ static int vdpau_av1_init(AVCodecContext *avctx) return ff_vdpau_common_init(avctx, profile, level); } -const AVHWAccel ff_av1_vdpau_hwaccel = { - .name = "av1_vdpau", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_AV1, - .pix_fmt = AV_PIX_FMT_VDPAU, +const FFHWAccel ff_av1_vdpau_hwaccel = { + .p.name = "av1_vdpau", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_AV1, + .p.pix_fmt = AV_PIX_FMT_VDPAU, .start_frame = vdpau_av1_start_frame, .end_frame = vdpau_av1_end_frame, .decode_slice = vdpau_av1_decode_slice, diff --git a/libavcodec/vdpau_h264.c b/libavcodec/vdpau_h264.c index 1c5622662b..8694292fe3 100644 --- a/libavcodec/vdpau_h264.c +++ b/libavcodec/vdpau_h264.c @@ -261,11 +261,11 @@ static int vdpau_h264_init(AVCodecContext *avctx) return ff_vdpau_common_init(avctx, profile, level); } -const AVHWAccel ff_h264_vdpau_hwaccel = { - .name = "h264_vdpau", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_H264, - .pix_fmt = AV_PIX_FMT_VDPAU, +const FFHWAccel ff_h264_vdpau_hwaccel = { + .p.name = "h264_vdpau", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_H264, + .p.pix_fmt = AV_PIX_FMT_VDPAU, .start_frame = vdpau_h264_start_frame, .end_frame = vdpau_h264_end_frame, .decode_slice = vdpau_h264_decode_slice, diff --git a/libavcodec/vdpau_hevc.c b/libavcodec/vdpau_hevc.c index fb1b71abdc..fea98805d5 100644 --- a/libavcodec/vdpau_hevc.c +++ b/libavcodec/vdpau_hevc.c @@ -540,11 +540,11 @@ static int vdpau_hevc_init(AVCodecContext *avctx) return ff_vdpau_common_init(avctx, profile, level); } -const AVHWAccel ff_hevc_vdpau_hwaccel = { - .name = "hevc_vdpau", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_HEVC, - .pix_fmt = AV_PIX_FMT_VDPAU, +const FFHWAccel ff_hevc_vdpau_hwaccel = { + .p.name = "hevc_vdpau", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_HEVC, + .p.pix_fmt = AV_PIX_FMT_VDPAU, .start_frame = vdpau_hevc_start_frame, .end_frame = vdpau_hevc_end_frame, .decode_slice = vdpau_hevc_decode_slice, diff --git a/libavcodec/vdpau_mpeg12.c b/libavcodec/vdpau_mpeg12.c index d7223cdb4a..a5f21ca3a5 100644 --- a/libavcodec/vdpau_mpeg12.c +++ b/libavcodec/vdpau_mpeg12.c @@ -106,11 +106,11 @@ static int vdpau_mpeg1_init(AVCodecContext *avctx) VDP_DECODER_LEVEL_MPEG1_NA); } -const AVHWAccel ff_mpeg1_vdpau_hwaccel = { - .name = "mpeg1_vdpau", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_MPEG1VIDEO, - .pix_fmt = AV_PIX_FMT_VDPAU, +const FFHWAccel ff_mpeg1_vdpau_hwaccel = { + .p.name = "mpeg1_vdpau", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MPEG1VIDEO, + .p.pix_fmt = AV_PIX_FMT_VDPAU, .start_frame = vdpau_mpeg_start_frame, .end_frame = ff_vdpau_mpeg_end_frame, .decode_slice = vdpau_mpeg_decode_slice, @@ -141,11 +141,11 @@ static int vdpau_mpeg2_init(AVCodecContext *avctx) return ff_vdpau_common_init(avctx, profile, VDP_DECODER_LEVEL_MPEG2_HL); } -const AVHWAccel ff_mpeg2_vdpau_hwaccel = { - .name = "mpeg2_vdpau", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_MPEG2VIDEO, - .pix_fmt = AV_PIX_FMT_VDPAU, +const FFHWAccel ff_mpeg2_vdpau_hwaccel = { + .p.name = "mpeg2_vdpau", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MPEG2VIDEO, + .p.pix_fmt = AV_PIX_FMT_VDPAU, .start_frame = vdpau_mpeg_start_frame, .end_frame = ff_vdpau_mpeg_end_frame, .decode_slice = vdpau_mpeg_decode_slice, diff --git a/libavcodec/vdpau_mpeg4.c b/libavcodec/vdpau_mpeg4.c index ce6d421196..0c3852efdf 100644 --- a/libavcodec/vdpau_mpeg4.c +++ b/libavcodec/vdpau_mpeg4.c @@ -111,11 +111,11 @@ static int vdpau_mpeg4_init(AVCodecContext *avctx) return ff_vdpau_common_init(avctx, profile, avctx->level); } -const AVHWAccel ff_mpeg4_vdpau_hwaccel = { - .name = "mpeg4_vdpau", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_MPEG4, - .pix_fmt = AV_PIX_FMT_VDPAU, +const FFHWAccel ff_mpeg4_vdpau_hwaccel = { + .p.name = "mpeg4_vdpau", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MPEG4, + .p.pix_fmt = AV_PIX_FMT_VDPAU, .start_frame = vdpau_mpeg4_start_frame, .end_frame = ff_vdpau_mpeg_end_frame, .decode_slice = vdpau_mpeg4_decode_slice, diff --git a/libavcodec/vdpau_vc1.c b/libavcodec/vdpau_vc1.c index 851a89d7cf..a7ab36e431 100644 --- a/libavcodec/vdpau_vc1.c +++ b/libavcodec/vdpau_vc1.c @@ -138,11 +138,11 @@ static int vdpau_vc1_init(AVCodecContext *avctx) } #if CONFIG_WMV3_VDPAU_HWACCEL -const AVHWAccel ff_wmv3_vdpau_hwaccel = { - .name = "wm3_vdpau", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_WMV3, - .pix_fmt = AV_PIX_FMT_VDPAU, +const FFHWAccel ff_wmv3_vdpau_hwaccel = { + .p.name = "wm3_vdpau", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_WMV3, + .p.pix_fmt = AV_PIX_FMT_VDPAU, .start_frame = vdpau_vc1_start_frame, .end_frame = ff_vdpau_mpeg_end_frame, .decode_slice = vdpau_vc1_decode_slice, @@ -155,11 +155,11 @@ const AVHWAccel ff_wmv3_vdpau_hwaccel = { }; #endif -const AVHWAccel ff_vc1_vdpau_hwaccel = { - .name = "vc1_vdpau", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_VC1, - .pix_fmt = AV_PIX_FMT_VDPAU, +const FFHWAccel ff_vc1_vdpau_hwaccel = { + .p.name = "vc1_vdpau", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VC1, + .p.pix_fmt = AV_PIX_FMT_VDPAU, .start_frame = vdpau_vc1_start_frame, .end_frame = ff_vdpau_mpeg_end_frame, .decode_slice = vdpau_vc1_decode_slice, diff --git a/libavcodec/vdpau_vp9.c b/libavcodec/vdpau_vp9.c index 1e6a1fc007..fa55101536 100644 --- a/libavcodec/vdpau_vp9.c +++ b/libavcodec/vdpau_vp9.c @@ -222,11 +222,11 @@ static int vdpau_vp9_init(AVCodecContext *avctx) return ff_vdpau_common_init(avctx, profile, level); } -const AVHWAccel ff_vp9_vdpau_hwaccel = { - .name = "vp9_vdpau", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_VP9, - .pix_fmt = AV_PIX_FMT_VDPAU, +const FFHWAccel ff_vp9_vdpau_hwaccel = { + .p.name = "vp9_vdpau", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VP9, + .p.pix_fmt = AV_PIX_FMT_VDPAU, .start_frame = vdpau_vp9_start_frame, .end_frame = vdpau_vp9_end_frame, .decode_slice = vdpau_vp9_decode_slice, diff --git a/libavcodec/videotoolbox.c b/libavcodec/videotoolbox.c index 6444325591..963379d483 100644 --- a/libavcodec/videotoolbox.c +++ b/libavcodec/videotoolbox.c @@ -33,6 +33,7 @@ #include "internal.h" #include "h264dec.h" #include "hevcdec.h" +#include "hwaccel_internal.h" #include "mpegvideo.h" #include "proresdec.h" #include @@ -1284,11 +1285,11 @@ int ff_videotoolbox_frame_params(AVCodecContext *avctx, return 0; } -const AVHWAccel ff_h263_videotoolbox_hwaccel = { - .name = "h263_videotoolbox", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_H263, - .pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, +const FFHWAccel ff_h263_videotoolbox_hwaccel = { + .p.name = "h263_videotoolbox", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_H263, + .p.pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, .alloc_frame = ff_videotoolbox_alloc_frame, .start_frame = videotoolbox_mpeg_start_frame, .decode_slice = videotoolbox_mpeg_decode_slice, @@ -1299,11 +1300,11 @@ const AVHWAccel ff_h263_videotoolbox_hwaccel = { .priv_data_size = sizeof(VTContext), }; -const AVHWAccel ff_hevc_videotoolbox_hwaccel = { - .name = "hevc_videotoolbox", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_HEVC, - .pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, +const FFHWAccel ff_hevc_videotoolbox_hwaccel = { + .p.name = "hevc_videotoolbox", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_HEVC, + .p.pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, .alloc_frame = ff_videotoolbox_alloc_frame, .start_frame = videotoolbox_hevc_start_frame, .decode_slice = videotoolbox_hevc_decode_slice, @@ -1315,11 +1316,11 @@ const AVHWAccel ff_hevc_videotoolbox_hwaccel = { .priv_data_size = sizeof(VTContext), }; -const AVHWAccel ff_h264_videotoolbox_hwaccel = { - .name = "h264_videotoolbox", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_H264, - .pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, +const FFHWAccel ff_h264_videotoolbox_hwaccel = { + .p.name = "h264_videotoolbox", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_H264, + .p.pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, .alloc_frame = ff_videotoolbox_alloc_frame, .start_frame = ff_videotoolbox_h264_start_frame, .decode_slice = ff_videotoolbox_h264_decode_slice, @@ -1331,11 +1332,11 @@ const AVHWAccel ff_h264_videotoolbox_hwaccel = { .priv_data_size = sizeof(VTContext), }; -const AVHWAccel ff_mpeg1_videotoolbox_hwaccel = { - .name = "mpeg1_videotoolbox", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_MPEG1VIDEO, - .pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, +const FFHWAccel ff_mpeg1_videotoolbox_hwaccel = { + .p.name = "mpeg1_videotoolbox", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MPEG1VIDEO, + .p.pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, .alloc_frame = ff_videotoolbox_alloc_frame, .start_frame = videotoolbox_mpeg_start_frame, .decode_slice = videotoolbox_mpeg_decode_slice, @@ -1346,11 +1347,11 @@ const AVHWAccel ff_mpeg1_videotoolbox_hwaccel = { .priv_data_size = sizeof(VTContext), }; -const AVHWAccel ff_mpeg2_videotoolbox_hwaccel = { - .name = "mpeg2_videotoolbox", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_MPEG2VIDEO, - .pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, +const FFHWAccel ff_mpeg2_videotoolbox_hwaccel = { + .p.name = "mpeg2_videotoolbox", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MPEG2VIDEO, + .p.pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, .alloc_frame = ff_videotoolbox_alloc_frame, .start_frame = videotoolbox_mpeg_start_frame, .decode_slice = videotoolbox_mpeg_decode_slice, @@ -1361,11 +1362,11 @@ const AVHWAccel ff_mpeg2_videotoolbox_hwaccel = { .priv_data_size = sizeof(VTContext), }; -const AVHWAccel ff_mpeg4_videotoolbox_hwaccel = { - .name = "mpeg4_videotoolbox", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_MPEG4, - .pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, +const FFHWAccel ff_mpeg4_videotoolbox_hwaccel = { + .p.name = "mpeg4_videotoolbox", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MPEG4, + .p.pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, .alloc_frame = ff_videotoolbox_alloc_frame, .start_frame = videotoolbox_mpeg_start_frame, .decode_slice = videotoolbox_mpeg_decode_slice, @@ -1376,11 +1377,11 @@ const AVHWAccel ff_mpeg4_videotoolbox_hwaccel = { .priv_data_size = sizeof(VTContext), }; -const AVHWAccel ff_prores_videotoolbox_hwaccel = { - .name = "prores_videotoolbox", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_PRORES, - .pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, +const FFHWAccel ff_prores_videotoolbox_hwaccel = { + .p.name = "prores_videotoolbox", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_PRORES, + .p.pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, .alloc_frame = ff_videotoolbox_alloc_frame, .start_frame = videotoolbox_prores_start_frame, .decode_slice = videotoolbox_prores_decode_slice, diff --git a/libavcodec/videotoolbox_vp9.c b/libavcodec/videotoolbox_vp9.c index a998f36d1a..f5489854e3 100644 --- a/libavcodec/videotoolbox_vp9.c +++ b/libavcodec/videotoolbox_vp9.c @@ -31,6 +31,7 @@ #include "libavutil/intreadwrite.h" #include "libavutil/pixdesc.h" #include "decode.h" +#include "hwaccel_internal.h" #include "internal.h" #include "vp9shared.h" @@ -125,11 +126,11 @@ static int videotoolbox_vp9_end_frame(AVCodecContext *avctx) return ff_videotoolbox_common_end_frame(avctx, frame); } -const AVHWAccel ff_vp9_videotoolbox_hwaccel = { - .name = "vp9_videotoolbox", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_VP9, - .pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, +const FFHWAccel ff_vp9_videotoolbox_hwaccel = { + .p.name = "vp9_videotoolbox", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VP9, + .p.pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, .alloc_frame = ff_videotoolbox_alloc_frame, .start_frame = videotoolbox_vp9_start_frame, .decode_slice = videotoolbox_vp9_decode_slice, diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c index 15a2961f56..64b1c7f60e 100644 --- a/libavcodec/vp8.c +++ b/libavcodec/vp8.c @@ -31,6 +31,7 @@ #include "avcodec.h" #include "codec_internal.h" #include "decode.h" +#include "hwaccel_internal.h" #include "hwconfig.h" #include "mathops.h" #include "thread.h" @@ -166,8 +167,8 @@ static void vp8_decode_flush_impl(AVCodecContext *avctx, int free_mem) if (free_mem) free_buffers(s); - if (avctx->hwaccel && avctx->hwaccel->flush) - avctx->hwaccel->flush(avctx); + if (FF_HW_HAS_CB(avctx, flush)) + FF_HW_SIMPLE_CALL(avctx, flush); } static void vp8_decode_flush(AVCodecContext *avctx) @@ -2764,15 +2765,16 @@ int vp78_decode_frame(AVCodecContext *avctx, AVFrame *rframe, int *got_frame, ff_thread_finish_setup(avctx); if (avctx->hwaccel) { - ret = avctx->hwaccel->start_frame(avctx, avpkt->data, avpkt->size); + const FFHWAccel *hwaccel = ffhwaccel(avctx->hwaccel); + ret = hwaccel->start_frame(avctx, avpkt->data, avpkt->size); if (ret < 0) goto err; - ret = avctx->hwaccel->decode_slice(avctx, avpkt->data, avpkt->size); + ret = hwaccel->decode_slice(avctx, avpkt->data, avpkt->size); if (ret < 0) goto err; - ret = avctx->hwaccel->end_frame(avctx); + ret = hwaccel->end_frame(avctx); if (ret < 0) goto err; diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c index 751dc7271f..89f7549ef0 100644 --- a/libavcodec/vp9.c +++ b/libavcodec/vp9.c @@ -27,6 +27,7 @@ #include "codec_internal.h" #include "decode.h" #include "get_bits.h" +#include "hwaccel_internal.h" #include "hwconfig.h" #include "profiles.h" #include "thread.h" @@ -1635,13 +1636,14 @@ static int vp9_decode_frame(AVCodecContext *avctx, AVFrame *frame, } if (avctx->hwaccel) { - ret = avctx->hwaccel->start_frame(avctx, NULL, 0); + const FFHWAccel *hwaccel = ffhwaccel(avctx->hwaccel); + ret = hwaccel->start_frame(avctx, NULL, 0); if (ret < 0) return ret; - ret = avctx->hwaccel->decode_slice(avctx, pkt->data, pkt->size); + ret = hwaccel->decode_slice(avctx, pkt->data, pkt->size); if (ret < 0) return ret; - ret = avctx->hwaccel->end_frame(avctx); + ret = hwaccel->end_frame(avctx); if (ret < 0) return ret; goto finish; @@ -1798,8 +1800,8 @@ static void vp9_decode_flush(AVCodecContext *avctx) for (i = 0; i < 8; i++) ff_thread_release_ext_buffer(avctx, &s->s.refs[i]); - if (avctx->hwaccel && avctx->hwaccel->flush) - avctx->hwaccel->flush(avctx); + if (FF_HW_HAS_CB(avctx, flush)) + FF_HW_SIMPLE_CALL(avctx, flush); } static av_cold int vp9_decode_init(AVCodecContext *avctx) diff --git a/libavcodec/vulkan_av1.c b/libavcodec/vulkan_av1.c index d0f4019248..adaebb2818 100644 --- a/libavcodec/vulkan_av1.c +++ b/libavcodec/vulkan_av1.c @@ -572,11 +572,11 @@ static void vk_av1_free_frame_priv(void *_hwctx, uint8_t *data) av_free(ap); } -const AVHWAccel ff_av1_vulkan_hwaccel = { - .name = "av1_vulkan", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_AV1, - .pix_fmt = AV_PIX_FMT_VULKAN, +const FFHWAccel ff_av1_vulkan_hwaccel = { + .p.name = "av1_vulkan", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_AV1, + .p.pix_fmt = AV_PIX_FMT_VULKAN, .start_frame = &vk_av1_start_frame, .decode_slice = &vk_av1_decode_slice, .end_frame = &vk_av1_end_frame, diff --git a/libavcodec/vulkan_h264.c b/libavcodec/vulkan_h264.c index 84bcef7933..f08a107a36 100644 --- a/libavcodec/vulkan_h264.c +++ b/libavcodec/vulkan_h264.c @@ -558,11 +558,11 @@ static void vk_h264_free_frame_priv(void *_hwctx, uint8_t *data) av_free(hp); } -const AVHWAccel ff_h264_vulkan_hwaccel = { - .name = "h264_vulkan", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_H264, - .pix_fmt = AV_PIX_FMT_VULKAN, +const FFHWAccel ff_h264_vulkan_hwaccel = { + .p.name = "h264_vulkan", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_H264, + .p.pix_fmt = AV_PIX_FMT_VULKAN, .start_frame = &vk_h264_start_frame, .decode_slice = &vk_h264_decode_slice, .end_frame = &vk_h264_end_frame, diff --git a/libavcodec/vulkan_hevc.c b/libavcodec/vulkan_hevc.c index d56252399c..672694a19d 100644 --- a/libavcodec/vulkan_hevc.c +++ b/libavcodec/vulkan_hevc.c @@ -952,11 +952,11 @@ static void vk_hevc_free_frame_priv(void *_hwctx, uint8_t *data) av_free(hp); } -const AVHWAccel ff_hevc_vulkan_hwaccel = { - .name = "hevc_vulkan", - .type = AVMEDIA_TYPE_VIDEO, - .id = AV_CODEC_ID_HEVC, - .pix_fmt = AV_PIX_FMT_VULKAN, +const FFHWAccel ff_hevc_vulkan_hwaccel = { + .p.name = "hevc_vulkan", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_HEVC, + .p.pix_fmt = AV_PIX_FMT_VULKAN, .start_frame = &vk_hevc_start_frame, .decode_slice = &vk_hevc_decode_slice, .end_frame = &vk_hevc_end_frame, From patchwork Wed Aug 2 10:58:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43080 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp562206pzb; Wed, 2 Aug 2023 03:57:44 -0700 (PDT) X-Google-Smtp-Source: APBJJlG8iSr7d3z4QJKmg5r0avyguXPcfIwQRi+0IEoq/5dxUB8BGZZoklOhjv11PIrG4yJd3RqT X-Received: by 2002:a17:906:189:b0:99b:f59c:9d90 with SMTP id 9-20020a170906018900b0099bf59c9d90mr4377092ejb.44.1690973863957; Wed, 02 Aug 2023 03:57:43 -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 z17-20020a170906815100b0099bd8c1f67csi6134868ejw.499.2023.08.02.03.57.43; Wed, 02 Aug 2023 03:57:43 -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=M5q7l0EN; 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 DFC1768C5C0; Wed, 2 Aug 2023 13:57:40 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2015.outbound.protection.outlook.com [40.92.58.15]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 71C8168C124 for ; Wed, 2 Aug 2023 13:57:34 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IkdXQ4V+8zW0zZ4cPHIuhj4qthk8nwedt3UbXYH6szJNBcHbuBWkvRkeg5FQMB20zIFBjJknhYPxCmMQEMdeG7qFuygCuHUD8JUiui27CGkHTakhupLK6XWwDELqih6MjYuLgIH8MVYgH2EzAri8z4bJHJKYEiSEnEVKiquskGH9DdDZFkmJFD3jaWTVX/V90HlGBa28b3PL6Oqsu7w7f153iK1PRF8ttkLe5UdXK3ONFIGj8WZVrI9YzGApktKg4DNKZdXYvgVZo72JhFdGS9EP00JDXIyAiJqPPVmp0gI7xopoF62Xza5yFaNY+Xrp9Su0/EYP0H9WsP13+CBsMQ== 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=D0z2dCooiK43vaHcWhmfVAiiQsUrb20wFpM1jmkldBM=; b=Vy+3vdMldg6WBWjKjb9yVHEicBma+BIuA782k12Y1EevBlke62krznR18JZNRcSF0U2RHQKq9AmhjdRkfwOICrqYANLKHlMJTmw7R6q2p5WDJC+7M0rh+IY+UOIlL0me+zfk98Ozhm7hMF1/Wvv1MbRxeGAPgcU2T3B1CtWtwrok/IquSipThErm/sN5OejU3ybzATgrkQys5OosBaLTVySe/We4ZQD1/rzYF7t6Qi7+z6llHybDLZwDpx8BtC8uct+loRQ88vjnVooK1zsrUPEvpXcrqPDgwaGoggG5ryuJsWLOY8O3PHwmbs6LMdBM+MTckdl5C9ooahlGrptYUA== 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=D0z2dCooiK43vaHcWhmfVAiiQsUrb20wFpM1jmkldBM=; b=M5q7l0ENYIsUKtzVXO0vOwyyF/L6ZfvpvXMEx2hHbGv0000Cn6YNtDcs8moFiIXhU8yehqXjcS2d5UL3g9M7tSU30RvoS7B9At7JIuZLD2W9vBDEe2sUbbs7L+nvzxqbdqJXGgYticm/i1nZ4jm4YucLFqy+79P1KGVJbDAY6Q2yFUd57dr2FabCtKRmehXb1dBeL0BbVr8U/zrqL7XksmKFjUBiwr5gRou/78zHJyLogSlKo/CSH4+VvuDtat6YFW+f7qpC+GVNOjZK+5fsyWIa1EL1WsmC7a0+8PS+TNUHFi54e+M50GO4dQYqtd57wVjuWUheYDj14rff1ffgLQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0159.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:322::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 10:57:32 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 10:57:32 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 12:58:28 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [/TJ4pDcbZqma8/7e09xJKKjeeMVBLTPiIPyVJdd+pnM=] X-ClientProxiedBy: ZR0P278CA0085.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::18) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802105837.274253-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0159:EE_ X-MS-Office365-Filtering-Correlation-Id: 83295d67-6c82-43aa-65da-08db934745a7 X-MS-Exchange-SLBlob-MailProps: feAVlmA1hHXwRcHDQGHDn7T/r8WG27jtedGw/G1h51Ey7f6/ObOM438hAJhHXRLBKp8pr9ZKlFTl5FOS1CFL9Z8u9lg8TWVLh1wii7iph5dPcGYGP/oqcdG3JWQCnj1QvIqYPSEfJkkz8DBhTb6l2TPR8s7FxgOOgFK52EllL8CFHSPHqZFgfYGoisoO8sf165zra0jfANJOVl4Ezosz3NenB+F2wZPBfFF2afqBA6md5QcAkPRz+dqdXFUAOU+0veJojNK/Vhlrfmk1vbw4e31rylhMlOhvlXgc60WAEGd6X6a7QWc5tNoujRTX1CKmiOR+0eki7rfFTx6yrQpGjR3G2l09i8qh51M9XwM6E14BL5YU9lemzL1+moAbUL7dIL7BBNrypMkxpoDVukcHYEPZWSCip4j7V3YeXtEWD5tM5YfyWeTn9Tti3l+/6NqItHZ0n5Oh/1B/q95jJcXraVcyVpyCT9IwC5E02TvKF+bNfrV8EmFyt8z6tj5WKH/EJ50g7Ii/4VOcOF6jt8ubx6bhidplvzmzCdBFsc0ErDvDog8fKJ5AeTAxPPhwMXs/es9txMeutdzXZ3OK7JdEV5PRo9wbIohMoTQI5wr954+6EE2t2tMCdHs2C+0ZUCwh1LZCVc/TT89t+xCwvFBCpUmP63/dHehsUV/Jl1mD700J5vY5wGdqLoZ6tQlX5m4pXKWVA8cQM2x+b+rDcCv9VQ== X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7jxyn6rMU8hUmGavSeMswF0RTJFSC9xJRnIz0+jABNrO7FP8LI8cuOEQLU/4keLQjbaZTcYJqP1qjdKVyjeZBiuaBGE/quOHi+PVlH4lEf+r0OROlQeS/NaNlBBWfhc/PtLizIDrkpTbPmEuczvDqWLXXMSfjHW/Vidc0u6oRViJoIeU0M5dySAOmp9gJTTCrhXJsk9GZIyWc5Yikmsab7i1Z9bl9pZzSuaRN5OQFTQt4TUnVUZ4QD8JeqlelVNAi8F1Jb/KAbyfk+Jtt3vdTZhkQq9VbeLZLTZnuXtccj8TBscaaz6G+Ml9gmIzvHT0myw6BBLW+o6hWcG7gsg3CdvxNpe5O/t7Lh+383u6aKS2A24gDYwxR9k3gsevgWu0mWMdzpPEJCpTL5GMwHvIpBi6L6LmntTbnH6SyjfsABpMaantW7FJFnFi8ohEVsDultdJ/w8OaEcROunF5H6Joq5e2o6T+6jwVI+Gi47dEnKXxV+6wsBmWds3+WlQWxUrhv5o1Kn0KaIMH0yKqIHJns2HiB4EreygJD466KlaaMOiLQFvgkdcM4Q3Xfy7Qhh0bCfTQlUQyaPDyv62Xr2EeFIVErPt3tq4wNcRf8bBRx+aH3KzwzkodhJH0PyHA5Cl X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Y5DxLcU6z1A3JtSAqEZiTTBVTifJvWxHvS+4W/3BDYjTGGNXy+/x37g1GCj1c7S8OXW61RQLKY11KDy26cG8zzQUIXtT4kfGHD+jY76+MMyZxryZ9P9EZmAU9J3VeJvKfnZ+TZoTc3mQHyjrkB3cUtyyAFpnUK1bi6VKYfb3HzdgtcxvZGBABjSczTehDXt7tus9Z371yWXAVkuV3GfT1cmFW5hGMXnWFlB4X4w8nayUFbUn9+gnk3sFXi+AWyDpY3GMAUCWAPlGAZjMs6WYwd0QF4CjZxYisU6+3fdtL7kQABfRmBr9B8FuuXqaA0Hop1EGCXr3ZnrtBUfDIuE3MBBwPCeNXLu0bt5Ul06MPb2cxWsdiQ/rVoQ1PfAa5RSG1OIlxOZvPotCsSShGolentzcScnVQJQBn0anyN1qRFZkzq+cXDvRAYre6G5yAExSxHftdwcfYsNTJf9cOWsVSyCRS5IxLqnfgf7/I2BH3+gOBg3VDFXIctIvDRmdOJ/Ize/hPXSOvdsJcN9TiUVypCAbnaXmT6UX/ZpWHbfS5RmYgD5Nm4tQofUJbHlI1tWaFxsxuaiov39R+JUI67I95G8gLZ7XmXQgDyAE92w4uIOtrLs9l7WhJrVSrfBz1IdtPBJZgMfrESVFNlUYs+XDVpFQtuEZ6fBu9FJYHzrn7pThFA/JLTI4PMVyRb9POdu4JsRtvsdVVNrDK0+kEwNp88yginU45yVYgTPNuCIEu+GeEVsX1ZcLipvSKrWKWDFh6bLrJWm7LNR3p/2pLvx5Y0Dve0Ybrikxom6mSwip75r6uiyl1qWH3orDftJCsdOke4mVKsQPGYBbIGbQ2DBmvz7EGS/1vd8/mU/nF0CJ1MxIMDGnAE243FpAv6CW/TTqB6ctq1bCQbiuGe/X9Fvw308T0CySTu/cwLDzcLEyc3iBfD+D+UqUCNIIgVzDqRH5PsjbMXpQmNSWdIeGQCtgjfyeNiNPzdvqdUwnz0WpD9REl03ds1IyIG5/6hsrZ6j3DM+dIm0GsjYsQGocvzxTPivWg7NE/Bz8MSm32a2pBrIEqT6XnKDr8Oxsu9P3vH7eAvihgmDkaAF/ivnOCdLG2HVKSUiJ8MkDEmk0+l0UhV9UCIzpT7En+gmY6CCJaQfyGK5CeBdakl337P6/EUypIaNE1zctRcgCmU+D7bX+XtC1Xy0jJSk4u0U3r7usLRZOgfaNEOk7Ymf/YEaEnwwdIHIws5/rF6pA9ZBGnqnoNnQIfBIksueDyxMloQHp9H1m X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 83295d67-6c82-43aa-65da-08db934745a7 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 10:57:32.8246 (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: AM8P250MB0159 Subject: [FFmpeg-devel] [PATCH 06/15] avcodec/avcodec: Remove unnecessary forward declaration 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: IgtxCWP6FqYo This would only be necessary if this header declared a function that takes a (pointer to) struct AVCodecContext as parameter. Signed-off-by: Andreas Rheinhardt --- libavcodec/avcodec.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index a2680256d7..649411ac79 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -421,8 +421,6 @@ typedef struct RcOverride{ */ #define AV_GET_ENCODE_BUFFER_FLAG_REF (1 << 0) -struct AVCodecInternal; - /** * main external API structure. * New fields can be added to the end with minor version bumps. From patchwork Wed Aug 2 10:58:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43089 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp572173pzb; Wed, 2 Aug 2023 04:13:50 -0700 (PDT) X-Google-Smtp-Source: APBJJlE5U3htq6t97dp7/YzLGV3+jjUfw/c4Cs2gRbep9RYlURkjcctikPvkV/0NFrsUIqaTgQf7 X-Received: by 2002:a19:4f54:0:b0:4fb:89f2:278e with SMTP id a20-20020a194f54000000b004fb89f2278emr5032679lfk.68.1690974829891; Wed, 02 Aug 2023 04:13:49 -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 s3-20020aa7c543000000b00521d2b05963si5723871edr.427.2023.08.02.04.13.49; Wed, 02 Aug 2023 04:13:49 -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=rbGTOnUo; 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 EB76168C60F; Wed, 2 Aug 2023 14:13:46 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04olkn2080.outbound.protection.outlook.com [40.92.75.80]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 090D768C5B1 for ; Wed, 2 Aug 2023 14:13:40 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OBdfrdNb00NSDJedY+hoJ+nIYJcpWyGppGM2tvUerV1eQjdX4uUgcCcrMLu5KGSmpuIS27TyNZ+4vZUMznjvOEnZmaWzTeIgx+73z7ZL2DYFHbg7BWRcBs3wD7Hulf/icFj0t63NTThhpxdq8Y+XlXKpBq44H0/58VFXlEpfy9zWo+zw0i6VTzdOowxTkf/IbWSPpiNah354qCOuh7/zrTr0xCbzm/d3ELl5iibp/+qpX7zi1NIT7yHyyoc5hHZeUT9f7hKC0G/2r0tQPGk6UsbR3eQg8gKRpWN2tnjkRe9t9XYfGxm2i6FRbFF8FrOjNaB9SSEEyZctYjr86+6HCg== 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=4KIhmofKLQWUfwNx8bbWW87a0p/PpOqo7poQKpACULk=; b=iIEgGCJr9kGC4laKmfqPy5TGzwb5jryRCbw1nkqikG96OrKDfLIGx0c5vjSXnF62keFc7H6A5i+aNkShdYqiB+YQBRYwwHfEgKWTs9zLYNyQlSt86+BLOR7dlRkCT0/IlpuyhWglk7QNAlja9Iw+VAfpofEVb6Opu18hngw7VurZUziwSiXCXHFMdACqWYBVhf2cFoDB/uuNGISerwiBx51ESLt6N043kVGrnZskINDbodsrjmBFahtFMZ9GOksGIrw6Ix1RVDFJR+FY6T9nWDjtExiGc2g3JslSDSMSka32iOxDaJml6+WuK0p2H1d0g+onViG1ZhMIWg72LTpgtg== 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=4KIhmofKLQWUfwNx8bbWW87a0p/PpOqo7poQKpACULk=; b=rbGTOnUoJcU94xuS5+6HZSvILwu/+n7EMpf4UpCOxZkldaNTkg/Pa+IzCxZnLuIirjy8S9X8XKtvKXmWchG+AJmwe4nLvaNNxNHxZikT7aHwTP0xLXS3oD1I1hMMbE4oF2ehdnDxSV+nMiGdPVGO0dZm22j92diUimwAOlh7Qh+l+67CiaasZ7XBk8/w1oxdAj05AtecDIYauNhk7rNj/4b0M951jsIzwvr+y+cFICBlUnJUTvgwTWorpEJDE7BB46xH7Eu5mL48gpv2Fo6uzyYrcvrZ7CONemIOpEV3YWlsWzHzpeJy3tt7TCIhtBHLEVNyQDWGasRRsJsRLaFqGA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0159.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:322::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 10:57:40 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 10:57:40 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 12:58:29 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [joAZgOsO9daG8lOHAo5Fq6wvQTarTu6xPZQ0DfmccYc=] X-ClientProxiedBy: ZR0P278CA0085.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::18) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802105837.274253-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0159:EE_ X-MS-Office365-Filtering-Correlation-Id: 23b245c1-cd4c-4e30-7ef6-08db93474a4a X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmrpbvZQFz99JeucukBOVYaZNwpxn95yATPWtZOgVbJcBIODVr7RHOkQFfxWUehxTCXnCGP4mu/lRsJcDby49a4WzsSUfpjTQPX5mPxuSD61B5FS1fA2tuFRc4h0B+m/eLVtdkDT2YmolOFfIlLQ4d/YPvIUE2jKL9mFUdbOqmtp5HCaxfl7gs6+NtiZxUxDUdIVVsOtE57EAYHSW62xpsGSpSWEZfW3hn4cr35REBBO/UzU4wTZ8P2xrlZGxKQaJa/YvS3NFeZ1l6zgsE2plXTHytRkQVQiqyFWCiX6iKix+v9gXL2pBl20qja8ccVmS8AplHtG4THCyHiwthVUZtlB1/vo0N1uxl+BSzNVhMVmUZ3YBIDbxWGPq3VdPtgzn0wFFpUO85GsbEER8eUl3/JK7WhGIPSHET4L4MiIjR36thN3vZh7ih05GItaMPLUNB2blcrCwPCDV46e3r0yhyb0O4HwvLXtdIbbDRZm4afHqZiXTrcli9SoywOSVK2+VkhqY2dMFh9vCFKdv11wjsyf3oV0zvpIeUpDr7FkI0rC9oXkHlGmES8d81ClF3AbbZq7Nii+7Ce+2WUlQsEC7Nl+AcGash0EGI2ICxw/hRLxisZjgJPzWnTMglSUMaAyeWeuY5+mma2PYzl60uaUDEHpesbUlCzMTMwlZqInyTuw+dF18COFBBSDSohcZqJAyPcfN8j9AYfFiYOclON6+8zlbjzS+44l6CubbayX7KMIZxQ3RJJV2sP9Q5ujMpOJOjs= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 90oFPKMlbwwKa0yg/uzGt4M8jVcrF2gy7deYGJ7E/5xV2N1EMEDLBmXQVGWn/t9ocnQ5mnh5Kf19n9FFoGgSuQ5F+oppQtfdtvFY1uGWcO02ByIS34QAkF6vPBQD3tnVzfMFP6CE3Av6Le7rGmzOB+AVCPUGY0mgLKb7Lz7Z7T39TNNohAV6teSjoY/3cwXRuU0akmezAc2jOndv1ZtfoqFO5C9iwohkXc35hjsEynEt3SyLVBut3zX2qg1Qs4PF+1zXjrnTegCTXSRJyyjpT5DiuAVuA3Vg2qFadicg7aX+3hGL6U1bNoiXOmR3dFewP07/J9CxBDf+UzcexgJMP+VXr4DGgxAvGHsjA6C4IOgEvJiG3HHLxcrA5i8GhM32VZhfYRr+0KD7Yqhozw/rnLFs8aUJ1ZAXQ2TIWokzgv81FKkz6Ne+UbqZN5WETxvotf51VajzI2Zwds3X6wFuHmiC4QQOdoq0jGXNftXo8nKrpgczen/wzW3JQ4iBzl3gM45Or7HM3bwhLHXJs575kHUtkaOzfF5Nu5/gqdp3lq5qUe7Ba9L47g+2O5HxBAa4RKcyvdLu4CUsrIXMBRPAq/0O7hNokBjJsUzozQdDDfbWM1alSu2N7X1No0PafGgB X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ikt9FdALjkHE1/2SDnyBdFGPG00ReSLoR5l0EhJk39hli105EpXfLIc8f0m1T4rRSLds+/VWYZJOsqFRMMLDfDLyJXxjA2sOQwyUgYFLqHlH0U99u5szqvbPha90AdWkFiPNjPvyOG4sZX4C3+Bk3KKlPaHg5XpLvxQfjaQCfpjmemv3WH4iqn79wsBOcrpA95auKK7WiFa6x2opqb4NOfCmvh3XcT+nzGEY+aIqKXVXHT5lgldrryDS7kijqfNgMDr47Daf4pqd2vrHh3iaLc8gUDb51X0dYHLflBH+CHUQKkv5TAiZpuhHPrn100TDJiQRglEbd84bUXy+9M1zwaCPlnXazHGSfOnx7ChkteDg4EmeXLDMPkSbDqXwWYIvwc5r7++jwvGyuhdHfXM1TCGMftRpfDNJXLtS3qnjhTuIxm1UHrfR8IxkmQRgD3krchBHrBpc5YU2izU4SCvde05BaOYTyLTPyD7N2SpBV6tNpM6M7SMAljessgl2rOWjAFc4kH0I1KIDRYUvk5IF0NP/7vQb8csCO3Haj2MtI0riwDeX3m2Jorc3DyE55gedi9xJQ3v4MB8NV4AScN6QYjxyEbA9Y6JTwvOs3QwwNfSEJEzGpSaxcouDa62Es3FugR8VITWQA63aygm9ewnukcb6X/aJVbZbpBEn9MJBQmtkVfNBJ2fxm/EvrcEkk87Fldt5NFfiek2HizaAX29B5uQffkAfvI5DHfxLOdvivUn3BSC9VvgjbpzgQtT6DJ9y0zjpg2B5i79eM+yqW8+3Nh3PgvhT0AA9qK3ZAoQ/bcqxniTnxztYGgNxJ1NetyXA3lvqParJFIfKkd5axKxS84O15SXvF/9l8KUEvuLu4p/XzDvroSD63xncGMH9fG33R3UFgKzX7H1QzMg8dZp6fh+ypmVqvDjD1lJqKDCk1JwXmL7e8jjwKFK5+BdIgdvxLz9bCjSRnNzGPNNALQ8gcBj4nHrSdS7ZPF0ah6oB9e7dsduPC8g9KIyHEA7vCNfkfu7CmpZYtgFCwZxEJy4mN3mAvvSuShu8JShDPL2amL3ES1BVV5ryysGRFeEvftR0JS/68maAMy87subvecrADvT+FXauyW1OLAUUxBYNPvB++SJRLOz0yqT+cxVBllHmIlQQS/tFm9MI6zBC4JanjLPIjNJDn26z/Y/eyu30WezTw0joRv1c+8mQZO+am5kNS5UFV8G2/dOO4trdSATWy9x+tP39xWtIodwGfM1LswhI32GEhji34HFE9Yjrvevi X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 23b245c1-cd4c-4e30-7ef6-08db93474a4a X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 10:57:40.4723 (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: AM8P250MB0159 Subject: [FFmpeg-devel] [PATCH 07/15] avdevice/pulse_audio_common: Avoid inclusion of avcodec.h 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: 0tDVSaRAVT2W It only needs codec_id.h. Signed-off-by: Andreas Rheinhardt --- libavdevice/pulse_audio_common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavdevice/pulse_audio_common.h b/libavdevice/pulse_audio_common.h index 902795e4f7..9def3cb796 100644 --- a/libavdevice/pulse_audio_common.h +++ b/libavdevice/pulse_audio_common.h @@ -23,7 +23,7 @@ #define AVDEVICE_PULSE_AUDIO_COMMON_H #include -#include "libavcodec/avcodec.h" +#include "libavcodec/codec_id.h" #include "avdevice.h" pa_sample_format_t ff_codec_id_to_pulse_format(enum AVCodecID codec_id); From patchwork Wed Aug 2 10:58:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43084 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp571319pzb; Wed, 2 Aug 2023 04:12:14 -0700 (PDT) X-Google-Smtp-Source: APBJJlF53NT9tfljZrqqvd7Cb35jksl0S1KeOt5JCROLrXddDqgeATrs0IIDc08PDJ/NsMOGZjaI X-Received: by 2002:a17:907:2716:b0:99b:f857:9aaf with SMTP id w22-20020a170907271600b0099bf8579aafmr4705338ejk.63.1690974734197; Wed, 02 Aug 2023 04:12:14 -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 g2-20020a1709064e4200b0099bd39dcec3si1102022ejw.95.2023.08.02.04.12.13; Wed, 02 Aug 2023 04:12:14 -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=m5dtqooR; 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 989DD68C5B3; Wed, 2 Aug 2023 14:12:10 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04olkn2054.outbound.protection.outlook.com [40.92.75.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EDFA068B26D for ; Wed, 2 Aug 2023 14:12:03 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HAbwUFdp+0DHdxBwzB/xv2HQki8SzIMIJTyY2azgqRyQdIi/+tjDQOQ5sLLUROOoRphtHwePcuVtUpByAugtsWWyRPGtayzZQkrUh7a+uOIRiATmhhynOy9o1H54twt5MA/5gPC6+YlXZFhAR0PlXLIHJWtkyEICTWP3HLAzE10wsTfI3YP0nhuvHKzD8Cn9TJ/zWYqwCTa6FZAevjTqBiAD7Bt26Xz6trJX9fc0aCyMqu7VBEkum0f2KR4ASo9E02aJzfb3Nbn5q6eGvfxSOlUslu39bktJJ2CqSDJRm0OYREP8M6oha+bI8gKNlk088bzsfhXMzHOXbk2i1MDYtQ== 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=dG0bBbkL/eBpF9zhlPZSPXue6z/mSEtuODSsph4rmhk=; b=B4LS6sJTO08yK+SVLnB/TSXKXh7XS4om1ZBHRcS0AidrKPeyvFuf4+eUP+6OrSpgMVnZptBrsdtSMwlLZp6ojGl/fOU3JIxA3vQzGGRMwH/ii+6fWZs6Cx7ML0k/Iw1jUj64pBFFH7z1+uMdyMOTpMeIhCL1LWdgkG91F6oq4VnEfNyB7Ub44NpWOf8sKIA7IVgc1ZbKu/yONYxPhRKddYrR0e6GnVKoLxxhMvIuCjxVZh/2+qTPDrvhqN7c6AF/pG7L5nJGmwgESc3ZMOwR0B+7NvUL+oUF6RSsyxjJEG/Kue5xJ2L2G4eB4TVHBmz7sNf6t1hZg8bRtQKQ/IofmQ== 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=dG0bBbkL/eBpF9zhlPZSPXue6z/mSEtuODSsph4rmhk=; b=m5dtqooR93e74BeD8gVtWXSZhwkCJPe369ViK3TEwfQGEKxlfuO4ZKIhaPvLEITylOidfpYmg2ZB+q5ipuvkbG6yMb/WyXaMKqvFAT7MXbOgg8bwuyXOqkGO7XkXZi8cgzWXcg+RgAiEsQqJXuMOHC/jjXV+P32MmCW9OLgyL6zfIdyP44BPbqaB6YaMJrpKIpUAanzRdPwIMkr74F7RzGgvj37JntmM++8/6PKaqWUzO8AywOsB5dqaVMcV7vELw4PlA+So+UYfoqX2icxBYKyqr/1fa5drQ7HXmba3sh6Ffrbe61p0fxFHiumEstzcAQb5uxIKHZuSx+WmrrL+BA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0159.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:322::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 10:57:42 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 10:57:42 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 12:58:30 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [cooTuFvBg7hpK8RBpuatwc5NE7N8jtXB2xK2vQsAybg=] X-ClientProxiedBy: ZR0P278CA0085.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::18) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802105837.274253-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0159:EE_ X-MS-Office365-Filtering-Correlation-Id: d9a1bdf4-6e3f-4631-8e1a-08db93474b49 X-MS-Exchange-SLBlob-MailProps: ZILSnhm0P3kJA0tFqbs8en6JIaQ9AKh8Nq6jJaxQz2Jn1qkMc69q2T9hQ4HCplv9oV6bMxo9/RLKT3LPvilmjUXYQGroTpOnnSNAuRZYAWsc/2pa7nUM5FhR66s+3C5JKrGnM7JkJ3dW7Mxzlwc7NYUE7IgqA3l1AiFWEWCDd9Zq7TEU8Mkw7W3k8hPMq7dRHcIdsFoHq0SiPMHr8LJ+N0NZACyCosXa+ki09Xeqxbg+JJNxdN+J+JbHPR/K+gZG6xfw33QdHNUgFgqf67ChcmlRFLhXZ5kjENA8m5QrJT+8tlHQwGR5d6NlviiDbVgLxcAwiVoO9lBUQ8MafYMTDSO50LPPhxq80bTqM4oFkfYDFLbB33fxxEP6mND95JWBMIfdFxbFOnda8dwElxEadFCv5sxs3zHg5P0ixKDIo9xkrJWM5hHyHT2TPxIQyHciogRsVG1ImZzSIQN3qZc7PJh5SFOC5LCeQCzLVwSbt9bQm2Md5sGxkDaKpvkhQaevT7KfqxjVGfSaJIiGYe7IBp476rSrrAc9L4beKoTwUbjL8/CkUqRNcUb0DeuXB39B3FqaeJ4olw2XuonZ7T1HIpgzjoVDr6dslu+Z0d2snOSsLVAVnALMiaGgJCA2Y94F7YjaHM0y2mbKK4vpfXdBvRgOOYt/CkChW8A3CQe1x3oalPcM9jmf+WAvqAvS9efMPVBZF77z+qDc9SoJprWHP0iyPO4NOjRiWyweI23xfWg/LXRoZafxhf/Q68i5kXX+VYcJlKE3nbobfZ1VpUYWAV11g4SDJy29 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qPYnRU7+Xq1Pg3hR6p9NYseg9a9naiAWlZe2zD5fxGcDWS63rWTLJeaVdGPC2k3JHB0Pz5YLMRXCdkK3FkH9NzmUOO0P6ZFLc72Ap6Ar9PwP6qKja0o2Zq/DrANieHhCVJPtL7oTgfvPFX2TsBjamsgM/iBkeqSjQOor31AdP6l7toK7i/e0PrH77KrA2LpONxSXlosKhPZavMbCbzq94mbK3EeBUpF8F1HH58lULpp/ySdTGGGOK4j2y62b8HoUsv9kXl3QuTIH+jXR397n4+5bnOugu5bcsPPbCF7SnU1tBxw7Tf4pxAv1qClX7oKZzJqmZC5xmx7OIY1zDSmTuXmJi3oiZ7VUtulII/XdECrj2H7UOPrw/gu46Irx4WwbQq3YtMw7ur/5NPRtpD+feyu5GdOnrAHjN6VlhSUsRBsT/tgz0LLQUYys8oxWX+cKvSABS+NYTWqbUP4XvkPBJ/OvWMXrPbOq5BXUmpg5VS/QW5q/2VeDZpa5AIeB2HcrPROr6iC6CNr4n+CZruFBDVJNXzRtZB4tdVCMIxfk3animB5Wul3sfLrpz6LhIZ5YfboAFiUItD/9DYNS+5FPZ/uwi9SS0dUQLV9XuhmL1jrW/NB/Yd63XFnoXwDvP9pO X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: MFdn8ATA/xSNKVcRnxsWRpFF3A7bnDfXlSeRE0pAfZjoy8P+rZPcc9/lpQDGmPDu+ckfeas1hv5TGIer5PghsZ5DzPSb3L7zz0JHho3h6rTMmhfc+DRxB99VZd3aivwcoSxc26fEbOTFKWNbUaJoMaoRBdwbrnMSjd/amkuLGXTAmoPS7aUB1TZOEwzZxDKwZfvGjjy0LUNENOw8cB2dNbzYHuEdz8TOO78xaJuYh2/X0DrCEnhIskMGLCX41eJsxjHIsheXrQMj3fiV3Nl5Cl6eZxWaHq1XaOvXzu74YSop4rlN5UD2WZyEFhVWQBOIMxDHeBSIwHoeiROi+8GtPnfjB1+aJNVn4dEQyzvFCVm9I6y62AZmzrhJeR9IHXsnWkQJkmSobaBwSYBpS1eEus92cPppErKjT/r74STFb7yN3pKWq/CANSBT/SGDvEccziR7x2Sttikm8HsUaUSlrTD/X3pbBQ4EqN1ynAHZcjxWDKt3KaeY6mO1q/DzJUg7e286NjLzCI/dHr66kpWWsqAZPhOslQ8if4a0UtUxMPis2/wuQAPpOFUBKH9Oj1rf0ixO20PsVCGwvDNN+7hYpe47nUATf6Kz9KKGcN17P9wBg6ewoME4Zry7/TTRAjHxCnr9udkUeABiaTx9pNiWTWk1EEOvAYdVhPDphMBdCAS2zA/+HmiG78smFhWrrQoKRNdUAbyqoS5E+SBWF5L3S8HffMP5sjaCckc9hpjsvSzU4sLI1yuxgSfu1jVddbNtZuxuYhVKFcoC6alMOOjUAVxvaUth5y0QqRRaS7pXIXuNhg/lGccjJPvPbCJaUary8Dm5nV727xIO7wSNHp3CmPrrzzfhbUKnFbo+CCCPbrxA7r9lEF/9usdxP4P9uCWmn8MdWW0KDdSVbbuymjPl5+OeZWGWCJ9tBOM9H+T4YoWoi+u6wIDTjr6YRtpy/q8UDCGj/Q6hxvfYiX2m4VHDlU1blqU/zWY9KWVWojfUsegAHi0kmLjZ67xvLMN9FJL5HiH3YAizjwGBnneQF0/1XvNTpvnBoqLuis+6XhTNYXIa7QKjzyVtd9p0NUWIp4cZAQiuii/D8SO4va6pmJXMaFF1ga0rt5+wp/bg6QULojpFbiqA2BQ7Kt9OhElbEUhFvoacvp08lB8qZ/DzePgZIzzy0YCKKKdxwg+nuTdp8P6dTwjClIs0VSBXYg1jY8W88c0wJLSv+ACKlJgUMts2xyILgB51qV+YcM0/LyAaFitfc1HDkV0x7Zg3esWgiWn2 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d9a1bdf4-6e3f-4631-8e1a-08db93474b49 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 10:57:42.0705 (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: AM8P250MB0159 Subject: [FFmpeg-devel] [PATCH 08/15] avcodec/tak: Use void* instead of AVCodecContext* for logcontext 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: xLMiRbQ89Xrt Avoids implicit inclusions of avcodec.h in lavf/takdec.c and lavc/tak.c. Signed-off-by: Andreas Rheinhardt --- libavcodec/tak.c | 4 ++-- libavcodec/tak.h | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/libavcodec/tak.c b/libavcodec/tak.c index 99678e9887..91feac5451 100644 --- a/libavcodec/tak.c +++ b/libavcodec/tak.c @@ -144,11 +144,11 @@ int avpriv_tak_parse_streaminfo(TAKStreamInfo *s, const uint8_t *buf, int size) return tak_parse_streaminfo(s, &gb); } -int ff_tak_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb, +int ff_tak_decode_frame_header(void *logctx, GetBitContext *gb, TAKStreamInfo *ti, int log_level_offset) { if (get_bits(gb, TAK_FRAME_HEADER_SYNC_ID_BITS) != TAK_FRAME_HEADER_SYNC_ID) { - av_log(avctx, AV_LOG_ERROR + log_level_offset, "missing sync id\n"); + av_log(logctx, AV_LOG_ERROR + log_level_offset, "missing sync id\n"); return AVERROR_INVALIDDATA; } diff --git a/libavcodec/tak.h b/libavcodec/tak.h index 5e43598de8..1d1ee645e8 100644 --- a/libavcodec/tak.h +++ b/libavcodec/tak.h @@ -29,7 +29,6 @@ #include -#include "avcodec.h" #include "get_bits.h" #define TAK_FORMAT_DATA_TYPE_BITS 3 @@ -151,13 +150,13 @@ int avpriv_tak_parse_streaminfo(TAKStreamInfo *s, const uint8_t *buf, int size); /** * Validate and decode a frame header. - * @param avctx AVCodecContext to use as av_log() context + * @param logctx for use as av_log() context * @param[in] gb GetBitContext from which to read frame header * @param[out] s frame information * @param log_level_offset log level offset, can be used to silence * error messages. * @return non-zero on error, 0 if OK */ -int ff_tak_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb, +int ff_tak_decode_frame_header(void *logctx, GetBitContext *gb, TAKStreamInfo *s, int log_level_offset); #endif /* AVCODEC_TAK_H */ From patchwork Wed Aug 2 10:58:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43087 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp571813pzb; Wed, 2 Aug 2023 04:13:12 -0700 (PDT) X-Google-Smtp-Source: APBJJlHqPSLSOmyMcNQHl+qz2h2V9jQXXk1N7Mk8Qyj+pB8cMoY97Cyl2ne5A0slMhgu1n9iC1Oy X-Received: by 2002:a17:906:29a:b0:992:a90a:5d1f with SMTP id 26-20020a170906029a00b00992a90a5d1fmr5075096ejf.68.1690974792276; Wed, 02 Aug 2023 04:13:12 -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 u23-20020a1709064ad700b0099329251046si10985494ejt.14.2023.08.02.04.13.11; Wed, 02 Aug 2023 04:13: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=@outlook.com header.s=selector1 header.b=BmbDwChX; 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 CC81A68C5A9; Wed, 2 Aug 2023 14:13:09 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04olkn2109.outbound.protection.outlook.com [40.92.75.109]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C277568C5A9 for ; Wed, 2 Aug 2023 14:13:02 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L++DT4+J3Hyoipaz7UZfhPdYlCU13l/5VlwyDUvHcWwmym5gMokefTLM4FFkwRdZu4CsY9acLppHAHHvh+I1Fka7SnZNOrwy4pwpoL7xFEMf6bwKj30q27oNF/6/P66M4ozdBkhvQwdnK4JFLtKp2umWGAWkWEBcrPTBGlDzfy9VJdrzoxFtya3YqIlrEiJfov10SGjuZ4tRobHvTmpBYDa89RK5+Gxi23KQNUgcr761Z0c/mN3QWZ16XhCcVReGcLkWPPptZaSBOVfoIVDpZVJ6Rh8kgIzpI5IljxIgLN6g7NOQROWt/hHlMxHeetVAt3d0g0rdW1MuaxMqpOZ/fw== 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=nr3bkPh5vkUbpe7oWHwuq5O0qTBOzbP0pCNykN2QKD8=; b=L4t5jcbkwzaxf1fO4gbUjAnQSa2eY7bLvVxn7vqGvuG4idS0EXeefD0va6zHEBfX3/4DF/hMHAWQ0qagYshsn+6cmrRPcf9kU7KQVXqVRTP0beDJzPRssGXyPg7tUY0ifVXmaoW1gscNV/tXHWSQEiMserOwwRUI+QY8ELAGxjHsbpIh1WZcjQx4fduSHxQ07UHOadDYpHVSl0wcv0wY5shn3NxqqpW7zlu/59qyigErVM+bxqvNOCkrtBFztLU1CCPlVjGcNXG7FQiouBF2lNyXk4CRuRCKMoi5ZjKV7m2h2F+ugOBS1TGuMDxyR8Hg0Q1xWxUnJuhiroYpgc4Z1Q== 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=nr3bkPh5vkUbpe7oWHwuq5O0qTBOzbP0pCNykN2QKD8=; b=BmbDwChXqedmzCsgM/4HgELZtRS3bCsLgDfNFUSW/nFLysBzFHcQi8/EtMtxdQ6lrsQCyYW8Hg3jsEYz8f77p+N/rtGMBIfci87Dr3htgL95blq9cHQNXCKxSl86I+gapDBHPs4S+p1RD01zT/SZpuAWQ7Dwksu6uZ2Zju1Uvr0XtieMXCeRM7FX9jBui3t3oKoNfWF9mVQDD6gb7RkwVsE/OGlvGL1R+z2+mTb0HYylyhCH1AygkUaN32FFrFIXUle/+wY/TOfrSYq9MDD9aBejPZhJgvoyOCNznJViWhW04RMgUyPYosVswamp16AUipZjwOpxckWRZwikB9sHCA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0159.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:322::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 10:57:44 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 10:57:44 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 12:58:31 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [FpYtst9dkD5vgixyuucorg+FsZCgnpKewrPYehbV0B0=] X-ClientProxiedBy: ZR0P278CA0085.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::18) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802105837.274253-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0159:EE_ X-MS-Office365-Filtering-Correlation-Id: c0b310c6-4b0a-4b12-67ca-08db93474cdc X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmrpbvZQFz99JeucukBOVYaZjdjaRvXsqnY8qkEN0YUMNaJPXYn1VrvUH5DE8N/qzjWA89sg4Iy8GT/cc9B6mNEb2Hf3ozrDEgfJXKVHDK2sY57ofIVbQQwF8pyEsHGK57Uh90CdCyGNrHNILsvoZM/HLR3BbDKl5Oif/BiWsnri9Ph9zJOCXFQpB59qMJ7J+3fbbtt3M3soHwNgtrVr+Y5sPAYX8LV8gwJKE0vruV45UtsZMXCNXZlKcOIsoJX9qaYtd23C5sMlo5BhiXfs83ml6zq/CLa3vhYdaEqnEHXQMiSpej0B33Y2wYK233pObOU/G02CY/eL6jR9D+9QRpGJTpeb1SU7D9rma3rSmHnuXHCk3B0cZ7EdNz1+XTrMLgnQ6k0jgdWP5OtBgRekslRaLLgwmUsXQu5Xhmts8GtuZRFmG+2Npfm41zDd9QVZMlXJNkqLcyFrYcXLPVt+b/QD83+a2bEMo3juZa1I5J65b98s2DfQC65UNAdBKfT1rC3UwlrSons9+0RUkt+iONYi3dSG64E4MWaZDwa4t/kbNC9B32jaTw4UijOH7Fk5L/XmoB4rmgzydA5p2oAiHZ4YxYhm+NUU1Pu40J5c/kFEPqosTP7kClQNq9551jmxSw98kUj4S9s39zXBrKImi08j+4igMCl8LvaNwq7MWVcXV0iTMym9xz+xKX1jOFcEqhn9hXVvT85bSXgk69SxnmQdjP+y4u57AWv+IDxHtG3EziU/lfT95ujAcqKYl64/w84= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yZLFG8DWFNjb6y9RFEko0xZycYrbJ5uAQOwcphMpJiWhywZbUFyqQcoU9uui4pjqA97z8knhmxWmU63BqOE2NoJgVsxgr2SXmFI8katYQPhL5JkT1wkmG7f0MU9UVrev1vmfKp6kP1cDEnrZwFrqCUmTraVFdapGrs5Wp3sXiWQsnJIRxp5r8kI6eKIlZLdrmDWOxX1SdXrYmWqYkPgEAKOZlMXiqOmRtABwma6JknZGQZn/TK63lemBhiIrKJSjTcLJicadVH5yh8VkqXv4vG8YtRwbrAvpJLE7swc/XdmlhH1VFjd6VvQZ0+LHgEc1k1fjYavS/12aE3frdxagcpno0taertPx5EwWAv2jdNpTQ6AK+Yagp+SG8tO6hN/agf+8z9gbmSSRlhnCnexTZzcbhOGiv+IPOGpDnDQo1fnqkaRgqlEflOKYQYaXbdDARhH+UyBIqfHPVJnsf25LIapI0g2cmxdQRKSm3QS+n4PGXZScV42H3ZhnUVW2ZQtjK1yl3ql3LVf/vdUf4wUUYNvuJV7QF9oRpfgqRJ5f2Z34RwSQMEPiUqcFj9IKuFql5JdKdtDKH6rC3WevM3sOeo7hFL8Y7cnsmm8XSpk535AM1tX29dmdL86lcF4+y+vK X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ojoN0OiglKVw2FvL4YlzAixm8rjsQiKSbrPtxhCzBWHX+gO82KYIIBdEQLQwl+ORfZhoP1Jh24hq4SpKNKGVv/BsHlaptf+WPrc8rTR7nf5vw9hqAfiPu6/hxEg4tNxcxAdn51mDPdp4ulHKpoYOwy/isjTLXQ7BRjCpgy0//g7ZXmlUGWyBM+jfM4NmJdqwJtqLbZbRme1D1Eo7pwMsqbwdiN3aq6BfJWTZowWbytCgoqHexrL8KfVtsXuRFe/2KRi/EYJ97dNkQmmX2JFfIkc7K8qAh/UPMG0S26UbgfHsZSukJYhBwPLHgTaQ54iQrgNX683a6jU1MGAM/LYrwANStcUcdiysYg9z4rzg/kjsWrQiQ8hNwmvTMzBhky1PLyYJsnn8YokXp8c64VwhORksK88/+occhrO/wnLFH2KwbGJ7UFBRvPDho+U/gUHmwH+DSBS5DPdNiTbccrlSoY3DgYxT9TILV00PWJZLPui1x/KpElGypVC2zRga1nYzUhpx3k8VZMuAvI6NA4SuL1wuHp4TbzCrUj9U1/U/G0WTze2Kd357zW+nWMmT+AEmnmcDMDz8jkRKfGvftxBgbF8fIylBhcri6nEJjRWNTH53bVI4DMR2rZY/TrGq3Iv5H9KVjLNpvcj2Y51PToyUBMrW23H3jcKmv4MYBWPsU+7nbvWYZmIeB4GdQ5b7KvrSclrVbW+qOpGevneyEjRfz7OxASU2oeEemWsh5twNXEhYAlrVky18mswCiiT8K6R3S6qKxiCgvhyFL1nB0Akz3DfRjVBOv2U6749ZulgDC1DsgvaXleS8jgtAsOxA3rDB1Qk7yqp1yOshUp5W9rmG80Rwo5QC9jw+AvXZKzoou+FMyG/d5UAWDajPma+MkXakhFH/A1ypbwH67xQF8t3lUHWfYu0n0KIhMadLR354UDHQe1ALnO8/z56M5iHucRv7DpuZBjd93iyg650ClAeeA11mdg+4Di7mvi7OzWZBP+TDy/3nYtgHL/eeSk4j3/v87NneLVOD/SS0wnMUqnFaez2Hpx9QWDM5JaXNXnx6BomzMuG4YzGMP7fpEWgmlzjE2l3oxutTHCOsYroaF/4j4yCB7djthBekf3YfniL+RrvIvQYGTOouMs868kK3xGcZ0I/MVl3cgiuhW/Jhu0msM2b88QhJSLEhJW+5uGhcI9d3zFHMqTbwU/5zw8qtxeLIkDp86kmf+vRkoqAoUFC9T5mtbI5qsap9A9cmkTJr47HaQxtrqjefEmMpC2HBmxO2 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c0b310c6-4b0a-4b12-67ca-08db93474cdc X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 10:57:44.7538 (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: AM8P250MB0159 Subject: [FFmpeg-devel] [PATCH 09/15] avcodec/h264dec: Move inline functions only used by CABAC/CAVLC 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: mtJovI7cGsfr Most of the inline functions in h264dec.h are only used by h264_cavlc.c and h264_cabac.c. Therefore move them to the common header for these two, namely h264_mvpred.h. Signed-off-by: Andreas Rheinhardt --- Does someone have a better name than h264_mvpred.h for the destination? libavcodec/h264_mb.c | 1 + libavcodec/h264_mvpred.h | 132 +++++++++++++++++++++++++++++++++++++++ libavcodec/h264dec.h | 132 --------------------------------------- 3 files changed, 133 insertions(+), 132 deletions(-) diff --git a/libavcodec/h264_mb.c b/libavcodec/h264_mb.c index 0b31774556..32d29cfb4d 100644 --- a/libavcodec/h264_mb.c +++ b/libavcodec/h264_mb.c @@ -34,6 +34,7 @@ #include "h264dec.h" #include "h264_ps.h" #include "qpeldsp.h" +#include "rectangle.h" #include "threadframe.h" static inline int get_lowest_part_list_y(H264SliceContext *sl, diff --git a/libavcodec/h264_mvpred.h b/libavcodec/h264_mvpred.h index 46ae2738f9..bc9fef50e4 100644 --- a/libavcodec/h264_mvpred.h +++ b/libavcodec/h264_mvpred.h @@ -30,10 +30,142 @@ #include "h264dec.h" #include "mpegutils.h" +#include "rectangle.h" + #include "libavutil/avassert.h" #include "libavutil/mem_internal.h" +/** + * Get the predicted intra4x4 prediction mode. + */ +static av_always_inline int pred_intra_mode(const H264Context *h, + H264SliceContext *sl, int n) +{ + const int index8 = scan8[n]; + const int left = sl->intra4x4_pred_mode_cache[index8 - 1]; + const int top = sl->intra4x4_pred_mode_cache[index8 - 8]; + const int min = FFMIN(left, top); + + ff_tlog(h->avctx, "mode:%d %d min:%d\n", left, top, min); + + if (min < 0) + return DC_PRED; + else + return min; +} + +static av_always_inline void write_back_intra_pred_mode(const H264Context *h, + H264SliceContext *sl) +{ + int8_t *i4x4 = sl->intra4x4_pred_mode + h->mb2br_xy[sl->mb_xy]; + int8_t *i4x4_cache = sl->intra4x4_pred_mode_cache; + + AV_COPY32(i4x4, i4x4_cache + 4 + 8 * 4); + i4x4[4] = i4x4_cache[7 + 8 * 3]; + i4x4[5] = i4x4_cache[7 + 8 * 2]; + i4x4[6] = i4x4_cache[7 + 8 * 1]; +} + +static av_always_inline void write_back_non_zero_count(const H264Context *h, + H264SliceContext *sl) +{ + const int mb_xy = sl->mb_xy; + uint8_t *nnz = h->non_zero_count[mb_xy]; + uint8_t *nnz_cache = sl->non_zero_count_cache; + + AV_COPY32(&nnz[ 0], &nnz_cache[4 + 8 * 1]); + AV_COPY32(&nnz[ 4], &nnz_cache[4 + 8 * 2]); + AV_COPY32(&nnz[ 8], &nnz_cache[4 + 8 * 3]); + AV_COPY32(&nnz[12], &nnz_cache[4 + 8 * 4]); + AV_COPY32(&nnz[16], &nnz_cache[4 + 8 * 6]); + AV_COPY32(&nnz[20], &nnz_cache[4 + 8 * 7]); + AV_COPY32(&nnz[32], &nnz_cache[4 + 8 * 11]); + AV_COPY32(&nnz[36], &nnz_cache[4 + 8 * 12]); + + if (!h->chroma_y_shift) { + AV_COPY32(&nnz[24], &nnz_cache[4 + 8 * 8]); + AV_COPY32(&nnz[28], &nnz_cache[4 + 8 * 9]); + AV_COPY32(&nnz[40], &nnz_cache[4 + 8 * 13]); + AV_COPY32(&nnz[44], &nnz_cache[4 + 8 * 14]); + } +} + +static av_always_inline void write_back_motion_list(const H264Context *h, + H264SliceContext *sl, + int b_stride, + int b_xy, int b8_xy, + int mb_type, int list) +{ + int16_t(*mv_dst)[2] = &h->cur_pic.motion_val[list][b_xy]; + int16_t(*mv_src)[2] = &sl->mv_cache[list][scan8[0]]; + AV_COPY128(mv_dst + 0 * b_stride, mv_src + 8 * 0); + AV_COPY128(mv_dst + 1 * b_stride, mv_src + 8 * 1); + AV_COPY128(mv_dst + 2 * b_stride, mv_src + 8 * 2); + AV_COPY128(mv_dst + 3 * b_stride, mv_src + 8 * 3); + if (CABAC(h)) { + uint8_t (*mvd_dst)[2] = &sl->mvd_table[list][FMO ? 8 * sl->mb_xy + : h->mb2br_xy[sl->mb_xy]]; + uint8_t(*mvd_src)[2] = &sl->mvd_cache[list][scan8[0]]; + if (IS_SKIP(mb_type)) { + AV_ZERO128(mvd_dst); + } else { + AV_COPY64(mvd_dst, mvd_src + 8 * 3); + AV_COPY16(mvd_dst + 3 + 3, mvd_src + 3 + 8 * 0); + AV_COPY16(mvd_dst + 3 + 2, mvd_src + 3 + 8 * 1); + AV_COPY16(mvd_dst + 3 + 1, mvd_src + 3 + 8 * 2); + } + } + + { + int8_t *ref_index = &h->cur_pic.ref_index[list][b8_xy]; + int8_t *ref_cache = sl->ref_cache[list]; + ref_index[0 + 0 * 2] = ref_cache[scan8[0]]; + ref_index[1 + 0 * 2] = ref_cache[scan8[4]]; + ref_index[0 + 1 * 2] = ref_cache[scan8[8]]; + ref_index[1 + 1 * 2] = ref_cache[scan8[12]]; + } +} + +static av_always_inline void write_back_motion(const H264Context *h, + H264SliceContext *sl, + int mb_type) +{ + const int b_stride = h->b_stride; + const int b_xy = 4 * sl->mb_x + 4 * sl->mb_y * h->b_stride; // try mb2b(8)_xy + const int b8_xy = 4 * sl->mb_xy; + + if (USES_LIST(mb_type, 0)) { + write_back_motion_list(h, sl, b_stride, b_xy, b8_xy, mb_type, 0); + } else { + fill_rectangle(&h->cur_pic.ref_index[0][b8_xy], + 2, 2, 2, (uint8_t)LIST_NOT_USED, 1); + } + if (USES_LIST(mb_type, 1)) + write_back_motion_list(h, sl, b_stride, b_xy, b8_xy, mb_type, 1); + + if (sl->slice_type_nos == AV_PICTURE_TYPE_B && CABAC(h)) { + if (IS_8X8(mb_type)) { + uint8_t *direct_table = &h->direct_table[4 * sl->mb_xy]; + direct_table[1] = sl->sub_mb_type[1] >> 1; + direct_table[2] = sl->sub_mb_type[2] >> 1; + direct_table[3] = sl->sub_mb_type[3] >> 1; + } + } +} + +static av_always_inline int get_dct8x8_allowed(const H264Context *h, H264SliceContext *sl) +{ + if (h->ps.sps->direct_8x8_inference_flag) + return !(AV_RN64A(sl->sub_mb_type) & + ((MB_TYPE_16x8 | MB_TYPE_8x16 | MB_TYPE_8x8) * + 0x0001000100010001ULL)); + else + return !(AV_RN64A(sl->sub_mb_type) & + ((MB_TYPE_16x8 | MB_TYPE_8x16 | MB_TYPE_8x8 | MB_TYPE_DIRECT2) * + 0x0001000100010001ULL)); +} + static av_always_inline int fetch_diagonal_mv(const H264Context *h, H264SliceContext *sl, const int16_t **C, int i, int list, int part_width) diff --git a/libavcodec/h264dec.h b/libavcodec/h264dec.h index 9a1ec1bace..beaab3902c 100644 --- a/libavcodec/h264dec.h +++ b/libavcodec/h264dec.h @@ -29,7 +29,6 @@ #define AVCODEC_H264DEC_H #include "libavutil/buffer.h" -#include "libavutil/intreadwrite.h" #include "libavutil/mem_internal.h" #include "cabac.h" @@ -44,7 +43,6 @@ #include "h264qpel.h" #include "h274.h" #include "mpegutils.h" -#include "rectangle.h" #include "videodsp.h" #define H264_MAX_PICTURE_COUNT 36 @@ -649,136 +647,6 @@ static av_always_inline int get_chroma_qp(const PPS *pps, int t, int qscale) return pps->chroma_qp_table[t][qscale]; } -/** - * Get the predicted intra4x4 prediction mode. - */ -static av_always_inline int pred_intra_mode(const H264Context *h, - H264SliceContext *sl, int n) -{ - const int index8 = scan8[n]; - const int left = sl->intra4x4_pred_mode_cache[index8 - 1]; - const int top = sl->intra4x4_pred_mode_cache[index8 - 8]; - const int min = FFMIN(left, top); - - ff_tlog(h->avctx, "mode:%d %d min:%d\n", left, top, min); - - if (min < 0) - return DC_PRED; - else - return min; -} - -static av_always_inline void write_back_intra_pred_mode(const H264Context *h, - H264SliceContext *sl) -{ - int8_t *i4x4 = sl->intra4x4_pred_mode + h->mb2br_xy[sl->mb_xy]; - int8_t *i4x4_cache = sl->intra4x4_pred_mode_cache; - - AV_COPY32(i4x4, i4x4_cache + 4 + 8 * 4); - i4x4[4] = i4x4_cache[7 + 8 * 3]; - i4x4[5] = i4x4_cache[7 + 8 * 2]; - i4x4[6] = i4x4_cache[7 + 8 * 1]; -} - -static av_always_inline void write_back_non_zero_count(const H264Context *h, - H264SliceContext *sl) -{ - const int mb_xy = sl->mb_xy; - uint8_t *nnz = h->non_zero_count[mb_xy]; - uint8_t *nnz_cache = sl->non_zero_count_cache; - - AV_COPY32(&nnz[ 0], &nnz_cache[4 + 8 * 1]); - AV_COPY32(&nnz[ 4], &nnz_cache[4 + 8 * 2]); - AV_COPY32(&nnz[ 8], &nnz_cache[4 + 8 * 3]); - AV_COPY32(&nnz[12], &nnz_cache[4 + 8 * 4]); - AV_COPY32(&nnz[16], &nnz_cache[4 + 8 * 6]); - AV_COPY32(&nnz[20], &nnz_cache[4 + 8 * 7]); - AV_COPY32(&nnz[32], &nnz_cache[4 + 8 * 11]); - AV_COPY32(&nnz[36], &nnz_cache[4 + 8 * 12]); - - if (!h->chroma_y_shift) { - AV_COPY32(&nnz[24], &nnz_cache[4 + 8 * 8]); - AV_COPY32(&nnz[28], &nnz_cache[4 + 8 * 9]); - AV_COPY32(&nnz[40], &nnz_cache[4 + 8 * 13]); - AV_COPY32(&nnz[44], &nnz_cache[4 + 8 * 14]); - } -} - -static av_always_inline void write_back_motion_list(const H264Context *h, - H264SliceContext *sl, - int b_stride, - int b_xy, int b8_xy, - int mb_type, int list) -{ - int16_t(*mv_dst)[2] = &h->cur_pic.motion_val[list][b_xy]; - int16_t(*mv_src)[2] = &sl->mv_cache[list][scan8[0]]; - AV_COPY128(mv_dst + 0 * b_stride, mv_src + 8 * 0); - AV_COPY128(mv_dst + 1 * b_stride, mv_src + 8 * 1); - AV_COPY128(mv_dst + 2 * b_stride, mv_src + 8 * 2); - AV_COPY128(mv_dst + 3 * b_stride, mv_src + 8 * 3); - if (CABAC(h)) { - uint8_t (*mvd_dst)[2] = &sl->mvd_table[list][FMO ? 8 * sl->mb_xy - : h->mb2br_xy[sl->mb_xy]]; - uint8_t(*mvd_src)[2] = &sl->mvd_cache[list][scan8[0]]; - if (IS_SKIP(mb_type)) { - AV_ZERO128(mvd_dst); - } else { - AV_COPY64(mvd_dst, mvd_src + 8 * 3); - AV_COPY16(mvd_dst + 3 + 3, mvd_src + 3 + 8 * 0); - AV_COPY16(mvd_dst + 3 + 2, mvd_src + 3 + 8 * 1); - AV_COPY16(mvd_dst + 3 + 1, mvd_src + 3 + 8 * 2); - } - } - - { - int8_t *ref_index = &h->cur_pic.ref_index[list][b8_xy]; - int8_t *ref_cache = sl->ref_cache[list]; - ref_index[0 + 0 * 2] = ref_cache[scan8[0]]; - ref_index[1 + 0 * 2] = ref_cache[scan8[4]]; - ref_index[0 + 1 * 2] = ref_cache[scan8[8]]; - ref_index[1 + 1 * 2] = ref_cache[scan8[12]]; - } -} - -static av_always_inline void write_back_motion(const H264Context *h, - H264SliceContext *sl, - int mb_type) -{ - const int b_stride = h->b_stride; - const int b_xy = 4 * sl->mb_x + 4 * sl->mb_y * h->b_stride; // try mb2b(8)_xy - const int b8_xy = 4 * sl->mb_xy; - - if (USES_LIST(mb_type, 0)) { - write_back_motion_list(h, sl, b_stride, b_xy, b8_xy, mb_type, 0); - } else { - fill_rectangle(&h->cur_pic.ref_index[0][b8_xy], - 2, 2, 2, (uint8_t)LIST_NOT_USED, 1); - } - if (USES_LIST(mb_type, 1)) - write_back_motion_list(h, sl, b_stride, b_xy, b8_xy, mb_type, 1); - - if (sl->slice_type_nos == AV_PICTURE_TYPE_B && CABAC(h)) { - if (IS_8X8(mb_type)) { - uint8_t *direct_table = &h->direct_table[4 * sl->mb_xy]; - direct_table[1] = sl->sub_mb_type[1] >> 1; - direct_table[2] = sl->sub_mb_type[2] >> 1; - direct_table[3] = sl->sub_mb_type[3] >> 1; - } - } -} - -static av_always_inline int get_dct8x8_allowed(const H264Context *h, H264SliceContext *sl) -{ - if (h->ps.sps->direct_8x8_inference_flag) - return !(AV_RN64A(sl->sub_mb_type) & - ((MB_TYPE_16x8 | MB_TYPE_8x16 | MB_TYPE_8x8) * - 0x0001000100010001ULL)); - else - return !(AV_RN64A(sl->sub_mb_type) & - ((MB_TYPE_16x8 | MB_TYPE_8x16 | MB_TYPE_8x8 | MB_TYPE_DIRECT2) * - 0x0001000100010001ULL)); -} - int ff_h264_field_end(H264Context *h, H264SliceContext *sl, int in_setup); int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src); From patchwork Wed Aug 2 10:58:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43085 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp571401pzb; Wed, 2 Aug 2023 04:12:23 -0700 (PDT) X-Google-Smtp-Source: APBJJlHIspESUYcHrjRxwLQ8F1ClC0pNzxEtUgBpChediJ3bKouxj7w7/hWDnxq1KsVVeCsprqsS X-Received: by 2002:ac2:5a1c:0:b0:4fd:c399:eb25 with SMTP id q28-20020ac25a1c000000b004fdc399eb25mr4464436lfn.50.1690974743065; Wed, 02 Aug 2023 04:12:23 -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 g11-20020a50ee0b000000b0051dd401bf24si9901628eds.447.2023.08.02.04.12.22; Wed, 02 Aug 2023 04:12: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=@outlook.com header.s=selector1 header.b=qXNa8C4z; 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 B4FDD68C5E1; Wed, 2 Aug 2023 14:12:14 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04olkn2054.outbound.protection.outlook.com [40.92.75.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1E04768C5A7 for ; Wed, 2 Aug 2023 14:12:09 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ak+z3A+Y5V1Njs/zc94bX2aR+W0SXyx3LIFolYeKzbixBsqeDwRRXmZH+lTEqPLwmDFO3iMdPClXtjfjk61gXlvwanABgV3w2NRdy9tZcOQRs9PEhTwWT01Wgc7m1ylGE1Pv9HZKZoRrmh2jgAomq1kJaOcOq0NFQ2e6Zxq6UL8rZSqkUvfUVDbJpFfQRnAv5cLTS3o7VKKaoF8C9F5LdGgOedDdhSsoDF6syXCNAvod35GN2tPdet23LnCqOWUXmX8JpGZNmSI2YJyPpwov5lwVga9XAh2HYyj1Gc077Onrp91h0WnWmKgwGmCNcOhxvadeS38K2spIcPpcQQ3IKw== 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=0AHPDGvoFTwycuQZbfXyg19k1n9exz35dTcOvim81G8=; b=kyilqDl/YHlnuIEBLSv8Ycj+Nw2BIuWV9qhDkBSczmJH3eJUc1d6+DztV173+jBpN3A57GrCSoqAwJamwlrDcFDjbWz6isKQ59mT8Mn3e59nkQSmobiQUGDvupvTJzNQnUN3uJn3+mB1Lm9wGXlSuGSI/QdIVMXxRoe4EYLfsf/IxzJrbOQYLdfq9HANFXE/xGg+RwxBOIBlKYpjjqA2BcyOrIrQBFcJiHLdXr1g0Np8ad0if5tMOqB0A0j1/8WQNr+9e+ZwYHGRcEJzd50ykR7r+eyRdMWEruy58ySAEJiQUDwk2PSHRRH0ZB/HPJo06BgcXbAVi0FluIOua+i4rA== 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=0AHPDGvoFTwycuQZbfXyg19k1n9exz35dTcOvim81G8=; b=qXNa8C4zcaSMaRhGAQ0bO0gGEENqyEDsfttIS/bnLlZz3Vd3Insz3zG+23959fRL4X4HnmfAyRaLzGeG6fEdQtOn8l5jtyhxxfv+zcAZMnjk7rMhQbw7Zo6aGijh3sN0C6ijpMs9mJpCNfotWrp6+Xp0RpyBtN+18yzkjEeuGVWG8ShlTpvpOJHiI2spczfnQmZoS4g3XEACYr9UTN1ugSS63w2Sm0rsZnSnKKVQtXFV3bmYTsE7XWrGdo8ydeqjrT92rAJ2MwG6QXNUX1hbUxV+qzs7/x8Wd9QGkPAlA69yV/IJnqNwYdOZBK9kNtpItksQpTgOT/MVYLhVS4OQFA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0159.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:322::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 10:57:46 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 10:57:46 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 12:58:32 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [jOVML3/E+tgU46dATPMAbiXqrKSmwSi11K6yngpYYEc=] X-ClientProxiedBy: ZR0P278CA0085.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::18) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802105837.274253-5-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0159:EE_ X-MS-Office365-Filtering-Correlation-Id: 26cb3c2f-1902-4031-05d0-08db93474da7 X-MS-Exchange-SLBlob-MailProps: EgT5Wr3QDKweTUlmISQeL3+BBxlmv2aXacxen3a8yaA8K0UmxV0Ew+nXJQ8JZzufp+A/70A4yS9QhnzGLMMYuTjAyLVemljwrTET5tRvZXw2EinkeDWhNDK9yOI1rONXrCU0LVL6zzHx4GwJMnFlPhePtUobmIWto8ZSdRmKPIDBBCKpAbnV6Oizix/nOqARZLxqtxPVBwzzjq5XYeSIybdwgOjum1IFJgvT1pd0FCeis3aw/1J2f03SV4VSsvIC+BqF0HlBoaoTiY4N/ENKlS1ODYUcCq/W9ISHbNmi7Uo5YAtrivPeczqlrT7FXRl8Hwvyz2ec8ML+jxLKadrmRZlqOsl2Y5XMaMuWEH959ggnBss+RRzMMZlW1xkzO0n/3XTzNoXsMKtZsxXrEJY/XZrG5J+Y/Yza8ko+N47NuaqlRE+cti+U+eyTpds1gI/9+cJsP5Z9zBRrEoBIipe3F8n+fkKo7E/P7eBiWz5Pkgsiylr+JLRf3Y5b3Ot2wRjH57tK8+Z2OA56v7g6/jgCTwgGNgbkmQMXE3mGAj1tLhlMW7c/QT+YDjJ5SjXl+R5mKJlTbiAi9nAq3G26jZ+V0Nw4l1kOj2ovgJMZHJ4vO+5krKEDtvSxV6tDI6XNrJRI2wkUpE4f0e15hPCvP4cWUdAGZceU3cZzupjT/yWblPUQH6kAQZv7u1udFkyXelJ+eA2KiT0TklquJNZuG1CN792ulF5VuuQ0wPgeWV7ekto= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Wmq12jfArRTs4ho1gz5ysBbyssmft/1c//m6ip6/KxYZTQKY7hDNu14lmCj4HhRcUKiOmmMVhNI7+Ap2nBXx0l6MDjPACv+J2D3FCWtiT/fMfGtf0/z/7JF7qOTtprYPhn6HvTu1zGR4c0Z1/o9qQDuBd65FPjL+dAdggbJhHGoVYIe0vPVsEwg/Q82+ycyLQTtKWFWRJQErC0QeSEXPmyIwtMUyCrAnMC1yePg+SxOtKckFmpIjGnpwj6i42ic+S9jKFXC11Cv2oGvjllNeKnT9cIahVABRLmRd84gJxNWeF+Z55yzpvdFl/dbi9mj0lnuDtLxsVxkkjGnG4pgzaPIMdf6jaey8q89QlynVwlGQEraSuxtYRlveMsQCdcaPdUXbptTFAu5cFKzp8i7ZVkkw5dD4s70tuChK8YkmlGyA8kNYeAsypq4KYoaLlqBuWS+wh5drSHv4RrsZRIsaMZqT/luMkHMhyuX0t4klrbwRFYXUV4MfTKjX6Ib+6B6WxY7aMom4u4j8xFmCbMRwsIst4l6Ql2sbsE/lADk9q2NNjoasMMVjHZSm1q/cmp0Y0hczdDs0szeJkjTn8zK1PAGhz73B9wvnql3GvLgktx3t7mcz92bb47md1Y60jzYz X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2e58VGfaNzIMaCJij4x4NLeuOxnk/O686316pRIOR2hJKgn8CE3dJdh17dU/VfqiwJDjkp8fKQ9SzAlBAm+9ZeHkxcC/4er467BQbeSvU+WqMggYev6AdvDv5p0RQP/L2wnwQ3p/QgwQ7pxrUasm6kRP9amm5IKDGm4QPpku2etGzo/4P8EejZKQB52Y1XNAz/Q5kAL+fOK9knRPT51qLvFrb1im+zry+i2VM68IlgWvzRYQ5MB69t7HzD/yLuqL7e7p0HtVF1pBGZWMCdJ6lJ+ED+D8dr9uKK3GG3Y7XDHQivMYIxJVr1Q8cZvysGaFfrZwaCSAkycbYBphgCrF1wFVHgP+D3/S+o8nopCUNX3gIWo8HaY0SKRIQSNtjWZLQ0P82o7Y9yaRLA5TTZ0Q4EA2hvdohKljQbJIUbcUPKoNTBSWnCfvljPXdeNvhzG+yf6SG9QgCkoY/TUOR9WRe8uO86UaNh6S6aRX1EFNdUkFS+hd0fehNYq+rw3KGBZJp8iAzUGoGDtrk2Y0BVKk8Xp32yzFTYPUaVL6gU8noaKjydFgtGtMYVHa+IPqe0Vm5Hj3Wr6QOqfrJjAgtuJELuaEAJ8N/U6V9y9vFf5dYLaT4D9n/c/e0S+D4eESVqo7rtSPXddTKTsmVcrHMDZllpi1lIdP9VY3atEVwODsa/hJrGl41gC0GqPTAUyg0Pgs+7bK17wchQxdMB9qpj46ZtUpCRuKTrkUGvBqjqgYToNNo2y2AOT99gsvtEEXd1xf2Ve8M8SAxq2Hvc1RxfKfYjJb6picgj/+nIbDRbypFecqeW/o0FzHO4RhCzVyVp3pwWWsjtnx3OUA2qEwHSvwj5Y6SC5vJsPRBZTGtPQeNXspybXJjKh+ViCdBF9iwHNqhC4ouSXO32fPoBsW6y+U4lf1fD/M6O+6m37p2FxrkJPzZgKcUi2tBXyFsFBopdMvF3N7o+sUO9ShKSjU75puQA8xJw77eoMOKOmeWqkXdG4t9V4ewE6x2DQalmgCPTcqisaRceYoqcSGPpa8PzoR5tnCLnqpAokq0TpjsykfNpRi2dNMatvMoQRpHNqcVr7RfeK5zktm7ewLgLJedzkxfSqrXIkcVixwWqufIXWzGRejdAJNt3zK9F9WGLkOU+8TfwfYiUSMdAnoCLpB4b3V+relzJbkq3gUzh/gBpZ+DKK+S7u35zTsI8ViljzZNb82dLy3YWquYST0di2kgTXRNge9OkYQF0ht1MYe8AubL+3dm1HoU5JaV5Kn1YPisuSn X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 26cb3c2f-1902-4031-05d0-08db93474da7 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 10:57:46.0961 (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: AM8P250MB0159 Subject: [FFmpeg-devel] [PATCH 10/15] avformat/av1dec: Remove avcodec.h inclusion 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: F4DZjK4eWJsW Possible since 60ecf44b037c7961ac4e69f83ff315c11c5df922. Signed-off-by: Andreas Rheinhardt --- libavformat/av1dec.c | 1 - 1 file changed, 1 deletion(-) diff --git a/libavformat/av1dec.c b/libavformat/av1dec.c index d0d53f41f7..2883b320a1 100644 --- a/libavformat/av1dec.c +++ b/libavformat/av1dec.c @@ -23,7 +23,6 @@ #include "libavutil/common.h" #include "libavutil/opt.h" -#include "libavcodec/avcodec.h" #include "libavcodec/av1_parse.h" #include "libavcodec/bsf.h" #include "avformat.h" From patchwork Wed Aug 2 10:58:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43086 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp571513pzb; Wed, 2 Aug 2023 04:12:34 -0700 (PDT) X-Google-Smtp-Source: APBJJlEwIKRitX/pBcJA+bSuPJjF7apLORroSqQDAgOeI1EEe0C4jJNl2ZRS/oKPJaQuG6S+rIMu X-Received: by 2002:a17:907:2672:b0:99c:10e8:52d7 with SMTP id ci18-20020a170907267200b0099c10e852d7mr3831536ejc.31.1690974754725; Wed, 02 Aug 2023 04:12:34 -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 j9-20020a170906050900b0099bcddb371esi3003278eja.260.2023.08.02.04.12.34; Wed, 02 Aug 2023 04:12: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; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=VF8MsgOi; 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 B87AA68C602; Wed, 2 Aug 2023 14:12:31 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2011.outbound.protection.outlook.com [40.92.59.11]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BD48568C5A9 for ; Wed, 2 Aug 2023 14:12:29 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I4glMRHSujXDlOZUUB6ZOcyHKOLRifmGnahlEYdH0HFEl+30NRbgj6XAGIjq5T34WfN06BBQILYd8QR26cFjzri9RPh/EPVg3gCejA8U4IUMC0eYaM2OwLCb4Tr26y3tNfPfZHPe9Uz9g7z8AIamsjIgKwv6Vr3kOSeBTHoC4HErDQQftvS2PhUmNhvgvh7RoH4qO4d3oT7Tdpszmm8TkgRWkTGceGd11eHtOCyaDBry18WZ3w6sWJ/sG8q7PTdA2GAYrxOP47ln+Cn2QXhlP7+2LyF7bASPXfZTrgVlFYcWgdwkDp3whHP2PmX08fmQKEGjBRi5vONXY/+nkt5eQQ== 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=C/pTaCaoYBnHP8qgdthSBVcLbXYA/pyHVMwhli4pE8k=; b=B/cfXbdrVnlpc6RrRHli0deUmSQVEpcBe+TRlx/FaK9RliAj7JZovLuKl1z1S9OH0b5/PWovilF86TYUfxaZJkRNgpirdlsXWUQ3Sn1cFFOogwHw/A5at4WwhTbBwrY6zn+5yDxRktMES9ewnBi544JdsXKz1PzV7aTmF0nzwm7M9G6EJbWuLznbXj6wAfOFpmNJenGSy19j6mWgqBMZ7mJl7xnFw6ebuBTVUKqHt9isgKfKVP0TWEOKN/j/cx7TUreWlWJbQI5OnUTb6Kt4ltRDoFxvf+A2F5mmplg5ED9UyVagkQAAZN89XzYYNnQjI8ejUpfJATJ3jQ+NI61QbQ== 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=C/pTaCaoYBnHP8qgdthSBVcLbXYA/pyHVMwhli4pE8k=; b=VF8MsgOi1mJ8ezt+b2RXytx50Y6yyx1NbtTiMBrYLW7U55mn7r9u4oYBvFKUrSRqAZ1hh+xqLwhYqLZu1s8/tACOebVN9yI177JpIVS9jetoAqmw+fwH+7e18JLcXrto9KRguSZpJi9FHR206vYFN7VMIoalxM/Ir8H67Azm/yrDnUSk2sfjAv+PlSOkDMzsPqQ9EHaSEqXnKWgw8+UGUdA8fS7tDUzsinHQn+o4xvelAbo3ssePWIdKbhjoAErsh5gUSR6hCIMDVzygeoVm1x4veHH/BKs3pSn3OGAkC7TNi285nqvfMbgaVtmd3xMYsecdLseIXEGINvCB4BPZTQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0159.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:322::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 10:57:47 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 10:57:47 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 12:58:33 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [Ctbi6ofsrJkJmbxoJJdQaBmYGcACqLann5g3PHW46oQ=] X-ClientProxiedBy: ZR0P278CA0085.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::18) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802105837.274253-6-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0159:EE_ X-MS-Office365-Filtering-Correlation-Id: 19fa083f-a50c-4ad7-14f1-08db93474ea6 X-MS-Exchange-SLBlob-MailProps: EgT5Wr3QDKweTUlmISQeL3+BBxlmv2aXb3vgwZFov3J1bslzugRAvZMKwg0B1H0H3eOUEuKeZIac20x28BOg1lmZndh2m/rqruMrG3mtuIOqtup/ZC1M8bwmH8+jsJBW03buabJWpbmS4lRBeEFqtL5CH7teQTeQ/Asu1kgkZUlenw8VtJMTCGLC5d1TDvnmgaizVfLjeKMAH/Vx5D19yoPUHoeAM7SvV+hXeyOUKOqTpiwmztB/w0OT47Oq6ch+6YTndid6yUadVlrZrVM/hesLKnVDlUmPafkzhPINb8jUI+Qy5RQi6SSMKxph8XEFkUGZg1IOdbgyVunbaI4S4Pu+62AtFopto5lLzR/fyvl283cwwiNrGE3S93yssQimF+DZsj/71AnUnywh/l9zdW+64kbaARNzTrEHvfPQpZsHNgOWiXC5OnaibqxlNO2AY+zD/6rICbzHyavltWiNyy/GmYihW3FXKANv8OOzUahNHofGzT9NrQgHAbEMaBDrLitDP0ZwgjrlbzNkvodnGVH5Z/EuhaP5Gk7tK7cbiE5RcW5JZQ+SksE9tSQTm42EdIDRrAIPzoocc5mYFR5QRWvjG6bXahSxDw/bzvh7E/pohBoU1jzCwVsbCKEMVcZIxlRRYzjOTyBce6TVkDBseU/LxEkqZnj40xREdQ99ob+ZlYT1PcYHtTzXdVfCNZ4lyDyOGFBcnR+RwdxnrXmJAKe7Uq8OoGR5jGJrkyJnbFA= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4aW58vF6EKmNIrUgkm4VpWdLjoKAHwXjltDrQRR7uN94zYSA4ZoNefKmIHVGniHKUQnYbQg7hztzFgkb8ZnPFer1qh1It4wsl4roqiTYPQzx6H8pW+7R9JMp3EEDKzQypflIPj3wPrJM3bKFMzHFJthkvHUtUn6Qtw+ae8v2HYWN05gVeoRwULj3yk69pB58qGyAUebcQK3A5cXv03Hf3Xv4rTSorEpq+npR6R8gccUJ5ePRmLnWUpgB+ASy7uiUf7fV3TSlfjuw3QAgQ1OtCPTWX8clCgWBpDm6AGT6VlUef0nQvLBEubUa+rlGIvmyVcH/0uz7w/Tnd7VRy+NSVCpHw2eWloVKKkQfE3bISGp5ToQ44PvtR22Yss1f31mBHZkJgHH4TrbHV14rGibCfHjZZeSNblYBQBP01PVy1fCyOGogJ7aGmtAkBQFqfy2G47SFyb0RmiGbnr0FHW8iicwpHSdl2gl3Pu107Wx+S3nxtUUT5/rQAQW1JdgUnmcXIQz5sZNsI1dDdBGhhP782/T/2H4/HBd6WkqRVjKPl3E8eEUcQLkMUuNQ35aVU0HO9oaUKOq9w68v7XYdkuE1kSVLHFIiIO/cA0XMPqwouloPrPgoU988t3SefNEqfrfy X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: D3fHRfNgrRlXJiK5L9ETWVTQZeB1EFgDVKsYYslY5Adw7N0F+fPu49nlYuvmB3Usd6tgU/OQUcqrsx08omDiqsUkcGd2uqqoTjWK3EP8EwbV9YJfSV1PmcmM0opFLv7Nk6PTycv9qFWDBzplZkTHMCKkWVVbo4O5BotNMcuDhKbkwKxiG71+nm2xECIR0Gfnf7Z1c2mRwcty1n8nL4TYiS+LvcwJT1GsMeE1TCVycQfNppcu6u9y2RFDg1t1k3urwCursdhlSLIewSgh84o4IoExubBp7KSB1tR27v99KYt0j8K/84ghTJ0CFwpelpMKSh78vdGDwGymL42Li3Lk1NEnb4GdQ0QT4njNHEwZrZzMMkgI6vuO7HcxlJhJpWlXbKr1YrEXRzAVnCZ9TA4sGBzGob7SVBNdJ44bds4EwNXwG5GhhGhxzVX5jUquhrv6x7/izHTRguuayu1yCkFQF5e11QXXyh0C/7h5jWV3l7oVcXl0Dpnfz3X7TuBdboiN7hCy3ayzquqs3CVbigY2HLHIokhzkPTSA1+am75fxVaml6G5A6SFgxe522qPUJ5o4TB6raDCN2hs53DZ0LkUYRoXCEn50+/clRZF885maf1MnbHYolzij0Bu40d+wCUZ5CIwdZzx+Ueo5qt5VmnT0h9ftT3zIQA1Yd9ND57L0F2ZkQPv1YkrXEZ6hUmfTxP5/4RcoPz1vrGguHgT+ytye3uHQ3YolJmV3gr/YvBhqyUwgt5E4WtcG/bKM7atnhNq3lbR8zdpKImAWfaI/RcNcRvW0Tb1Qu7yj2qz26i6d/Arxv+N6LgrxWTnpZfyCszoefJKaSdvtIr209xsOxk1tGcKR623lm8zAFRAuCrS5zAFSpEtTNNOvsj3WHOnjT9SkA8RLjCaEZI5rixb8pQDTiesIxCH5H11S9fHCPj6eNFb4EYha3mvnBOg8aYbbAV2U1jfXj/4K1u/U2m61XMFl2oUosiT5bV8hioJzs0Jziu08km7tuUGAgWFFU4fB4mntIb65MJKUsvcmn4JjGXWENhAMyQ0mncbvjlOxJSHOXW1kgcwq7+YY0Zer6gXfwLsTZJl2vrzz0kjNQKx1jNDwKTLI7gw422pCUXjsz5PzRKkTYbIOKCmVMcQrMCUXJtRG7ARoJooOuUTCu+1tuYE542bJtJVfsqJogb+Eq0jNp4jcUjs7nK3wMM8pR3FIyuQFLGA6tTyUrZy/EcS90JR5UPqVhE/X9P/lHOxK0fEW/xxw798rPbQ7jnw2NCQHdHf X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 19fa083f-a50c-4ad7-14f1-08db93474ea6 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 10:57:47.7370 (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: AM8P250MB0159 Subject: [FFmpeg-devel] [PATCH 11/15] avformat/evcdec: Remove unused headers 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: 1n4jZ7v1TQaR Signed-off-by: Andreas Rheinhardt --- libavformat/evcdec.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/libavformat/evcdec.c b/libavformat/evcdec.c index 6cce174f46..5ace604db6 100644 --- a/libavformat/evcdec.c +++ b/libavformat/evcdec.c @@ -20,15 +20,11 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "libavcodec/get_bits.h" -#include "libavcodec/golomb.h" -#include "libavcodec/internal.h" #include "libavcodec/evc.h" #include "libavcodec/bsf.h" #include "libavutil/opt.h" -#include "rawdec.h" #include "avformat.h" #include "avio_internal.h" #include "evc.h" From patchwork Wed Aug 2 10:58:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43088 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp572043pzb; Wed, 2 Aug 2023 04:13:36 -0700 (PDT) X-Google-Smtp-Source: APBJJlFYCvpHYX1JeOfOx30aAXB7rHW/+pzb/atA5uXCeRHhKqu4uex3W/ehb8Yz9pTM5jSmwYhz X-Received: by 2002:a17:906:1c5:b0:982:45ca:ac06 with SMTP id 5-20020a17090601c500b0098245caac06mr5315912ejj.60.1690974816232; Wed, 02 Aug 2023 04:13:36 -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 q22-20020a17090622d600b00992d262fb29si10617111eja.992.2023.08.02.04.13.35; Wed, 02 Aug 2023 04:13: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; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=ZgfdO+XT; 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 D791E68C15F; Wed, 2 Aug 2023 14:13:33 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04olkn2082.outbound.protection.outlook.com [40.92.75.82]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0CE2768BDDE for ; Wed, 2 Aug 2023 14:13:31 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PEkWNXNV+YHZIQHQl+VLz/GIRWXUrtCcmKtv57YGrl84423Cu/yzscNLSWnCpYdW7arAKmWLZOtF4KvCNKrdDfoSW1Em+ZFEg80csiHvxy/OqxVaiEZXI2JvCv2kOQQEJ57sqlVwaxupybCh44lFIh9YccoKwrrbO7iZTwjqZVXbr1Ho38eVjxvOTKNWQ3ad+kLx0To/aUrLwNOyrt5Cog9p9QmJJ7PntejE9WBI0y3hiucSzWLfNXQATsUymEYoRU+Ox59BALL9GHiTGn7w9bIBb3lJeoOpjknhfytQBUxgk9BBgvYOQgDDJ5UuxBD7mzpgmnLZpPFqJkHzc8UU+g== 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=YFRq7MnXlRG3qVeDwGVZZORp+dTJJegUkvxrphhliwk=; b=ZhAzggm6Wd3WmoYMISn6eh6ebSwRNmmdYRSLQf+vHqyhiAQbzPnqKQDYqQpfRXTU58W+Lki+DohWL6npD52TvV1c54LI3cApYctvqoAytJIqtPcG6a4LoSTj9yggSD3jRwocYN83tiRGE9yk5h6h+b4SQbEVREPrDKmdpqDAFVSPyqONT7LR6ETG5qatm0EKmWSlIyKrzk3XeHhZ2JoqsvBLMC6RSwWnNCAHAmMqhQSBXifaW35zlTpTScdMZL1l6GT8ZgKLZZZG+QBcMtex0eQjKol8/fWQZt6aiQHbq+aegJSfcrmo685KI8dFjuAkH17jQ7cvMKqXQxDXKaXWoA== 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=YFRq7MnXlRG3qVeDwGVZZORp+dTJJegUkvxrphhliwk=; b=ZgfdO+XTepwgLSE7qb/j1wFCZ2RIWb1rRNkJJIYKYPzElmdRHHabqj79GzIg52+oTXhhjmve440aFEWGJEMIKbsb+96a1I3hdR/8xNCYig12dqqgUOcHSIhMdwwWFurN6dFc0s8S9OlRxrgp+kfCBCl2feEKxAlC6qS0WN8fRs3wzma31oYk5LEB7tkOHoS6b4NmPcHW0xlVqKTzjPN4bM2e9sp0ELv8832wkOzMbA6/1lIiEgDJTZ0KrD+bKkkEf7nt5aA3TTImYUCX0DW9i/OLCAdnZHBbwKloNYeTASX4y2bLPVPBKfKrOy2snodvL1JT5j6qqAeT1btiEY1m7Q== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0159.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:322::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 10:57:49 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 10:57:49 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 12:58:34 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [zrqTUG9LXRrW3QqW26MjMkv0a9eZaoznNBJDLuzV8sw=] X-ClientProxiedBy: ZR0P278CA0085.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::18) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802105837.274253-7-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0159:EE_ X-MS-Office365-Filtering-Correlation-Id: ac7f7408-577c-4149-3bec-08db93474f7a X-MS-Exchange-SLBlob-MailProps: EgT5Wr3QDKweTUlmISQeL3+BBxlmv2aXEbxvsydIpnNeUl0rqKylCWfzxagIn3T3Dj1odwWSQxkv5DRGuEeTAvwQgPEgw8h2mBk+APUEcJCJcOjDsMqvCvlm5mLiz1Nzk2BvdA7LoMw79IXDO5Xj8hg6KoiOpYYxXK+kl7CFGuapFoknmmG86TWYotaCEczJjsBcu2r7WU56dwLgCT+92fDfFGwOKs81h3FmevzIeAE6d3phDd36jNPHRj34MxDiaOePDG3vBfyIfQobr7GhbrI3FkxsKeN4mJKt3Zt7U+tY5EsY2XciHiYPGR5e7/znngCDIeuMM75+n7zCbWcnylaknq44LFwEeSTr3/ga6avN/GoGrxlX5DCPHsqP3qCP3XtYaKVAHrznT7gZ/6NlOmW+wM+AR/KyoPUEdiyhUjgf9LHuUdb6hrXj9mvcN+1/PdAARl9eCXEy45jCYp0jUC345O2jO1AOs1gSVHqUexOiHfjRUKcyffmgp+XmgSa2zqe7U5Ax6RaydZM9nMiLqOyFh8rPWhRo0Kgsrx8K2X+pkPPX12G78M6oOYLICzVEJjbWjgdIHv46H+QHji6e9xH9m/HbUJpB2qHidGbOK5x3DvVP/NDYYBF/xqWFQwvKm0noQ35iS19zFuVEHdhLcyjAMcFQsSnHiS/RTeJuuCTLCcEMhhSKNb2YjJ6iP6Yd+0aXKnSp9o2w5Mi1EXOrksRUihzO1fGtEJB8rmZUuPE= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fMJWguF4q0pWRmDqpaiXEjZ1ULNqcfjWLlNqY/HbCdK8KoHlVyEqpMy/aBHTGbZa33t2f9eM+CfGm7PiIYzELjsZQ/8wKpw3bGQoPa1hNAHiBADYtVs4GHDEMVApnTzDEeGgWgTM+64wukuzhjPepjAKVYaozBnOAWTunsFLjRqt758CAo5mGdewqVcB0zC8dM6YoZoV7D4qlRaegtHjQoNzP2fMovjHkgD59PyafNRcU9HLBYK1R3icYKrnCUFPud0eGEU9Ip0aJmw3f0ghQce/SY7RdfB24OFE9vHFAwkN7d0dvB79E99zx+K4ZoWLwP1uwl0B3gjBi64PJO+M/8nQ3cL97B1fM98nccxFODrM7YM6Sfygp0Htm2vkPCkKdvolNdYpLGh18KPYIwJ3MCUNRQN5m5dbglyvhCecjWDXOd87m+nwZlAsJmEZaBH40lSe6njcsIFg5i6wjKRfIH9vYGAXxVUoHO8EI4PSfTpLhKKTjVysG3Ogpv/jque2G9PVCV5QpEXtBgxclhHjFEE+2mw68VOoUXrVKmmZ4m0MxLFT9OhvaE0htcY+4/Z1RnNe+0ngzj6+7a4BlpSdero9TmgPVwYKbT9Rq/GP9xP7AqHFdgl6aTqaMKKBqoga X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UtHxZdZi0BFmb7LP2sgmD+AXjpdiK7ZntNB0X9kakf8z5Hbl4D8Zo0BxzFWrjlEnNMWaXwT64cWOLJma8SglRwtxXAN6uTBN9Zd2cWeLDT3EYz6Ry3PyPuXpnNtwxuclpRGWabA6ML/wG5zytMMFxqtJsczlE47n6I4cGZRqNjZvJnaUs00Fb8BnJL5Jb2kfy9osGQd1pxwxRJdH5mOz983EEsHIN3YK2wYvSBEchf6VlniKJKYh31v6yhWgmMRXpbs+jJWgOXTgv0QEoC4tnG8XB5ua+R1kjql1q5MEVdRPBevADjYldU7rp/5IOyQhNW77kv/qJxo7lJSwCBE2pja+QaHwF6LjR0UhEoec3I/snjr+JIEEGSol/tGwKUJzAnQ9VeYWDI5jfH9Mgz/F2BGvqhsjAORLjs7LbEqFN0MsXf5iUWspvkDDywnipRXi/HHouPDl0YoemuEwtyNNAF4lCmCs1RomaRoyUdQ/zg3aDdJUrwIAFfVIcamrbX1b933yNKZ8ygDmwUcxHtZeetlKe4BjhVcY5x7BxtQ2Ye3N14eqHq0BwG1y7DD8kwOJZcJnA2wH1HI523nyZF2+hzQLQMA07kKwjC4WgguRwCxhc4ojrRgjFm32u/cBrm/Y/UUje8PdB3fgDJFfZjEetgz1Ko5YuEHKukInwR1JiYUX06fuPDIDBhOtnP8ifk+7n2+u4ylvbQo5uL7lOmeaUu11tSzk/ZEsvf9D0QdNsvEhpsR5uMjGmzYAymD58nkaBSRvBUgecTY8tIbtf51uDrJfrq/bsEaFGeP+q1hdhOeVXOk17N6TaBWpwqkH71LSWcheP3GlIfM7uZmoqPxN+V3HHTQivP/kPa/qcEtr9U8laMW+mLba4XtzSDa8d7cEQYacH1s+dm1mAoK6/jgpcHCsAgCYEvflxywUFGsKkp8sPeVQ7kKhdnTHcm5Bkh09kt27cOPT/FUGCRaHfbo31aObw7XPFCkYVk4w2WmxjBUT/j6kSEt5DLzE4sGdaNMGJutKadKwcIEfQP47iJtHKwmiQ94LYJEcYA/f5aeJjSzNO/khivEyeCiwCIRhVJoiOB1+RAS/xRxFX5Z0V+tzqi7J5HacWdFHfwVhzqhJF5poZcUdmNYxPfzxdAtG2iMiHOxo8sGlEM6zXFE31QbYIAhpM/ONMZ7EgQv/n93+9m5wvrfJLKEPMse43aMPD3REAfYJj33ryVkxCk1eyeWALhmQmY76LeFQ330irOdwoqzDr7d+2wbiVWC+Y6c45i2D X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ac7f7408-577c-4149-3bec-08db93474f7a X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 10:57:49.0827 (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: AM8P250MB0159 Subject: [FFmpeg-devel] [PATCH 12/15] avformat/internal: Use forward declaration for AVCodecDescriptor 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: hi/ghFCmejn+ This avoids including lavc/codec_desc.h everywhere and thereby forces users to include it directly instead of lazily and potentially unknowingly relying on indirect inclusions. Also add the proper inclusion to libavformat/demux.c, one of the two files that actually use the new field. Signed-off-by: Andreas Rheinhardt --- libavformat/demux.c | 1 + libavformat/internal.h | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libavformat/demux.c b/libavformat/demux.c index 1ef297d5e7..b218f64574 100644 --- a/libavformat/demux.c +++ b/libavformat/demux.c @@ -36,6 +36,7 @@ #include "libavcodec/avcodec.h" #include "libavcodec/bsf.h" +#include "libavcodec/codec_desc.h" #include "libavcodec/internal.h" #include "libavcodec/packet_internal.h" #include "libavcodec/raw.h" diff --git a/libavformat/internal.h b/libavformat/internal.h index 9fc980601f..594afd731d 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -23,7 +23,6 @@ #include -#include "libavcodec/codec_desc.h" #include "libavcodec/packet_internal.h" #include "avformat.h" @@ -410,7 +409,7 @@ typedef struct FFStream { int64_t first_dts; int64_t cur_dts; - const AVCodecDescriptor *codec_desc; + const struct AVCodecDescriptor *codec_desc; } FFStream; static av_always_inline FFStream *ffstream(AVStream *st) From patchwork Wed Aug 2 10:58:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43081 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp562295pzb; Wed, 2 Aug 2023 03:57:57 -0700 (PDT) X-Google-Smtp-Source: APBJJlFs7pBE9UxhWxN0cnG30LbIiXCwXlr6Gqiu7lA+7EPB6eghf2IQ/jbrl6NeOa7ijVgTxtbl X-Received: by 2002:a05:6402:2d8:b0:522:3ebc:84b8 with SMTP id b24-20020a05640202d800b005223ebc84b8mr4502787edx.12.1690973877463; Wed, 02 Aug 2023 03:57:57 -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 y2-20020aa7d502000000b00522c0ee05d9si5428686edq.241.2023.08.02.03.57.57; Wed, 02 Aug 2023 03:57:57 -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=pHY3y2jo; 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 01A9368C5F8; Wed, 2 Aug 2023 13:57:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2053.outbound.protection.outlook.com [40.92.59.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 33E1468C5D3 for ; Wed, 2 Aug 2023 13:57:52 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IsFRMtOcPAs9KDglVdv1VtOJK27Y+BRcf6TqIr3+Yvr42xbcc6YMnTjoFAxae3O4mC7ZBdZHAMkTslpRCvPf//Emwyr/iyFdnZZmslInJpPxzSNLVVmVYQbqKiOpXjtve9/HSaRbsvJM9B8AsbXohwdtAvzOMHO74Ng/50mUvk6/CfBsTwvIUEjIT9f45ZOg69L3mVrCD5ibtao1/Zr7ECzXhiy7yyn1GK9jK+a2WEDSc+Go2MBXLfkFYRNqOZttj3NYzuoO3aLGMOl/qR3GaCg0SRtDuUfRSRZIMva5MS3q18PA7C+Y2WTrC9X6cQlF4w5huHF2V8LGfs2q3oJkzQ== 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=ZoUX5vyOY4P+luLvQhIoOKIsnHcXO5xpnutdFyByM5Q=; b=RPCzGssRPwk4BwmWBkEey+i84vMKT/YPQqM2ysV3iy4SkiiJkjWE1ZYbcofMYNlKRzOu+YUbXsfvMWmh6Q02UqUfSJ6yDpiOpxTFQ1oNasikdvIaBcMP4ehSqV0WzHWJ3t7pzrdS6ArdwdbLut9FLJbH67H+xGZSYYP3z5or+YUv/ut9o+nd0WZzXIKVTnFkpVRx7sv6uZJVfQdZ2k5K8WlfsInRb8a84GOScblzStohYwKkIsKLyOPFIldGbyIKIi2wXUQ06FARIyUm5/yJI1Y7GRGJ3C2RmKpy0ZqK9oVUMFGg8BnlxelMzFN46uPWOBbnhpU5TRm6G8LywNkIUA== 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=ZoUX5vyOY4P+luLvQhIoOKIsnHcXO5xpnutdFyByM5Q=; b=pHY3y2joK7yFmPf48lY9kGE/dWDm4/NN3JUY3tZAVUetZCgmkR9UJt0cQuI6T7qlzr8mzsASzC+vt4w3Ki41pnpWGKiVxCn2dlFc5OTAaYhuBBn/NHUku1qkKx9z4PFpz9eyCKikkisQ/tGEHAG1JXF56c1fL4LUqjfOzLXS9g5yN1iZULjH3eiRVHvd1zKLzhWAkdcEdfiNFr4Au9o9W0EQOaL+g9D6/NSSdoiJIRlO+6yfPqBJpueWBgM7zg5Wkucn2cGJoV+cX7JpqRcBFgd7YDyu72jJZmMPk3VGPReZ/KsUdFnXeBnY8/uvdxe6WMVZWvK8q13VOqO862k1hQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0159.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:322::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 10:57:51 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 10:57:51 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 12:58:35 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [6cdVBvK5uFN89BV50FPNDz9CbwvTTPOOxmnNfb1uo8w=] X-ClientProxiedBy: ZR0P278CA0085.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::18) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802105837.274253-8-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0159:EE_ X-MS-Office365-Filtering-Correlation-Id: 10a04553-847c-4321-a47c-08db934750d8 X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmrpbvZQFz99JeucukBOVYaZKKk93JtT0ZW7nOZUqlMsNtSaBiej46pYexc0hAPsrJ6k7z1TFq2UzlBtcH6zAxMCQWQVpcY1lCEfpR/6DGq9c173LPK4S3UlGunsi+hAbU5zVonqTMCSbV+9z53fxCfWQHVYrJ664QcBbfMuhdLUbUVNxLK+1c2OU6L+8/oZIuaQuhH4+GfixAhRynMNVGL3RytL+NUP6J1bfuFh4obhQ7lpnjyZTthwskzeOJnCQhe5cYRVLUitDyRKvpRMLBsp3McuzIzUoWQxxGTLTr+1Y3BvOi/NCyEaz/3RNyB/vmIEMau/D6MEuonzXKxC29C3QoTZulgwsO14DKzw1ghOD6bLtlikuxcqZfdTfYKBR/Th8mMli7++OKgtF8Lw3kWxAdcU5gwBah+lidzDozuSFMweNAnI9sn+G754qxGF+79CqJiSkSxrrrXNGWIc9kZKA48729l++jC1Qh6PdyjrOLIoF6IlPBtcJObhWRib00XGH+bgYt/E98FoJ4KtfAr7fdWTj2qZ0NtZG/RRt2vBauBEyFaR9/ZuJjMXJRBN+Ws+9qBwwI4mQrUTuoCNSIYaQ6Mx1aiCFTY12OFyBTXC1BmmbyUqJLbU/AyXFaOiq+XKoEoZwZvbf+xk6xqIW+BW0GJZpZtBFoPUhAib0M8bWl3mfeDNuGJAfVOdjDYsYLQ1RmkNZw8rleZJRAruZHGAtEtp3O54y4R+pLTinfoVx//r9W6iaXLQZkNpFPELBCg= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: d7cuBdKs3b4J8SK6yv9YCitNDKEQGg4rUCbdbsWpXipreXNlxLPb0t6ryUsC8XuN6O8SpTNfyRUZibmPIcILaB2cG5QRqdd1znY4SMhKXf+1U14oqXPxJNkuLRLYICbNu7+FdEWEfVF8OP5CHzzG8SOcFreQqkn3Md5w4olI8wISXTez4Qp3pYXV2irLiyhYi4XvD3TYxvhBnhDVsZiBYgu+DqQs/3Yi9L5dlAx1hh4PjIsiV0sU2FMy8Tr7HCX9bcmrZ9yME1i7zuFZdBIJ9dmi51w8UZFGgl/jFqh41F+sFyIai0egsN9BbUi6yqVCTzu9OIBW88/x2wxjMT1tPOJraTiNs4XsI79pC6dKThvUymAese5w2yGxKc2fZfNG7QHXvH9FXNYNyKXorspvVJcxKnELQIaDDhLHMo5o4yiKyljdGCEfOOq2boxFNKqK7xyb5HJZkpYK4M2rM9yYXFQohAB83FufbhtsUcSu83HVdWeuXtt9zqNxzy9FZe2MV4WikVN9QUvdsH8/6PpOZrq0ynzjTSlJqeKFUDhT8fJzuC9k/5Ph69cmvY88UOnSI8hCBbDa+MK4F+GZJ3v24wh7GPcIulRMMDBCt/WTT7d0HRPN9CfESfgdppiTBWo6 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2c4dW/g5MtjsAYuqK5uQ4x6+hngY5JHOEPtbg13aK6DIH+Jchs3IevyLhNLyxCc0+e28uwX268FBogW0pOuvNldmLTSNxGgvxCQ4SJKHxTdnYuyfPLuEBrPn9W6OHbZxWWcRx7gCE0OvVSTV0kTbWw/ec8QDLfFoIzmI8zWRNJjijf3+U+klONZKalpWEDHGuCrnLpy7C5Y3ZIp63TuBE7Dc1PGBPL1T8B+Em08xeRf8pTQCPjzMXwcufwWBl09+6GStK9bYtSP2WDnCv2yHg4//BvkH63qFi3UHrk3hpwFEOFddLvPJ6PBXf6cfNnfrA0Sek5gRBPaCS/t4tyOXJlXmpqIVIwdrYbndkn4XAHaG8sIbaqskvmw4NQn8pMx0fMpJeE7LKdoRWE8IJCb62dX5HFfLVMuGXp3HOhZR0cg2sJPP2aEGgffgctJG/56c3WRzEtpKe1JFBEAZS3XmkKhv3fzPiKfU2WNacKy1QRDcEAm2xO9C6EORV3Wq4r5/qD/HqWNwTMgBCH5oKq1cnGyW6AixJ5Ra9UK2oVdk+FRB6AphI/bSKDELvpacHPaMl2NqM4o8a7w8/2Nx6MpmYL2arI9coBBjD2qIGcxd1cGekbchVbwMrZ+pf8QyGICFqkuWIlZGI8+OOGuibgd7UQt8zsluzrL2e9ut2Sj4uwfUgMFnkKUNVOllMGevUXGuypVxqCSwnrPYhVn0RAO8tjjXe53EybssJy3+/i0XQm1FqU2KdoUMBqEgsswrJ08JVj7B5ZgdTVccqUIPPVVdMZZSIpL9vF2h5CE0idLdVJu6wAwAFFM6SQBAXAZmTUzFy8M1xoLKN8GPIk0XYdYQllFgOF7Uq2v/91t8dyVM5arE7PqbVqoWNQzZiwO8PNNfZj8ABNy5N6c3Xg3xNOKiVrvUt5rgmtaFU3k6xaKIZl+KCETot9Z2BMVSFtsveB4+14QoKXx05PMy6qErSKrl0QCuE0pch51CpJqvwLZeWBTJi79oo2u9aQ/vK0wrePl+QNAkziK+jF47ztWZi1GEBvb8CQNgBXwl7qxY7JhWm2pd63eLiNBDThyiNTT0W1L4nU0I6cie0rNL1e/d8drG/9Bqi3qV2R4UGmmTN43qscO1tofrxArFK+DmwKhdCIc+EEeS6ergPbQ78Lr3XizLd3+bVXMZAlK+I+QIlVKWCGzlkA1igKQinz0R8ObKth7L1nLlKLz4EzlitBtnMEul5m5E4DAD8Dd4YWHF/jxwDXwt0u1miNUwNZYjqzAiALvr X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 10a04553-847c-4321-a47c-08db934750d8 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 10:57:51.4400 (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: AM8P250MB0159 Subject: [FFmpeg-devel] [PATCH 13/15] avcodec/dirac: Include used headers directly 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: M3jQOTNCtUBb Don't include them implicitly via avcodec.h. This avoids indirect avcodec.h inclusions in lavc/dirac.c, lavf/oggparsedirac.c, and lavf/rtp(dec|enc)_vc2hq.c. Signed-off-by: Andreas Rheinhardt --- libavcodec/dirac.c | 3 +++ libavcodec/dirac.h | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libavcodec/dirac.c b/libavcodec/dirac.c index bc51a2fbd7..4736304977 100644 --- a/libavcodec/dirac.c +++ b/libavcodec/dirac.c @@ -26,9 +26,12 @@ * @author Marco Gerards , David Conrad, Jordi Ortiz */ +#include "config.h" + #include "libavutil/pixdesc.h" #include "dirac.h" +#include "get_bits.h" #include "golomb.h" #include "mpeg12data.h" diff --git a/libavcodec/dirac.h b/libavcodec/dirac.h index e6d9d346d9..8c348cdc02 100644 --- a/libavcodec/dirac.h +++ b/libavcodec/dirac.h @@ -31,7 +31,11 @@ * @author Jordi Ortiz */ -#include "avcodec.h" +#include +#include + +#include "libavutil/pixfmt.h" +#include "libavutil/rational.h" /** * The spec limits the number of wavelet decompositions to 4 for both From patchwork Wed Aug 2 10:58:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43082 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp562351pzb; Wed, 2 Aug 2023 03:58:06 -0700 (PDT) X-Google-Smtp-Source: APBJJlFdB9kSgWi31HMVyk9qffZyM6TEwVCdFg5RumtUV1wyrfwJHiCmzkLVuCtSeqkaKNOXihwu X-Received: by 2002:a17:906:5a6c:b0:993:e809:b9ff with SMTP id my44-20020a1709065a6c00b00993e809b9ffmr4664969ejc.21.1690973885928; Wed, 02 Aug 2023 03:58:05 -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 g26-20020a170906595a00b0098dd7716952si9450640ejr.527.2023.08.02.03.58.05; Wed, 02 Aug 2023 03:58:05 -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=sSCJiKOq; 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 1E28F68C602; Wed, 2 Aug 2023 13:57:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2016.outbound.protection.outlook.com [40.92.58.16]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7842E68C5C5 for ; Wed, 2 Aug 2023 13:57:54 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AOADWQJFukgb5M8o4jPhg/dbyGFVqpATVrLeilFYTRDBRiUnqNbKhq7oeoSYMM168WWNmiBxn6o/WB5s+kj5mnVzxn8loRzAetbOVGJ9FJr8qy/wRbzOAUKWJH4Cmqfs2h0PiE11LPWWG6VSaQlMCCdmInSmzwhEu4w54VnJWrFM7mVEC1GnWJP2lVr1eGHeC3H4ETu6eEz9WMQVtL7AZkCwNE/2kQYrjo1cLJtDS12yvTPpkB6v6glvFUUZk9jUEzUKy6w9OA8weWliLp1T88Z8RRtnXx44SSCojEr0OKYIOOBf3exEGYpfyyIvRtUzLXg5cz3zsfZX+oey6pe40Q== 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=+aDTUr1a8LvPaufxgP7p5SmfY3+TMaDA4MqwYO8d9Gk=; b=FTt6peS1Vqh1YT+JpLHbFQsiHBSfAgla7ffLAtr2Fk4kNrM4Mf5WuXf8/I1BM1JrUoEVg+P61p7vC1iHuhc7PCOm4yUMZUdGIODYMbJxof7EixUfrzDBM79n8YdJl1JDe7cDI7cK5TwQsC3Lbm+pBNppi7RXM6FFU9WChBKWaApZ1ewLvcMNNjjoBYJv5j+25rn2SefBZYeNkXnFHZoPmKOOY8gJQX4wv7uEaPHZd9D0Rxp51sLPCFmtasUt/X+1BQ3QXLnz7+v14kdZyIpGLR7+3+TsfN8L7zxJQ376hAkQJJ4IOSLKV24qnkib/V75CF0ES9G3D74DVwSZIz3wIw== 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=+aDTUr1a8LvPaufxgP7p5SmfY3+TMaDA4MqwYO8d9Gk=; b=sSCJiKOq6pFGMfasvHegZemC+5KvCH32Y9u583BMJ70InsDuVmeCdS0Wi7bZzMa95i99H7TNkpEXns9MnAvdFEMvYqdxF75sUJdJXF5Tz+FxQGFvsn1liyIWKtqfYbgOyR6THk/TC5YQKXPcvouRTSqLVcHO0lF1oSsajbKrSsdkvmPk9OfhvOlD0G0j7UmF4bkpwcIpauPBCj74CeyHVAOokCz+ayqI6Bll1A5JCcBD8TRfPtqIs4gXsRsB9trOqwh5KSv0nnzWbM785DfXmPsbBmsJ3ZusThk2hqRSdIFKx+aFaE+qZmK2A/CFOqjS6ywobW+pISrokQQmlJwPPg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0159.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:322::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 10:57:53 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 10:57:53 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 12:58:36 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [D8WQoFnTLvHh8Zf1H9PBkAdh6+49gmINQuWmLo47b7A=] X-ClientProxiedBy: ZR0P278CA0085.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::18) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802105837.274253-9-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0159:EE_ X-MS-Office365-Filtering-Correlation-Id: bbcfb71c-cc4e-4049-c57e-08db934751ea X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmrpbvZQFz99JeucukBOVYaZcxrqCgXbF4+DmLo85R6oRDJmLVn0AtLwrTgH9fP5hf7eUbwnfEhAhsAcIBJunbLI4uDpDvEuFeLJ98Tu3F5HdPkPOvIgdlgZrKd4hh8n3s+kV7gZofy3xXaFqeoHdj4zFb6KjWfWXfg+5pPFhqExXlEbSyTmvov6ge46Eew+3g96urjSM/DJicFmVIdU8fAYB0syXnEAANwQPZ/iBPDspJ5zl5AVJkEOf2Nd0UdkEVETbqJ4HW202+BdsKFFzkZSRSDAsoP2WCrpfvohMH3FpLl8ugdOZ0N4W4k5DPWrMmxHSk5ey18dKCdCESxQvKyOYntfK2i8P8S8w6KLssn5RYT3aXHrJeNhQWaupu/DZnpvQ1dkdadfKQnoHPUToj5vpL49+jQALux4T9XeotQZELZBNzQQKTG9uGPu20wM5gBfTtPruHI+3I6ZVyTclYbML5qdW/YN59KQleE/82AlAliclJ9gaJgWtoQRjo52+Z8aGlQh89THksIwNbeOIl4jxc3rgGhgBRwG/4ERJ4/BJzlcnFBu59eKlG4yGfRsQW2XRRmPKvNr2pmpZFwNp6krI9FIxy1qMebJDRuXb6Ah4e5fMY0MFvNYuNuIvAYhH1NsDR9sTkEar09xAIS7du0he9DQxsU5hqhc+T+8okGnvcvl2anIZhy9Lp0Q4zyTO7O6Ps6edvRC+wKyWy756nD0vWHtXspmocM6XB5bcpKwQRCtv7JlubtbVZali0s5Vo8= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: W8ag7lYrzo871iFD7gs9bkwQmRxzLtfgRN3i0eylzggpwDbLTyE9XzGDVk5gUEQDI664QaWNZ8Wnot0Y3DebztZxg4CUjkM9hsicnAj1o7VOOB379PYHtUdHEvtHAX4h0ZJqPeH8bUW917pJrraaFR0WS+y6NrCoQbz28Fvfihy9nCgFIILaLfcpZgra7NyFX9Yvfh7Lsm4vfm8zisXrnU/mw/l9YZ5as/yvhnQbyxPZ5W3j/c1d4pf+ZPQmlaCMwx9Ce0N4CpgWdNOVb8TSuBWYk/UVs9B6Uyp8cz9PLJxP/pM0+2zuT2Cjzr96tJ+SxkH99ab/kfREgepNienlHnsxV5jleJDfU6n4Yg417qZSsfzu5dlhxrj6nBmIRIGV1m/l3UVq12rH1m+F+9I95OiK28C13W90iApfU+VlEpkfrQMNbwE5fBtCgcfOjVkQVLtqxhLdfexLhsFzfoQQNrVO4SO+PwaUjNR+/vpBcYotAq4CCyrsUYItEChxbjGsZoO+HLsY1ME9cnM4RljHgIEvufK9TmZ2vkN+dBInN6NFO2ErHUZcqjZI+j2VqG+ubJp6VG1IuSLkJfqrqDTL4gvdmR9XePEovOVxseOAeZZHdGsz4AZHLhcddcvUv2Cm X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: PkYTeo3qYv53VWON12UlReqrQBRQCScny5NeuROGawkB//3Lbn62sdDjAKyqkBVP4z2zXmHbkkUi6cT2rrInrjRF855TIz7cwGLVcZKp4X6qQlFSpo2OT3MKOyylv5+1Gg3ZiFFLHTOXFJq5UxEqt5RkZt4XM257jBiet5uANrqEozK46uIO7epNPK6b0Qo7++xEHwdDYm2DGjT1rhlmLfcI3zg4Fdr63e6nJj3VbkrW0XHopjss2HXnlGZXOGefmoQQwIx9cUpbxFdsOO8XZJmHCglXMZSfNQAvwzJvO2/7zYEnNWiNwvImuu6XO1bCzZrXd9DBG8wuSpr8Rvs4werdFuetsDjD+DNs3tf8Ne78dxIc8PiyTWrhbmzhfZmO8WnTBsmiMDl7WHCZVZxvyO4fHMgUZcGIPrASSbwzPCeCQD46UWAKsPD3WRZtUlcdi4gwr/mESDvP6w8QtUFS1k9JLs1MYcrgGSbDWX49PygaG389b4Tk9nH8EbdHweurFC8gs1Pzde/1KfA4oKLOi8qsEYqYZlBQGby2wPilSf4aepwdjbk1dp2O0K7nS14Q1P0jWVrR63La1930mKG9CQfSafDzqCc2znjVsCF7j7ALIffN3VIzyHhXv0I+uG8CfePTRQ0Gw3wQz8YaEsPs5NIghodMl2o96X5rb2+VOovh5rwK/eiFXqWxTphc6rGpVEjKlN0l+4zX0ZLQHLWk7yYUOIYxWl0QLvMijkc8yqN3KsG7oA/VUPVAfj6l70PxfcBu3jYMLb6bH+vh3GjsVgz+ssajqVgCfQmA13POz0ZMqsztvFFmy3mFVwCrfY9yxofT9v9p12hRz04a5FG28nrRV/zEkwqBPowY8EJe3lXvabFQZFtH/wQ3pxdr4Slj4GGUpJWKGK2DHiBgyJCt1nswF0wKyKSTa8hJs3xKZgqxZ53lZLeNWChc2Rnw1hqts9iKk+kOdPe9OEaHz/pJHH4SfUbMw/Y7rGbfItwnwRFurIq4q/HKc1xvpEpwxlBZ4o/WatlIBRxTE0bulZuenaa7tfCjaQ3K0tZ9mtc6vY/8a3GlYF4PSNHRS769bPSAGRtrUYy/giR7xRxKOojvzcATRhFbN5t6f4/nvN78p28U1qIM+5WTWi1Ce3xwLiR/Zt30vW1oXN29Enk7Y61/BIttYsACpEXjaX8951Denmg8wuTp9uBA2E1S+ZZJ6MmHcTdUhUDZDSrf/XIsYshxPoe68j2DmQIsmz1+4Gl8u1Nh7nSwxU/FGn66cFtpjQnI X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bbcfb71c-cc4e-4049-c57e-08db934751ea X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 10:57:53.2054 (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: AM8P250MB0159 Subject: [FFmpeg-devel] [PATCH 14/15] avformat/rawdec: Don't include avcodec.h 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: KOFC/ca/h8cm Possible since 2850584876e52beaddf7a9f30e9914dad7115618. Signed-off-by: Andreas Rheinhardt --- libavformat/rawdec.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/libavformat/rawdec.c b/libavformat/rawdec.c index 6b623d366e..1dd7fafcf0 100644 --- a/libavformat/rawdec.c +++ b/libavformat/rawdec.c @@ -27,8 +27,6 @@ #include "rawdec.h" #include "libavutil/opt.h" -#include "libavcodec/avcodec.h" - #define RAW_PACKET_SIZE 1024 int ff_raw_read_partial_packet(AVFormatContext *s, AVPacket *pkt) From patchwork Wed Aug 2 10:58:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43083 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp562398pzb; Wed, 2 Aug 2023 03:58:14 -0700 (PDT) X-Google-Smtp-Source: APBJJlFuC11d7v9s8i/UIfSd5qRHHC0fbRN0wb2e8FzZ0CpdmVQ4rytVz+fearFQXkcrGSdxtQUK X-Received: by 2002:a17:906:7a5d:b0:99b:f392:10b1 with SMTP id i29-20020a1709067a5d00b0099bf39210b1mr4829146ejo.37.1690973894255; Wed, 02 Aug 2023 03:58:14 -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 v25-20020a1709060b5900b00992d2e267edsi9568328ejg.735.2023.08.02.03.58.13; Wed, 02 Aug 2023 03:58:14 -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=vTrhFg8T; 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 4E69968C60F; Wed, 2 Aug 2023 13:57:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2088.outbound.protection.outlook.com [40.92.90.88]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4F95E68C607 for ; Wed, 2 Aug 2023 13:57:56 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a1JbJ6MOcsnmTQtmyQnXCfmuxiPBOQh8cBhI3msEAg2WQTJ6fm9/XLsinvEYUPrKoTePuaWruVJNp9f1ZWUJIVUuZASXUX+BaRskufw2dE0tO9HLz5ebMiI9ihhjQDBu61G8c+YMOAR/EDozjo38sP+TWTbkfI/fbQe8apNlku31EpbEow9fMSXD4kNSvaRTZI7MUuCSDDJebZIWzj4/ysW2zzbf3Blu34i/PTsWiPQUegny4XMCkiRoGm5EviaoUjMpL//9B/EhKYsocvZ1ku0VTlUK3qg5d83vp3opixVwD2+ma9mgoYozBpOGFoONBL3zPcWjq25TMToeWVBu4Q== 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=FrzuN53cnEX4G1Xa7m18JRxmrlLwxxzxboMiSF99JC0=; b=Bf1OmClRZPuaDeE+0NrX01SKySMD3vIT205aYjwQFwKlzR8HutaiblgrJKX/py8S6Woe1ixk4YYWlzCgEJUQ9RLFdDVdHcghfexNWHZJopxvPXD3UcAwOMLt51LnwKkb4+2Eeo4XhOvt5Qyl7ULawlblGE1RkX8Gie3iIU8193TYxJXbjIJwbyaLSpV24oXsVlsc+GEf8AzlMCsEP08PTQCQiOny/uFFnql+fXRQeX+tIrahlpPL1uv81H4SZ5WMAetS4vp99GMbi+E3+pLi3tcyrewqKuF/imeG+koK4Eht2ldz6Yely7LRtRaMnxCFydvTSArYdI7XnIQ00NomTA== 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=FrzuN53cnEX4G1Xa7m18JRxmrlLwxxzxboMiSF99JC0=; b=vTrhFg8TWqjY7st3GwqV28LbMaAk9dQHC44RwqkjG/yNxJetBru0UVJQOm1UDKWRYFZaQaZ2Ea7Hp5FkxHI6FfAP9CoOcXdu7Haiqtn06omhTN6zfmkPvOiM+ds+xWgJbFKG/0d6Y9Bh/sMrQLy2zTkfLu/l6L879VzddMvbzmWxcfSeiC88/BHAzNxJx61FWaVqPY6l4B0ju+fDVjpCcvg1sPJeeiCxZqEZRHD4wYgq+veC/NkZS6XARJXMkpODF0SyDeXtpvHRYA8jRP8kvQtZRsiVUE8GgdjHBaC2G7ovmosf/zY5ZWz0QV5kR9HP8YhxnK8ewJ2oFJGxdN3Jzg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by PR3P250MB0035.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:14e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 10:57:55 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 10:57:55 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 12:58:37 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [ezvvHnBD4QNgDHjpbNWVJRwaXqilUNEfaeVCCVf43d8=] X-ClientProxiedBy: ZR0P278CA0085.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::18) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802105837.274253-10-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|PR3P250MB0035:EE_ X-MS-Office365-Filtering-Correlation-Id: b4deba9c-2187-4803-9053-08db9347534b X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmrpbvZQFz99JeucukBOVYaZUsvPHpXg1dPCr7ez0QmfTC0p2CpZRqY+D+rTZe9Sco9L5F9OhVoWQeArjPleg9O5VpmkhpDQrjZ88tGtoHAboEqiLCzeAX8dACLC6a7WfP0qTEaXvE2Wq6g8nnteeZ5MbjM+ULQ+u6uy++FrigT4Urs/sBBg0s7QtJzbcimn7jMoMWzEJJsp49JWh+6ycPesRgqSk4CMo/pfgJuQUlAWZONyCGEG2p6S1hPIEwN0SYIRXRnXqTJBV2drp88IwG9S3cBEkd9+41dP0TvBcbnxgFOtAFpaAwQonVs8Ea68hJXg6xFapV2hxY0L/dy+zbhNDZVSrQ9EVKr0FtSs4dcb3U3cwW60rXUIX511BziTodfriYFK0t1u2Imi9YnHcRPBDe2miRjtB2l2gq8sJQtzSfIxJNLOYSc2ThP4bhs/ynFmdtKC8u2cbwjG148LQEv1HqvZIk4gJ8x0Daalyi2Zrmu1DxBCHdelgwBcEFP/hR7NcFTZJX6xQt0DmMa9CCfjbClH2qcg4sVXuHwYys17ZH/VmG0w/55RUSCVMXzHVt0KVCruFRE/aAHxiGHKS4WKNJfV9kotKHlSf9nJJ7e7fffo2NFPzmEM2VZpCr9J7z/6LSAYutsspjo6vcn8zQmpWpf13sFn374tUtPJ+2F4C0vDLsOFDTVDlXaQwvqgBZl/6fDeoO2G15EYjAUkWhhUwsvl50XqUnXm+/Nc0q3ZQEaa9AvhN8CwdlyTqJBoa78= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: F8sSh+2EEKy7fmH0/OLITtAkMSmgaxENjVh+NCfxs5DCxJgO+1IGD+79rJM7rOCjCa0xgr5PwvY1Ffi1IsNKxG0Z8AQqBgqrN4LTaN1sn3NHqTz6ZKcZHbWIYcC4n1hGYiHl4MMxi1pM/tExmWU/65pGDTSbhWxujXNtuy24SwaU7dAxS3dCUr/T6ntVmUyMwoIqAqwJ1hM5y15/Qa4L+oA05RQpoBmmcorvxjdXTTOYrHfVjD1cE2lHSTIzTsisZ+Aij61NgNJMhqoHZNWHJSqyEjW306Yv6BCZgH+ksgUjyyqSoeRkXLsK9Ymgizu+Qh42Vm9Tanxu0gWTK88YLssdv5l/cc0HPEus2F7ItmWxReZeONaezoK6LAdAMkKqPbDwel8XjCeuzBe3QFK5Uc1Ory2Ozk9UbASf8nVTd8G5+sS1ysYiOfKw52ToUG+IF/iJXhM0PAFvlCgAqdG21RrwNhQ6FoMoBCvC8lc+7Cagic64bGlCoqUu3NjIGljJFvfhS2xXqABmMpLh5L88RE9FYN8SC8tpmgpHXM8S0ZDF8edb4yZZD9Z4XV7UeE6nw2q84gEg+lNdh6dXNG3behYtCsC0DsXUSO2CbgLUCMgdjZuV4/yZvmtj62oeJrjf X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: uCFUzJ4BXjQhJGuRhJAzCqkb6aE9A+ed01Yf75V7dxSwNvIHgj/hIZ53sdxgFrVUPrkbMX/4JJmWcUhMciNoKadhJDbEXmf+dW5nICpvskWOlioaLfOnMAbNmWpCyuMA2oCZovFT1PjF63Q443Koz50BHpiTmTODg+ieWrSbES5ldrP8QDvhRxIN3fCE7rwscyyC1OZJZRT/hmvMQjf8YrUIqP9vRCTJfJLwG/OLHhXXLvVb3KUgUZXorFdxwOLfcWpWwy2pNwO3q3HFMAIh6Nwtw3Dsdq50ott1TtUZhYgOs7q2LhM7NawMOViyuF03mI5p585Nmd621Z5EtvLDTbp1/hYrIuGAEBkvgCWH4bmSqfAa3CACMgxRQO1eGBk7alZR9hJ6FYqbjiBd5OoAUASOR5pvIjywSLQXIObusUM8+gfuBjnnkK8HWMGZ4Faif2PtEPQnu0ce013rDuM7pHxllox/mDv9PiIAHrkXbKucFEwDUNp/GhIKz5hiQuDrptEzd1uNiSddJfMvZ0vBegDEMML8tus5nW15BwD2fGUE6xpOsyuE7NJBnFw4eh9Zp0Agk2QxJl7Y/XdZ8dQE3viJGQTspznZD6jqvQULT0EER+FiZF8Mbzi5AHEKYdbnJ6kku/WwqjRiOApZrz1QRCIMBCDQkb/y8TlB9cAhAK543qhG8E1bblTePqT4rgUjXpTlrdC96gG8zOM3/nTrLpNVy2eBEaSuNh7fWA5loAOwZtihe+JPir+2XV8dnESj7Z1pI231ZowuhkoAXhp11hgx+VbZ3by15o0gF2OCdjFQMKyUJlLh1a94XS8DxAz3jgEs4fptceFhscLgbDGWCbLg11+LOFTZfAR+FUy7oWixMug3y+J29GjzmekHdneeQ5kdIeUZWls1/65SGwMSfTXiVN4yCqq8VXcGm3WkkJEnTW4xU9MoSYCVzHqgOBEBf1vaOHtN0Uxu7AGJSObiH+qv+xU7uwj1sRmRkxiidpxROCZI1HuvYfVz1/uT1URRhkgEMKAYVSNHbWEOtsai3347Rjn5C22BYG0lDGF+mjd4I3C9EqDYimk2jJ5D7YlChoKZGHztjzSBEomrK2ZMNxTWWJwSukSiq0Fci2SHmkPyRSEqbgn18g2Es/+6oShZswzh1c+yBO1ur3zC2sQjbt0qS+Llvsk2gwPDO87VjwcEW7M+HJubd+W0RL06UlzAls8ymqGn9mGzIanLj0axJac5KB6uAoP9QVPokEP4Ezain5Mq4AgK9R9vpF1nX5l2 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b4deba9c-2187-4803-9053-08db9347534b X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 10:57:55.5213 (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: PR3P250MB0035 Subject: [FFmpeg-devel] [PATCH 15/15] avcodec/h264_metadata_bsf: Improve included headers 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: DuaRIvGQe/1y h264_sei.h is no longer used since the SEIs were moved to sei.h; this also avoids inclusions of avcodec.h and bytestream.h. Signed-off-by: Andreas Rheinhardt --- libavcodec/h264_metadata_bsf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavcodec/h264_metadata_bsf.c b/libavcodec/h264_metadata_bsf.c index b9cfeaba94..39b9e8eee4 100644 --- a/libavcodec/h264_metadata_bsf.c +++ b/libavcodec/h264_metadata_bsf.c @@ -26,10 +26,11 @@ #include "cbs.h" #include "cbs_bsf.h" #include "cbs_h264.h" +#include "cbs_sei.h" #include "h264.h" #include "h264_levels.h" -#include "h264_sei.h" #include "h2645data.h" +#include "sei.h" enum { FLIP_HORIZONTAL = 1, From patchwork Wed Aug 2 12:54:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43092 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp628074pzb; Wed, 2 Aug 2023 05:53:57 -0700 (PDT) X-Google-Smtp-Source: APBJJlFfyQ3N9Siyy2ZSzWUW1FwvNWucVncs4W9u8vqPPzrVByqtIRqt1WoA5L/xP2Hm4QYqdjWb X-Received: by 2002:a05:6512:308e:b0:4fb:7626:31a8 with SMTP id z14-20020a056512308e00b004fb762631a8mr4594737lfd.27.1690980837014; Wed, 02 Aug 2023 05:53:57 -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 p25-20020a056402075900b0052278a08504si1565846edy.485.2023.08.02.05.53.56; Wed, 02 Aug 2023 05:53:56 -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=fvRjdGEU; 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 BC9B368C617; Wed, 2 Aug 2023 15:53:53 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2052.outbound.protection.outlook.com [40.92.58.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 079CF68A7D9 for ; Wed, 2 Aug 2023 15:53:46 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RsiFKLbTJja3Ug+cIKXn5O/LpIM4qsttYU579TLs3eJ1FNa+2yumGyJRhINomc8mGvL3bux4+nbF+Bp0vHGhOa+mb7JL4gPk34NOi88TKMpa42qER6yzUgnh4hCCF3Z7BGSZlzLmsT+wBvmCj0t/5uhhTn7csujL981LRJ/DqfDImw3X4T5/gPJqvAkQ13yHjfzEP1l111xAIQkw3xz3PVlyfU5YRIcaVrtMqcFU2kDbeBHwBXhuzT43Tox8sDJd5E46ycaacBt9HM/DHleL34Ez2eN9QfQA3uMzBIWVmqPf/1kewCmInztaOlKZtT5EbBAzm/RwaIT/lwrk0NKAgQ== 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=/4OIAzVqHTrMe6tQ4kpuQkza2GKvucC9aPMdXydm8K0=; b=Hs411H2yTDfykylrLDt8uALLjenHwvBHQpMuKeeKtrwf17UfCl/9mA4j3QFeEej6m5YFE20YOE+609SBZxh7xoDPJhQB2TcAVJ+ELLpc+pqF6+EjcLqfBPUX8xb76xlfGzLN6riBCwrZr1wd+bBLOcQPXWFiorgkE5lLvjAz6t/X5jFLBhv/9/v6cqCqn1fV2vCEGuT7CeVVQ8UCYHinVcDuIVUpdAoaIx/cCmj4llxwPKVZV2xWl5gUxNMEPvUmdKPlPxoKsP9o8c903Zxmf3mQUG/flWJ2rWW0TV8utNXWKE6UM3bMej/d9mgjS3zanv6FHXwtXLRT9fpcgfSyUw== 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=/4OIAzVqHTrMe6tQ4kpuQkza2GKvucC9aPMdXydm8K0=; b=fvRjdGEUmtyGOPD2e4O33jEJXlfo+dFJ0jY7DRIW2ZIXeYdhUYkWGJbfvxemtKSd1G8u0H8Re7VXBl6mmu4da/xmSxBzB0rjzL0gBxsab1aOXr47Z496hQJEONODH2Ba82p5w2z7xgkkQCZxkm850J9xALvX/pqi5d1tZg0WUOh7j30WWxOtt/QXSggT5Okl9IkrdMWHdwrdHb3il2Adqfq4iDP96SPnPaiQ0orSVhuwya7yupYPjHpMGzbqSLEAmCVGp7lQ0Tq/mdVv807MfNnoCf8OAzkmcF5XcYU6LCFPB399TPJL8H2yymIh0yjCZi99r63CDIbo6khHVZvzmA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0037.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 12:53:45 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 12:53:45 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 14:54:47 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [pMyJVPAqHHYGgMecC3yVQgC9rpDgc5RKGTq5uNy4QjA=] X-ClientProxiedBy: ZR2P278CA0056.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:53::8) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802125450.439724-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0037:EE_ X-MS-Office365-Filtering-Correlation-Id: ab3fb9fe-c708-4bfb-078d-08db93578199 X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmrpbvZQFz99JXWGN3jXDJ2PdgPCZ5N8dff0ekfnxoUyerC03/dfYKDy45n2vHaYiap4BZcOsAItg8EXATs3abL+CAAVRYGiVqP5S6LZCp6c16GOFWZhqMxCqhoiMYvoMNo82nLBRvrbw2PS82lPB1MkGT371uuRrnflMkwzoJSSvKtLo0ENK1Gq4pE24ndvoxHd7xNRMnMV5/Gpz8C9ISpXN7Pe+lWD2qndHdr/jTIp3WTtIEM+BFNkZGECuP3J5qY8nOFx1ZiHG083UOniGEd9BTUdgDgDHbtGNd1u7hcJWb8n5aYfnHdw1l5gn8UPspJrpM4n6nFl7Q2gilIHziQt5uE7xLovOmK1xx6F9k5izTopNelbDkLjts0q9ftNZRzGlD9vnx9QWRD4gUfimvAF2gKKu5uB+6UfPzkEbqqqrUkvuPkiFgxQgCliIs8+Zu6VLG1PbFnd7sBZAYV7pAzhe0/yrZV32KHPC1RTrbrVwTmjJq8dAGtljtbheEquV0vtOq711OhlRVmZevMgrsyTAe0Rvc73VKcPROs1kL2DT9OVYcwksVv9MRSsgVGtOVsm8NW2aKdFtbfPbzmHkO18Tz1dCm2ezamLKLcV9zxcwOtCxcnsFMwBWszfwUQfGVAdJXpNLmY+YUPqz8BMuj9Vz5CdTrvwmTxxYtb/xJZ+UFGBgjlykJQFKoixxFi1+fO+aDjYSpjf1QbPqe7YcV4XsCBPJn83d2WJiihD2QvNCHA4l70hrjuX5mAilWv4y2s= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: m5AwJpV5mrY+OMvS6t4uzAtC1wEPXlPNkbf5uQTsWIaSHQnV2apo1WRlpROviIBxK5WXXy3F9ZZFHHq1GygcSxj+c5gnCO4WODjlelpeQHVE1CCNVkzcj6U1Yk4IIWP2fIAAprQy6DoEtpD7Fx6bbKYqm8c2jTBp4yWj0gQAZ0ZFb9+OKWAxxc/fLcSxi8udVSgkodo7iUQX9cjeBMo9fs92Uc/2bhi4egiPkLYQuOu8vdLBM7cetnewd+YgV85L9y+JzaWTmlXw+PPEzYLf/zL+EUdv3vzVH6+zOAfoPoLSiuEyIcYBbIHpQnuSsPSdfAIxKscDrtI8RgG8SoDCCdqLwQT0yy4jtV3WBAePPdg94RQPWvPy8mhg/UXLz+s+A9usgvvpoqGLsJc07JPLTFS+J30UzA0ghW9i+T3zemnrfaDO/E+WkDzG/7MaInl/h3KNDT3tA+SVD+NDBqL2vFA9KgPEBMUgxbpE0aJfhtQxPwBaZKGaStzdBFQQVMwMpwARh+JfpMBg9VVAhlArwAkW94vGgtpO6CCDvvIz+8KmCBdCRigQNZoIVtFkhdPlE95gN5CixMATLOVn0qb+zseDqUbMugjz+/+swnZLH7qKOcKib1Uaxnbd1zyMC6Uk X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UmsxkX5ZgU0rDgYXtEeENLdm4enuEJvx0MFF1NydtqsWaKlAUT1SfaWIgWBL3KAwFo9kWmJQUHIOFKIyrIYMkIEKJR3V9UyevvcXJDelQvWy/5iuz/V4mayzf5rCl4THct57TRSR3wBcbXjWufV7fCZZ//cbXJKV3m8w9giUCbIqz3JSbtgbnewumwvwsqcMl3zI3G5qfPLE9frsjwiv5k4oD2SJabQi30IWiXldLYG7XyehsupFg9/1E/ec26k+iTEQHspYKGWjT8j8Y7avL2HpfakFjMJcXiMHWQYNjZK8Z4pGJZbDVssOFg9s+JoPkqij1HgRuHh2I04mR20l3DBCXcR+a01iT+Q4nemrw+04+nSYZBkYMZXrIEGsckLjpUg71cL5mSivUUpVtfeWzM1LwgthK4SJJQ5UkR+nsjX+5X5sXDxbT0Ou8zHoiFoz+l4tc/DE1phASE9V4jKf/L3iuR/qlLlizpNudgVzPcUcsQmiR6dXHCOAagjsos8jlCIAGivdKomePu9IsCrgSRDxHO8c97Fe6ommDxgFfBau4BqK5qwMtVYEavQRmqF8FOADd9qRvWUogx8YEOUebeAe5ZXAAATYPAwSOBZJC6UUlB02aS+GQNTIEZpBe2MmQnVytIPn1Kak9QRctQY6Hx4x0OfHk2SR//I3JdP0o1tkhqCYQAFQ9/4E8WChvp1xrQihgBDkFKAgSHMpzcbqfEd1E410GaO6EE4o2N2Z88gzByvrL1DDlxJqQi9ZL7P+JVy2yh15x6e8E1Xr317LZTsgUZ86zgFPPrlmWNh9wa8o98S1e17WcT4+xdycx5dJwUIMkJsEDEe5MS4P55gwfl0YriE0tCOR2RmeFxPtO1d48LE2e9rjvGxgMPKW9Z8wb//760rXMxOL/ZKkmDYSEkBCCFL6Qr7DspWqUeVCK4LpUh5sUtV1qcDp9WHlMwGvam+OG1AranxTkK6tY1CbADFUQUxP1UbKil83UT9dKRFz9Q9FwDs9ntG/jTdq7X0Bndf1LgsoQIIVDWPpW3X6HRqfZyAModRz6TjQJxKu6NoM1Onpf3PowNJPlzsl8HdeW+35i+mk+A/CW2NwzEaPr3dT6UcDhjOsD2nvYYAfaz8zgN+Gj7niVP4+kMNZYBWyciwjm6Rvc8nqpjB5Fcf3ppizx5EqTP24BvXKH6f4wTGb/8IGMdj6njq2EHB0qiuXxaSf+dtOdML5QmYxMInxz8PGzHwr8NxWXeWFvFKRy+tGuNdHe27b+7C0Sx0Pi+7M X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ab3fb9fe-c708-4bfb-078d-08db93578199 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 12:53:45.3085 (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: AS8P250MB0037 Subject: [FFmpeg-devel] [PATCH 16/19] avcodec/internal: Move FF_MAX_EXTRADATA_SIZE to its only user 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: edNi8MULwEIp Signed-off-by: Andreas Rheinhardt --- libavcodec/avcodec.c | 7 +++++++ libavcodec/internal.h | 7 ------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c index 340abe830e..0700a53b5c 100644 --- a/libavcodec/avcodec.c +++ b/libavcodec/avcodec.c @@ -44,6 +44,13 @@ #include "internal.h" #include "thread.h" +/** + * Maximum size in bytes of extradata. + * This value was chosen such that every bit of the buffer is + * addressable by a 32-bit signed integer as used by get_bits. + */ +#define FF_MAX_EXTRADATA_SIZE ((1 << 28) - AV_INPUT_BUFFER_PADDING_SIZE) + int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2), void *arg, int *ret, int count, int size) { size_t i; diff --git a/libavcodec/internal.h b/libavcodec/internal.h index 4dce9f6fbb..480b18b447 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -159,13 +159,6 @@ unsigned int ff_toupper4(unsigned int x); void ff_color_frame(AVFrame *frame, const int color[4]); -/** - * Maximum size in bytes of extradata. - * This value was chosen such that every bit of the buffer is - * addressable by a 32-bit signed integer as used by get_bits. - */ -#define FF_MAX_EXTRADATA_SIZE ((1 << 28) - AV_INPUT_BUFFER_PADDING_SIZE) - /** * 2^(x) for integer x * @return correctly rounded float From patchwork Wed Aug 2 12:54:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43093 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp628222pzb; Wed, 2 Aug 2023 05:54:14 -0700 (PDT) X-Google-Smtp-Source: APBJJlEMmjBv7Yy0bk1nY9sRmy3eD/7JZ7IRO3dB4s6iscn1rB6sSIlOzkD1R0HrFDR2ysU3nTJX X-Received: by 2002:a17:906:77d0:b0:99c:20f0:dec0 with SMTP id m16-20020a17090677d000b0099c20f0dec0mr4278588ejn.43.1690980854729; Wed, 02 Aug 2023 05:54:14 -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 pj7-20020a170906d78700b0098df03ffa69si9319088ejb.421.2023.08.02.05.54.14; Wed, 02 Aug 2023 05:54:14 -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=GRstBVKx; 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 E3FF068C62D; Wed, 2 Aug 2023 15:53:58 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2052.outbound.protection.outlook.com [40.92.58.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2EE1B68C628 for ; Wed, 2 Aug 2023 15:53:52 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NvindkZMkPXYsE04+3EAEIooMXozojbeQ1/jYeP43xxYiS6ZRcdPEMDJ+1RmuKdd5EK8W388jsdg/DgK4J8WJRkPNDZgwguvsdyXmLMWizYruWKCTPWexFwf8xTwgFrC0Zw5JRYpMCo6hhJ/z0EBUY+pfdkkVrf81n8He/oN1VwlC9gu0nbKfdgKdq5mHT9X6GFhQDJXbx1DCLuQLtve7H1fP4KXaBTzZqIs5QKGOwws8qyRIhsh2fAJWksbIv4WM/xyyKbD5pesIg90K9fvB1dXbjkHi44xCERWfHgS8lO+9TA81QZ6n5CHkdOJldq70OgvPpmEEc6OOMNzDrlgaA== 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=Kt6fPBwb+UAUS+3Y6DcPhrWqwErKMJflqQTp5C0nMtg=; b=NkOtTnCZUsSSP72ZmE8D+IZZoDM/iSNiVE46zzdCXqrTbOlw5MqDyq2gs99/Id1hmhWNTopdn8sqThvI4Clp9jF7+d5QzLsH2QI6Om33FO9rMLMQHlAMEA0zCiGrSl1froG1DtB9heaTkbH8BQU1DugLeVsZ/iBcKb8YHBr9dNU3iqRpsT/cHBrVwCSb8RioER7poPYqh2W8EHUgGipEagdVnVQGzsrs6SC6DjNKnS1sODmyRIJlaTSr3I1nBIiJK/yOMOd5GEPAElWe8t3ES48HorA/p8Gph/zRmSEZQjdSvzzDJbu2DwJ79gm/xdajgYlxJP/4/jGylwF6eOlMDQ== 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=Kt6fPBwb+UAUS+3Y6DcPhrWqwErKMJflqQTp5C0nMtg=; b=GRstBVKxWrRReMyN2zwk2fywUZkxqa9ioEm/kAjifgBlS4zj6XO3G8dTt7z2rLXr4j0qg8+7tGhqQABarGauZJBvVVa/F0oPa3n7LXDEBIxnMwQi7aryw9Epts62DDTqK4QEXenVtxuF7D3NnFC49LoJ93RlVUYGDw0v2qbWOtgn/IuZ95SeFS84aZCUX+Xor5XvCN6c9MVUc2BftPoeujWQiREc9MdjxvoS+mvx5kTSlztuLdvXHr6RveYDf8GSTzatZ1q1MrxOxuLP4a+d7Nfl2v3gWLnBenDG5lj7TbDaeZsJB3pmt6vY70NAa9uR6sawQelsGldBoyi1u+N4bA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0037.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 12:53:50 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 12:53:50 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 14:54:48 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [lOj4ueIRevXdzzWZBcKjib4GLMAvjEWkRonz5VY8wDI=] X-ClientProxiedBy: ZR2P278CA0056.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:53::8) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802125450.439724-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0037:EE_ X-MS-Office365-Filtering-Correlation-Id: c117ede0-1433-4986-e7b1-08db93578487 X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmrpbvZQFz99JXWGN3jXDJ2P6TLZZS3ohLgdLF7y+3nS9fChMYYL6BnS7Da845lxhDt4AETYJXedOfnlnQmx06osG8g29jjwMv3y15jkF+NDgYN1rln7xWEDzEPsBhHL+ixbj8WtDlUBfsc2RbGCuTnNd5twWpbRGXvCn55FQAj2LRh7loy7Y+k9omDIzc9L61/bbeGOrL0D5LEwxDt4ZGSgOxbiajapP7W9pbHpdrOFabP+4I6zj+Q9BhzTn66tHfzVDtKDxmeEEYNWaKa7r7SGMcBcUFVYnz48uE3I9wwN8Rc/r9BmtdioBOxc4Rm0eLChExalwmACHnWSQwafly2PpbQcFvKl9yZ8VVbaoAnfhpXQE7d/F6ShbJmyJGOClnoxFzLF2B9yPGRdeYdhizRnDIQUZocZjtOm08KLtquSWi31ZtWyuxoT9ocV4sQaNOFpJmlrOJOZD+xi0Lwhm2qFhQxiiLUoRGdslmvZRgpmTsIZxj88fBOqrMGxZ28WWnZ5eCi/afzFzcwFWFqiGos9meD6/ssCD6IjxXOLbg2ZronvARBCH0Bs3teWXxc4MCrMaUMIzoZexXyQ0yJ8MSVwwxXDRS8bTT/fnoGQy5E5SUkZeftBinMXgzzuwx2VGf8msupysHo6nwQ1/TeLwLlVsVGuJdPNyZBYH+wlJPxSk5zxYsvkZ4KF3pb4Ed2uAIVfs6zeQSEZscIpMC/t49cerFSNrKnbGotxchztpXAVDHVjQpY45IHZ6J/ch1b3Ppo= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RFbgDdEFGzmWmhaPOkFEsJB7oqrRnFr7QiA4dtkHmoan9J3sDqrp/f/km2h6yAaZ33dz1SLC3QnzAD32abFymGnV0y9DLgXyrNNPWTw6PdeZKi8hn9XkofDkKKQknlGbfbkjSGbFnXeV46UZoraShiVuzvHjcNW7ku1TQQhZ/wuRb6iWUYoHNbvVvFfOlAhAQCnj11ZXEMco3beDw5xPaK4nMtfRMEJKYKP6Hlv+UEmxs9ESlV0uOUByTUT4aRy5BiioNfRkxi//rOmBXNFTEyereU/5GqQ+eM+IGJdHoHAV0KmQaq1irlari8PxHo1Z1HEYllFHtk0Un41uZH5SV/ZEOyFrnJ1UG5jWJBgbF6hA26ygMFf0RcpMp+XPyg35znnf0cnLU5lAmLvVUlt8M3HDjM2a2spLQdiVBSnPJMFzWuK8LfolZg6SZc8P+dnoRV4zlTCzIEEOdIR9HC7dL9plBqrx3aap3hE0guh78a3tBXMnWw3xtr4KlRk38ue6EePpvRV7ezOwFoyJgHkE/HqdFKPSsfumsCmyD/tBrT2d+1st3PzGbc/11c7tUfrEUZ0sFWELFIuaXz8WpsZKmBKHIy02quGkWJmZetUVsBLQT4RSHLZ8IPZZdLfyLjbO X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Iupsj6H6jz9KhUexLDRIDiBOxgbbccb0utzomTxQuUQT/FFj+lRnpIEKXJUwhFjlRfanR5sv5VRDGfAH/kC5JSw/GbqmLj9zHgimwvP+cTOv/ju0lPt0rfzr9Xt+ymZzm1phqmcsjX73ga4+vBRrrQ+H9oUTsS7JxHHJ/kzIPC4FMNaB3iLJ2lqy474m1yoNEGiC2pYLS300JVTFwhYUPuI+rf5nBmTg/uGvE1TazzlMhzbydqMOTtKZVuzFIasEYSmtzrIU0rdkx73jkykhdIRp4/lNtRJySvD1C1nr81cbi+J4V8i+sGURk5yaQ4XlVCoi4FM0H1JAaegMX/RfcF2mX7qDeHJh27tidHM2MuuTZ9kJzwI7YH9+iGjBYgHg/8sM4gDnMps+O3xeXOV2KOCqdG8rN0VWn40kE8S1Gjb2DWfqZslBUWmFnnnjFDdjedIY3e/9I6Q+B43TiCV9oFdjbrODQjeT+OVci4BakCdlbW3JmVXSmzXyZjaAIzT4CJ4hB/nHxE6JBAUG6IGKpQGAFaiK69rblmQOXPbgyy2JP6bDq2lxZ1HpF6iHTTJuvYxMO9A5K1J7+jQCP85HMr36t35xazsdBuu0qjydPPd4H8xtM/b+t+VzqlzPXz+2TyEGu1SIKGbhHPujMlO40F4R8y5oeltTnDFCWEoVSewK36IiPm2EZ6qKI1nlYwUsi3Q9e/iEzucLT/cDKNwz7+Qa2QtsZDYqZNikQsp3DJZXU4lQccSwjgZUV8gNBhbupsf9ru/HUUU30yQqJQI3N8nlKwynwEXWlm4Zx6CGjglIU1WtIqrRfLHR/ri6uCklt/lANOW50hB8xzJ7487bIZtZXScwD/tle4jTnrnKM5159QAZnTkPcP/w6iNI3sSeRYsy7+faD0gV1CWb7IyJ9GXPczqZ86jU+7t5ji4ndF+dxWZ97aKJYLqAfWiPuM/Dh257nFpzKGZ8MrwNbOmiHzIWyfeb9zyGGxsvgutycTUZkR4dx60C/DXeCuRp+fNogEJBSmX9RJgKLQZlbNhFh5yuSVwkK0Hr6PQzCqGRIRycKX7t9Ka1Hjofn2/rDjBKMnBLHrIz5UvTm+YeBCkgEVjzF2s2Sx8OQRs61CrUJSGkYwmhDYcFp95iSyCeV5w+7FjDpNPbsN2JGVkeg6wRhbTt9OcWE5MQ0nPpf9CGzhZsXM1Jg49J3NQItBVNdy3aD8G71jkMK6Q+1Nz2Bj+VTxUqVfvJVT2wRMcekwZkPkvB8kRP/fGxOMsQU8VKnZAg X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c117ede0-1433-4986-e7b1-08db93578487 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 12:53:50.0577 (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: AS8P250MB0037 Subject: [FFmpeg-devel] [PATCH 17/19] avcodec/utils: Move ff_color_frame() to its only user 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: DUkRBl67XR3u Namely h264_slice.c. Signed-off-by: Andreas Rheinhardt --- libavcodec/h264_slice.c | 34 +++++++++++++++++++++++++++++----- libavcodec/internal.h | 2 -- libavcodec/utils.c | 28 ---------------------------- 3 files changed, 29 insertions(+), 35 deletions(-) diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 27fbd8d953..6cd7bb8fe7 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -28,15 +28,11 @@ #include "config_components.h" #include "libavutil/avassert.h" -#include "libavutil/display.h" -#include "libavutil/film_grain_params.h" #include "libavutil/pixdesc.h" #include "libavutil/timecode.h" -#include "internal.h" #include "decode.h" #include "cabac.h" #include "cabac_functions.h" -#include "decode.h" #include "error_resilience.h" #include "avcodec.h" #include "h264.h" @@ -299,6 +295,34 @@ static void copy_picture_range(H264Picture **to, H264Picture **from, int count, } } +static void color_frame(AVFrame *frame, const int c[4]) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(frame->format); + + av_assert0(desc->flags & AV_PIX_FMT_FLAG_PLANAR); + + for (int p = 0; p < desc->nb_components; p++) { + uint8_t *dst = frame->data[p]; + int is_chroma = p == 1 || p == 2; + int bytes = is_chroma ? AV_CEIL_RSHIFT(frame->width, desc->log2_chroma_w) : frame->width; + int height = is_chroma ? AV_CEIL_RSHIFT(frame->height, desc->log2_chroma_h) : frame->height; + if (desc->comp[0].depth >= 9) { + ((uint16_t*)dst)[0] = c[p]; + av_memcpy_backptr(dst + 2, 2, bytes - 2); + dst += frame->linesize[p]; + for (int y = 1; y < height; y++) { + memcpy(dst, frame->data[p], 2*bytes); + dst += frame->linesize[p]; + } + } else { + for (int y = 0; y < height; y++) { + memset(dst, c[p], bytes); + dst += frame->linesize[p]; + } + } + } +} + static int h264_slice_header_init(H264Context *h); int ff_h264_update_thread_context(AVCodecContext *dst, @@ -1547,7 +1571,7 @@ static int h264_field_start(H264Context *h, const H264SliceContext *sl, if (h->short_ref[0]->field_picture) ff_thread_report_progress(&h->short_ref[0]->tf, INT_MAX, 1); } else if (!h->frame_recovered && !h->avctx->hwaccel) - ff_color_frame(h->short_ref[0]->f, c); + color_frame(h->short_ref[0]->f, c); h->short_ref[0]->frame_num = h->poc.prev_frame_num; } } diff --git a/libavcodec/internal.h b/libavcodec/internal.h index 480b18b447..7de6c577fe 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -157,8 +157,6 @@ int ff_match_2uint16(const uint16_t (*tab)[2], int size, int a, int b); unsigned int ff_toupper4(unsigned int x); -void ff_color_frame(AVFrame *frame, const int color[4]); - /** * 2^(x) for integer x * @return correctly rounded float diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 672eb15d98..da652d4db1 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -406,34 +406,6 @@ int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels, return ret; } -void ff_color_frame(AVFrame *frame, const int c[4]) -{ - const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(frame->format); - int p, y; - - av_assert0(desc->flags & AV_PIX_FMT_FLAG_PLANAR); - - for (p = 0; pnb_components; p++) { - uint8_t *dst = frame->data[p]; - int is_chroma = p == 1 || p == 2; - int bytes = is_chroma ? AV_CEIL_RSHIFT(frame->width, desc->log2_chroma_w) : frame->width; - int height = is_chroma ? AV_CEIL_RSHIFT(frame->height, desc->log2_chroma_h) : frame->height; - if (desc->comp[0].depth >= 9) { - ((uint16_t*)dst)[0] = c[p]; - av_memcpy_backptr(dst + 2, 2, bytes - 2); - dst += frame->linesize[p]; - for (y = 1; y < height; y++) { - memcpy(dst, frame->data[p], 2*bytes); - dst += frame->linesize[p]; - } - } else { - for (y = 0; y < height; y++) { - memset(dst, c[p], bytes); - dst += frame->linesize[p]; - } - } - } -} int avpriv_codec_get_cap_skip_frame_fill_param(const AVCodec *codec){ return !!(ffcodec(codec)->caps_internal & FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM); From patchwork Wed Aug 2 12:54:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43094 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp628290pzb; Wed, 2 Aug 2023 05:54:24 -0700 (PDT) X-Google-Smtp-Source: APBJJlFSb7Tj0qGYClb6LcnN5s9GyofdqaBbqWiuLBbcymlKoKZ0rubMPbFLbhRvmzSSfQ/M2/Ok X-Received: by 2002:a05:6512:3b89:b0:4f9:5580:1894 with SMTP id g9-20020a0565123b8900b004f955801894mr6341882lfv.15.1690980863668; Wed, 02 Aug 2023 05:54:23 -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 e25-20020a056402089900b0052237401c5csi10609414edy.153.2023.08.02.05.54.23; Wed, 02 Aug 2023 05:54: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=@outlook.com header.s=selector1 header.b="Ww4Ru/S5"; 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 F162368C630; Wed, 2 Aug 2023 15:54:03 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2052.outbound.protection.outlook.com [40.92.58.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 538BC68C630 for ; Wed, 2 Aug 2023 15:53:57 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iHJP991cZA21jgdzjUWgOh0cPrnCGgu9eVo9DHLT/Oiwxyi7c+gU4biK4qHTVSVz/9UQ7wuJ5C5YtfEY9/FIOcfxAMz01H1NKddNDnJaHg6cvbrBHMdCrBGlVJJEVO3763+22ADe7EWX+vhO9jgAilyB2BD0+cI/yTZEVspDCJ5LfXolQ+jv0M06GqUC9XzjRtXwdzJTT5M6U+dP002ksAokjuUyQ5Y/FV9qPt/MCwlvu0ffAJUHUWgOK9Mqu3+dLCHmjJVYEJPLuDZcgQ9uh63pxcEtsDoRG3muopvA4ylZnFoDicXJkapsVFbdz7YNT2ZvgIA+jd3g4eKaK6iEXA== 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=qm6X0XVcPq2/Sc6R+Vj7CXNHeqhlINvSU4+L40ktY8k=; b=N44LC7qRir0ZtAN360SkIUI3UtSSXpV8emykQCCesijewCNWDhiITU1UZN2KCUoG4AA8b1EuFRSY/6NP2KrBimphgW1J0t7J1eP2XCkmJ1kwE7TnoSQCte3GivB2zDhOvqqc0Eg3HLo9PQXmBTnRtbk9WuwrjVYKhIcR8TK2IJnHAPfbFR10rOeN1XjsqhEbqSyaB0gwtJtTpPz9Bp7wrWwNOWG2iZctHwkLaT+Z00vs1ULT/gQShnUSri9xRYaTS8PCc+TLJQ0K1kzBWN3dnn6n3NEwU7rHJPr3IfIalrczPkyrcBvXT+bhz5QRcR93daonROogn48w75y4wwej3A== 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=qm6X0XVcPq2/Sc6R+Vj7CXNHeqhlINvSU4+L40ktY8k=; b=Ww4Ru/S5Acl74LsFZCB4EAGK78Jd0S+Fd0o01qr5PuLXovdRDqOJUo96sesn7tSpK8ogKYuZhNoI/rXsybQYTSA3Nd/XXCT45tZrRE+cj7iqxNDbI5XIq9tkPaBpMF/5ZU2CjxccXNQZYnFQKaeU2gLoP7dIYx8hQSaOLGb7bNSAfXIrbGBCqakbCpWs5inRmoBiqcWDMjVg4j6qPGMqpMVhIYoPw+7oY/62926dlhy7QAQP++DmfnYQztX4PP3q4ljGHL/NaB1ahjrFu5d2qDmk7Q4hE/b7+a9Jh/61KhW/VxhHzbzneQyMcRmx7nwkrn4W9M+/Hi+q8JuZtG1IUw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0037.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 12:53:51 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 12:53:51 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 14:54:49 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [kY6d6vf4lGde/lnmQaKZLjCh0X6lMuaG+k6uwQMvoaU=] X-ClientProxiedBy: ZR2P278CA0056.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:53::8) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802125450.439724-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0037:EE_ X-MS-Office365-Filtering-Correlation-Id: 195a08db-44eb-41d6-97bd-08db93578565 X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmrpbvZQFz99JXWGN3jXDJ2POijgFxaUwGchnOfJXc5Omto57p40GWIm+wMyyK66stQ5HYrqv4fKXQGfA4O7lL5cGLWJRORNWBqMdsqI1YEH1aCd/LBp+mutZ+l+8LaMcRUpa3extWz1nV8v4pxR/+rk1+0wVX0q7DiHnxqwZ/4yBZdCV6fgqRh7pgxphXm918SEx4b3HNrjYMPa3kusgS5u8CqAEmkeOzrMY3xwu+lQeLGW6yXWcJD4yfRFvId93MXpH1QFvIUnNB3ffoa+jx/wqFfzGYvy0UAAJkpaUtG+oQqeymxVMKKenX8LkGWt4wZRQzeUmTi+6fY5iomOqt0Hr1cVItsUwO/dPwSxRm0D7c2d1m5A7E2dMYv5yHPokGJ71gsCAnmR8pW21PwdT8oHlQ7aeoin3F/cR4aoEEOF7E5USAdTlanWuiYK4mTm8D1K78PRdmXMPyH+dPyi30A8AmrIgTAzEItpIRcuSOlsvayNTf5mPaR2an381cMzdLOWnxwlCE5Nr7n5aeUS9d1VSyhxnOJqBFQc6usVDq8RJeYa0GwlVnHpHN9xJ+rHtbL7woiHk99lOGdL77QyDMQYqwiC2HmCPHAJwG2z9hJdmZTzXN1XXZzOnorGlZGlfBFhrqiTM4iMhCa7ZZ1DbNnTfsEZrDSyLpfTwwC/Z+QYKJSDLoijTHmpbQEjArX0FaDnjUGs6A/0vJUFPPNYnt0ukLU0CKjYVtrV40RngyZjCRvrRoN0sUmPHHx4Mvg+uNs= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Y4Fn8jQkdO6FiG7w4+Brvcq2hDIFCkdn0XepQIKqv0zzixie5mHWuPn6LdZkOasAV39QFm71o7J30+ca+r7p7xHYroZLR54GU71htSGxgYQO8XhDYgg8bnLDz+pHfWMGoemmAzXUlagOgp4jFN9h4wEFv0Wk5MdFZknirTEeoMi4OTMR8YMN7H/TFR1qRu4okUQWB+uY5dh0o7h6MYq4e8kV7S7+5X7/dV3QOQLx7G5ehjg3xlrB9jYaKBxllNITi5+VFcB2h6NtYj9EY0gdgBZVuyiwP3HdCfgCeuYWZ+kRhS1pVU3mUgMLHQA1kwqC3Clt+E7p2pUNXlm3w5vrdtPM2CQAcMk3pDYa5o+qXR2TlCI6R+4Bd01jVdk5ZdX3R+5DbHulMAmE4qwBNQiRsB/Lq3KGe2fZDWhKQKaUBQniWcQjF2EjfewniLytv/HWIcOX3CMKO2ARFIWqgGWMqh8eVwn0CMgiaRV+FNQ+nZ8gmAYs00Dyi8HvevzpmDU6kIJqxE9VV3U5tPJVThIaydxitUxlkBZ5DaLAdkIMIZ9seoF9UdiHEhpCvcL5609qA08iFPBJ2pCMKgMIWxpWx7tFPMOr0EA2SDTykbtabLBcJUivs9GUXx9AbuFaZlz1 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1TZU4N6v1h8qK2k/15grFto+7sBpgHrjoMhdluOCBx0+yOivpopbSHf+GR+Cx2iBHoAAfkuN9PttXXs2nCEZHgvw6taTIk9oi9xxRv5GUUX1g6zGpgaUfYHZ0YD2ag8Kl6wvKH5fUBI0D3VGjlF+ygr87L0D/qw2AzwSFqWqdl84idH7dHNrh3uj47DMwX/qAzCpZGIq9Ze/1AoVjVsR71/i/2iiHxKUyVdH+hSsR63xxwpT8+I+ndBufzhWGjSvT/kKVGvW/eCq5XlEzX1VonzjOVPummAFce+1IsytrQXXsuozJYwopcWy58kjVWg7uUqR94enEocwrUFiY/lhzlzF30bBVTeZtPQSGH99yHhiMeQMqd5t/fJa9+YuHgq7ReWRwr9xxmS1ACjXghV+umwleNmVDImJ4zhP4Bfs6WgN+CZ0hD7uUHHYcREADwXsRU7BNtp4xgdKyQcfEEdKv3iZ0FxFk5uoiOsA4mpyQpuT63sKDqJBKvfAijahAX6amaQOYJg2pjGkbliRmxVoLVQqdqY048B+d0MoL5k5CIzj8aOqjNFpWPgN6EPltLw/bir9Mvp8rwDiG3/v8VPMUl3oO8F1MEqh9yoGXi72J+Nj3p56M0IAt6moHFW4E4WsZaZceWCUUzey7FJL8WHjiUsP6lV6TC31bSYq4kitu2QmXsRmXXC6AAL+94LwTSgt1pM3c2VpPVSm32/t4PbOzeg5rkIBVgRe+HXfACTftTTU9zSqEB7M7WLJAeqQD5RN7PtYZwrbE10A7MGLwSEoS2uPhS3fbus6dpjKGkkaIWwTPIuqqXFUhB5Hb92fUl88AyTGLs06j2vDQhqfqVBG/FfVSdgQynma8dNmv8XG/C412IiHknoH0zWkxSPQAjO2yaSfCYmYbVnq+w+tSl6JGi8w8/nGb03/AU8VRiVYdEarDZre6ZrHdAfv9WtjDsIe887bHqaObEg4VEB1gjohPQrNg6193qhhv55zhrQq8dJvRltJRBEptRD0kGQ1URejgs1alPqwIWluSyM0uA3G6rQZfCG6k8yNouzkbnckZ/+oF95zW3BoAg6WPdZPqotN3uqywHlcOBlvy21szry2tvJW5UVrFgGNSGbwwFkl51X1thI6AkxScy6KdQXQRbAMbdYehTAoNABDyhzA/82OU8NXPYh+SPnIenmW86ytJ+1mToZjKPMoAM4JVh5JrCbzB7HCQX7tDxF6awouTVkb2W1YxJEwu3LMfKAkxyvcB82gzZRyiAkveaYRBdHN0Jzf X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 195a08db-44eb-41d6-97bd-08db93578565 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 12:53:51.4833 (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: AS8P250MB0037 Subject: [FFmpeg-devel] [PATCH 18/19] avcodec/utils: Move ff_int_from_list_or_default() to its only user 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: 4hQEOXN+YCOu Namely proresenc_anatoliy.c. Signed-off-by: Andreas Rheinhardt --- libavcodec/internal.h | 12 ---------- libavcodec/proresenc_anatoliy.c | 39 +++++++++++++++++++++++++++++---- libavcodec/utils.c | 19 ---------------- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/libavcodec/internal.h b/libavcodec/internal.h index 7de6c577fe..a67cf713ca 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -207,16 +207,4 @@ int ff_alloc_timecode_sei(const AVFrame *frame, AVRational rate, size_t prefix_l */ int64_t ff_guess_coded_bitrate(AVCodecContext *avctx); -/** - * Check if a value is in the list. If not, return the default value - * - * @param ctx Context for the log msg - * @param val_name Name of the checked value, for log msg - * @param array_valid_values Array of valid int, ended with INT_MAX - * @param default_value Value return if checked value is not in the array - * @return Value or default_value. - */ -int ff_int_from_list_or_default(void *ctx, const char * val_name, int val, - const int * array_valid_values, int default_value); - #endif /* AVCODEC_INTERNAL_H */ diff --git a/libavcodec/proresenc_anatoliy.c b/libavcodec/proresenc_anatoliy.c index fc48c97d5b..c701275e5d 100644 --- a/libavcodec/proresenc_anatoliy.c +++ b/libavcodec/proresenc_anatoliy.c @@ -32,7 +32,6 @@ #include "avcodec.h" #include "codec_internal.h" #include "encode.h" -#include "internal.h" #include "profiles.h" #include "proresdata.h" #include "put_bits.h" @@ -198,6 +197,35 @@ typedef struct { char *vendor; } ProresContext; +/** + * Check if a value is in the list. If not, return the default value + * + * @param ctx Context for the log msg + * @param val_name Name of the checked value, for log msg + * @param array_valid_values Array of valid int, ended with INT_MAX + * @param default_value Value return if checked value is not in the array + * @return Value or default_value. + */ +static int int_from_list_or_default(void *ctx, const char *val_name, int val, + const int *array_valid_values, int default_value) +{ + int i = 0; + + while (1) { + int ref_val = array_valid_values[i]; + if (ref_val == INT_MAX) + break; + if (val == ref_val) + return val; + i++; + } + /* val is not a valid value */ + av_log(ctx, AV_LOG_DEBUG, + "%s %d are not supported. Set to default value : %d\n", + val_name, val, default_value); + return default_value; +} + static void encode_codeword(PutBitContext *pb, int val, int codebook) { unsigned int rice_order, exp_order, switch_bits, first_exp, exp, zeros; @@ -761,9 +789,12 @@ static int prores_encode_frame(AVCodecContext *avctx, AVPacket *pkt, *buf++ = frame_flags; *buf++ = 0; /* reserved */ /* only write color properties, if valid value. set to unspecified otherwise */ - *buf++ = ff_int_from_list_or_default(avctx, "frame color primaries", pict->color_primaries, valid_primaries, 0); - *buf++ = ff_int_from_list_or_default(avctx, "frame color trc", pict->color_trc, valid_trc, 0); - *buf++ = ff_int_from_list_or_default(avctx, "frame colorspace", pict->colorspace, valid_colorspace, 0); + *buf++ = int_from_list_or_default(avctx, "frame color primaries", + pict->color_primaries, valid_primaries, 0); + *buf++ = int_from_list_or_default(avctx, "frame color trc", + pict->color_trc, valid_trc, 0); + *buf++ = int_from_list_or_default(avctx, "frame colorspace", + pict->colorspace, valid_colorspace, 0); if (avctx->profile >= FF_PROFILE_PRORES_4444) { if (avctx->pix_fmt == AV_PIX_FMT_YUV444P10) { *buf++ = 0xA0;/* src b64a and no alpha */ diff --git a/libavcodec/utils.c b/libavcodec/utils.c index da652d4db1..bd4131db62 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -1142,22 +1142,3 @@ int64_t ff_guess_coded_bitrate(AVCodecContext *avctx) return bitrate; } - -int ff_int_from_list_or_default(void *ctx, const char * val_name, int val, - const int * array_valid_values, int default_value) -{ - int i = 0, ref_val; - - while (1) { - ref_val = array_valid_values[i]; - if (ref_val == INT_MAX) - break; - if (val == ref_val) - return val; - i++; - } - /* val is not a valid value */ - av_log(ctx, AV_LOG_DEBUG, - "%s %d are not supported. Set to default value : %d\n", val_name, val, default_value); - return default_value; -} From patchwork Wed Aug 2 12:54:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43095 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp628377pzb; Wed, 2 Aug 2023 05:54:33 -0700 (PDT) X-Google-Smtp-Source: APBJJlH7lrpFnx5fJMnmOaXKkh7IAhNvsvf7rkX6DJ0RJMjliN+7yJa+9ok2BB4gBnK+tl3hrF/Z X-Received: by 2002:a19:6509:0:b0:4fd:fabf:b6ee with SMTP id z9-20020a196509000000b004fdfabfb6eemr4137260lfb.9.1690980873021; Wed, 02 Aug 2023 05:54:33 -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 g7-20020a50ee07000000b0051de2c4f947si8500000eds.643.2023.08.02.05.54.32; Wed, 02 Aug 2023 05:54:32 -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=kwpWPNTr; 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 0CF5568A7D9; Wed, 2 Aug 2023 15:54:09 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2052.outbound.protection.outlook.com [40.92.58.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7959368C63A for ; Wed, 2 Aug 2023 15:54:02 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AM7r8daDXzIspu5fXdnls0QYMLS5ZNUoqsq2Lgb+2FjMLD9qnTvrAe/gVc0qvDkHHSlIz85O9UluQNnGINHGUH0REU2Jwv8qYajohsOgoLtG+EpJgV5YtvRsqft0fJYplhrRy2F/P5J6CTBZs1DYyn35dWw8lkULxSCsbA2rqoweJWGwuP/V9nTBX6nUXwuLrurC9KI3ppkhoVy4B4iVIvDd99RMP9qqoZmt912RTi93d9M2IMgR18gFUflYEkPxPRqPlcEQe/Lsvwx5n49K6O3icpmhyPlzu9Vd+uMJXLGtog4T9f27CrWOA9xlYAYLHZ7wZq2QgS3nMkAjcJc7hg== 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=riOc08kX64Imdj1M9CUAX3tAfZrMPPjSZD11A1sX2OA=; b=HObjhNH5UMed+/H7rxze2P23Uv3DJP4IV5dxG5afrJlC2i3dt7ef9YKFBN7A7Pj2e5HVIAQVXI623thUKSAX1WlVIkL9YmlIp/cLDLsCJDmM9SrTdE8rVu/4+cyaNRH5E3x+/9Lxi6GZnmjaECwyL5eyY8pXhNpbMipTPaNJVQH05vewb4iKLYpQZuPl+ZnVGFkUIzpouqBnwXJrZ+UF9UGxkEa58U8bkwiR44tKaXbpzLB5RmKWwQDoURzTHOZ/npjKMVzLIIsT6g3j4E0fGKtMYWOL7eoBlFy6kK/Drnd9UwNVBZkplJEoURupAlSJOoSdtlxQ0Whu7ciGCU3PLg== 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=riOc08kX64Imdj1M9CUAX3tAfZrMPPjSZD11A1sX2OA=; b=kwpWPNTrlp+qoBEjrETWu98fU7FuCZPf9rAm0gX5BiyxjFec8e+icsGi9QVgNTJMLbkKqnT4tofpJtdrdiILZQ3omtfQCu1y81uu5H8PZENt+tR/VvviOShTY3RrWtkGjge3trQzMfLr2do3COciopCeQywIMrLFfjW6Ry3Div+muekle94icA4wMFvHs2zjXSImZa8CDQL0iUqDOZQCcmx9UOcKK2d1Avb1o9qcDvlsUCHEgIN6xdx6bNxLBrAoZ3LMty0g2JJyeXNiD7rTp3mkd+SLqqkmAlmB8/uDi1iEHiEsFeMVxFBkqgCdPG4dE8coTqZ0EQVfMGTp5JOT/Q== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0037.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 12:53:52 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 12:53:52 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 14:54:50 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [FJB0q1BN4o04g25ejqQ/hUoqiG7ZF5BJkU1fFBMbiQ8=] X-ClientProxiedBy: ZR2P278CA0056.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:53::8) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802125450.439724-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0037:EE_ X-MS-Office365-Filtering-Correlation-Id: 4a9bf534-d46e-4f07-713c-08db9357862b X-MS-Exchange-SLBlob-MailProps: feAVlmA1hHXwRcHDQGHDn6wMPmKQ2Fc2P6HU1PO7QA6SdnNcjMGJwYiqthpjjELNl7V6OaWYVTwMwfZ+UHcjdVT7dIhdiVpSUeLbpHOdXQM9/Vk0CA34CMNUDTM8sTG2uD1p8jjHP2uEXxMOtmfebrYaBc1li+mmhu6WfJJaAumzo4ZSuKp9C8TFS1H5/lhcf4Ir60juO4i/ttghUhR78dNRrT1VoHPZZyzoRKTIb4doFDRoOHPY85mFKPJo28EbDYZC0CDp+1CqPZ1z0ibDNHx+XOqk5MfasAv+5i40p1nMSLJTBD7Ls6QWb28BnIjaQ9U/sMtWXkbuplwXTGV8+ZuyFgyGMHL0oZrS0HvkKFr9LwamNPOHZsITKp3bqfkvAkZEADdaXMydnTc3liT4erxTkE/09CHQX31aM1WK+9BqW+U8pEtVeCzsBwTlpzd+bN8ovo6inxTly5IpyAvCuSsevm6CjQIvV6l5CEZy/kflwYeqCsoQ43+M4Gp2hUvwnpptir8XEZAtSOOfF0Ep62ZW5DtShtfzwyE4WWdDlLgmGwsSZg4ebhtBytNPBPjvVrVjHN7FmRpY4mjzHYTkAvsok7+LDwCyZsjGfzk0/DHsKMF+XA3616Yaxdd8IWWBQOfWIhVy3e9JpV+h+dqKVSPnK5AgaUQ9ACZEp5UAfgiyjy+cCW7DHME198cDNG/kAoQKQlbzFyif0Q3FqGyx8Q== X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iNX48GPogF3kZZx0SUNkaDK+QHfKJ5CntWTxHJnfsRDEwRgJ2rLP/CN9577APKV7hkmv8Tqz4y64sW/mqGopDp8s1qpudOUZ98oDAa1PcrqFsvBLOW3vDqhzYBm9PJE3jGL+qzIhcx2TBM1ov4XeY6fXs8FAGOoPENiNuRfmSDjalWLPXotDZ8kIgPQSZ1gtc/drz78yrC6sq7RYrdrkYjL2gLKX/A7yTi1A1NmJZZGr6A0khIPCy7co2lYEQgVIzldrU/nMnvvtg9jrTK7aHa2rGaG61AHb9WRC4tWslkIdJMH2Ll7pKNtwfLBAnv8BmDj4bEdIgms+rpqwQShnLn5O9w8p4HTznKBO0gaWA7galpRQFuB5OOcXYn4x4oxqagYXwOmJOIuAN7voskQkIZ7S7LzxJORnEmZk3uX0KRD5e5nYaS1eArKYP11z0/gPF7RAs97fE+ZsCSkr0Dj2Kurbxrkc7uqAfKieM9DSHnRvAg0bXxUFioCgUqXKBu02ocs0SpUdO9ZK/GC+Mw4BTUZkrjl5GRM7xo/pGiXxqDJcT+8KCVFTc3Y8iGbm9k0ph2i/97VYQ5Knr9NNrSpHhGT693sDeN6d0V9pPve1TkvqKrX79BVP870ER6e4PZn+ X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zVkh4ZnDSYlRe3mgKMm4nIvgtso5HrIQs8/Lsrz2Kna9YF9StppGxNLf/IsPm8bCMvwvFXlwtCQbvjTbKq2IUkWsl+j2dhGzVEBWtgy8hswjtPOHFtgGSvO6cXEYgQQW6YVls0AyVZ28n6lHnov+ypI7/3VCCJXuZ/fQzaCg4g/MC4IRJ0ahyF58o7Zy8XFSlLT75ldNDgNLdk575LX4HPwnV9bbpjpBslhudJKksb+MwhuZjOkpRxNkDt61zUPKbZhuedTRIVPe1iV4HU0HtA+O5e84lMbV5i+F/Qhts5agHZJueDEWL2VnD9SfqtlgesjtUcJN+IhdNXDil5M8FB31yE/I/UTvXQV8JObTXF3H/LOjOd0Z2OZWkTjot1ENO2O2A1HekyN0TzbVWdSrNvy3jPozE1Vwy7aPGXmFYSLE/eNOGq4zJ+91v65itce52awndVUVXZbXFXcYUGUY8TSsR3rOggaJNm/TcDApGaXQ0DvKPXCoQhfgKO654SgPyGA3FSe91F58GdhmI0LHgMWKQyVctU2xRmiBH3xn1GpuCuEf2MK89hG51upV7QAfaGwPJlikaCsELrerWR9Ck/OZ1Wn5X3WB3dCUtARXrZBu4Wlet1tHNrEPpL+/db0w+Z7uuoZckZjPfDoO41jouNMrnSknioQPllf4mQoB563pRwNqPVtpmWb8nm53EFK77k7q7W2/15wICvS8ZlnBnA4aW98Q3fwcGy9fjUBJIGkDN9iIzhM4xZbeq7effMBUMHERPu3aBkfEj8nwrQ+yFPTiwAT2Tt7RKeAMMpCZZ8dDnSYbNHTXCx2/87ff2dxMqtrLtEyFPPZRsqA+Dd6VxdcOaz65aTx3jcRzSFS6bPdTaXZyajD80j4RyfnYa7g7lO4k2kYWNMWTY0ozccK3qQNRTrXr8WmudI3RGkoylxqXyA5N5641wROuF2v38dIck6Ci5fQyGf7Kdox9mYxRjLGVI0HcwT+y5TxqK/NjUODtNYMLAn9aCLIIkbOK0NHKYi7c7t02Of/Ay5im6/YndQ0J+QbBupSjEdGncioggFpSgfVZP7PZn7Wpc7mvdErA4qgQPoRYkQUraNmpP1EMp6a2ep0j3Du9xmj8dqI8vSXHCe6CO6X+VCaIg+yiOCctdkBApCJ3DEnM8gXl50eEn9m/IkfZeFeF/lc76yFzXSK/OzmfjK0kpAvmKFdQaAx3nAXGh88ZW12ra9my0MEqU1s/IsJREutkwLt1h1Asd2Jp+PfGLKezDaBz+nhI9hGJ X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4a9bf534-d46e-4f07-713c-08db9357862b X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 12:53:52.8241 (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: AS8P250MB0037 Subject: [FFmpeg-devel] [PATCH 19/19] avcodec/svq1enc: Remove unnecessary cast 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: JZyh8/Gwj+i2 Signed-off-by: Andreas Rheinhardt --- libavcodec/svq1enc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/svq1enc.c b/libavcodec/svq1enc.c index 4651e01ae8..5e7f410214 100644 --- a/libavcodec/svq1enc.c +++ b/libavcodec/svq1enc.c @@ -118,7 +118,7 @@ static void svq1_write_header(SVQ1EncContext *s, PutBitContext *pb, int frame_ty /* output 5 unknown bits (2 + 2 + 1) */ put_bits(pb, 5, 2); /* 2 needed by quicktime decoder */ - i = ff_match_2uint16((void*)ff_svq1_frame_size_table, + i = ff_match_2uint16(ff_svq1_frame_size_table, FF_ARRAY_ELEMS(ff_svq1_frame_size_table), s->frame_width, s->frame_height); put_bits(pb, 3, i);