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 5D7D743820 for ; Thu, 30 Jun 2022 06:57:18 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B3CB068B793; Thu, 30 Jun 2022 09:57:15 +0300 (EEST) Received: from mail-yb1-f177.google.com (mail-yb1-f177.google.com [209.85.219.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4514D68B200 for ; Thu, 30 Jun 2022 09:57:09 +0300 (EEST) Received: by mail-yb1-f177.google.com with SMTP id p136so25920325ybg.4 for ; Wed, 29 Jun 2022 23:57:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=kW+eUnvJlIZZWchfR82/04XcfWIT01qHuiYhT4pTNlA=; b=GFvj0Xuu+POR0nXFey1CYhEJ0eluKEYTP1nLfFWCyg0qpGlGIxe8Gj2vi9cjoqMtzT lO7eKoLYA/5TTuE+4Exx8Yjck23rV5yx3vicMuFKkYJb5kJep5W48EASOBn7EnCr17aA ubOzfFt611MpHuOwVjt2iIR8YtB8IukQa+DOgWp24oDsug3ZTtJ7cuSZqTxyRJKvJo9s IF95/abXSizee36eyQztbf7pzklW/aG00Jk6PFfXHu/coxyYeQbwvbhGAxbfbgIJM9KI hRCh34oAdG1BrHPdrOyX+4WPA6DG5juyReEMSHCNFH8HxhIQbzj90LiIOiXcgPjJ+Kt1 6ATg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=kW+eUnvJlIZZWchfR82/04XcfWIT01qHuiYhT4pTNlA=; b=Gn1oYrD1zPvXu1qw6rgvXBKbuAcb+aryVb0u0uDxFbwX2Jyrgy+MEn8bDEVqFPBx24 U4rwPq+50PrIGRQJ+txSpUKwUyZpTj8a7ugcE5UFkYIO8fLn7XOmp6pLvw4lrQdvQaBZ wwsUJcqoZf6s31KijzUkEgUXTyNS5IwMlhMYKp0L3WrvWEU2RL7JTP7yrMl5m0IloYj2 yEOhhYCCbMf5ysvfTvyLG7/u4yVtFq6UTvK+MKd05qHThrs+b6gk8cSwBscFvB4FwlpB atilurvAEp2lAVJBHPhUmUAOc4BxV4G1r9zyAddioicZLdvt0r/TYzSF4pp7VZN3qo9v lJSQ== X-Gm-Message-State: AJIora8OfL7F2aXj/1iI+qn2Gr+Vpa5ClBrYfSjfLXvBLd8HqmKTg14w NkHqh2D2xqIbvUbDQ3ArzNqZ6Pkv5xTjeHbRQZfLbELp2rA= X-Google-Smtp-Source: AGRyM1s1J8t7gyHk9G8VcttelvoQi3Vwa6AVAqP2DqNb6EhvsP9MPMhUiyxv/7dV+I24BycVW227I2sIqz/Bhe5IMNk= X-Received: by 2002:a25:d6c1:0:b0:669:aa6f:38e8 with SMTP id n184-20020a25d6c1000000b00669aa6f38e8mr7631853ybg.586.1656572227672; Wed, 29 Jun 2022 23:57:07 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Paul B Mahol Date: Thu, 30 Jun 2022 08:59:53 +0200 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="0000000000002d01f005e2a4c7e6" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH] avfilter: add remap_opencl filter 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --0000000000002d01f005e2a4c7e6 Content-Type: text/plain; charset="UTF-8" Updated. --0000000000002d01f005e2a4c7e6 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-avfilter-add-remap-opencl-filter.patch" Content-Disposition: attachment; filename="0001-avfilter-add-remap-opencl-filter.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l50ofevl0 RnJvbSAyYjZiNjUzYmViZWMwMWQ5ZDUyMzEwMmMxYmZlMmNlNGIxYmU5M2RkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjkgSnVuIDIwMjIgMTk6MTI6MjQgKzAyMDAKU3ViamVjdDogW1BBVENIXSBhdmZpbHRl cjogYWRkIHJlbWFwIG9wZW5jbCBmaWx0ZXIKClNpZ25lZC1vZmYtYnk6IFBhdWwgQiBNYWhvbCA8 b25lbWRhQGdtYWlsLmNvbT4KLS0tCiBsaWJhdmZpbHRlci9NYWtlZmlsZSAgICAgICAgICB8ICAg MiArCiBsaWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMgICAgICB8ICAgMSArCiBsaWJhdmZpbHRlci9v cGVuY2wvcmVtYXAuY2wgICB8ICA2OSArKysrKysrCiBsaWJhdmZpbHRlci9vcGVuY2xfc291cmNl LmggICB8ICAgMSArCiBsaWJhdmZpbHRlci92Zl9yZW1hcF9vcGVuY2wuYyB8IDM2MiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWJhdnV0aWwvaHdjb250ZXh0X29wZW5jbC5j ICB8ICAgNSArLQogNiBmaWxlcyBjaGFuZ2VkLCA0MzkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2ZmlsdGVyL29wZW5jbC9yZW1hcC5jbAogY3Jl YXRlIG1vZGUgMTAwNjQ0IGxpYmF2ZmlsdGVyL3ZmX3JlbWFwX29wZW5jbC5jCgpkaWZmIC0tZ2l0 IGEvbGliYXZmaWx0ZXIvTWFrZWZpbGUgYi9saWJhdmZpbHRlci9NYWtlZmlsZQppbmRleCBiOWNl MWE3MTViLi4zNjdlYjkyMDYzIDEwMDY0NAotLS0gYS9saWJhdmZpbHRlci9NYWtlZmlsZQorKysg Yi9saWJhdmZpbHRlci9NYWtlZmlsZQpAQCAtNDIxLDYgKzQyMSw4IEBAIE9CSlMtJChDT05GSUdf UkVBREVJQTYwOF9GSUxURVIpICAgICAgICAgICAgICs9IHZmX3JlYWRlaWE2MDgubwogT0JKUy0k KENPTkZJR19SRUFEVklUQ19GSUxURVIpICAgICAgICAgICAgICAgKz0gdmZfcmVhZHZpdGMubwog T0JKUy0kKENPTkZJR19SRUFMVElNRV9GSUxURVIpICAgICAgICAgICAgICAgKz0gZl9yZWFsdGlt ZS5vCiBPQkpTLSQoQ09ORklHX1JFTUFQX0ZJTFRFUikgICAgICAgICAgICAgICAgICArPSB2Zl9y ZW1hcC5vIGZyYW1lc3luYy5vCitPQkpTLSQoQ09ORklHX1JFTUFQX09QRU5DTF9GSUxURVIpICAg ICAgICAgICArPSB2Zl9yZW1hcF9vcGVuY2wubyBmcmFtZXN5bmMubyBvcGVuY2wubyBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuY2wvcmVtYXAu bwogT0JKUy0kKENPTkZJR19SRU1PVkVHUkFJTl9GSUxURVIpICAgICAgICAgICAgKz0gdmZfcmVt b3ZlZ3JhaW4ubwogT0JKUy0kKENPTkZJR19SRU1PVkVMT0dPX0ZJTFRFUikgICAgICAgICAgICAg Kz0gYmJveC5vIGxzd3N1dGlscy5vIGxhdmZ1dGlscy5vIHZmX3JlbW92ZWxvZ28ubwogT0JKUy0k KENPTkZJR19SRVBFQVRGSUVMRFNfRklMVEVSKSAgICAgICAgICAgKz0gdmZfcmVwZWF0ZmllbGRz Lm8KZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyBiL2xpYmF2ZmlsdGVyL2Fs bGZpbHRlcnMuYwppbmRleCAwMTUyYWNiYjgxLi4wNWYwZmE4NWRiIDEwMDY0NAotLS0gYS9saWJh dmZpbHRlci9hbGxmaWx0ZXJzLmMKKysrIGIvbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jCkBAIC00 MDAsNiArNDAwLDcgQEAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX3JlYWRlaWE2MDg7CiBl eHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfcmVhZHZpdGM7CiBleHRlcm4gY29uc3QgQVZGaWx0 ZXIgZmZfdmZfcmVhbHRpbWU7CiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfcmVtYXA7Citl eHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfcmVtYXBfb3BlbmNsOwogZXh0ZXJuIGNvbnN0IEFW RmlsdGVyIGZmX3ZmX3JlbW92ZWdyYWluOwogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX3Jl bW92ZWxvZ287CiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfcmVwZWF0ZmllbGRzOwpkaWZm IC0tZ2l0IGEvbGliYXZmaWx0ZXIvb3BlbmNsL3JlbWFwLmNsIGIvbGliYXZmaWx0ZXIvb3BlbmNs L3JlbWFwLmNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQyNTJiY2Uz NTUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmZpbHRlci9vcGVuY2wvcmVtYXAuY2wKQEAgLTAs MCArMSw2OSBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBG Rm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V CisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0 cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCitjb25z dCBzYW1wbGVyX3QgbGluZWFyX3NhbXBsZXIgPSAoQ0xLX05PUk1BTElaRURfQ09PUkRTX0ZBTFNF IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTEtfRklMVEVSX0xJTkVBUik7 CisKK2NvbnN0IHNhbXBsZXJfdCBuZWFyZXN0X3NhbXBsZXIgPSAoQ0xLX05PUk1BTElaRURfQ09P UkRTX0ZBTFNFIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xLX0ZJTFRF Ul9ORUFSRVNUKTsKKworX19rZXJuZWwgdm9pZCByZW1hcF9uZWFyKF9fd3JpdGVfb25seSBpbWFn ZTJkX3QgZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVhZF9vbmx5ICBpbWFnZTJk X3Qgc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVhZF9vbmx5ICBpbWFnZTJkX3Qg eG1hcGksCisgICAgICAgICAgICAgICAgICAgICAgICAgX19yZWFkX29ubHkgIGltYWdlMmRfdCB5 bWFwaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDQgZmlsbF9jb2xvcikKK3sKKyAg ICBpbnQyIHAgPSAoaW50MikoZ2V0X2dsb2JhbF9pZCgwKSwgZ2V0X2dsb2JhbF9pZCgxKSk7Cisg ICAgaW50MiBkaW1pID0gZ2V0X2ltYWdlX2RpbShzcmMpOworICAgIGZsb2F0MiBkaW1mID0gKGZs b2F0MikoZGltaS54LCBkaW1pLnkpOworICAgIGZsb2F0NCB2YWw7CisgICAgZmxvYXQgbTsKKwor ICAgIGZsb2F0NCB4bWFwID0gcmVhZF9pbWFnZWYoeG1hcGksIG5lYXJlc3Rfc2FtcGxlciwgcCk7 CisgICAgZmxvYXQ0IHltYXAgPSByZWFkX2ltYWdlZih5bWFwaSwgbmVhcmVzdF9zYW1wbGVyLCBw KTsKKyAgICBmbG9hdDIgcG9zICA9IChmbG9hdDIpKHhtYXAueCwgeW1hcC54KTsKKyAgICBwb3Mu eHkgPSBwb3MueHkgKiA2NTUzNS5mOworCisgICAgbSA9ICgocG9zLnggPj0gMCkgKiAocG9zLnkg Pj0gMCkgKiAocG9zLnggPCBkaW1mLngpICogKHBvcy55IDwgZGltZi55KSAqIChwLnggPD0gZGlt aS54KSAqIChwLnkgPD0gZGltaS55KSk7CisgICAgdmFsID0gbWl4KGZpbGxfY29sb3IsIHJlYWRf aW1hZ2VmKHNyYywgbmVhcmVzdF9zYW1wbGVyLCBwb3MpLCBtKTsKKworICAgIHdyaXRlX2ltYWdl Zihkc3QsIHAsIHZhbCk7Cit9CisKK19fa2VybmVsIHZvaWQgcmVtYXBfbGluZWFyKF9fd3JpdGVf b25seSBpbWFnZTJkX3QgZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZWFkX29u bHkgIGltYWdlMmRfdCBzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3JlYWRfb25s eSAgaW1hZ2UyZF90IHhtYXBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZWFkX29u bHkgIGltYWdlMmRfdCB5bWFwaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0NCBm aWxsX2NvbG9yKQoreworICAgIGludDIgcCA9IChpbnQyKShnZXRfZ2xvYmFsX2lkKDApLCBnZXRf Z2xvYmFsX2lkKDEpKTsKKyAgICBpbnQyIGRpbWkgPSBnZXRfaW1hZ2VfZGltKHNyYyk7CisgICAg ZmxvYXQyIGRpbWYgPSAoZmxvYXQyKShkaW1pLngsIGRpbWkueSk7CisgICAgZmxvYXQ0IHZhbDsK KyAgICBmbG9hdCBtOworCisgICAgZmxvYXQ0IHhtYXAgPSByZWFkX2ltYWdlZih4bWFwaSwgbmVh cmVzdF9zYW1wbGVyLCBwKTsKKyAgICBmbG9hdDQgeW1hcCA9IHJlYWRfaW1hZ2VmKHltYXBpLCBu ZWFyZXN0X3NhbXBsZXIsIHApOworICAgIGZsb2F0MiBwb3MgID0gKGZsb2F0MikoeG1hcC54LCB5 bWFwLngpOworICAgIHBvcy54eSA9IHBvcy54eSAqIDY1NTM1LmY7CisKKyAgICBtID0gKChwb3Mu eCA+PSAwKSAqIChwb3MueSA+PSAwKSAqIChwb3MueCA8IGRpbWYueCkgKiAocG9zLnkgPCBkaW1m LnkpICogKHAueCA8PSBkaW1pLngpICogKHAueSA8PSBkaW1pLnkpKTsKKyAgICB2YWwgPSBtaXgo ZmlsbF9jb2xvciwgcmVhZF9pbWFnZWYoc3JjLCBsaW5lYXJfc2FtcGxlciwgcG9zKSwgbSk7CisK KyAgICB3cml0ZV9pbWFnZWYoZHN0LCBwLCB2YWwpOworfQpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0 ZXIvb3BlbmNsX3NvdXJjZS5oIGIvbGliYXZmaWx0ZXIvb3BlbmNsX3NvdXJjZS5oCmluZGV4IDdl ODEzMzA5MGUuLjllYWMyZGM1MTYgMTAwNjQ0Ci0tLSBhL2xpYmF2ZmlsdGVyL29wZW5jbF9zb3Vy Y2UuaAorKysgYi9saWJhdmZpbHRlci9vcGVuY2xfc291cmNlLmgKQEAgLTI4LDYgKzI4LDcgQEAg ZXh0ZXJuIGNvbnN0IGNoYXIgKmZmX29wZW5jbF9zb3VyY2VfbmVpZ2hib3I7CiBleHRlcm4gY29u c3QgY2hhciAqZmZfb3BlbmNsX3NvdXJjZV9ubG1lYW5zOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmZm X29wZW5jbF9zb3VyY2Vfb3ZlcmxheTsKIGV4dGVybiBjb25zdCBjaGFyICpmZl9vcGVuY2xfc291 cmNlX3BhZDsKK2V4dGVybiBjb25zdCBjaGFyICpmZl9vcGVuY2xfc291cmNlX3JlbWFwOwogZXh0 ZXJuIGNvbnN0IGNoYXIgKmZmX29wZW5jbF9zb3VyY2VfdG9uZW1hcDsKIGV4dGVybiBjb25zdCBj aGFyICpmZl9vcGVuY2xfc291cmNlX3RyYW5zcG9zZTsKIGV4dGVybiBjb25zdCBjaGFyICpmZl9v cGVuY2xfc291cmNlX3Vuc2hhcnA7CmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci92Zl9yZW1hcF9v cGVuY2wuYyBiL2xpYmF2ZmlsdGVyL3ZmX3JlbWFwX29wZW5jbC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLmNlN2RmMWMwZDUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJh dmZpbHRlci92Zl9yZW1hcF9vcGVuY2wuYwpAQCAtMCwwICsxLDM2MiBAQAorLyoKKyAqIENvcHly aWdodCAoYykgMjAyMiBQYXVsIEIgTWFob2wKKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBG Rm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5z ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVn OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMu LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEg VVNBCisgKi8KKworI2luY2x1ZGUgImxpYmF2dXRpbC9jb2xvcnNwYWNlLmgiCisjaW5jbHVkZSAi bGliYXZ1dGlsL2ltZ3V0aWxzLmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIKKyNp bmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCisjaW5jbHVkZSAiYXZmaWx0ZXIuaCIKKyNpbmNsdWRl ICJkcmF3dXRpbHMuaCIKKyNpbmNsdWRlICJmb3JtYXRzLmgiCisjaW5jbHVkZSAiZnJhbWVzeW5j LmgiCisjaW5jbHVkZSAiaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJvcGVuY2wuaCIKKyNpbmNsdWRl ICJvcGVuY2xfc291cmNlLmgiCisjaW5jbHVkZSAidmlkZW8uaCIKKwordHlwZWRlZiBzdHJ1Y3Qg UmVtYXBPcGVuQ0xDb250ZXh0IHsKKyAgICBPcGVuQ0xGaWx0ZXJDb250ZXh0IG9jZjsKKworICAg IGludCBuYl9wbGFuZXM7CisgICAgaW50IGludGVycDsKKyAgICB1aW50OF90IGZpbGxfcmdiYVs0 XTsKKyAgICBjbF9mbG9hdDQgY2xfZmlsbF9jb2xvcjsKKworICAgIGludCAgICAgICAgICAgICAg aW5pdGlhbGlzZWQ7CisgICAgY2xfa2VybmVsICAgICAgICBrZXJuZWw7CisgICAgY2xfY29tbWFu ZF9xdWV1ZSBjb21tYW5kX3F1ZXVlOworCisgICAgRkZGcmFtZVN5bmMgZnM7Cit9IFJlbWFwT3Bl bkNMQ29udGV4dDsKKworI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoUmVtYXBPcGVuQ0xDb250 ZXh0LCB4KQorI2RlZmluZSBGTEFHUyBBVl9PUFRfRkxBR19GSUxURVJJTkdfUEFSQU18QVZfT1BU X0ZMQUdfVklERU9fUEFSQU0KKworc3RhdGljIGNvbnN0IEFWT3B0aW9uIHJlbWFwX29wZW5jbF9v cHRpb25zW10gPSB7CisgICAgeyAiaW50ZXJwIiwgInNldCBpbnRlcnBvbGF0aW9uIG1ldGhvZCIs IE9GRlNFVChpbnRlcnApLCBBVl9PUFRfVFlQRV9JTlQsICAgey5pNjQ9MX0sIDAsIDEsIEZMQUdT LCAiaW50ZXJwIiB9LAorICAgIHsgICJuZWFyIiwgICBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05T VCwgey5pNjQ9MH0sIDAsIDAsIEZMQUdTLCAiaW50ZXJwIiB9LAorICAgIHsgICJsaW5lYXIiLCBO VUxMLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQ9MX0sIDAsIDAsIEZMQUdTLCAiaW50ZXJw IiB9LAorICAgIHsgImZpbGwiLCAic2V0IHRoZSBjb2xvciBvZiB0aGUgdW5tYXBwZWQgcGl4ZWxz IiwgT0ZGU0VUKGZpbGxfcmdiYSksIEFWX09QVF9UWVBFX0NPTE9SLCB7LnN0cj0iYmxhY2sifSwg LmZsYWdzID0gRkxBR1MgfSwKKyAgICB7IE5VTEwgfQorfTsKKworQVZGSUxURVJfREVGSU5FX0NM QVNTKHJlbWFwX29wZW5jbCk7CisKK3N0YXRpYyBhdl9jb2xkIGludCByZW1hcF9vcGVuY2xfaW5p dChBVkZpbHRlckNvbnRleHQgKmF2Y3R4KQoreworICAgIHJldHVybiBmZl9vcGVuY2xfZmlsdGVy X2luaXQoYXZjdHgpOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqa2VybmVsc1tdID0geyAicmVt YXBfbmVhciIsICJyZW1hcF9saW5lYXIiIH07CisKK3N0YXRpYyBpbnQgcmVtYXBfb3BlbmNsX2xv YWQoQVZGaWx0ZXJDb250ZXh0ICphdmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZW51bSBBVlBpeGVsRm9ybWF0IG1haW5fZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbnVtIEFWUGl4ZWxGb3JtYXQgeG1hcF9mb3JtYXQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVudW0gQVZQaXhlbEZvcm1hdCB5bWFwX2Zvcm1hdCkKK3sKKyAgICBSZW1hcE9w ZW5DTENvbnRleHQgKmN0eCA9IGF2Y3R4LT5wcml2OworICAgIGNsX2ludCBjbGU7CisgICAgY29u c3QgY2hhciAqc291cmNlID0gZmZfb3BlbmNsX3NvdXJjZV9yZW1hcDsKKyAgICBjb25zdCBjaGFy ICprZXJuZWwgPSBrZXJuZWxzW2N0eC0+aW50ZXJwXTsKKyAgICBjb25zdCBBVlBpeEZtdERlc2Ny aXB0b3IgKm1haW5fZGVzYywgKnhtYXBfZGVzYywgKnltYXBfZGVzYzsKKyAgICBpbnQgZXJyLCBt YWluX3BsYW5lcywgeG1hcF9wbGFuZXMsIHltYXBfcGxhbmVzOworICAgIGNvbnN0IEFWUGl4Rm10 RGVzY3JpcHRvciAqZGVzYyA9IGF2X3BpeF9mbXRfZGVzY19nZXQobWFpbl9mb3JtYXQpOworICAg IGludCBpc19yZ2IgPSAhIShkZXNjLT5mbGFncyAmIEFWX1BJWF9GTVRfRkxBR19SR0IpOworICAg IGNvbnN0IGZsb2F0IHNjYWxlID0gMS5mIC8gMjU1LmY7CisgICAgdWludDhfdCByZ2JhX21hcFs0 XTsKKworICAgIGZmX2ZpbGxfcmdiYV9tYXAocmdiYV9tYXAsIG1haW5fZm9ybWF0KTsKKworICAg IGlmIChpc19yZ2IpIHsKKyAgICAgICAgY3R4LT5jbF9maWxsX2NvbG9yLnNbcmdiYV9tYXBbMF1d ID0gY3R4LT5maWxsX3JnYmFbMF0gKiBzY2FsZTsKKyAgICAgICAgY3R4LT5jbF9maWxsX2NvbG9y LnNbcmdiYV9tYXBbMV1dID0gY3R4LT5maWxsX3JnYmFbMV0gKiBzY2FsZTsKKyAgICAgICAgY3R4 LT5jbF9maWxsX2NvbG9yLnNbcmdiYV9tYXBbMl1dID0gY3R4LT5maWxsX3JnYmFbMl0gKiBzY2Fs ZTsKKyAgICAgICAgY3R4LT5jbF9maWxsX2NvbG9yLnNbcmdiYV9tYXBbM11dID0gY3R4LT5maWxs X3JnYmFbM10gKiBzY2FsZTsKKyAgICB9IGVsc2UgeworICAgICAgICBjdHgtPmNsX2ZpbGxfY29s b3Iuc1swXSA9IFJHQl9UT19ZX0JUNzA5KGN0eC0+ZmlsbF9yZ2JhWzBdLCBjdHgtPmZpbGxfcmdi YVsxXSwgY3R4LT5maWxsX3JnYmFbMl0pICogc2NhbGU7CisgICAgICAgIGN0eC0+Y2xfZmlsbF9j b2xvci5zWzFdID0gUkdCX1RPX1VfQlQ3MDkoY3R4LT5maWxsX3JnYmFbMF0sIGN0eC0+ZmlsbF9y Z2JhWzFdLCBjdHgtPmZpbGxfcmdiYVsyXSwgMCkgKiBzY2FsZTsKKyAgICAgICAgY3R4LT5jbF9m aWxsX2NvbG9yLnNbMl0gPSBSR0JfVE9fVl9CVDcwOShjdHgtPmZpbGxfcmdiYVswXSwgY3R4LT5m aWxsX3JnYmFbMV0sIGN0eC0+ZmlsbF9yZ2JhWzJdLCAwKSAqIHNjYWxlOworICAgICAgICBjdHgt PmNsX2ZpbGxfY29sb3Iuc1szXSA9IGN0eC0+ZmlsbF9yZ2JhWzNdICogc2NhbGU7CisgICAgfQor CisgICAgbWFpbl9kZXNjID0gYXZfcGl4X2ZtdF9kZXNjX2dldChtYWluX2Zvcm1hdCk7CisgICAg eG1hcF9kZXNjID0gYXZfcGl4X2ZtdF9kZXNjX2dldCh4bWFwX2Zvcm1hdCk7CisgICAgeW1hcF9k ZXNjID0gYXZfcGl4X2ZtdF9kZXNjX2dldCh5bWFwX2Zvcm1hdCk7CisKKyAgICBtYWluX3BsYW5l cyA9IHhtYXBfcGxhbmVzID0geW1hcF9wbGFuZXMgPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBp IDwgbWFpbl9kZXNjLT5uYl9jb21wb25lbnRzOyBpKyspCisgICAgICAgIG1haW5fcGxhbmVzID0g RkZNQVgobWFpbl9wbGFuZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbl9kZXNj LT5jb21wW2ldLnBsYW5lICsgMSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB4bWFwX2Rlc2Mt Pm5iX2NvbXBvbmVudHM7IGkrKykKKyAgICAgICAgeG1hcF9wbGFuZXMgPSBGRk1BWCh4bWFwX3Bs YW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWFwX2Rlc2MtPmNvbXBbaV0ucGxh bmUgKyAxKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHltYXBfZGVzYy0+bmJfY29tcG9uZW50 czsgaSsrKQorICAgICAgICB5bWFwX3BsYW5lcyA9IEZGTUFYKHltYXBfcGxhbmVzLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHltYXBfZGVzYy0+Y29tcFtpXS5wbGFuZSArIDEpOworCisg ICAgY3R4LT5uYl9wbGFuZXMgPSBtYWluX3BsYW5lczsKKworICAgIGVyciA9IGZmX29wZW5jbF9m aWx0ZXJfbG9hZF9wcm9ncmFtKGF2Y3R4LCAmc291cmNlLCAxKTsKKyAgICBpZiAoZXJyIDwgMCkK KyAgICAgICAgZ290byBmYWlsOworCisgICAgY3R4LT5jb21tYW5kX3F1ZXVlID0gY2xDcmVhdGVD b21tYW5kUXVldWUoY3R4LT5vY2YuaHdjdHgtPmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5vY2YuaHdjdHgtPmRldmljZV9pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAmY2xlKTsKKyAg ICBDTF9GQUlMX09OX0VSUk9SKEFWRVJST1IoRUlPKSwgIkZhaWxlZCB0byBjcmVhdGUgT3BlbkNM ICIKKyAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIHF1ZXVlICVkLlxuIiwgY2xlKTsKKwor ICAgIGN0eC0+a2VybmVsID0gY2xDcmVhdGVLZXJuZWwoY3R4LT5vY2YucHJvZ3JhbSwga2VybmVs LCAmY2xlKTsKKyAgICBDTF9GQUlMX09OX0VSUk9SKEFWRVJST1IoRUlPKSwgIkZhaWxlZCB0byBj cmVhdGUga2VybmVsICVkLlxuIiwgY2xlKTsKKworICAgIGN0eC0+aW5pdGlhbGlzZWQgPSAxOwor ICAgIHJldHVybiAwOworCitmYWlsOgorICAgIGlmIChjdHgtPmNvbW1hbmRfcXVldWUpCisgICAg ICAgIGNsUmVsZWFzZUNvbW1hbmRRdWV1ZShjdHgtPmNvbW1hbmRfcXVldWUpOworICAgIGlmIChj dHgtPmtlcm5lbCkKKyAgICAgICAgY2xSZWxlYXNlS2VybmVsKGN0eC0+a2VybmVsKTsKKyAgICBy ZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IHJlbWFwX29wZW5jbF9wcm9jZXNzX2ZyYW1lKEZG RnJhbWVTeW5jICpmcykKK3sKKyAgICBBVkZpbHRlckNvbnRleHQgKmF2Y3R4ID0gZnMtPnBhcmVu dDsKKyAgICBBVkZpbHRlckxpbmsgKm91dGxpbmsgPSBhdmN0eC0+b3V0cHV0c1swXTsKKyAgICBS ZW1hcE9wZW5DTENvbnRleHQgKmN0eCA9IGF2Y3R4LT5wcml2OworICAgIEFWRnJhbWUgKmlucHV0 X21haW4sICppbnB1dF94bWFwLCAqaW5wdXRfeW1hcDsKKyAgICBBVkZyYW1lICpvdXRwdXQ7Cisg ICAgY2xfbWVtIG1lbTsKKyAgICBjbF9pbnQgY2xlOworICAgIHNpemVfdCBnbG9iYWxfd29ya1sy XTsKKyAgICBpbnQga2VybmVsX2FyZyA9IDA7CisgICAgaW50IGVyciwgcGxhbmU7CisKKyAgICBl cnIgPSBmZl9mcmFtZXN5bmNfZ2V0X2ZyYW1lKGZzLCAwLCAmaW5wdXRfbWFpbiwgMCk7CisgICAg aWYgKGVyciA8IDApCisgICAgICAgIHJldHVybiBlcnI7CisgICAgZXJyID0gZmZfZnJhbWVzeW5j X2dldF9mcmFtZShmcywgMSwgJmlucHV0X3htYXAsIDApOworICAgIGlmIChlcnIgPCAwKQorICAg ICAgICByZXR1cm4gZXJyOworICAgIGVyciA9IGZmX2ZyYW1lc3luY19nZXRfZnJhbWUoZnMsIDIs ICZpbnB1dF95bWFwLCAwKTsKKyAgICBpZiAoZXJyIDwgMCkKKyAgICAgICAgcmV0dXJuIGVycjsK KworICAgIGlmICghY3R4LT5pbml0aWFsaXNlZCkgeworICAgICAgICBBVkhXRnJhbWVzQ29udGV4 dCAqbWFpbl9mYyA9CisgICAgICAgICAgIChBVkhXRnJhbWVzQ29udGV4dCopaW5wdXRfbWFpbi0+ aHdfZnJhbWVzX2N0eC0+ZGF0YTsKKyAgICAgICAgQVZIV0ZyYW1lc0NvbnRleHQgKnhtYXBfZmMg PQorICAgICAgICAgICAgKEFWSFdGcmFtZXNDb250ZXh0KilpbnB1dF94bWFwLT5od19mcmFtZXNf Y3R4LT5kYXRhOworICAgICAgICBBVkhXRnJhbWVzQ29udGV4dCAqeW1hcF9mYyA9CisgICAgICAg ICAgICAoQVZIV0ZyYW1lc0NvbnRleHQqKWlucHV0X3ltYXAtPmh3X2ZyYW1lc19jdHgtPmRhdGE7 CisKKyAgICAgICAgZXJyID0gcmVtYXBfb3BlbmNsX2xvYWQoYXZjdHgsIG1haW5fZmMtPnN3X2Zv cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1hcF9mYy0+c3dfZm9ybWF0 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5bWFwX2ZjLT5zd19mb3JtYXQpOwor ICAgICAgICBpZiAoZXJyIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorCisg ICAgb3V0cHV0ID0gZmZfZ2V0X3ZpZGVvX2J1ZmZlcihvdXRsaW5rLCBvdXRsaW5rLT53LCBvdXRs aW5rLT5oKTsKKyAgICBpZiAoIW91dHB1dCkgeworICAgICAgICBlcnIgPSBBVkVSUk9SKEVOT01F TSk7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBmb3IgKHBsYW5lID0gMDsgcGxh bmUgPCBjdHgtPm5iX3BsYW5lczsgcGxhbmUrKykgeworICAgICAgICBjbF9mbG9hdDQgY2xfZmls bF9jb2xvcjsKKyAgICAgICAga2VybmVsX2FyZyA9IDA7CisKKyAgICAgICAgaWYgKGN0eC0+bmJf cGxhbmVzID09IDEpCisgICAgICAgICAgICBjbF9maWxsX2NvbG9yID0gY3R4LT5jbF9maWxsX2Nv bG9yOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjbF9maWxsX2NvbG9yLnNbMF0gPSBjdHgt PmNsX2ZpbGxfY29sb3Iuc1twbGFuZV07CisKKyAgICAgICAgbWVtID0gKGNsX21lbSlvdXRwdXQt PmRhdGFbcGxhbmVdOworICAgICAgICBDTF9TRVRfS0VSTkVMX0FSRyhjdHgtPmtlcm5lbCwga2Vy bmVsX2FyZywgY2xfbWVtLCAmbWVtKTsKKyAgICAgICAga2VybmVsX2FyZysrOworCisgICAgICAg IG1lbSA9IChjbF9tZW0paW5wdXRfbWFpbi0+ZGF0YVtwbGFuZV07CisgICAgICAgIENMX1NFVF9L RVJORUxfQVJHKGN0eC0+a2VybmVsLCBrZXJuZWxfYXJnLCBjbF9tZW0sICZtZW0pOworICAgICAg ICBrZXJuZWxfYXJnKys7CisKKyAgICAgICAgbWVtID0gKGNsX21lbSlpbnB1dF94bWFwLT5kYXRh WzBdOworICAgICAgICBDTF9TRVRfS0VSTkVMX0FSRyhjdHgtPmtlcm5lbCwga2VybmVsX2FyZywg Y2xfbWVtLCAmbWVtKTsKKyAgICAgICAga2VybmVsX2FyZysrOworCisgICAgICAgIG1lbSA9IChj bF9tZW0paW5wdXRfeW1hcC0+ZGF0YVswXTsKKyAgICAgICAgQ0xfU0VUX0tFUk5FTF9BUkcoY3R4 LT5rZXJuZWwsIGtlcm5lbF9hcmcsIGNsX21lbSwgJm1lbSk7CisgICAgICAgIGtlcm5lbF9hcmcr KzsKKworICAgICAgICBDTF9TRVRfS0VSTkVMX0FSRyhjdHgtPmtlcm5lbCwga2VybmVsX2FyZywg Y2xfZmxvYXQ0LCAmY2xfZmlsbF9jb2xvcik7CisgICAgICAgIGtlcm5lbF9hcmcrKzsKKworICAg ICAgICBlcnIgPSBmZl9vcGVuY2xfZmlsdGVyX3dvcmtfc2l6ZV9mcm9tX2ltYWdlKGF2Y3R4LCBn bG9iYWxfd29yaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvdXRwdXQsIHBsYW5lLCAwKTsKKyAgICAgICAgaWYgKGVyciA8IDApCisgICAgICAg ICAgICBnb3RvIGZhaWw7CisKKyAgICAgICAgY2xlID0gY2xFbnF1ZXVlTkRSYW5nZUtlcm5lbChj dHgtPmNvbW1hbmRfcXVldWUsIGN0eC0+a2VybmVsLCAyLCBOVUxMLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbF93b3JrLCBOVUxMLCAwLCBOVUxMLCBOVUxMKTsK KyAgICAgICAgQ0xfRkFJTF9PTl9FUlJPUihBVkVSUk9SKEVJTyksICJGYWlsZWQgdG8gZW5xdWV1 ZSByZW1hcCBrZXJuZWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgcGxhbmUgJWQ6 ICVkLlxuIiwgcGxhbmUsIGNsZSk7CisgICAgfQorCisgICAgY2xlID0gY2xGaW5pc2goY3R4LT5j b21tYW5kX3F1ZXVlKTsKKyAgICBDTF9GQUlMX09OX0VSUk9SKEFWRVJST1IoRUlPKSwgIkZhaWxl ZCB0byBmaW5pc2ggY29tbWFuZCBxdWV1ZTogJWQuXG4iLCBjbGUpOworCisgICAgZXJyID0gYXZf ZnJhbWVfY29weV9wcm9wcyhvdXRwdXQsIGlucHV0X21haW4pOworCisgICAgYXZfbG9nKGF2Y3R4 LCBBVl9MT0dfREVCVUcsICJGaWx0ZXIgb3V0cHV0OiAlcywgJXV4JXUgKCUiUFJJZDY0IikuXG4i LAorICAgICAgICAgICBhdl9nZXRfcGl4X2ZtdF9uYW1lKG91dHB1dC0+Zm9ybWF0KSwKKyAgICAg ICAgICAgb3V0cHV0LT53aWR0aCwgb3V0cHV0LT5oZWlnaHQsIG91dHB1dC0+cHRzKTsKKworICAg IHJldHVybiBmZl9maWx0ZXJfZnJhbWUob3V0bGluaywgb3V0cHV0KTsKKworZmFpbDoKKyAgICBh dl9mcmFtZV9mcmVlKCZvdXRwdXQpOworICAgIHJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQg Y29uZmlnX291dHB1dChBVkZpbHRlckxpbmsgKm91dGxpbmspCit7CisgICAgQVZGaWx0ZXJDb250 ZXh0ICpjdHggPSBvdXRsaW5rLT5zcmM7CisgICAgUmVtYXBPcGVuQ0xDb250ZXh0ICpzID0gY3R4 LT5wcml2OworICAgIEFWRmlsdGVyTGluayAqc3JjbGluayA9IGN0eC0+aW5wdXRzWzBdOworICAg IEFWRmlsdGVyTGluayAqeGxpbmsgPSBjdHgtPmlucHV0c1sxXTsKKyAgICBBVkZpbHRlckxpbmsg KnlsaW5rID0gY3R4LT5pbnB1dHNbMl07CisgICAgRkZGcmFtZVN5bmNJbiAqaW47CisgICAgaW50 IHJldDsKKworICAgIGlmICh4bGluay0+dyAhPSB5bGluay0+dyB8fCB4bGluay0+aCAhPSB5bGlu ay0+aCkgeworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJTZWNvbmQgaW5wdXQg bGluayAlcyBwYXJhbWV0ZXJzICIKKyAgICAgICAgICAgICAgICIoc2l6ZSAlZHglZCkgZG8gbm90 IG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nICIKKyAgICAgICAgICAgICAgICJ0aGlyZCBpbnB1dCBs aW5rICVzIHBhcmFtZXRlcnMgKCVkeCVkKVxuIiwKKyAgICAgICAgICAgICAgIGN0eC0+aW5wdXRf cGFkc1sxXS5uYW1lLCB4bGluay0+dywgeGxpbmstPmgsCisgICAgICAgICAgICAgICBjdHgtPmlu cHV0X3BhZHNbMl0ubmFtZSwgeWxpbmstPncsIHlsaW5rLT5oKTsKKyAgICAgICAgcmV0dXJuIEFW RVJST1IoRUlOVkFMKTsKKyAgICB9CisKKyAgICBvdXRsaW5rLT53ID0geGxpbmstPnc7CisgICAg b3V0bGluay0+aCA9IHhsaW5rLT5oOworICAgIG91dGxpbmstPnNhbXBsZV9hc3BlY3RfcmF0aW8g PSBzcmNsaW5rLT5zYW1wbGVfYXNwZWN0X3JhdGlvOworICAgIG91dGxpbmstPmZyYW1lX3JhdGUg PSBzcmNsaW5rLT5mcmFtZV9yYXRlOworCisgICAgcmV0ID0gZmZfZnJhbWVzeW5jX2luaXQoJnMt PmZzLCBjdHgsIDMpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisg ICAgaW4gPSBzLT5mcy5pbjsKKyAgICBpblswXS50aW1lX2Jhc2UgPSBzcmNsaW5rLT50aW1lX2Jh c2U7CisgICAgaW5bMV0udGltZV9iYXNlID0geGxpbmstPnRpbWVfYmFzZTsKKyAgICBpblsyXS50 aW1lX2Jhc2UgPSB5bGluay0+dGltZV9iYXNlOworICAgIGluWzBdLnN5bmMgICA9IDI7CisgICAg aW5bMF0uYmVmb3JlID0gRVhUX1NUT1A7CisgICAgaW5bMF0uYWZ0ZXIgID0gRVhUX1NUT1A7Cisg ICAgaW5bMV0uc3luYyAgID0gMTsKKyAgICBpblsxXS5iZWZvcmUgPSBFWFRfTlVMTDsKKyAgICBp blsxXS5hZnRlciAgPSBFWFRfSU5GSU5JVFk7CisgICAgaW5bMl0uc3luYyAgID0gMTsKKyAgICBp blsyXS5iZWZvcmUgPSBFWFRfTlVMTDsKKyAgICBpblsyXS5hZnRlciAgPSBFWFRfSU5GSU5JVFk7 CisgICAgcy0+ZnMub3BhcXVlICAgPSBzOworICAgIHMtPmZzLm9uX2V2ZW50ID0gcmVtYXBfb3Bl bmNsX3Byb2Nlc3NfZnJhbWU7CisKKyAgICByZXQgPSBmZl9mcmFtZXN5bmNfY29uZmlndXJlKCZz LT5mcyk7CisgICAgb3V0bGluay0+dGltZV9iYXNlID0gcy0+ZnMudGltZV9iYXNlOworICAgIGlm IChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgcy0+b2NmLm91dHB1dF93aWR0 aCAgPSBvdXRsaW5rLT53OworICAgIHMtPm9jZi5vdXRwdXRfaGVpZ2h0ID0gb3V0bGluay0+aDsK KworICAgIHJldHVybiBmZl9vcGVuY2xfZmlsdGVyX2NvbmZpZ19vdXRwdXQob3V0bGluayk7Cit9 CisKK3N0YXRpYyBpbnQgYWN0aXZhdGUoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCit7CisgICAgUmVt YXBPcGVuQ0xDb250ZXh0ICpzID0gY3R4LT5wcml2OworICAgIHJldHVybiBmZl9mcmFtZXN5bmNf YWN0aXZhdGUoJnMtPmZzKTsKK30KKworc3RhdGljIGF2X2NvbGQgdm9pZCByZW1hcF9vcGVuY2xf dW5pbml0KEFWRmlsdGVyQ29udGV4dCAqYXZjdHgpCit7CisgICAgUmVtYXBPcGVuQ0xDb250ZXh0 ICpjdHggPSBhdmN0eC0+cHJpdjsKKyAgICBjbF9pbnQgY2xlOworCisgICAgaWYgKGN0eC0+a2Vy bmVsKSB7CisgICAgICAgIGNsZSA9IGNsUmVsZWFzZUtlcm5lbChjdHgtPmtlcm5lbCk7CisgICAg ICAgIGlmIChjbGUgIT0gQ0xfU1VDQ0VTUykKKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZf TE9HX0VSUk9SLCAiRmFpbGVkIHRvIHJlbGVhc2UgIgorICAgICAgICAgICAgICAgICAgICJrZXJu ZWw6ICVkLlxuIiwgY2xlKTsKKyAgICB9CisKKyAgICBpZiAoY3R4LT5jb21tYW5kX3F1ZXVlKSB7 CisgICAgICAgIGNsZSA9IGNsUmVsZWFzZUNvbW1hbmRRdWV1ZShjdHgtPmNvbW1hbmRfcXVldWUp OworICAgICAgICBpZiAoY2xlICE9IENMX1NVQ0NFU1MpCisgICAgICAgICAgICBhdl9sb2coYXZj dHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byByZWxlYXNlICIKKyAgICAgICAgICAgICAgICAg ICAiY29tbWFuZCBxdWV1ZTogJWQuXG4iLCBjbGUpOworICAgIH0KKworICAgIGZmX29wZW5jbF9m aWx0ZXJfdW5pbml0KGF2Y3R4KTsKKworICAgIGZmX2ZyYW1lc3luY191bmluaXQoJmN0eC0+ZnMp OworfQorCitzdGF0aWMgY29uc3QgQVZGaWx0ZXJQYWQgcmVtYXBfb3BlbmNsX2lucHV0c1tdID0g eworICAgIHsKKyAgICAgICAgLm5hbWUgICAgICAgICA9ICJzb3VyY2UiLAorICAgICAgICAudHlw ZSAgICAgICAgID0gQVZNRURJQV9UWVBFX1ZJREVPLAorICAgICAgICAuY29uZmlnX3Byb3BzID0g JmZmX29wZW5jbF9maWx0ZXJfY29uZmlnX2lucHV0LAorICAgIH0sCisgICAgeworICAgICAgICAu bmFtZSAgICAgICAgID0gInhtYXAiLAorICAgICAgICAudHlwZSAgICAgICAgID0gQVZNRURJQV9U WVBFX1ZJREVPLAorICAgICAgICAuY29uZmlnX3Byb3BzID0gJmZmX29wZW5jbF9maWx0ZXJfY29u ZmlnX2lucHV0LAorICAgIH0sCisgICAgeworICAgICAgICAubmFtZSAgICAgICAgID0gInltYXAi LAorICAgICAgICAudHlwZSAgICAgICAgID0gQVZNRURJQV9UWVBFX1ZJREVPLAorICAgICAgICAu Y29uZmlnX3Byb3BzID0gJmZmX29wZW5jbF9maWx0ZXJfY29uZmlnX2lucHV0LAorICAgIH0sCit9 OworCitzdGF0aWMgY29uc3QgQVZGaWx0ZXJQYWQgcmVtYXBfb3BlbmNsX291dHB1dHNbXSA9IHsK KyAgICB7CisgICAgICAgIC5uYW1lICAgICAgICAgID0gImRlZmF1bHQiLAorICAgICAgICAudHlw ZSAgICAgICAgICA9IEFWTUVESUFfVFlQRV9WSURFTywKKyAgICAgICAgLmNvbmZpZ19wcm9wcyAg PSBjb25maWdfb3V0cHV0LAorICAgIH0sCit9OworCitjb25zdCBBVkZpbHRlciBmZl92Zl9yZW1h cF9vcGVuY2wgPSB7CisgICAgLm5hbWUgICAgICAgICAgPSAicmVtYXBfb3BlbmNsIiwKKyAgICAu ZGVzY3JpcHRpb24gICA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJSZW1hcCBwaXhlbHMgdXNpbmcg T3BlbkNMLiIpLAorICAgIC5wcml2X3NpemUgICAgID0gc2l6ZW9mKFJlbWFwT3BlbkNMQ29udGV4 dCksCisgICAgLmluaXQgICAgICAgICAgPSByZW1hcF9vcGVuY2xfaW5pdCwKKyAgICAudW5pbml0 ICAgICAgICA9IHJlbWFwX29wZW5jbF91bmluaXQsCisgICAgLmFjdGl2YXRlICAgICAgPSBhY3Rp dmF0ZSwKKyAgICBGSUxURVJfSU5QVVRTKHJlbWFwX29wZW5jbF9pbnB1dHMpLAorICAgIEZJTFRF Ul9PVVRQVVRTKHJlbWFwX29wZW5jbF9vdXRwdXRzKSwKKyAgICBGSUxURVJfU0lOR0xFX1BJWEZN VChBVl9QSVhfRk1UX09QRU5DTCksCisgICAgLnByaXZfY2xhc3MgICAgPSAmcmVtYXBfb3BlbmNs X2NsYXNzLAorICAgIC5mbGFnc19pbnRlcm5hbCAgPSBGRl9GSUxURVJfRkxBR19IV0ZSQU1FX0FX QVJFLAorfTsKZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9od2NvbnRleHRfb3BlbmNsLmMgYi9saWJh dnV0aWwvaHdjb250ZXh0X29wZW5jbC5jCmluZGV4IDRmNGJkMTM0MDUuLjMyYWVjN2QyMjggMTAw NjQ0Ci0tLSBhL2xpYmF2dXRpbC9od2NvbnRleHRfb3BlbmNsLmMKKysrIGIvbGliYXZ1dGlsL2h3 Y29udGV4dF9vcGVuY2wuYwpAQCAtMTQxMSw3ICsxNDExLDggQEAgc3RhdGljIGludCBvcGVuY2xf Z2V0X3BsYW5lX2Zvcm1hdChlbnVtIEFWUGl4ZWxGb3JtYXQgcGl4Zm10LAogICAgICAgICAvLyBU aGUgYml0cyBpbiBlYWNoIGNvbXBvbmVudCBtdXN0IGJlIHBhY2tlZCBpbiB0aGUKICAgICAgICAg Ly8gbW9zdC1zaWduaWZpY2FudC1iaXRzIG9mIHRoZSByZWxldmFudCBieXRlcy4KICAgICAgICAg aWYgKGNvbXAtPnNoaWZ0ICsgY29tcC0+ZGVwdGggIT0gOCAmJgotICAgICAgICAgICAgY29tcC0+ c2hpZnQgKyBjb21wLT5kZXB0aCAhPSAxNikKKyAgICAgICAgICAgIGNvbXAtPnNoaWZ0ICsgY29t cC0+ZGVwdGggIT0gMTYgJiYKKyAgICAgICAgICAgIGNvbXAtPnNoaWZ0ICsgY29tcC0+ZGVwdGgg IT0gMzIpCiAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgICAgICAvLyBU aGUgZGVwdGggbXVzdCBub3QgdmFyeSBiZXR3ZWVuIGNvbXBvbmVudHMuCiAgICAgICAgIGlmIChk ZXB0aCAmJiBjb21wLT5kZXB0aCAhPSBkZXB0aCkKQEAgLTE0NTUsNiArMTQ1Niw4IEBAIHN0YXRp YyBpbnQgb3BlbmNsX2dldF9wbGFuZV9mb3JtYXQoZW51bSBBVlBpeGVsRm9ybWF0IHBpeGZtdCwK ICAgICB9IGVsc2UgewogICAgICAgICBpZiAoZGVwdGggPD0gMTYpCiAgICAgICAgICAgICBpbWFn ZV9mb3JtYXQtPmltYWdlX2NoYW5uZWxfZGF0YV90eXBlID0gQ0xfVU5PUk1fSU5UMTY7CisgICAg ICAgIGVsc2UgaWYgKGRlcHRoID09IDMyKQorICAgICAgICAgICAgaW1hZ2VfZm9ybWF0LT5pbWFn ZV9jaGFubmVsX2RhdGFfdHlwZSA9IENMX0ZMT0FUOwogICAgICAgICBlbHNlCiAgICAgICAgICAg ICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KLS0gCjIuMzYuMQoK --0000000000002d01f005e2a4c7e6 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". --0000000000002d01f005e2a4c7e6--