From patchwork Sat Jul 2 22:21: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: 36606 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1884069pzh; Sat, 2 Jul 2022 15:23:39 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vkqrXLlOa4k+rIFWV7YIR05nCJnBu0FGKvLE9bg3PSW8tQUk/Vf5BtOxtK96NmUpLsSZKx X-Received: by 2002:a17:906:ce:b0:718:bff8:58c3 with SMTP id 14-20020a17090600ce00b00718bff858c3mr20502944eji.512.1656800619722; Sat, 02 Jul 2022 15:23:39 -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 s6-20020a508dc6000000b004335d160f73si16970680edh.309.2022.07.02.15.23.39; Sat, 02 Jul 2022 15:23:39 -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="i/bNs81E"; 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 8F26468B995; Sun, 3 Jul 2022 01:22:43 +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-oln040092073040.outbound.protection.outlook.com [40.92.73.40]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3A3F468B967 for ; Sun, 3 Jul 2022 01:22:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lg3/6P71I1fIytqZzukrG3Qp08B851E5HY5fGesULiay5TYx9kmkKanO2p0ETSG+49SdsPkOvIPLQpRa6F7MWYa1Ymp7x+SFfUx6F818iViLdhjCeSnhWh1ESgFKvNSmFkjTJUcBkth+u+rGHi/h+alELHhLthvX5duVEIGrX3UKPhYCK8I5ICSRxGBe1/0UpRoouhfFxl7E6KhqtJePMHUFeU9xa1R0Fl03dUEqlXcv4UwaVwtXtFmiMwndICdq+kjFLmGH6kgvfIezi82JLCoaSJ6vu+zuf+i9xD3/a+lV7CNyTQeKBmDfSmCNhIzY1uyyK6KognwSxMvUom2SAA== 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=eqq4NZWjmkXphrzTpbS12hdy6wtjyHlwPGczkCuysss=; b=DsEWmgwHcTU53izZX19/nBDbQcVD/h58suGaeedaXfUaJchdVRdzl9eVi0x1wy0Vzkc14Or3DLUd7wHRHcdLKo7/+sz6bA/FMdG0rLpTawZaEK5nrk8cPFIC7mrJm7e6rQo4fsiThKdhB7/wjMYnvixPVJMZ81gvQTN50iNiF4JUZVSZH63hQyj6RFegkDAUlna6ZdzQfT1+xAGfNNFbvsfAVq7D5jCMP44KEQMNPaKtaOq81h+OxOedCG7XyhnygAWof+E3tmEjlO8k7w4bNmNKtRDMLzJPD2BkwXPm1/H90pAHLR/7TbSRbCB0H6B6yKdw7B36H01GzSZk/Xd4ig== 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=eqq4NZWjmkXphrzTpbS12hdy6wtjyHlwPGczkCuysss=; b=i/bNs81EheV0c48BPrd4VwUY10X5ZhDSeedTXklCuka0CSGIl56qfwxrLXORAZyzIF0u2xpP3+C71HiT5MPkIYdZ39KFXDS1gGpMcsuv1ZkGrQx+5hRPsSUWALl+wBB0y9RbbhFVftUP08va5PBDPLCY12GHmpz1nebS9Gg2tpn8jc4iPMj+dfddyB7d813ofamhkwN4/HAXYa07PSRgWF8Rik7TEnsZFtO3yCTOLFeUKYwNK0TLSFA6f58snhS/+Dh5rAbnPoQL6++d5rSnf9xoonUeIdpr2jb7prpdM5WSooqjhxY/mT54QBcZ3r+DCBCSDddrzLOGEB8AVHgrjA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4240.eurprd01.prod.exchangelabs.com (2603:10a6:803:6e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Sat, 2 Jul 2022 22:22:31 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:31 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:51 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [xumxwWlVzq1huVtt+voiZIhkbJDTCb4R] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-10-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dfc72d0a-cd81-4ae1-d3c4-08da5c795ad1 X-MS-Exchange-SLBlob-MailProps: +LiGfBxqLEtZ2Se9LXW8/h2t+qO8GfncFScCK1vf++mJIYNQYHTUIQCSLCoJDE/4xmQAP3x96eKn/6z/ImZQmEopCXHA2f3zLo3Qebr2bMDxAi0SwIHVWWaZohBue84Lj74GjXCxPktv2kYj6GoDYLwd7Z59OYD3gYxauxzojP/rllcCAtFpnOp4AAmJKWV8T2YVZuh3a2a0kZRRFQDiZ2Rn+hASPYP0UYFYDhRN4dfCzA/tegiXabPmYu/4E4ckzeoP3bFursLEkvItg+kZsrSnlFw7Pp71/N6SB3H8sqOXt9cizDwiWcp2JO7wX3lCSgun/Iu46/d9TWW8KrJl4ZdmrXKteO36bcY0VrV19/3hLr4MCGPBpEX6u5vGoxZ0CxvUxX1mI8OoOJB3bKULjDNxaQTDlx0/rAkNGI0c/dM6XZsOOqBe7lNfIt8oZfOAP75H5TRbZYCSwZ8vB1lT7RyruYl7MsJ6eh+sdn5a86ronCwtC+knlhcVOTqTETnS0sEWpWkf0tpniphCCVsjn9/Y8vRs3T/zcSz3zg3G3dy5jVHtBjaboEgYatiaKKS2OmRzPtevyvp9jEHOGm/aQCjvaysBsn49wW6IIr65IbCKd64ncu+axridNiHtHm1V7Bf279Pz356aPn0O9uAJ1irATVgJ0mASZXXTHTr5RInJwZ/DCquifcAFiakeuVzgu/yl6zEo84pq9kPmPEm3vXA5pr0T6yUDnnmFysYkqNTG5CPLFCmfXeyDv2By6CfN85AjsvAiPatrNRtwMOailPjXFHMGwxx6 X-MS-TrafficTypeDiagnostic: VI1PR01MB4240:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DQNQq0LapsYF/SDvyTt+0/8Dib43x4Y2NmEeCsC3FhJXnCsAXnuCHY/hfRbrMDJD2Z/rPvg8ifDbLQPls59+80H03nO61srHi7849brcjO+/IrLB5ddHgyWAPfBTrzaNW7S3VTEco8VCrOuXw4dnxPx1DTeT18983YKyA+MPwLlH94yiA7LaStSJ29c/KUzIiOdRAb/BXheVxXvEesdwx7s0SwhuQCrSeMnf5kZeFUcI15ScnfgaWZsCPHc6Up4c2jWqSiPEkfLC5S8z1xguHnD/FlF6hFJkP/rWelW3O/3vqxkY3E2dQECAEvar4OoyRvFWjIcfdwDy22IwEoFNxQiGvCMd26pFE0c91BV+boX5IxnfNjY/76yxiDF6RzJ7Y+bJnMAF/1SAhwD3ME3P+Qar+OSFgF+hJMlDJeYzzkcBV5YZ9CLWOhy2LRlp9CyHfd8kCJIsvDl06kDgnffXxHgUGXV90xNIS+YZBebdcvlHiM4tnKQYpcnpk9OQ6Tv9FnBazos4SVaGRY1DgTRXpwqEiURUlxQXnPErJ0uOZ/6548nfTkNctn6lZgdwsFWDEH5i3Y82oKMqwoNniMKpkky3GqKjobhNG+1NjKwlZ/jmgQppFMZYLN2KnewkEJZVluJC/cm6MOYtBsZTqL+pHg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GvUtdIti70eh8mLhNHwWDe5uSr50zrwsejEFZr2rLhaZ1hfpckQQQsXTdLLn8oqMn5D8nvfmy5mVuN6X2jf8OtT1h1wf13O2JV4XJ0MoQdJ2b9l59fUNK5DiUgf+RcKFVk9lPfpi6o1MmWth+u4U02/dfRCO/uqDXY7dGw05FTqeDKIg8YWrtSd1yYS33YhyJuUkw8jgJMm3thkuJKomq0qv25Prn7uypcqA5rD4AM2HOXke00W1cckqwXI5+AMbGruaxkDaFqKUzzcvInW2crY1EkCjKwSPFNJvOJ0i5hnFQ0d698jTxock5B6wFxgdP3YvmhtY64VA21tkj7uwJC1T9uP3NBTjtQXkDaobn3vpAIUmZ8nRH9P6RX4+O91veghpGs76+HvgNHKDsyNkJY2eN64kYk5ba/JZCCem1nhrrGQOHiLqhqeMd6IQ3Locdr/gSFisJ7TPYVqCvOaRBEDz12ea5Fe25kkLBLJ7w0DagnM5V4OyZrGq2m/HGIijpUwTo4moD8jLheMba9IeSmdAHezCZdjZg0umE15S4RC35L+AXvcDRAGvRoqoe04eYz+sU1cs68M+Hk8/IWJ68wEFJGF3jlpmIneGmI5fCndnSSqj6XyMoGd1jhpEtlr2CLkz7L4z34+FJOcz6k6lOn8tzLDI3RHcUMQ2UuL6Jq+fpKVINx+xUfKoV3x3bcYJt49eDwyzRnp0W7F3XVKBmIbKmsA9J7X0InF6bndtoh+DlztnrZCYbpNh8Znc9IT1i62znCqEsTfQ9rnoMpNYanSKYDwc5Mxrj93mqsIPACKlupNklDbPCe/RLIxM79GQf6d3cKRAtgRSp9scvh4oIwDjHWDfcUY497fetWTrdysjmgWXrTB/d5GaaLqWpbZ/Js1Tul9w4vB2QUaS+n4azPqWryI2bEZL1gUJPfY3vep+TIBwEQgIuZ77XTl9w4KSujPBVkDY/1Ij+peqGhADILJqjqQWMUORHrj1ifsh+JUY2P1pPBZWlI1lfF1UIJ/vaVYZkhl1LsQRFXTZPVrl8D29+9PG9hf+cJb8cyHr6waJlkFl3UZoLeXpjPjqbJFZeY9lsG5JIuZw1PVQwFht9bgLt1Wo0wK33uIyFl+7s5wBQRwYhXbaOA6Em5s8N+zCKEl4Nn9Qhu33P3OFb21S7Wn7MnI0vfcH6vVgK5SVxIwuAZ+w23ETtfV92U1+ID+kHpPj7Yn3vdTB8zJWXHa7Ycc+IQdnj0Ur708cX4DCw929MhcK3L7ak6ZaKEhu8ClKXFe7Du9gVf1OxZJUyZl7UQ22BoLUPG41Totp9x+ryBE= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dfc72d0a-cd81-4ae1-d3c4-08da5c795ad1 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:31.3219 (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: VI1PR01MB4240 Subject: [FFmpeg-devel] [PATCH 11/20] avcodec/h264_sei, sei: Make H264_SEI_FpaType generic 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: S0O7D/bs2BPU Signed-off-by: Andreas Rheinhardt --- libavcodec/h2645_sei.h | 2 +- libavcodec/h264_sei.c | 14 +++++++------- libavcodec/h264_sei.h | 13 ------------- libavcodec/h264_slice.c | 16 ++++++++-------- libavcodec/sei.h | 17 +++++++++++++++++ 5 files changed, 33 insertions(+), 29 deletions(-) diff --git a/libavcodec/h2645_sei.h b/libavcodec/h2645_sei.h index 4600caab29..4713b89e1f 100644 --- a/libavcodec/h2645_sei.h +++ b/libavcodec/h2645_sei.h @@ -57,7 +57,7 @@ typedef struct H2645SEIFramePacking { int present; int arrangement_id; int arrangement_cancel_flag; ///< is previous arrangement canceled, -1 if never received (currently H.264 only) - int arrangement_type; + SEIFpaType arrangement_type; int arrangement_repetition_period; int content_interpretation_type; int quincunx_sampling_flag; diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c index f11f8371f6..668204959f 100644 --- a/libavcodec/h264_sei.c +++ b/libavcodec/h264_sei.c @@ -307,37 +307,37 @@ const char *ff_h264_sei_stereo_mode(const H2645SEIFramePacking *h) { if (h->arrangement_cancel_flag == 0) { switch (h->arrangement_type) { - case H264_SEI_FPA_TYPE_CHECKERBOARD: + case SEI_FPA_H264_TYPE_CHECKERBOARD: if (h->content_interpretation_type == 2) return "checkerboard_rl"; else return "checkerboard_lr"; - case H264_SEI_FPA_TYPE_INTERLEAVE_COLUMN: + case SEI_FPA_H264_TYPE_INTERLEAVE_COLUMN: if (h->content_interpretation_type == 2) return "col_interleaved_rl"; else return "col_interleaved_lr"; - case H264_SEI_FPA_TYPE_INTERLEAVE_ROW: + case SEI_FPA_H264_TYPE_INTERLEAVE_ROW: if (h->content_interpretation_type == 2) return "row_interleaved_rl"; else return "row_interleaved_lr"; - case H264_SEI_FPA_TYPE_SIDE_BY_SIDE: + case SEI_FPA_TYPE_SIDE_BY_SIDE: if (h->content_interpretation_type == 2) return "right_left"; else return "left_right"; - case H264_SEI_FPA_TYPE_TOP_BOTTOM: + case SEI_FPA_TYPE_TOP_BOTTOM: if (h->content_interpretation_type == 2) return "bottom_top"; else return "top_bottom"; - case H264_SEI_FPA_TYPE_INTERLEAVE_TEMPORAL: + case SEI_FPA_TYPE_INTERLEAVE_TEMPORAL: if (h->content_interpretation_type == 2) return "block_rl"; else return "block_lr"; - case H264_SEI_FPA_TYPE_2D: + case SEI_FPA_H264_TYPE_2D: default: return "mono"; } diff --git a/libavcodec/h264_sei.h b/libavcodec/h264_sei.h index 003f427ac3..bb9275e569 100644 --- a/libavcodec/h264_sei.h +++ b/libavcodec/h264_sei.h @@ -40,19 +40,6 @@ typedef enum { H264_SEI_PIC_STRUCT_FRAME_TRIPLING = 8 ///< 8: %frame tripling } H264_SEI_PicStructType; -/** - * frame_packing_arrangement types - */ -typedef enum { - H264_SEI_FPA_TYPE_CHECKERBOARD = 0, - H264_SEI_FPA_TYPE_INTERLEAVE_COLUMN = 1, - H264_SEI_FPA_TYPE_INTERLEAVE_ROW = 2, - H264_SEI_FPA_TYPE_SIDE_BY_SIDE = 3, - H264_SEI_FPA_TYPE_TOP_BOTTOM = 4, - H264_SEI_FPA_TYPE_INTERLEAVE_TEMPORAL = 5, - H264_SEI_FPA_TYPE_2D = 6, -} H264_SEI_FpaType; - typedef struct H264SEITimeCode { /* When not continuously receiving full timecodes, we have to reference the previous timecode received */ diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 18b9ae5b09..cd9f9bfa27 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -1234,28 +1234,28 @@ static int h264_export_frame_props(H264Context *h) AVStereo3D *stereo = av_stereo3d_create_side_data(out); if (stereo) { switch (fp->arrangement_type) { - case H264_SEI_FPA_TYPE_CHECKERBOARD: + case SEI_FPA_H264_TYPE_CHECKERBOARD: stereo->type = AV_STEREO3D_CHECKERBOARD; break; - case H264_SEI_FPA_TYPE_INTERLEAVE_COLUMN: + case SEI_FPA_H264_TYPE_INTERLEAVE_COLUMN: stereo->type = AV_STEREO3D_COLUMNS; break; - case H264_SEI_FPA_TYPE_INTERLEAVE_ROW: + case SEI_FPA_H264_TYPE_INTERLEAVE_ROW: stereo->type = AV_STEREO3D_LINES; break; - case H264_SEI_FPA_TYPE_SIDE_BY_SIDE: + case SEI_FPA_TYPE_SIDE_BY_SIDE: if (fp->quincunx_sampling_flag) stereo->type = AV_STEREO3D_SIDEBYSIDE_QUINCUNX; else stereo->type = AV_STEREO3D_SIDEBYSIDE; break; - case H264_SEI_FPA_TYPE_TOP_BOTTOM: + case SEI_FPA_TYPE_TOP_BOTTOM: stereo->type = AV_STEREO3D_TOPBOTTOM; break; - case H264_SEI_FPA_TYPE_INTERLEAVE_TEMPORAL: + case SEI_FPA_TYPE_INTERLEAVE_TEMPORAL: stereo->type = AV_STEREO3D_FRAMESEQUENCE; break; - case H264_SEI_FPA_TYPE_2D: + case SEI_FPA_H264_TYPE_2D: stereo->type = AV_STEREO3D_2D; break; } @@ -1263,7 +1263,7 @@ static int h264_export_frame_props(H264Context *h) if (fp->content_interpretation_type == 2) stereo->flags = AV_STEREO3D_FLAG_INVERT; - if (fp->arrangement_type == H264_SEI_FPA_TYPE_INTERLEAVE_TEMPORAL) { + if (fp->arrangement_type == SEI_FPA_TYPE_INTERLEAVE_TEMPORAL) { if (fp->current_frame_is_frame0_flag) stereo->view = AV_STEREO3D_VIEW_LEFT; else diff --git a/libavcodec/sei.h b/libavcodec/sei.h index f13c37c308..f96b7b647b 100644 --- a/libavcodec/sei.h +++ b/libavcodec/sei.h @@ -137,4 +137,21 @@ enum SEIType { SEI_TYPE_SAMPLE_ASPECT_RATIO_INFO = 204, }; +/** + * frame_packing_arrangement types. H.265 and H.274 use only 3..5 + * with all the other values being reserved. H.264 uses a few more values + * that are prefixed with SEI_FPA_H264 in the enum below. + * + * The semantics of the common values are the same for all standards. + */ +typedef enum { + SEI_FPA_H264_TYPE_CHECKERBOARD = 0, + SEI_FPA_H264_TYPE_INTERLEAVE_COLUMN = 1, + SEI_FPA_H264_TYPE_INTERLEAVE_ROW = 2, + SEI_FPA_TYPE_SIDE_BY_SIDE = 3, + SEI_FPA_TYPE_TOP_BOTTOM = 4, + SEI_FPA_TYPE_INTERLEAVE_TEMPORAL = 5, + SEI_FPA_H264_TYPE_2D = 6, +} SEIFpaType; + #endif /* AVCODEC_SEI_H */