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 73F834037C for ; Sat, 23 Apr 2022 13:33:10 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5AFD668B2DC; Sat, 23 Apr 2022 16:33:07 +0300 (EEST) Received: from shout02.mail.de (shout02.mail.de [62.201.172.25]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ED2D668B1DD for ; Sat, 23 Apr 2022 16:33:00 +0300 (EEST) Received: from postfix02.mail.de (postfix02.bt.mail.de [10.0.121.126]) by shout02.mail.de (Postfix) with ESMTP id 62356A0E71 for ; Sat, 23 Apr 2022 15:33:00 +0200 (CEST) Received: from smtp02.mail.de (smtp02.bt.mail.de [10.0.121.212]) by postfix02.mail.de (Postfix) with ESMTP id 386CAA03C1 for ; Sat, 23 Apr 2022 15:33:00 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mail.de; s=mailde202009; t=1650720780; bh=eMvruF/Cop2ASBw1f3rMFoaAWmRRBnyNujc6l9RDSvg=; h=Message-ID:Date:Subject:To:From:From:To:CC:Subject:Reply-To; b=PqclakyUTW3+DLU3w+2/NqnAcO0+bVoxiK4opMWwwYwFIoZ58Cjmh/o7M6CnBgX7v Ru3+2FwZBK8d4DGiWftlhHjq1ndQxb0KgRSgHJPvTK5iA6xQof5DYiwHstrPBDNGYX i8yf19aik0ZW6bNyNyqVr7nV8wMAqvcQz8F4KziVVjeDSuTNyJUtGLa32wTxlvEUR0 plnvALfGZAgpsTrFBPq7LlpYAfrEA3vAgF8MihtWM3CxNG4vnzS2Ea8Qg5JF/HYbTI aDdkfjuBXHI8rvMub04MPE4G6O/5PmvnxvaO77BdwvqcaI/C98QUC+te2Mu5WvBbR2 qOzuJaRjrZ96A== Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtp02.mail.de (Postfix) with ESMTPSA id F227EA01E7 for ; Sat, 23 Apr 2022 15:32:59 +0200 (CEST) Content-Type: multipart/mixed; boundary="------------nFqx4TPxaOQ8mzd6vE0Ac8U3" Message-ID: Date: Sat, 23 Apr 2022 15:32:58 +0200 MIME-Version: 1.0 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <00ca6f6f-fc18-8b6b-1ff0-f24db7f3714b@mail.de> <6ef64d28-6f3a-93f5-5f72-29e40fc73e86@mail.de> <8a6f5d41-c68a-5076-2f6b-932637ccb691@mail.de> From: Thilo Borgmann In-Reply-To: <8a6f5d41-c68a-5076-2f6b-932637ccb691@mail.de> X-purgate: clean X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate-type: clean X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate: clean X-purgate-size: 24228 X-purgate-ID: 154282::1650720780-0000737C-5D9D6CC0/0/0 Subject: Re: [FFmpeg-devel] [PATCH 2/2] lavfi: Add blurriness 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: This is a multi-part message in MIME format. --------------nFqx4TPxaOQ8mzd6vE0Ac8U3 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, >>>> v3 updated to current HEAD. >>>> >>>> Named blurdetect filter now. >>>> Minor fixes on allocation and removed -f option. >>>> >>> >>> Please make this per plane filtering, with default to measure only first >>> plane. >> >> done in v4. >> >> (Will add Changelog, version.h and fate test once the filter itself looks ok) > > Ping. v5 according to IRC comments. -Thilo --------------nFqx4TPxaOQ8mzd6vE0Ac8U3 Content-Type: text/plain; charset=UTF-8; name="v5-0002-lavfi-Add-blurdetect-filter.patch" Content-Disposition: attachment; filename="v5-0002-lavfi-Add-blurdetect-filter.patch" Content-Transfer-Encoding: base64 RnJvbSBiZTBiZWQwN2QzNmQ5NTdjYWYzMjhmOTFhNmNkMDQwMmMyN2ZiNmI0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUaGlsbyBCb3JnbWFubiA8dGhpbG8uYm9yZ21hbm5A bWFpbC5kZT4KRGF0ZTogU2F0LCAyMyBBcHIgMjAyMiAxNToyOTozNiArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggdjUgMi8yXSBsYXZmaTogQWRkIGJsdXJkZXRlY3QgZmlsdGVyCgotLS0KIGRv Yy9maWx0ZXJzLnRleGkgICAgICAgICAgICB8ICA1MiArKysrKwogbGliYXZmaWx0ZXIvTWFr ZWZpbGUgICAgICAgIHwgICAxICsKIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyAgICB8ICAg MSArCiBsaWJhdmZpbHRlci92Zl9ibHVyZGV0ZWN0LmMgfCAzOTUgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDQ0OSBpbnNlcnRpb25z KCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0ZXIvdmZfYmx1cmRldGVjdC5jCgpk aWZmIC0tZ2l0IGEvZG9jL2ZpbHRlcnMudGV4aSBiL2RvYy9maWx0ZXJzLnRleGkKaW5kZXgg NjM2YzgwZGJmZi4uYzZkNDUzNzgwNCAxMDA2NDQKLS0tIGEvZG9jL2ZpbHRlcnMudGV4aQor KysgYi9kb2MvZmlsdGVycy50ZXhpCkBAIC03OTkwLDYgKzc5OTAsNTggQEAgdGJsZW5kPWFs bF9tb2RlPWdyYWluZXh0cmFjdAogQHN1YnNlY3Rpb24gQ29tbWFuZHMKIFRoaXMgZmlsdGVy IHN1cHBvcnRzIHNhbWUgQHJlZntjb21tYW5kc30gYXMgb3B0aW9ucy4KIAorQGFuY2hvcnti bHVyZGV0ZWN0fQorQHNlY3Rpb24gYmx1cmRldGVjdAorCitEZXRlcm1pbmVzIGJsdXJyaW5l c3Mgb2YgZnJhbWVzIHdpdGhvdXQgYWx0ZXJpbmcgdGhlIGlucHV0IGZyYW1lcy4KKworQmFz ZWQgb24gTWFyemlsaWFubywgUGluYSwgZXQgYWwuICJBIG5vLXJlZmVyZW5jZSBwZXJjZXB0 dWFsIGJsdXIgbWV0cmljLiIKK0FsbG93cyBmb3IgYSBibG9jay1iYXNlZCBhYmJyZXZpYXRp b24uCisKK1RoZSBmaWx0ZXIgYWNjZXB0cyB0aGUgZm9sbG93aW5nIG9wdGlvbnM6CisKK0B0 YWJsZSBAb3B0aW9uCitAaXRlbSBsb3cKK0BpdGVtIGhpZ2gKK1NldCBsb3cgYW5kIGhpZ2gg dGhyZXNob2xkIHZhbHVlcyB1c2VkIGJ5IHRoZSBDYW5ueSB0aHJlc2hvbGRpbmcKK2FsZ29y aXRobS4KKworVGhlIGhpZ2ggdGhyZXNob2xkIHNlbGVjdHMgdGhlICJzdHJvbmciIGVkZ2Ug cGl4ZWxzLCB3aGljaCBhcmUgdGhlbgorY29ubmVjdGVkIHRocm91Z2ggOC1jb25uZWN0aXZp dHkgd2l0aCB0aGUgIndlYWsiIGVkZ2UgcGl4ZWxzIHNlbGVjdGVkCitieSB0aGUgbG93IHRo cmVzaG9sZC4KKworQHZhcntsb3d9IGFuZCBAdmFye2hpZ2h9IHRocmVzaG9sZCB2YWx1ZXMg bXVzdCBiZSBjaG9zZW4gaW4gdGhlIHJhbmdlCitbMCwxXSwgYW5kIEB2YXJ7bG93fSBzaG91 bGQgYmUgbGVzc2VyIG9yIGVxdWFsIHRvIEB2YXJ7aGlnaH0uCisKK0RlZmF1bHQgdmFsdWUg Zm9yIEB2YXJ7bG93fSBpcyBAY29kZXsyMC8yNTV9LCBhbmQgZGVmYXVsdCB2YWx1ZSBmb3Ig QHZhcntoaWdofQoraXMgQGNvZGV7NTAvMjU1fS4KKworQGl0ZW0gcmFkaXVzCitEZWZpbmUg dGhlIHJhZGl1cyB0byBzZWFyY2ggYXJvdW5kIGFuIGVkZ2UgcGl4ZWwgZm9yIGxvY2FsIG1h eGltYS4KKworQGl0ZW0gYmxvY2tfcGN0CitEZXRlcm1pbmUgYmx1cnJpbmVzcyBvbmx5IGZv ciB0aGUgbW9zdCBzaWduaWZpY2FudCBibG9ja3MsIGdpdmVuIGluIHBlcmNlbnRhZ2UuCisK K0BpdGVtIGJsb2NrX3dpZHRoCitEZXRlcm1pbmUgYmx1cnJpbmVzcyBmb3IgYmxvY2tzIG9m IHdpZHRoIEB2YXJ7YmxvY2tfd2lkdGh9LiBJZiBzZXQgdG8gYW55IHZhbHVlIHNtYWxsZXIg MSwgbm8gYmxvY2tzIGFyZSB1c2VkIGFuZCB0aGUgd2hvbGUgaW1hZ2UgaXMgcHJvY2Vzc2Vk IGFzIG9uZSBubyBtYXR0ZXIgb2YgQHZhcntibG9ja19oZWlnaHR9LgorCitAaXRlbSBibG9j a19oZWlnaHQKK0RldGVybWluZSBibHVycmluZXNzIGZvciBibG9ja3Mgb2YgaGVpZ2h0IEB2 YXJ7YmxvY2tfaGVpZ2h0fS4gSWYgc2V0IHRvIGFueSB2YWx1ZSBzbWFsbGVyIDEsIG5vIGJs b2NrcyBhcmUgdXNlZCBhbmQgdGhlIHdob2xlIGltYWdlIGlzIHByb2Nlc3NlZCBhcyBvbmUg bm8gbWF0dGVyIG9mIEB2YXJ7YmxvY2tfd2lkdGh9LgorCitAaXRlbSBwbGFuZXMKK1NldCBw bGFuZXMgdG8gZmlsdGVyLiBEZWZhdWx0IGlzIGZpcnN0IG9ubHkuCitAZW5kIHRhYmxlCisK K0BzdWJzZWN0aW9uIEV4YW1wbGVzCisKK0BpdGVtaXplCitAaXRlbQorRGV0ZXJtaW5lIGJs dXIgZm9yIDgwJSBvZiBtb3N0IHNpZ25pZmljYW50IDMyeDMyIGJsb2NrczoKK0BleGFtcGxl CitibHVyZGV0ZWN0PWJsb2NrX3dpZHRoPTMyOmJsb2NrX2hlaWdodD0zMjpibG9ja19wY3Q9 ODAKK0BlbmQgZXhhbXBsZQorQGVuZCBpdGVtaXplCisKIEBzZWN0aW9uIGJtM2QKIAogRGVu b2lzZSBmcmFtZXMgdXNpbmcgQmxvY2stTWF0Y2hpbmcgM0QgYWxnb3JpdGhtLgpkaWZmIC0t Z2l0IGEvbGliYXZmaWx0ZXIvTWFrZWZpbGUgYi9saWJhdmZpbHRlci9NYWtlZmlsZQppbmRl eCAwMDZlNTliMmJkLi42MzMyYTZmNzk5IDEwMDY0NAotLS0gYS9saWJhdmZpbHRlci9NYWtl ZmlsZQorKysgYi9saWJhdmZpbHRlci9NYWtlZmlsZQpAQCAtMTk1LDYgKzE5NSw3IEBAIE9C SlMtJChDT05GSUdfQkxBQ0tERVRFQ1RfRklMVEVSKSAgICAgICAgICAgICs9IHZmX2JsYWNr ZGV0ZWN0Lm8KIE9CSlMtJChDT05GSUdfQkxBQ0tGUkFNRV9GSUxURVIpICAgICAgICAgICAg ICs9IHZmX2JsYWNrZnJhbWUubwogT0JKUy0kKENPTkZJR19CTEVORF9GSUxURVIpICAgICAg ICAgICAgICAgICAgKz0gdmZfYmxlbmQubyBmcmFtZXN5bmMubwogT0JKUy0kKENPTkZJR19C TEVORF9WVUxLQU5fRklMVEVSKSAgICAgICAgICAgKz0gdmZfYmxlbmRfdnVsa2FuLm8gZnJh bWVzeW5jLm8gdnVsa2FuLm8gdnVsa2FuX2ZpbHRlci5vCitPQkpTLSQoQ09ORklHX0JMVVJE RVRFQ1RfRklMVEVSKSAgICAgICAgICAgICArPSB2Zl9ibHVyZGV0ZWN0Lm8gZWRnZV9jb21t b24ubwogT0JKUy0kKENPTkZJR19CTTNEX0ZJTFRFUikgICAgICAgICAgICAgICAgICAgKz0g dmZfYm0zZC5vIGZyYW1lc3luYy5vCiBPQkpTLSQoQ09ORklHX0JPWEJMVVJfRklMVEVSKSAg ICAgICAgICAgICAgICArPSB2Zl9ib3hibHVyLm8gYm94Ymx1ci5vCiBPQkpTLSQoQ09ORklH X0JPWEJMVVJfT1BFTkNMX0ZJTFRFUikgICAgICAgICArPSB2Zl9hdmdibHVyX29wZW5jbC5v IG9wZW5jbC5vIFwKZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyBiL2xp YmF2ZmlsdGVyL2FsbGZpbHRlcnMuYwppbmRleCA5ZmJhYWFjZjQ3Li4yNjY3ZDE1M2FkIDEw MDY0NAotLS0gYS9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMKKysrIGIvbGliYXZmaWx0ZXIv YWxsZmlsdGVycy5jCkBAIC0xODMsNiArMTgzLDcgQEAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVy IGZmX3ZmX2JsYWNrZGV0ZWN0OwogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX2JsYWNr ZnJhbWU7CiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfYmxlbmQ7CiBleHRlcm4gY29u c3QgQVZGaWx0ZXIgZmZfdmZfYmxlbmRfdnVsa2FuOworZXh0ZXJuIGNvbnN0IEFWRmlsdGVy IGZmX3ZmX2JsdXJkZXRlY3Q7CiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfYm0zZDsK IGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl9ib3hibHVyOwogZXh0ZXJuIGNvbnN0IEFW RmlsdGVyIGZmX3ZmX2JveGJsdXJfb3BlbmNsOwpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIv dmZfYmx1cmRldGVjdC5jIGIvbGliYXZmaWx0ZXIvdmZfYmx1cmRldGVjdC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmM3NGY0NWNjYjgKLS0tIC9kZXYvbnVs bAorKysgYi9saWJhdmZpbHRlci92Zl9ibHVyZGV0ZWN0LmMKQEAgLTAsMCArMSwzOTUgQEAK Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVGhpbG8gQm9yZ21hbm4gPHRoaWxvLmJvcmdt YW5uIF9hdF8gbWFpbC5kZT4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcu CisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUg TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg KiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg KiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp ZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworLyoqCisgKiBA ZmlsZQorICogTm8tcmVmZXJlbmNlIGJsdXJkZXRlY3QgZmlsdGVyCisgKgorICogSW1wbGVt ZW50aW5nOgorICogTWFyemlsaWFubywgUGluYSwgZXQgYWwuICJBIG5vLXJlZmVyZW5jZSBw ZXJjZXB0dWFsIGJsdXIgbWV0cmljLiIgUHJvY2VlZGluZ3MuCisgKiBJbnRlcm5hdGlvbmFs IGNvbmZlcmVuY2Ugb24gaW1hZ2UgcHJvY2Vzc2luZy4gVm9sLiAzLiBJRUVFLCAyMDAyLgor ICogaHR0cHM6Ly9pbmZvc2NpZW5jZS5lcGZsLmNoL3JlY29yZC8xMTE4MDIvZmlsZXMvMTQl MjBBJTIwbm8tcmVmZXJlbmNlJTIwcGVyY2VwdHVhbCUyMGJsdXIlMjBtZXRyaWMucGRmCisg KgorICogQGF1dGhvciBUaGlsbyBCb3JnbWFubiA8dGhpbG8uYm9yZ21hbm4gX2F0XyBtYWls LmRlPgorICovCisKKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKKyNpbmNsdWRl ICJsaWJhdnV0aWwvaW1ndXRpbHMuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCisj aW5jbHVkZSAibGliYXZ1dGlsL3BpeGVsdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwv bW90aW9uX3ZlY3Rvci5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9xc29ydC5oIgorI2luY2x1 ZGUgImF2ZmlsdGVyLmgiCisjaW5jbHVkZSAiZm9ybWF0cy5oIgorI2luY2x1ZGUgImludGVy bmFsLmgiCisjaW5jbHVkZSAidmlkZW8uaCIKKyNpbmNsdWRlICJlZGdlX2NvbW1vbi5oIgor CitzdGF0aWMgaW50IGNvbXAoY29uc3QgZmxvYXQgKmEsY29uc3QgZmxvYXQgKmIpCit7Cisg ICAgcmV0dXJuIEZGRElGRlNJR04oKmEsICpiKTsKK30KKwordHlwZWRlZiBzdHJ1Y3QgQkxS Q29udGV4dCB7CisgICAgY29uc3QgQVZDbGFzcyAqY2xhc3M7CisKKyAgICBpbnQgaHN1Yiwg dnN1YjsKKyAgICBpbnQgbmJfcGxhbmVzOworCisgICAgZmxvYXQgICBsb3csIGhpZ2g7Cisg ICAgdWludDhfdCBsb3dfdTgsIGhpZ2hfdTg7CisgICAgaW50ICAgICByYWRpdXM7ICAgICAg ICAvLyByYWRpdXMgZHVyaW5nIGxvY2FsIG1heGltYSBkZXRlY3Rpb24KKyAgICBpbnQgICAg IGJsb2NrX3BjdDsgICAgIC8vIHBlcmNlbnRhZ2Ugb2YgInNoYXJwZXN0IiBibG9ja3MgaW4g dGhlIGltYWdlIHRvIHVzZSBmb3IgYmx1cmluZXNzIGNhbGN1bGF0aW9uCisgICAgaW50ICAg ICBibG9ja193aWR0aDsgICAvLyB3aWR0aCBmb3IgYmxvY2sgYWJicmV2aWF0aW9uCisgICAg aW50ICAgICBibG9ja19oZWlnaHQ7ICAvLyBoZWlnaHQgZm9yIGJsb2NrIGFiYnJldmlhdGlv bgorICAgIGludCAgICAgcGxhbmVzOyAgICAgICAgLy8gbnVtYmVyIG9mIHBsYW5lcyB0byBm aWx0ZXIKKworICAgIGRvdWJsZSAgIGJsdXJfdG90YWw7CisgICAgdWludDY0X3QgbmJfZnJh bWVzOworCisgICAgZmxvYXQgICAgKmJsa3M7CisgICAgdWludDhfdCAgKmZpbHRlcmJ1ZjsK KyAgICB1aW50OF90ICAqdG1wYnVmOworICAgIHVpbnQxNl90ICpncmFkaWVudHM7CisgICAg Y2hhciAgICAgKmRpcmVjdGlvbnM7Cit9IEJMUkNvbnRleHQ7CisKKyNkZWZpbmUgT0ZGU0VU KHgpIG9mZnNldG9mKEJMUkNvbnRleHQsIHgpCisjZGVmaW5lIEZMQUdTIEFWX09QVF9GTEFH X0ZJTFRFUklOR19QQVJBTXxBVl9PUFRfRkxBR19WSURFT19QQVJBTQorc3RhdGljIGNvbnN0 IEFWT3B0aW9uIGJsdXJkZXRlY3Rfb3B0aW9uc1tdID0geworICAgIHsgImhpZ2giLCAgICAg ICAgICAic2V0IGhpZ2ggdGhyZXNob2xkIiwgT0ZGU0VUKGhpZ2gpLCBBVl9PUFRfVFlQRV9G TE9BVCwgey5kYmw9MzAvMjU1Ln0sIDAsIDEsIEZMQUdTIH0sCisgICAgeyAibG93IiwgICAg ICAgICAgICJzZXQgbG93IHRocmVzaG9sZCIsICBPRkZTRVQobG93KSwgIEFWX09QVF9UWVBF X0ZMT0FULCB7LmRibD0xNS8yNTUufSwgMCwgMSwgRkxBR1MgfSwKKyAgICB7ICJyYWRpdXMi LCAgICAgICAgInNlYXJjaCByYWRpdXMgZm9yIG1heGltYSBkZXRlY3Rpb24iLCBPRkZTRVQo cmFkaXVzKSwgQVZfT1BUX1RZUEVfSU5ULCB7Lmk2ND01MH0sIDEsIDEwMCwgRkxBR1MgfSwK KyAgICB7ICJibG9ja19wY3QiLCAgICAgImJsb2NrIHBvb2xpbmcgdGhyZXNob2xkIHdoZW4g Y2FsY3VsYXRpbmcgYmx1cnJpbmVzcyIsIE9GRlNFVChibG9ja19wY3QpLCBBVl9PUFRfVFlQ RV9JTlQsIHsuaTY0PTgwfSwgMSwgMTAwLCBGTEFHUyB9LAorICAgIHsgImJsb2NrX3dpZHRo IiwgICAiYmxvY2sgc2l6ZSBmb3IgYmxvY2stYmFzZWQgYWJicmV2aWF0aW9uIG9mIGJsdXJy aW5lc3MiLCBPRkZTRVQoYmxvY2tfd2lkdGgpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0PS0x fSwgLTEsIElOVF9NQVgsIEZMQUdTIH0sCisgICAgeyAiYmxvY2tfaGVpZ2h0IiwgICJibG9j ayBzaXplIGZvciBibG9jay1iYXNlZCBhYmJyZXZpYXRpb24gb2YgYmx1cnJpbmVzcyIsIE9G RlNFVChibG9ja19oZWlnaHQpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0PS0xfSwgLTEsIElO VF9NQVgsIEZMQUdTIH0sCisgICAgeyAicGxhbmVzIiwgICAgICAgICJzZXQgcGxhbmVzIHRv IGZpbHRlciIsIE9GRlNFVChwbGFuZXMpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0PTF9LCAw LCAxNSwgRkxBR1MgfSwKKyAgICB7IE5VTEwgfQorfTsKKworQVZGSUxURVJfREVGSU5FX0NM QVNTKGJsdXJkZXRlY3QpOworCitzdGF0aWMgYXZfY29sZCBpbnQgYmx1cmRldGVjdF9pbml0 KEFWRmlsdGVyQ29udGV4dCAqY3R4KQoreworICAgIEJMUkNvbnRleHQgKnMgPSBjdHgtPnBy aXY7CisKKyAgICBzLT5sb3dfdTggID0gcy0+bG93ICAqIDI1NS4gKyAuNTsKKyAgICBzLT5o aWdoX3U4ID0gcy0+aGlnaCAqIDI1NS4gKyAuNTsKKworICAgIHJldHVybiAwOworfQorCitz dGF0aWMgaW50IGJsdXJkZXRlY3RfY29uZmlnX2lucHV0KEFWRmlsdGVyTGluayAqaW5saW5r KQoreworICAgIEFWRmlsdGVyQ29udGV4dCAqY3R4ID0gaW5saW5rLT5kc3Q7CisgICAgQkxS Q29udGV4dCAgICAgICpzICAgPSBjdHgtPnByaXY7CisgICAgY29uc3QgaW50IGJ1ZnNpemUg ICAgPSBpbmxpbmstPncgKiBpbmxpbmstPmg7CisgICAgY29uc3QgQVZQaXhGbXREZXNjcmlw dG9yICpwaXhfZGVzYzsKKworICAgIHBpeF9kZXNjID0gYXZfcGl4X2ZtdF9kZXNjX2dldChp bmxpbmstPmZvcm1hdCk7CisgICAgcy0+aHN1YiA9IHBpeF9kZXNjLT5sb2cyX2Nocm9tYV93 OworICAgIHMtPnZzdWIgPSBwaXhfZGVzYy0+bG9nMl9jaHJvbWFfaDsKKyAgICBzLT5uYl9w bGFuZXMgPSBhdl9waXhfZm10X2NvdW50X3BsYW5lcyhpbmxpbmstPmZvcm1hdCk7CisKKyAg ICBpZiAocy0+YmxvY2tfd2lkdGggIDwgMSB8fCBzLT5ibG9ja19oZWlnaHQgPCAxKSB7Cisg ICAgICAgIHMtPmJsb2NrX3dpZHRoICA9IGlubGluay0+dzsKKyAgICAgICAgcy0+YmxvY2tf aGVpZ2h0ID0gaW5saW5rLT5oOworICAgIH0KKworICAgIHMtPnRtcGJ1ZiAgICAgPSBhdl9t YWxsb2MoYnVmc2l6ZSk7CisgICAgcy0+ZmlsdGVyYnVmICA9IGF2X21hbGxvYyhidWZzaXpl KTsKKyAgICBzLT5ncmFkaWVudHMgID0gYXZfY2FsbG9jKGJ1ZnNpemUsIHNpemVvZigqcy0+ Z3JhZGllbnRzKSk7CisgICAgcy0+ZGlyZWN0aW9ucyA9IGF2X21hbGxvYyhidWZzaXplKTsK KyAgICBzLT5ibGtzICAgICAgID0gYXZfY2FsbG9jKChpbmxpbmstPncgLyBzLT5ibG9ja193 aWR0aCkgKiAoaW5saW5rLT5oIC8gcy0+YmxvY2tfaGVpZ2h0KSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVvZigqcy0+YmxrcykpOworCisgICAgaWYgKCFzLT50bXBi dWYgfHwgIXMtPmZpbHRlcmJ1ZiB8fCAhcy0+Z3JhZGllbnRzIHx8ICFzLT5kaXJlY3Rpb25z IHx8ICFzLT5ibGtzKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAg cmV0dXJuIDA7Cit9CisKKy8vIGVkZ2Ugd2lkdGggaXMgZGVmaW5lZCBhcyB0aGUgZGlzdGFu Y2UgYmV0d2VlbiBzdXJyb3VuZGluZyBtYXhpbWEgb2YgdGhlIGVkZ2UgcGl4ZWwKK3N0YXRp YyBmbG9hdCBlZGdlX3dpZHRoKEJMUkNvbnRleHQgKmJsciwgaW50IGksIGludCBqLCBpbnQ4 X3QgZGlyLCBpbnQgdywgaW50IGgsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZWRn ZSwgY29uc3QgdWludDhfdCAqc3JjLCBpbnQgc3JjX2xpbmVzaXplKQoreworICAgIGZsb2F0 IHdpZHRoID0gMDsKKyAgICBpbnQgZFgsIGRZOworICAgIGludCBzaWduOworICAgIGludCB0 bXA7CisgICAgaW50IHAxOworICAgIGludCBwMjsKKyAgICBpbnQgaywgeCwgeTsKKyAgICBp bnQgZWRnZTE7CisgICAgaW50IGVkZ2UyOworICAgIGZsb2F0IGx1bWExID0gMC4wOyAvLyBh dmVyYWdlIGx1bWEgZGlmZmVyZW5jZSBwZXIgZWRnZSBwaXhlbAorICAgIGZsb2F0IGx1bWEy ID0gMC4wOworICAgIGludCByYWRpdXMgPSBibHItPnJhZGl1czsKKworICAgIHN3aXRjaChk aXIpIHsKKyAgICBjYXNlIERJUkVDVElPTl9IT1JJWk9OVEFMOiBkWCA9IDE7IGRZID0gIDA7 IGJyZWFrOworICAgIGNhc2UgRElSRUNUSU9OX1ZFUlRJQ0FMOiAgIGRYID0gMDsgZFkgPSAg MTsgYnJlYWs7CisgICAgY2FzZSBESVJFQ1RJT05fNDVVUDogICAgICAgZFggPSAxOyBkWSA9 IC0xOyBicmVhazsKKyAgICBjYXNlIERJUkVDVElPTl80NURPV046ICAgICBkWCA9IDE7IGRZ ID0gIDE7IGJyZWFrOworICAgIH0KKyAgICBpZiAoZGlyID09IERJUkVDVElPTl9IT1JJWk9O VEFMKSByZXR1cm4gMDsKKworICAgIC8vIGRldGVybWluZXMgaWYgc2VhcmNoIGluIGRpcmVj dGlvbiBkWC9kWSBpcyBsb29raW5nIGZvciBhIG1heGltdW0gb3IgbWluaW11bQorICAgIHNp Z24gPSBzcmNbaiAqIHNyY19saW5lc2l6ZSArIGldID4gc3JjWyhqIC0gZFkpICogc3JjX2xp bmVzaXplICsgaSAtIGRYXSA/IDEgOiAtMTsKKworICAgIC8vIHNlYXJjaCBpbiAtKGRYL2RZ KSBkaXJlY3Rpb24KKyAgICBmb3IgKGsgPSAwOyBrIDwgcmFkaXVzOyBrKyspIHsKKyAgICAg ICAgeCA9IGkgLSBrKmRYOworICAgICAgICB5ID0gaiAtIGsqZFk7CisgICAgICAgIHAxID0g eSAqIHNyY19saW5lc2l6ZSArIHg7CisgICAgICAgIHggLT0gZFg7CisgICAgICAgIHkgLT0g ZFk7CisgICAgICAgIHAyID0geSAqIHNyY19saW5lc2l6ZSArIHg7CisgICAgICAgIGlmICh4 IDwgMCB8fCB4ID49IHcgfHwgeSA8IDAgfHwgeSA+PSBoKQorICAgICAgICAgICAgcmV0dXJu IDA7CisKKyAgICAgICAgdG1wID0gKHNyY1twMV0gLSBzcmNbcDJdKSAqIHNpZ247CisKKyAg ICAgICAgaWYgKHRtcCA8PSAwKSAvLyBsb2NhbCBtYXhpbXVtIGZvdW5kCisgICAgICAgICAg ICBicmVhazsKKworICAgICAgICBsdW1hMSArPSB0bXA7CisgICAgfQorICAgIGlmIChrID4g MCkgbHVtYTEgLz0gazsKKyAgICBlZGdlMSA9IGs7CisgICAgd2lkdGggKz0gazsKKworICAg IC8vIHNlYXJjaCBpbiArKGRYL2RZKSBkaXJlY3Rpb24KKyAgICBmb3IgKGsgPSAwOyBrIDwg cmFkaXVzOyBrKyspIHsKKyAgICAgICAgeCA9IGkgKyBrICogZFg7CisgICAgICAgIHkgPSBq ICsgayAqIGRZOworICAgICAgICBwMSA9IHkgKiBzcmNfbGluZXNpemUgKyB4OworICAgICAg ICB4ICs9IGRYOworICAgICAgICB5ICs9IGRZOworICAgICAgICBwMiA9IHkgKiBzcmNfbGlu ZXNpemUgKyB4OworICAgICAgICBpZiAoeCA8IDAgfHwgeCA+PSB3IHx8IHkgPCAwIHx8IHkg Pj0gaCkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIHRtcCA9IChzcmNbcDFd IC0gc3JjW3AyXSkgKiBzaWduOworCisgICAgICAgIGlmICh0bXAgPj0gMCkgLy8gbG9jYWwg bWF4aW11bSBmb3VuZAorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgbHVtYTIgLT0g dG1wOworICAgIH0KKyAgICBpZiAoayA+IDApIGx1bWEyIC89IGs7CisgICAgZWRnZTIgPSBr OworICAgIHdpZHRoICs9IGs7CisKKyAgICAvLyBmb3IgNDUgZGVncmVlIGRpcmVjdGlvbnMg YXBwcm94aW1hdGUgZWRnZSB3aWR0aCBpbiBwaXhlbCB1bml0czogMC43IH49IHNxcnQoMikv MgorICAgIGlmIChkaXIgPT0gRElSRUNUSU9OXzQ1VVAgfHwgZGlyID09IERJUkVDVElPTl80 NURPV04pCisgICAgICAgIHdpZHRoICo9IDAuNzsKKworICAgIHJldHVybiB3aWR0aDsKK30K Kworc3RhdGljIGZsb2F0IGNhbGN1bGF0ZV9ibHVyKEJMUkNvbnRleHQgKnMsIGludCB3LCBp bnQgaCwgaW50IGhzdWIsIGludCB2c3ViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQ4X3QqIGRpciwgaW50IGRpcl9saW5lc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50OF90KiBkc3QsIGludCBkc3RfbGluZXNpemUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDhfdCogc3JjLCBpbnQgc3JjX2xpbmVzaXplKQoreworICAg IGZsb2F0IHRvdGFsX3dpZHRoID0gMC4wOworICAgIGludCBibG9ja19jb3VudDsKKyAgICBk b3VibGUgYmxvY2tfdG90YWxfd2lkdGg7CisKKyAgICBpbnQgaSwgajsKKyAgICBpbnQgYmxr Y250ID0gMDsKKworICAgIGZsb2F0ICpibGtzID0gcy0+YmxrczsKKyAgICBmbG9hdCBibG9j a19wb29sX3RocmVzaG9sZCA9IHMtPmJsb2NrX3BjdCAvIDEwMC4wOworCisgICAgaW50IGJs b2NrX3dpZHRoICA9IEFWX0NFSUxfUlNISUZUKHMtPmJsb2NrX3dpZHRoLCAgaHN1Yik7Cisg ICAgaW50IGJsb2NrX2hlaWdodCA9IEFWX0NFSUxfUlNISUZUKHMtPmJsb2NrX2hlaWdodCwg dnN1Yik7CisgICAgaW50IGJyb3dzID0gaCAvIGJsb2NrX2hlaWdodDsKKyAgICBpbnQgYmNv bHMgPSB3IC8gYmxvY2tfd2lkdGg7CisKKyAgICBmb3IgKGludCBibGtqID0gMDsgYmxraiA8 IGJyb3dzOyBibGtqKyspIHsKKyAgICAgICAgZm9yIChpbnQgYmxraSA9IDA7IGJsa2kgPCBi Y29sczsgYmxraSsrKSB7CisgICAgICAgICAgICBibG9ja190b3RhbF93aWR0aCA9IDAuMDsK KyAgICAgICAgICAgIGJsb2NrX2NvdW50ID0gMDsKKyAgICAgICAgICAgIGZvciAoaW50IGlu aiA9IDA7IGluaiA8IGJsb2NrX2hlaWdodDsgaW5qKyspIHsKKyAgICAgICAgICAgICAgICBm b3IgKGludCBpbmkgPSAwOyBpbmkgPCBibG9ja193aWR0aDsgaW5pKyspIHsKKyAgICAgICAg ICAgICAgICAgICAgaSA9IGJsa2kgKiBibG9ja193aWR0aCArIGluaTsKKyAgICAgICAgICAg ICAgICAgICAgaiA9IGJsa2ogKiBibG9ja19oZWlnaHQgKyBpbmo7CisKKyAgICAgICAgICAg ICAgICAgICAgaWYgKGRzdFtqICogZHN0X2xpbmVzaXplICsgaV0gPiAwKSB7CisgICAgICAg ICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCA9IGVkZ2Vfd2lkdGgocywgaSwgaiwgZGly W2oqZGlyX2xpbmVzaXplK2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHcsIGgsIGRzdFtqKmRzdF9saW5lc2l6ZStpXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMsIHNyY19saW5l c2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiAwLjAwMSkgeyAv LyB0aHJvdyBhd2F5IHplcm9zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tf Y291bnQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja190b3RhbF93aWR0 aCArPSB3aWR0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg IC8vIGlmIG5vdCBlbm91Z2ggZWRnZSBwaXhlbHMgaW4gYSBibG9jaywgY29uc2lkZXIgaXQg c21vb3RoCisgICAgICAgICAgICBpZiAoYmxvY2tfdG90YWxfd2lkdGggPj0gMikgeworICAg ICAgICAgICAgICAgIGJsa3NbYmxrY250XSA9IGJsb2NrX3RvdGFsX3dpZHRoIC8gYmxvY2tf Y291bnQ7CisgICAgICAgICAgICAgICAgYmxrY250Kys7CisgICAgICAgICAgICB9CisgICAg ICAgIH0KKyAgICB9CisKKyAgICAvLyBzaW1wbGUgYmxvY2sgcG9vbGluZyBieSBzb3J0aW5n IGFuZCBrZWVwaW5nIHRoZSBzaGFycGVyIGJsb2NrcworICAgIEFWX1FTT1JUKGJsa3MsIGJs a2NudCwgZmxvYXQsIGNvbXApOworICAgIGJsa2NudCA9IGNlaWwoYmxrY250ICogYmxvY2tf cG9vbF90aHJlc2hvbGQpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYmxrY250OyBpKysp IHsKKyAgICAgICAgdG90YWxfd2lkdGggKz0gYmxrc1tpXTsKKyAgICB9CisKKyAgICByZXR1 cm4gIHRvdGFsX3dpZHRoIC8gYmxrY250OworfQorCitzdGF0aWMgdm9pZCBzZXRfbWV0YShB VkRpY3Rpb25hcnkgKiptZXRhZGF0YSwgY29uc3QgY2hhciAqa2V5LCBmbG9hdCBkKQorewor ICAgIGNoYXIgdmFsdWVbMTI4XTsKKyAgICBzbnByaW50Zih2YWx1ZSwgc2l6ZW9mKHZhbHVl KSwgIiVmIiwgZCk7CisgICAgYXZfZGljdF9zZXQobWV0YWRhdGEsIGtleSwgdmFsdWUsIDAp OworfQorCitzdGF0aWMgaW50IGJsdXJkZXRlY3RfZmlsdGVyX2ZyYW1lKEFWRmlsdGVyTGlu ayAqaW5saW5rLCBBVkZyYW1lICppbikKK3sKKyAgICBBVkZpbHRlckNvbnRleHQgKmN0eCAg PSBpbmxpbmstPmRzdDsKKyAgICBCTFJDb250ZXh0ICpzICAgICAgICAgPSBjdHgtPnByaXY7 CisgICAgQVZGaWx0ZXJMaW5rICpvdXRsaW5rID0gY3R4LT5vdXRwdXRzWzBdOworCisgICAg Y29uc3QgaW50IGludyA9IGlubGluay0+dzsKKyAgICBjb25zdCBpbnQgaW5oID0gaW5saW5r LT5oOworCisgICAgdWludDhfdCAqdG1wYnVmICAgICA9IHMtPnRtcGJ1ZjsKKyAgICB1aW50 OF90ICpmaWx0ZXJidWYgID0gcy0+ZmlsdGVyYnVmOworICAgIHVpbnQxNl90ICpncmFkaWVu dHMgPSBzLT5ncmFkaWVudHM7CisgICAgaW50OF90ICpkaXJlY3Rpb25zICA9IHMtPmRpcmVj dGlvbnM7CisKKyAgICBmbG9hdCBibHVyID0gMC4wZjsKKyAgICBpbnQgbnBsYW5lcyA9IDA7 CisgICAgQVZEaWN0aW9uYXJ5ICoqbWV0YWRhdGE7CisgICAgbWV0YWRhdGEgPSAmaW4tPm1l dGFkYXRhOworCisgICAgZm9yIChpbnQgcGxhbmUgPSAwOyBwbGFuZSA8IHMtPm5iX3BsYW5l czsgcGxhbmUrKykgeworICAgICAgICBpbnQgaHN1YiA9IHBsYW5lID09IDEgfHwgcGxhbmUg PT0gMiA/IHMtPmhzdWIgOiAwOworICAgICAgICBpbnQgdnN1YiA9IHBsYW5lID09IDEgfHwg cGxhbmUgPT0gMiA/IHMtPnZzdWIgOiAwOworICAgICAgICBpbnQgdyA9IEFWX0NFSUxfUlNI SUZUKGludywgaHN1Yik7CisgICAgICAgIGludCBoID0gQVZfQ0VJTF9SU0hJRlQoaW5oLCB2 c3ViKTsKKworICAgICAgICBpZiAoISgoMSA8PCBwbGFuZSkgJiBzLT5wbGFuZXMpKQorICAg ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbnBsYW5lcysrOworCisgICAgICAgIC8v IGdhdXNzaWFuIGZpbHRlciB0byByZWR1Y2Ugbm9pc2UKKyAgICAgICAgZmZfZ2F1c3NpYW5f Ymx1cih3LCBoLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmJ1ZiwgIHcsCisg ICAgICAgICAgICAgICAgICAgICAgICAgaW4tPmRhdGFbcGxhbmVdLCBpbi0+bGluZXNpemVb cGxhbmVdKTsKKworICAgICAgICAvLyBjb21wdXRlIHRoZSAxNi1iaXRzIGdyYWRpZW50cyBh bmQgZGlyZWN0aW9ucyBmb3IgdGhlIG5leHQgc3RlcAorICAgICAgICBmZl9zb2JlbCh3LCBo LCBncmFkaWVudHMsIHcsIGRpcmVjdGlvbnMsIHcsIGZpbHRlcmJ1Ziwgdyk7CisKKyAgICAg ICAgLy8gbm9uX21heGltdW1fc3VwcHJlc3Npb24oKSB3aWxsIGFjdHVhbGx5IGtlZXAgJiBj bGlwIHdoYXQncyBuZWNlc3NhcnkgYW5kCisgICAgICAgIC8vIGlnbm9yZSB0aGUgcmVzdCwg c28gd2UgbmVlZCBhIGNsZWFuIG91dHB1dCBidWZmZXIKKyAgICAgICAgbWVtc2V0KHRtcGJ1 ZiwgMCwgaW53ICogaW5oKTsKKyAgICAgICAgZmZfbm9uX21heGltdW1fc3VwcHJlc3Npb24o dywgaCwgdG1wYnVmLCB3LCBkaXJlY3Rpb25zLCB3LCBncmFkaWVudHMsIHcpOworCisKKyAg ICAgICAgLy8ga2VlcCBoaWdoIHZhbHVlcywgb3IgbG93IHZhbHVlcyBzdXJyb3VuZGVkIGJ5 IGhpZ2ggdmFsdWVzCisgICAgICAgIGZmX2RvdWJsZV90aHJlc2hvbGQocy0+bG93X3U4LCBz LT5oaWdoX3U4LCB3LCBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcGJ1Ziwg dywgdG1wYnVmLCB3KTsKKworICAgICAgICBibHVyICs9IGNhbGN1bGF0ZV9ibHVyKHMsIHcs IGgsIGhzdWIsIHZzdWIsIGRpcmVjdGlvbnMsIHcsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0bXBidWYsIHcsIGZpbHRlcmJ1Ziwgdyk7CisgICAgfQorCisgICAgaWYgKG5w bGFuZXMpCisgICAgICAgIGJsdXIgLz0gbnBsYW5lczsKKworICAgIHMtPmJsdXJfdG90YWwg Kz0gYmx1cjsKKworICAgIC8vIHdyaXRlIHN0YXRzCisgICAgYXZfbG9nKGN0eCwgQVZfTE9H X1ZFUkJPU0UsICJibHVyOiAlLjdmXG4iLCBibHVyKTsKKworICAgIHNldF9tZXRhKG1ldGFk YXRhLCAibGF2ZmkuYmx1ciIsIGJsdXIpOworCisgICAgcy0+bmJfZnJhbWVzID0gaW5saW5r LT5mcmFtZV9jb3VudF9pbjsKKworICAgIHJldHVybiBmZl9maWx0ZXJfZnJhbWUob3V0bGlu aywgaW4pOworfQorCitzdGF0aWMgYXZfY29sZCB2b2lkIGJsdXJkZXRlY3RfdW5pbml0KEFW RmlsdGVyQ29udGV4dCAqY3R4KQoreworICAgIEJMUkNvbnRleHQgKnMgPSBjdHgtPnByaXY7 CisKKyAgICBpZiAocy0+bmJfZnJhbWVzID4gMCkgeworICAgICAgICBhdl9sb2coY3R4LCBB Vl9MT0dfSU5GTywgImJsdXIgbWVhbjogJS43ZlxuIiwKKyAgICAgICAgICAgICAgIHMtPmJs dXJfdG90YWwgLyBzLT5uYl9mcmFtZXMpOworICAgIH0KKworICAgIGF2X2ZyZWVwKCZzLT50 bXBidWYpOworICAgIGF2X2ZyZWVwKCZzLT5maWx0ZXJidWYpOworICAgIGF2X2ZyZWVwKCZz LT5ncmFkaWVudHMpOworICAgIGF2X2ZyZWVwKCZzLT5kaXJlY3Rpb25zKTsKKyAgICBhdl9m cmVlcCgmcy0+Ymxrcyk7Cit9CisKK3N0YXRpYyBjb25zdCBlbnVtIEFWUGl4ZWxGb3JtYXQg cGl4X2ZtdHNbXSA9IHsKKyAgICBBVl9QSVhfRk1UX0dSQVk4LAorICAgIEFWX1BJWF9GTVRf R0JSUCwgICAgIEFWX1BJWF9GTVRfR0JSQVAsCisgICAgQVZfUElYX0ZNVF9ZVVY0MjJQLCAg QVZfUElYX0ZNVF9ZVVY0MjBQLAorICAgIEFWX1BJWF9GTVRfWVVWNDQ0UCwgIEFWX1BJWF9G TVRfWVVWNDQwUCwKKyAgICBBVl9QSVhfRk1UX1lVVjQxMVAsICBBVl9QSVhfRk1UX1lVVjQx MFAsCisgICAgQVZfUElYX0ZNVF9ZVVZKNDQwUCwgQVZfUElYX0ZNVF9ZVVZKNDExUCwgQVZf UElYX0ZNVF9ZVVZKNDIwUCwKKyAgICBBVl9QSVhfRk1UX1lVVko0MjJQLCBBVl9QSVhfRk1U X1lVVko0NDRQLAorICAgIEFWX1BJWF9GTVRfWVVWQTQ0NFAsIEFWX1BJWF9GTVRfWVVWQTQy MlAsIEFWX1BJWF9GTVRfWVVWQTQyMFAsCisgICAgQVZfUElYX0ZNVF9OT05FIH07CisKK3N0 YXRpYyBjb25zdCBBVkZpbHRlclBhZCBibHVyZGV0ZWN0X2lucHV0c1tdID0geworICAgIHsK KyAgICAgICAgLm5hbWUgICAgICAgICA9ICJkZWZhdWx0IiwKKyAgICAgICAgLnR5cGUgICAg ICAgICA9IEFWTUVESUFfVFlQRV9WSURFTywKKyAgICAgICAgLmNvbmZpZ19wcm9wcyA9IGJs dXJkZXRlY3RfY29uZmlnX2lucHV0LAorICAgICAgICAuZmlsdGVyX2ZyYW1lID0gYmx1cmRl dGVjdF9maWx0ZXJfZnJhbWUsCisgICAgfSwKK307CisKK3N0YXRpYyBjb25zdCBBVkZpbHRl clBhZCBibHVyZGV0ZWN0X291dHB1dHNbXSA9IHsKKyAgICB7CisgICAgICAgIC5uYW1lID0g ImRlZmF1bHQiLAorICAgICAgICAudHlwZSA9IEFWTUVESUFfVFlQRV9WSURFTywKKyAgICB9 LAorfTsKKworY29uc3QgQVZGaWx0ZXIgZmZfdmZfYmx1cmRldGVjdCA9IHsKKyAgICAubmFt ZSAgICAgICAgICA9ICJibHVyZGV0ZWN0IiwKKyAgICAuZGVzY3JpcHRpb24gICA9IE5VTExf SUZfQ09ORklHX1NNQUxMKCJCbHVyZGV0ZWN0IGZpbHRlci4iKSwKKyAgICAucHJpdl9zaXpl ICAgICA9IHNpemVvZihCTFJDb250ZXh0KSwKKyAgICAuaW5pdCAgICAgICAgICA9IGJsdXJk ZXRlY3RfaW5pdCwKKyAgICAudW5pbml0ICAgICAgICA9IGJsdXJkZXRlY3RfdW5pbml0LAor ICAgIEZJTFRFUl9QSVhGTVRTX0FSUkFZKHBpeF9mbXRzKSwKKyAgICBGSUxURVJfSU5QVVRT KGJsdXJkZXRlY3RfaW5wdXRzKSwKKyAgICBGSUxURVJfT1VUUFVUUyhibHVyZGV0ZWN0X291 dHB1dHMpLAorICAgIC5wcml2X2NsYXNzICAgID0gJmJsdXJkZXRlY3RfY2xhc3MsCisgICAg LmZsYWdzICAgICAgICAgPSBBVkZJTFRFUl9GTEFHX01FVEFEQVRBX09OTFksCit9OworCi0t IAoyLjIwLjEgKEFwcGxlIEdpdC0xMTcpCgo= --------------nFqx4TPxaOQ8mzd6vE0Ac8U3 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". --------------nFqx4TPxaOQ8mzd6vE0Ac8U3--