From patchwork Thu Aug 4 17:36:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 37134 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1649:b0:8b:613a:194d with SMTP id no9csp536745pzb; Thu, 4 Aug 2022 10:37:48 -0700 (PDT) X-Google-Smtp-Source: AA6agR5P0MV5BW0HRgL02mPr1YxFR+3cRtNlRqcNhqEDZweRHG6YheyTZWBLAdIczpG7+0l0yHqS X-Received: by 2002:a17:907:8a15:b0:72e:ead3:16d4 with SMTP id sc21-20020a1709078a1500b0072eead316d4mr2218280ejc.16.1659634668751; Thu, 04 Aug 2022 10:37:48 -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 hr18-20020a1709073f9200b00730638d91a7si1461382ejc.405.2022.08.04.10.37.47; Thu, 04 Aug 2022 10:37:48 -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=YcxLLNFh; 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 8167068BA20; Thu, 4 Aug 2022 20:37:30 +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-oln040092073091.outbound.protection.outlook.com [40.92.73.91]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BBCB468BA07 for ; Thu, 4 Aug 2022 20:37:23 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IwIKP2ooyOVb+c07ncOnnsHV7y2Ogr8UDV+ZyEPPuqSG88VF2SAH4NWqYHmjXXNo6sdyGyQq6hcjNuRQt/YoC0mSf/8bR+6mpA4sKWgvbkZC83kjwt5teJ6Jw9oBvjI8j0NYAMI+0tGwuiUxVc0B5nkc7qlT3mjSrA+GPVE2VwUhQFIK1+6JS5pWtSLdvOPXFYXEUlNNqePIuNMfLaIG95TigHF/zvoFZ5Ll8uYRWIFsTXe8WBQRpVO6oUl6xGd37zKN/aICsAFe6eIukZ9kdaX5y13LMIyd1AlkOMr1Cg825nrladWRQ8zVRbjMQ8lOv02ByFgKrT8IBBVO49mw/Q== 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=yTnk8I38a9s//hpKt1xnEIBSYNlD7BpBBc1LTmRiBbw=; b=QVmoG3OfnksvM3aj3FHCx7jQY+GcTrCyZsg2+7cPswHrFe+8Q3CHFsk6eWm5KD+Dc0APy+ju1aNp1woIDDS/9jx5OedDpAtMRUnMDIedjCcx1Ge3Rf29B0Yxwhemw5sPAXTzkdRhT4ZvCRFjO74yK1lVvp9x546YrRogU9mEtbtpdROpgf6BNce4m6ZPzi7nZ2hsrebvzf4v/yT4WAYGa/efSe/YOeKkL4hw090yKBrfwGynOyagJ2MKCpRWpCmkR8VFA4teYPSXGTVEv4IVbZu99N1oJDjbA1QGvDtB+lfRzh6jDoJuYuKW2iaq/dAmA+bI85kT2lIOf4ncaLGrVg== 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=yTnk8I38a9s//hpKt1xnEIBSYNlD7BpBBc1LTmRiBbw=; b=YcxLLNFhmA6ndJ2VJx3qbssgvsiLx3TVFuXdsMyme1DRgIAThr+9zAsJ2hdkObCLIIMZNYIWKhHEcMFw1VrqCvH2nMrBWh5WsxvKbpk7esOg7YHb2Q0+Craw14Drrq7yi+qoMyhdUbJ6iqgV+Cll/0lAK+Vkqlu/uljuqntxK84fLupn6jJtLMWfTJ18cNDz6KRk+BHLX4LhHWa9JCwdmf8SKWwtbuV4mDRV+R0CYGhwRSTVnyFlRFTT4SC2wmf9EEyykddqRJldsPAHydqR3TxoqDN4L3aCDLU+G4RJ4yNEMFcRA/S1Dfs/dKzqTdgQxwoR0kRUrp/jm2apfYmgsg== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by DB8PR01MB6503.eurprd01.prod.exchangelabs.com (2603:10a6:10:154::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14; Thu, 4 Aug 2022 17:37:16 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46%11]) with mapi id 15.20.5482.016; Thu, 4 Aug 2022 17:37:16 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 4 Aug 2022 19:36:51 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [Y8FYcXijTzyOkXTBa5vWFjux7j1HVCW3] X-ClientProxiedBy: AM5PR0201CA0018.eurprd02.prod.outlook.com (2603:10a6:203:3d::28) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220804173655.1561196-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4d49179f-f7a1-4e1a-a1f9-08da763ff91d X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVBLZe6CjjWHQcN+6fAcwmpd8ANkgQ9hSqYIHpmZvn+6f5xZ1SscrQYmBcK6V0dS1DeeZELt/ivJCNEJoUxHdXGo9noTmWP9K2cUbyB1lQTiCM4peaVNMvCzUjifYQRfoBnFKwhOnqsKsw2Vcvr8JaobnJeOLaI4Kq6OW+u/7nMGIgK0AJh1lWUWUB2HojWZvXdG2EuV/ws+sdY2nJHXwTPORarZ1Oh9KKXwkfnMXUrltUYuetjf6ra5lPsrcF6O01MfQ5RjdO1WotWBXofMhTrm8aC3RdQMe5xZAmIrLx7/9Nrc5t3T7CHLNhEZqixqbDUJe3VgZj7j3wGO0MXeZoa8jXyJSnGlSdboO4HO+6uLSYmewRrOPdEmS4Y0HC3bNcv4kq1Mv8GjMnUcLbxpEQfTpdrTVMTVHntFktehwAahXuTXTFo7FPYIk+LBBtfMYxmdAiargRogdCQQF5zm3JV7PkIlEGiLHR7Medn/YlJz8oC26m5oHzsesuREM6f9vr5V1GlQ69LXjkZRFvV3hyZMuuvlMnScYdX3Ie0Uuf6jfw56rTH6Gsom+6ba6+LC/CL/HCC55Q+kgnGd/va72Z1RVTDYTKVhQrYOjYzRYFmPbqGp6VoU2brjUi49ADTejMbq/u27h7VJUdZaUyU3fGl9unVyMGMMZLKqSbnK7u2QVmJCdetglR0aBCi4o1iE52KPazdk1s+r0SEh1c4YTLZWKZDLT5rMsY= X-MS-TrafficTypeDiagnostic: DB8PR01MB6503:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tDfVHq8YyYWmoq6OSxBuETPWA9EdaHi9GNyRdtKyGpw+5uUTkEERzl1m+1xQFXZHmyBL07GdNXnwMJWO/cEfM0cljQkvqi9I7MVlS9B2iIPuYGuZrwzRx+CjbZK54oW8dRICVrGseYqUV+BK3dkBaksKcCOvdzua5huHLcIYaNsoG1XvgLFLhGpS1kManNESGn16cw9NR2Jz6tjx0OANBEMmzhGnPFndeGMa2xt1cRnABz9Edakh30dVIXKFusR9lKpbx667YJXVpHonhbvCZ2aj/phgYAhJuzlAXlrk/UmuX/xwnPRQNx87INUd8rbFEVZiuCRKtYlm2D/vijHY70QNibyvgU5EU4pHaifNac/NEsvpyIXjFg6UHGHH++Jh+SUPBJozLhIzDtnNKa2lKv+kHAb14vPCoz7qamqTXcWOVVOq7c3QktKe7Fnu7M2qY2juDV3Wjgwo9cIGVR21vBsgZ93fW0mZ7Vt/pYnnvvQKMPouvEbYDtXKpXUZj1lGfNPtckX1NtkIWFc/cTzcUsHDZy6PTULqZDbrFj2lXpIz0mNCdA0Uui4qrUtVtIJ8qZ8V5RfC+vWMkKiT2/m9MIW9Jm5CAorWpl2Ucb0qRHaHdCuch7wmi9GqziRtVGT3huwbZU2o5hu9bLqzKGAMvg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Y+E/eVLwI+BmHS3Wlj5B9qKXJzys/FYhN5mBTQoua49tn+c1JcdjLfIUen1KknUkJ4g9n3QIlC1mijdi7GCA2xqvsjpX7laPBhbsVoe//3e6II2kRthAP//iEPgECYTcXo51MyIC+JMkbaO97iarKq01cqxhQZAqVlQAFZqUacUb7OO3zjtuyhuNvkp/2rgzLV8R2sHeCET3+qI+wIaYGSD6Kc4u5hhgkrI5CE98d/Q+nEK8NeKJctg+bV9iXTMsCtszpiiGPjXovTCI5Vrdy7hKh3MEOvOrj4p/vi/8W+TdkcTgiNquCWQJJQmj+BAQaQ0SOrHcMC2Mn6zS2M+ibKssXLDeUsOvmSmliR3RZ0KpRELQwFR1ffgnFC1SM3RVWMH1g0eKfGT4B+vQ5ouQzWO7FVNc8ylxiq79CMdglr3trflBurGad4nMyWMmCP/ujSEKg7fjFct5RsnIVaF5VCbEQ9+gFhTASe2prCfcF152aILZWHIpuYbE9121S+PczRy5/hY6KGL5NUzpKcoUJpGxf4Q4I/0pBN3rYH21vW1ciU+YjcsBSCHITznSMIJYtbpBuRqN/HDJReXRQjx5hGhqthtXS1K85Z6YuAXV+vFvOj8E5tNtldTHzlFpmR99+ufKHh/5F1ne2z3WQWPqpxVbNIuUaNeAhqVRTiZaguQuMdaTSuQKsZwYvCoGFtnI7s7XyBOY0NesD5FhH1CwE3TH8eYofPNSTgEPOIDkJTaLZRA+5oHBsHIORCsk/3tQtd1ydLUDShHRHGp6w9KBvkHLhUVt52+kA8tPaIMM2QUbzG9hTd/7fNlsG1I8t1klL68u7glLGd8hIXlI7+fJsqUlnNId4gYNZpz3BaAvTOWxWasYBC+bOBPip2LN0MzePHFLfJc++Ch0p5vW066ZmOF/xLY5pSfWSJZKuCo0SsroQWHzoRKod5ji+e4mNWzU5lRYEyCu45Kr7xbj7w8wzq7VDn3X3cRz/r6JPSCuXxAyQoekav7mrZYXTMBEoiD8ILqtVR1vWsC2PbS0raYDYnE2ER5vvghykBThjy53TIpDVP3eBVsmagq6EHGvRki7Ci7pgGwlRfIFCwq1ODcoiMlkc4iw1jIkMVr7NmnZ/kcZdVX3i/hAnK3/GtcYgHaqbEBzm1W343p+hKoU4QFAEFeahi4pMxTjgtc4xuS2lP6UoX1JB6vaPGZmoMBXkizHJv94V80Jmd+EUElF2orjzje3+AbCMmkEwMNHlw7izRZJJjY969Ia9N7YbuPxwycPXSHhX36KLOHoy3Y5SGQpXgtVQebBEVG6zujcbxUZhQ8= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4d49179f-f7a1-4e1a-a1f9-08da763ff91d X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 17:37:16.3176 (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: DB8PR01MB6503 Subject: [FFmpeg-devel] [PATCH 5/9] avcodec/cbs_internal, cbs_h2645: Add and use new descriptor macros 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: WRZzHTdlnyjy Signed-off-by: Andreas Rheinhardt --- libavcodec/cbs_h2645.c | 56 ++++++++------------------------------- libavcodec/cbs_internal.h | 31 +++++++++++++++++----- 2 files changed, 35 insertions(+), 52 deletions(-) diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c index 12e38c80b5..117b609dc3 100644 --- a/libavcodec/cbs_h2645.c +++ b/libavcodec/cbs_h2645.c @@ -1396,18 +1396,9 @@ static const CodedBitstreamUnitTypeDescriptor cbs_h264_unit_types[] = { CBS_UNIT_TYPE_INTERNAL_REF(H264_NAL_PPS, H264RawPPS, slice_group_id), - { - .nb_unit_types = 3, - .unit_types = { - H264_NAL_IDR_SLICE, - H264_NAL_SLICE, - H264_NAL_AUXILIARY_SLICE, - }, - .content_type = CBS_CONTENT_TYPE_INTERNAL_REFS, - .content_size = sizeof(H264RawSlice), - .nb_ref_offsets = 1, - .ref_offsets = { offsetof(H264RawSlice, data) }, - }, + CBS_UNIT_TYPES_INTERNAL_REF((H264_NAL_IDR_SLICE, + H264_NAL_SLICE, + H264_NAL_AUXILIARY_SLICE), H264RawSlice, data), CBS_UNIT_TYPE_POD(H264_NAL_AUD, H264RawAUD), CBS_UNIT_TYPE_POD(H264_NAL_FILLER_DATA, H264RawFiller), @@ -1433,40 +1424,15 @@ static const CodedBitstreamUnitTypeDescriptor cbs_h265_unit_types[] = { CBS_UNIT_TYPE_POD(HEVC_NAL_AUD, H265RawAUD), - { - // Slices of non-IRAP pictures. - .nb_unit_types = CBS_UNIT_TYPE_RANGE, - .unit_type_range_start = HEVC_NAL_TRAIL_N, - .unit_type_range_end = HEVC_NAL_RASL_R, - - .content_type = CBS_CONTENT_TYPE_INTERNAL_REFS, - .content_size = sizeof(H265RawSlice), - .nb_ref_offsets = 1, - .ref_offsets = { offsetof(H265RawSlice, data) }, - }, + // Slices of non-IRAP pictures. + CBS_UNIT_RANGE_INTERNAL_REF(HEVC_NAL_TRAIL_N, HEVC_NAL_RASL_R, + H265RawSlice, data), + // Slices of IRAP pictures. + CBS_UNIT_RANGE_INTERNAL_REF(HEVC_NAL_BLA_W_LP, HEVC_NAL_CRA_NUT, + H265RawSlice, data), - { - // Slices of IRAP pictures. - .nb_unit_types = CBS_UNIT_TYPE_RANGE, - .unit_type_range_start = HEVC_NAL_BLA_W_LP, - .unit_type_range_end = HEVC_NAL_CRA_NUT, - - .content_type = CBS_CONTENT_TYPE_INTERNAL_REFS, - .content_size = sizeof(H265RawSlice), - .nb_ref_offsets = 1, - .ref_offsets = { offsetof(H265RawSlice, data) }, - }, - - { - .nb_unit_types = 2, - .unit_types = { - HEVC_NAL_SEI_PREFIX, - HEVC_NAL_SEI_SUFFIX - }, - .content_type = CBS_CONTENT_TYPE_COMPLEX, - .content_size = sizeof(H265RawSEI), - .content_free = &cbs_h265_free_sei, - }, + CBS_UNIT_TYPES_COMPLEX((HEVC_NAL_SEI_PREFIX, HEVC_NAL_SEI_SUFFIX), + H265RawSEI, cbs_h265_free_sei), CBS_UNIT_TYPE_END_OF_LIST }; diff --git a/libavcodec/cbs_internal.h b/libavcodec/cbs_internal.h index f853086fa3..314d54daea 100644 --- a/libavcodec/cbs_internal.h +++ b/libavcodec/cbs_internal.h @@ -181,28 +181,45 @@ int ff_cbs_write_signed(CodedBitstreamContext *ctx, PutBitContext *pbc, // range_min in the above functions. #define MIN_INT_BITS(length) (-(INT64_C(1) << ((length) - 1))) - +#define TYPE_LIST(...) { __VA_ARGS__ } #define CBS_UNIT_TYPE_POD(type, structure) { \ .nb_unit_types = 1, \ .unit_types = { type }, \ .content_type = CBS_CONTENT_TYPE_POD, \ .content_size = sizeof(structure), \ } -#define CBS_UNIT_TYPE_INTERNAL_REF(type, structure, ref_field) { \ - .nb_unit_types = 1, \ - .unit_types = { type }, \ + +#define CBS_UNIT_TYPES_INTERNAL_REF(types, structure, ref_field) { \ + .nb_unit_types = FF_ARRAY_ELEMS((CodedBitstreamUnitType[])TYPE_LIST types), \ + .unit_types = TYPE_LIST types, \ .content_type = CBS_CONTENT_TYPE_INTERNAL_REFS, \ .content_size = sizeof(structure), \ .nb_ref_offsets = 1, \ .ref_offsets = { offsetof(structure, ref_field) }, \ } -#define CBS_UNIT_TYPE_COMPLEX(type, structure, free_func) { \ - .nb_unit_types = 1, \ - .unit_types = { type }, \ +#define CBS_UNIT_TYPE_INTERNAL_REF(type, structure, ref_field) \ + CBS_UNIT_TYPES_INTERNAL_REF((type), structure, ref_field) + +#define CBS_UNIT_RANGE_INTERNAL_REF(range_start, range_end, structure, ref_field) { \ + .nb_unit_types = CBS_UNIT_TYPE_RANGE, \ + .unit_type_range_start = range_start, \ + .unit_type_range_end = range_end, \ + .content_type = CBS_CONTENT_TYPE_INTERNAL_REFS, \ + .content_size = sizeof(structure), \ + .nb_ref_offsets = 1, \ + .ref_offsets = { offsetof(structure, ref_field) }, \ + } + +#define CBS_UNIT_TYPES_COMPLEX(types, structure, free_func) { \ + .nb_unit_types = FF_ARRAY_ELEMS((CodedBitstreamUnitType[])TYPE_LIST types), \ + .unit_types = TYPE_LIST types, \ .content_type = CBS_CONTENT_TYPE_COMPLEX, \ .content_size = sizeof(structure), \ .content_free = free_func, \ } +#define CBS_UNIT_TYPE_COMPLEX(type, structure, free_func) \ + CBS_UNIT_TYPES_COMPLEX((type), structure, free_func) + #define CBS_UNIT_TYPE_END_OF_LIST { .nb_unit_types = 0 }