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 AD81F4E03B for ; Fri, 6 Jun 2025 08:45:13 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id E7CAF68C37D; Fri, 6 Jun 2025 11:45:09 +0300 (EEST) Received: from MA0PR01CU009.outbound.protection.outlook.com (mail-southindiaazon11020105.outbound.protection.outlook.com [52.101.227.105]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 503C468C1E0 for ; Fri, 6 Jun 2025 11:45:03 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wACb9W1hGUcz0wbm+Z2wAxWACcPPi/r1R+NkfUTCVt1ZlD223Tx/WRNVVEgKbg80OsWGBqc0yS+FzRdDt5Czee60TNJmowhKaUWPkUe4Hm+INKw5aXriW0uDoijW57iFmDqW7rkMlGpgo2yrtk79F+mjJ12gKiPp9GT6BdQC980ucvEPah+SQ2bOnWcI0A2v/iHF+0uRkUVltQDK0ARmEZWnEHvAzcMzItl/6mJv5EBJPoiKCM0CPPRnOfCliP2n3daywg8O7hNfaX30qdbayWJmUMYdt6HwKUvu7IpZ1JAzf7TlevL4zvL+EHlWO3p4uLDjgkhipU2ro0tGxfahbA== 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=2/49riuHWEwCko0MYuA3CBML5pkkMhBlR49uoKoNxeQ=; b=wPQ4LZXri+E7KhgeZiOVTsml5YfOuLvN0Q8rC+QlC9z+bOv+6WHEhTnJLFU2Yf4hKpYCE5MoUTcG4D4VXhd+z/dUTA6g3FbAtBl0AR1SNzI6vIDhKSdP4a7g4ktJDXKnLrzv69ItS3E9bd6+10tYdhVSsMOQRQRVqyHj20TwFumfhJ8qRpzT99oHJNEi8UEwLENLCt/lCyl+E8pcoybnBFCs0NutdzGBe5wl8oSrVbx7hNQUZuie3xLILBEE8XA0mavRIch1bgU1evwuKrmNy6+//DjaLVRUL30RaSNSft+TMSNI9cvpsjDWlvI8eWB7XSNKFlMoqlMpGTz5pAoQ2g== 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=2/49riuHWEwCko0MYuA3CBML5pkkMhBlR49uoKoNxeQ=; b=x+AvV9KyDaKCb5P6f48QxABv8BVnh7kBii/ejjDSx3kNzflykCjCR3bThEEqQ+vDMLqFM5jKJQEHqhm4XYnCNZjs+n8/0XhzauP34YsL7wS6gE3mEYPx4OmYipPlKA+JLticsUyotGjD4AqH1EjiJaomaqidEdpYZeY20aTJk81rjTTTflf/0QL3SpprubNgdtxLeu0FslzDFi5GFKL6kiLHOYZ1JRwkkDkVmTZLr/qbwhKTxQV4nrsmvE+gD16pz6gFPP8+1R2dEBdK5fhob6btniJobqa+QfKcktijUd+Wu/s347JLzOV//prKBHSv+upEQx1aamgplASNpDy8HA== Received: from PN3P287MB3339.INDP287.PROD.OUTLOOK.COM (2603:1096:c01:22d::6) by PN3P287MB1696.INDP287.PROD.OUTLOOK.COM (2603:1096:c01:1a4::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8813.22; Fri, 6 Jun 2025 08:44:59 +0000 Received: from PN3P287MB3339.INDP287.PROD.OUTLOOK.COM ([fe80::4a22:77a3:8f7d:445]) by PN3P287MB3339.INDP287.PROD.OUTLOOK.COM ([fe80::4a22:77a3:8f7d:445%7]) with mapi id 15.20.8813.021; Fri, 6 Jun 2025 08:44:59 +0000 From: Logaprakash Ramajayam To: Kieran Kunhya via ffmpeg-devel Thread-Topic: [FFmpeg-devel] [PATCH] swscale/aarch64/output: Implement neon assembly for yuv2planeX_10_c_template() Thread-Index: AQHb1rLTc6C+SuYlDUatrCwC3G9IXQ== Date: Fri, 6 Jun 2025 08:44:59 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: 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: PN3P287MB3339:EE_|PN3P287MB1696:EE_ x-ms-office365-filtering-correlation-id: b1c5cbcd-a8c7-4fe8-dab7-08dda4d66b88 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|8096899003|4053099003|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?Rc75sRcIqb4OtRqsJWAztTf1It81J5ic8EhAfukquQ+2rruv5tzpy3323K?= =?iso-8859-1?Q?I3mG6+yGl0MV4/00D8JvDDFKGaCLB0u1CDHJrQP8cG0/mqeo9I1KZBGo91?= =?iso-8859-1?Q?J4AdeTvwVHhzghxVUM9fW8al5AThFybADxBFOQQykq26U0lnKdd9PWoRWz?= =?iso-8859-1?Q?qVB8kYZ0RDq7hWCbhNemYJ2XTTka8UamhBi7U4Zk7pXnmUSK8aEdn20Q83?= =?iso-8859-1?Q?g6JXt4+RPo6fM32LsT5B5p3GQDgnw5qFC5ol42HvE8KjNnpDj18kuTKIy1?= =?iso-8859-1?Q?bXFrerv3XfOSXIAK+WI+e77ePDVlb5echb9GVSO/8MTavhKHQPwgnTs597?= =?iso-8859-1?Q?zzj7ZV7hxgGjT3BFL8q25HB0xsQ/25bx7KK+BnQePAkkiCDsKf4H+qKfw4?= =?iso-8859-1?Q?TVP9/e7F8MFzlI+bxgO2aSLZYXSVgGSsvlwvYwMUIyByRk03Vr+4cgG8Kf?= =?iso-8859-1?Q?1Y7Lg8JnVktZ7UrePR+CUQxBmGX0l4FHBIdWu6yKtEsgzFPc++pdgpc8Mm?= =?iso-8859-1?Q?UORfYLbPh+0Z84RXgiy+Sk7Kqm9PINaww2/Htlec9PK0uqBVQDhyJQY1J9?= =?iso-8859-1?Q?lylg4CAQqUo7EdefpTlK09vHO51ToulaAiNA+tgIcqfkhQskY0JN5NXkvN?= =?iso-8859-1?Q?pb/6WyCGIP7qzTKe0/r/dmyBbc3Wp78ohjiJLDW25ZHwanyIC1Du5NIOe5?= =?iso-8859-1?Q?N/7XMVXuf19oAukp3EsbOOB8Lgub78VowJ3ZXAAZcFZQYM9gfk+iHhgOnJ?= =?iso-8859-1?Q?fZPBhwov1xv/5VwZJ1EgQfyHN6QZR+TdKyq846zLB81oJyue+uBBNvTbrR?= =?iso-8859-1?Q?ySpNIzsSNQIHvLq5485o1Etg/+N/jDGOL8C+M+W2wj/0yw71jmxjSvx4a2?= =?iso-8859-1?Q?Hw9XshDwKtoR8+dfTlUKfaMx/CyjA7jBiBUJ1J+3lx7ZexltBGubX0kJ4e?= =?iso-8859-1?Q?mlXIayCcSW9xmuRWkKDJFo9ZwfgMKTzdQcfLpXiL2HB8z3iTZD5i0YbJuW?= =?iso-8859-1?Q?tImZPZGu01PHHAKdr7ZwAMn7/XwRRhs435nS46bEYZregXl0zIamoexpBq?= =?iso-8859-1?Q?X1TXTT5pbEkB5mVTBAYJf92bNwmmVCmCJVZvUfw3Pa4YzrVlTKXwr6te3Y?= =?iso-8859-1?Q?NTk2vnbmfaTa7582iV0JH1I+LgJ5pbtYqaIcv/983FwYtz09R9RCBpurnO?= =?iso-8859-1?Q?aC44JGD4YQs/pEYyG0DaVcszn9ojkMpmaQfwyTHST9EhsxfHjElBfvyls9?= =?iso-8859-1?Q?+pkkti0o2FSCYWsaqtHYUCwNmVcuRJouYtKBRZK6aP1SypPi8GWA3KyKcx?= =?iso-8859-1?Q?rObELBK2/+LBLUVsBLJkJTIJBziHElZjhRFo3uZlBSnJAn16fjtE7yfDU/?= =?iso-8859-1?Q?Fg9MsxyjV0DeDOilUb+QDoyC27cCfVXO9P87XI0ol3FLZ4Q6upD82+NJgL?= =?iso-8859-1?Q?PqY3jzglaA/8xnDo4laGIQieWJNCdLpMOYxbEkvY3qVlCBxIKLPgcPydNa?= =?iso-8859-1?Q?sEtOpmD4k8wCw9v9N6rZliciWPgb4m8gpp6xi96fdQlBsHDRFeU6IQxVPS?= =?iso-8859-1?Q?/LBRd1s=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PN3P287MB3339.INDP287.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(8096899003)(4053099003)(38070700018); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?jmlORMsyf+TBjkNv5P4q/9zyZeqmBIlUtatV1YSL0KX0RTYIwc2o81lFCa?= =?iso-8859-1?Q?SgOjxdOTBQSNIuRknETSdElRSGZaRdaPadReFCEPofuiRmBcEm5mOCQW5H?= =?iso-8859-1?Q?agPkznto5+XKbBcEkKptDenVDSJxFqrVBOOr9KUGySc9r+MubBbidMrCn1?= =?iso-8859-1?Q?97EY8YPl+B/dkDiDl+Kv/osnNmrpY7PoAXgLS9ISC2yCiGjlhodOp/R+UK?= =?iso-8859-1?Q?4oIal0rwtXG4xyXCFT/oSld+phecyZgRF52/iNoq6Zi/wG+0FdG9Vxkp7c?= =?iso-8859-1?Q?mokTG/7LVl/viJLfLWjzlUzmI9mYhJKY3gNPAwoYxGk3fWpjqqaDdRkd/p?= =?iso-8859-1?Q?Xx06nZJNW9Ae42Scxqrt28gg+iGpIGPuBdmDnL4/vri29lmhBzXfRq3LmM?= =?iso-8859-1?Q?/fCYtATmcc8vfuGy+AqFVi8Eq6YeDT4JTEjjo9Ot0urmy1Cd2r+j3O5qh5?= =?iso-8859-1?Q?M6PHadaArF/bOgV4s5XbJe9mZtp7Zw3JVYIJCpMiY370TJiArOXJYZ2P/8?= =?iso-8859-1?Q?2wiZqC0RmUJNQHBRvnsA89SibnF+THwssQebBfDFfO3m9E5r/ogdDL0880?= =?iso-8859-1?Q?+0lOVuf+XP2AoBzS3HxyKDmio5MvUUYxkmngQ6k3jPGRFP4TJElAzgxtxA?= =?iso-8859-1?Q?OnvwjeaeyEMfulYhKffpWteIOVTNkjYKT7rrYn8S/fifYb2ioP8PecxSEt?= =?iso-8859-1?Q?BAX8d6FpW4wZ/A4azcT2TxnlC4wNrnLXaOKDRX03dt/YS0BcLRSVkaiF0Y?= =?iso-8859-1?Q?VtEFiBfAix14Ws5JxfoOFerRi0odFxxxY5oM3sBtJNfgV3yuRi/OsX57D3?= =?iso-8859-1?Q?RQ+z/urnbJHp6JcOV2QMopDwBhSOKIj+praiWMrXkoxnccW9bpieA7BKuj?= =?iso-8859-1?Q?HiRXxWvQVAOTYff+2UrwL7+zRVyIk2hCeuZsdrCsmG5gTC7fTI1TpJmewT?= =?iso-8859-1?Q?iN5vVy5CtG/JZXJrbRAB342IDlHlwHziaQvoZ+F0m4VoO3KUuPee7yIdmv?= =?iso-8859-1?Q?Y7aaePjj6cT5NuDSOc/UzzQiP55joT3+hY9YbYLvcHR0s2DiszTAso8zII?= =?iso-8859-1?Q?jnkVq1wX3NJAm8qgxRthzJBaTyeU1dCF4QDfILPknre0KtzUEAksO8TG3Y?= =?iso-8859-1?Q?4NTxgVJoQ/9SUf/tRZ/KhRZf3JIPVjpbhD7+C149yi9/e3qllRlGT+QOS0?= =?iso-8859-1?Q?0En5YT169CzR4iN0UZyMWAQ+EIU1pkCS73+lRJiOnjIOOcxfESlxSC6iHR?= =?iso-8859-1?Q?jSA7HXiiRV8ELD8CTaDdQiAv4wKZ7LXFwCAq83jvWogM+tij5ZwVkAQr+v?= =?iso-8859-1?Q?vshSNw9c2v7VN7nHVviwpvmyMpRD3sE2rmEWGGB9SW6Ht5v6EXJQnwXHE/?= =?iso-8859-1?Q?Cmz2gwveMirLEKg/FIwZSc1mA8vbi/5bPc9zWzyAdZteiapfjK5MaFM7QI?= =?iso-8859-1?Q?qbTe2O7iygYHPT7JDUNE5XYhZPUARF4ZxOR9Jme/1sshrJ5unJZUjT8r0f?= =?iso-8859-1?Q?WsMqqoNc7v2LoKfVPF+DGXmmkO3wfceEgxa2OKJ62w5pmlm+HpxVJLV9h5?= =?iso-8859-1?Q?TnlEtEX4Q1he44M2lkVsRh8nSc2Lv7q5bHYXzaqqIfBsFgaaImPphB22JL?= =?iso-8859-1?Q?Fqx1OOkgsCZtQtVZBeIYaL31CLIp7oGhaDkidDVyTfBON7mcauQopdjQMR?= =?iso-8859-1?Q?Kyq12dsI57YM7WLkw1E=3D?= Content-Type: multipart/mixed; boundary="_004_PN3P287MB33394D7164A5AFDB8AC925CB9A6EAPN3P287MB3339INDP_" MIME-Version: 1.0 X-OriginatorOrg: multicorewareinc.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PN3P287MB3339.INDP287.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: b1c5cbcd-a8c7-4fe8-dab7-08dda4d66b88 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jun 2025 08:44:59.0398 (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: 1tmQIoO1QLA9ivOitw54Y1Y+BBkKfHghemUm+KX6itLzs1Qni1YQCCgdwRwiEQS4VIGJETXiXBoZjhh44muc4OpHbcRbEHactLYV+Yr/3zsxtxiHM6YZlSCWIJEYonVb0cy9W8ZVBzsgWnT/XqIhxA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PN3P287MB1696 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] swscale/aarch64/output: Implement neon assembly for yuv2planeX_10_c_template() 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 , Harshitha Sarangu Suresh Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --_004_PN3P287MB33394D7164A5AFDB8AC925CB9A6EAPN3P287MB3339INDP_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Checked FATE tests and gha-aarch64 git workflow. >From 34cdef26eaebcf98916e9881b3a04f4f698f09c6 Mon Sep 17 00:00:00 2001 From: Logaprakash Ramajayam Date: Thu, 5 Jun 2025 01:33:39 -0700 Subject: [PATCH] swscale/aarch64/output: Implement neon assembly for yuv2planeX_10_c_template() --- libswscale/aarch64/output.S | 167 +++++++++++++++++++++++++++++++++++ libswscale/aarch64/swscale.c | 38 ++++++++ 2 files changed, 205 insertions(+) diff --git a/libswscale/aarch64/output.S b/libswscale/aarch64/output.S index 190c438870..e039e820ae 100644 --- a/libswscale/aarch64/output.S +++ b/libswscale/aarch64/output.S @@ -20,6 +20,173 @@ #include "libavutil/aarch64/asm.S" +function ff_yuv2planeX_10_neon, export=3D1 +// x0 =3D filter (int16_t*) +// w1 =3D filterSize +// x2 =3D src (int16_t**) +// x3 =3D dest (uint16_t*) +// w4 =3D dstW +// w5 =3D big_endian +// w6 =3D output_bits + + mov w8, #27 + sub w8, w8, w6 // shift =3D 11 + = 16 - output_bits + + sub w9, w8, #1 + mov w10, #1 + lsl w9, w10, w9 // val =3D 1 << (s= hift - 1) + + dup v1.4s, w9 + dup v2.4s, w9 // Create vectors = with val + + mov w17, #0 + sub w16, w17, w8 + dup v8.4s, w16 // Create (-shift)= vector for right shift + + movi v11.4s, #0 + + mov w10, #1 + lsl w10, w10, w6 + sub w10, w10, #1 // (1U << output_b= its) - 1 + dup v12.4s, w10 // Create Clip vec= tor for uppr bound + + tst w4, #15 // if dstW divisib= le by 16, process 16 elements + b.ne 4f // else process 8 = elements + + mov x7, #0 // i =3D 0 +1: // Loop + + mov v3.16b, v1.16b + mov v4.16b, v2.16b + mov v5.16b, v1.16b + mov v6.16b, v2.16b + + mov w11, w1 // tmpfilterSize = =3D filterSize + mov x12, x2 // srcp =3D src + mov x13, x0 // filterp =3D fil= ter + +2: // Filter loop + + ldp x14, x15, [x12], #16 // get 2 pointers:= src[j] and src[j+1] + ldr s7, [x13], #4 // load filter coe= fficients + add x14, x14, x7, lsl #1 + add x15, x15, x7, lsl #1 + ld1 {v16.8h, v17.8h}, [x14] + ld1 {v18.8h, v19.8h}, [x15] + + // Multiply-accumulate + smlal v3.4s, v16.4h, v7.h[0] + smlal2 v4.4s, v16.8h, v7.h[0] + smlal v5.4s, v17.4h, v7.h[0] + smlal2 v6.4s, v17.8h, v7.h[0] + + smlal v3.4s, v18.4h, v7.h[1] + smlal2 v4.4s, v18.8h, v7.h[1] + smlal v5.4s, v19.4h, v7.h[1] + smlal2 v6.4s, v19.8h, v7.h[1] + + subs w11, w11, #2 // tmpfilterSize -= =3D 2 + b.gt 2b // continue filter= loop + + // Shift results + sshl v3.4s, v3.4s, v8.4s + sshl v4.4s, v4.4s, v8.4s + sshl v5.4s, v5.4s, v8.4s + sshl v6.4s, v6.4s, v8.4s + + // Clamp to 0 + smax v3.4s, v3.4s, v11.4s + smax v4.4s, v4.4s, v11.4s + smax v5.4s, v5.4s, v11.4s + smax v6.4s, v6.4s, v11.4s + + // Clip upper bound + smin v3.4s, v3.4s, v12.4s + smin v4.4s, v4.4s, v12.4s + smin v5.4s, v5.4s, v12.4s + smin v6.4s, v6.4s, v12.4s + + // Narrow to 16-bit + xtn v13.4h, v3.4s + xtn2 v13.8h, v4.4s + xtn v14.4h, v5.4s + xtn2 v14.8h, v6.4s + + cbz w5, 3f // Check if big en= dian + rev16 v13.16b, v13.16b + rev16 v14.16b, v14.16b // Swap bits for b= ig endian +3: + // Store 16 pixels + st1 {v13.8h}, [x3], #16 + st1 {v14.8h}, [x3], #16 + + add x7, x7, #16 // i =3D i + 16 + subs w4, w4, #16 // dstW =3D dstW -= 16 + b.gt 1b // Continue loop + b 8f // end + +4: // Process 8 elements + mov x7, #0 +5: // Loop + + mov v3.16b, v1.16b + mov v4.16b, v2.16b + + mov w11, w1 + mov x12, x2 + mov x13, x0 + +6: // Filter loop + + ldp x14, x15, [x12], #16 + ldr s7, [x13], #4 + add x14, x14, x7, lsl #1 + add x15, x15, x7, lsl #1 + ld1 {v5.8h}, [x14] + ld1 {v6.8h}, [x15] + + // Multiply-accumulate + smlal v3.4s, v5.4h, v7.h[0] + smlal2 v4.4s, v5.8h, v7.h[0] + smlal v3.4s, v6.4h, v7.h[1] + smlal2 v4.4s, v6.8h, v7.h[1] + + subs w11, w11, #2 // tmpfilterSize -= =3D 2 + b.gt 6b // loop until filt= erSize consumed + + // Shift results + sshl v3.4s, v3.4s, v8.4s + sshl v4.4s, v4.4s, v8.4s + + // Clamp to 0 + smax v3.4s, v3.4s, v11.4s + smax v4.4s, v4.4s, v11.4s + + // Clip upper bound + smin v3.4s, v3.4s, v12.4s + smin v4.4s, v4.4s, v12.4s + + // Narrow to 16-bit + xtn v9.4h, v3.4s + xtn v10.4h, v4.4s + + cbz w5, 7f // Check if big en= dian + rev16 v9.8b, v9.8b + rev16 v10.8b, v10.8b // Swap bits for b= ig endian + +7: + // Store 8 pixels + st1 {v9.4h}, [x3], #8 + st1 {v10.4h}, [x3], #8 + + add x7, x7, #8 // i =3D i + 8 + subs w4, w4, #8 // dstW =3D dstW -= 8 + b.gt 5b // Continue Loop + +8: + ret +endfunc + function ff_yuv2planeX_8_neon, export=3D1 // x0 - const int16_t *filter, // x1 - int filterSize, diff --git a/libswscale/aarch64/swscale.c b/libswscale/aarch64/swscale.c index 6e5a721c1f..23cdb7d26e 100644 --- a/libswscale/aarch64/swscale.c +++ b/libswscale/aarch64/swscale.c @@ -158,6 +158,29 @@ void ff_hscale ## from_bpc ## to ## to_bpc ## _ ## fil= ter_n ## _ ## opt( \ ALL_SCALE_FUNCS(neon); +void ff_yuv2planeX_10_neon(const int16_t *filter, int filterSize, + const int16_t **src, uint16_t *dest, int dstW, + int big_endian, int output_bits); + +#define yuv2NBPS(bits, BE_LE, is_be, template_size, typeX_t) \ +static void yuv2planeX_ ## bits ## BE_LE ## _neon(const int16_t *filter, i= nt filterSize, \ + const int16_t **src, uint8_t *dest, int ds= tW, \ + const uint8_t *dither, int offset)\ +{ \ + ff_yuv2planeX_## template_size ## _neon(filter, \ + filterSize, (const typeX_t **) src, \ + (uint16_t *) dest, dstW, is_be, bits); \ +} + +yuv2NBPS( 9, BE, 1, 10, int16_t) +yuv2NBPS( 9, LE, 0, 10, int16_t) +yuv2NBPS(10, BE, 1, 10, int16_t) +yuv2NBPS(10, LE, 0, 10, int16_t) +yuv2NBPS(12, BE, 1, 10, int16_t) +yuv2NBPS(12, LE, 0, 10, int16_t) +yuv2NBPS(14, BE, 1, 10, int16_t) +yuv2NBPS(14, LE, 0, 10, int16_t) + void ff_yuv2planeX_8_neon(const int16_t *filter, int filterSize, const int16_t **src, uint8_t *dest, int dstW, const uint8_t *dither, int offset); @@ -268,6 +291,8 @@ av_cold void ff_sws_init_range_convert_aarch64(SwsInter= nal *c) av_cold void ff_sws_init_swscale_aarch64(SwsInternal *c) { int cpu_flags =3D av_get_cpu_flags(); + enum AVPixelFormat dstFormat =3D c->opts.dst_format; + const AVPixFmtDescriptor *desc =3D av_pix_fmt_desc_get(dstFormat); if (have_neon(cpu_flags)) { ASSIGN_SCALE_FUNC(c->hyScale, c->hLumFilterSize, neon); @@ -276,6 +301,19 @@ av_cold void ff_sws_init_swscale_aarch64(SwsInternal *= c) if (c->dstBpc =3D=3D 8) { c->yuv2planeX =3D ff_yuv2planeX_8_neon; } + + if (isNBPS(dstFormat) && !isSemiPlanarYUV(dstFormat)) { + if (desc->comp[0].depth =3D=3D 9) { + c->yuv2planeX =3D isBE(dstFormat) ? yuv2planeX_9BE_neon := yuv2planeX_9LE_neon; + } else if (desc->comp[0].depth =3D=3D 10) { + c->yuv2planeX =3D isBE(dstFormat) ? yuv2planeX_10BE_neon = : yuv2planeX_10LE_neon; + } else if (desc->comp[0].depth =3D=3D 12) { + c->yuv2planeX =3D isBE(dstFormat) ? yuv2planeX_12BE_neon = : yuv2planeX_12LE_neon; + } else if (desc->comp[0].depth =3D=3D 14) { + c->yuv2planeX =3D isBE(dstFormat) ? yuv2planeX_14BE_neon = : yuv2planeX_14LE_neon; + } else + av_assert0(0); + } switch (c->opts.src_format) { case AV_PIX_FMT_ABGR: c->lumToYV12 =3D ff_abgr32ToY_neon; -- 2.36.0.windows.1 --_004_PN3P287MB33394D7164A5AFDB8AC925CB9A6EAPN3P287MB3339INDP_ Content-Type: application/octet-stream; name="Aarch64-Implement-neon-assembly-yuv2planeX_10_c_template.patch" Content-Description: Aarch64-Implement-neon-assembly-yuv2planeX_10_c_template.patch Content-Disposition: attachment; filename="Aarch64-Implement-neon-assembly-yuv2planeX_10_c_template.patch"; size=9819; creation-date="Fri, 06 Jun 2025 08:43:15 GMT"; modification-date="Fri, 06 Jun 2025 08:44:17 GMT" Content-Transfer-Encoding: base64 RnJvbSAzNGNkZWYyNmVhZWJjZjk4OTE2ZTk4ODFiM2EwNGY0ZjY5OGYwOWM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMb2dhcHJha2FzaCBSYW1hamF5YW0gPGxvZ2FwcmFrYXNoLnJh bWFqYXlhbUBtdWx0aWNvcmV3YXJlaW5jLmNvbT4KRGF0ZTogVGh1LCA1IEp1biAyMDI1IDAxOjMz OjM5IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gc3dzY2FsZS9hYXJjaDY0L291dHB1dDogSW1wbGVt ZW50IG5lb24gYXNzZW1ibHkgZm9yCiB5dXYycGxhbmVYXzEwX2NfdGVtcGxhdGUoKQotLS0KIGxp YnN3c2NhbGUvYWFyY2g2NC9vdXRwdXQuUyAgfCAxNjcgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIGxpYnN3c2NhbGUvYWFyY2g2NC9zd3NjYWxlLmMgfCAgMzggKysrKysrKysK IDIgZmlsZXMgY2hhbmdlZCwgMjA1IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9saWJzd3Nj YWxlL2FhcmNoNjQvb3V0cHV0LlMgYi9saWJzd3NjYWxlL2FhcmNoNjQvb3V0cHV0LlMKaW5kZXgg MTkwYzQzODg3MC4uZTAzOWU4MjBhZSAxMDA2NDQKLS0tIGEvbGlic3dzY2FsZS9hYXJjaDY0L291 dHB1dC5TCisrKyBiL2xpYnN3c2NhbGUvYWFyY2g2NC9vdXRwdXQuUwpAQCAtMjAsNiArMjAsMTcz IEBACiAKICNpbmNsdWRlICJsaWJhdnV0aWwvYWFyY2g2NC9hc20uUyIKIAorZnVuY3Rpb24gZmZf eXV2MnBsYW5lWF8xMF9uZW9uLCBleHBvcnQ9MQorLy8geDAgPSBmaWx0ZXIgKGludDE2X3QqKQor Ly8gdzEgPSBmaWx0ZXJTaXplCisvLyB4MiA9IHNyYyAoaW50MTZfdCoqKQorLy8geDMgPSBkZXN0 ICh1aW50MTZfdCopCisvLyB3NCA9IGRzdFcKKy8vIHc1ID0gYmlnX2VuZGlhbgorLy8gdzYgPSBv dXRwdXRfYml0cworCisgICAgICAgIG1vdiAgICAgICAgICAgICB3OCwgIzI3CisgICAgICAgIHN1 YiAgICAgICAgICAgICB3OCwgdzgsIHc2ICAgICAgICAgICAgICAgICAgICAgIC8vIHNoaWZ0ID0g MTEgKyAxNiAtIG91dHB1dF9iaXRzCisKKyAgICAgICAgc3ViICAgICAgICAgICAgIHc5LCB3OCwg IzEKKyAgICAgICAgbW92ICAgICAgICAgICAgIHcxMCwgIzEKKyAgICAgICAgbHNsICAgICAgICAg ICAgIHc5LCB3MTAsIHc5ICAgICAgICAgICAgICAgICAgICAgLy8gdmFsID0gMSA8PCAoc2hpZnQg LSAxKQorCisgICAgICAgIGR1cCAgICAgICAgICAgICB2MS40cywgdzkKKyAgICAgICAgZHVwICAg ICAgICAgICAgIHYyLjRzLCB3OSAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHZlY3Rv cnMgd2l0aCB2YWwKKworICAgICAgICBtb3YgICAgICAgICAgICAgdzE3LCAjMAorICAgICAgICBz dWIgICAgICAgICAgICAgdzE2LCB3MTcsIHc4CisgICAgICAgIGR1cCAgICAgICAgICAgICB2OC40 cywgdzE2ICAgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSAoLXNoaWZ0KSB2ZWN0b3IgZm9y IHJpZ2h0IHNoaWZ0CisKKyAgICAgICAgbW92aSAgICAgICAgICAgIHYxMS40cywgIzAKKworICAg ICAgICBtb3YgICAgICAgICAgICAgdzEwLCAjMQorICAgICAgICBsc2wgICAgICAgICAgICAgdzEw LCB3MTAsIHc2CisgICAgICAgIHN1YiAgICAgICAgICAgICB3MTAsIHcxMCwgIzEgICAgICAgICAg ICAgICAgICAgIC8vICgxVSA8PCBvdXRwdXRfYml0cykgLSAxCisgICAgICAgIGR1cCAgICAgICAg ICAgICB2MTIuNHMsIHcxMCAgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBDbGlwIHZlY3Rv ciBmb3IgdXBwciBib3VuZAorCisgICAgICAgIHRzdCAgICAgICAgICAgICB3NCwgIzE1ICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIGlmIGRzdFcgZGl2aXNpYmxlIGJ5IDE2LCBwcm9jZXNzIDE2 IGVsZW1lbnRzCisgICAgICAgIGIubmUgICAgICAgICAgICA0ZiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vIGVsc2UgcHJvY2VzcyA4IGVsZW1lbnRzCisKKyAgICAgICAgbW92ICAgICAg ICAgICAgIHg3LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaSA9IDAKKzE6ICAvLyBM b29wCisKKyAgICAgICAgbW92ICAgICAgICAgICAgIHYzLjE2YiwgdjEuMTZiCisgICAgICAgIG1v diAgICAgICAgICAgICB2NC4xNmIsIHYyLjE2YgorICAgICAgICBtb3YgICAgICAgICAgICAgdjUu MTZiLCB2MS4xNmIKKyAgICAgICAgbW92ICAgICAgICAgICAgIHY2LjE2YiwgdjIuMTZiCisKKyAg ICAgICAgbW92ICAgICAgICAgICAgIHcxMSwgdzEgICAgICAgICAgICAgICAgICAgICAgICAgLy8g dG1wZmlsdGVyU2l6ZSA9IGZpbHRlclNpemUKKyAgICAgICAgbW92ICAgICAgICAgICAgIHgxMiwg eDIgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JjcCA9IHNyYworICAgICAgICBtb3YgICAg ICAgICAgICAgeDEzLCB4MCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaWx0ZXJwID0gZmls dGVyCisKKzI6ICAvLyBGaWx0ZXIgbG9vcAorCisgICAgICAgIGxkcCAgICAgICAgICAgICB4MTQs IHgxNSwgW3gxMl0sICMxNiAgICAgICAgICAgIC8vIGdldCAyIHBvaW50ZXJzOiBzcmNbal0gYW5k IHNyY1tqKzFdCisgICAgICAgIGxkciAgICAgICAgICAgICBzNywgW3gxM10sICM0ICAgICAgICAg ICAgICAgICAgIC8vIGxvYWQgZmlsdGVyIGNvZWZmaWNpZW50cworICAgICAgICBhZGQgICAgICAg ICAgICAgeDE0LCB4MTQsIHg3LCBsc2wgIzEKKyAgICAgICAgYWRkICAgICAgICAgICAgIHgxNSwg eDE1LCB4NywgbHNsICMxCisgICAgICAgIGxkMSAgICAgICAgICAgICB7djE2LjhoLCB2MTcuOGh9 LCBbeDE0XQorICAgICAgICBsZDEgICAgICAgICAgICAge3YxOC44aCwgdjE5LjhofSwgW3gxNV0K KworICAgICAgICAvLyBNdWx0aXBseS1hY2N1bXVsYXRlCisgICAgICAgIHNtbGFsICAgICAgICAg ICB2My40cywgIHYxNi40aCwgdjcuaFswXQorICAgICAgICBzbWxhbDIgICAgICAgICAgdjQuNHMs ICB2MTYuOGgsIHY3LmhbMF0KKyAgICAgICAgc21sYWwgICAgICAgICAgIHY1LjRzLCAgdjE3LjRo LCB2Ny5oWzBdCisgICAgICAgIHNtbGFsMiAgICAgICAgICB2Ni40cywgIHYxNy44aCwgdjcuaFsw XQorCisgICAgICAgIHNtbGFsICAgICAgICAgICB2My40cywgIHYxOC40aCwgdjcuaFsxXQorICAg ICAgICBzbWxhbDIgICAgICAgICAgdjQuNHMsICB2MTguOGgsIHY3LmhbMV0KKyAgICAgICAgc21s YWwgICAgICAgICAgIHY1LjRzLCAgdjE5LjRoLCB2Ny5oWzFdCisgICAgICAgIHNtbGFsMiAgICAg ICAgICB2Ni40cywgIHYxOS44aCwgdjcuaFsxXQorCisgICAgICAgIHN1YnMgICAgICAgICAgICB3 MTEsIHcxMSwgIzIgICAgICAgICAgICAgICAgICAgIC8vIHRtcGZpbHRlclNpemUgLT0gMgorICAg ICAgICBiLmd0ICAgICAgICAgICAgMmIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBj b250aW51ZSBmaWx0ZXIgbG9vcAorCisgICAgICAgIC8vIFNoaWZ0IHJlc3VsdHMKKyAgICAgICAg c3NobCAgICAgICAgICAgIHYzLjRzLCAgdjMuNHMsIHY4LjRzCisgICAgICAgIHNzaGwgICAgICAg ICAgICB2NC40cywgIHY0LjRzLCB2OC40cworICAgICAgICBzc2hsICAgICAgICAgICAgdjUuNHMs ICB2NS40cywgdjguNHMKKyAgICAgICAgc3NobCAgICAgICAgICAgIHY2LjRzLCAgdjYuNHMsIHY4 LjRzCisKKyAgICAgICAgLy8gQ2xhbXAgdG8gMAorICAgICAgICBzbWF4ICAgICAgICAgICAgdjMu NHMsICB2My40cywgdjExLjRzCisgICAgICAgIHNtYXggICAgICAgICAgICB2NC40cywgIHY0LjRz LCB2MTEuNHMKKyAgICAgICAgc21heCAgICAgICAgICAgIHY1LjRzLCAgdjUuNHMsIHYxMS40cwor ICAgICAgICBzbWF4ICAgICAgICAgICAgdjYuNHMsICB2Ni40cywgdjExLjRzCisKKyAgICAgICAg Ly8gQ2xpcCB1cHBlciBib3VuZAorICAgICAgICBzbWluICAgICAgICAgICAgdjMuNHMsICB2My40 cywgdjEyLjRzCisgICAgICAgIHNtaW4gICAgICAgICAgICB2NC40cywgIHY0LjRzLCB2MTIuNHMK KyAgICAgICAgc21pbiAgICAgICAgICAgIHY1LjRzLCAgdjUuNHMsIHYxMi40cworICAgICAgICBz bWluICAgICAgICAgICAgdjYuNHMsICB2Ni40cywgdjEyLjRzCisKKyAgICAgICAgLy8gTmFycm93 IHRvIDE2LWJpdAorICAgICAgICB4dG4gICAgICAgICAgICAgdjEzLjRoLCB2My40cworICAgICAg ICB4dG4yICAgICAgICAgICAgdjEzLjhoLCB2NC40cworICAgICAgICB4dG4gICAgICAgICAgICAg djE0LjRoLCB2NS40cworICAgICAgICB4dG4yICAgICAgICAgICAgdjE0LjhoLCB2Ni40cworCisg ICAgICAgIGNieiAgICAgICAgICAgICB3NSwgM2YgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IENoZWNrIGlmIGJpZyBlbmRpYW4KKyAgICAgICAgcmV2MTYgICAgICAgICAgIHYxMy4xNmIsIHYx My4xNmIKKyAgICAgICAgcmV2MTYgICAgICAgICAgIHYxNC4xNmIsIHYxNC4xNmIgICAgICAgICAg ICAgICAgLy8gU3dhcCBiaXRzIGZvciBiaWcgZW5kaWFuCiszOgorICAgICAgICAvLyBTdG9yZSAx NiBwaXhlbHMKKyAgICAgICAgc3QxICAgICAgICAgICAgIHt2MTMuOGh9LCBbeDNdLCAjMTYKKyAg ICAgICAgc3QxICAgICAgICAgICAgIHt2MTQuOGh9LCBbeDNdLCAjMTYKKworICAgICAgICBhZGQg ICAgICAgICAgICAgeDcsIHg3LCAjMTYgICAgICAgICAgICAgICAgICAgICAvLyBpID0gaSArIDE2 CisgICAgICAgIHN1YnMgICAgICAgICAgICB3NCwgdzQsICMxNiAgICAgICAgICAgICAgICAgICAg IC8vIGRzdFcgPSBkc3RXIC0gMTYKKyAgICAgICAgYi5ndCAgICAgICAgICAgIDFiICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gQ29udGludWUgbG9vcAorICAgICAgICBiICAgICAgICAg ICAgICAgOGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmQKKworNDogLy8gUHJv Y2VzcyA4IGVsZW1lbnRzCisgICAgICAgIG1vdiAgICAgICAgICAgICB4NywgIzAKKzU6IC8vIExv b3AKKworICAgICAgICBtb3YgICAgICAgICAgICAgdjMuMTZiLCB2MS4xNmIKKyAgICAgICAgbW92 ICAgICAgICAgICAgIHY0LjE2YiwgdjIuMTZiCisKKyAgICAgICAgbW92ICAgICAgICAgICAgIHcx MSwgdzEKKyAgICAgICAgbW92ICAgICAgICAgICAgIHgxMiwgeDIKKyAgICAgICAgbW92ICAgICAg ICAgICAgIHgxMywgeDAKKworNjogLy8gRmlsdGVyIGxvb3AKKworICAgICAgICBsZHAgICAgICAg ICAgICAgeDE0LCB4MTUsIFt4MTJdLCAjMTYKKyAgICAgICAgbGRyICAgICAgICAgICAgIHM3LCBb eDEzXSwgIzQKKyAgICAgICAgYWRkICAgICAgICAgICAgIHgxNCwgeDE0LCB4NywgbHNsICMxCisg ICAgICAgIGFkZCAgICAgICAgICAgICB4MTUsIHgxNSwgeDcsIGxzbCAjMQorICAgICAgICBsZDEg ICAgICAgICAgICAge3Y1LjhofSwgW3gxNF0KKyAgICAgICAgbGQxICAgICAgICAgICAgIHt2Ni44 aH0sIFt4MTVdCisKKyAgICAgICAgLy8gTXVsdGlwbHktYWNjdW11bGF0ZQorICAgICAgICBzbWxh bCAgICAgICAgICAgdjMuNHMsIHY1LjRoLCB2Ny5oWzBdCisgICAgICAgIHNtbGFsMiAgICAgICAg ICB2NC40cywgdjUuOGgsIHY3LmhbMF0KKyAgICAgICAgc21sYWwgICAgICAgICAgIHYzLjRzLCB2 Ni40aCwgdjcuaFsxXQorICAgICAgICBzbWxhbDIgICAgICAgICAgdjQuNHMsIHY2LjhoLCB2Ny5o WzFdCisKKyAgICAgICAgc3VicyAgICAgICAgICAgIHcxMSwgdzExLCAjMiAgICAgICAgICAgICAg ICAgICAgLy8gdG1wZmlsdGVyU2l6ZSAtPSAyCisgICAgICAgIGIuZ3QgICAgICAgICAgICA2YiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvb3AgdW50aWwgZmlsdGVyU2l6ZSBjb25z dW1lZAorCisgICAgICAgIC8vIFNoaWZ0IHJlc3VsdHMKKyAgICAgICAgc3NobCAgICAgICAgICAg IHYzLjRzLCB2My40cywgdjguNHMKKyAgICAgICAgc3NobCAgICAgICAgICAgIHY0LjRzLCB2NC40 cywgdjguNHMKKworICAgICAgICAvLyBDbGFtcCB0byAwCisgICAgICAgIHNtYXggICAgICAgICAg ICB2My40cywgdjMuNHMsIHYxMS40cworICAgICAgICBzbWF4ICAgICAgICAgICAgdjQuNHMsIHY0 LjRzLCB2MTEuNHMKKworICAgICAgICAvLyBDbGlwIHVwcGVyIGJvdW5kCisgICAgICAgIHNtaW4g ICAgICAgICAgICB2My40cywgdjMuNHMsIHYxMi40cworICAgICAgICBzbWluICAgICAgICAgICAg djQuNHMsIHY0LjRzLCB2MTIuNHMKKworICAgICAgICAvLyBOYXJyb3cgdG8gMTYtYml0CisgICAg ICAgIHh0biAgICAgICAgICAgICB2OS40aCwgdjMuNHMKKyAgICAgICAgeHRuICAgICAgICAgICAg IHYxMC40aCwgdjQuNHMKKworICAgICAgICBjYnogICAgICAgICAgICAgdzUsIDdmICAgICAgICAg ICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBiaWcgZW5kaWFuCisgICAgICAgIHJldjE2ICAg ICAgICAgICB2OS44YiwgdjkuOGIKKyAgICAgICAgcmV2MTYgICAgICAgICAgIHYxMC44YiwgdjEw LjhiICAgICAgICAgICAgICAgICAgLy8gU3dhcCBiaXRzIGZvciBiaWcgZW5kaWFuCisKKzc6Cisg ICAgICAgIC8vIFN0b3JlIDggcGl4ZWxzCisgICAgICAgIHN0MSAgICAgICAgICAgICB7djkuNGh9 LCBbeDNdLCAjOAorICAgICAgICBzdDEgICAgICAgICAgICAge3YxMC40aH0sIFt4M10sICM4CisK KyAgICAgICAgYWRkICAgICAgICAgICAgIHg3LCB4NywgIzggICAgICAgICAgICAgICAgICAgICAg Ly8gaSA9IGkgKyA4CisgICAgICAgIHN1YnMgICAgICAgICAgICB3NCwgdzQsICM4ICAgICAgICAg ICAgICAgICAgICAgIC8vIGRzdFcgPSBkc3RXIC0gOAorICAgICAgICBiLmd0ICAgICAgICAgICAg NWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250aW51ZSBMb29wCisKKzg6Cisg ICAgICAgIHJldAorZW5kZnVuYworCiBmdW5jdGlvbiBmZl95dXYycGxhbmVYXzhfbmVvbiwgZXhw b3J0PTEKIC8vIHgwIC0gY29uc3QgaW50MTZfdCAqZmlsdGVyLAogLy8geDEgLSBpbnQgZmlsdGVy U2l6ZSwKZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUvYWFyY2g2NC9zd3NjYWxlLmMgYi9saWJzd3Nj YWxlL2FhcmNoNjQvc3dzY2FsZS5jCmluZGV4IDZlNWE3MjFjMWYuLjIzY2RiN2QyNmUgMTAwNjQ0 Ci0tLSBhL2xpYnN3c2NhbGUvYWFyY2g2NC9zd3NjYWxlLmMKKysrIGIvbGlic3dzY2FsZS9hYXJj aDY0L3N3c2NhbGUuYwpAQCAtMTU4LDYgKzE1OCwyOSBAQCB2b2lkIGZmX2hzY2FsZSAjIyBmcm9t X2JwYyAjIyB0byAjIyB0b19icGMgIyMgXyAjIyBmaWx0ZXJfbiAjIyBfICMjIG9wdCggXAogCiBB TExfU0NBTEVfRlVOQ1MobmVvbik7CiAKK3ZvaWQgZmZfeXV2MnBsYW5lWF8xMF9uZW9uKGNvbnN0 IGludDE2X3QgKmZpbHRlciwgaW50IGZpbHRlclNpemUsCisgICAgICAgICAgICAgICAgY29uc3Qg aW50MTZfdCAqKnNyYywgdWludDE2X3QgKmRlc3QsIGludCBkc3RXLAorICAgICAgICAgICAgICAg IGludCBiaWdfZW5kaWFuLCBpbnQgb3V0cHV0X2JpdHMpOworCisjZGVmaW5lIHl1djJOQlBTKGJp dHMsIEJFX0xFLCBpc19iZSwgdGVtcGxhdGVfc2l6ZSwgdHlwZVhfdCkgXAorc3RhdGljIHZvaWQg eXV2MnBsYW5lWF8gIyMgYml0cyAjIyBCRV9MRSAjIyBfbmVvbihjb25zdCBpbnQxNl90ICpmaWx0 ZXIsIGludCBmaWx0ZXJTaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGludDE2X3QgKipzcmMsIHVpbnQ4X3QgKmRlc3QsIGludCBkc3RXLCBcCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmRpdGhlciwgaW50IG9mZnNldClc Cit7IFwKKyAgICBmZl95dXYycGxhbmVYXyMjIHRlbXBsYXRlX3NpemUgIyMgX25lb24oZmlsdGVy LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclNpemUsIChjb25zdCB0 eXBlWF90ICoqKSBzcmMsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQx Nl90ICopIGRlc3QsIGRzdFcsIGlzX2JlLCBiaXRzKTsgXAorfQorCit5dXYyTkJQUyggOSwgQkUs IDEsIDEwLCBpbnQxNl90KQoreXV2Mk5CUFMoIDksIExFLCAwLCAxMCwgaW50MTZfdCkKK3l1djJO QlBTKDEwLCBCRSwgMSwgMTAsIGludDE2X3QpCit5dXYyTkJQUygxMCwgTEUsIDAsIDEwLCBpbnQx Nl90KQoreXV2Mk5CUFMoMTIsIEJFLCAxLCAxMCwgaW50MTZfdCkKK3l1djJOQlBTKDEyLCBMRSwg MCwgMTAsIGludDE2X3QpCit5dXYyTkJQUygxNCwgQkUsIDEsIDEwLCBpbnQxNl90KQoreXV2Mk5C UFMoMTQsIExFLCAwLCAxMCwgaW50MTZfdCkKKwogdm9pZCBmZl95dXYycGxhbmVYXzhfbmVvbihj b25zdCBpbnQxNl90ICpmaWx0ZXIsIGludCBmaWx0ZXJTaXplLAogICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBpbnQxNl90ICoqc3JjLCB1aW50OF90ICpkZXN0LCBpbnQgZHN0VywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZGl0aGVyLCBpbnQgb2Zmc2V0 KTsKQEAgLTI2OCw2ICsyOTEsOCBAQCBhdl9jb2xkIHZvaWQgZmZfc3dzX2luaXRfcmFuZ2VfY29u dmVydF9hYXJjaDY0KFN3c0ludGVybmFsICpjKQogYXZfY29sZCB2b2lkIGZmX3N3c19pbml0X3N3 c2NhbGVfYWFyY2g2NChTd3NJbnRlcm5hbCAqYykKIHsKICAgICBpbnQgY3B1X2ZsYWdzID0gYXZf Z2V0X2NwdV9mbGFncygpOworICAgIGVudW0gQVZQaXhlbEZvcm1hdCBkc3RGb3JtYXQgPSBjLT5v cHRzLmRzdF9mb3JtYXQ7CisgICAgY29uc3QgQVZQaXhGbXREZXNjcmlwdG9yICpkZXNjID0gYXZf cGl4X2ZtdF9kZXNjX2dldChkc3RGb3JtYXQpOwogCiAgICAgaWYgKGhhdmVfbmVvbihjcHVfZmxh Z3MpKSB7CiAgICAgICAgIEFTU0lHTl9TQ0FMRV9GVU5DKGMtPmh5U2NhbGUsIGMtPmhMdW1GaWx0 ZXJTaXplLCBuZW9uKTsKQEAgLTI3Niw2ICszMDEsMTkgQEAgYXZfY29sZCB2b2lkIGZmX3N3c19p bml0X3N3c2NhbGVfYWFyY2g2NChTd3NJbnRlcm5hbCAqYykKICAgICAgICAgaWYgKGMtPmRzdEJw YyA9PSA4KSB7CiAgICAgICAgICAgICBjLT55dXYycGxhbmVYID0gZmZfeXV2MnBsYW5lWF84X25l b247CiAgICAgICAgIH0KKworICAgICAgICBpZiAoaXNOQlBTKGRzdEZvcm1hdCkgJiYgIWlzU2Vt aVBsYW5hcllVVihkc3RGb3JtYXQpKSB7CisgICAgICAgICAgICBpZiAoZGVzYy0+Y29tcFswXS5k ZXB0aCA9PSA5KSB7CisgICAgICAgICAgICAgICAgYy0+eXV2MnBsYW5lWCA9IGlzQkUoZHN0Rm9y bWF0KSA/IHl1djJwbGFuZVhfOUJFX25lb24gIDogeXV2MnBsYW5lWF85TEVfbmVvbjsKKyAgICAg ICAgICAgIH0gZWxzZSBpZiAoZGVzYy0+Y29tcFswXS5kZXB0aCA9PSAxMCkgeworICAgICAgICAg ICAgICAgIGMtPnl1djJwbGFuZVggPSBpc0JFKGRzdEZvcm1hdCkgPyB5dXYycGxhbmVYXzEwQkVf bmVvbiAgOiB5dXYycGxhbmVYXzEwTEVfbmVvbjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVz Yy0+Y29tcFswXS5kZXB0aCA9PSAxMikgeworICAgICAgICAgICAgICAgIGMtPnl1djJwbGFuZVgg PSBpc0JFKGRzdEZvcm1hdCkgPyB5dXYycGxhbmVYXzEyQkVfbmVvbiAgOiB5dXYycGxhbmVYXzEy TEVfbmVvbjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVzYy0+Y29tcFswXS5kZXB0aCA9PSAx NCkgeworICAgICAgICAgICAgICAgIGMtPnl1djJwbGFuZVggPSBpc0JFKGRzdEZvcm1hdCkgPyB5 dXYycGxhbmVYXzE0QkVfbmVvbiAgOiB5dXYycGxhbmVYXzE0TEVfbmVvbjsKKyAgICAgICAgICAg IH0gZWxzZQorICAgICAgICAgICAgYXZfYXNzZXJ0MCgwKTsKKyAgICAgICAgfQogICAgICAgICBz d2l0Y2ggKGMtPm9wdHMuc3JjX2Zvcm1hdCkgewogICAgICAgICBjYXNlIEFWX1BJWF9GTVRfQUJH UjoKICAgICAgICAgICAgIGMtPmx1bVRvWVYxMiA9IGZmX2FiZ3IzMlRvWV9uZW9uOwotLSAKMi4z Ni4wLndpbmRvd3MuMQoK --_004_PN3P287MB33394D7164A5AFDB8AC925CB9A6EAPN3P287MB3339INDP_ 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_PN3P287MB33394D7164A5AFDB8AC925CB9A6EAPN3P287MB3339INDP_--