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 28F1C4BDC9 for ; Thu, 22 May 2025 13:57:46 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id DECCF68DC51; Thu, 22 May 2025 16:57:42 +0300 (EEST) Received: from PNZPR01CU001.outbound.protection.outlook.com (mail-centralindiaazon11021133.outbound.protection.outlook.com [40.107.51.133]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id CD6EF68C4C1 for ; Thu, 22 May 2025 16:57:35 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RbFTu1sxZemqel1RUVTbej6EAvpuMjEzNY16v8QfV2arP7FaSEESd9I3mrOb7mvBTltRHZo05h8jcRXIspJMv31FkySzW1/XmcbBqet00es3pEextyTlxrFcktQPpqDhOYABUuztkhOVXCTnldyvbU+Qwxyvz5kRzhJeu8LBaQ1ipmFFLvILhrzGcPYG68rGPzVoH2aw9ZrX0D9dzca4fRyiTP57zATEk59SqMhXMMEBtPKysuEfc5jlRruPijLDYoHA5CWOQyiuAADwD0dsyiqvgFptW/wdqj+OeLr9Tn86jpUnq48aMPWJaFqZrIj5CzJ6ZJKSY9U/pjp2Oo1IUA== 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=2df02BbVp3ZQMPMdd3WpIIi/lM5hr1koUXgask8jmFU=; b=JoyQjSwwD9hlS+OhbWvUvYfENy20FQ/+Wov7uGA3CtMrtz2NyXcUOzmeAC5Pxh3mHBGxa4quyRVW8GBJ8YcfSA8PkRjqmXvOMqZPiNmIgCWq+tlyHqoeWDcFQlh1ol5UQn2jLSjl2JYT0bgdyEKxnZ89CQooUpsPX77y7u8h37Q3m+ShCuZ8j5B4SxaJfSkcgybbWkbjU03awv7ymesZvFlIU7KzFCh1mxbtlbgXmYEM17XcEqkLwiJMYiUecL5h8W6R5ZfmMsWatu34KUY2bduGCbhYx5bIEFhoUFmF5PFl5KDahEEfHv55mZg5fLr6fMtLaUcwCAMyaCRsDQYVSg== 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=2df02BbVp3ZQMPMdd3WpIIi/lM5hr1koUXgask8jmFU=; b=awmbOgiyJsIem1wMCxqLHYOzXuXA4GLjrMmzGfHvpkDhdXF1BsLbiQGDXHMbw+QYs73LMuSED8BNb0QmxxypbAefciLKsKPk4ELj21rEu3wYJy0oMhEuy4BT0gK+tgQukvBMVIS7U5mOobJv3ICB72ArSDUxlt4P7k6MgNv9TPuRfJNtAgGUDGFvprj3BNouSKaXqG28aiQDRkuEg+e9Yi32qWDObsG0Q485bXcBneHNpr+tkaQ2pTgOzMrol6d/M6Ty2Q1XyXfTuxdVSGKLIYNlULVHPFkE0tIOzP69LSnk10fo2w06RYZCQQrCNfYvnP//upZlcB2+++R+FBgsxg== Received: from MA0P287MB1158.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:e5::5) by PN2P287MB0775.INDP287.PROD.OUTLOOK.COM (2603:1096:c01:133::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.20; Thu, 22 May 2025 13:57:31 +0000 Received: from MA0P287MB1158.INDP287.PROD.OUTLOOK.COM ([fe80::d173:abc7:2297:fdc8]) by MA0P287MB1158.INDP287.PROD.OUTLOOK.COM ([fe80::d173:abc7:2297:fdc8%3]) with mapi id 15.20.8769.019; Thu, 22 May 2025 13:57:31 +0000 From: Harshitha Sarangu Suresh To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH] swscale/output: Implement neon intrinsics for yuv2planeX_10_c_template() Thread-Index: AQHbyyEGtVqHc1DplEWWYn2oMt3YUw== Date: Thu, 22 May 2025 13:57:31 +0000 Message-ID: Accept-Language: en-IN, en-US Content-Language: en-IN 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: MA0P287MB1158:EE_|PN2P287MB0775:EE_ x-ms-office365-filtering-correlation-id: 691deaeb-ebd0-4797-1a6c-08dd9938989b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|1800799024|376014|8096899003|38070700018|4053099003; x-microsoft-antispam-message-info: =?iso-8859-1?Q?6yQBd6ZUJZ+eGLde09VFmNBRZ/fR/tRLne2TrinASizsfYVoAItDQz4udL?= =?iso-8859-1?Q?NOb/n82T5cIChny1UzgQj7xUV6dUbqEpdupiEGQ9ddihm/e+0jcFjX3nPc?= =?iso-8859-1?Q?dep16ZjrVeIqFDFsQmCFk+/DdNL74Vtr1FZtL6SiYOYeyroyFs5gIqeyqP?= =?iso-8859-1?Q?WCrmhihH8FXkXG+921Jl4Od6rDIMhpy6SVrFcwcA5BD1TzXQPu3HzyD1FV?= =?iso-8859-1?Q?IgoWX2HZ/SbIfVEZBZkxrmGf0uyGaimvcH3HjCcL9CyaEpKXzIUajflpAx?= =?iso-8859-1?Q?uQ+9FNwBBae9B50EXOyDmmfa7tBjfFt27t44Aeqtf4N5uwiXOHg1F2qTff?= =?iso-8859-1?Q?dkYJMJR4drYVTPlq5p55qzpdTYCd0caHjoL205JiRMlje9PwDl9zp7xmdS?= =?iso-8859-1?Q?2pLR2vfD+mTW5QcKn9/kwVE9Whad9pyB3o6qzEwUWbrYfFdeRAG1F3Azt/?= =?iso-8859-1?Q?WWBeknvTB3ypEJG1zopzGNOjBSXJkdjr1BNCQb2aSGL2Dho2Dmu81SRFJA?= =?iso-8859-1?Q?bzQUlnokEuosIscuiFjVELhCqauHCTEKkeWb9JQCKIXzXFuT4SLW61M9h5?= =?iso-8859-1?Q?B+1dLh+KZgTO8ZAhCy2VaRx5VOFAVAwQsbXKDNXIT35Pz3gpKIAxP5WyvE?= =?iso-8859-1?Q?S+afZoPA8Wj2Rk9ALoD9nyRxWZt82j92K7f28zedorH7UW6Lsb2uAy7INx?= =?iso-8859-1?Q?/1cgwMUapGBM8UvkDIJqBLNfeds/t2N4sggfSG4d0GIVylUhhER+RkaJ3i?= =?iso-8859-1?Q?OZthKtqamnlnCzIj23i45QvK0GcI+nIVKQJIA6u9Q7Ak6jkmCkZjSjRftI?= =?iso-8859-1?Q?4t63AFYjMtHNQda157sZ1z756jGQ4SU7iy9wv9orBqvhg8KcnZHInYYiTK?= =?iso-8859-1?Q?s1dfWoG+88/HE8wDP/h4QqEx+kCpNtj/h3oxeX9k4W83dw9C0RsxTjeKPn?= =?iso-8859-1?Q?sQKKSIr1Wi+JXoBXwjyRJJVYaIzkFAeNh3ODjcWdlNXp0iViepeRo8rc0f?= =?iso-8859-1?Q?9bGkQ+s8G/o6dA3WqZe2odvJE/qs/IodjpQSWJ4+/VHIRaXhrN3vtEnR8X?= =?iso-8859-1?Q?gxlrXMX9wwLzYgmK8yRRjGvcrxG05mxz0DXHJtRAuQHKPW2Lo5yHAQ8Q8K?= =?iso-8859-1?Q?zYeMBpQU3JcELoOhx3X2mYZLjJvVsGliM8y71DAnfV9B7k35wNrbFVh7DE?= =?iso-8859-1?Q?FUEORPRh7k0KEjlk5+RUA2IIbqLj0Ezoj7I/QPvjOW67bAewkkS2pfHdNM?= =?iso-8859-1?Q?YkkXYi9f03l6yxijmrELaTBOT01PbaST8NUZxjYE4iZ4KENXlEud3UQRPG?= =?iso-8859-1?Q?STCrE5m5cFRwikb8qUMb3gBwGX4NgiUYe3jzT8dqW999AW3AZmvYucWFZD?= =?iso-8859-1?Q?xsk76ZZ3rm5WLBCxph3rO0iWcUDmT5u8tTvvHdhtebAm+qgvN+lTMTgMIu?= =?iso-8859-1?Q?5rD/Lnnt+i3V0Tc2QMl/vchr3pkz+FbT52mEXrZVTDfyvI60Vh4RmMymDP?= =?iso-8859-1?Q?+bHYiubAJwA3Epj9NTdQ84oQUtVX5FP+Hmt0bwlW/69uX0ySxKOeUJdo0P?= =?iso-8859-1?Q?JGJIeVE=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MA0P287MB1158.INDP287.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(8096899003)(38070700018)(4053099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?UAyeKEn/ohgVExIX7DxT2gRKMlgsEhfByoZtGIBtcfQyu4CuzjsuKurItM?= =?iso-8859-1?Q?M1iqQJCW6FBjucLw57TZ3Upkweav9be7iCL0/tnClK/y+41l0QqS/KytAq?= =?iso-8859-1?Q?Rgmou+PpsjH06OIGFWkToIssuf1qQvP2Vo7Z7PAAk5+sOpG2RrDtKqr1nQ?= =?iso-8859-1?Q?7YS+z8kOgj4InS8l/FzO9vOQmX8qYc880rop1K1lvUT4/Cy3yQ5elu4UVP?= =?iso-8859-1?Q?uPqek3ToNTIW5ZUOL79DN9DPdfs/g7GJvflTsxdCDwyZZK32GjPSxMsBY6?= =?iso-8859-1?Q?C4wwqX89N479UNGzJx6nnbPvTTJos6CpdHa6kI/X9P84sUvaxe8oRRTVBz?= =?iso-8859-1?Q?ZwMiJiZrYVXWJ+vaHmY1eZAwB/0B4A07fUGQEMzTNa5m2FuJ+r1ByJvHUt?= =?iso-8859-1?Q?yUfhHXWfcolUnhltsEfKbnVhLzIC3WH7OvTVBJOiYz3Cf6KRZ5PySIlwuV?= =?iso-8859-1?Q?EvWU9SX6z8M8B9hNNwl0A73u3VYKD6/REaTgYINwL0G4x8I17e0KaJuAFA?= =?iso-8859-1?Q?vpi0ArM4PB0Pkp+8LCXZQ+IBuPXPheyi903mjPTDg4OLRUFborz2nhLZDQ?= =?iso-8859-1?Q?1sMJa60ORwf/hTBstUuZo4obvospCNeRg3mIk/qX9M5DJqwmuhGxbd9TuB?= =?iso-8859-1?Q?9T6sLY202aIDxGauMQ00nByo9lj8DvOwtQqi9X+dZf6mtNs7vDagy6f7iu?= =?iso-8859-1?Q?10s3JlFiYDUuK1UTVfl7kYdJtdQYt6PMumb9OeYE4LstUlK2/dyNpBFlbX?= =?iso-8859-1?Q?FFOx5DUXP/5PY8w+E91JeA+vQ7v1JeyBxXT4z5ZPef5HSGL9pZUtXz8cJi?= =?iso-8859-1?Q?sesfZ7CP/tsI3TwExwbjyUPLadEH9zcwr5w/Q82qXUUIjtglTV/wATgPbz?= =?iso-8859-1?Q?7nIDKsUe8tkwV6zOO3ESTggO3n8dW30e/I/2QeQamw6FACt7jgB9wv/YsA?= =?iso-8859-1?Q?+wKj7c/9QaoygWisX/k6l6Qk/+HPPYaI+v8+A2S6ZDIgrZVcosWCazkCKI?= =?iso-8859-1?Q?dGWrOta2eUxDxWuZfPtwDJJ/+jXqPd9zjFYhLe4YFHxYiBblaYFEHPrRjA?= =?iso-8859-1?Q?W9yAySenh0WCmFpn+IpRB6FPXHUvg5ATZ2zMjOoYbiRIkKzIxTJPDG5T3U?= =?iso-8859-1?Q?D7M4ODh3JTPIV1VGGhP4vFTi2UWoMTfi/szx26w1Qmk3ohs0ZK7abc5RKM?= =?iso-8859-1?Q?HRttHIpwJ92R8blgqLmjuF6pkAHJ0WgfMBcX7HJAi3rV9WmLjUlfsw5hh+?= =?iso-8859-1?Q?+FQ4WtchPISN2ZlIvSaElPqwwNMUKDIQpOePlLhKCo7/ZoGh1hBRiCpWIT?= =?iso-8859-1?Q?43gzTx5bXY0Lq/u/gRym/sPNi3Zsyt77snEk7KbZ1aGChOf8KNj/Z5w6r8?= =?iso-8859-1?Q?405i8GOXH0RW5BLvFVKDtGM9ZMaAQZ2CQHEIy4wDMsIAfVI9csx14UUc88?= =?iso-8859-1?Q?I8kiI/VvDXed6u9gv9UrxdNHPjch7mjjlyhUC0+r3/hAFAm+ctDaYuaYLt?= =?iso-8859-1?Q?zzN9ZcFB11209GdIeEVQ657Cu+Gkkj4GbdKsCHRxJ6sWpKGoNgjRa4PfrE?= =?iso-8859-1?Q?INNqDw14HWZr5K79spFPXsCXzBJeq2+/VLu8qqNGxVFdiLomO4j/iXIsEA?= =?iso-8859-1?Q?nRAbJsUd6NtAfUhlp1VXZxwMBEOSg+nCoLJxUcdFXIBWSbdhq79OwAKw?= =?iso-8859-1?Q?=3D=3D?= Content-Type: multipart/mixed; boundary="_004_MA0P287MB1158903867B74EADCF10A9C2D699AMA0P287MB1158INDP_" MIME-Version: 1.0 X-OriginatorOrg: multicorewareinc.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MA0P287MB1158.INDP287.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 691deaeb-ebd0-4797-1a6c-08dd9938989b X-MS-Exchange-CrossTenant-originalarrivaltime: 22 May 2025 13:57:31.3394 (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: OVvvyKDewP+AFXlvCgPB3MC14Ai6kodCq4DY+t8WsgK45v1km9+Ax830wnOoKp9BwZ/k9hrsyLSENrN/ghnUNBAdEqwXWA4FjIWelMjhuPQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PN2P287MB0775 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] swscale/output: Implement neon intrinsics 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --_004_MA0P287MB1158903867B74EADCF10A9C2D699AMA0P287MB1158INDP_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable This optimization provides 5x improvement for the module. The boost in perf= ormance was calculated by adding C timers inside the C function and the opt= imized neon intrinsic function. >From 904144c2db9e5e72d56360c4c2eb38d426852901 Mon Sep 17 00:00:00 2001 From: Harshitha Suresh Date: Thu, 22 May 2025 10:23:55 +0530 Subject: [PATCH] swscale/output: Implement neon intrinsics for yuv2planeX_10_c_template() --- libswscale/output.c | 76 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) diff --git a/libswscale/output.c b/libswscale/output.c index c37649e7ce..345df5ce59 100644 --- a/libswscale/output.c +++ b/libswscale/output.c @@ -22,7 +22,9 @@ #include #include #include - +#if defined (__aarch64__) +#include +#endif #include "libavutil/attributes.h" #include "libavutil/avutil.h" #include "libavutil/avassert.h" @@ -337,6 +339,77 @@ yuv2plane1_10_c_template(const int16_t *src, uint16_t = *dest, int dstW, } } + +#if defined (__aarch64__) && !defined(__APPLE__) +static av_always_inline void +yuv2planeX_10_c_template(const int16_t *filter, int filterSize, + const int16_t **src, uint16_t *dest, int dstW, + int big_endian, int output_bits) +{ + const int shift =3D 11 + 16 - output_bits; + const int bias =3D 1 << (shift - 1); + const int clip_max =3D (1 << output_bits) - 1; + int i; + + for (i =3D 0; i < dstW; i +=3D 16) { + int32x4_t sum0_lo =3D vdupq_n_s32(bias); + int32x4_t sum0_hi =3D vdupq_n_s32(bias); + int32x4_t sum1_lo =3D vdupq_n_s32(bias); + int32x4_t sum1_hi =3D vdupq_n_s32(bias); + + for (int j =3D 0; j < filterSize; j++) { + int16x8_t src_vec0 =3D vld1q_s16(&src[j][i]); + int16x8_t src_vec1 =3D vld1q_s16(&src[j][i + 8]); + int16x8_t filter_val =3D vdupq_n_s16(filter[j]); + + sum0_lo =3D vmlal_s16(sum0_lo, vget_low_s16(src_vec0), vget_lo= w_s16(filter_val)); + sum0_hi =3D vmlal_s16(sum0_hi, vget_high_s16(src_vec0), vget_h= igh_s16(filter_val)); + sum1_lo =3D vmlal_s16(sum1_lo, vget_low_s16(src_vec1), vget_lo= w_s16(filter_val)); + sum1_hi =3D vmlal_s16(sum1_hi, vget_high_s16(src_vec1), vget_h= igh_s16(filter_val)); + } + + // Right shift with rounding + int32x4_t shift_vec =3D vdupq_n_s32(-shift); + sum0_lo =3D vshlq_s32(sum0_lo, shift_vec); + sum0_hi =3D vshlq_s32(sum0_hi, shift_vec); + sum1_lo =3D vshlq_s32(sum1_lo, shift_vec); + sum1_hi =3D vshlq_s32(sum1_hi, shift_vec); + + // Clip to output_bits range + sum0_lo =3D vmaxq_s32(vminq_s32(sum0_lo, vdupq_n_s32(clip_max)), v= dupq_n_s32(0)); + sum0_hi =3D vmaxq_s32(vminq_s32(sum0_hi, vdupq_n_s32(clip_max)), v= dupq_n_s32(0)); + sum1_lo =3D vmaxq_s32(vminq_s32(sum1_lo, vdupq_n_s32(clip_max)), v= dupq_n_s32(0)); + sum1_hi =3D vmaxq_s32(vminq_s32(sum1_hi, vdupq_n_s32(clip_max)), v= dupq_n_s32(0)); + + // Convert to 16-bit + uint16x8_t result0 =3D vcombine_u16( + vreinterpret_u16_s16(vmovn_s32(sum0_lo)), + vreinterpret_u16_s16(vmovn_s32(sum0_hi)) + ); + uint16x8_t result1 =3D vcombine_u16( + vreinterpret_u16_s16(vmovn_s32(sum1_lo)), + vreinterpret_u16_s16(vmovn_s32(sum1_hi)) + ); + + // Store with proper endianness + if (big_endian) { + result0 =3D vreinterpretq_u16_u8(vrev16q_u8(vreinterpretq_u8_u= 16(result0))); + result1 =3D vreinterpretq_u16_u8(vrev16q_u8(vreinterpretq_u8_u= 16(result1))); + } + vst1q_u16(&dest[i], result0); + vst1q_u16(&dest[i + 8], result1); + } + + // Handle remaining pixels + for (; i < dstW; i++) { + int val =3D bias; + for (int j =3D 0; j < filterSize; j++) { + val +=3D src[j][i] * filter[j]; + } + output_pixel(&dest[i], val); + } +} +#else static av_always_inline void yuv2planeX_10_c_template(const int16_t *filter, int filterSize, const int16_t **src, uint16_t *dest, int dstW, @@ -355,6 +428,7 @@ yuv2planeX_10_c_template(const int16_t *filter, int fil= terSize, output_pixel(&dest[i], val); } } +#endif #undef output_pixel -- 2.36.0.windows.1 --_004_MA0P287MB1158903867B74EADCF10A9C2D699AMA0P287MB1158INDP_ Content-Type: application/octet-stream; name="0001-swscale-output-Implement-neon-intrinsics-for-yuv2pla.patch" Content-Description: 0001-swscale-output-Implement-neon-intrinsics-for-yuv2pla.patch Content-Disposition: attachment; filename="0001-swscale-output-Implement-neon-intrinsics-for-yuv2pla.patch"; size=4145; creation-date="Thu, 22 May 2025 13:57:22 GMT"; modification-date="Thu, 22 May 2025 13:57:31 GMT" Content-Transfer-Encoding: base64 RnJvbSA5MDQxNDRjMmRiOWU1ZTcyZDU2MzYwYzRjMmViMzhkNDI2ODUyOTAxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXJzaGl0aGEgU3VyZXNoIDxoYXJzaGl0aGFAbXVsdGljb3Jl d2FyZWluYy5jb20+CkRhdGU6IFRodSwgMjIgTWF5IDIwMjUgMTA6MjM6NTUgKzA1MzAKU3ViamVj dDogW1BBVENIXSBzd3NjYWxlL291dHB1dDogSW1wbGVtZW50IG5lb24gaW50cmluc2ljcyBmb3IK IHl1djJwbGFuZVhfMTBfY190ZW1wbGF0ZSgpCgotLS0KIGxpYnN3c2NhbGUvb3V0cHV0LmMgfCA3 NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBj aGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbGli c3dzY2FsZS9vdXRwdXQuYyBiL2xpYnN3c2NhbGUvb3V0cHV0LmMKaW5kZXggYzM3NjQ5ZTdjZS4u MzQ1ZGY1Y2U1OSAxMDA2NDQKLS0tIGEvbGlic3dzY2FsZS9vdXRwdXQuYworKysgYi9saWJzd3Nj YWxlL291dHB1dC5jCkBAIC0yMiw3ICsyMiw5IEBACiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5j bHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0KKyNpZiBkZWZpbmVkIChfX2Fh cmNoNjRfXykKKyNpbmNsdWRlIDxhcm1fbmVvbi5oPgorI2VuZGlmCiAjaW5jbHVkZSAibGliYXZ1 dGlsL2F0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvYXZ1dGlsLmgiCiAjaW5jbHVk ZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiCkBAIC0zMzcsNiArMzM5LDc3IEBAIHl1djJwbGFuZTFf MTBfY190ZW1wbGF0ZShjb25zdCBpbnQxNl90ICpzcmMsIHVpbnQxNl90ICpkZXN0LCBpbnQgZHN0 VywKICAgICB9CiB9CiAKKworI2lmIGRlZmluZWQgKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5lZChf X0FQUExFX18pCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkCit5dXYycGxhbmVYXzEwX2Nf dGVtcGxhdGUoY29uc3QgaW50MTZfdCAqZmlsdGVyLCBpbnQgZmlsdGVyU2l6ZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBpbnQxNl90ICoqc3JjLCB1aW50MTZfdCAqZGVzdCwgaW50 IGRzdFcsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJpZ19lbmRpYW4sIGludCBvdXRw dXRfYml0cykKK3sKKyAgICBjb25zdCBpbnQgc2hpZnQgPSAxMSArIDE2IC0gb3V0cHV0X2JpdHM7 CisgICAgY29uc3QgaW50IGJpYXMgPSAxIDw8IChzaGlmdCAtIDEpOworICAgIGNvbnN0IGludCBj bGlwX21heCA9ICgxIDw8IG91dHB1dF9iaXRzKSAtIDE7CisgICAgaW50IGk7CisKKyAgICBmb3Ig KGkgPSAwOyBpIDwgZHN0VzsgaSArPSAxNikgeworICAgICAgICBpbnQzMng0X3Qgc3VtMF9sbyA9 IHZkdXBxX25fczMyKGJpYXMpOworICAgICAgICBpbnQzMng0X3Qgc3VtMF9oaSA9IHZkdXBxX25f czMyKGJpYXMpOworICAgICAgICBpbnQzMng0X3Qgc3VtMV9sbyA9IHZkdXBxX25fczMyKGJpYXMp OworICAgICAgICBpbnQzMng0X3Qgc3VtMV9oaSA9IHZkdXBxX25fczMyKGJpYXMpOworCisgICAg ICAgIGZvciAoaW50IGogPSAwOyBqIDwgZmlsdGVyU2l6ZTsgaisrKSB7CisgICAgICAgICAgICBp bnQxNng4X3Qgc3JjX3ZlYzAgPSB2bGQxcV9zMTYoJnNyY1tqXVtpXSk7CisgICAgICAgICAgICBp bnQxNng4X3Qgc3JjX3ZlYzEgPSB2bGQxcV9zMTYoJnNyY1tqXVtpICsgOF0pOworICAgICAgICAg ICAgaW50MTZ4OF90IGZpbHRlcl92YWwgPSB2ZHVwcV9uX3MxNihmaWx0ZXJbal0pOworCisgICAg ICAgICAgICBzdW0wX2xvID0gdm1sYWxfczE2KHN1bTBfbG8sIHZnZXRfbG93X3MxNihzcmNfdmVj MCksIHZnZXRfbG93X3MxNihmaWx0ZXJfdmFsKSk7CisgICAgICAgICAgICBzdW0wX2hpID0gdm1s YWxfczE2KHN1bTBfaGksIHZnZXRfaGlnaF9zMTYoc3JjX3ZlYzApLCB2Z2V0X2hpZ2hfczE2KGZp bHRlcl92YWwpKTsKKyAgICAgICAgICAgIHN1bTFfbG8gPSB2bWxhbF9zMTYoc3VtMV9sbywgdmdl dF9sb3dfczE2KHNyY192ZWMxKSwgdmdldF9sb3dfczE2KGZpbHRlcl92YWwpKTsKKyAgICAgICAg ICAgIHN1bTFfaGkgPSB2bWxhbF9zMTYoc3VtMV9oaSwgdmdldF9oaWdoX3MxNihzcmNfdmVjMSks IHZnZXRfaGlnaF9zMTYoZmlsdGVyX3ZhbCkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmln aHQgc2hpZnQgd2l0aCByb3VuZGluZworICAgICAgICBpbnQzMng0X3Qgc2hpZnRfdmVjID0gdmR1 cHFfbl9zMzIoLXNoaWZ0KTsKKyAgICAgICAgc3VtMF9sbyA9IHZzaGxxX3MzMihzdW0wX2xvLCBz aGlmdF92ZWMpOworICAgICAgICBzdW0wX2hpID0gdnNobHFfczMyKHN1bTBfaGksIHNoaWZ0X3Zl Yyk7CisgICAgICAgIHN1bTFfbG8gPSB2c2hscV9zMzIoc3VtMV9sbywgc2hpZnRfdmVjKTsKKyAg ICAgICAgc3VtMV9oaSA9IHZzaGxxX3MzMihzdW0xX2hpLCBzaGlmdF92ZWMpOworCisgICAgICAg IC8vIENsaXAgdG8gb3V0cHV0X2JpdHMgcmFuZ2UKKyAgICAgICAgc3VtMF9sbyA9IHZtYXhxX3Mz Mih2bWlucV9zMzIoc3VtMF9sbywgdmR1cHFfbl9zMzIoY2xpcF9tYXgpKSwgdmR1cHFfbl9zMzIo MCkpOworICAgICAgICBzdW0wX2hpID0gdm1heHFfczMyKHZtaW5xX3MzMihzdW0wX2hpLCB2ZHVw cV9uX3MzMihjbGlwX21heCkpLCB2ZHVwcV9uX3MzMigwKSk7CisgICAgICAgIHN1bTFfbG8gPSB2 bWF4cV9zMzIodm1pbnFfczMyKHN1bTFfbG8sIHZkdXBxX25fczMyKGNsaXBfbWF4KSksIHZkdXBx X25fczMyKDApKTsKKyAgICAgICAgc3VtMV9oaSA9IHZtYXhxX3MzMih2bWlucV9zMzIoc3VtMV9o aSwgdmR1cHFfbl9zMzIoY2xpcF9tYXgpKSwgdmR1cHFfbl9zMzIoMCkpOworCisgICAgICAgIC8v IENvbnZlcnQgdG8gMTYtYml0CisgICAgICAgIHVpbnQxNng4X3QgcmVzdWx0MCA9IHZjb21iaW5l X3UxNigKKyAgICAgICAgICAgIHZyZWludGVycHJldF91MTZfczE2KHZtb3ZuX3MzMihzdW0wX2xv KSksCisgICAgICAgICAgICB2cmVpbnRlcnByZXRfdTE2X3MxNih2bW92bl9zMzIoc3VtMF9oaSkp CisgICAgICAgICk7CisgICAgICAgIHVpbnQxNng4X3QgcmVzdWx0MSA9IHZjb21iaW5lX3UxNigK KyAgICAgICAgICAgIHZyZWludGVycHJldF91MTZfczE2KHZtb3ZuX3MzMihzdW0xX2xvKSksCisg ICAgICAgICAgICB2cmVpbnRlcnByZXRfdTE2X3MxNih2bW92bl9zMzIoc3VtMV9oaSkpCisgICAg ICAgICk7CisKKyAgICAgICAgLy8gU3RvcmUgd2l0aCBwcm9wZXIgZW5kaWFubmVzcworICAgICAg ICBpZiAoYmlnX2VuZGlhbikgeworICAgICAgICAgICAgcmVzdWx0MCA9IHZyZWludGVycHJldHFf dTE2X3U4KHZyZXYxNnFfdTgodnJlaW50ZXJwcmV0cV91OF91MTYocmVzdWx0MCkpKTsKKyAgICAg ICAgICAgIHJlc3VsdDEgPSB2cmVpbnRlcnByZXRxX3UxNl91OCh2cmV2MTZxX3U4KHZyZWludGVy cHJldHFfdThfdTE2KHJlc3VsdDEpKSk7CisgICAgICAgIH0KKyAgICAgICAgdnN0MXFfdTE2KCZk ZXN0W2ldLCByZXN1bHQwKTsKKyAgICAgICAgdnN0MXFfdTE2KCZkZXN0W2kgKyA4XSwgcmVzdWx0 MSk7CisgICAgfQorCisgICAgLy8gSGFuZGxlIHJlbWFpbmluZyBwaXhlbHMKKyAgICBmb3IgKDsg aSA8IGRzdFc7IGkrKykgeworICAgICAgICBpbnQgdmFsID0gYmlhczsKKyAgICAgICAgZm9yIChp bnQgaiA9IDA7IGogPCBmaWx0ZXJTaXplOyBqKyspIHsKKyAgICAgICAgICAgIHZhbCArPSBzcmNb al1baV0gKiBmaWx0ZXJbal07CisgICAgICAgIH0KKyAgICAgICAgb3V0cHV0X3BpeGVsKCZkZXN0 W2ldLCB2YWwpOworICAgIH0KK30KKyNlbHNlCiBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2b2lk CiB5dXYycGxhbmVYXzEwX2NfdGVtcGxhdGUoY29uc3QgaW50MTZfdCAqZmlsdGVyLCBpbnQgZmls dGVyU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQxNl90ICoqc3JjLCB1 aW50MTZfdCAqZGVzdCwgaW50IGRzdFcsCkBAIC0zNTUsNiArNDI4LDcgQEAgeXV2MnBsYW5lWF8x MF9jX3RlbXBsYXRlKGNvbnN0IGludDE2X3QgKmZpbHRlciwgaW50IGZpbHRlclNpemUsCiAgICAg ICAgIG91dHB1dF9waXhlbCgmZGVzdFtpXSwgdmFsKTsKICAgICB9CiB9CisjZW5kaWYKIAogI3Vu ZGVmIG91dHB1dF9waXhlbAogCi0tIAoyLjM2LjAud2luZG93cy4xCgo= --_004_MA0P287MB1158903867B74EADCF10A9C2D699AMA0P287MB1158INDP_ 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_MA0P287MB1158903867B74EADCF10A9C2D699AMA0P287MB1158INDP_--