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 1A22942678 for ; Tue, 22 Mar 2022 08:36:23 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3707968B06F; Tue, 22 Mar 2022 10:36:20 +0200 (EET) Received: from shout02.mail.de (shout02.mail.de [62.201.172.25]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ED70668A43D for ; Tue, 22 Mar 2022 10:36:13 +0200 (EET) Received: from postfix01.mail.de (postfix01.bt.mail.de [10.0.121.125]) by shout02.mail.de (Postfix) with ESMTP id 5A800A0D19 for ; Tue, 22 Mar 2022 09:36:13 +0100 (CET) Received: from smtp02.mail.de (smtp02.bt.mail.de [10.0.121.212]) by postfix01.mail.de (Postfix) with ESMTP id 40DD680158 for ; Tue, 22 Mar 2022 09:36:13 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mail.de; s=mailde202009; t=1647938173; bh=skYC7BgiDL4ZQZAAcGLn3xBROLzbcxdReWGVnaK2Jpc=; h=Message-ID:Date:Subject:To:From:From:To:CC:Subject:Reply-To; b=u/7cTJPdDfVXqrFMklXGM9wVqAuRlPtV53zk1pTOWEecCBsHKrKQMIQBPAC9VOWKE Emv8xVFsH4YB7ON+4iS4uZrCpsEThtoW2YnLgT0s75xX/nO63Dz/g5HV8ZutjgSbr6 AtVq2Y9RbkXDQDmML5OR00XuQ8c8taA9qYWku6rYjUIrktsFbkUpSTIKjWcY/WEll8 tjUSzxU0ZzDWIUrmvFIDXU86wom9FAWvM8BeFZXiS3j7L92SfMTMTcKcJr88S/o5qg 1ZRhCX6M1KLrlFbcwESksy39h7NW7VrIIkNFhHmVF45aesYtTRe0PtE552Hfns+qTB v9kcAsp7AnWmQ== 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 04AB9A0488 for ; Tue, 22 Mar 2022 09:36:12 +0100 (CET) Content-Type: multipart/mixed; boundary="------------OgfamtrUWCIVgrmCYCUtCqBG" Message-ID: Date: Tue, 22 Mar 2022 09:36:11 +0100 MIME-Version: 1.0 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20210115045832.76405-1-borbarak@fb.com> <164363001951.23111.4989616914372511566@lain.red.khirnov.net> <14fa7592-4acc-2186-335b-56ea500f9663@mail.de> <2621fec9-555f-c977-b378-dbfd7a6d115e@mail.de> <18f95a99-7efd-1d0c-a824-468ef9b83caa@mail.de> <00b63948-b610-bd38-81fb-95c85235e2f3@mail.de> From: Thilo Borgmann In-Reply-To: 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: 28934 X-purgate-ID: 154282::1647938173-0000737C-7659AAE0/0/0 Subject: Re: [FFmpeg-devel] [PATCH] avfilter: Added siti 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. --------------OgfamtrUWCIVgrmCYCUtCqBG Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Am 18.03.22 um 15:04 schrieb Paul B Mahol: > On 3/18/22, Thilo Borgmann wrote: >> >> >> On 12 Mar 2022, at 10:06, Thilo Borgmann wrote: >> >>> Am 09.03.22 um 18:31 schrieb Paul B Mahol: >>>> On 3/8/22, Thilo Borgmann wrote: >>>>> Am 07.03.22 um 20:06 schrieb Paul B Mahol: >>>>>> On 3/7/22, Thilo Borgmann wrote: >>>>>>> Am 06.03.22 um 22:25 schrieb Paul B Mahol: >>>>>>>> On 3/6/22, Thilo Borgmann wrote: >>>>>>>>> Am 22.02.22 um 12:30 schrieb Thilo Borgmann: >>>>>>>>>> Am 18.02.22 um 17:08 schrieb Paul B Mahol: >>>>>>>>>>> On Sat, Feb 12, 2022 at 11:55 AM Thilo Borgmann >>>>>>>>>>> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>>> Am 31.01.22 um 12:55 schrieb James Almer: >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On 1/31/2022 8:53 AM, Anton Khirnov wrote: >>>>>>>>>>>>>> Quoting Thilo Borgmann (2022-01-18 14:58:07) >>>>>>>>>>>>>>>>> Violations of code style. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Enhanced. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Not enough. There are still many remaining, e.g. >>>>>>>>>>>>>> * opening brace of a function definition should be on its own >>>>>>>>>>>>>> line >>>>>>>>>>>>>> * the context should generally be the first argument >>>>>>>>>>>>>> * unsigned char* should be uint8_t* >>>>>>>>>>>>>> * mixed declarations and code (the compiler should warn about >>>>>>>>>>>>>> that) >>>>>>>>>>>>> >>>>>>>>>>>>> I think someone said that clang (or some versions) is >>>>>>>>>>>>> apparently >>>>>>>>>>>>> not >>>>>>>>>>>> warning about this, hence why so many of these end up being >>>>>>>>>>>> missed >>>>>>>>>>>> in >>>>>>>>>>>> reviews or even by the patch author. >>>>>>>>>>>> >>>>>>>>>>>> This and all of Anton's comments in v3. Also removed some more >>>>>>>>>>>> obviously >>>>>>>>>>>> useless doubles. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Why it uses doubles in so many places? >>>>>>>>>>> Is there any real benefit in that, except extra slowdown? >>>>>>>>>> >>>>>>>>>> I guess because it's originating in some c&p Matlab code. >>>>>>>>>> I did %s#double#float#g for v4, loosing some precision we can >>>>>>>>>> ignore >>>>>>>>>> IMHO. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> v3: >>>>>>>>>> >>>>>>>>>> Total frames: 2 >>>>>>>>>> >>>>>>>>>> Spatial Information: >>>>>>>>>> Average: 165.451985 >>>>>>>>>> Max: 165.817542 >>>>>>>>>> Min: 165.086427 >>>>>>>>>> >>>>>>>>>> Temporal Information: >>>>>>>>>> Average: 1.007263 >>>>>>>>>> Max: 2.014525 >>>>>>>>>> Min: 0.000000 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> v4: >>>>>>>>>> >>>>>>>>>> Total frames: 2 >>>>>>>>>> >>>>>>>>>> Spatial Information: >>>>>>>>>> Average: 164.385895 >>>>>>>>>> Max: 164.742325 >>>>>>>>>> Min: 164.029480 >>>>>>>>>> >>>>>>>>>> Temporal Information: >>>>>>>>>> Average: 1.007241 >>>>>>>>>> Max: 2.014483 >>>>>>>>>> Min: 0.000000 >>>>>>>>>> >>>>>>>>> >>>>>>>>> Ping. >>>>>>>> >>>>>>>> Into wrong section of changelog added entry. >>>>>>>> >>>>>>>> Useless cast of allocation results. >>>>>>>> >>>>>>>> Does filter changes pixels? If not, add metadata flag to appropriate >>>>>>>> place. >>>>>>> >>>>>>> All addressed in v5, thx! >>>>>>> >>>>>> >>>>>> Changelog entry is still in wrong, 5.0, section. >>>>> >>>>> Fixed in v6. >>>>> >>>>>>> Also added a FATE test for it. >>>>> >>>>> >>>> >>>> Could use fminf/ float functions instead of double variants. >>> >>> v7. >> >> Going to push soon if there are no more comments. > > Check that returned values are correct for bigger w/h, and that not > values reach too high values for floats > which may cause loss of precision in best case, eg. maybe you need to > normalize pixel values from 0-255 to 0.f-1.f so mean/stddev does not > get bad results. Did the accumulators as doubles then, good? Also found another missing fmaxf(). V8 attached. Thanks, Thilo --------------OgfamtrUWCIVgrmCYCUtCqBG Content-Type: text/plain; charset=UTF-8; name="v8-0001-lavfilter-Add-SITI-filter.patch" Content-Disposition: attachment; filename="v8-0001-lavfilter-Add-SITI-filter.patch" Content-Transfer-Encoding: base64 RnJvbSA4ZDVhNGUwZTM4ZDQ2MDQxY2M1ODdiYzhiYWRiNDRhYzhkNzA5MGM2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBCYXJhY2FsZG8gPGJvcmJhcmFrQGZiLmNv bT4KRGF0ZTogVHVlLCAyMiBNYXIgMjAyMiAwOTozNDowMiArMDEwMApTdWJqZWN0OiBbUEFU Q0ggdjhdIGxhdmZpbHRlcjogQWRkIFNJVEkgZmlsdGVyCgpDYWxjdWxhdGUgU3BhdGlhbCBJ bmZvIChTSSkgYW5kIFRlbXBvcmFsIEluZm8gKFRJKSBzY29yZXMgZm9yIGEgdmlkZW8sIGFz IGRlZmluZWQKaW4gSVRVLVQgUC45MTA6IFN1YmplY3RpdmUgdmlkZW8gcXVhbGl0eSBhc3Nl c3NtZW50IG1ldGhvZHMgZm9yIG11bHRpbWVkaWEKYXBwbGljYXRpb25zLgotLS0KIENoYW5n ZWxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZG9jL2ZpbHRlcnMu dGV4aSAgICAgICAgICAgICAgICAgICAgICB8ICAyMyArKwogbGliYXZmaWx0ZXIvTWFrZWZp bGUgICAgICAgICAgICAgICAgICB8ICAgMSArCiBsaWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMg ICAgICAgICAgICAgIHwgICAxICsKIGxpYmF2ZmlsdGVyL3ZlcnNpb24uaCAgICAgICAgICAg ICAgICAgfCAgIDIgKy0KIGxpYmF2ZmlsdGVyL3ZmX3NpdGkuYyAgICAgICAgICAgICAgICAg fCAzNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3RzL2ZhdGUtcnVuLnNoICAg ICAgICAgICAgICAgICAgICAgfCAgIDkgKwogdGVzdHMvZmF0ZS9maWx0ZXItdmlkZW8ubWFr ICAgICAgICAgICB8ICAgMyArCiB0ZXN0cy9yZWYvZmF0ZS9maWx0ZXItcmVmY21wLXNpdGkt eXV2IHwgIDE1ICsrCiA5IGZpbGVzIGNoYW5nZWQsIDQwMyBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0ZXIvdmZfc2l0aS5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvcmVmL2ZhdGUvZmlsdGVyLXJlZmNtcC1zaXRpLXl1 dgoKZGlmZiAtLWdpdCBhL0NoYW5nZWxvZyBiL0NoYW5nZWxvZwppbmRleCAzYWY4YWEwMzJi Li4yMDBiZDgyNjgwIDEwMDY0NAotLS0gYS9DaGFuZ2Vsb2cKKysrIGIvQ2hhbmdlbG9nCkBA IC01LDYgKzUsNyBAQCB2ZXJzaW9uIDUuMToKIC0gZGlhbG9ndWUgZW5oYW5jZSBhdWRpbyBm aWx0ZXIKIC0gZHJvcHBlZCBvYnNvbGV0ZSBYdk1DIGh3YWNjZWwKIC0gcGNtLWJsdXJheSBl bmNvZGVyCistIFNJVEkgZmlsdGVyCiAKIAogdmVyc2lvbiA1LjA6CmRpZmYgLS1naXQgYS9k b2MvZmlsdGVycy50ZXhpIGIvZG9jL2ZpbHRlcnMudGV4aQppbmRleCAyNmM1YjRkYjQ4Li45 ZjUwZmQ4OTlmIDEwMDY0NAotLS0gYS9kb2MvZmlsdGVycy50ZXhpCisrKyBiL2RvYy9maWx0 ZXJzLnRleGkKQEAgLTE5OTQ0LDYgKzE5OTQ0LDI5IEBAIGZmbXBlZyAtaSBpbnB1dDEubWt2 IC1pIGlucHV0Mi5ta3YgLWZpbHRlcl9jb21wbGV4ICJbMDp2XVsxOnZdIHNpZ25hdHVyZT1u Yl9pbnB1CiAKIEBlbmQgaXRlbWl6ZQogCitAYW5jaG9ye3NpdGl9CitAc2VjdGlvbiBzaXRp CisKK0NhbGN1bGF0ZSBTcGF0aWFsIEluZm8gKFNJKSBhbmQgVGVtcG9yYWwgSW5mbyAoVEkp IHNjb3JlcyBmb3IgYSB2aWRlbywgYXMgZGVmaW5lZAoraW4gSVRVLVQgUC45MTA6IFN1Ympl Y3RpdmUgdmlkZW8gcXVhbGl0eSBhc3Nlc3NtZW50IG1ldGhvZHMgZm9yIG11bHRpbWVkaWEK K2FwcGxpY2F0aW9ucy4gQXZhaWxhYmxlIFBERiBhdCBAdXJse2h0dHBzOi8vd3d3Lml0dS5p bnQvcmVjL1QtUkVDLVAuOTEwLTE5OTkwOS1TL2VuIH0uCisKK0l0IGFjY2VwdHMgdGhlIGZv bGxvd2luZyBvcHRpb246CisKK0B0YWJsZSBAb3B0aW9uCitAaXRlbSBwcmludF9zdW1tYXJ5 CitJZiBzZXQgdG8gMSwgU3VtbWFyeSBzdGF0aXN0aWNzIHdpbGwgYmUgcHJpbnRlZCB0byB0 aGUgY29uc29sZS4gRGVmYXVsdCAwLgorQGVuZCB0YWJsZQorCitAc3Vic2VjdGlvbiBFeGFt cGxlcworQGl0ZW1pemUKK0BpdGVtCitUbyBjYWxjdWxhdGUgU0kvVEkgbWV0cmljcyBhbmQg cHJpbnQgc3VtbWFyeToKK0BleGFtcGxlCitmZm1wZWcgLWkgaW5wdXQubXA0IC12ZiBzaXRp PXByaW50X3N1bW1hcnk9MSAtZiBudWxsIC0KK0BlbmQgZXhhbXBsZQorQGVuZCBpdGVtaXpl CisKIEBhbmNob3J7c21hcnRibHVyfQogQHNlY3Rpb24gc21hcnRibHVyCiAKZGlmZiAtLWdp dCBhL2xpYmF2ZmlsdGVyL01ha2VmaWxlIGIvbGliYXZmaWx0ZXIvTWFrZWZpbGUKaW5kZXgg NTZkMzNlNjQ4MC4uNDM2NTM1OTdkOCAxMDA2NDQKLS0tIGEvbGliYXZmaWx0ZXIvTWFrZWZp bGUKKysrIGIvbGliYXZmaWx0ZXIvTWFrZWZpbGUKQEAgLTQ1Niw2ICs0NTYsNyBAQCBPQkpT LSQoQ09ORklHX1NNQVJUQkxVUl9GSUxURVIpICAgICAgICAgICAgICArPSB2Zl9zbWFydGJs dXIubwogT0JKUy0kKENPTkZJR19TT0JFTF9GSUxURVIpICAgICAgICAgICAgICAgICAgKz0g dmZfY29udm9sdXRpb24ubwogT0JKUy0kKENPTkZJR19TT0JFTF9PUEVOQ0xfRklMVEVSKSAg ICAgICAgICAgKz0gdmZfY29udm9sdXRpb25fb3BlbmNsLm8gb3BlbmNsLm8gXAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbmNsL2NvbnZv bHV0aW9uLm8KK09CSlMtJChDT05GSUdfU0lUSV9GSUxURVIpICAgICAgICAgICAgICAgICAg ICs9IHZmX3NpdGkubwogT0JKUy0kKENPTkZJR19TUExJVF9GSUxURVIpICAgICAgICAgICAg ICAgICAgKz0gc3BsaXQubwogT0JKUy0kKENPTkZJR19TUFBfRklMVEVSKSAgICAgICAgICAg ICAgICAgICAgKz0gdmZfc3BwLm8gcXBfdGFibGUubwogT0JKUy0kKENPTkZJR19TUl9GSUxU RVIpICAgICAgICAgICAgICAgICAgICAgKz0gdmZfc3IubwpkaWZmIC0tZ2l0IGEvbGliYXZm aWx0ZXIvYWxsZmlsdGVycy5jIGIvbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jCmluZGV4IGY1 Y2FlZTNhNjIuLjlmYmFhYWNmNDcgMTAwNjQ0Ci0tLSBhL2xpYmF2ZmlsdGVyL2FsbGZpbHRl cnMuYworKysgYi9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMKQEAgLTQzMiw2ICs0MzIsNyBA QCBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfc2h1ZmZsZXBsYW5lczsKIGV4dGVybiBj b25zdCBBVkZpbHRlciBmZl92Zl9zaWRlZGF0YTsKIGV4dGVybiBjb25zdCBBVkZpbHRlciBm Zl92Zl9zaWduYWxzdGF0czsKIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl9zaWduYXR1 cmU7CitleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfc2l0aTsKIGV4dGVybiBjb25zdCBB VkZpbHRlciBmZl92Zl9zbWFydGJsdXI7CiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZf c29iZWw7CiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfc29iZWxfb3BlbmNsOwpkaWZm IC0tZ2l0IGEvbGliYXZmaWx0ZXIvdmVyc2lvbi5oIGIvbGliYXZmaWx0ZXIvdmVyc2lvbi5o CmluZGV4IDlhODkwYzAxNGYuLjk1ZGQ2NGQ1YjUgMTAwNjQ0Ci0tLSBhL2xpYmF2ZmlsdGVy L3ZlcnNpb24uaAorKysgYi9saWJhdmZpbHRlci92ZXJzaW9uLmgKQEAgLTMwLDcgKzMwLDcg QEAKICNpbmNsdWRlICJsaWJhdnV0aWwvdmVyc2lvbi5oIgogCiAjZGVmaW5lIExJQkFWRklM VEVSX1ZFUlNJT05fTUFKT1IgICA4Ci0jZGVmaW5lIExJQkFWRklMVEVSX1ZFUlNJT05fTUlO T1IgIDI3CisjZGVmaW5lIExJQkFWRklMVEVSX1ZFUlNJT05fTUlOT1IgIDI4CiAjZGVmaW5l IExJQkFWRklMVEVSX1ZFUlNJT05fTUlDUk8gMTAwCiAKIApkaWZmIC0tZ2l0IGEvbGliYXZm aWx0ZXIvdmZfc2l0aS5jIGIvbGliYXZmaWx0ZXIvdmZfc2l0aS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmIwZDNkOTViZTIKLS0tIC9kZXYvbnVsbAorKysg Yi9saWJhdmZpbHRlci92Zl9zaXRpLmMKQEAgLTAsMCArMSwzNDkgQEAKKy8qCisgKiBDb3B5 cmlnaHQgKGMpIDIwMjEgQm9yaXMgQmFyYWNhbGRvCisgKiBDb3B5cmlnaHQgKGMpIDIwMjIg VGhpbG8gQm9yZ21hbm4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisg KgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICog KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisgKiB3aXRoIEZGbXBl ZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu LAorICogNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjEx MC0xMzAxIFVTQS4KKyAqLworCisvKioKKyAqIEBmaWxlCisgKiBDYWxjdWxhdGUgU3BhdGlh bCBJbmZvIChTSSkgYW5kIFRlbXBvcmFsIEluZm8gKFRJKSBzY29yZXMKKyAqLworCisjaW5j bHVkZSA8bWF0aC5oPgorCisjaW5jbHVkZSAibGliYXZ1dGlsL2ltZ3V0aWxzLmgiCisjaW5j bHVkZSAibGliYXZ1dGlsL2ludGVybmFsLmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL29wdC5o IgorCisjaW5jbHVkZSAiYXZmaWx0ZXIuaCIKKyNpbmNsdWRlICJmb3JtYXRzLmgiCisjaW5j bHVkZSAiaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ2aWRlby5oIgorCitzdGF0aWMgY29uc3Qg aW50IFhfRklMVEVSWzldID0geworICAgIDEsIDAsIC0xLAorICAgIDIsIDAsIC0yLAorICAg IDEsIDAsIC0xCit9OworCitzdGF0aWMgY29uc3QgaW50IFlfRklMVEVSWzldID0geworICAg IDEsIDIsIDEsCisgICAgMCwgMCwgMCwKKyAgICAtMSwgLTIsIC0xCit9OworCit0eXBlZGVm IHN0cnVjdCBTaVRpQ29udGV4dCB7CisgICAgY29uc3QgQVZDbGFzcyAqY2xhc3M7CisgICAg aW50IHBpeGVsX2RlcHRoOworICAgIGludCB3aWR0aCwgaGVpZ2h0OworICAgIHVpbnQ2NF90 IG5iX2ZyYW1lczsKKyAgICB1aW50OF90ICpwcmV2X2ZyYW1lOworICAgIGZsb2F0IG1heF9z aTsKKyAgICBmbG9hdCBtYXhfdGk7CisgICAgZmxvYXQgbWluX3NpOworICAgIGZsb2F0IG1p bl90aTsKKyAgICBmbG9hdCBzdW1fc2k7CisgICAgZmxvYXQgc3VtX3RpOworICAgIGZsb2F0 ICpncmFkaWVudF9tYXRyaXg7CisgICAgZmxvYXQgKm1vdGlvbl9tYXRyaXg7CisgICAgaW50 IGZ1bGxfcmFuZ2U7CisgICAgaW50IHByaW50X3N1bW1hcnk7Cit9IFNpVGlDb250ZXh0Owor CitzdGF0aWMgY29uc3QgZW51bSBBVlBpeGVsRm9ybWF0IHBpeF9mbXRzW10gPSB7CisgICAg QVZfUElYX0ZNVF9ZVVY0MjBQLCBBVl9QSVhfRk1UX1lVVjQyMlAsCisgICAgQVZfUElYX0ZN VF9ZVVZKNDIwUCwgQVZfUElYX0ZNVF9ZVVZKNDIyUCwKKyAgICBBVl9QSVhfRk1UX1lVVjQy MFAxMCwgQVZfUElYX0ZNVF9ZVVY0MjJQMTAsCisgICAgQVZfUElYX0ZNVF9OT05FCit9Owor CitzdGF0aWMgYXZfY29sZCBpbnQgaW5pdChBVkZpbHRlckNvbnRleHQgKmN0eCkKK3sKKyAg ICAvLyBVc2VyIG9wdGlvbnMgYnV0IG5vIGlucHV0IGRhdGEKKyAgICBTaVRpQ29udGV4dCAq cyA9IGN0eC0+cHJpdjsKKyAgICBzLT5tYXhfc2kgPSAwOworICAgIHMtPm1heF90aSA9IDA7 CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBhdl9jb2xkIHZvaWQgdW5pbml0KEFWRmls dGVyQ29udGV4dCAqY3R4KQoreworICAgIFNpVGlDb250ZXh0ICpzID0gY3R4LT5wcml2Owor CisgICAgaWYgKHMtPnByaW50X3N1bW1hcnkpIHsKKyAgICAgICAgZmxvYXQgYXZnX3NpID0g cy0+c3VtX3NpIC8gcy0+bmJfZnJhbWVzOworICAgICAgICBmbG9hdCBhdmdfdGkgPSBzLT5z dW1fdGkgLyBzLT5uYl9mcmFtZXM7CisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19JTkZP LAorICAgICAgICAgICAgICAgIlNJVEkgU3VtbWFyeTpcblRvdGFsIGZyYW1lczogJSJQUklk NjQiXG5cbiIKKyAgICAgICAgICAgICAgICJTcGF0aWFsIEluZm9ybWF0aW9uOlxuQXZlcmFn ZTogJWZcbk1heDogJWZcbk1pbjogJWZcblxuIgorICAgICAgICAgICAgICAgIlRlbXBvcmFs IEluZm9ybWF0aW9uOlxuQXZlcmFnZTogJWZcbk1heDogJWZcbk1pbjogJWZcbiIsCisgICAg ICAgICAgICAgICBzLT5uYl9mcmFtZXMsIGF2Z19zaSwgcy0+bWF4X3NpLCBzLT5taW5fc2ks IGF2Z190aSwgcy0+bWF4X3RpLCBzLT5taW5fdGkKKyAgICAgICAgKTsKKyAgICB9CisKKyAg ICBhdl9mcmVlcCgmcy0+cHJldl9mcmFtZSk7CisgICAgYXZfZnJlZXAoJnMtPmdyYWRpZW50 X21hdHJpeCk7CisgICAgYXZfZnJlZXAoJnMtPm1vdGlvbl9tYXRyaXgpOworfQorCitzdGF0 aWMgaW50IGNvbmZpZ19pbnB1dChBVkZpbHRlckxpbmsgKmlubGluaykKK3sKKyAgICAvLyBW aWRlbyBpbnB1dCBkYXRhIGF2aWxhYmxlCisgICAgQVZGaWx0ZXJDb250ZXh0ICpjdHggPSBp bmxpbmstPmRzdDsKKyAgICBTaVRpQ29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKyAgICBpbnQg bWF4X3BpeHN0ZXBzWzRdOworICAgIHNpemVfdCBwaXhlbF9zejsKKyAgICBzaXplX3QgZGF0 YV9zejsKKyAgICBzaXplX3QgZ3JhZGllbnRfc3o7CisgICAgc2l6ZV90IG1vdGlvbl9zejsK KworICAgIGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRvciAqZGVzYyA9IGF2X3BpeF9mbXRfZGVz Y19nZXQoaW5saW5rLT5mb3JtYXQpOworICAgIGF2X2ltYWdlX2ZpbGxfbWF4X3BpeHN0ZXBz KG1heF9waXhzdGVwcywgTlVMTCwgZGVzYyk7CisKKyAgICAvLyBmcmVlIHByZXZpb3VzIGJ1 ZmZlcnMgaW4gY2FzZSB0aGV5IGFyZSBhbGxvY2F0ZWQgYWxyZWFkeQorICAgIGF2X2ZyZWVw KCZzLT5wcmV2X2ZyYW1lKTsKKyAgICBhdl9mcmVlcCgmcy0+Z3JhZGllbnRfbWF0cml4KTsK KyAgICBhdl9mcmVlcCgmcy0+bW90aW9uX21hdHJpeCk7CisKKyAgICBzLT5waXhlbF9kZXB0 aCA9IG1heF9waXhzdGVwc1swXTsKKyAgICBzLT53aWR0aCA9IGlubGluay0+dzsKKyAgICBz LT5oZWlnaHQgPSBpbmxpbmstPmg7CisgICAgcGl4ZWxfc3ogPSBzLT5waXhlbF9kZXB0aCA9 PSAxID8gc2l6ZW9mKHVpbnQ4X3QpIDogc2l6ZW9mKHVpbnQxNl90KTsKKyAgICBkYXRhX3N6 ID0gcy0+d2lkdGggKiBwaXhlbF9zeiAqIHMtPmhlaWdodDsKKworICAgIHMtPnByZXZfZnJh bWUgPSBhdl9tYWxsb2MoZGF0YV9zeik7CisKKyAgICBncmFkaWVudF9zeiA9IChzLT53aWR0 aCAtIDIpICogc2l6ZW9mKGZsb2F0KSAqIChzLT5oZWlnaHQgLSAyKTsKKyAgICBzLT5ncmFk aWVudF9tYXRyaXggPSBhdl9tYWxsb2MoZ3JhZGllbnRfc3opOworCisgICAgbW90aW9uX3N6 ID0gcy0+d2lkdGggKiBzaXplb2YoZmxvYXQpICogcy0+aGVpZ2h0OworICAgIHMtPm1vdGlv bl9tYXRyaXggPSBhdl9tYWxsb2MobW90aW9uX3N6KTsKKworICAgIGlmICghcy0+cHJldl9m cmFtZSB8fCAhIHMtPmdyYWRpZW50X21hdHJpeCB8fCAhcy0+bW90aW9uX21hdHJpeCkgewor ICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworICAgIH0KKworICAgIHJldHVybiAw OworfQorCisvLyBEZXRlcm1pbmUgd2hldGhlciB0aGUgdmlkZW8gaXMgaW4gZnVsbCBvciBs aW1pdGVkIHJhbmdlLiBJZiBub3QgZGVmaW5lZCwgYXNzdW1lIGxpbWl0ZWQuCitzdGF0aWMg aW50IGlzX2Z1bGxfcmFuZ2UoQVZGcmFtZSogZnJhbWUpCit7CisgICAgLy8gSWYgY29sb3Ig cmFuZ2Ugbm90IHNwZWNpZmllZCwgZmFsbGJhY2sgdG8gcGl4ZWwgZm9ybWF0CisgICAgaWYg KGZyYW1lLT5jb2xvcl9yYW5nZSA9PSBBVkNPTF9SQU5HRV9VTlNQRUNJRklFRCB8fCBmcmFt ZS0+Y29sb3JfcmFuZ2UgPT0gQVZDT0xfUkFOR0VfTkIpCisgICAgICAgIHJldHVybiBmcmFt ZS0+Zm9ybWF0ID09IEFWX1BJWF9GTVRfWVVWSjQyMFAgfHwgZnJhbWUtPmZvcm1hdCA9PSBB Vl9QSVhfRk1UX1lVVko0MjJQOworICAgIHJldHVybiBmcmFtZS0+Y29sb3JfcmFuZ2UgPT0g QVZDT0xfUkFOR0VfSlBFRzsKK30KKworLy8gQ2hlY2sgZnJhbWUncyBjb2xvciByYW5nZSBh bmQgY29udmVydCB0byBmdWxsIHJhbmdlIGlmIG5lZWRlZAorc3RhdGljIHVpbnQxNl90IGNv bnZlcnRfZnVsbF9yYW5nZShpbnQgZmFjdG9yLCB1aW50MTZfdCB5KQoreworICAgIGludCBz aGlmdDsKKyAgICBpbnQgbGltaXRfdXBwZXI7CisgICAgaW50IGZ1bGxfdXBwZXI7CisgICAg aW50IGxpbWl0X3k7CisKKyAgICAvLyBGb3IgOCBiaXRzLCBsaW1pdGVkIHJhbmdlIGdvZXMg ZnJvbSAxNiB0byAyMzUsIGZvciAxMCBiaXRzIHRoZSByYW5nZSBpcyBtdWx0aXBsaWVkIGJ5 IDQKKyAgICBzaGlmdCA9IDE2ICogZmFjdG9yOworICAgIGxpbWl0X3VwcGVyID0gMjM1ICog ZmFjdG9yIC0gc2hpZnQ7CisgICAgZnVsbF91cHBlciA9IDI1NiAqIGZhY3RvciAtIDE7Cisg ICAgbGltaXRfeSA9IGZtaW5mKGZtYXhmKHkgLSBzaGlmdCwgMCksIGxpbWl0X3VwcGVyKTsK KyAgICByZXR1cm4gKGZ1bGxfdXBwZXIgKiBsaW1pdF95IC8gbGltaXRfdXBwZXIpOworfQor CisvLyBBcHBsaWVzIHNvYmVsIGNvbnZvbHV0aW9uCitzdGF0aWMgdm9pZCBjb252b2x2ZV9z b2JlbChTaVRpQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqc3JjLCBmbG9hdCAqZHN0LCBp bnQgbGluZXNpemUpCit7CisgICAgZG91YmxlIHhfY29udl9zdW07CisgICAgZG91YmxlIHlf Y29udl9zdW07CisgICAgZmxvYXQgZ3JhZGllbnQ7CisgICAgaW50IGtpOworICAgIGludCBr ajsKKyAgICBpbnQgaW5kZXg7CisgICAgdWludDE2X3QgZGF0YTsKKyAgICBpbnQgZmlsdGVy X3dpZHRoID0gMzsKKyAgICBpbnQgZmlsdGVyX3NpemUgPSBmaWx0ZXJfd2lkdGggKiBmaWx0 ZXJfd2lkdGg7CisgICAgaW50IHN0cmlkZSA9IGxpbmVzaXplIC8gcy0+cGl4ZWxfZGVwdGg7 CisgICAgLy8gRm9yIDggYml0cywgbGltaXRlZCByYW5nZSBnb2VzIGZyb20gMTYgdG8gMjM1 LCBmb3IgMTAgYml0cyB0aGUgcmFuZ2UgaXMgbXVsdGlwbGllZCBieSA0CisgICAgaW50IGZh Y3RvciA9IHMtPnBpeGVsX2RlcHRoID09IDEgPyAxIDogNDsKKworICAgIC8vIERzdCBtYXRy aXggaXMgc21hbGxlciB0aGFuIHNyYyBzaW5jZSB3ZSBpZ25vcmUgZWRnZXMgdGhhdCBjYW4n dCBiZSBjb252b2x2ZWQKKyAgICAjZGVmaW5lIENPTlZPTFZFKGJwcykgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg ICAgIHVpbnQjI2JwcyMjX3QgKnZzcmMgPSAodWludCMjYnBzIyNfdCopc3JjOyAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPCBzLT5oZWlnaHQgLSAx OyBqKyspIHsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZm9yIChpbnQgaSA9 IDE7IGkgPCBzLT53aWR0aCAtIDE7IGkrKykgeyAgICAgICAgICAgICAgICBcCisgICAgICAg ICAgICAgICAgeF9jb252X3N1bSA9IDAuMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgICAgICAgICB5X2NvbnZfc3VtID0gMC4wOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGZvciAoaW50IGsg PSAwOyBrIDwgZmlsdGVyX3NpemU7IGsrKykgeyAgICAgICAgICAgICBcCisgICAgICAgICAg ICAgICAgICAgIGtpID0gayAlIGZpbHRlcl93aWR0aCAtIDE7ICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICAgICAgICAgICAgICAgICAga2ogPSBmbG9vcihrIC8gZmlsdGVyX3dpZHRo KSAtIDE7ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBpbmRleCA9IChq ICsga2opICogc3RyaWRlICsgKGkgKyBraSk7ICAgICAgICAgICBcCisgICAgICAgICAgICAg ICAgICAgIGRhdGEgPSBzLT5mdWxsX3JhbmdlID8gdnNyY1tpbmRleF0gOiBjb252ZXJ0X2Z1 bGxfcmFuZ2UoZmFjdG9yLCB2c3JjW2luZGV4XSk7IFwKKyAgICAgICAgICAgICAgICAgICAg eF9jb252X3N1bSArPSBkYXRhICogWF9GSUxURVJba107ICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgICAgICAgICB5X2NvbnZfc3VtICs9IGRhdGEgKiBZX0ZJTFRFUltrXTsgICAg ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBncmFkaWVu dCA9IHNxcnQoeF9jb252X3N1bSAqIHhfY29udl9zdW0gKyB5X2NvbnZfc3VtICogeV9jb252 X3N1bSk7IFwKKyAgICAgICAgICAgICAgICBkc3RbKGogLSAxKSAqIChzLT53aWR0aCAtIDIp ICsgKGkgLSAxKV0gPSBncmFkaWVudDsgXAorICAgICAgICAgICAgfSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICB9CisKKyAgICBpZiAocy0+cGl4ZWxfZGVwdGggPT0gMikgeworICAgICAg ICBDT05WT0xWRSgxNik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQ09OVk9MVkUoOCk7Cisg ICAgfQorfQorCisvLyBDYWxjdWxhdGUgcGl4ZWwgZGlmZmVyZW5jZSBiZXR3ZWVuIGN1cnJl bnQgYW5kIHByZXZpb3VzIGZyYW1lLCBhbmQgdXBkYXRlIHByZXZpb3VzCitzdGF0aWMgdm9p ZCBjYWxjdWxhdGVfbW90aW9uKFNpVGlDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpjdXJy LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqbW90aW9uX21hdHJpeCwg aW50IGxpbmVzaXplKQoreworICAgIGludCBzdHJpZGUgPSBsaW5lc2l6ZSAvIHMtPnBpeGVs X2RlcHRoOworICAgIGZsb2F0IG1vdGlvbjsKKyAgICBpbnQgY3Vycl9pbmRleDsKKyAgICBp bnQgcHJldl9pbmRleDsKKyAgICB1aW50MTZfdCBjdXJyX2RhdGE7CisgICAgLy8gRm9yIDgg Yml0cywgbGltaXRlZCByYW5nZSBnb2VzIGZyb20gMTYgdG8gMjM1LCBmb3IgMTAgYml0cyB0 aGUgcmFuZ2UgaXMgbXVsdGlwbGllZCBieSA0CisgICAgaW50IGZhY3RvciA9IHMtPnBpeGVs X2RlcHRoID09IDEgPyAxIDogNDsKKworICAgIC8vIFByZXZpb3VzIGZyYW1lIGlzIGFscmVh ZHkgY29udmVydGVkIHRvIGZ1bGwgcmFuZ2UKKyAgICAjZGVmaW5lIENBTENVTEFURShicHMp ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgdWludCMjYnBzIyNfdCAqdnNyYyA9ICh1aW50IyNicHMjI190 KiljdXJyOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdWludCMjYnBzIyNfdCAqdmRz dCA9ICh1aW50IyNicHMjI190KilzLT5wcmV2X2ZyYW1lOyAgICAgICAgIFwKKyAgICAgICAg Zm9yIChpbnQgaiA9IDA7IGogPCBzLT5oZWlnaHQ7IGorKykgeyAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy0+d2lkdGg7IGkr KykgeyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBtb3Rpb24gPSAw OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg ICAgICAgICBjdXJyX2luZGV4ID0gaiAqIHN0cmlkZSArIGk7ICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgICAgICAgICBwcmV2X2luZGV4ID0gaiAqIHMtPndpZHRoICsg aTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBjdXJyX2RhdGEg PSBzLT5mdWxsX3JhbmdlID8gdnNyY1tjdXJyX2luZGV4XSA6IGNvbnZlcnRfZnVsbF9yYW5n ZShmYWN0b3IsIHZzcmNbY3Vycl9pbmRleF0pOyBcCisgICAgICAgICAgICAgICAgaWYgKHMt Pm5iX2ZyYW1lcyA+IDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg ICAgICAgICAgICAgICAgIG1vdGlvbiA9IGN1cnJfZGF0YSAtIHZkc3RbcHJldl9pbmRleF07 ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdmRzdFtwcmV2X2luZGV4XSA9IGN1cnJf ZGF0YTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgbW90aW9u X21hdHJpeFtqICogcy0+d2lkdGggKyBpXSA9IG1vdGlvbjsgICAgICAgICAgICBcCisgICAg ICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisgICAgaWYgKHMtPnBp eGVsX2RlcHRoID09IDIpIHsKKyAgICAgICAgQ0FMQ1VMQVRFKDE2KTsKKyAgICB9IGVsc2Ug eworICAgICAgICBDQUxDVUxBVEUoOCk7CisgICAgfQorfQorCitzdGF0aWMgZmxvYXQgc3Rk X2RldmlhdGlvbihmbG9hdCAqaW1nX21ldHJpY3MsIGludCB3aWR0aCwgaW50IGhlaWdodCkK K3sKKyAgICBpbnQgc2l6ZSA9IGhlaWdodCAqIHdpZHRoOworICAgIGRvdWJsZSBtZWFuID0g MC4wOworICAgIGRvdWJsZSBzcXJfZGlmZiA9IDA7CisKKyAgICBmb3IgKGludCBqID0gMDsg aiA8IGhlaWdodDsgaisrKQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHdpZHRoOyBp KyspCisgICAgICAgICAgICBtZWFuICs9IGltZ19tZXRyaWNzW2ogKiB3aWR0aCArIGldOwor CisgICAgbWVhbiAvPSBzaXplOworCisgICAgZm9yIChpbnQgaiA9IDA7IGogPCBoZWlnaHQ7 IGorKykgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHdpZHRoOyBpKyspIHsKKyAg ICAgICAgICAgIGZsb2F0IG1lYW5fZGlmZiA9IGltZ19tZXRyaWNzW2ogKiB3aWR0aCArIGld IC0gbWVhbjsKKyAgICAgICAgICAgIHNxcl9kaWZmICs9IChtZWFuX2RpZmYgKiBtZWFuX2Rp ZmYpOworICAgICAgICB9CisgICAgfQorICAgIHNxcl9kaWZmID0gc3FyX2RpZmYgLyBzaXpl OworICAgIHJldHVybiBzcXJ0KHNxcl9kaWZmKTsKK30KKworc3RhdGljIHZvaWQgc2V0X21l dGEoQVZEaWN0aW9uYXJ5ICoqbWV0YWRhdGEsIGNvbnN0IGNoYXIgKmtleSwgZmxvYXQgZCkK K3sKKyAgICBjaGFyIHZhbHVlWzEyOF07CisgICAgc25wcmludGYodmFsdWUsIHNpemVvZih2 YWx1ZSksICIlMC4yZiIsIGQpOworICAgIGF2X2RpY3Rfc2V0KG1ldGFkYXRhLCBrZXksIHZh bHVlLCAwKTsKK30KKworc3RhdGljIGludCBmaWx0ZXJfZnJhbWUoQVZGaWx0ZXJMaW5rICpp bmxpbmssIEFWRnJhbWUgKmZyYW1lKQoreworICAgIEFWRmlsdGVyQ29udGV4dCAqY3R4ID0g aW5saW5rLT5kc3Q7CisgICAgU2lUaUNvbnRleHQgKnMgPSBjdHgtPnByaXY7CisgICAgZmxv YXQgc2k7CisgICAgZmxvYXQgdGk7CisKKyAgICBzLT5mdWxsX3JhbmdlID0gaXNfZnVsbF9y YW5nZShmcmFtZSk7CisgICAgcy0+bmJfZnJhbWVzKys7CisKKyAgICAvLyBDYWxjdWxhdGUg c2kgYW5kIHRpCisgICAgY29udm9sdmVfc29iZWwocywgZnJhbWUtPmRhdGFbMF0sIHMtPmdy YWRpZW50X21hdHJpeCwgZnJhbWUtPmxpbmVzaXplWzBdKTsKKyAgICBjYWxjdWxhdGVfbW90 aW9uKHMsIGZyYW1lLT5kYXRhWzBdLCBzLT5tb3Rpb25fbWF0cml4LCBmcmFtZS0+bGluZXNp emVbMF0pOworICAgIHNpID0gc3RkX2RldmlhdGlvbihzLT5ncmFkaWVudF9tYXRyaXgsIHMt PndpZHRoIC0gMiwgcy0+aGVpZ2h0IC0gMik7CisgICAgdGkgPSBzdGRfZGV2aWF0aW9uKHMt Pm1vdGlvbl9tYXRyaXgsIHMtPndpZHRoLCBzLT5oZWlnaHQpOworCisgICAgLy8gQ2FsY3Vs YXRlIHN0YXRpc3RpY3MKKyAgICBzLT5tYXhfc2kgID0gZm1heGYoc2ksIHMtPm1heF9zaSk7 CisgICAgcy0+bWF4X3RpICA9IGZtYXhmKHRpLCBzLT5tYXhfdGkpOworICAgIHMtPnN1bV9z aSArPSBzaTsKKyAgICBzLT5zdW1fdGkgKz0gdGk7CisgICAgcy0+bWluX3NpICA9IHMtPm5i X2ZyYW1lcyA9PSAxID8gc2kgOiBmbWluZihzaSwgcy0+bWluX3NpKTsKKyAgICBzLT5taW5f dGkgID0gcy0+bmJfZnJhbWVzID09IDEgPyB0aSA6IGZtaW5mKHRpLCBzLT5taW5fdGkpOwor CisgICAgLy8gU2V0IHNpIHRpIGluZm9ybWF0aW9uIGluIGZyYW1lIG1ldGFkYXRhCisgICAg c2V0X21ldGEoJmZyYW1lLT5tZXRhZGF0YSwgImxhdmZpLnNpdGkuc2kiLCBzaSk7CisgICAg c2V0X21ldGEoJmZyYW1lLT5tZXRhZGF0YSwgImxhdmZpLnNpdGkudGkiLCB0aSk7CisKKyAg ICByZXR1cm4gZmZfZmlsdGVyX2ZyYW1lKGlubGluay0+ZHN0LT5vdXRwdXRzWzBdLCBmcmFt ZSk7Cit9CisKKyNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNldG9mKFNpVGlDb250ZXh0LCB4KQor I2RlZmluZSBGTEFHUyBBVl9PUFRfRkxBR19WSURFT19QQVJBTXxBVl9PUFRfRkxBR19GSUxU RVJJTkdfUEFSQU0KKworc3RhdGljIGNvbnN0IEFWT3B0aW9uIHNpdGlfb3B0aW9uc1tdID0g eworICAgIHsgInByaW50X3N1bW1hcnkiLCAiUHJpbnQgc3VtbWFyeSBzaG93aW5nIGF2ZXJh Z2UgdmFsdWVzIiwgT0ZGU0VUKHByaW50X3N1bW1hcnkpLCBBVl9PUFRfVFlQRV9CT09MLCB7 IC5pNjQ9MCB9LCAwLCAxLCBGTEFHUyB9LAorICAgIHsgTlVMTCB9Cit9OworCitBVkZJTFRF Ul9ERUZJTkVfQ0xBU1Moc2l0aSk7CisKK3N0YXRpYyBjb25zdCBBVkZpbHRlclBhZCBhdmZp bHRlcl92Zl9zaXRpX2lucHV0c1tdID0geworICAgIHsKKyAgICAgICAgLm5hbWUgICAgICAg ICA9ICJkZWZhdWx0IiwKKyAgICAgICAgLnR5cGUgICAgICAgICA9IEFWTUVESUFfVFlQRV9W SURFTywKKyAgICAgICAgLmNvbmZpZ19wcm9wcyA9IGNvbmZpZ19pbnB1dCwKKyAgICAgICAg LmZpbHRlcl9mcmFtZSA9IGZpbHRlcl9mcmFtZSwKKyAgICB9LAorfTsKKworc3RhdGljIGNv bnN0IEFWRmlsdGVyUGFkIGF2ZmlsdGVyX3ZmX3NpdGlfb3V0cHV0c1tdID0geworICAgIHsK KyAgICAgICAgLm5hbWUgPSAiZGVmYXVsdCIsCisgICAgICAgIC50eXBlID0gQVZNRURJQV9U WVBFX1ZJREVPCisgICAgfSwKK307CisKK0FWRmlsdGVyIGZmX3ZmX3NpdGkgPSB7CisgICAg Lm5hbWUgICAgICAgICAgPSAic2l0aSIsCisgICAgLmRlc2NyaXB0aW9uICAgPSBOVUxMX0lG X0NPTkZJR19TTUFMTCgiQ2FsY3VsYXRlIHNwYXRpYWwgaW5mb3JtYXRpb24gKFNJKSBhbmQg dGVtcG9yYWwgaW5mb3JtYXRpb24gKFRJKS4iKSwKKyAgICAucHJpdl9zaXplICAgICA9IHNp emVvZihTaVRpQ29udGV4dCksCisgICAgLnByaXZfY2xhc3MgICAgPSAmc2l0aV9jbGFzcywK KyAgICAuaW5pdCAgICAgICAgICA9IGluaXQsCisgICAgLnVuaW5pdCAgICAgICAgPSB1bmlu aXQsCisgICAgLmZsYWdzICAgICAgICAgPSBBVkZJTFRFUl9GTEFHX01FVEFEQVRBX09OTFks CisgICAgRklMVEVSX1BJWEZNVFNfQVJSQVkocGl4X2ZtdHMpLAorICAgIEZJTFRFUl9JTlBV VFMoYXZmaWx0ZXJfdmZfc2l0aV9pbnB1dHMpLAorICAgIEZJTFRFUl9PVVRQVVRTKGF2Zmls dGVyX3ZmX3NpdGlfb3V0cHV0cyksCit9OwpkaWZmIC0tZ2l0IGEvdGVzdHMvZmF0ZS1ydW4u c2ggYi90ZXN0cy9mYXRlLXJ1bi5zaAppbmRleCBmYmZjMGE5MjVkLi5hM2JlNDRkMGViIDEw MDc1NQotLS0gYS90ZXN0cy9mYXRlLXJ1bi5zaAorKysgYi90ZXN0cy9mYXRlLXJ1bi5zaApA QCAtMzgyLDYgKzM4MiwxNSBAQCByZWZjbXBfbWV0YWRhdGEoKXsKICAgICAgICAgLWYgbnVs bCAvZGV2L251bGwgfCBhd2sgLXYgcmVmPSR7cmVmfSAtdiBmdXp6PSR7ZnV6en0gLWYgJHti YXNlfS9yZWZjbXAtbWV0YWRhdGEuYXdrIC0KIH0KIAorY21wX21ldGFkYXRhKCl7CisgICAg cmVmY21wPSQxCisgICAgcGl4Zm10PSQyCisgICAgZnV6ej0kezM6LTAuMDAxfQorICAgIGZm bXBlZyAkRkxBR1MgJEVOQ19PUFRTIFwKKyAgICAgICAgLWxhdmZpICJ0ZXN0c3JjMj1zaXpl PTMwMHgyMDA6cmF0ZT0xOmR1cmF0aW9uPTUsZm9ybWF0PSR7cGl4Zm10fSwke3JlZmNtcH0s bWV0YWRhdGE9cHJpbnQ6ZmlsZT0tIiBcCisgICAgICAgIC1mIG51bGwgL2Rldi9udWxsIHwg YXdrIC12IHJlZj0ke3JlZn0gLXYgZnV6ej0ke2Z1enp9IC1mICR7YmFzZX0vcmVmY21wLW1l dGFkYXRhLmF3ayAtCit9CisKIHBpeGZtdF9jb252ZXJzaW9uKCl7CiAgICAgY29udmVyc2lv bj0iJHt0ZXN0I3BpeGZtdC19IgogICAgIG91dGRpcj0idGVzdHMvZGF0YS9waXhmbXQiCmRp ZmYgLS1naXQgYS90ZXN0cy9mYXRlL2ZpbHRlci12aWRlby5tYWsgYi90ZXN0cy9mYXRlL2Zp bHRlci12aWRlby5tYWsKaW5kZXggNTEwYmIzZmZiYy4uYWUwMjFhNzRhNCAxMDA2NDQKLS0t IGEvdGVzdHMvZmF0ZS9maWx0ZXItdmlkZW8ubWFrCisrKyBiL3Rlc3RzL2ZhdGUvZmlsdGVy LXZpZGVvLm1hawpAQCAtODYyLDYgKzg2Miw5IEBAIGZhdGUtZmlsdGVyLXJlZmNtcC1zc2lt LXJnYjogQ01EID0gcmVmY21wX21ldGFkYXRhIHNzaW0gcmdiMjQgMC4wMTUKIEZBVEVfRklM VEVSLSQoY2FsbCBBTExZRVMsICQoUkVGQ01QX0RFUFMpIFNTSU1fRklMVEVSKSArPSBmYXRl LWZpbHRlci1yZWZjbXAtc3NpbS15dXYKIGZhdGUtZmlsdGVyLXJlZmNtcC1zc2ltLXl1djog Q01EID0gcmVmY21wX21ldGFkYXRhIHNzaW0geXV2NDIycCAwLjAxNQogCitGQVRFX0ZJTFRF Ui0kKGNhbGwgQUxMWUVTLCAkKFJFRkNNUF9ERVBTKSBTSVRJX0ZJTFRFUikgKz0gZmF0ZS1m aWx0ZXItcmVmY21wLXNpdGkteXV2CitmYXRlLWZpbHRlci1yZWZjbXAtc2l0aS15dXY6IENN RCA9IGNtcF9tZXRhZGF0YSBzaXRpIHl1djQyMHAgMC4wMTUKKwogRkFURV9TQU1QTEVTX0ZG UFJPQkUgKz0gJChGQVRFX01FVEFEQVRBX0ZJTFRFUi15ZXMpCiBGQVRFX1NBTVBMRVNfRkZN UEVHICs9ICQoRkFURV9GSUxURVJfU0FNUExFUy15ZXMpCiBGQVRFX0ZGTVBFRyArPSAkKEZB VEVfRklMVEVSLXllcykKZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZi9mYXRlL2ZpbHRlci1yZWZj bXAtc2l0aS15dXYgYi90ZXN0cy9yZWYvZmF0ZS9maWx0ZXItcmVmY21wLXNpdGkteXV2Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjVkOTk5NzJkOTUKLS0tIC9k ZXYvbnVsbAorKysgYi90ZXN0cy9yZWYvZmF0ZS9maWx0ZXItcmVmY21wLXNpdGkteXV2CkBA IC0wLDAgKzEsMTUgQEAKK2ZyYW1lOjAgICAgcHRzOjAgICAgICAgcHRzX3RpbWU6MAorbGF2 Zmkuc2l0aS5zaT0xMDYuNzIKK2xhdmZpLnNpdGkudGk9MC4wMAorZnJhbWU6MSAgICBwdHM6 MSAgICAgICBwdHNfdGltZToxCitsYXZmaS5zaXRpLnNpPTEwOS40MAorbGF2Zmkuc2l0aS50 aT0yOC4wMAorZnJhbWU6MiAgICBwdHM6MiAgICAgICBwdHNfdGltZToyCitsYXZmaS5zaXRp LnNpPTEwOS4yOQorbGF2Zmkuc2l0aS50aT0yOC4zOAorZnJhbWU6MyAgICBwdHM6MyAgICAg ICBwdHNfdGltZTozCitsYXZmaS5zaXRpLnNpPTExMy4yNworbGF2Zmkuc2l0aS50aT0zMy40 MgorZnJhbWU6NCAgICBwdHM6NCAgICAgICBwdHNfdGltZTo0CitsYXZmaS5zaXRpLnNpPTEx MC44NworbGF2Zmkuc2l0aS50aT0zMC41MwotLSAKMi4yMC4xIChBcHBsZSBHaXQtMTE3KQoK --------------OgfamtrUWCIVgrmCYCUtCqBG 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". --------------OgfamtrUWCIVgrmCYCUtCqBG--