From patchwork Fri Mar 22 13:58:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47314 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1743:b0:1a3:ac71:9534 with SMTP id nw3csp151505pzb; Fri, 22 Mar 2024 06:58:36 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCV6q6jKD/abqEE+Qxexw/o2QBTFWGSGq/qzZgp2XqlnO85RZ76Q7+YGemZUSLwLbRv7qu1NwA38M8yzNDFkM0FkSo1UhaRuOdn5FA== X-Google-Smtp-Source: AGHT+IHXeE3d6tmzF4NjmzpmikZrUNDXTRLvFIhgKUyNSHQVNmo9+/Lxwr44ZpKFdrDHTJL99hS2 X-Received: by 2002:a17:907:2d8f:b0:a47:355b:a024 with SMTP id gt15-20020a1709072d8f00b00a47355ba024mr1123595ejc.8.1711115916581; Fri, 22 Mar 2024 06:58: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 h15-20020a1709067ccf00b00a46bf3dfba3si932708ejp.1041.2024.03.22.06.58.36; Fri, 22 Mar 2024 06:58: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=JP0Pm+XN; 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 03F2768D598; Fri, 22 Mar 2024 15:58:34 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02olkn2068.outbound.protection.outlook.com [40.92.49.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 204F768D4DF for ; Fri, 22 Mar 2024 15:58:27 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Nh+XIv3vK4TqbkYVgwK+1Lc5Ip9eajnsAYNroIi8OtCjR3leXMQLXAg3zHkT9aKGpIP6FizlKcJUyQdYFWN3ZBh9K7mvZtD/Hd2Dwex5a2zJOB5Hr7xq8mhqtftTG97xFX8mAycXK5jVryR4Q+ZK/bngGIYGNlP1Bi0HGgcA1R0Mtpu8+J9DKasbYaMaMNBnQgHX2eJwz83qqYxizeILMFUabL91Sap761HvPNQ8vMYqG+tBK4Fh+lXP5ZVpih6lqFOfgV/v97CU0tT63jzlnyaC9oCsxhdGtYXii+fbH7Qr9gyQv5z/n9LwhCtNVtLvOm9bzKOwd5Q3vvDE61bSYA== 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=kk1+BXe8XLexp3UPXr2Vf6rPF+YZHBbnuMXWoY0MZnA=; b=l07Ai7xjiHP09XfWKsU2+nrOEG4zBx7tATIK4Z/5vNndBVsWRTee9EoHVIterqs9NZ2BPxrvCg+w9YAl1Y7haoqywo3OcJ5cmLtKerbdcVp4xI34WTnwO5jNvYG41n4b+rstiV6Nlacxb0+eP/vzu47PLxcl3go+PZmlkpCYg/wSWONXkILwBhAteFbLrvxeMe0Ih3p327MwzCLTabpKWvytk2W8s0DquaPP36ZgnFYECfgkdRZNMFb+78T83cdH97c1RGPoTtHKBkZLbYmIS1Ox88FxV73xGyAq0Q65B/X/NDSB83z4h1LB/LLI5JagcNsw2moyiUZrdn+rhlXITg== 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=kk1+BXe8XLexp3UPXr2Vf6rPF+YZHBbnuMXWoY0MZnA=; b=JP0Pm+XNjs7fVEseH1w0FRUPuJQtI5BzqKpDHpqMdldjuqOc97uAaR/YQD41ptQuiqCLNhSxMJu7NibRuOkDuFVji5w1W+fVa0fpnsr6ltLPteRnEXWJZ4zop3Z3H4i+2JUJJumZEq9zS0+uVypzu1+gnefpSvAeqhmVGtCGTZ0xNPBkgdHVMk2xZZG5D6H8J9wMppBiwsmx/UYW8WUzTaW77IQRqAssC4M7eXKa6uLyIDAudLg5CtetjBr4TH7Uh+8X08KUIHGp4JGyLEtfMI7dwEXcMU5RtkfiJ9Ha2rrHHSamHvJ6FhAQhm/cnmpNTKFjsVyJqbrNnOpwWnBDhA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0069.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:377::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.24; Fri, 22 Mar 2024 13:58:24 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d%4]) with mapi id 15.20.7386.025; Fri, 22 Mar 2024 13:58:24 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 22 Mar 2024 14:58:16 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [6m8XZ/6S7J04daK8hk33LdJb1PaqljfErTSwxYY+DMY=] X-ClientProxiedBy: ZR0P278CA0213.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:6a::19) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240322135816.198916-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0069:EE_ X-MS-Office365-Filtering-Correlation-Id: 60fd4aa4-f09e-4fdf-2ee1-08dc4a782415 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5l7NOPMIoBVqHehkhBnfw6/Jca7OURi9uZvAC+QJEZBVt8YAU6JPCmhBqzdRX2alWclgGaG2Adm0TNwZXQqvoq/t1Mh00To9fPgytWvsyCOG6dy1DEvpD7BWRGPH2mufZdTUpXjf+giAdmyV7VQ0UOYgEtclts+WTkP/LCDIOwEZs1HOn5QoOif3wV4i+v+AxO7wneiBG96E7AVC3WFIy+XBICKa5uKDgjDtPdfi+xPQ1JuVZ0ZBTULef+i/37M+wuclEkobAg4qU9MU1H5SFmJ4UqRN12yTYiA7f7K47YwexsaczhU5DhNEsRzXB553vNsL+txHbXJvb7JywJXW1CCV1+uXp62VovccjjIdFncy5O+2uTiaiWhBKriEa6L7xITTNvExweEtr5/nhN6LBa+wIK4SrgEsQvt5UmpVg8ButaPL/hPTp3w0QIgiYJ9iN08G5JkYX/UJF1LzzCY220hOh26RB6UO5tdsQql47fhkoP2y8Lhy9KGYGXAsqxuJNJPi7FaAe/jsTjdoAb8S/GPL/y1EK+0bm5PrWoxDlWY5sUm7IomGEQcjgTOaKzDTaT79A3K5ltNofQPH4UoMZmI6Y9XRPLRh77SrDrkENOcEX2hzFgRJ1YBavFH1Loap X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Tp0atn34LxSYt2gRX4MGnrrJBUM/hO5J0BqWbCg2V1NbqUXIsCOFLV1hIqyRLpyM9H9og+i88Boce1q18IESCed8ZZrDCR4UPHFQFwxc9e0zmAjxrmJekOWlQ/eZhugt5+90hGFdK3YnALiigNecsOssO/SLIaReGt3H0XAnoIoC0CkaD1ISExv4oUZffImpl0DafNGrOxHqop9UPt9rd+P8tOZHl+w/6ddu2Sr1uN9AMoceXDyUrr94uEzhz7zwOZ/9icYYL92WpUo4ftMUjZ08TLkIaYNWMvo0t7mIk2JoimazkIJIvxtGLQVakhQhyTFtyyjsj3OfMn3P9o/KVhNnVM1R47xaKcsR6eE9K0QP27o8UpA9PP0i6mxLDRhWjOyqbzdG7xZCDWqynswgEXVMmiDvuNWpnozz5eYOQhD6wwhEFNG1i2Tvu/kZOaCj+MbkgkhmaEMONz0M6i1pshl2m8IJnbfMLV+5XmZOBtq0WhgBsbjYyfs9UvQ7e37ppqKB24ao95VgS14ky+igFNWOfIGlia8ES39SxLNFkX3+imF0vQOGRwWHDQq3vgcPInlB2DM5eU8IP/eilQGLgtT2d6smyapH5p/X+9d6xM42mNsoUAzK1p8Vin7rgiW/XcfXS92igm/Y1k99FjL3BgVPDK+r2kYX7Rj5GRkPAtDM9rbo4GMN81rWQ6Qje/dhXX64MkX3a56hqN4QLx0gFWbakK96cHI9zhxHP/sZpIwXgUfLXBG0oBMayHbGVxRqK610pFxvw3Bjyc/tlkU1cJL2JHqDeLYnokfSuQBMZFvMAEc45gVXq9lRDbMZOFxjg35x+VZdVfdTILV9iyCNG/JkYGJy2E+BeqXDJmhPqU7xCjCtrGkaMEMNPBih31HoPYRs+6HADnZllb9jkwu6KxsOhJhBCe3ruoirJAHy3bS67VoqvL7h94zg3cUOjqwSNlPFC/ABvTtQkE9vELNO6CiRKuX595JQXpplyGN0+vYKIPurwvzpj7QfQ3chtiyS8OmvF/kK/LiROzIVv0bXesY52Y5y2E1RBrVEKXWfYWOdwh0aStQ2m0WRdL2E00WDtWdw70P7Y6kxwpYH3tGaxYHr7S8n/81OBYFT2BcMbN62t/gXYllOtJ6ewGFcrkwKarUcgVw1II/NkYTRtA0FIMkE9VFBcLGZDRg509lKjD27fRKqHpwSSH/Ugz8xmJBxIjxB7AQVSZhtphn6FqyCBellSL2rxkTtuW1IHU01OA7e4js2S4proJh8aL4IahoZRbCpeqI3xoz9z3x0csqnxA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 60fd4aa4-f09e-4fdf-2ee1-08dc4a782415 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2024 13:58:24.3962 (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: AS8P250MB0069 Subject: [FFmpeg-devel] [PATCH 4/4] avutil/frame: Rename av_frame_side_data_get and add wrapper for it 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: MjPf61EmXNHb av_frame_side_data_get() has a const AVFrameSideData * const *sd parameter; so calling it with an AVFramesSideData **sd like AVCodecContext.decoded_side_data (or with a AVFramesSideData * const *sd) is safe, but the conversion is not performed automatically in C. All users of this function therefore resort to a cast. This commit changes this: av_frame_side_data_get() is renamed to av_frame_side_data_get_c(); furthermore, a static inline wrapper for it name av_frame_side_data_get() is added that accepts an AVFramesSideData * const * and converts this to const AVFramesSideData * const * in a Wcast-qual safe way. This also allows to remove the casts from the current users. Signed-off-by: Andreas Rheinhardt --- libavcodec/libsvtav1.c | 6 ++---- libavcodec/libx264.c | 6 ++---- libavcodec/libx265.c | 6 ++---- libavutil/frame.c | 8 ++++---- libavutil/frame.h | 19 +++++++++++++++++-- 5 files changed, 27 insertions(+), 18 deletions(-) diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c index 6400a6507a..8fa42d590b 100644 --- a/libavcodec/libsvtav1.c +++ b/libavcodec/libsvtav1.c @@ -180,12 +180,10 @@ static void handle_side_data(AVCodecContext *avctx, EbSvtAv1EncConfiguration *param) { const AVFrameSideData *cll_sd = - av_frame_side_data_get( - (const AVFrameSideData **)avctx->decoded_side_data, + av_frame_side_data_get(avctx->decoded_side_data, avctx->nb_decoded_side_data, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL); const AVFrameSideData *mdcv_sd = - av_frame_side_data_get( - (const AVFrameSideData **)avctx->decoded_side_data, + av_frame_side_data_get(avctx->decoded_side_data, avctx->nb_decoded_side_data, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA); diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index 3d195fa6b6..eadb20d2b3 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -1044,12 +1044,10 @@ static void handle_side_data(AVCodecContext *avctx, x264_param_t *params) { #if CONFIG_LIBX264_HDR10 const AVFrameSideData *cll_sd = - av_frame_side_data_get( - (const AVFrameSideData **)avctx->decoded_side_data, + av_frame_side_data_get(avctx->decoded_side_data, avctx->nb_decoded_side_data, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL); const AVFrameSideData *mdcv_sd = - av_frame_side_data_get( - (const AVFrameSideData **)avctx->decoded_side_data, + av_frame_side_data_get(avctx->decoded_side_data, avctx->nb_decoded_side_data, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA); diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c index 45349a85b9..d3e74eaacf 100644 --- a/libavcodec/libx265.c +++ b/libavcodec/libx265.c @@ -211,12 +211,10 @@ static int handle_side_data(AVCodecContext *avctx, const x265_api *api, x265_param *params) { const AVFrameSideData *cll_sd = - av_frame_side_data_get( - (const AVFrameSideData **)avctx->decoded_side_data, + av_frame_side_data_get(avctx->decoded_side_data, avctx->nb_decoded_side_data, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL); const AVFrameSideData *mdcv_sd = - av_frame_side_data_get( - (const AVFrameSideData **)avctx->decoded_side_data, + av_frame_side_data_get(avctx->decoded_side_data, avctx->nb_decoded_side_data, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA); diff --git a/libavutil/frame.c b/libavutil/frame.c index 8598aa98a2..7dd37e5490 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -813,9 +813,9 @@ int av_frame_side_data_clone(AVFrameSideData ***sd, int *nb_sd, return 0; } -const AVFrameSideData *av_frame_side_data_get(const AVFrameSideData * const *sd, - const int nb_sd, - enum AVFrameSideDataType type) +const AVFrameSideData *av_frame_side_data_get_c(const AVFrameSideData * const *sd, + const int nb_sd, + enum AVFrameSideDataType type) { for (int i = 0; i < nb_sd; i++) { if (sd[i]->type == type) @@ -828,7 +828,7 @@ AVFrameSideData *av_frame_get_side_data(const AVFrame *frame, enum AVFrameSideDataType type) { return (AVFrameSideData *)av_frame_side_data_get( - (const AVFrameSideData **)frame->side_data, frame->nb_side_data, + frame->side_data, frame->nb_side_data, type ); } diff --git a/libavutil/frame.h b/libavutil/frame.h index cf9ffe1ba9..373866c600 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -1051,9 +1051,24 @@ int av_frame_side_data_clone(AVFrameSideData ***sd, int *nb_sd, * @return a pointer to the side data of a given type on success, NULL if there * is no side data with such type in this set. */ -const AVFrameSideData *av_frame_side_data_get(const AVFrameSideData * const *sd, +const AVFrameSideData *av_frame_side_data_get_c(const AVFrameSideData * const *sd, + const int nb_sd, + enum AVFrameSideDataType type); + +/** + * Wrapper around av_frame_side_data_get_c() to workaround the limitation + * that for any type T the conversion from T * const * to const T * const * + * is not performed automatically in C. + * @see av_frame_side_data_get_c() + */ +static inline +const AVFrameSideData *av_frame_side_data_get(AVFrameSideData * const *sd, const int nb_sd, - enum AVFrameSideDataType type); + enum AVFrameSideDataType type) +{ + return av_frame_side_data_get_c((const AVFrameSideData * const *)sd, + nb_sd, type); +} /** * @}