From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 82F9C43DAE for ; Sat, 10 Sep 2022 08:16:55 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BDAF868BB10; Sat, 10 Sep 2022 11:16:52 +0300 (EEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2044.outbound.protection.outlook.com [40.107.243.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BEA5668B44B for ; Sat, 10 Sep 2022 11:16:45 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CZBfDaL0ewfrymMEgFET+VPyc9MqzeBYYWcFIJOc4+qv1T6imS/dbown+kzJ9B/BIRfi4AUjGUjo/NXWDg3rXPXOicZNvPiNcAvoqW/JbJLrcgd0a8p3UApAX9FYESWsyzXZepdWRvKrW5eV8QyS0ehSj2T9sk60Cjuzdoklj/sffjRbkzPQFZpP1Mzki7O4tOGhHO5AXEIDQmU9MjHuZDkp4uoIEuCJAw3ht7djsINR5mz/6ParEhO/bjEDptbypnwQnY903o/lWgU9wFu9krfPZ7TJitQiIlLQLPM7nfYSVjpTZNXjwNdwfOBENCHVEzLVjCjOO2H1txB3KwZ6qg== 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=9mKEMihOdYpCmICCx0Gr+BtDIR+9WughQao0c8kl9C0=; b=baj4S8xJDRY5/K84D8svr4B5ztfP5Nk/k2S/DZ4yUxpjZ+rDiHIE9BG+2bOY6VmMIRwBd4xQzXCAMAt5XPqY/2MDq/M0V3nd0ejiQnKMCtJ+5b5wPEXVG6bSVmOMPF5LrTgO6II9KY8rRz9q/61RHO04Z8sHtBsNonAHoNnDzAotw1XnhsQt5Ea0DxRMbXhPjqrxnXAMjmnwTn92bxtYyk7KNOLly6L8tD7gMsK12x0a/UD6VZCs11Q7KNbD3TNLZo/J72rjRLw9ieK7w5Q50N+UnLjzyS3PftohCywmxsZsIrbnkbeMuPoHYAeOBysD+YiYi8C5VqmH+dlFlsNxsw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9mKEMihOdYpCmICCx0Gr+BtDIR+9WughQao0c8kl9C0=; b=D4hDH1Bp1QVTP1OZOM+E4XQ9HPDmoEbFSodIdiITz2fbho8yhUQLJ2unmENUhBxQace/ocF7ZEIixuMfspGE0EFaki/gf4nhtLyqXw/UruGCOhMyAzuUprDpMhsIRiQlgxSpi7uhVmCSL1aLfsgfnmnRo4tD1TnsSOjujpS3qmpWGNstgz2sd+X5TDc0mWmHAzowIEHsABM77ll9p9c1QRjbg36537LKWvQG9nnAUyLREhGlwGKaYFBElSmc9mMIG5dVy8mkxQYQIIDf6sJxW45/cq4wnJcknHQ7Bd8bYFL8YnGC3JETDsN+z0t4N5n19b6f3dEcdigDpuUnwdrNPg== Received: from PH7PR12MB5831.namprd12.prod.outlook.com (2603:10b6:510:1d6::13) by MN0PR12MB6368.namprd12.prod.outlook.com (2603:10b6:208:3d2::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.16; Sat, 10 Sep 2022 08:16:40 +0000 Received: from PH7PR12MB5831.namprd12.prod.outlook.com ([fe80::dc19:2d25:8ca7:60ca]) by PH7PR12MB5831.namprd12.prod.outlook.com ([fe80::dc19:2d25:8ca7:60ca%4]) with mapi id 15.20.5612.020; Sat, 10 Sep 2022 08:16:40 +0000 From: Roman Arzumanyan To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [PATCH] libavfilter/vf_colorrange_cuda: CUDA-accelerated video filter for MPEG and JPEG color range conversions Thread-Index: AQHYxOyhXyavxE/bjU2gpL6pjmNvcQ== Date: Sat, 10 Sep 2022 08:16:39 +0000 Message-ID: Accept-Language: ru-RU, en-US Content-Language: ru-RU 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=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH7PR12MB5831:EE_|MN0PR12MB6368:EE_ x-ms-office365-filtering-correlation-id: 6c770394-ad2a-4f91-20c7-08da9304c9a0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: M80ikAWQ5r0B9K87lMNG0ZbhV/7F5Yk39OnNPSH+DNYNYkz111wW/nGLdyMUCq1SGbyoSuIBKBipMg+RBp4lDxB2uOAxL9Zj0XIwgToI9wK92PdvHYJM9safxArJ+cbPU0AhG0Ayhczi+Cx0O1pT/ftnYR/OI2i8C4dsddL6YYbT1ac4nk4S0y10bDZkxYhdzuqdkvW/EG1K9jlIFZm9QdlaFszR7GDfqUDHtK/IC8h7ydPJJ8vJEr0QO/KIsPG9rJ33DlCx2xC0OSvG0BJPoVgiihphgwYd5WMwMnUQ5JHr4FmcsW4aclYPnL2xyLBVsurDf+HUV4tmKkgxAV4cIxOgbwJyHIldJTGpevulQ3lXshOudLUc2LASrMMeDqraik4Gjf+Qx2sPhcZ3aOTOcTU32o/sE9eqmSquUHBsS4YZuhGOyRKILUiaTm/rTkXAEhvcHV+pogJq0RC0HsC6wH60c+9/PFS8k1k2HlnE5zeg3kuFy79XQwftCdOrZiNcAPgPQ6wKsgYJYaQnyDJZ9bBQCA0lv8ij5A9xcVZG4BVXW127cApD2fiNmRPRA241hgNjHSxE5xfXRmHc2DyggZYl7ypt6QoPwOMfcECqDBzrCJhUf6iFRGbPcmTWmZbQEB+Tdbf5JILLCk7fIp4mJWwGR+4D5s6YIZGdmdshXxTbK6Pc/+VCezl5+T4XJKFuaVqmlL2mqAsqHnr9a9GGIVP9kImi5hVLdDicBQBjqB/uzMADZwsr+5/SuLkpBs0Ws8o/IOE8PCgj6qW2rdUXhQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH7PR12MB5831.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(396003)(39860400002)(136003)(376002)(346002)(366004)(7696005)(26005)(38070700005)(6506007)(86362001)(107886003)(122000001)(478600001)(41300700001)(9686003)(52536014)(186003)(99936003)(38100700002)(71200400001)(33656002)(8936002)(5660300002)(4326008)(55016003)(2906002)(558084003)(76116006)(66946007)(66446008)(91956017)(66476007)(66556008)(8676002)(316002)(64756008)(19627405001)(6916009)(54906003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?koi8-r?Q?Ye+ieIwZkSC+gLvlOL9n7WyneL8JikvAG5EnIamU2f/sXp7O7AgaPGfyQB4NQU?= =?koi8-r?Q?vInql/R0Rf3ppbUa+0a3KMpZVP6aZppB7yTO9Jx1pbAKfd84fY76wIuN5DIMQh?= =?koi8-r?Q?qbhwPqOasE8Bd8ILDzMWU7wZDZLTGvWBkFPYzQdjvrQkxgAdFWsDx9nFbHbFHQ?= =?koi8-r?Q?G1u82TpNsl5rmvmixwKE0mcRwSPAm+oT6QD7IH9w2v1HjcY+Bx0EV2Gkpuy9Wa?= =?koi8-r?Q?uQygg+zF0SkBBjlt5NrWHhDkzykFdGpFWC18oC1jRC7TkO3y0VsFl5QKkQFvIa?= =?koi8-r?Q?quoBMQ4NE/DE64oLsyyqVMStd6eimNQ2ayCvUe0npvT0ooW3BDo8rSu3ef8Ubh?= =?koi8-r?Q?dB7w+UAjZGLdWFhn8p4T3mCHJu8j7IU44VYjDEiq3t6wecxh1JrImbf64YBFiU?= =?koi8-r?Q?+f8ACSUPK+jrraOD0vFZLFgLrbfoJlMOJKZSsntQkkU+brB+0tu8xiTAksJARK?= =?koi8-r?Q?dkKx+ZSCDjoGFvaHwi/5cmGHXtL4l9vsLNXPqWchBRxUrBsNGiCvf1NWhc5mei?= =?koi8-r?Q?OsaTE9GsYLdjpAXO9zvu1dTH7UDf+vx15LH39hSwwpxjkFIqBOcu8dBedvLPLC?= =?koi8-r?Q?BiwqLwnAIQ9vo8Ury+0eESZ4M5jF9sqDcyWG8uVpsjb4rDxG0aeAVZ5pRoMdj4?= =?koi8-r?Q?rcGmbDzKBPngvtpPsDCCxPTtIO0WkQlbxpoMtp5wxiqIZsFPd973BSmZIvnJrE?= =?koi8-r?Q?SpKo34vcobvGa2hQj9T1ybKjmmWlpAqebF2bFsxgRCPRcoS3k+9yL7SGYMrm8k?= =?koi8-r?Q?c3fcP7Qt+x9raX5Jkr2ogClD8q0ZyY0lkFmTnuGrODu8ZAm7YJfJ8zBM9rv944?= =?koi8-r?Q?97e0es7v++nFffuVLRvjKfobTvxnldZhYITXjovejUttvnD/z4FFgoEGowNMFI?= =?koi8-r?Q?CfPe9C6RX4PZI+Pz9YVr9JMrejm5fiBJ7TwoU//kTD5ltbAdFgjqe89picRjLQ?= =?koi8-r?Q?v6JJV01+iUHf+1nDKmP/2qIGzISMbar+Bocwno4I7gbcwD2XZqaX0YbguOQCBw?= =?koi8-r?Q?SfkuNXpQaLv91wd940qzafFsbiB2qwBgZNMm07WaY7x1Um+5SWqVmr4VIPPDIT?= =?koi8-r?Q?EflBS//oU/FHJs8fiJV94iNcXd/afgjuR3G63go0f84CAgqYiFIbc5VMHvmZxy?= =?koi8-r?Q?/UG9Xx+BEm5HLRR2QWftkLNf8fkdy+zUwpfMWQnmjfZLb7lxEtJOV6gyOqJGV+?= =?koi8-r?Q?EYDCsCbriFGFv/ZmFBtvWLGNJzYs4oms3SZOoy8aYMNZp183G7V6qUVRO6cYAI?= =?koi8-r?Q?RzrstHM+krzJ0ZsF97MJrs4wY15wiTTCdVDVMUEXXdZk0HIgfO+xYxazexWd3T?= =?koi8-r?Q?QJguId46MCzxC3Jxh8o+mUjyqhsOHb1b4kLUrIB+aeRl4H2xrOkT2EH1ZkQVat?= =?koi8-r?Q?Av4rEJ5418teYRUkU5VKPQGxTfdoqZgLOBuStqlVcJBCn3/lJ4lVMAeEknY/gS?= =?koi8-r?Q?b1DLOAA2r+ap3SNwoarE6FXeESb8GoRrWYioRiZB3AQ4rowjPi3iLftMyKSk03?= =?koi8-r?Q?MG6eBsnaB14wl1rv8lRJ3sWzCVQJrrG1iR1xPi+5v+aOLKmBcZ?= Content-Type: multipart/mixed; boundary="_004_PH7PR12MB5831CF40BE529281E931F963D2429PH7PR12MB5831namp_" MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH7PR12MB5831.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6c770394-ad2a-4f91-20c7-08da9304c9a0 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Sep 2022 08:16:39.7745 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: IODEYJh3sBcTmCdohw+WOWOj8qzC0Md2m65tZCZuxrVLTlpVMKEjWSertR1P4bU2sJVCJrgWdmW6VBdORV4WcQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6368 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] libavfilter/vf_colorrange_cuda: CUDA-accelerated video filter for MPEG and JPEG color range conversions 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: Yogender Gupta , timo , Sven Middelberg , Hermann Held Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --_004_PH7PR12MB5831CF40BE529281E931F963D2429PH7PR12MB5831namp_ Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: quoted-printable Hello, This patch adds video filter which does color range conversion similar to s= wscale scaling filter. How to use it: ./ffmpeg \ -hwaccel cuda -hwaccel_output_format cuda \ -i /path/to/intput/file.mp4 \ -vf colorrange_cuda=3Drange=3Dmpeg \ -c:v h264_nvenc \ -y /path/to/output/file.mp4 --_004_PH7PR12MB5831CF40BE529281E931F963D2429PH7PR12MB5831namp_ Content-Type: text/x-patch; name="0001-libavfilter-vf_colorrange_cuda-CUDA-accelerated-colo.patch" Content-Description: 0001-libavfilter-vf_colorrange_cuda-CUDA-accelerated-colo.patch Content-Disposition: attachment; filename="0001-libavfilter-vf_colorrange_cuda-CUDA-accelerated-colo.patch"; size=18803; creation-date="Sat, 10 Sep 2022 08:12:57 GMT"; modification-date="Sat, 10 Sep 2022 08:13:21 GMT" Content-Transfer-Encoding: base64 RnJvbSAyYjE1ZDhhNjA5YTEyZDk3YjFiYTc1MDBjN2Y4NzcxYjMzNmUyZmRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb21hbiBBcnp1bWFueWFuIDxyYXJ6dW1hbnlhbkBudmlkaWEu Y29tPgpEYXRlOiBTYXQsIDEwIFNlcCAyMDIyIDExOjA1OjU2ICswMzAwClN1YmplY3Q6IFtQQVRD SF0gbGliYXZmaWx0ZXIvdmZfY29sb3JyYW5nZV9jdWRhIENVREEtYWNjZWxlcmF0ZWQgY29sb3Ig cmFuZ2UKIGNvbnZlcnNpb24gZmlsdGVyCgotLS0KIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMiArCiBsaWJhdmZpbHRlci9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDMg KwogbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jICAgICAgICAgIHwgICAxICsKIGxpYmF2ZmlsdGVy L3ZmX2NvbG9ycmFuZ2VfY3VkYS5jICB8IDQzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIGxpYmF2ZmlsdGVyL3ZmX2NvbG9ycmFuZ2VfY3VkYS5jdSB8ICA5MyArKysrKysrCiA1IGZp bGVzIGNoYW5nZWQsIDUzMSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZm aWx0ZXIvdmZfY29sb3JyYW5nZV9jdWRhLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRl ci92Zl9jb2xvcnJhbmdlX2N1ZGEuY3UKCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1 cmUKaW5kZXggOWQ2NDU3ZDgxYi4uZTVmOTczOGFkMSAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisr KyBiL2NvbmZpZ3VyZQpAQCAtMzE1NSw2ICszMTU1LDggQEAgdHJhbnNwb3NlX25wcF9maWx0ZXJf ZGVwcz0iZmZudmNvZGVjIGxpYm5wcCIKIG92ZXJsYXlfY3VkYV9maWx0ZXJfZGVwcz0iZmZudmNv ZGVjIgogb3ZlcmxheV9jdWRhX2ZpbHRlcl9kZXBzX2FueT0iY3VkYV9udmNjIGN1ZGFfbGx2bSIK IHNoYXJwZW5fbnBwX2ZpbHRlcl9kZXBzPSJmZm52Y29kZWMgbGlibnBwIgorY29sb3JyYW5nZV9j dWRhX2ZpbHRlcl9kZXBzPSJmZm52Y29kZWMiCitjb2xvcnJhbmdlX2N1ZGFfZmlsdGVyX2RlcHNf YW55PSJjdWRhX252Y2MgY3VkYV9sbHZtIgogCiBhbWZfZGVwc19hbnk9ImxpYmRsIExvYWRMaWJy YXJ5IgogbnZlbmNfZGVwcz0iZmZudmNvZGVjIgpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvTWFr ZWZpbGUgYi9saWJhdmZpbHRlci9NYWtlZmlsZQppbmRleCAzMGNjMzI5ZmI2Li43ODRlMTU0ZDgx IDEwMDY0NAotLS0gYS9saWJhdmZpbHRlci9NYWtlZmlsZQorKysgYi9saWJhdmZpbHRlci9NYWtl ZmlsZQpAQCAtMjMwLDYgKzIzMCw5IEBAIE9CSlMtJChDT05GSUdfQ09MT1JNQVBfRklMVEVSKSAg ICAgICAgICAgICAgICs9IHZmX2NvbG9ybWFwLm8KIE9CSlMtJChDT05GSUdfQ09MT1JNQVRSSVhf RklMVEVSKSAgICAgICAgICAgICs9IHZmX2NvbG9ybWF0cml4Lm8KIE9CSlMtJChDT05GSUdfQ09M T1JTUEFDRV9GSUxURVIpICAgICAgICAgICAgICs9IHZmX2NvbG9yc3BhY2UubyBjb2xvcnNwYWNl ZHNwLm8KIE9CSlMtJChDT05GSUdfQ09MT1JURU1QRVJBVFVSRV9GSUxURVIpICAgICAgICs9IHZm X2NvbG9ydGVtcGVyYXR1cmUubworT0JKUy0kKENPTkZJR19DT0xPUlJBTkdFX0NVREFfRklMVEVS KSAgICAgICAgKz0gdmZfY29sb3JyYW5nZV9jdWRhLm8gXAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmZfY29sb3JyYW5nZV9jdWRhLnB0eC5vIFwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ZGEvbG9hZF9o ZWxwZXIubwogT0JKUy0kKENPTkZJR19DT05WT0xVVElPTl9GSUxURVIpICAgICAgICAgICAgKz0g dmZfY29udm9sdXRpb24ubwogT0JKUy0kKENPTkZJR19DT05WT0xVVElPTl9PUEVOQ0xfRklMVEVS KSAgICAgKz0gdmZfY29udm9sdXRpb25fb3BlbmNsLm8gb3BlbmNsLm8gXAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbmNsL2NvbnZvbHV0aW9uLm8K ZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyBiL2xpYmF2ZmlsdGVyL2FsbGZp bHRlcnMuYwppbmRleCA1ZWJhY2ZkZTI3Li41ZTljYmU1N2VjIDEwMDY0NAotLS0gYS9saWJhdmZp bHRlci9hbGxmaWx0ZXJzLmMKKysrIGIvbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jCkBAIC0yMTMs NiArMjEzLDcgQEAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX2NvbG9ybWFwOwogZXh0ZXJu IGNvbnN0IEFWRmlsdGVyIGZmX3ZmX2NvbG9ybWF0cml4OwogZXh0ZXJuIGNvbnN0IEFWRmlsdGVy IGZmX3ZmX2NvbG9yc3BhY2U7CiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfY29sb3J0ZW1w ZXJhdHVyZTsKK2V4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl9jb2xvcnJhbmdlX2N1ZGE7CiBl eHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfY29udm9sdXRpb247CiBleHRlcm4gY29uc3QgQVZG aWx0ZXIgZmZfdmZfY29udm9sdXRpb25fb3BlbmNsOwogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZm X3ZmX2NvbnZvbHZlOwpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvdmZfY29sb3JyYW5nZV9jdWRh LmMgYi9saWJhdmZpbHRlci92Zl9jb2xvcnJhbmdlX2N1ZGEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi45NDllN2QzYmJmCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZm aWx0ZXIvdmZfY29sb3JyYW5nZV9jdWRhLmMKQEAgLTAsMCArMSw0MzIgQEAKKy8qCisgKiBDb3B5 cmlnaHQgKGMpIDIwMjIsIE5WSURJQSBDT1JQT1JBVElPTi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K KyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgor ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9S IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9U SEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU IE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhF IFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImxpYmF2 dXRpbC9hdnN0cmluZy5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9jb21tb24uaCIKKyNpbmNsdWRl ICJsaWJhdnV0aWwvY3VkYV9jaGVjay5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9od2NvbnRleHQu aCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvaHdjb250ZXh0X2N1ZGFfaW50ZXJuYWwuaCIKKyNpbmNs dWRlICJsaWJhdnV0aWwvaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCisj aW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIKKworI2luY2x1ZGUgImF2ZmlsdGVyLmgiCisj aW5jbHVkZSAiZm9ybWF0cy5oIgorI2luY2x1ZGUgImludGVybmFsLmgiCisjaW5jbHVkZSAic2Nh bGVfZXZhbC5oIgorI2luY2x1ZGUgInZpZGVvLmgiCisKKyNpbmNsdWRlICJjdWRhL2xvYWRfaGVs cGVyLmgiCisKK3N0YXRpYyBjb25zdCBlbnVtIEFWUGl4ZWxGb3JtYXQgc3VwcG9ydGVkX2Zvcm1h dHNbXSA9IHsKKyAgICBBVl9QSVhfRk1UX05WMTIsCisgICAgQVZfUElYX0ZNVF9ZVVY0MjBQLAor ICAgIEFWX1BJWF9GTVRfWVVWNDQ0UCwKK307CisKKyNkZWZpbmUgRElWX1VQKGEsIGIpICgoKGEp ICsgKGIpLTEpIC8gKGIpKQorI2RlZmluZSBCTE9DS1ggMzIKKyNkZWZpbmUgQkxPQ0tZIDE2CisK KyNkZWZpbmUgQ0hFQ0tfQ1UoeCkgRkZfQ1VEQV9DSEVDS19ETChjdHgsIHMtPmh3Y3R4LT5pbnRl cm5hbC0+Y3VkYV9kbCwgeCkKKwordHlwZWRlZiBzdHJ1Y3QgQ1VEQUNvbnZDb250ZXh0IHsKKyAg ICBjb25zdCBBVkNsYXNzKiBjbGFzczsKKworICAgIEFWQ1VEQURldmljZUNvbnRleHQqIGh3Y3R4 OworICAgIEFWQnVmZmVyUmVmKiBmcmFtZXNfY3R4OworICAgIEFWRnJhbWUqIG93bl9mcmFtZTsK KyAgICBBVkZyYW1lKiB0bXBfZnJhbWU7CisKKyAgICBDVWNvbnRleHQgY3VfY3R4OworICAgIENV c3RyZWFtIGN1X3N0cmVhbTsKKyAgICBDVW1vZHVsZSBjdV9tb2R1bGU7CisgICAgQ1VmdW5jdGlv biBjdV9jb252ZXJ0W0FWQ09MX1JBTkdFX05CXTsKKworICAgIGVudW0gQVZQaXhlbEZvcm1hdCBw aXhfZm10OworICAgIGVudW0gQVZDb2xvclJhbmdlIHJhbmdlOworCisgICAgaW50IG51bV9wbGFu ZXM7Cit9IENVREFDb252Q29udGV4dDsKKworc3RhdGljIGF2X2NvbGQgaW50IGN1ZGFjb252X2lu aXQoQVZGaWx0ZXJDb250ZXh0KiBjdHgpCit7CisgICAgQ1VEQUNvbnZDb250ZXh0KiBzID0gY3R4 LT5wcml2OworCisgICAgcy0+b3duX2ZyYW1lID0gYXZfZnJhbWVfYWxsb2MoKTsKKyAgICBpZiAo IXMtPm93bl9mcmFtZSkKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKworICAgIHMt PnRtcF9mcmFtZSA9IGF2X2ZyYW1lX2FsbG9jKCk7CisgICAgaWYgKCFzLT50bXBfZnJhbWUpCisg ICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3Rh dGljIGF2X2NvbGQgdm9pZCBjdWRhY29udl91bmluaXQoQVZGaWx0ZXJDb250ZXh0KiBjdHgpCit7 CisgICAgQ1VEQUNvbnZDb250ZXh0KiBzID0gY3R4LT5wcml2OworCisgICAgaWYgKHMtPmh3Y3R4 ICYmIHMtPmN1X21vZHVsZSkgeworICAgICAgICBDdWRhRnVuY3Rpb25zKiBjdSA9IHMtPmh3Y3R4 LT5pbnRlcm5hbC0+Y3VkYV9kbDsKKyAgICAgICAgQ1Vjb250ZXh0IGR1bW15OworCisgICAgICAg IENIRUNLX0NVKGN1LT5jdUN0eFB1c2hDdXJyZW50KHMtPmh3Y3R4LT5jdWRhX2N0eCkpOworICAg ICAgICBDSEVDS19DVShjdS0+Y3VNb2R1bGVVbmxvYWQocy0+Y3VfbW9kdWxlKSk7CisgICAgICAg IHMtPmN1X21vZHVsZSA9IE5VTEw7CisgICAgICAgIENIRUNLX0NVKGN1LT5jdUN0eFBvcEN1cnJl bnQoJmR1bW15KSk7CisgICAgfQorCisgICAgYXZfZnJhbWVfZnJlZSgmcy0+b3duX2ZyYW1lKTsK KyAgICBhdl9idWZmZXJfdW5yZWYoJnMtPmZyYW1lc19jdHgpOworICAgIGF2X2ZyYW1lX2ZyZWUo JnMtPnRtcF9mcmFtZSk7Cit9CisKK3N0YXRpYyBhdl9jb2xkIGludCBpbml0X2h3ZnJhbWVfY3R4 KENVREFDb252Q29udGV4dCogcywgQVZCdWZmZXJSZWYqIGRldmljZV9jdHgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAg QVZCdWZmZXJSZWYqIG91dF9yZWYgPSBOVUxMOworICAgIEFWSFdGcmFtZXNDb250ZXh0KiBvdXRf Y3R4OworICAgIGludCByZXQ7CisKKyAgICBvdXRfcmVmID0gYXZfaHdmcmFtZV9jdHhfYWxsb2Mo ZGV2aWNlX2N0eCk7CisgICAgaWYgKCFvdXRfcmVmKQorICAgICAgICByZXR1cm4gQVZFUlJPUihF Tk9NRU0pOworCisgICAgb3V0X2N0eCA9IChBVkhXRnJhbWVzQ29udGV4dCopb3V0X3JlZi0+ZGF0 YTsKKworICAgIG91dF9jdHgtPmZvcm1hdCA9IEFWX1BJWF9GTVRfQ1VEQTsKKyAgICBvdXRfY3R4 LT5zd19mb3JtYXQgPSBzLT5waXhfZm10OworICAgIG91dF9jdHgtPndpZHRoID0gRkZBTElHTih3 aWR0aCwgMzIpOworICAgIG91dF9jdHgtPmhlaWdodCA9IEZGQUxJR04oaGVpZ2h0LCAzMik7CisK KyAgICByZXQgPSBhdl9od2ZyYW1lX2N0eF9pbml0KG91dF9yZWYpOworICAgIGlmIChyZXQgPCAw KQorICAgICAgICBnb3RvIGZhaWw7CisKKyAgICBhdl9mcmFtZV91bnJlZihzLT5vd25fZnJhbWUp OworICAgIHJldCA9IGF2X2h3ZnJhbWVfZ2V0X2J1ZmZlcihvdXRfcmVmLCBzLT5vd25fZnJhbWUs IDApOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICBnb3RvIGZhaWw7CisKKyAgICBzLT5vd25f ZnJhbWUtPndpZHRoID0gd2lkdGg7CisgICAgcy0+b3duX2ZyYW1lLT5oZWlnaHQgPSBoZWlnaHQ7 CisKKyAgICBhdl9idWZmZXJfdW5yZWYoJnMtPmZyYW1lc19jdHgpOworICAgIHMtPmZyYW1lc19j dHggPSBvdXRfcmVmOworCisgICAgcmV0dXJuIDA7CitmYWlsOgorICAgIGF2X2J1ZmZlcl91bnJl Zigmb3V0X3JlZik7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBmb3JtYXRfaXNf c3VwcG9ydGVkKGVudW0gQVZQaXhlbEZvcm1hdCBmbXQpCit7CisgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBGRl9BUlJBWV9FTEVNUyhzdXBwb3J0ZWRfZm9ybWF0cyk7IGkrKykKKyAgICAgICAgaWYg KGZtdCA9PSBzdXBwb3J0ZWRfZm9ybWF0c1tpXSkKKyAgICAgICAgICAgIHJldHVybiAxOworCisg ICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBhdl9jb2xkIGludCBpbml0X3Byb2Nlc3NpbmdfY2hh aW4oQVZGaWx0ZXJDb250ZXh0KiBjdHgsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCkKK3sKKyAgICBDVURBQ29udkNvbnRleHQq IHMgPSBjdHgtPnByaXY7CisgICAgQVZIV0ZyYW1lc0NvbnRleHQqIGluX2ZyYW1lc19jdHg7CisK KyAgICBpbnQgcmV0OworCisgICAgaWYgKCFjdHgtPmlucHV0c1swXS0+aHdfZnJhbWVzX2N0eCkg eworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJObyBodyBjb250ZXh0IHByb3Zp ZGVkIG9uIGlucHV0XG4iKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKyAgICB9 CisKKyAgICBpbl9mcmFtZXNfY3R4ID0gKEFWSFdGcmFtZXNDb250ZXh0KiljdHgtPmlucHV0c1sw XS0+aHdfZnJhbWVzX2N0eC0+ZGF0YTsKKyAgICBzLT5waXhfZm10ID0gaW5fZnJhbWVzX2N0eC0+ c3dfZm9ybWF0OworCisgICAgaWYgKCFmb3JtYXRfaXNfc3VwcG9ydGVkKHMtPnBpeF9mbXQpKSB7 CisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIlVuc3VwcG9ydGVkIHBpeGVsIGZv cm1hdDogJXNcbiIsCisgICAgICAgICAgICAgICBhdl9nZXRfcGl4X2ZtdF9uYW1lKHMtPnBpeF9m bXQpKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PU1lTKTsKKyAgICB9CisKKyAgICBzLT5u dW1fcGxhbmVzID0gYXZfcGl4X2ZtdF9jb3VudF9wbGFuZXMocy0+cGl4X2ZtdCk7CisKKyAgICBy ZXQgPSBpbml0X2h3ZnJhbWVfY3R4KHMsIGluX2ZyYW1lc19jdHgtPmRldmljZV9yZWYsIHdpZHRo LCBoZWlnaHQpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAg Y3R4LT5vdXRwdXRzWzBdLT5od19mcmFtZXNfY3R4ID0gYXZfYnVmZmVyX3JlZihzLT5mcmFtZXNf Y3R4KTsKKyAgICBpZiAoIWN0eC0+b3V0cHV0c1swXS0+aHdfZnJhbWVzX2N0eCkKKyAgICAgICAg cmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgYXZf Y29sZCBpbnQgY3VkYWNvbnZfbG9hZF9mdW5jdGlvbnMoQVZGaWx0ZXJDb250ZXh0KiBjdHgpCit7 CisgICAgQ1VEQUNvbnZDb250ZXh0KiBzID0gY3R4LT5wcml2OworICAgIENVY29udGV4dCBkdW1t eSwgY3VkYV9jdHggPSBzLT5od2N0eC0+Y3VkYV9jdHg7CisgICAgQ3VkYUZ1bmN0aW9ucyogY3Ug PSBzLT5od2N0eC0+aW50ZXJuYWwtPmN1ZGFfZGw7CisgICAgaW50IHJldDsKKworICAgIGV4dGVy biBjb25zdCB1bnNpZ25lZCBjaGFyIGZmX3ZmX2NvbG9ycmFuZ2VfY3VkYV9wdHhfZGF0YVtdOwor ICAgIGV4dGVybiBjb25zdCB1bnNpZ25lZCBpbnQgZmZfdmZfY29sb3JyYW5nZV9jdWRhX3B0eF9s ZW47CisKKyAgICByZXQgPSBDSEVDS19DVShjdS0+Y3VDdHhQdXNoQ3VycmVudChjdWRhX2N0eCkp OworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgcmV0ID0gZmZf Y3VkYV9sb2FkX21vZHVsZShjdHgsIHMtPmh3Y3R4LCAmcy0+Y3VfbW9kdWxlLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZmZfdmZfY29sb3JyYW5nZV9jdWRhX3B0eF9kYXRhLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZfdmZfY29sb3JyYW5nZV9jdWRhX3B0eF9sZW4p OworICAgIGlmIChyZXQgPCAwKQorICAgICAgICBnb3RvIGZhaWw7CisKKyAgICByZXQgPSBDSEVD S19DVShjdS0+Y3VNb2R1bGVHZXRGdW5jdGlvbigKKyAgICAgICAgJnMtPmN1X2NvbnZlcnRbQVZD T0xfUkFOR0VfTVBFR10sIHMtPmN1X21vZHVsZSwKKyAgICAgICAgInRvX21wZWdfY3VkYSIpKTsK KworICAgIGlmIChyZXQgPCAwKQorICAgICAgICBnb3RvIGZhaWw7CisKKyAgICByZXQgPSBDSEVD S19DVShjdS0+Y3VNb2R1bGVHZXRGdW5jdGlvbigKKyAgICAgICAgJnMtPmN1X2NvbnZlcnRbQVZD T0xfUkFOR0VfSlBFR10sIHMtPmN1X21vZHVsZSwKKyAgICAgICAgInRvX2pwZWdfY3VkYSIpKTsK KworICAgIGlmIChyZXQgPCAwKQorICAgICAgICBnb3RvIGZhaWw7CisKK2ZhaWw6CisgICAgQ0hF Q0tfQ1UoY3UtPmN1Q3R4UG9wQ3VycmVudCgmZHVtbXkpKTsKKyAgICByZXR1cm4gcmV0OworfQor CitzdGF0aWMgYXZfY29sZCBpbnQgY3VkYWNvbnZfY29uZmlnX3Byb3BzKEFWRmlsdGVyTGluayog b3V0bGluaykKK3sKKyAgICBBVkZpbHRlckNvbnRleHQqIGN0eCA9IG91dGxpbmstPnNyYzsKKyAg ICBBVkZpbHRlckxpbmsqIGlubGluayA9IG91dGxpbmstPnNyYy0+aW5wdXRzWzBdOworICAgIENV REFDb252Q29udGV4dCogcyA9IGN0eC0+cHJpdjsKKyAgICBBVkhXRnJhbWVzQ29udGV4dCogZnJh bWVzX2N0eCA9CisgICAgICAgIChBVkhXRnJhbWVzQ29udGV4dCopaW5saW5rLT5od19mcmFtZXNf Y3R4LT5kYXRhOworICAgIEFWQ1VEQURldmljZUNvbnRleHQqIGRldmljZV9od2N0eCA9IGZyYW1l c19jdHgtPmRldmljZV9jdHgtPmh3Y3R4OworICAgIGludCByZXQ7CisKKyAgICBzLT5od2N0eCA9 IGRldmljZV9od2N0eDsKKyAgICBzLT5jdV9zdHJlYW0gPSBzLT5od2N0eC0+c3RyZWFtOworCisg ICAgb3V0bGluay0+dyA9IGlubGluay0+dzsKKyAgICBvdXRsaW5rLT5oID0gaW5saW5rLT5oOwor CisgICAgcmV0ID0gaW5pdF9wcm9jZXNzaW5nX2NoYWluKGN0eCwgaW5saW5rLT53LCBpbmxpbmst PmgpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgaWYgKGlu bGluay0+c2FtcGxlX2FzcGVjdF9yYXRpby5udW0pIHsKKyAgICAgICAgb3V0bGluay0+c2FtcGxl X2FzcGVjdF9yYXRpbyA9IGF2X211bF9xKAorICAgICAgICAgICAgKEFWUmF0aW9uYWwpe291dGxp bmstPmggKiBpbmxpbmstPncsIG91dGxpbmstPncgKiBpbmxpbmstPmh9LAorICAgICAgICAgICAg aW5saW5rLT5zYW1wbGVfYXNwZWN0X3JhdGlvKTsKKyAgICB9IGVsc2UgeworICAgICAgICBvdXRs aW5rLT5zYW1wbGVfYXNwZWN0X3JhdGlvID0gaW5saW5rLT5zYW1wbGVfYXNwZWN0X3JhdGlvOwor ICAgIH0KKworICAgIHJldCA9IGN1ZGFjb252X2xvYWRfZnVuY3Rpb25zKGN0eCk7CisgICAgaWYg KHJldCA8IDApCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICByZXR1cm4gcmV0OworfQorCitz dGF0aWMgaW50IGNvbnZfY3VkYV9jb252ZXJ0KEFWRmlsdGVyQ29udGV4dCogY3R4LCBBVkZyYW1l KiBvdXQsIEFWRnJhbWUqIGluKQoreworICAgIENVREFDb252Q29udGV4dCogcyA9IGN0eC0+cHJp djsKKyAgICBDdWRhRnVuY3Rpb25zKiBjdSA9IHMtPmh3Y3R4LT5pbnRlcm5hbC0+Y3VkYV9kbDsK KyAgICBDVWNvbnRleHQgZHVtbXksIGN1ZGFfY3R4ID0gcy0+aHdjdHgtPmN1ZGFfY3R4OworICAg IGludCByZXQ7CisKKyAgICByZXQgPSBDSEVDS19DVShjdS0+Y3VDdHhQdXNoQ3VycmVudChjdWRh X2N0eCkpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgb3V0 LT5jb2xvcl9yYW5nZSA9IHMtPnJhbmdlOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLT5u dW1fcGxhbmVzOyBpKyspIHsKKyAgICAgICAgaW50IHdpZHRoID0gaW4tPndpZHRoLCBoZWlnaHQg PSBpbi0+aGVpZ2h0LCBjb21wX2lkID0gKGkgPiAwKTsKKworICAgICAgICBzd2l0Y2ggKHMtPnBp eF9mbXQpIHsKKyAgICAgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQ0NFA6CisgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQyMFA6CisgICAgICAgICAgICB3aWR0 aCA9IGNvbXBfaWQgPyBpbi0+d2lkdGggLyAyIDogaW4tPndpZHRoOworICAgICAgICBjYXNlIEFW X1BJWF9GTVRfTlYxMjoKKyAgICAgICAgICAgIGhlaWdodCA9IGNvbXBfaWQgPyBpbi0+aGVpZ2h0 IC8gMiA6IGluLT5oZWlnaHQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK KyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT1NZUyk7CisgICAgICAgIH0KKworICAgICAg ICBpZiAoaW4tPmNvbG9yX3JhbmdlICE9IG91dC0+Y29sb3JfcmFuZ2UpIHsKKyAgICAgICAgICAg IHZvaWQqIGFyZ3NbXSA9IHsmaW4tPmRhdGFbaV0sICZvdXQtPmRhdGFbaV0sICZpbi0+bGluZXNp emVbaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbXBfaWR9OworICAgICAgICAg ICAgcmV0ID0gQ0hFQ0tfQ1UoY3UtPmN1TGF1bmNoS2VybmVsKAorICAgICAgICAgICAgICAgIHMt PmN1X2NvbnZlcnRbb3V0LT5jb2xvcl9yYW5nZV0sIERJVl9VUCh3aWR0aCwgQkxPQ0tYKSwKKyAg ICAgICAgICAgICAgICBESVZfVVAoaGVpZ2h0LCBCTE9DS1kpLCAxLCBCTE9DS1gsIEJMT0NLWSwg MSwgMCwgcy0+Y3Vfc3RyZWFtLAorICAgICAgICAgICAgICAgIGFyZ3MsIE5VTEwpKTsKKyAgICAg ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF2X2h3ZnJhbWVfdHJhbnNmZXJfZGF0YShvdXQsIGlu LCAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIENIRUNLX0NVKGN1LT5jdUN0eFBvcEN1cnJl bnQoJmR1bW15KSk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBjdWRhY29udl9j b252KEFWRmlsdGVyQ29udGV4dCogY3R4LCBBVkZyYW1lKiBvdXQsIEFWRnJhbWUqIGluKQorewor ICAgIENVREFDb252Q29udGV4dCogcyA9IGN0eC0+cHJpdjsKKyAgICBBVkZpbHRlckxpbmsqIG91 dGxpbmsgPSBjdHgtPm91dHB1dHNbMF07CisgICAgQVZGcmFtZSogc3JjID0gaW47CisgICAgaW50 IHJldDsKKworICAgIHJldCA9IGNvbnZfY3VkYV9jb252ZXJ0KGN0eCwgcy0+b3duX2ZyYW1lLCBz cmMpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgc3JjID0g cy0+b3duX2ZyYW1lOworICAgIHJldCA9IGF2X2h3ZnJhbWVfZ2V0X2J1ZmZlcihzcmMtPmh3X2Zy YW1lc19jdHgsIHMtPnRtcF9mcmFtZSwgMCk7CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIHJl dHVybiByZXQ7CisKKyAgICBhdl9mcmFtZV9tb3ZlX3JlZihvdXQsIHMtPm93bl9mcmFtZSk7Cisg ICAgYXZfZnJhbWVfbW92ZV9yZWYocy0+b3duX2ZyYW1lLCBzLT50bXBfZnJhbWUpOworCisgICAg cy0+b3duX2ZyYW1lLT53aWR0aCA9IG91dGxpbmstPnc7CisgICAgcy0+b3duX2ZyYW1lLT5oZWln aHQgPSBvdXRsaW5rLT5oOworCisgICAgcmV0ID0gYXZfZnJhbWVfY29weV9wcm9wcyhvdXQsIGlu KTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIHJldHVybiAw OworfQorCitzdGF0aWMgaW50IGN1ZGFjb252X2ZpbHRlcl9mcmFtZShBVkZpbHRlckxpbmsqIGxp bmssIEFWRnJhbWUqIGluKQoreworICAgIEFWRmlsdGVyQ29udGV4dCogY3R4ID0gbGluay0+ZHN0 OworICAgIENVREFDb252Q29udGV4dCogcyA9IGN0eC0+cHJpdjsKKyAgICBBVkZpbHRlckxpbmsq IG91dGxpbmsgPSBjdHgtPm91dHB1dHNbMF07CisgICAgQ3VkYUZ1bmN0aW9ucyogY3UgPSBzLT5o d2N0eC0+aW50ZXJuYWwtPmN1ZGFfZGw7CisKKyAgICBBVkZyYW1lKiBvdXQgPSBOVUxMOworICAg IENVY29udGV4dCBkdW1teTsKKyAgICBpbnQgcmV0ID0gMDsKKworICAgIG91dCA9IGF2X2ZyYW1l X2FsbG9jKCk7CisgICAgaWYgKCFvdXQpIHsKKyAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9NRU0p OworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgcmV0ID0gQ0hFQ0tfQ1UoY3UtPmN1 Q3R4UHVzaEN1cnJlbnQocy0+aHdjdHgtPmN1ZGFfY3R4KSk7CisgICAgaWYgKHJldCA8IDApCisg ICAgICAgIGdvdG8gZmFpbDsKKworICAgIHJldCA9IGN1ZGFjb252X2NvbnYoY3R4LCBvdXQsIGlu KTsKKworICAgIENIRUNLX0NVKGN1LT5jdUN0eFBvcEN1cnJlbnQoJmR1bW15KSk7CisgICAgaWYg KHJldCA8IDApCisgICAgICAgIGdvdG8gZmFpbDsKKworICAgIGF2X3JlZHVjZSgmb3V0LT5zYW1w bGVfYXNwZWN0X3JhdGlvLm51bSwgJm91dC0+c2FtcGxlX2FzcGVjdF9yYXRpby5kZW4sCisgICAg ICAgICAgICAgIChpbnQ2NF90KWluLT5zYW1wbGVfYXNwZWN0X3JhdGlvLm51bSAqIG91dGxpbmst PmggKiBsaW5rLT53LAorICAgICAgICAgICAgICAoaW50NjRfdClpbi0+c2FtcGxlX2FzcGVjdF9y YXRpby5kZW4gKiBvdXRsaW5rLT53ICogbGluay0+aCwKKyAgICAgICAgICAgICAgSU5UX01BWCk7 CisKKyAgICBhdl9mcmFtZV9mcmVlKCZpbik7CisgICAgcmV0dXJuIGZmX2ZpbHRlcl9mcmFtZShv dXRsaW5rLCBvdXQpOworZmFpbDoKKyAgICBhdl9mcmFtZV9mcmVlKCZpbik7CisgICAgYXZfZnJh bWVfZnJlZSgmb3V0KTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgQVZGcmFtZSogY3Vk YWNvbnZfZ2V0X3ZpZGVvX2J1ZmZlcihBVkZpbHRlckxpbmsqIGlubGluaywgaW50IHcsIGludCBo KQoreworICAgIHJldHVybiBmZl9kZWZhdWx0X2dldF92aWRlb19idWZmZXIoaW5saW5rLCB3LCBo KTsKK30KKworI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoQ1VEQUNvbnZDb250ZXh0LCB4KQor I2RlZmluZSBGTEFHUyAoQVZfT1BUX0ZMQUdfRklMVEVSSU5HX1BBUkFNIHwgQVZfT1BUX0ZMQUdf VklERU9fUEFSQU0pCitzdGF0aWMgY29uc3QgQVZPcHRpb24gb3B0aW9uc1tdID0geworICAgIHsi cmFuZ2UiLCAiT3V0cHV0IHZpZGVvIHJhbmdlIiwgT0ZGU0VUKHJhbmdlKSwgQVZfT1BUX1RZUEVf SU5ULCB7Lmk2NCA9IEFWQ09MX1JBTkdFX1VOU1BFQ0lGSUVEfSwgQVZDT0xfUkFOR0VfVU5TUEVD SUZJRUQsIEFWQ09MX1JBTkdFX05CIC0gMSwgRkxBR1MsICJyYW5nZSJ9LAorICAgICAgICB7Im1w ZWciLCAibGltaXRlZCByYW5nZSIsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IEFWQ09M X1JBTkdFX01QRUd9LCAwLCAwLCBGTEFHUywgInJhbmdlIn0sCisgICAgICAgIHsianBlZyIsICJm dWxsIHJhbmdlIiwgICAgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gQVZDT0xfUkFOR0Vf SlBFR30sIDAsIDAsIEZMQUdTLCAicmFuZ2UifSwKKyAgICB7TlVMTH0sCit9OworCitzdGF0aWMg Y29uc3QgQVZDbGFzcyBjdWRhY29udl9jbGFzcyA9IHsKKyAgICAuY2xhc3NfbmFtZSA9ICJjdWRh Y29udiIsCisgICAgLml0ZW1fbmFtZSA9IGF2X2RlZmF1bHRfaXRlbV9uYW1lLAorICAgIC5vcHRp b24gPSBvcHRpb25zLAorICAgIC52ZXJzaW9uID0gTElCQVZVVElMX1ZFUlNJT05fSU5ULAorfTsK Kworc3RhdGljIGNvbnN0IEFWRmlsdGVyUGFkIGN1ZGFjb252X2lucHV0c1tdID0geworICAgIHsK KyAgICAgICAgLm5hbWUgPSAiZGVmYXVsdCIsCisgICAgICAgIC50eXBlID0gQVZNRURJQV9UWVBF X1ZJREVPLAorICAgICAgICAuZmlsdGVyX2ZyYW1lID0gY3VkYWNvbnZfZmlsdGVyX2ZyYW1lLAor ICAgICAgICAuZ2V0X2J1ZmZlci52aWRlbyA9IGN1ZGFjb252X2dldF92aWRlb19idWZmZXIsCisg ICAgfSwKK307CisKK3N0YXRpYyBjb25zdCBBVkZpbHRlclBhZCBjdWRhY29udl9vdXRwdXRzW10g PSB7CisgICAgeworICAgICAgICAubmFtZSA9ICJkZWZhdWx0IiwKKyAgICAgICAgLnR5cGUgPSBB Vk1FRElBX1RZUEVfVklERU8sCisgICAgICAgIC5jb25maWdfcHJvcHMgPSBjdWRhY29udl9jb25m aWdfcHJvcHMsCisgICAgfSwKK307CisKK2NvbnN0IEFWRmlsdGVyIGZmX3ZmX2NvbG9ycmFuZ2Vf Y3VkYSA9IHsKKyAgICAubmFtZSA9ICJjb2xvcnJhbmdlX2N1ZGEiLAorICAgIC5kZXNjcmlwdGlv biA9CisgICAgICAgIE5VTExfSUZfQ09ORklHX1NNQUxMKCJDVURBIGFjY2VsZXJhdGVkIHZpZGVv IGNvbG9yIHJhbmdlIGNvbnZlcnRlciIpLAorCisgICAgLmluaXQgPSBjdWRhY29udl9pbml0LAor ICAgIC51bmluaXQgPSBjdWRhY29udl91bmluaXQsCisKKyAgICAucHJpdl9zaXplID0gc2l6ZW9m KENVREFDb252Q29udGV4dCksCisgICAgLnByaXZfY2xhc3MgPSAmY3VkYWNvbnZfY2xhc3MsCisK KyAgICBGSUxURVJfSU5QVVRTKGN1ZGFjb252X2lucHV0cyksCisgICAgRklMVEVSX09VVFBVVFMo Y3VkYWNvbnZfb3V0cHV0cyksCisKKyAgICBGSUxURVJfU0lOR0xFX1BJWEZNVChBVl9QSVhfRk1U X0NVREEpLAorCisgICAgLmZsYWdzX2ludGVybmFsID0gRkZfRklMVEVSX0ZMQUdfSFdGUkFNRV9B V0FSRSwKK307CmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci92Zl9jb2xvcnJhbmdlX2N1ZGEuY3Ug Yi9saWJhdmZpbHRlci92Zl9jb2xvcnJhbmdlX2N1ZGEuY3UKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uNmY2MTc0OTNmOAotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Zmls dGVyL3ZmX2NvbG9ycmFuZ2VfY3VkYS5jdQpAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJp Z2h0IChjKSAyMDIyLCBOVklESUEgQ09SUE9SQVRJT04uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAq IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBD T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF UgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBT T0ZUV0FSRS4KKyAqLworCitleHRlcm4gIkMiIHsKKyNkZWZpbmUgTVBFR19MVU1BX01JTiAgICgx NikKKyNkZWZpbmUgTVBFR19DSFJPTUFfTUlOICgxNikKKyNkZWZpbmUgTVBFR19MVU1BX01BWCAg ICgyMzUpCisjZGVmaW5lIE1QRUdfQ0hST01BX01BWCAoMjQwKQorCisjZGVmaW5lIEpQRUdfTFVN QV9NSU4gICAoMCkKKyNkZWZpbmUgSlBFR19DSFJPTUFfTUlOICgxKQorI2RlZmluZSBKUEVHX0xV TUFfTUFYICAgKDI1NSkKKyNkZWZpbmUgSlBFR19DSFJPTUFfTUFYICgyNTUpCisKK19fZGV2aWNl X18gaW50IG1wZWdfbWluW10gPSB7TVBFR19MVU1BX01JTiwgTVBFR19DSFJPTUFfTUlOfTsKK19f ZGV2aWNlX18gaW50IG1wZWdfbWF4W10gPSB7TVBFR19MVU1BX01BWCwgTVBFR19DSFJPTUFfTUFY fTsKKworX19kZXZpY2VfXyBpbnQganBlZ19taW5bXSA9IHtKUEVHX0xVTUFfTUlOLCBKUEVHX0NI Uk9NQV9NSU59OworX19kZXZpY2VfXyBpbnQganBlZ19tYXhbXSA9IHtKUEVHX0xVTUFfTUFYLCBK UEVHX0NIUk9NQV9NQVh9OworCitfX2RldmljZV9fIGludCBjbGFtcChpbnQgdmFsLCBpbnQgbWlu LCBpbnQgbWF4KQoreworICAgIGlmICh2YWwgPCBtaW4pCisgICAgICAgIHJldHVybiBtaW47Cisg ICAgZWxzZSBpZiAodmFsID4gbWF4KQorICAgICAgICByZXR1cm4gbWF4OworICAgIGVsc2UKKyAg ICAgICAgcmV0dXJuIHZhbDsKK30KKworX19nbG9iYWxfXyB2b2lkIHRvX2pwZWdfY3VkYShjb25z dCB1bnNpZ25lZCBjaGFyKiBzcmMsIHVuc2lnbmVkIGNoYXIqIGRzdCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IHBpdGNoLCBpbnQgY29tcF9pZCkKK3sKKyAgICBpbnQgeCA9IGJs b2NrSWR4LnggKiBibG9ja0RpbS54ICsgdGhyZWFkSWR4Lng7CisgICAgaW50IHkgPSBibG9ja0lk eC55ICogYmxvY2tEaW0ueSArIHRocmVhZElkeC55OworICAgIGludCBzcmNfLCBkc3RfOworCisg ICAgLy8gOCBiaXQgLT4gMTUgYml0IGZvciBiZXR0ZXIgcHJlY2lzaW9uOworICAgIHNyY18gPSBz dGF0aWNfY2FzdDxpbnQ+KHNyY1t4ICsgeSAqIHBpdGNoXSkgPDwgNzsKKworICAgIC8vIENvbnZl cnNpb247CisgICAgZHN0XyA9IGNvbXBfaWQgPyAobWluKHNyY18sIDMwNzc1KSAqIDQ2NjMgLSA5 Mjg5OTkyKSA+PiAxMiAgICAvLyBjaHJvbWEKKyAgICAgICAgICAgICAgICAgICA6IChtaW4oc3Jj XywgMzAxODkpICogMTkwNzcgLSAzOTA1NzM2MSkgPj4gMTQ7IC8vIGx1bWEKKworICAgIC8vIERp dGhlciByZXBsYWNlbWVudDsKKyAgICBkc3RfID0gZHN0XyArIDY0OworCisgICAgLy8gQmFjayB0 byA4IGJpdDsKKyAgICBkc3RfID0gY2xhbXAoZHN0XyA+PiA3LCBqcGVnX21pbltjb21wX2lkXSwg anBlZ19tYXhbY29tcF9pZF0pOworICAgIGRzdFt4ICsgeSAqIHBpdGNoXSA9IHN0YXRpY19jYXN0 PHVuc2lnbmVkIGNoYXI+KGRzdF8pOworfQorCitfX2dsb2JhbF9fIHZvaWQgdG9fbXBlZ19jdWRh KGNvbnN0IHVuc2lnbmVkIGNoYXIqIHNyYywgdW5zaWduZWQgY2hhciogZHN0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgcGl0Y2gsIGludCBjb21wX2lkKQoreworICAgIGludCB4 ID0gYmxvY2tJZHgueCAqIGJsb2NrRGltLnggKyB0aHJlYWRJZHgueDsKKyAgICBpbnQgeSA9IGJs b2NrSWR4LnkgKiBibG9ja0RpbS55ICsgdGhyZWFkSWR4Lnk7CisgICAgaW50IHNyY18sIGRzdF87 CisKKyAgICAvLyA4IGJpdCAtPiAxNSBiaXQgZm9yIGJldHRlciBwcmVjaXNpb247CisgICAgc3Jj XyA9IHN0YXRpY19jYXN0PGludD4oc3JjW3ggKyB5ICogcGl0Y2hdKSA8PCA3OworCisgICAgLy8g Q29udmVyc2lvbjsKKyAgICBkc3RfID0gY29tcF9pZCA/IChzcmNfICogMTc5OSArIDQwODEwODUp ID4+IDExICAgIC8vIGNocm9tYQorICAgICAgICAgICAgICAgICAgIDogKHNyY18gKiAxNDA3MSAr IDMzNTYxOTQ3KSA+PiAxNDsgLy8gbHVtYQorCisgICAgLy8gRGl0aGVyIHJlcGxhY2VtZW50Owor ICAgIGRzdF8gPSBkc3RfICsgNjQ7CisKKyAgICAvLyBCYWNrIHRvIDggYml0OworICAgIGRzdF8g PSBjbGFtcChkc3RfID4+IDcsIG1wZWdfbWluW2NvbXBfaWRdLCBtcGVnX21heFtjb21wX2lkXSk7 CisgICAgZHN0W3ggKyB5ICogcGl0Y2hdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oZHN0 Xyk7Cit9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotLSAKMi4yNS4xCgo= --_004_PH7PR12MB5831CF40BE529281E931F963D2429PH7PR12MB5831namp_ 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_PH7PR12MB5831CF40BE529281E931F963D2429PH7PR12MB5831namp_--