From patchwork Wed Sep 21 01:34:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 38123 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1c:b0:96:9ee8:5cfd with SMTP id c28csp2314764pzh; Tue, 20 Sep 2022 18:35:20 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7SiGaSfA72Id8npMp7kLcHcLBHW8STnNikhEnbpsB50CaHTyceLMCzqodKLOGC83kSz1Sv X-Received: by 2002:a17:907:7615:b0:77b:1426:1ae8 with SMTP id jx21-20020a170907761500b0077b14261ae8mr18256672ejc.137.1663724119910; Tue, 20 Sep 2022 18:35:19 -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 s1-20020a170906c30100b00781363ae09esi1037124ejz.950.2022.09.20.18.35.19; Tue, 20 Sep 2022 18:35:19 -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=RCrdyiyA; 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 DA8B968BB17; Wed, 21 Sep 2022 04:35: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-oln040092073107.outbound.protection.outlook.com [40.92.73.107]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4C07D68BA40 for ; Wed, 21 Sep 2022 04:35:10 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UjTttA3lbLv8QxklljMHkn6gODQc1ZVk8iLrxeVjW9nNb7mDeY870OE4Dby+PL2fpBi06ExHyZekRgmJjlUVx+uHnXDAFdMwKRjPJRVAgVlpWxkt+UhAQc9WaBp3ya9u1L/jq9nuV7GMQXiFMNExGggWt2ptoAcWCCOBUDq9NUR8nrP+PiU5feo61m0ZVgHxvtTVX/Nhyqh8N3jQKI2Xs0gF/yL7gvnZTcpzANicAXYdnTcI4ArZjx41OgOnVghoE4LiMtklYkB7b5MDoCOXm6u9VM0DYAbQ5AgLJy7eDOG+cljd8L/RJcpgUd4KVpSd8q/46WyjOozqZ7rHSWn7CQ== 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=t4Kn9391UvqjKojHT88ZyQtex4FOknNpg4XyPY4+/nI=; b=Ha41woUSFv/VnDnM8Dc6EckNA8QnPfk91/tf1MMsBmSxUBLmbqbZg0piV8bbxwMDhaAo6CNoN99AGUx/qsbQ6TAvWw6IDUPGAvXs4aq5NdoJ4hKKLr2LkC+B37pCcAHBHFmJrSMTVR+b6NeBBgQtuziB6Fk8BCGEYANjUWbc9/vaQyrouGvMI8p3eAnetxhjovwHihE/I+mBjVSrrC7ZxiBQh7WKQqzQJA8+3y7BAcWQqPADauhe+DoRuipn+5luHxb6iHWTl/TySauvwIyG9qDd0L8FXckAdmjGxsMKtqUa/vhdN30ptPUJMrV6XtxLd9oSG+7nPrD61OBly5zzHQ== 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=t4Kn9391UvqjKojHT88ZyQtex4FOknNpg4XyPY4+/nI=; b=RCrdyiyASyyWdIzTPUEUtrvPlbJ8wYGe3m9TUbND11D4B+hPYN8Cja7sZ7I2Cv38WWXPXga+8qJSmz4Pa8zwsVHQHai2Qr08/DWxr0brzvla6P/ZCv7SasrCJybB57Rm/oIViFlna0TlxdmrC3F6g0uNkIf49+EA4cbF1M9G59RkAX8tvbdBlBNxv1uUoGh8g/Xogna2K9xbb1dENdCNSmzSviEEawXYHWnRFY1v++RunLR//qgmehUlhq4cQuerEFO69cPb05rPVvcbelg8UoJOvwTPidSu9fGZtXcNdHjomlx/RDegh/eQYRsk3udUssPXW3qp8eBWCv1/Q6yVCQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0206.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:277::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.16; Wed, 21 Sep 2022 01:35:05 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::f3f2:4362:56:4785]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::f3f2:4362:56:4785%8]) with mapi id 15.20.5632.019; Wed, 21 Sep 2022 01:35:05 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 21 Sep 2022 03:34:59 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [PvSLdcLQOJ4Clo8IgS8EWRmhZrnLpZB6hbPOIFEjWEQ=] X-ClientProxiedBy: ZR0P278CA0075.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::8) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20220921013502.245742-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0206:EE_ X-MS-Office365-Filtering-Correlation-Id: 62b99ec7-7d1b-4b11-152d-08da9b718298 X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmrSLXKEIOho5rOHknB/H9sp0HZBJQyZMtk+uwvYtI7xqXRXdnUBwJkq5fh3DTkpr6g3FL3XkRcYyY1gYgSZ3lrGtoKiMqhaYKgZnoMZcxJknVaMF1HAaS4Vhv+oUUollDYo4ZeraU/twQajZpHGBSgay9oHMmipXrXRVNiq0aBMjYBkYESjcGR6qLpXMu1sfZz6gu090wh8aHK9JHbR3ASCnBLON3+7jh+jO+V52xlyytE4eBR8v2ee8erihJU08JPMA25A/DK4TaEMiZQdG/Zp/5WfHoDLrf06EJKK4lrciMPozYranzPETSwtLSXPdIIAeVgRWw+3OVfaUiK1F3VdesHviM+ShXzGzEiNtBnV6zdcEsN9WDSvEru9RjAkxnyvftCGegG77JEQOrXcJ+vUblXJbl2aTGNQ5KsjTTq6e8G0fQZaEkIxaP7XARcXjYEcq+MUPz/832JVVOo8z8rBIbMhuTP3X9c6zGnnsgrj5P5g+Piv6sUjMjk+P0ZE/NCB0KDC7ZVY6Pe4oSh62+7ugnAkD4e9UW9ELMZSoHtd1G1riimkhPuGGjYq7WkJvKJU7rKG5D0VHuR1m5PI7Pcoqw2D89L6Mj1vvqTZo/sJVhNY4Ey27lMFZYwbMbKnSOWEpBs4LGkp6YU1zGLe/zllDgbyE5L2JgteXukic8QtGQUd3hbNLEsbhHMU5MBvYrF7cIyXnA2En7dxOoiGjfPy90zr3Koo3q9gTGQsLlk7zDOLVA3AfpTxTBCr5nIQt7I= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RzluGh7C4Oyau19Emw2AtouVAkCy3PJTJ72NSxUlbsQ43rS1jUzwhutJpcMLPTOeDfusgW5SaznwnJmekqfZFpKSYU3YZpiZ9StbVQtHQG51eepuNVbVUe3WWelodRUZbdtOC5+se/te/CrqiNxPBCcE7NU19HT/gIsOYWq6zmolLOS/lEbQ+RnJTWagjMrCVdTRdZcFDGOGwRXc6d8F+mqD3hDhr+AfWWF14+sdJIZAMbmJdeFx52s4oxJp1MnCL3TV4950zu4ElPIDLuw/1KY21kpSgIY+TNxdAM47QFAQrKkl9korO270t+cwizfJhtFmSboRmBUeLYdgBT//C0/mIennv8CY8atQOxAxOUQryeT5VpUrP7Q13vkJeVdMk+ZvnPlBaID0c63m9KMZKSQpR+XC4qGR4zuj4J9Hay1TCkhOEj72hpbYOczsEFAngy871KL0UxrkidJvlnGkSIJ0uSseBJyZbPXXhBX4J08CChk+EkCsU9nRtcca+AUoW/pS0mC7uZXpp6tM4JHTzaAB5K0h4BjV0bUrhrk9Y4DA6owcyICFTrFQL6VNK9YmB8EbQ37rrpHQ8zmKA3BJb+GTrZ4hHE2jXWiYH/tK80pzFoq5VPAQ7MuQ3JUpO8NdtOEwA0ETBQSSyRSLe/To1g== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: z+jc/STsGmdMJdqb/CvoTzKwI8HShMW6fYMdsu76a8F6tPkmwdzc3vFhVfdn32HiSCGefoOKCp3IWZ8VQ4pn2UxelVqKOuKUjgxz/jZqRHbwNCO+ulAWOQvtvezjY54frqKvQTjxPWQcXREY/NdXr969QlXQuBOPLpN+1OH9wE5ph5Pw1usegk4mXhuJ4UWY5ia1RE/FSK3W/YhZgZ16jJ/sS5AUMV5peBxEkRSL5NZR5HkhHpCuR8oEdn+lo2BaxmK4j6GqYHf2eEGb38Xn7lQaSYQXxOlfRXNAwJthjyEAlznLkRVB5Hb+4JIReA7h+xoXJcaVYtTw6G9wptPIdxFcrA/+gh5G4NwU1KFNcMw/21c18+MkoSJ/Uk8BlmQI+XPL6GCAlUeUsPH5BBqsX8rV8QmBZGdTcSw3h+A57wlNUw7Y3Ocka32fggkH2hvsQWCiNm8DWOhc6sFTAqVvnJqI7/u4FrF/dhahSpXDdiqVqS6Zgm2qZBjD7ofxTBnUSAJhdpLuiEu+27Qk4UX6HdCDmr9oSmH+BVaXMzEQrxcu/7YFGlRAO7b+ykwZxTZBzZY/3ETbtZcOlO/J31sM1VvbvWoC4YSBqNxr9kmPpYFMqshLKs+GQ73wj4FshaedFCwONEdegeDoMDfomoPET68v1MeTOKhBXYKWiuU5vYxu2kT+qp7da2b9whYWx/5rXpQslwJNsp0+gIkevcqazquTcxkYLYvESJVuwfk1g+rea42nijRLOuQOnYZWdmonrmCn8dH2wrue2c+mXg4xsxzWtzOazSJtx38c/kI76Es/r3CsXAUPOd6Rr4GZ0bR+/PFL2k9sw7/0nj6Z7OX7TyGkRiIofPfo2CjQP75DSC8shJED9sQm+kA0Ah2c9sB7LzTLHjTXbbGulky8hxJeeBxZoGwCl0/0poCyqPgPZqvidbplTOFIa9ENLGyDhuh30zrtFZ+0AGIFJpgrvr5RAKKVbGWHcjVDGpkj//AT/mJgzo/pe7jUkz/RtVK59yIKgXlqUujJHVWOiW3jG3YjNKfidXQjIvYdjdBZsqKIVa1agAOgdZBj4MzyZa3UUrHp9csSg68+Ivtl1XWUMKFxBGNZIWKS5V4gz7QLEFfgI760GhM5trQezpLtuGIfRBJ5Bae8xC7c5cVbn0gLlMSENoH/zUtUlk51GrJG4NCRKXgWTbTuKu/bCvUFf55/YBovp2J3YxtjzKTMXxFZyJb306C514dNRaGwwIcs/JbCyeQSeMmBOZ0hsjF9O35XyUBnBp3HTuxI/8JcyCY4CuTedr3+YwQ1DoXNNefwWUlnr94YJZEM1zUUz0YDPADoNNPk X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 62b99ec7-7d1b-4b11-152d-08da9b718298 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Sep 2022 01:35:05.2679 (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: DU2P250MB0206 Subject: [FFmpeg-devel] [PATCH 2/5] avutil/pixdesc: Add av_chroma_location_(enum_to_pos|pos_to_enum) 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: urCvyP3HaKQq They are intended as replacements for avcodec_enum_to_chroma_pos() and avcodec_chroma_pos_to_enum(). Signed-off-by: Andreas Rheinhardt --- Will add version bump upon applying. (Honestly, I am not sure whether there is a need for a replacement given that Matroska seems to be the only user of this.) doc/APIchanges | 3 +++ libavutil/pixdesc.c | 23 +++++++++++++++++++++++ libavutil/pixdesc.h | 22 ++++++++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/doc/APIchanges b/doc/APIchanges index cb7592bb64..8ead37dcbb 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -14,6 +14,9 @@ libavutil: 2021-04-27 API changes, most recent first: +2022-09-21 - xxxxxxxxxx - lavu 57.xx.100 - pixdesc.h + Add av_chroma_location_enum_to_pos() and av_chroma_location_pos_to_enum(). + 2022-09-21 - xxxxxxxxxx - lavc 59.45.100 - avcodec.h defs.h Move the AV_EF_* and FF_COMPLIANCE_* defines from avcodec.h to defs.h. diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c index b472a94f60..9cd95f1450 100644 --- a/libavutil/pixdesc.c +++ b/libavutil/pixdesc.c @@ -3262,3 +3262,26 @@ int av_chroma_location_from_name(const char *name) return AVERROR(EINVAL); } + +int av_chroma_location_enum_to_pos(int *xpos, int *ypos, enum AVChromaLocation pos) +{ + if (pos <= AVCHROMA_LOC_UNSPECIFIED || pos >= AVCHROMA_LOC_NB) + return AVERROR(EINVAL); + pos--; + + *xpos = (pos&1) * 128; + *ypos = ((pos>>1)^(pos<4)) * 128; + + return 0; +} + +enum AVChromaLocation av_chroma_location_pos_to_enum(int xpos, int ypos) +{ + int pos, xout, yout; + + for (pos = AVCHROMA_LOC_UNSPECIFIED + 1; pos < AVCHROMA_LOC_NB; pos++) { + if (av_chroma_location_enum_to_pos(&xout, &yout, pos) == 0 && xout == xpos && yout == ypos) + return pos; + } + return AVCHROMA_LOC_UNSPECIFIED; +} diff --git a/libavutil/pixdesc.h b/libavutil/pixdesc.h index 48d9300bfe..0df73e6efe 100644 --- a/libavutil/pixdesc.h +++ b/libavutil/pixdesc.h @@ -264,6 +264,28 @@ const char *av_chroma_location_name(enum AVChromaLocation location); */ int av_chroma_location_from_name(const char *name); +/** + * Converts AVChromaLocation to swscale x/y chroma position. + * + * The positions represent the chroma (0,0) position in a coordinates system + * with luma (0,0) representing the origin and luma(1,1) representing 256,256 + * + * @param xpos horizontal chroma sample position + * @param ypos vertical chroma sample position + */ +int av_chroma_location_enum_to_pos(int *xpos, int *ypos, enum AVChromaLocation pos); + +/** + * Converts swscale x/y chroma position to AVChromaLocation. + * + * The positions represent the chroma (0,0) position in a coordinates system + * with luma (0,0) representing the origin and luma(1,1) representing 256,256 + * + * @param xpos horizontal chroma sample position + * @param ypos vertical chroma sample position + */ +enum AVChromaLocation av_chroma_location_pos_to_enum(int xpos, int ypos); + /** * Return the pixel format corresponding to name. *