From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id AD99B4DB8F for ; Fri, 4 Jul 2025 09:31:55 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id BA58A68F793; Fri, 4 Jul 2025 12:31:45 +0300 (EEST) Received: from MA0PR01CU012.outbound.protection.outlook.com (mail-southindiaazon11021086.outbound.protection.outlook.com [40.107.57.86]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 7887A68F76E for ; Fri, 4 Jul 2025 12:31:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bsMSGs+yM2Oec5jpzQ32e+Bo2ErIeBhLZT7jNIZopwLjsagozhH39VKIuePpgwDKr5jIoldT8og5vtc0WEq6YZm27m7R0p0Akcs/h5eN7r81FbzNPYbNAm6mCeOLHF0zL9/PKInyy4d1dH7w2DTQKAQfDAKxqMhaPsgxF+oHLPnPWn1DtK7CUqDDIQRPZV21BjvOtNaDfHzrVm3bf3RSo+OuctUaZZ6hK4vQdnzJF+S8U3zZVIl6Onbmrp/ao6w0GLKTvoyWR+GBnTguDypNqBVlVeptyB0NWJ/9e5jEentBBuLfN5/m6FuDZXLLg84GNiDNsXBS4rfsgKynxaHkpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=//DXCJhIjf06U4PA28I7A7YlJE5/RHwB3dwcbAujtaM=; b=VUv4YInnN9jdokCaad098uTI/3qCty7EJSj6Jz4/B9JOFmdQxuNl9XU75ijravsU9IbhHtSd+DJbG3EnfKmNtvsoIwQn70ikcHSPj1JGbay7122MWErTDwMRvFmjfWF66grS8ANdlQoneZ9QHFcQ62pb0K08EK0aIQRUP9s1waTJypZqGolRlKd1wSLitu9QEaohgAdZmuRrl6VZQWSicIBZu+76vQGL0eX4VqBpzxkTarxZRRt0q5LtYHhSTKruYIjTUTv46m9/SEYi/dPbi6jmqBGoUfzYAUusy+YsjOn6qug3XLK2eW9FVXH11/gUOe1Ro+heZtUj0V8nIqZy9A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=multicorewareinc.com; dmarc=pass action=none header.from=multicorewareinc.com; dkim=pass header.d=multicorewareinc.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=multicorewareinc.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=//DXCJhIjf06U4PA28I7A7YlJE5/RHwB3dwcbAujtaM=; b=z0esES6PoalvSLG5g6ohRAojds9Z/t0791e9ykBfJ2cs3hnDLkdzj7j2YIER0ujAKIyScr+IR3a1co9FzP3/VCwmVizdd8LJRzvaLKdt+G5l3SDp8YRkllRAaeOmYronMiDMajkKGjXSdPTUNd9a3+93MPzcISDe1wpGAc07nI+hOc0P7j/kwSrYT6zGU26rPSJg41RoHpVVs22KwkSZuyvcSNpsQL4qbb3rnmSrV4CfVw3Y3SDZOxhrb0pBZODy/JRsYOI2ZyhqQOaUcWCaOTypR7vZw1506AIzjb8Z1jaIzdWTgKfiMOaLWzKrK6g5trqE5DpZntnKnRF6TRykYw== Received: from PN2P287MB1165.INDP287.PROD.OUTLOOK.COM (2603:1096:c01:154::10) by PN3P287MB1135.INDP287.PROD.OUTLOOK.COM (2603:1096:c01:173::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Fri, 4 Jul 2025 09:31:33 +0000 Received: from PN2P287MB1165.INDP287.PROD.OUTLOOK.COM ([fe80::c146:9404:f8bd:6b70]) by PN2P287MB1165.INDP287.PROD.OUTLOOK.COM ([fe80::c146:9404:f8bd:6b70%4]) with mapi id 15.20.8901.021; Fri, 4 Jul 2025 09:31:32 +0000 From: Harshitha Sarangu Suresh To: FFmpeg development discussions and patches Thread-Topic: [FFmpeg-devel] [PATCH] swscale/aarch64/output: Implement yuv2nv12cx neon assembly Thread-Index: AQHb7MRKl0IhR2Y/xEaM85YDCqNtTw== Date: Fri, 4 Jul 2025 09:31:32 +0000 Message-ID: Accept-Language: en-IN, en-US Content-Language: en-IN X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: undefined: 2374508 drawingcanvaselements: [] composetype: newMail authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=multicorewareinc.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PN2P287MB1165:EE_|PN3P287MB1135:EE_ x-ms-office365-filtering-correlation-id: f3008f93-086b-44e0-47a9-08ddbadd9060 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|376014|366016|4053099003|8096899003|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?or2toeBV83QPYwVdTLtbU1f/JeAo9q/jrsq1w3gpaUm8XpmJTLLyiBA7h2?= =?iso-8859-1?Q?9kk0nvCjQRf6tby+W6Z5X5gPeegoW4bSdUCdMhQQ1Ivn38JWqWXVSdEKh4?= =?iso-8859-1?Q?ae4UIxFQ+BQ5EzrmWeq7t00MktgNQjEcFC9Vhk0J7V/kz8tM82dBWkN6od?= =?iso-8859-1?Q?tEj3dQQBRSdBK9yoXL7r6FA0UR+DFAV2uOvrSkLMmx4LrdFMKAi0r5EWTf?= =?iso-8859-1?Q?bQBLfaVk2QLdCm7lqv6tO2hxzfD0Jet0MUeKRy16ZlkjaFWkRm/MyqmwbG?= =?iso-8859-1?Q?/L5CgDqBtg3IPgLzBCYbimCZHL7gY0s6ze+YZKa09fz6J469rmbeG0VBsS?= =?iso-8859-1?Q?YLIQK2wKkd/YdzOmByGxeKt7dgmMcM2KCFwKUifZP7X5BAcdYXLUpubuYB?= =?iso-8859-1?Q?Qwmzxui5NwfG6OTQIbLswGWAasJbdlNmfox2+caQVg3vOgW4oc9endsXBv?= =?iso-8859-1?Q?4JIyJUzv0Gb1OHkW80TfO2M8Ep1vudNPy+8mfpuhveFqPViwWiSz5h5vcq?= =?iso-8859-1?Q?chtTWPWTKSA6J4NVE88RG2fWi/dJP9fP7yrIty7ld9XkhjC1TjI6MwVJVW?= =?iso-8859-1?Q?tXrlmawvm4aVZdO+kEYqH+vlNUOvFL5bqFDfpWKcc+ElS48qWZBk1Pygvz?= =?iso-8859-1?Q?N4PNAFZkOeUD9WgEe/ukWTt0CoVtyfkyC5j5OS8Db9Qee0T61LCybFhIRK?= =?iso-8859-1?Q?b3GhemmIVtvIb0bQESK31vpp8TSGZTwBzKP+nZM7D7+PIWo8qx8a4ZSQMB?= =?iso-8859-1?Q?0+XpW7fwwk9Ep9RezZlbUypC4VNrSfHIHOGRAi8+xRA2MyrPevwxRwT00t?= =?iso-8859-1?Q?JW9Q7ogXte1VWDrgnotm44mP2SDzh4HEgyofMhDrrhe1ipw+nTurEIx84p?= =?iso-8859-1?Q?Gqmc1Ho+IhVyPtUmY0sQPFHk/PBWRZYSy7WWEu18y0Jjl4fJQphRpUcBUf?= =?iso-8859-1?Q?LARHuzcHRW1jYVnHbu+v/ydMBG5UYbkPkjKqbOQkgwJ9BWfRXrj1BJaY4D?= =?iso-8859-1?Q?6ERwBkmzsDCdPGPfhaiZoJOTueXcHR73upWgVSu5Xx5ndF4kNjbyV3SavK?= =?iso-8859-1?Q?E9P0/K3vIBURGcOoZIr4vm20k4UGf5UPAGS24ScPhYNt0ZTmEBQqtM7T+L?= =?iso-8859-1?Q?1IhDwfxcqoCVYW8S1WvJ9/bxddzwgo1m6JkhaLFkimqAhtJ4DDsLMPx53l?= =?iso-8859-1?Q?TedCyzIcEjjgLoGEFCCXUPazS71ywxY3V3TmIFOVr6Jw7sO8u+33baBem1?= =?iso-8859-1?Q?oPw433+XJ/SCo4MwQr3h8JfFlzivFkDFV+R0mtuCd4TODbmiDiKDc/u3k+?= =?iso-8859-1?Q?jKgDz0JUrArQj1OKO4SnTNCARUzgSG1Q/ZxVWbtQ8zywja64Qlr3teMryP?= =?iso-8859-1?Q?BmCA6MRuEaCJKYbwjBzXCd4YS94ybhE9bW2+z4W5Mk3is8WVk2DlFIzS5R?= =?iso-8859-1?Q?xfGPX64p/Ic38AXndfcZIqas7G4x0nObQ8+LomVjV1S+wecaDPLMI2HYT/?= =?iso-8859-1?Q?oKqv9RyDzZywVC8KohDyGw0Zikd2bM0xktA2+gk1Gw30gQSoX0If6Wac8Q?= =?iso-8859-1?Q?F0TaKe0=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PN2P287MB1165.INDP287.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016)(4053099003)(8096899003)(38070700018); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?YKhKJqUY5MF0woazXxejfcVaqQOIh/ecA48cmOBfdXwn5eqRbNFDyDQrfU?= =?iso-8859-1?Q?qwt8vku/+ifPW3+4p4R0wZvnfZq+Kd1aUMg+9vCXb+k28ceQ0JVRJjlQbi?= =?iso-8859-1?Q?u/U95wooSKwN+q//ctcf/frYmAE/qnShb6akSYw3OLrOY5Z/Z6S7QnNrrY?= =?iso-8859-1?Q?erD2sey6u64Fw4E4QyPreqy1+lMtXpSUqKfSdof0PkpE+RxzNv9iklZdum?= =?iso-8859-1?Q?I9V4UQEjh6zMisCGPXkR0AD6rFCxgN1EtZMn2Yud+h6s/WywZf32Ml4Y+j?= =?iso-8859-1?Q?Tjo1a6gtS2UjXHPQqUF1JXt+7uUNWkWiggE8wXf5evaNG7VwpLMcnpi9eb?= =?iso-8859-1?Q?5wXo52d7MbTiFDJxUdh7wjbzWF3SyhXocsfZe4NgHbxcKk9BeL9pZVGqzR?= =?iso-8859-1?Q?8dut85qniknwXgUDg0Pwool278KakLMii5OY8D6H3W68J3B5K+kxR34SCq?= =?iso-8859-1?Q?dqi0xZe88pcgf9rnrn4ijc9Xjdr4AOIXPnQhMbo64M9yCZ0B+gy+j5fTeG?= =?iso-8859-1?Q?sXMhdOfj9kfvzLUR0pVz4jv/i/lnRFcjipa8k/r5NCRqLXjZ7V90Cy7rBh?= =?iso-8859-1?Q?dQSYyH0yM306g7cfErLTjAjSI99yGtxaj5hpeopsfaWhsiZjy55U3Ou0aL?= =?iso-8859-1?Q?AyAZjQwt1M2NzdkK0YEcnaZbV7SOUeaBL7KMpO0aiPafF9EvV3zGBq1tFr?= =?iso-8859-1?Q?kfpvQmcHSAgcCx/U/RDse7cxpgEJlt+mMUtRETxMvATwIpovLwTekC/25O?= =?iso-8859-1?Q?7shISaRn6nzq2sUJA57wUn3IOAoTY0uDiWnpkhzFxP8IlvWWz2tt6ntccY?= =?iso-8859-1?Q?lp6/AXRQ143m9gmpekk1EwmKl+hR5ZorDMIy1ROrNuNOZaObtU0WKCljzB?= =?iso-8859-1?Q?qN7FKw78/XGudTw9pBqsveYeOfgKcJR7/RppgwXJjeTcMGgPdI+YWpK3Ps?= =?iso-8859-1?Q?Dx+WaP33QCvRU3VhAamTlf8+R2DyIi1GqWW0Q3dP4TkI/vPa+vurqtePEr?= =?iso-8859-1?Q?KBHTCDcTOszYWGTqvfOLq7XT9mcdr7qvARj5G1OG9waZLjBJ78EOJLFkl2?= =?iso-8859-1?Q?2tD6QlBfllFC4UQepeCydEsjiUNqMDykSkbpxYHGU9fIe1klGmeubioU+2?= =?iso-8859-1?Q?4n3Vw45/Gm6MHOiEQm65UVY5QiH0bQBNr7rCFzRpyygulj7pOjoqwrK9qs?= =?iso-8859-1?Q?G+jYbrjlEOanUfaRZvGufDOOkv+JxNRpkovyvr1naSz9mbTkBGdQ9kKskY?= =?iso-8859-1?Q?3vdUO/4lrq6bl3Bo/MiyfdbZlLRiKnV5/LbE+bzofL9KXytzS/r0T8z35a?= =?iso-8859-1?Q?6XNb+aFcaqnTRjgzbha1xsOzUXncpoSoiodOwjBkNwFF8bmqeTKIZOOHaa?= =?iso-8859-1?Q?+7FqRBR2rLhJLgmdFVYv8UKEh78ZesTA9J131OdnXEMqvI/KTNaP6UyF/x?= =?iso-8859-1?Q?FIosNXAuF5F7vWX9wfuiMJvzE3nQu3t9dvPxPkqUC67xrrwd1YuqdzFCBl?= =?iso-8859-1?Q?VnGMolC4aCW7cnxvFIHMEJP8JfiNXnurWIsurkpNKrEJOj7KbZ78d7WHRA?= =?iso-8859-1?Q?8PpiiZ+FNz7ZOZfahQgAPClAwlK9ZMf8SIOUjMcZOZEsol3cGRBqWhBX1I?= =?iso-8859-1?Q?1a1O8DMF09hD3fqbR1GjvkMY35At+TcNhz6U3X2FoGxSu1x0CpYYPNjg?= =?iso-8859-1?Q?=3D=3D?= Content-Type: multipart/mixed; boundary="_004_PN2P287MB11651C483E063B086BE13D4DD642APN2P287MB1165INDP_" MIME-Version: 1.0 X-OriginatorOrg: multicorewareinc.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PN2P287MB1165.INDP287.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: f3008f93-086b-44e0-47a9-08ddbadd9060 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jul 2025 09:31:32.8959 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: ffc5e88b-3fa2-4d69-a468-344b6b766e7d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: JgjIdHBhAkM6jqo6kYdTIVP8LfvlXW8rNZbtLGg4frZdrSHe4TmL/la5uV063ZoPy1ZvcNTMTkSsPTleEj4iHZ5uQ/7UHrvmRI7yG4LjC9U= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PN3P287MB1135 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] swscale/aarch64/output: Implement yuv2nv12cx neon assembly 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: Dash Santosh Sathyanarayanan , Logaprakash Ramajayam Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --_004_PN2P287MB11651C483E063B086BE13D4DD642APN2P287MB1165INDP_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Handled all the comments, removed code duplication for swapped and non-swap= ped case. Checkasm Benchmark Results yuv2nv12cX_2_512_accurate_c: 3496.2 ( 1.= 00x) yuv2nv12cX_2_512_accurate_neon: 409.5 ( 8.54x) yuv2nv12cX_2_512_approximate_c: 3495.1 ( 1.00x) yuv2nv12cX_2_512_approximate_neon: 409.4 ( 8.54x) yuv2nv12cX_4_512_accurate_c: 4676.5 ( 1= .00x) yuv2nv12cX_4_512_accurate_neon: 613.1 ( 7.63x) yuv2nv12cX_4_512_approximate_c: 4677.8 ( 1.00x) yuv2nv12cX_4_512_approximate_neon: 607.8 ( 7.70x) yuv2nv12cX_8_512_accurate_c: 7221.6 ( 1= .00x) yuv2nv12cX_8_512_accurate_neon: 1003.8 ( 7.19x) yuv2nv12cX_8_512_approximate_c: 7221.2 ( 1.00x= ) yuv2nv12cX_8_512_approximate_neon: 1016.4 ( 7.11x) yuv2nv12cX_16_512_accurate_c: 13731.1 ( 1= .00x) yuv2nv12cX_16_512_accurate_neon: 1757.2 ( 7.81x) yuv2nv12cX_16_512_approximate_c: 13740.7 ( 1.00x) yuv2nv12cX_16_512_approximate_neon: 1757.3 ( 7.82x) >From 4ca92570924ba42e20041feaae6d7488c02c1e6a Mon Sep 17 00:00:00 2001 From: Harshitha Suresh Date: Fri, 4 Jul 2025 14:29:11 +0530 Subject: [PATCH] swscale/output: Implement yuv2nv12cx neon assembly --- libswscale/aarch64/output.S | 233 +++++++++++++++++++++++++++++++++++ libswscale/aarch64/swscale.c | 24 ++++ 2 files changed, 257 insertions(+) diff --git a/libswscale/aarch64/output.S b/libswscale/aarch64/output.S index 190c438870..92dec3f0ed 100644 --- a/libswscale/aarch64/output.S +++ b/libswscale/aarch64/output.S @@ -226,3 +226,236 @@ function ff_yuv2plane1_8_neon, export=3D1 b.gt 2b // loop until widt= h consumed ret endfunc + +function ff_yuv2nv12cX_neon_asm, export=3D1 +// w0 - isSwapped +// x1 - uint8_t *chrDither +// x2 - int16_t *chrFilter +// x3 - int chrFilterSize +// x4 - int16_t **chrUSrc +// x5 - int16_t **chrVSrc +// x6 - uint8_t *dest +// x7 - int chrDstW + + stp x19, x20, [sp, #-16]! + stp x21, x22, [sp, #-16]! + + ld1 {v0.8b}, [x1] // chrDither[0..7] + ext v1.8b, v0.8b, v0.8b, #3 // Rotate for V: (= i+3)&7 + + uxtl v0.8h, v0.8b + uxtl v1.8h, v1.8b + + ushll v2.4s, v0.4h, #12 // U dither low + ushll2 v3.4s, v0.8h, #12 // U dither high + ushll v4.4s, v1.4h, #12 // V dither low + ushll2 v5.4s, v1.8h, #12 // V dither high + + mov x8, #0 // i =3D 0 +1: + cmp w7, #16 + blt 7f + + mov v16.16b, v2.16b // U acc low + mov v17.16b, v3.16b // U acc high + mov v18.16b, v4.16b // V acc low + mov v19.16b, v5.16b // V acc high + + mov v20.16b, v2.16b + mov v21.16b, v3.16b + mov v22.16b, v4.16b + mov v23.16b, v5.16b + + mov w9, w3 // chrFilterSize c= ounter + mov x10, x2 // chrFilter point= er + mov x11, x4 // chrUSrc base + mov x12, x5 // chrVSrc base + +2: + ldr h6, [x10], #2 // Load filter coe= fficient + + ldr x13, [x11], #8 // chrUSrc[j] + ldr x14, [x12], #8 // chrVSrc[j] + add x13, x13, x8, lsl #1 // &chrUSrc[j][i] + add x14, x14, x8, lsl #1 // &chrVSrc[j][i] + add x15, x13, #16 + add x16, x14, #16 + + ld1 {v24.8h}, [x13] // U samples 0-7 + ld1 {v25.8h}, [x14] // V samples 0-7 + + ld1 {v26.8h}, [x15] // U samples 8-15 + ld1 {v27.8h}, [x16] // V samples 8-15 + + smlal v16.4s, v24.4h, v6.h[0] + smlal2 v17.4s, v24.8h, v6.h[0] + smlal v18.4s, v25.4h, v6.h[0] + smlal2 v19.4s, v25.8h, v6.h[0] + + smlal v20.4s, v26.4h, v6.h[0] + smlal2 v21.4s, v26.8h, v6.h[0] + smlal v22.4s, v27.4h, v6.h[0] + smlal2 v23.4s, v27.8h, v6.h[0] + + subs w9, w9, #1 + b.gt 2b + + sqshrun v28.4h, v16.4s, #16 // Process and sto= re first 8 pixels + sqshrun2 v28.8h, v17.4s, #16 + sqshrun v29.4h, v18.4s, #16 + sqshrun2 v29.8h, v19.4s, #16 + + cbz w0, 3f + uqshrn v24.8b, v28.8h, #3 // Storing U + uqshrn v25.8b, v29.8h, #3 // Storing V + st2 {v24.8b, v25.8b}, [x6], #16 + b 4f +3: + uqshrn v24.8b, v29.8h, #3 // Storing V + uqshrn v25.8b, v28.8h, #3 // Storing U + st2 {v24.8b, v25.8b}, [x6], #16 + +4: + sqshrun v28.4h, v20.4s, #16 // Process and sto= re next 8 pixels + sqshrun2 v28.8h, v21.4s, #16 + sqshrun v29.4h, v22.4s, #16 + sqshrun2 v29.8h, v23.4s, #16 + + cbz w0, 5f + uqshrn v30.8b, v28.8h, #3 // Storing U + uqshrn v31.8b, v29.8h, #3 // Storing V + st2 {v30.8b, v31.8b}, [x6], #16 + b 6f +5: + uqshrn v30.8b, v29.8h, #3 // Storing V + uqshrn v31.8b, v28.8h, #3 // Storing U + st2 {v30.8b, v31.8b}, [x6], #16 + +6: + subs w7, w7, #16 + add x8, x8, #16 + b.gt 1b + +7: + cmp w7, #8 + blt 12f +8: + mov v16.16b, v2.16b // U acc low + mov v17.16b, v3.16b // U acc high + mov v18.16b, v4.16b // V acc low + mov v19.16b, v5.16b // V acc high + + mov w9, w3 // chrFilterSize c= ounter + mov x10, x2 // chrFilter point= er + mov x11, x4 // chrUSrc base + mov x12, x5 // chrVSrc base + +9: + ldr h6, [x10], #2 // Load filter coe= fficient + + ldr x13, [x11], #8 // chrUSrc[j] + ldr x14, [x12], #8 // chrVSrc[j] + add x13, x13, x8, lsl #1 // &chrUSrc[j][i] + add x14, x14, x8, lsl #1 // &chrVSrc[j][i] + + ld1 {v20.8h}, [x13] // U samples + ld1 {v21.8h}, [x14] // V samples + + smlal v16.4s, v20.4h, v6.h[0] + smlal2 v17.4s, v20.8h, v6.h[0] + smlal v18.4s, v21.4h, v6.h[0] + smlal2 v19.4s, v21.8h, v6.h[0] + + subs w9, w9, #1 + b.gt 9b + + sqshrun v26.4h, v16.4s, #16 // Final processin= g and store + sqshrun2 v26.8h, v17.4s, #16 + sqshrun v27.4h, v18.4s, #16 + sqshrun2 v27.8h, v19.4s, #16 + + cbz w0, 10f + uqshrn v28.8b, v26.8h, #3 // Storing U + uqshrn v29.8b, v27.8h, #3 // Storing V + st2 {v28.8b, v29.8b}, [x6], #16 + b 11f +10: + uqshrn v28.8b, v27.8h, #3 // Storing V + uqshrn v29.8b, v26.8h, #3 // Storing U + st2 {v28.8b, v29.8b}, [x6], #16 +11: + subs w7, w7, #8 + add x8, x8, #8 + +12: + cbz w7, 17f // Scalar loop + +13: + and x15, x8, #7 + ldrb w9, [x1, x15] + sxtw x9, w9 + lsl x9, x9, #12 // u =3D chrDither= [i & 7] << 12; + + add x15, x8, #3 + and x15, x15, #7 + ldrb w10, [x1, x15] + sxtw x10, w10 + lsl x10, x10, #12 // v =3D chrDither= [(i + 3) & 7] << 12; + + mov w11, w3 // chrFilterSize c= ounter + mov x12, x2 // chrFilter point= er + mov x13, x4 // chrUSrc base + mov x14, x5 // chrVSrc base + +14: + ldrsh x16, [x12], #2 + + ldr x17, [x13], #8 // chrUSrc[j] + ldr x19, [x14], #8 // chrVSrc[j] + add x17, x17, x8, lsl #1 // &chrUSrc[j][i] + add x19, x19, x8, lsl #1 // &chrVSrc[j][i] + + ldrsh x20, [x17] + ldrsh x21, [x19] + + madd x9, x16, x20, x9 + madd x10, x16, x21, x10 + + subs w11, w11, #1 + b.gt 14b + + asr x9, x9, #19 // Process and sto= re U and V + asr x10, x10, #19 + + cmp x9, #0 + csel x9, x9, xzr, ge + cmp x10, #0 + csel x10, x10, xzr, ge + + mov x22, #1 + lsl x22, x22, #8 + sub x22, x22, #1 + + cmp x9, x22 + csel x9, x22, x9, gt + cmp x10, x22 + csel x10, x22, x10, gt + + cbz w0, 15f + strb w9, [x6], #1 // Storing U + strb w10, [x6], #1 // Storing V + b 16f +15: + strb w10, [x6], #1 // Storing V + strb w9, [x6], #1 // Storing U + +16: + subs w7, w7, #1 + add x8, x8, #1 + b.gt 13b +17: + ldp x21, x22, [sp], #16 + ldp x19, x20, [sp], #16 + ret + +endfunc diff --git a/libswscale/aarch64/swscale.c b/libswscale/aarch64/swscale.c index 6e5a721c1f..a7dcc451dc 100644 --- a/libswscale/aarch64/swscale.c +++ b/libswscale/aarch64/swscale.c @@ -168,6 +168,28 @@ void ff_yuv2plane1_8_neon( const uint8_t *dither, int offset); +void ff_yuv2nv12cX_neon_asm(int isSwapped, const uint8_t *chrDither, + const int16_t *chrFilter, int chrFilterSize, + const int16_t **chrUSrc, const int16_t **chrVS= rc, + uint8_t *dest, int chrDstW); + +static void ff_yuv2nv12cX_neon(enum AVPixelFormat dstFormat, const uint8_t= *chrDither, + const int16_t *chrFilter, int chrFilterSize= , + const int16_t **chrUSrc, const int16_t **ch= rVSrc, + uint8_t *dest, int chrDstW) +{ + if (!isSwappedChroma(dstFormat)) + { + ff_yuv2nv12cX_neon_asm(1, chrDither, chrFilter, chrFilterSize, + chrUSrc, chrVSrc, dest, chrDstW); + } + else + { + ff_yuv2nv12cX_neon_asm(0, chrDither, chrFilter, chrFilterSize, + chrUSrc, chrVSrc, dest, chrDstW); + } +} + #define ASSIGN_SCALE_FUNC2(hscalefn, filtersize, opt) do { \ if (c->srcBpc =3D=3D 8) { = \ if(c->dstBpc <=3D 14) { = \ @@ -275,6 +297,8 @@ av_cold void ff_sws_init_swscale_aarch64(SwsInternal *c= ) ASSIGN_VSCALE_FUNC(c->yuv2plane1, neon); if (c->dstBpc =3D=3D 8) { c->yuv2planeX =3D ff_yuv2planeX_8_neon; + if (isSemiPlanarYUV(c->opts.dst_format)) + c->yuv2nv12cX =3D ff_yuv2nv12cX_neon; } switch (c->opts.src_format) { case AV_PIX_FMT_ABGR: -- 2.36.0.windows.1 --_004_PN2P287MB11651C483E063B086BE13D4DD642APN2P287MB1165INDP_ Content-Type: application/octet-stream; name="0001-swscale-output-Implement-yuv2nv12cx-neon-assembly.patch" Content-Description: 0001-swscale-output-Implement-yuv2nv12cx-neon-assembly.patch Content-Disposition: attachment; filename="0001-swscale-output-Implement-yuv2nv12cx-neon-assembly.patch"; size=11807; creation-date="Fri, 04 Jul 2025 09:27:48 GMT"; modification-date="Fri, 04 Jul 2025 09:28:10 GMT" Content-Transfer-Encoding: base64 RnJvbSA0Y2E5MjU3MDkyNGJhNDJlMjAwNDFmZWFhZTZkNzQ4OGMwMmMxZTZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXJzaGl0aGEgU3VyZXNoIDxoYXJzaGl0aGFAbXVsdGljb3Jl d2FyZWluYy5jb20+CkRhdGU6IEZyaSwgNCBKdWwgMjAyNSAxNDoyOToxMSArMDUzMApTdWJqZWN0 OiBbUEFUQ0hdIHN3c2NhbGUvb3V0cHV0OiBJbXBsZW1lbnQgeXV2Mm52MTJjeCBuZW9uIGFzc2Vt Ymx5CgotLS0KIGxpYnN3c2NhbGUvYWFyY2g2NC9vdXRwdXQuUyAgfCAyMzMgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIGxpYnN3c2NhbGUvYWFyY2g2NC9zd3NjYWxlLmMgfCAg MjQgKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyNTcgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBh L2xpYnN3c2NhbGUvYWFyY2g2NC9vdXRwdXQuUyBiL2xpYnN3c2NhbGUvYWFyY2g2NC9vdXRwdXQu UwppbmRleCAxOTBjNDM4ODcwLi45MmRlYzNmMGVkIDEwMDY0NAotLS0gYS9saWJzd3NjYWxlL2Fh cmNoNjQvb3V0cHV0LlMKKysrIGIvbGlic3dzY2FsZS9hYXJjaDY0L291dHB1dC5TCkBAIC0yMjYs MyArMjI2LDIzNiBAQCBmdW5jdGlvbiBmZl95dXYycGxhbmUxXzhfbmVvbiwgZXhwb3J0PTEKICAg ICAgICAgYi5ndCAgICAgICAgICAgIDJiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g bG9vcCB1bnRpbCB3aWR0aCBjb25zdW1lZAogICAgICAgICByZXQKIGVuZGZ1bmMKKworZnVuY3Rp b24gZmZfeXV2Mm52MTJjWF9uZW9uX2FzbSwgZXhwb3J0PTEKKy8vIHcwIC0gaXNTd2FwcGVkCisv LyB4MSAtIHVpbnQ4X3QgKmNockRpdGhlcgorLy8geDIgLSBpbnQxNl90ICpjaHJGaWx0ZXIKKy8v IHgzIC0gaW50IGNockZpbHRlclNpemUKKy8vIHg0IC0gaW50MTZfdCAqKmNoclVTcmMKKy8vIHg1 IC0gaW50MTZfdCAqKmNoclZTcmMKKy8vIHg2IC0gdWludDhfdCAqZGVzdAorLy8geDcgLSBpbnQg Y2hyRHN0VworCisgICAgICAgIHN0cCAgICAgICAgICAgICB4MTksIHgyMCwgW3NwLCAjLTE2XSEK KyAgICAgICAgc3RwICAgICAgICAgICAgIHgyMSwgeDIyLCBbc3AsICMtMTZdIQorCisgICAgICAg IGxkMSAgICAgICAgICAgICB7djAuOGJ9LCBbeDFdICAgICAgICAgICAgICAgICAgIC8vIGNockRp dGhlclswLi43XQorICAgICAgICBleHQgICAgICAgICAgICAgdjEuOGIsIHYwLjhiLCB2MC44Yiwg IzMgICAgICAgICAvLyBSb3RhdGUgZm9yIFY6IChpKzMpJjcKKworICAgICAgICB1eHRsICAgICAg ICAgICAgdjAuOGgsIHYwLjhiCisgICAgICAgIHV4dGwgICAgICAgICAgICB2MS44aCwgdjEuOGIK KworICAgICAgICB1c2hsbCAgICAgICAgICAgdjIuNHMsIHYwLjRoLCAjMTIgICAgICAgICAgICAg ICAvLyBVIGRpdGhlciBsb3cKKyAgICAgICAgdXNobGwyICAgICAgICAgIHYzLjRzLCB2MC44aCwg IzEyICAgICAgICAgICAgICAgLy8gVSBkaXRoZXIgaGlnaAorICAgICAgICB1c2hsbCAgICAgICAg ICAgdjQuNHMsIHYxLjRoLCAjMTIgICAgICAgICAgICAgICAvLyBWIGRpdGhlciBsb3cKKyAgICAg ICAgdXNobGwyICAgICAgICAgIHY1LjRzLCB2MS44aCwgIzEyICAgICAgICAgICAgICAgLy8gViBk aXRoZXIgaGlnaAorCisgICAgICAgIG1vdiAgICAgICAgICAgICB4OCwgIzAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIGkgPSAwCisxOgorICAgICAgICBjbXAgICAgICAgICAgICAgdzcsICMx NgorICAgICAgICBibHQgICAgICAgICAgICAgN2YKKworICAgICAgICBtb3YgICAgICAgICAgICAg djE2LjE2YiwgdjIuMTZiICAgICAgICAgICAgICAgICAvLyBVIGFjYyBsb3cKKyAgICAgICAgbW92 ICAgICAgICAgICAgIHYxNy4xNmIsIHYzLjE2YiAgICAgICAgICAgICAgICAgLy8gVSBhY2MgaGln aAorICAgICAgICBtb3YgICAgICAgICAgICAgdjE4LjE2YiwgdjQuMTZiICAgICAgICAgICAgICAg ICAvLyBWIGFjYyBsb3cKKyAgICAgICAgbW92ICAgICAgICAgICAgIHYxOS4xNmIsIHY1LjE2YiAg ICAgICAgICAgICAgICAgLy8gViBhY2MgaGlnaAorCisgICAgICAgIG1vdiAgICAgICAgICAgICB2 MjAuMTZiLCB2Mi4xNmIKKyAgICAgICAgbW92ICAgICAgICAgICAgIHYyMS4xNmIsIHYzLjE2Ygor ICAgICAgICBtb3YgICAgICAgICAgICAgdjIyLjE2YiwgdjQuMTZiCisgICAgICAgIG1vdiAgICAg ICAgICAgICB2MjMuMTZiLCB2NS4xNmIKKworICAgICAgICBtb3YgICAgICAgICAgICAgdzksIHcz ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaHJGaWx0ZXJTaXplIGNvdW50ZXIKKyAgICAg ICAgbW92ICAgICAgICAgICAgIHgxMCwgeDIgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hy RmlsdGVyIHBvaW50ZXIKKyAgICAgICAgbW92ICAgICAgICAgICAgIHgxMSwgeDQgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gY2hyVVNyYyBiYXNlCisgICAgICAgIG1vdiAgICAgICAgICAgICB4 MTIsIHg1ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoclZTcmMgYmFzZQorCisyOgorICAg ICAgICBsZHIgICAgICAgICAgICAgaDYsIFt4MTBdLCAjMiAgICAgICAgICAgICAgICAgICAvLyBM b2FkIGZpbHRlciBjb2VmZmljaWVudAorCisgICAgICAgIGxkciAgICAgICAgICAgICB4MTMsIFt4 MTFdLCAjOCAgICAgICAgICAgICAgICAgIC8vIGNoclVTcmNbal0KKyAgICAgICAgbGRyICAgICAg ICAgICAgIHgxNCwgW3gxMl0sICM4ICAgICAgICAgICAgICAgICAgLy8gY2hyVlNyY1tqXQorICAg ICAgICBhZGQgICAgICAgICAgICAgeDEzLCB4MTMsIHg4LCBsc2wgIzEgICAgICAgICAgICAvLyAm Y2hyVVNyY1tqXVtpXQorICAgICAgICBhZGQgICAgICAgICAgICAgeDE0LCB4MTQsIHg4LCBsc2wg IzEgICAgICAgICAgICAvLyAmY2hyVlNyY1tqXVtpXQorICAgICAgICBhZGQgICAgICAgICAgICAg eDE1LCB4MTMsICMxNgorICAgICAgICBhZGQgICAgICAgICAgICAgeDE2LCB4MTQsICMxNgorCisg ICAgICAgIGxkMSAgICAgICAgICAgICB7djI0LjhofSwgW3gxM10gICAgICAgICAgICAgICAgIC8v IFUgc2FtcGxlcyAwLTcKKyAgICAgICAgbGQxICAgICAgICAgICAgIHt2MjUuOGh9LCBbeDE0XSAg ICAgICAgICAgICAgICAgLy8gViBzYW1wbGVzIDAtNworCisgICAgICAgIGxkMSAgICAgICAgICAg ICB7djI2LjhofSwgW3gxNV0gICAgICAgICAgICAgICAgIC8vIFUgc2FtcGxlcyA4LTE1CisgICAg ICAgIGxkMSAgICAgICAgICAgICB7djI3LjhofSwgW3gxNl0gICAgICAgICAgICAgICAgIC8vIFYg c2FtcGxlcyA4LTE1CisKKyAgICAgICAgc21sYWwgICAgICAgICAgIHYxNi40cywgdjI0LjRoLCB2 Ni5oWzBdCisgICAgICAgIHNtbGFsMiAgICAgICAgICB2MTcuNHMsIHYyNC44aCwgdjYuaFswXQor ICAgICAgICBzbWxhbCAgICAgICAgICAgdjE4LjRzLCB2MjUuNGgsIHY2LmhbMF0KKyAgICAgICAg c21sYWwyICAgICAgICAgIHYxOS40cywgdjI1LjhoLCB2Ni5oWzBdCisKKyAgICAgICAgc21sYWwg ICAgICAgICAgIHYyMC40cywgdjI2LjRoLCB2Ni5oWzBdCisgICAgICAgIHNtbGFsMiAgICAgICAg ICB2MjEuNHMsIHYyNi44aCwgdjYuaFswXQorICAgICAgICBzbWxhbCAgICAgICAgICAgdjIyLjRz LCB2MjcuNGgsIHY2LmhbMF0KKyAgICAgICAgc21sYWwyICAgICAgICAgIHYyMy40cywgdjI3Ljho LCB2Ni5oWzBdCisKKyAgICAgICAgc3VicyAgICAgICAgICAgIHc5LCB3OSwgIzEKKyAgICAgICAg Yi5ndCAgICAgICAgICAgIDJiCisKKyAgICAgICAgc3FzaHJ1biAgICAgICAgIHYyOC40aCwgdjE2 LjRzLCAjMTYgICAgICAgICAgICAgLy8gUHJvY2VzcyBhbmQgc3RvcmUgZmlyc3QgOCBwaXhlbHMK KyAgICAgICAgc3FzaHJ1bjIgICAgICAgIHYyOC44aCwgdjE3LjRzLCAjMTYKKyAgICAgICAgc3Fz aHJ1biAgICAgICAgIHYyOS40aCwgdjE4LjRzLCAjMTYKKyAgICAgICAgc3FzaHJ1bjIgICAgICAg IHYyOS44aCwgdjE5LjRzLCAjMTYKKworICAgICAgICBjYnogICAgICAgICAgICAgdzAsIDNmCisg ICAgICAgIHVxc2hybiAgICAgICAgICB2MjQuOGIsIHYyOC44aCwgIzMgICAgICAgICAgICAgIC8v IFN0b3JpbmcgVQorICAgICAgICB1cXNocm4gICAgICAgICAgdjI1LjhiLCB2MjkuOGgsICMzICAg ICAgICAgICAgICAvLyBTdG9yaW5nIFYKKyAgICAgICAgc3QyICAgICAgICAgICAgIHt2MjQuOGIs IHYyNS44Yn0sIFt4Nl0sICMxNgorICAgICAgICBiICAgICAgICAgICAgICAgNGYKKzM6CisgICAg ICAgIHVxc2hybiAgICAgICAgICB2MjQuOGIsIHYyOS44aCwgIzMgICAgICAgICAgICAgIC8vIFN0 b3JpbmcgVgorICAgICAgICB1cXNocm4gICAgICAgICAgdjI1LjhiLCB2MjguOGgsICMzICAgICAg ICAgICAgICAvLyBTdG9yaW5nIFUKKyAgICAgICAgc3QyICAgICAgICAgICAgIHt2MjQuOGIsIHYy NS44Yn0sIFt4Nl0sICMxNgorCis0OgorICAgICAgICBzcXNocnVuICAgICAgICAgdjI4LjRoLCB2 MjAuNHMsICMxNiAgICAgICAgICAgICAvLyBQcm9jZXNzIGFuZCBzdG9yZSBuZXh0IDggcGl4ZWxz CisgICAgICAgIHNxc2hydW4yICAgICAgICB2MjguOGgsIHYyMS40cywgIzE2CisgICAgICAgIHNx c2hydW4gICAgICAgICB2MjkuNGgsIHYyMi40cywgIzE2CisgICAgICAgIHNxc2hydW4yICAgICAg ICB2MjkuOGgsIHYyMy40cywgIzE2CisKKyAgICAgICAgY2J6ICAgICAgICAgICAgIHcwLCA1Zgor ICAgICAgICB1cXNocm4gICAgICAgICAgdjMwLjhiLCB2MjguOGgsICMzICAgICAgICAgICAgICAv LyBTdG9yaW5nIFUKKyAgICAgICAgdXFzaHJuICAgICAgICAgIHYzMS44YiwgdjI5LjhoLCAjMyAg ICAgICAgICAgICAgLy8gU3RvcmluZyBWCisgICAgICAgIHN0MiAgICAgICAgICAgICB7djMwLjhi LCB2MzEuOGJ9LCBbeDZdLCAjMTYKKyAgICAgICAgYiAgICAgICAgICAgICAgIDZmCis1OgorICAg ICAgICB1cXNocm4gICAgICAgICAgdjMwLjhiLCB2MjkuOGgsICMzICAgICAgICAgICAgICAvLyBT dG9yaW5nIFYKKyAgICAgICAgdXFzaHJuICAgICAgICAgIHYzMS44YiwgdjI4LjhoLCAjMyAgICAg ICAgICAgICAgLy8gU3RvcmluZyBVCisgICAgICAgIHN0MiAgICAgICAgICAgICB7djMwLjhiLCB2 MzEuOGJ9LCBbeDZdLCAjMTYKKworNjoKKyAgICAgICAgc3VicyAgICAgICAgICAgIHc3LCB3Nywg IzE2CisgICAgICAgIGFkZCAgICAgICAgICAgICB4OCwgeDgsICMxNgorICAgICAgICBiLmd0ICAg ICAgICAgICAgMWIKKworNzoKKyAgICAgICAgY21wICAgICAgICAgICAgIHc3LCAjOAorICAgICAg ICBibHQgICAgICAgICAgICAgMTJmCis4OgorICAgICAgICBtb3YgICAgICAgICAgICAgdjE2LjE2 YiwgdjIuMTZiICAgICAgICAgICAgICAgICAvLyBVIGFjYyBsb3cKKyAgICAgICAgbW92ICAgICAg ICAgICAgIHYxNy4xNmIsIHYzLjE2YiAgICAgICAgICAgICAgICAgLy8gVSBhY2MgaGlnaAorICAg ICAgICBtb3YgICAgICAgICAgICAgdjE4LjE2YiwgdjQuMTZiICAgICAgICAgICAgICAgICAvLyBW IGFjYyBsb3cKKyAgICAgICAgbW92ICAgICAgICAgICAgIHYxOS4xNmIsIHY1LjE2YiAgICAgICAg ICAgICAgICAgLy8gViBhY2MgaGlnaAorCisgICAgICAgIG1vdiAgICAgICAgICAgICB3OSwgdzMg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNockZpbHRlclNpemUgY291bnRlcgorICAgICAg ICBtb3YgICAgICAgICAgICAgeDEwLCB4MiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaHJG aWx0ZXIgcG9pbnRlcgorICAgICAgICBtb3YgICAgICAgICAgICAgeDExLCB4NCAgICAgICAgICAg ICAgICAgICAgICAgICAvLyBjaHJVU3JjIGJhc2UKKyAgICAgICAgbW92ICAgICAgICAgICAgIHgx MiwgeDUgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hyVlNyYyBiYXNlCisKKzk6CisgICAg ICAgIGxkciAgICAgICAgICAgICBoNiwgW3gxMF0sICMyICAgICAgICAgICAgICAgICAgIC8vIExv YWQgZmlsdGVyIGNvZWZmaWNpZW50CisKKyAgICAgICAgbGRyICAgICAgICAgICAgIHgxMywgW3gx MV0sICM4ICAgICAgICAgICAgICAgICAgLy8gY2hyVVNyY1tqXQorICAgICAgICBsZHIgICAgICAg ICAgICAgeDE0LCBbeDEyXSwgIzggICAgICAgICAgICAgICAgICAvLyBjaHJWU3JjW2pdCisgICAg ICAgIGFkZCAgICAgICAgICAgICB4MTMsIHgxMywgeDgsIGxzbCAjMSAgICAgICAgICAgIC8vICZj aHJVU3JjW2pdW2ldCisgICAgICAgIGFkZCAgICAgICAgICAgICB4MTQsIHgxNCwgeDgsIGxzbCAj MSAgICAgICAgICAgIC8vICZjaHJWU3JjW2pdW2ldCisKKyAgICAgICAgbGQxICAgICAgICAgICAg IHt2MjAuOGh9LCBbeDEzXSAgICAgICAgICAgICAgICAgLy8gVSBzYW1wbGVzCisgICAgICAgIGxk MSAgICAgICAgICAgICB7djIxLjhofSwgW3gxNF0gICAgICAgICAgICAgICAgIC8vIFYgc2FtcGxl cworCisgICAgICAgIHNtbGFsICAgICAgICAgICB2MTYuNHMsIHYyMC40aCwgdjYuaFswXQorICAg ICAgICBzbWxhbDIgICAgICAgICAgdjE3LjRzLCB2MjAuOGgsIHY2LmhbMF0KKyAgICAgICAgc21s YWwgICAgICAgICAgIHYxOC40cywgdjIxLjRoLCB2Ni5oWzBdCisgICAgICAgIHNtbGFsMiAgICAg ICAgICB2MTkuNHMsIHYyMS44aCwgdjYuaFswXQorCisgICAgICAgIHN1YnMgICAgICAgICAgICB3 OSwgdzksICMxCisgICAgICAgIGIuZ3QgICAgICAgICAgICA5YgorCisgICAgICAgIHNxc2hydW4g ICAgICAgICB2MjYuNGgsIHYxNi40cywgIzE2ICAgICAgICAgICAgIC8vIEZpbmFsIHByb2Nlc3Np bmcgYW5kIHN0b3JlCisgICAgICAgIHNxc2hydW4yICAgICAgICB2MjYuOGgsIHYxNy40cywgIzE2 CisgICAgICAgIHNxc2hydW4gICAgICAgICB2MjcuNGgsIHYxOC40cywgIzE2CisgICAgICAgIHNx c2hydW4yICAgICAgICB2MjcuOGgsIHYxOS40cywgIzE2CisKKyAgICAgICAgY2J6ICAgICAgICAg ICAgIHcwLCAxMGYKKyAgICAgICAgdXFzaHJuICAgICAgICAgIHYyOC44YiwgdjI2LjhoLCAjMyAg ICAgICAgICAgICAgLy8gU3RvcmluZyBVCisgICAgICAgIHVxc2hybiAgICAgICAgICB2MjkuOGIs IHYyNy44aCwgIzMgICAgICAgICAgICAgIC8vIFN0b3JpbmcgVgorICAgICAgICBzdDIgICAgICAg ICAgICAge3YyOC44YiwgdjI5LjhifSwgW3g2XSwgIzE2CisgICAgICAgIGIgICAgICAgICAgICAg ICAxMWYKKzEwOgorICAgICAgICB1cXNocm4gICAgICAgICAgdjI4LjhiLCB2MjcuOGgsICMzICAg ICAgICAgICAgICAvLyBTdG9yaW5nIFYKKyAgICAgICAgdXFzaHJuICAgICAgICAgIHYyOS44Yiwg djI2LjhoLCAjMyAgICAgICAgICAgICAgLy8gU3RvcmluZyBVCisgICAgICAgIHN0MiAgICAgICAg ICAgICB7djI4LjhiLCB2MjkuOGJ9LCBbeDZdLCAjMTYKKzExOgorICAgICAgICBzdWJzICAgICAg ICAgICAgdzcsIHc3LCAjOAorICAgICAgICBhZGQgICAgICAgICAgICAgeDgsIHg4LCAjOAorCisx MjoKKyAgICAgICAgY2J6ICAgICAgICAgICAgIHc3LCAxN2YgICAgICAgICAgICAgICAgICAgICAg ICAgLy8gU2NhbGFyIGxvb3AKKworMTM6CisgICAgICAgIGFuZCAgICAgICAgICAgICB4MTUsIHg4 LCAjNworICAgICAgICBsZHJiICAgICAgICAgICAgdzksIFt4MSwgeDE1XQorICAgICAgICBzeHR3 ICAgICAgICAgICAgeDksIHc5CisgICAgICAgIGxzbCAgICAgICAgICAgICB4OSwgeDksICMxMiAg ICAgICAgICAgICAgICAgICAgIC8vIHUgPSBjaHJEaXRoZXJbaSAmIDddIDw8IDEyOworCisgICAg ICAgIGFkZCAgICAgICAgICAgICB4MTUsIHg4LCAjMworICAgICAgICBhbmQgICAgICAgICAgICAg eDE1LCB4MTUsICM3CisgICAgICAgIGxkcmIgICAgICAgICAgICB3MTAsIFt4MSwgeDE1XQorICAg ICAgICBzeHR3ICAgICAgICAgICAgeDEwLCB3MTAKKyAgICAgICAgbHNsICAgICAgICAgICAgIHgx MCwgeDEwLCAjMTIgICAgICAgICAgICAgICAgICAgLy8gdiA9IGNockRpdGhlclsoaSArIDMpICYg N10gPDwgMTI7CisKKyAgICAgICAgbW92ICAgICAgICAgICAgIHcxMSwgdzMgICAgICAgICAgICAg ICAgICAgICAgICAgLy8gY2hyRmlsdGVyU2l6ZSBjb3VudGVyCisgICAgICAgIG1vdiAgICAgICAg ICAgICB4MTIsIHgyICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNockZpbHRlciBwb2ludGVy CisgICAgICAgIG1vdiAgICAgICAgICAgICB4MTMsIHg0ICAgICAgICAgICAgICAgICAgICAgICAg IC8vIGNoclVTcmMgYmFzZQorICAgICAgICBtb3YgICAgICAgICAgICAgeDE0LCB4NSAgICAgICAg ICAgICAgICAgICAgICAgICAvLyBjaHJWU3JjIGJhc2UKKworMTQ6CisgICAgICAgIGxkcnNoICAg ICAgICAgICB4MTYsIFt4MTJdLCAjMgorCisgICAgICAgIGxkciAgICAgICAgICAgICB4MTcsIFt4 MTNdLCAjOCAgICAgICAgICAgICAgICAgIC8vIGNoclVTcmNbal0KKyAgICAgICAgbGRyICAgICAg ICAgICAgIHgxOSwgW3gxNF0sICM4ICAgICAgICAgICAgICAgICAgLy8gY2hyVlNyY1tqXQorICAg ICAgICBhZGQgICAgICAgICAgICAgeDE3LCB4MTcsIHg4LCBsc2wgIzEgICAgICAgICAgICAvLyAm Y2hyVVNyY1tqXVtpXQorICAgICAgICBhZGQgICAgICAgICAgICAgeDE5LCB4MTksIHg4LCBsc2wg IzEgICAgICAgICAgICAvLyAmY2hyVlNyY1tqXVtpXQorCisgICAgICAgIGxkcnNoICAgICAgICAg ICB4MjAsIFt4MTddCisgICAgICAgIGxkcnNoICAgICAgICAgICB4MjEsIFt4MTldCisKKyAgICAg ICAgbWFkZCAgICAgICAgICAgIHg5LCB4MTYsIHgyMCwgeDkKKyAgICAgICAgbWFkZCAgICAgICAg ICAgIHgxMCwgeDE2LCB4MjEsIHgxMAorCisgICAgICAgIHN1YnMgICAgICAgICAgICB3MTEsIHcx MSwgIzEKKyAgICAgICAgYi5ndCAgICAgICAgICAgIDE0YgorCisgICAgICAgIGFzciAgICAgICAg ICAgICB4OSwgeDksICMxOSAgICAgICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgYW5kIHN0b3Jl IFUgYW5kIFYKKyAgICAgICAgYXNyICAgICAgICAgICAgIHgxMCwgeDEwLCAjMTkKKworICAgICAg ICBjbXAgICAgICAgICAgICAgeDksICMwCisgICAgICAgIGNzZWwgICAgICAgICAgICB4OSwgeDks IHh6ciwgZ2UKKyAgICAgICAgY21wICAgICAgICAgICAgIHgxMCwgIzAKKyAgICAgICAgY3NlbCAg ICAgICAgICAgIHgxMCwgeDEwLCB4enIsIGdlCisKKyAgICAgICAgbW92ICAgICAgICAgICAgIHgy MiwgIzEKKyAgICAgICAgbHNsICAgICAgICAgICAgIHgyMiwgeDIyLCAjOAorICAgICAgICBzdWIg ICAgICAgICAgICAgeDIyLCB4MjIsICMxCisKKyAgICAgICAgY21wICAgICAgICAgICAgIHg5LCB4 MjIKKyAgICAgICAgY3NlbCAgICAgICAgICAgIHg5LCB4MjIsIHg5LCBndAorICAgICAgICBjbXAg ICAgICAgICAgICAgeDEwLCB4MjIKKyAgICAgICAgY3NlbCAgICAgICAgICAgIHgxMCwgeDIyLCB4 MTAsIGd0CisKKyAgICAgICAgY2J6ICAgICAgICAgICAgIHcwLCAxNWYKKyAgICAgICAgc3RyYiAg ICAgICAgICAgIHc5LCBbeDZdLCAjMSAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmluZyBVCisg ICAgICAgIHN0cmIgICAgICAgICAgICB3MTAsIFt4Nl0sICMxICAgICAgICAgICAgICAgICAgIC8v IFN0b3JpbmcgVgorICAgICAgICBiICAgICAgICAgICAgICAgMTZmCisxNToKKyAgICAgICAgc3Ry YiAgICAgICAgICAgIHcxMCwgW3g2XSwgIzEgICAgICAgICAgICAgICAgICAgLy8gU3RvcmluZyBW CisgICAgICAgIHN0cmIgICAgICAgICAgICB3OSwgW3g2XSwgIzEgICAgICAgICAgICAgICAgICAg IC8vIFN0b3JpbmcgVQorCisxNjoKKyAgICAgICAgc3VicyAgICAgICAgICAgIHc3LCB3NywgIzEK KyAgICAgICAgYWRkICAgICAgICAgICAgIHg4LCB4OCwgIzEKKyAgICAgICAgYi5ndCAgICAgICAg ICAgIDEzYgorMTc6CisgICAgICAgIGxkcCAgICAgICAgICAgICB4MjEsIHgyMiwgW3NwXSwgIzE2 CisgICAgICAgIGxkcCAgICAgICAgICAgICB4MTksIHgyMCwgW3NwXSwgIzE2CisgICAgICAgIHJl dAorCitlbmRmdW5jCmRpZmYgLS1naXQgYS9saWJzd3NjYWxlL2FhcmNoNjQvc3dzY2FsZS5jIGIv bGlic3dzY2FsZS9hYXJjaDY0L3N3c2NhbGUuYwppbmRleCA2ZTVhNzIxYzFmLi5hN2RjYzQ1MWRj IDEwMDY0NAotLS0gYS9saWJzd3NjYWxlL2FhcmNoNjQvc3dzY2FsZS5jCisrKyBiL2xpYnN3c2Nh bGUvYWFyY2g2NC9zd3NjYWxlLmMKQEAgLTE2OCw2ICsxNjgsMjggQEAgdm9pZCBmZl95dXYycGxh bmUxXzhfbmVvbigKICAgICAgICAgY29uc3QgdWludDhfdCAqZGl0aGVyLAogICAgICAgICBpbnQg b2Zmc2V0KTsKIAordm9pZCBmZl95dXYybnYxMmNYX25lb25fYXNtKGludCBpc1N3YXBwZWQsIGNv bnN0IHVpbnQ4X3QgKmNockRpdGhlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBpbnQxNl90ICpjaHJGaWx0ZXIsIGludCBjaHJGaWx0ZXJTaXplLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGludDE2X3QgKipjaHJVU3JjLCBjb25zdCBpbnQxNl90ICoqY2hy VlNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpkZXN0LCBpbnQgY2hy RHN0Vyk7CisKK3N0YXRpYyB2b2lkIGZmX3l1djJudjEyY1hfbmVvbihlbnVtIEFWUGl4ZWxGb3Jt YXQgZHN0Rm9ybWF0LCBjb25zdCB1aW50OF90ICpjaHJEaXRoZXIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgaW50MTZfdCAqY2hyRmlsdGVyLCBpbnQgY2hyRmlsdGVyU2l6 ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQxNl90ICoqY2hyVVNy YywgY29uc3QgaW50MTZfdCAqKmNoclZTcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDhfdCAqZGVzdCwgaW50IGNockRzdFcpCit7CisgICAgaWYgKCFpc1N3YXBwZWRDaHJv bWEoZHN0Rm9ybWF0KSkKKyAgICB7CisgICAgICAgIGZmX3l1djJudjEyY1hfbmVvbl9hc20oMSwg Y2hyRGl0aGVyLCBjaHJGaWx0ZXIsIGNockZpbHRlclNpemUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2hyVVNyYywgY2hyVlNyYywgZGVzdCwgY2hyRHN0Vyk7CisgICAgfQorICAg IGVsc2UKKyAgICB7CisgICAgICAgIGZmX3l1djJudjEyY1hfbmVvbl9hc20oMCwgY2hyRGl0aGVy LCBjaHJGaWx0ZXIsIGNockZpbHRlclNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2hyVVNyYywgY2hyVlNyYywgZGVzdCwgY2hyRHN0Vyk7CisgICAgfQorfQorCiAjZGVmaW5l IEFTU0lHTl9TQ0FMRV9GVU5DMihoc2NhbGVmbiwgZmlsdGVyc2l6ZSwgb3B0KSBkbyB7ICAgICAg ICAgICAgICBcCiAgICAgaWYgKGMtPnNyY0JwYyA9PSA4KSB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmKGMtPmRzdEJwYyA8PSAxNCkg eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0yNzUsNiAr Mjk3LDggQEAgYXZfY29sZCB2b2lkIGZmX3N3c19pbml0X3N3c2NhbGVfYWFyY2g2NChTd3NJbnRl cm5hbCAqYykKICAgICAgICAgQVNTSUdOX1ZTQ0FMRV9GVU5DKGMtPnl1djJwbGFuZTEsIG5lb24p OwogICAgICAgICBpZiAoYy0+ZHN0QnBjID09IDgpIHsKICAgICAgICAgICAgIGMtPnl1djJwbGFu ZVggPSBmZl95dXYycGxhbmVYXzhfbmVvbjsKKyAgICAgICAgICAgIGlmIChpc1NlbWlQbGFuYXJZ VVYoYy0+b3B0cy5kc3RfZm9ybWF0KSkKKyAgICAgICAgICAgICAgIGMtPnl1djJudjEyY1ggPSBm Zl95dXYybnYxMmNYX25lb247CiAgICAgICAgIH0KICAgICAgICAgc3dpdGNoIChjLT5vcHRzLnNy Y19mb3JtYXQpIHsKICAgICAgICAgY2FzZSBBVl9QSVhfRk1UX0FCR1I6Ci0tIAoyLjM2LjAud2lu ZG93cy4xCgo= --_004_PN2P287MB11651C483E063B086BE13D4DD642APN2P287MB1165INDP_ Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". --_004_PN2P287MB11651C483E063B086BE13D4DD642APN2P287MB1165INDP_--