From patchwork Wed Oct 19 15:03:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 38826 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4a86:b0:9d:28a3:170e with SMTP id fn6csp407751pzb; Wed, 19 Oct 2022 08:04:10 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7ZX7czNaGo8FdnE0wRzcWb6jn0Cy7IonqYnW+7aw1Mn8KpBvGNMRcLu8E9kzAf2SQ3mn3l X-Received: by 2002:a17:907:2c5b:b0:78d:3f8a:19d0 with SMTP id hf27-20020a1709072c5b00b0078d3f8a19d0mr7010143ejc.369.1666191839569; Wed, 19 Oct 2022 08:03:59 -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 p19-20020a05640210d300b00451d5c11293si12294655edu.496.2022.10.19.08.03.55; Wed, 19 Oct 2022 08:03:59 -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=p+ChFPjf; 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 9191C68BD82; Wed, 19 Oct 2022 18:03:51 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-oln040092074011.outbound.protection.outlook.com [40.92.74.11]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9A37C68BB95 for ; Wed, 19 Oct 2022 18:03:44 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UJTJ2j8YmnGvdBaWy8Umo41y99CfaoDdd+9quUHgPszXCTSUjWplCh5pWloT50XaHatEkCLEEBx4rtHAsXLO7CMMKLkRAkD3jYQCGfk+J64b1b0gL4fGCCAkrlEWre6eAynNNoHQSqSztxsCTksB4rXqJunr/kn/7VA0flO7BDEsBrd83dXErtgJGCfkcITihRfBx8aqdW/ce/4hhLtbzTuq8LH7CikYOkYyb/KiuC0Y3PcpYR/tg2y5htFwV56zDOLEcKpNDvanQ04X0087LhqSjNdgIQ9S7ZXsrS9yJ0sYxTlmIgBqEiGsZDIHhOEQikCa+W4Oksa0hfj17T5YuA== 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=Ct2xJZ7ciQQriYz8oaIfKYpHi7JVlMTmf2jCcqyQc4s=; b=fVdXCZdxwPe2MOHiPnvKv1RQjSTT2KJH3sCgNWCvEfcTqaZyfhHD8rYfm8ZXl8bhVCuYVeE5o7mrRxSzCRN30I1Wz1O/pP71mpw3hQw5+v/YZtgLDrPBdbAU15iaZnHpBUUKLFIKg87D8DZXxrZcpNLcD1/s5h3utf9FjmsDnoFK06RSseqfobdAaHGjMVAzv3cfCvRVqidPssNDOFRBeRlKnyRUL4VcEXhgxgk/t7kbDNK1WkWqTZoGNYSVpL+HEql0VkqpGavO8UfBT7VcMOBTC65GjD9qoM/uDib9tJDbdhk6VfZdLOFFj9Kr2y1u+/d9rSzc4M32Hjpri98K0w== 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=Ct2xJZ7ciQQriYz8oaIfKYpHi7JVlMTmf2jCcqyQc4s=; b=p+ChFPjfNFD47qK59Y1XO06xSGMFwvsfQvDzu7vyuu+/YDUVHsGl8mQ+Tc2h3LdOtBswl0nVXq91PB8sxbSJyzoIpeUWSJ7zVklhF9dbAAYugX7+Ea3PYzG7yf2BwPn/LcBhiGZyoGm09pQn71ZCIu1n6wN37cYucGE6U7a2ZgbJV+Nw2o7PqeGVF6LOasbrQd3L5Bcjp7KaD6BcYkyHN+A+1s3VE+/yBkE9T1vZdGVap/kZXLLXXPbT80tiXkvu9ftRtJLf2hcc8cq3Xq9TnW6nqTwYk+D34EhIxPXJNp4WfN87DvkvdIc05DEpJMlRFIkxXU7V+1jCMUw6/i9/4g== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DU2P250MB0189.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:275::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.26; Wed, 19 Oct 2022 15:03:42 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::f9d7:680f:70c4:44fe]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::f9d7:680f:70c4:44fe%7]) with mapi id 15.20.5709.015; Wed, 19 Oct 2022 15:03:42 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 19 Oct 2022 17:03:46 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 X-TMN: [33IBn7qR6lTS2ocSFmAApnWv64QHvhlx3rYeRjb3co4=] X-ClientProxiedBy: AS8PR04CA0166.eurprd04.prod.outlook.com (2603:10a6:20b:331::21) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20221019150347.780595-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DU2P250MB0189:EE_ X-MS-Office365-Filtering-Correlation-Id: db5c7620-1343-469e-82e4-08dab1e31c53 X-MS-Exchange-SLBlob-MailProps: ZILSnhm0P3lN/aIwkySwquz+yehzJ4vDUyl5NZ8JJRwacH/h37X7Vu4LSjmQQa5w2Fl9yf+T60Bg3DikJyTyIJaSgyxiLd+xQqGpuQmVbk0L3WdatBSyrYPxluou+aPPOUs5NNNwa+8xnz2ezlHzcOveqJKgKbN2aZfvoKJuf9fLnA9m7miRIaPbONqmISB8xlFhH9NodTNQ0cP+dQJANn4jPRCFNXBcEORxfSQRldoAK/AN3lQZTBNIinl8RorDlJ5U5tbXLleWt74MfQwTbZdpLv2Zxxla5xelwdOBUREpOSkhSEELEsdhnvkI1HHXj0uXRDeGQa0NDjtZhgMCis93LWlKHno1gIQnjNzN/MqMhGkqD7/yJ8MlZ2//OiAI5apNHbgGLkT2Xyt5rvCcz7GiN45C7muo0P76TKoec1t/9+5Q5//3hnwprYY2b+fB0KUn2iJu0r8tZqV1uGU7kSI9n7j6nS8stgqeIRGczqj4mLd6R0xVduqqr37S/lp6kJ/qW6JzBzHZE0Ipw+/MbHnDSktaw/eQYk4brJkAYHk8dZB7eLQJcdblp3to4UL2sGASFzWa5ZE2J9nqk0VC/abxljAvnOGsROIaGYvr8EwjHluFgcXGRrXwkdorvsdn2qgPliKZWjPH8jtE6G91ToHqjwdbX9nQLySXN+DvSDA2Rk2/v9uUpp+Mm5cnD42oyJm+tTaLYIObtTIwiWwYzwkUe1MxHLA8Cdx7wBPjhZwzCLrPFw6+f+uDzUpGmV0o0gue0SqbPDnT1bsKK1uUEBTL6Pp4ASX0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0Iz7VONWi4EslaU5T1kMdPdK31E51VJ0sUzsF414MDLzkD9D7NXXtbHDDw8lD/JakG1Ex3K6202nHqyTSUiOi8rUc5TgpdonNz7fflkeEdJ9jfMOZdPnQIxwpXrAO6b56trNZ6LxC9udkuS3SZjNikGyyPKb431uXjE66MZS5CbKX9KTBB0PquHlQXPfc5tgjUZ9MHvjQTD8aSsuXfkATs1+JCOyELdyobBW71c5fOEIK/nrayfN2L5XP/uBrriabo9muhocRyfxIyHx6gnxyaSq7ym4wNcrY5a8dNLfCaKtQV279IuY2ULU5Lcab/U1ns8Ow39yKfGjoJ/ZBABfz4SlynkiqU2T5SgTKHAYLPTtTNsavezCV65ndp1/j423IffCsmCS1X2STAAkIVGSdVWecfrV/9nz/dAnhhFuEevEM0H0qWE+UzbYSbfrTDNbprlnvOxY6Pa0HBbaxx9z3sa0qiz0qVDqA6eXMV2qAjh/Swj7vL8whlKCm2gMI+k27vMi9sv78ZetJp519CzYC2ZS9PV82jopOTt4vq2eIO6R/F5HDmWKbyyJlViOTKqkM/lgcDBGz4/mf0U7uhbzxOCUYN5wxCyXRTCdx01JVVS9GZ/XZewwawtwC8U+4lz+fxVN2UO5yN3qqc9BjCHJw6+ZwymmBcgcjUqIiWQzefZMQdn60RVMnjNzWRLAF9hG X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: G1HmuT2OaKVKuf4vmtFYqmT9XB2XCZfxvmRSnlfTPunVOId0bprSbJbBvF5XV2Ur3OE49YQrZ3eEF4Jgq7fc8P2GCqvdGGD0aJr3bZwHGs5j2deekrkC73dvY+NJUSEXqSfbJtHbI8TyyGf+3PW2nK76kdUH+/SJhv1rY9XTKQ5IKxN+TgbOA3FQQ/lJ5UoYFoxPEVJMeWz0h9lrjM3JPLcvg2yfqLpucdZiiA3rU0MuWImjuJtRtsusbkJlxyEMULa0pV8Q3JmSnqbv5EAnL8lsf0Xcfs+wJw8a2f+Rrz/TuWsNoFXeGnKAxLqCPgzb+2gHblGlBUm/NMcuzs6ZCEPtfEa0xuzy4PyW3DyfBRvSQcFGUTyYavGbRBNrtqlYf9/4hGso2xr2Kqrilzejm/STkIikTM5IV8YogHTv6kkPcknGk2vID2wqmhWFhATbPXq215XW0YbBqaEpG5TUxSc2ays7FZ2oLx2WFmTpLUttWNxg6xkqSZnXxJC7Uj4H8wTHy82bungemh/JU6lZUIo2wLhAN6iA/9yQV2vt0orkZw3kKIt9NNTPS6Ix+G0duED62nV134qRPhh01qlhWpqA8z4GWBulF43xEuONXfDZX8dWarcuTahgTssOsxSSvtn7i0CmgoCF1QOF/MTIOS+2IiPfW87/VaIydMRVhe47bmwE1bXA1RVjyUK48CVhc12FMhKueQsIPpaxBeNMJcCb1uwdeVCTkKunjVbUOyOSgHcdld8+AaEo10Z9S/EHiHOPhR0VzGIz5CZjGIDLhBfQP3SV77hg67IyR/rAOYRZ8Z/BoAy9W8gC3oF1CP+7fq8NE4hZaD58JDg3JjE/Ypnlg8YaoNNUsoAj1MuV0xbfrAtpwt7vWXh7nsZanEy+VQ0/B+n81NgurOb3hYAeQpT49MypaDHwMCbQBKPIG1pnJ2V1X/02NQ6RxMC4Vm8GAtWI+kSTUQ4keeJ9YUIFEsAYrDyPfVnviLUPpeFNZgL1BXYvR+zyOhgfhp1K4Bzg8uI2vFntLsTcHA+QIWkG+CJWRMtoIiOcgsYR4y2RElqAhyQxX5dq6GT9q9agYYGcT71iZku419onvrT5XQu5/8RqRTONZ1/c/M6EXqoIU41JADznRrqdUZYV0jeNIjEcxDEIEKcNXTpgrXUvEUhd5L5SA0c+FgrJMKur2SbW+N+4cFPOvbRgZo8HanIik5JYUCWdd4sZvDpGHz6O7gO2YiVVqT5wAb54/AZuT1Ew6gDp90tsLpMAWchVotaGfedj7HU9V/b8QP9G1wsmkkHkActbZK5DSqu8u6xpmrrjfUVz88y9gZXcll6PwNzBYMUR X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: db5c7620-1343-469e-82e4-08dab1e31c53 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2022 15:03:41.9774 (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: DU2P250MB0189 Subject: [FFmpeg-devel] [PATCH 1/2] avcodec/cbs: Remove CBS_CONTENT_TYPE_POD 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: kLGy1vQSULV2 It is equivalent to CBS_CONTENT_TYPE_INTERNAL_REFS with nb_offsets equal to zero. Signed-off-by: Andreas Rheinhardt --- libavcodec/cbs.c | 18 ++++-------------- libavcodec/cbs_internal.h | 21 ++++++++++++--------- 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/libavcodec/cbs.c b/libavcodec/cbs.c index 8d6e3c3442..504197e06d 100644 --- a/libavcodec/cbs.c +++ b/libavcodec/cbs.c @@ -839,12 +839,10 @@ void ff_cbs_delete_unit(CodedBitstreamFragment *frag, static void cbs_default_free_unit_content(void *opaque, uint8_t *data) { const CodedBitstreamUnitTypeDescriptor *desc = opaque; - if (desc->content_type == CBS_CONTENT_TYPE_INTERNAL_REFS) { - int i; - for (i = 0; i < desc->type.ref.nb_offsets; i++) { - void **ptr = (void**)(data + desc->type.ref.offsets[i]); - av_buffer_unref((AVBufferRef**)(ptr + 1)); - } + + for (int i = 0; i < desc->type.ref.nb_offsets; i++) { + void **ptr = (void**)(data + desc->type.ref.offsets[i]); + av_buffer_unref((AVBufferRef**)(ptr + 1)); } av_free(data); } @@ -981,14 +979,6 @@ static int cbs_clone_unit_content(CodedBitstreamContext *ctx, return AVERROR(ENOSYS); switch (desc->content_type) { - case CBS_CONTENT_TYPE_POD: - ref = av_buffer_alloc(desc->content_size); - if (!ref) - return AVERROR(ENOMEM); - memcpy(ref->data, unit->content, desc->content_size); - err = 0; - break; - case CBS_CONTENT_TYPE_INTERNAL_REFS: err = cbs_clone_internal_refs_unit_content(&ref, unit, desc); break; diff --git a/libavcodec/cbs_internal.h b/libavcodec/cbs_internal.h index 5ccba3c901..045df91744 100644 --- a/libavcodec/cbs_internal.h +++ b/libavcodec/cbs_internal.h @@ -31,9 +31,7 @@ enum CBSContentType { - // Unit content is a simple structure. - CBS_CONTENT_TYPE_POD, - // Unit content contains some references to other structures, but all + // Unit content may contain some references to other structures, but all // managed via buffer reference counting. The descriptor defines the // structure offsets of every buffer reference. CBS_CONTENT_TYPE_INTERNAL_REFS, @@ -78,9 +76,12 @@ typedef const struct CodedBitstreamUnitTypeDescriptor { size_t content_size; union { + // This union's state is determined by content_type: + // ref for CBS_CONTENT_TYPE_INTERNAL_REFS, + // complex for CBS_CONTENT_TYPE_COMPLEX. struct { - // Number of entries in the ref_offsets array. Only nonzero - // if the content_type is CBS_CONTENT_TYPE_INTERNAL_REFS. + // Number of entries in the ref_offsets array. + // May be zero, then the structure is POD-like. int nb_offsets; // The structure must contain two adjacent elements: // type *field; @@ -191,18 +192,20 @@ int ff_cbs_write_signed(CodedBitstreamContext *ctx, PutBitContext *pbc, #define MIN_INT_BITS(length) (-(INT64_C(1) << ((length) - 1))) #define TYPE_LIST(...) { __VA_ARGS__ } -#define CBS_UNIT_TYPE_POD(type, structure) { \ +#define CBS_UNIT_TYPE_POD(type_, structure) { \ .nb_unit_types = 1, \ - .unit_type.list = { type }, \ - .content_type = CBS_CONTENT_TYPE_POD, \ + .unit_type.list = { type_ }, \ + .content_type = CBS_CONTENT_TYPE_INTERNAL_REFS, \ .content_size = sizeof(structure), \ + .type.ref = { .nb_offsets = 0 }, \ } #define CBS_UNIT_RANGE_POD(range_start, range_end, structure) { \ .nb_unit_types = CBS_UNIT_TYPE_RANGE, \ .unit_type.range.start = range_start, \ .unit_type.range.end = range_end, \ - .content_type = CBS_CONTENT_TYPE_POD, \ + .content_type = CBS_CONTENT_TYPE_INTERNAL_REFS, \ .content_size = sizeof(structure), \ + .type.ref = { .nb_offsets = 0 }, \ } #define CBS_UNIT_TYPES_INTERNAL_REF(types, structure, ref_field) { \