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 D432C44F3D for ; Sat, 10 Dec 2022 12:29:22 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5E58B68BD8D; Sat, 10 Dec 2022 14:29:19 +0200 (EET) Received: from mail-vs1-f49.google.com (mail-vs1-f49.google.com [209.85.217.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B6DB468BD4C for ; Sat, 10 Dec 2022 14:29:12 +0200 (EET) Received: by mail-vs1-f49.google.com with SMTP id m4so6963074vsc.6 for ; Sat, 10 Dec 2022 04:29:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=8xUByyoVpw4C3lfSlHRPU5tan/kW71luyUTnYIC1owU=; b=SFCIIL57mgU/NExaXiBjZFivfNLOlC0Ss7cHmkhCkJtuok+BHdIBOBlS83MyfYkusP W3qGyrKzzjHzgTBvdf9BCVtsWrQ2a/yhrcXnQ8k69o0qQsjZhxRIEwjgdrYUx7FbNNpZ gfWCpDjvKKObdhDWbsRdnCDe7h/kEJ6v2CZwSqBfYIc09JW0aPuGeRdE6XHU/+/FTHp1 J6GGLKtl8J8X3Y7zvY3TjFGcKBStEsw2A2mpSvgEcdWnMkHT6geXLVHbN413iS7z5Ot4 tSkiM09Gq8kit7vyQT//b4Se5SV9/TqavAFp/H3lq7u5UQOKvBfz/Svsk+VOxJkADRli cuiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=8xUByyoVpw4C3lfSlHRPU5tan/kW71luyUTnYIC1owU=; b=gfUaWjjD4qbNRgh7Gzxcoe6nU4DbioeR/WK4egSw2pMnoh2f9K2cquc87FCMaacguS Dp+5PRUBwgHmyLRkIEwHm+Eb1AE6HeyrWqulmxqIDjezqDC2pMQfMRlf9wo3Juy0R1NA 0edlTf95nlq73gux7cox6UlrkI5fWO9YGqKbjRW3t/sYYu3EZZz2Vpwa5Qk0Wpeiyf3P GgfgVvfIwRxrLU7hFjPk9Euvh2Bl8yG7bTAdtJs9IvLWfM3ytrr9vM/oPSW0zXBMB4H2 +A5XMfdIUw3rHdlNCvWldH9ztcuvJzDIBdSg4iRH9aFUK4lAXwxUgMK2V7ocJguwQUY0 XKMQ== X-Gm-Message-State: ANoB5pkIg84o8W2G/apCeqmv+SS5/ieM6wK2o3Gq3gmgSEVlxwwFQhLE /F0d9zhHXxSlbazt1bBcUYTajyzAxQboFv+TLj/99n2j X-Google-Smtp-Source: AA0mqf4xomPj6N74FEtW5x8ZYGpXIbjf7wK4GpzpdGHT1mdyF+wOHXIPvCpbZX8wDCjQFgjis0PjaNWShZF9lS1um4w= X-Received: by 2002:a67:f94d:0:b0:3b1:4889:390 with SMTP id u13-20020a67f94d000000b003b148890390mr8175154vsq.57.1670675350995; Sat, 10 Dec 2022 04:29:10 -0800 (PST) MIME-Version: 1.0 Received: by 2002:a05:612c:2428:b0:32a:5eaa:92e4 with HTTP; Sat, 10 Dec 2022 04:29:09 -0800 (PST) In-Reply-To: References: From: Paul B Mahol Date: Sat, 10 Dec 2022 13:29:09 +0100 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="000000000000d4dea705ef786a90" Subject: Re: [FFmpeg-devel] [PATCH] avfilter: add adrc 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: --000000000000d4dea705ef786a90 Content-Type: text/plain; charset="UTF-8" On 12/3/22, Paul B Mahol wrote: > Patch attached. > > TODO: add documentation and examples with various transfer expressions > (compressor, expander, limiter, gate, etc). > Updated --000000000000d4dea705ef786a90 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-avfilter-add-adrc-filter.patch" Content-Disposition: attachment; filename="0001-avfilter-add-adrc-filter.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: file0 RnJvbSA0YzYxMzVkZmRjMGJjM2E3MWVjZGViOWYyZTM4YmZiY2Y4OTBmMjM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IE1vbiwgNyBOb3YgMjAyMiAyMTowMDo1MCArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIGF2ZmlsdGVy OiBhZGQgYWRyYyBmaWx0ZXIKClNpZ25lZC1vZmYtYnk6IFBhdWwgQiBNYWhvbCA8b25lbWRhQGdt YWlsLmNvbT4KLS0tCiBkb2MvZmlsdGVycy50ZXhpICAgICAgICAgfCAgNzkgKysrKysrCiBsaWJh dmZpbHRlci9NYWtlZmlsZSAgICAgfCAgIDEgKwogbGliYXZmaWx0ZXIvYWZfYWRyYy5jICAgIHwg NTA1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliYXZmaWx0ZXIv YWxsZmlsdGVycy5jIHwgICAxICsKIDQgZmlsZXMgY2hhbmdlZCwgNTg2IGluc2VydGlvbnMoKykK IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci9hZl9hZHJjLmMKCmRpZmYgLS1naXQgYS9k b2MvZmlsdGVycy50ZXhpIGIvZG9jL2ZpbHRlcnMudGV4aQppbmRleCAxY2I3ZmQ5NGE3Li5lODM4 MzA5YzViIDEwMDY0NAotLS0gYS9kb2MvZmlsdGVycy50ZXhpCisrKyBiL2RvYy9maWx0ZXJzLnRl eGkKQEAgLTg3Miw2ICs4NzIsODUgQEAgQ29tcHV0ZSBkZXJpdmF0aXZlL2ludGVncmFsIG9mIGF1 ZGlvIHN0cmVhbS4KIAogQXBwbHlpbmcgYm90aCBmaWx0ZXJzIG9uZSBhZnRlciBhbm90aGVyIHBy b2R1Y2VzIG9yaWdpbmFsIGF1ZGlvLgogCitAc2VjdGlvbiBhZHJjCisKK0FwcGx5IHNwZWN0cmFs IGR5bmFtaWMgcmFuZ2UgY29udHJvbGxlciBmaWx0ZXIgdG8gaW5wdXQgYXVkaW8gc3RyZWFtLgor CitBIGRlc2NyaXB0aW9uIG9mIHRoZSBhY2NlcHRlZCBvcHRpb25zIGZvbGxvd3MuCisKK0B0YWJs ZSBAb3B0aW9uCitAaXRlbSB0cmFuc2ZlcgorU2V0IHRoZSB0cmFuc2ZlciBleHByZXNzaW9uLgor CitUaGUgZXhwcmVzc2lvbiBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIGNvbnN0YW50czoKKwor QHRhYmxlIEBvcHRpb24KK0BpdGVtIGNoCitjdXJyZW50IGNoYW5uZWwgbnVtYmVyCisKK0BpdGVt IHNuCitjdXJyZW50IHNhbXBsZSBudW1iZXIKKworQGl0ZW0gbmJfY2hhbm5lbHMKK251bWJlciBv ZiBjaGFubmVscworCitAaXRlbSB0Cit0aW1lc3RhbXAgZXhwcmVzc2VkIGluIHNlY29uZHMKKwor QGl0ZW0gc3IKK3NhbXBsZSByYXRlCisKK0BpdGVtIHAKK2N1cnJlbnQgZnJlcXVlbmN5IHBvd2Vy IHZhbHVlLCBpbiBkQgorCitAaXRlbSBmCitjdXJyZW50IGZyZXF1ZW5jeSBpbiBIegorQGVuZCB0 YWJsZQorCitEZWZhdWx0IHZhbHVlIGlzIEBjb2Rle3B9LgorCitAaXRlbSBhdHRhY2sKK1NldCB0 aGUgYXR0YWNrIGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdCBpcyBAY29kZXs1MH0gbWlsbGlzZWNv bmRzLgorQWxsb3dlZCByYW5nZSBpcyBmcm9tIDEgdG8gMTAwMCBtaWxsaXNlY29uZHMuCitAaXRl bSByZWxlYXNlCitTZXQgdGhlIHJlbGVhc2UgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0IGlzIEBj b2RlezEwMH0gbWlsbGlzZWNvbmRzLgorQWxsb3dlZCByYW5nZSBpcyBmcm9tIDUgdG8gMjAwMCBt aWxsaXNlY29uZHMuCitAaXRlbSBjaGFubmVscworU2V0IHdoaWNoIGNoYW5uZWxzIHRvIGZpbHRl ciwgYnkgZGVmYXVsdCBAY29kZXthbGx9IGNoYW5uZWxzIGluIGF1ZGlvIHN0cmVhbSBhcmUgZmls dGVyZWQuCitAZW5kIHRhYmxlCisKK0BzdWJzZWN0aW9uIENvbW1hbmRzCisKK1RoaXMgZmlsdGVy IHN1cHBvcnRzIHRoZSBhbGwgYWJvdmUgb3B0aW9ucyBhcyBAcmVme2NvbW1hbmRzfS4KKworQHN1 YnNlY3Rpb24gRXhhbXBsZXMKKworQGl0ZW1pemUKK0BpdGVtCitBcHBseSBzcGVjdHJhbCBjb21w cmVzc2lvbiB0byBhbGwgZnJlcXVlbmNpZXMgd2l0aCB0aHJlc2hvbGQgb2YgLTUgZEIgYW5kIDE6 NiByYXRpbzoKK0BleGFtcGxlCithZHJjPSdpZihndChwLC01KSwtNSsocC0oLTUpKS82LHApJzph dHRhY2s9NTA6cmVsZWFzZT0xMDAKK0BlbmQgZXhhbXBsZQorCitAaXRlbQorU2ltaWxhciB0byBh Ym92ZSBidXQgd2l0aCAxOjIgcmF0aW8gYW5kIGZpbHRlcmluZyBvbmx5IGZyb250IGNlbnRlciBj aGFubmVsOgorQGV4YW1wbGUKK2FkcmM9J2lmKGd0KHAsLTUpLC01KyhwLSgtNSkpLzIscCknOmF0 dGFjaz01MDpyZWxlYXNlPTEwMDpjaGFubmVscz1GQworQGVuZCBleGFtcGxlCisKK0BpdGVtCitB cHBseSBzcGVjdHJhbCBub2lzZSBnYXRlIHRvIGFsbCBmcmVxdWVuY2llcyB3aXRoIHRocmVzaG9s ZCBvZiAtMzUgZEIgYW5kIHdpdGggc2hvcnQgYXR0YWNrIHRpbWUgYW5kIHNob3J0IHJlbGVhc2Ug dGltZToKK0BleGFtcGxlCithZHJjPXRyYW5zZmVyPSdpZihsdGUocCwtMzUpLHAtODAwLHApJzph dHRhY2s9MTpyZWxlYXNlPTUKK0BlbmQgZXhhbXBsZQorCitAaXRlbQorQXBwbHkgc3BlY3RyYWwg ZXhwYW5zaW9uIHRvIGFsbCBmcmVxdWVuY2llcyB3aXRoIHRocmVzaG9sZCBvZiAtMSBkQiBhbmQg MTo4IHJhdGlvOgorQGV4YW1wbGUKK2FkcmM9dHJhbnNmZXI9J2lmKGx0KHAsLTEpLC0xKyhwLSgt MSkpKjgscCknOmF0dGFjaz01MDpyZWxlYXNlPTEwMAorQGVuZCBleGFtcGxlCitAZW5kIGl0ZW1p emUKKwogQHNlY3Rpb24gYWR5bmFtaWNlcXVhbGl6ZXIKIAogQXBwbHkgZHluYW1pYyBlcXVhbGl6 YXRpb24gdG8gaW5wdXQgYXVkaW8gc3RyZWFtLgpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvTWFr ZWZpbGUgYi9saWJhdmZpbHRlci9NYWtlZmlsZQppbmRleCBkNGUxMGMxNWQwLi4zMjFiZDlhMGM4 IDEwMDY0NAotLS0gYS9saWJhdmZpbHRlci9NYWtlZmlsZQorKysgYi9saWJhdmZpbHRlci9NYWtl ZmlsZQpAQCAtNDgsNiArNDgsNyBAQCBPQkpTLSQoQ09ORklHX0FERUNPUlJFTEFURV9GSUxURVIp ICAgICAgICAgICArPSBhZl9hZGVjb3JyZWxhdGUubwogT0JKUy0kKENPTkZJR19BREVMQVlfRklM VEVSKSAgICAgICAgICAgICAgICAgKz0gYWZfYWRlbGF5Lm8KIE9CSlMtJChDT05GSUdfQURFTk9S TV9GSUxURVIpICAgICAgICAgICAgICAgICs9IGFmX2FkZW5vcm0ubwogT0JKUy0kKENPTkZJR19B REVSSVZBVElWRV9GSUxURVIpICAgICAgICAgICAgKz0gYWZfYWRlcml2YXRpdmUubworT0JKUy0k KENPTkZJR19BRFJDX0ZJTFRFUikgICAgICAgICAgICAgICAgICAgKz0gYWZfYWRyYy5vCiBPQkpT LSQoQ09ORklHX0FEWU5BTUlDRVFVQUxJWkVSX0ZJTFRFUikgICAgICArPSBhZl9hZHluYW1pY2Vx dWFsaXplci5vCiBPQkpTLSQoQ09ORklHX0FEWU5BTUlDU01PT1RIX0ZJTFRFUikgICAgICAgICAr PSBhZl9hZHluYW1pY3Ntb290aC5vCiBPQkpTLSQoQ09ORklHX0FFQ0hPX0ZJTFRFUikgICAgICAg ICAgICAgICAgICArPSBhZl9hZWNoby5vCmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9hZl9hZHJj LmMgYi9saWJhdmZpbHRlci9hZl9hZHJjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uOTM3MDBkNDBlMwotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2ZmlsdGVyL2FmX2Fk cmMuYwpAQCAtMCwwICsxLDUwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMiBQYXVsIEIg TWFob2wKKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVn IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRo ZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2luY2x1ZGUg PGZsb2F0Lmg+CisKKyNpbmNsdWRlICJsaWJhdnV0aWwvZXZhbC5oIgorI2luY2x1ZGUgImxpYmF2 dXRpbC9mZm1hdGguaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCisjaW5jbHVkZSAibGli YXZ1dGlsL3R4LmgiCisjaW5jbHVkZSAiYXVkaW8uaCIKKyNpbmNsdWRlICJhdmZpbHRlci5oIgor I2luY2x1ZGUgImZpbHRlcnMuaCIKKyNpbmNsdWRlICJpbnRlcm5hbC5oIgorCitzdGF0aWMgY29u c3QgY2hhciAqIGNvbnN0IHZhcl9uYW1lc1tdID0geworICAgICJjaCIsICAgICAgICAgICAvLy88 IHRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCBjaGFubmVsCisgICAgInNuIiwgICAgICAgICAgIC8v LzwgbnVtYmVyIG9mIHNhbXBsZXMKKyAgICAibmJfY2hhbm5lbHMiLAorICAgICJ0IiwgICAgICAg ICAgICAvLy88IHRpbWVzdGFtcCBleHByZXNzZWQgaW4gc2Vjb25kcworICAgICJzciIsICAgICAg ICAgICAvLy88IHNhbXBsZSByYXRlCisgICAgInAiLCAgICAgICAgICAgIC8vLzwgaW5wdXQgcG93 ZXIgaW4gZEIgZm9yIGZyZXF1ZW5jeSBiaW4KKyAgICAiZiIsICAgICAgICAgICAgLy8vPCBmcmVx dWVuY3kgaW4gSHoKKyAgICBOVUxMCit9OworCitlbnVtIHZhcl9uYW1lIHsKKyAgICBWQVJfQ0gs CisgICAgVkFSX1NOLAorICAgIFZBUl9OQl9DSEFOTkVMUywKKyAgICBWQVJfVCwKKyAgICBWQVJf U1IsCisgICAgVkFSX1AsCisgICAgVkFSX0YsCisgICAgVkFSX1ZBUlNfTkIKK307CisKK3R5cGVk ZWYgc3RydWN0IEF1ZGlvRFJDQ29udGV4dCB7CisgICAgY29uc3QgQVZDbGFzcyAqY2xhc3M7CisK KyAgICBkb3VibGUgYXR0YWNrX21zOworICAgIGRvdWJsZSByZWxlYXNlX21zOworICAgIGNoYXIg KmV4cHJfc3RyOworCisgICAgZG91YmxlIGF0dGFjazsKKyAgICBkb3VibGUgcmVsZWFzZTsKKwor ICAgIGludCBmZnRfc2l6ZTsKKyAgICBpbnQgb3ZlcmxhcDsKKyAgICBpbnQgY2hhbm5lbHM7CisK KyAgICBmbG9hdCBmeDsKKyAgICBmbG9hdCAqd2luZG93OworCisgICAgQVZGcmFtZSAqZHJjX2Zy YW1lOworICAgIEFWRnJhbWUgKmVuZXJneTsKKyAgICBBVkZyYW1lICplbnZlbG9wZTsKKyAgICBB VkZyYW1lICpmYWN0b3JzOworICAgIEFWRnJhbWUgKmluOworICAgIEFWRnJhbWUgKmluX2J1ZmZl cjsKKyAgICBBVkZyYW1lICppbl9mcmFtZTsKKyAgICBBVkZyYW1lICpvdXRfZGlzdF9mcmFtZTsK KyAgICBBVkZyYW1lICpzcGVjdHJ1bV9idWY7CisgICAgQVZGcmFtZSAqdGFyZ2V0X2dhaW47Cisg ICAgQVZGcmFtZSAqd2luZG93ZWRfZnJhbWU7CisKKyAgICBjaGFyICpjaGFubmVsc190b19maWx0 ZXI7CisgICAgQVZDaGFubmVsTGF5b3V0IGNoX2xheW91dDsKKworICAgIEFWVFhDb250ZXh0ICoq dHhfY3R4OworICAgIGF2X3R4X2ZuIHR4X2ZuOworICAgIEFWVFhDb250ZXh0ICoqaXR4X2N0eDsK KyAgICBhdl90eF9mbiBpdHhfZm47CisKKyAgICBBVkV4cHIgKmV4cHI7CisgICAgZG91YmxlIHZh cl92YWx1ZXNbVkFSX1ZBUlNfTkJdOworfSBBdWRpb0RSQ0NvbnRleHQ7CisKKyNkZWZpbmUgT0ZG U0VUKHgpIG9mZnNldG9mKEF1ZGlvRFJDQ29udGV4dCwgeCkKKyNkZWZpbmUgRkxBR1MgQVZfT1BU X0ZMQUdfQVVESU9fUEFSQU0gfCBBVl9PUFRfRkxBR19GSUxURVJJTkdfUEFSQU0gfCBBVl9PUFRf RkxBR19SVU5USU1FX1BBUkFNCisKK3N0YXRpYyBjb25zdCBBVk9wdGlvbiBhZHJjX29wdGlvbnNb XSA9IHsKKyAgICB7ICJ0cmFuc2ZlciIsICAgICJzZXQgdGhlIHRyYW5zZmVyIGV4cHJlc3Npb24i LCBPRkZTRVQoZXhwcl9zdHIpLCAgIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9ImcifSwgIDAs ICAgIDAsIEZMQUdTIH0sCisgICAgeyAiYXR0YWNrIiwgICAgICAic2V0IHRoZSBhdHRhY2siLCAg ICAgICAgICAgICAgT0ZGU0VUKGF0dGFja19tcyksICBBVl9PUFRfVFlQRV9ET1VCTEUsIHsuZGJs PTUwLn0sICAxLCAxMDAwLCBGTEFHUyB9LAorICAgIHsgInJlbGVhc2UiLCAgICAgInNldCB0aGUg cmVsZWFzZSIsICAgICAgICAgICAgIE9GRlNFVChyZWxlYXNlX21zKSwgQVZfT1BUX1RZUEVfRE9V QkxFLCB7LmRibD0xMDAufSwgNSwgMjAwMCwgRkxBR1MgfSwKKyAgICB7ICJjaGFubmVscyIsICAg ICJzZXQgY2hhbm5lbHMgdG8gZmlsdGVyIixPRkZTRVQoY2hhbm5lbHNfdG9fZmlsdGVyKSxBVl9P UFRfVFlQRV9TVFJJTkcsey5zdHI9ImFsbCJ9LDAsICAgIDAsIEZMQUdTIH0sCisgICAge05VTEx9 Cit9OworCitBVkZJTFRFUl9ERUZJTkVfQ0xBU1MoYWRyYyk7CisKK3N0YXRpYyB2b2lkIGdlbmVy YXRlX2hhbm5fd2luZG93KGZsb2F0ICp3aW5kb3csIGludCBzaXplKQoreworICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGZsb2F0IHZhbHVlID0gMC41ZiAqICgx LmYgLSBjb3NmKDIuZiAqIE1fUEkgKiBpIC8gc2l6ZSkpOworCisgICAgICAgIHdpbmRvd1tpXSA9 IHZhbHVlOworICAgIH0KK30KKworc3RhdGljIGludCBjb25maWdfaW5wdXQoQVZGaWx0ZXJMaW5r ICppbmxpbmspCit7CisgICAgQVZGaWx0ZXJDb250ZXh0ICpjdHggPSBpbmxpbmstPmRzdDsKKyAg ICBBdWRpb0RSQ0NvbnRleHQgKnMgPSBjdHgtPnByaXY7CisgICAgZmxvYXQgc2NhbGU7CisgICAg aW50IHJldDsKKworICAgIHMtPmZmdF9zaXplID0gaW5saW5rLT5zYW1wbGVfcmF0ZSA+IDEwMDAw MCA/IDEwMjQgOiBpbmxpbmstPnNhbXBsZV9yYXRlID4gNTAwMDAgPyA1MTIgOiAyNTY7CisgICAg cy0+ZnggPSBpbmxpbmstPnNhbXBsZV9yYXRlICogMC41ZiAvIChzLT5mZnRfc2l6ZSAvIDIgKyAx KTsKKyAgICBzLT5vdmVybGFwID0gcy0+ZmZ0X3NpemUgLyA0OworCisgICAgcy0+d2luZG93ID0g YXZfY2FsbG9jKHMtPmZmdF9zaXplLCBzaXplb2YoKnMtPndpbmRvdykpOworICAgIGlmICghcy0+ d2luZG93KQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAgcy0+ZHJjX2Zy YW1lICAgICAgPSBmZl9nZXRfYXVkaW9fYnVmZmVyKGlubGluaywgcy0+ZmZ0X3NpemUgKiAyKTsK KyAgICBzLT5lbmVyZ3kgICAgICAgICA9IGZmX2dldF9hdWRpb19idWZmZXIoaW5saW5rLCBzLT5m ZnRfc2l6ZSAvIDIgKyAxKTsKKyAgICBzLT5lbnZlbG9wZSAgICAgICA9IGZmX2dldF9hdWRpb19i dWZmZXIoaW5saW5rLCBzLT5mZnRfc2l6ZSAvIDIgKyAxKTsKKyAgICBzLT5mYWN0b3JzICAgICAg ICA9IGZmX2dldF9hdWRpb19idWZmZXIoaW5saW5rLCBzLT5mZnRfc2l6ZSAvIDIgKyAxKTsKKyAg ICBzLT5pbl9idWZmZXIgICAgICA9IGZmX2dldF9hdWRpb19idWZmZXIoaW5saW5rLCBzLT5mZnRf c2l6ZSAqIDIpOworICAgIHMtPmluX2ZyYW1lICAgICAgID0gZmZfZ2V0X2F1ZGlvX2J1ZmZlcihp bmxpbmssIHMtPmZmdF9zaXplICogMik7CisgICAgcy0+b3V0X2Rpc3RfZnJhbWUgPSBmZl9nZXRf YXVkaW9fYnVmZmVyKGlubGluaywgcy0+ZmZ0X3NpemUgKiAyKTsKKyAgICBzLT5zcGVjdHJ1bV9i dWYgICA9IGZmX2dldF9hdWRpb19idWZmZXIoaW5saW5rLCBzLT5mZnRfc2l6ZSAqIDIpOworICAg IHMtPnRhcmdldF9nYWluICAgID0gZmZfZ2V0X2F1ZGlvX2J1ZmZlcihpbmxpbmssIHMtPmZmdF9z aXplIC8gMiArIDEpOworICAgIHMtPndpbmRvd2VkX2ZyYW1lID0gZmZfZ2V0X2F1ZGlvX2J1ZmZl cihpbmxpbmssIHMtPmZmdF9zaXplICogMik7CisgICAgaWYgKCFzLT5pbl9idWZmZXIgfHwgIXMt PmluX2ZyYW1lIHx8ICFzLT50YXJnZXRfZ2FpbiB8fAorICAgICAgICAhcy0+b3V0X2Rpc3RfZnJh bWUgfHwgIXMtPndpbmRvd2VkX2ZyYW1lIHx8ICFzLT5lbnZlbG9wZSB8fAorICAgICAgICAhcy0+ ZHJjX2ZyYW1lIHx8ICFzLT5zcGVjdHJ1bV9idWYgfHwgIXMtPmVuZXJneSB8fCAhcy0+ZmFjdG9y cykKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKworICAgIGdlbmVyYXRlX2hhbm5f d2luZG93KHMtPndpbmRvdywgcy0+ZmZ0X3NpemUpOworCisgICAgcy0+Y2hhbm5lbHMgPSBpbmxp bmstPmNoX2xheW91dC5uYl9jaGFubmVsczsKKworICAgIHMtPnR4X2N0eCA9IGF2X2NhbGxvYyhz LT5jaGFubmVscywgc2l6ZW9mKCpzLT50eF9jdHgpKTsKKyAgICBzLT5pdHhfY3R4ID0gYXZfY2Fs bG9jKHMtPmNoYW5uZWxzLCBzaXplb2YoKnMtPml0eF9jdHgpKTsKKyAgICBpZiAoIXMtPnR4X2N0 eCB8fCAhcy0+aXR4X2N0eCkKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKworICAg IGZvciAoaW50IGNoID0gMDsgY2ggPCBzLT5jaGFubmVsczsgY2grKykgeworICAgICAgICBzY2Fs ZSA9IDEuZjsKKyAgICAgICAgcmV0ID0gYXZfdHhfaW5pdCgmcy0+dHhfY3R4W2NoXSwgJnMtPnR4 X2ZuLCBBVl9UWF9GTE9BVF9SREZULCAwLCBzLT5mZnRfc2l6ZSwgJnNjYWxlLCAwKTsKKyAgICAg ICAgaWYgKHJldCA8IDApCisgICAgICAgICAgICByZXR1cm4gcmV0OworCisgICAgICAgIHNjYWxl ID0gMS5mIC8gcy0+ZmZ0X3NpemU7CisgICAgICAgIHJldCA9IGF2X3R4X2luaXQoJnMtPml0eF9j dHhbY2hdLCAmcy0+aXR4X2ZuLCBBVl9UWF9GTE9BVF9SREZULCAxLCBzLT5mZnRfc2l6ZSwgJnNj YWxlLCAwKTsKKyAgICAgICAgaWYgKHJldCA8IDApCisgICAgICAgICAgICByZXR1cm4gcmV0Owor ICAgIH0KKworICAgIHMtPnZhcl92YWx1ZXNbVkFSX1NSXSA9IGlubGluay0+c2FtcGxlX3JhdGU7 CisgICAgcy0+dmFyX3ZhbHVlc1tWQVJfTkJfQ0hBTk5FTFNdID0gcy0+Y2hhbm5lbHM7CisKKyAg ICByZXR1cm4gYXZfZXhwcl9wYXJzZSgmcy0+ZXhwciwgcy0+ZXhwcl9zdHIsIHZhcl9uYW1lcywg TlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCAwLCBjdHgp OworfQorCitzdGF0aWMgdm9pZCBhcHBseV93aW5kb3coQXVkaW9EUkNDb250ZXh0ICpzLAorICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0ICppbl9mcmFtZSwgZmxvYXQgKm91dF9m cmFtZSwgY29uc3QgaW50IGFkZF90b19vdXRfZnJhbWUpCit7CisgICAgY29uc3QgZmxvYXQgKndp bmRvdyA9IHMtPndpbmRvdzsKKyAgICBjb25zdCBpbnQgZmZ0X3NpemUgPSBzLT5mZnRfc2l6ZTsK KworICAgIGlmIChhZGRfdG9fb3V0X2ZyYW1lKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgZmZ0X3NpemU7IGkrKykKKyAgICAgICAgICAgIG91dF9mcmFtZVtpXSArPSBpbl9mcmFtZVtp XSAqIHdpbmRvd1tpXTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8 IGZmdF9zaXplOyBpKyspCisgICAgICAgICAgICBvdXRfZnJhbWVbaV0gPSBpbl9mcmFtZVtpXSAq IHdpbmRvd1tpXTsKKyAgICB9Cit9CisKK3N0YXRpYyBmbG9hdCBzcXJmKGZsb2F0IHgpCit7Cisg ICAgcmV0dXJuIHggKiB4OworfQorCitzdGF0aWMgdm9pZCBnZXRfZW5lcmd5KEFWRmlsdGVyQ29u dGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuLAorICAgICAgICAgICAg ICAgICAgICAgICBmbG9hdCAqZW5lcmd5LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBm bG9hdCAqc3BlY3RyYWwpCit7CisgICAgZm9yIChpbnQgbiA9IDA7IG4gPCBsZW47IG4rKykKKyAg ICAgICAgZW5lcmd5W25dID0gMTAuZiAqIGxvZzEwZihzcXJmKHNwZWN0cmFsWzIgKiBuXSkgKyBz cXJmKHNwZWN0cmFsWzIgKiBuICsgMV0pKTsKK30KKworc3RhdGljIHZvaWQgZ2V0X3RhcmdldF9n YWluKEFWRmlsdGVyQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgKmdhaW4sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgKmVuZXJneSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkb3VibGUgKnZhcl92YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZmxvYXQgZngsIGludCBieXBhc3MpCit7CisgICAgQXVkaW9EUkNDb250ZXh0ICpzID0g Y3R4LT5wcml2OworCisgICAgaWYgKGJ5cGFzcykgeworICAgICAgICBtZW1jcHkoZ2FpbiwgZW5l cmd5LCBzaXplb2YoKmdhaW4pICogbGVuKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg IGZvciAoaW50IG4gPSAwOyBuIDwgbGVuOyBuKyspIHsKKyAgICAgICAgY29uc3QgZmxvYXQgWGcg PSBlbmVyZ3lbbl07CisKKyAgICAgICAgdmFyX3ZhbHVlc1tWQVJfUF0gPSBYZzsKKyAgICAgICAg dmFyX3ZhbHVlc1tWQVJfRl0gPSBuICogZng7CisKKyAgICAgICAgZ2FpbltuXSA9IGF2X2V4cHJf ZXZhbChzLT5leHByLCB2YXJfdmFsdWVzLCBzKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGdl dF9lbnZlbG9wZShBVkZpbHRlckNvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0ICplbnZlbG9wZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCAqZW5lcmd5LAorICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGZsb2F0ICpnYWluKQoreworICAgIEF1ZGlvRFJDQ29udGV4dCAq cyA9IGN0eC0+cHJpdjsKKyAgICBjb25zdCBmbG9hdCByZWxlYXNlID0gcy0+cmVsZWFzZTsKKyAg ICBjb25zdCBmbG9hdCBhdHRhY2sgPSBzLT5hdHRhY2s7CisKKyAgICBmb3IgKGludCBuID0gMDsg biA8IGxlbjsgbisrKSB7CisgICAgICAgIGNvbnN0IGZsb2F0IEJnID0gZ2FpbltuXSAtIGVuZXJn eVtuXTsKKyAgICAgICAgY29uc3QgZmxvYXQgVmcgPSBlbnZlbG9wZVtuXTsKKworICAgICAgICBp ZiAoQmcgPiBWZykgeworICAgICAgICAgICAgZW52ZWxvcGVbbl0gPSBhdHRhY2sgICogVmcgKyAo MS5mIC0gYXR0YWNrKSAgKiBCZzsKKyAgICAgICAgfSBlbHNlIGlmIChCZyA8PSBWZykgIHsKKyAg ICAgICAgICAgIGVudmVsb3BlW25dID0gcmVsZWFzZSAqIFZnICsgKDEuZiAtIHJlbGVhc2UpICog Qmc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbnZlbG9wZVtuXSA9IDAuZjsKKyAg ICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgZ2V0X2ZhY3RvcnMoQVZGaWx0ZXJDb250 ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuLAorICAgICAgICAgICAg ICAgICAgICAgICAgZmxvYXQgKmZhY3RvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBmbG9hdCAqZW52ZWxvcGUpCit7CisgICAgZm9yIChpbnQgbiA9IDA7IG4gPCBsZW47IG4rKykK KyAgICAgICAgZmFjdG9yc1tuXSA9IHNxcnRmKGZmX2V4cDEwZihlbnZlbG9wZVtuXSAvIDEwLmYp KTsKK30KKworc3RhdGljIHZvaWQgYXBwbHlfZmFjdG9ycyhBVkZpbHRlckNvbnRleHQgKmN0eCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgZmxvYXQgKnNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBm bG9hdCAqZmFjdG9ycykKK3sKKyAgICBmb3IgKGludCBuID0gMDsgbiA8IGxlbjsgbisrKSB7Cisg ICAgICAgIHNwZWN0cnVtWzIqbiswXSAqPSBmYWN0b3JzW25dOworICAgICAgICBzcGVjdHJ1bVsy Km4rMV0gKj0gZmFjdG9yc1tuXTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGZlZWQoQVZGaWx0 ZXJDb250ZXh0ICpjdHgsIGludCBjaCwKKyAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgKmlu X3NhbXBsZXMsIGZsb2F0ICpvdXRfc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgZmxvYXQgKmlu X2ZyYW1lLCBmbG9hdCAqb3V0X2Rpc3RfZnJhbWUsCisgICAgICAgICAgICAgICAgIGZsb2F0ICp3 aW5kb3dlZF9mcmFtZSwgZmxvYXQgKmRyY19mcmFtZSwKKyAgICAgICAgICAgICAgICAgZmxvYXQg KnNwZWN0cnVtX2J1ZiwgZmxvYXQgKmVuZXJneSwKKyAgICAgICAgICAgICAgICAgZmxvYXQgKnRh cmdldF9nYWluLCBmbG9hdCAqZW52ZWxvcGUsCisgICAgICAgICAgICAgICAgIGZsb2F0ICpmYWN0 b3JzKQoreworICAgIEF1ZGlvRFJDQ29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKyAgICBkb3VibGUg dmFyX3ZhbHVlc1tWQVJfVkFSU19OQl07CisgICAgY29uc3QgaW50IGZmdF9zaXplID0gcy0+ZmZ0 X3NpemU7CisgICAgY29uc3QgaW50IG5iX2NvZWZmcyA9IHMtPmZmdF9zaXplIC8gMiArIDE7Cisg ICAgY29uc3QgaW50IG92ZXJsYXAgPSBzLT5vdmVybGFwOworICAgIGVudW0gQVZDaGFubmVsIGNo YW5uZWwgPSBhdl9jaGFubmVsX2xheW91dF9jaGFubmVsX2Zyb21faW5kZXgoJmN0eC0+aW5wdXRz WzBdLT5jaF9sYXlvdXQsIGNoKTsKKyAgICBjb25zdCBpbnQgYnlwYXNzID0gYXZfY2hhbm5lbF9s YXlvdXRfaW5kZXhfZnJvbV9jaGFubmVsKCZzLT5jaF9sYXlvdXQsIGNoYW5uZWwpIDwgMDsKKwor ICAgIG1lbWNweSh2YXJfdmFsdWVzLCBzLT52YXJfdmFsdWVzLCBzaXplb2YodmFyX3ZhbHVlcykp OworCisgICAgdmFyX3ZhbHVlc1tWQVJfQ0hdID0gY2g7CisKKyAgICAvLyBzaGlmdCBpbi9vdXQg YnVmZmVycworICAgIG1lbW1vdmUoaW5fZnJhbWUsIGluX2ZyYW1lICsgb3ZlcmxhcCwgKGZmdF9z aXplIC0gb3ZlcmxhcCkgKiBzaXplb2YoKmluX2ZyYW1lKSk7CisgICAgbWVtbW92ZShvdXRfZGlz dF9mcmFtZSwgb3V0X2Rpc3RfZnJhbWUgKyBvdmVybGFwLCAoZmZ0X3NpemUgLSBvdmVybGFwKSAq IHNpemVvZigqb3V0X2Rpc3RfZnJhbWUpKTsKKworICAgIG1lbWNweShpbl9mcmFtZSArIGZmdF9z aXplIC0gb3ZlcmxhcCwgaW5fc2FtcGxlcywgc2l6ZW9mKCppbl9mcmFtZSkgKiBvdmVybGFwKTsK KyAgICBtZW1zZXQob3V0X2Rpc3RfZnJhbWUgKyBmZnRfc2l6ZSAtIG92ZXJsYXAsIDAsIHNpemVv Zigqb3V0X2Rpc3RfZnJhbWUpICogb3ZlcmxhcCk7CisKKyAgICBhcHBseV93aW5kb3cocywgaW5f ZnJhbWUsIHdpbmRvd2VkX2ZyYW1lLCAwKTsKKyAgICBzLT50eF9mbihzLT50eF9jdHhbY2hdLCBz cGVjdHJ1bV9idWYsIHdpbmRvd2VkX2ZyYW1lLCBzaXplb2YoZmxvYXQpKTsKKworICAgIGdldF9l bmVyZ3koY3R4LCBuYl9jb2VmZnMsIGVuZXJneSwgc3BlY3RydW1fYnVmKTsKKyAgICBnZXRfdGFy Z2V0X2dhaW4oY3R4LCBuYl9jb2VmZnMsIHRhcmdldF9nYWluLCBlbmVyZ3ksIHZhcl92YWx1ZXMs IHMtPmZ4LCBieXBhc3MpOworICAgIGdldF9lbnZlbG9wZShjdHgsIG5iX2NvZWZmcywgZW52ZWxv cGUsIGVuZXJneSwgdGFyZ2V0X2dhaW4pOworICAgIGdldF9mYWN0b3JzKGN0eCwgbmJfY29lZmZz LCBmYWN0b3JzLCBlbnZlbG9wZSk7CisgICAgYXBwbHlfZmFjdG9ycyhjdHgsIG5iX2NvZWZmcywg c3BlY3RydW1fYnVmLCBmYWN0b3JzKTsKKworICAgIHMtPml0eF9mbihzLT5pdHhfY3R4W2NoXSwg ZHJjX2ZyYW1lLCBzcGVjdHJ1bV9idWYsIHNpemVvZihBVkNvbXBsZXhGbG9hdCkpOworCisgICAg YXBwbHlfd2luZG93KHMsIGRyY19mcmFtZSwgb3V0X2Rpc3RfZnJhbWUsIDEpOworCisgICAgLy8g NCB0aW1lcyBvdmVybGFwIHdpdGggc3F1YXJlZCBoYW5uaW5nIHdpbmRvdyByZXN1bHRzIGluIDEu NSB0aW1lIGluY3JlYXNlIGluIGFtcGxpdHVkZQorICAgIGlmICghY3R4LT5pc19kaXNhYmxlZCkg eworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG92ZXJsYXA7IGkrKykKKyAgICAgICAgICAg IG91dF9zYW1wbGVzW2ldID0gb3V0X2Rpc3RfZnJhbWVbaV0gLyAxLjVmOworICAgIH0gZWxzZSB7 CisgICAgICAgIG1lbWNweShvdXRfc2FtcGxlcywgaW5fZnJhbWUsIHNpemVvZigqb3V0X3NhbXBs ZXMpICogb3ZlcmxhcCk7CisgICAgfQorfQorCitzdGF0aWMgaW50IGRyY19jaGFubmVsKEFWRmls dGVyQ29udGV4dCAqY3R4LCBBVkZyYW1lICppbiwgQVZGcmFtZSAqb3V0LCBpbnQgY2gpCit7Cisg ICAgQXVkaW9EUkNDb250ZXh0ICpzID0gY3R4LT5wcml2OworICAgIGNvbnN0IGZsb2F0ICpzcmMg PSAoY29uc3QgZmxvYXQgKilpbi0+ZXh0ZW5kZWRfZGF0YVtjaF07CisgICAgZmxvYXQgKmluX2J1 ZmZlciA9IChmbG9hdCAqKXMtPmluX2J1ZmZlci0+ZXh0ZW5kZWRfZGF0YVtjaF07CisgICAgZmxv YXQgKmRzdCA9IChmbG9hdCAqKW91dC0+ZXh0ZW5kZWRfZGF0YVtjaF07CisKKyAgICBtZW1jcHko aW5fYnVmZmVyLCBzcmMsIHNpemVvZigqaW5fYnVmZmVyKSAqIHMtPm92ZXJsYXApOworCisgICAg ZmVlZChjdHgsIGNoLCBpbl9idWZmZXIsIGRzdCwKKyAgICAgICAgIChmbG9hdCAqKShzLT5pbl9m cmFtZS0+ZXh0ZW5kZWRfZGF0YVtjaF0pLAorICAgICAgICAgKGZsb2F0ICopKHMtPm91dF9kaXN0 X2ZyYW1lLT5leHRlbmRlZF9kYXRhW2NoXSksCisgICAgICAgICAoZmxvYXQgKikocy0+d2luZG93 ZWRfZnJhbWUtPmV4dGVuZGVkX2RhdGFbY2hdKSwKKyAgICAgICAgIChmbG9hdCAqKShzLT5kcmNf ZnJhbWUtPmV4dGVuZGVkX2RhdGFbY2hdKSwKKyAgICAgICAgIChmbG9hdCAqKShzLT5zcGVjdHJ1 bV9idWYtPmV4dGVuZGVkX2RhdGFbY2hdKSwKKyAgICAgICAgIChmbG9hdCAqKShzLT5lbmVyZ3kt PmV4dGVuZGVkX2RhdGFbY2hdKSwKKyAgICAgICAgIChmbG9hdCAqKShzLT50YXJnZXRfZ2Fpbi0+ ZXh0ZW5kZWRfZGF0YVtjaF0pLAorICAgICAgICAgKGZsb2F0ICopKHMtPmVudmVsb3BlLT5leHRl bmRlZF9kYXRhW2NoXSksCisgICAgICAgICAoZmxvYXQgKikocy0+ZmFjdG9ycy0+ZXh0ZW5kZWRf ZGF0YVtjaF0pKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRyY19jaGFubmVs cyhBVkZpbHRlckNvbnRleHQgKmN0eCwgdm9pZCAqYXJnLCBpbnQgam9ibnIsIGludCBuYl9qb2Jz KQoreworICAgIEF1ZGlvRFJDQ29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKyAgICBBVkZyYW1lICpp biA9IHMtPmluOworICAgIEFWRnJhbWUgKm91dCA9IGFyZzsKKyAgICBjb25zdCBpbnQgc3RhcnQg PSAob3V0LT5jaF9sYXlvdXQubmJfY2hhbm5lbHMgKiBqb2JucikgLyBuYl9qb2JzOworICAgIGNv bnN0IGludCBlbmQgPSAob3V0LT5jaF9sYXlvdXQubmJfY2hhbm5lbHMgKiAoam9ibnIrMSkpIC8g bmJfam9iczsKKworICAgIGZvciAoaW50IGNoID0gc3RhcnQ7IGNoIDwgZW5kOyBjaCsrKQorICAg ICAgICBkcmNfY2hhbm5lbChjdHgsIGluLCBvdXQsIGNoKTsKKworICAgIHJldHVybiAwOworfQor CitzdGF0aWMgaW50IGZpbHRlcl9mcmFtZShBVkZpbHRlckxpbmsgKmlubGluaywgQVZGcmFtZSAq aW4pCit7CisgICAgQVZGaWx0ZXJDb250ZXh0ICpjdHggPSBpbmxpbmstPmRzdDsKKyAgICBBVkZp bHRlckxpbmsgKm91dGxpbmsgPSBjdHgtPm91dHB1dHNbMF07CisgICAgQXVkaW9EUkNDb250ZXh0 ICpzID0gY3R4LT5wcml2OworICAgIEFWRnJhbWUgKm91dDsKKyAgICBpbnQgcmV0OworCisgICAg b3V0ID0gZmZfZ2V0X2F1ZGlvX2J1ZmZlcihvdXRsaW5rLCBzLT5vdmVybGFwKTsKKyAgICBpZiAo IW91dCkgeworICAgICAgICByZXQgPSBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgIGdvdG8gZmFp bDsKKyAgICB9CisKKyAgICBzLT52YXJfdmFsdWVzW1ZBUl9TTl0gPSBvdXRsaW5rLT5zYW1wbGVf Y291bnRfaW47CisgICAgcy0+dmFyX3ZhbHVlc1tWQVJfVF0gPSBzLT52YXJfdmFsdWVzW1ZBUl9T Tl0gKiAoZG91YmxlKTEvb3V0bGluay0+c2FtcGxlX3JhdGU7CisKKyAgICBzLT5pbiA9IGluOwor ICAgIGF2X2ZyYW1lX2NvcHlfcHJvcHMob3V0LCBpbik7CisgICAgZmZfZmlsdGVyX2V4ZWN1dGUo Y3R4LCBkcmNfY2hhbm5lbHMsIG91dCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICBGRk1J TihvdXRsaW5rLT5jaF9sYXlvdXQubmJfY2hhbm5lbHMsIGZmX2ZpbHRlcl9nZXRfbmJfdGhyZWFk cyhjdHgpKSk7CisKKyAgICBvdXQtPnB0cyA9IGluLT5wdHM7CisgICAgb3V0LT5uYl9zYW1wbGVz ID0gaW4tPm5iX3NhbXBsZXM7CisgICAgcmV0ID0gZmZfZmlsdGVyX2ZyYW1lKG91dGxpbmssIG91 dCk7CitmYWlsOgorICAgIGF2X2ZyYW1lX2ZyZWUoJmluKTsKKyAgICBzLT5pbiA9IE5VTEw7Cisg ICAgcmV0dXJuIHJldCA8IDAgPyByZXQgOiAwOworfQorCitzdGF0aWMgaW50IGFjdGl2YXRlKEFW RmlsdGVyQ29udGV4dCAqY3R4KQoreworICAgIEFWRmlsdGVyTGluayAqaW5saW5rID0gY3R4LT5p bnB1dHNbMF07CisgICAgQVZGaWx0ZXJMaW5rICpvdXRsaW5rID0gY3R4LT5vdXRwdXRzWzBdOwor ICAgIEF1ZGlvRFJDQ29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKyAgICBBVkZyYW1lICppbiA9IE5V TEw7CisgICAgaW50IHJldCA9IDAsIHN0YXR1czsKKyAgICBpbnQ2NF90IHB0czsKKworICAgIHJl dCA9IGF2X2NoYW5uZWxfbGF5b3V0X2NvcHkoJnMtPmNoX2xheW91dCwgJmlubGluay0+Y2hfbGF5 b3V0KTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICBpZiAoc3Ry Y21wKHMtPmNoYW5uZWxzX3RvX2ZpbHRlciwgImFsbCIpKQorICAgICAgICBhdl9jaGFubmVsX2xh eW91dF9mcm9tX3N0cmluZygmcy0+Y2hfbGF5b3V0LCBzLT5jaGFubmVsc190b19maWx0ZXIpOwor CisgICAgRkZfRklMVEVSX0ZPUldBUkRfU1RBVFVTX0JBQ0sob3V0bGluaywgaW5saW5rKTsKKwor ICAgIHJldCA9IGZmX2lubGlua19jb25zdW1lX3NhbXBsZXMoaW5saW5rLCBzLT5vdmVybGFwLCBz LT5vdmVybGFwLCAmaW4pOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0Owor CisgICAgaWYgKHJldCA+IDApIHsKKyAgICAgICAgcy0+YXR0YWNrICA9IGV4cGYoLTEuZiAvIChz LT5hdHRhY2tfbXMgICogaW5saW5rLT5zYW1wbGVfcmF0ZSAvIDEwMDAuZikpOworICAgICAgICBz LT5yZWxlYXNlID0gZXhwZigtMS5mIC8gKHMtPnJlbGVhc2VfbXMgKiBpbmxpbmstPnNhbXBsZV9y YXRlIC8gMTAwMC5mKSk7CisKKyAgICAgICAgcmV0dXJuIGZpbHRlcl9mcmFtZShpbmxpbmssIGlu KTsKKyAgICB9IGVsc2UgaWYgKGZmX2lubGlua19hY2tub3dsZWRnZV9zdGF0dXMoaW5saW5rLCAm c3RhdHVzLCAmcHRzKSkgeworICAgICAgICBmZl9vdXRsaW5rX3NldF9zdGF0dXMob3V0bGluaywg c3RhdHVzLCBwdHMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBp ZiAoZmZfaW5saW5rX3F1ZXVlZF9zYW1wbGVzKGlubGluaykgPj0gcy0+b3ZlcmxhcCkgeworICAg ICAgICAgICAgZmZfZmlsdGVyX3NldF9yZWFkeShjdHgsIDEwKTsKKyAgICAgICAgfSBlbHNlIGlm IChmZl9vdXRsaW5rX2ZyYW1lX3dhbnRlZChvdXRsaW5rKSkgeworICAgICAgICAgICAgZmZfaW5s aW5rX3JlcXVlc3RfZnJhbWUoaW5saW5rKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsK KyAgICB9Cit9CisKK3N0YXRpYyBhdl9jb2xkIHZvaWQgdW5pbml0KEFWRmlsdGVyQ29udGV4dCAq Y3R4KQoreworICAgIEF1ZGlvRFJDQ29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKworICAgIGF2X2No YW5uZWxfbGF5b3V0X3VuaW5pdCgmcy0+Y2hfbGF5b3V0KTsKKworICAgIGF2X2V4cHJfZnJlZShz LT5leHByKTsKKyAgICBzLT5leHByID0gTlVMTDsKKworICAgIGF2X2ZyZWVwKCZzLT53aW5kb3cp OworCisgICAgYXZfZnJhbWVfZnJlZSgmcy0+ZHJjX2ZyYW1lKTsKKyAgICBhdl9mcmFtZV9mcmVl KCZzLT5lbmVyZ3kpOworICAgIGF2X2ZyYW1lX2ZyZWUoJnMtPmVudmVsb3BlKTsKKyAgICBhdl9m cmFtZV9mcmVlKCZzLT5mYWN0b3JzKTsKKyAgICBhdl9mcmFtZV9mcmVlKCZzLT5pbl9idWZmZXIp OworICAgIGF2X2ZyYW1lX2ZyZWUoJnMtPmluX2ZyYW1lKTsKKyAgICBhdl9mcmFtZV9mcmVlKCZz LT5vdXRfZGlzdF9mcmFtZSk7CisgICAgYXZfZnJhbWVfZnJlZSgmcy0+c3BlY3RydW1fYnVmKTsK KyAgICBhdl9mcmFtZV9mcmVlKCZzLT50YXJnZXRfZ2Fpbik7CisgICAgYXZfZnJhbWVfZnJlZSgm cy0+d2luZG93ZWRfZnJhbWUpOworCisgICAgZm9yIChpbnQgY2ggPSAwOyBjaCA8IHMtPmNoYW5u ZWxzOyBjaCsrKSB7CisgICAgICAgIGlmIChzLT50eF9jdHgpCisgICAgICAgICAgICBhdl90eF91 bmluaXQoJnMtPnR4X2N0eFtjaF0pOworICAgICAgICBpZiAocy0+aXR4X2N0eCkKKyAgICAgICAg ICAgIGF2X3R4X3VuaW5pdCgmcy0+aXR4X2N0eFtjaF0pOworICAgIH0KKworICAgIGF2X2ZyZWVw KCZzLT50eF9jdHgpOworICAgIGF2X2ZyZWVwKCZzLT5pdHhfY3R4KTsKK30KKworc3RhdGljIGlu dCBwcm9jZXNzX2NvbW1hbmQoQVZGaWx0ZXJDb250ZXh0ICpjdHgsIGNvbnN0IGNoYXIgKmNtZCwg Y29uc3QgY2hhciAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnJlcywg aW50IHJlc19sZW4sIGludCBmbGFncykKK3sKKyAgICBBdWRpb0RSQ0NvbnRleHQgKnMgPSBjdHgt PnByaXY7CisgICAgY2hhciAqb2xkX2V4cHJfc3RyID0gYXZfc3RyZHVwKHMtPmV4cHJfc3RyKTsK KyAgICBpbnQgcmV0OworCisgICAgcmV0ID0gZmZfZmlsdGVyX3Byb2Nlc3NfY29tbWFuZChjdHgs IGNtZCwgYXJncywgcmVzLCByZXNfbGVuLCBmbGFncyk7CisgICAgaWYgKHJldCA+PSAwICYmIHN0 cmNtcChvbGRfZXhwcl9zdHIsIHMtPmV4cHJfc3RyKSkgeworICAgICAgICByZXQgPSBhdl9leHBy X3BhcnNlKCZzLT5leHByLCBzLT5leHByX3N0ciwgdmFyX25hbWVzLCBOVUxMLCBOVUxMLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIDAsIGN0eCk7CisgICAgfQorICAg IGF2X2ZyZWUob2xkX2V4cHJfc3RyKTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgY29u c3QgQVZGaWx0ZXJQYWQgaW5wdXRzW10gPSB7CisgICAgeworICAgICAgICAubmFtZSAgICAgICAg ID0gImRlZmF1bHQiLAorICAgICAgICAudHlwZSAgICAgICAgID0gQVZNRURJQV9UWVBFX0FVRElP LAorICAgICAgICAuY29uZmlnX3Byb3BzID0gY29uZmlnX2lucHV0LAorICAgIH0sCit9OworCitz dGF0aWMgY29uc3QgQVZGaWx0ZXJQYWQgb3V0cHV0c1tdID0geworICAgIHsKKyAgICAgICAgLm5h bWUgPSAiZGVmYXVsdCIsCisgICAgICAgIC50eXBlID0gQVZNRURJQV9UWVBFX0FVRElPLAorICAg IH0sCit9OworCitjb25zdCBBVkZpbHRlciBmZl9hZl9hZHJjID0geworICAgIC5uYW1lICAgICAg ICAgICAgPSAiYWRyYyIsCisgICAgLmRlc2NyaXB0aW9uICAgICA9IE5VTExfSUZfQ09ORklHX1NN QUxMKCJBdWRpbyBTcGVjdHJhbCBEeW5hbWljIFJhbmdlIENvbnRyb2xsZXIuIiksCisgICAgLnBy aXZfc2l6ZSAgICAgICA9IHNpemVvZihBdWRpb0RSQ0NvbnRleHQpLAorICAgIC5wcml2X2NsYXNz ICAgICAgPSAmYWRyY19jbGFzcywKKyAgICAudW5pbml0ICAgICAgICAgID0gdW5pbml0LAorICAg IEZJTFRFUl9JTlBVVFMoaW5wdXRzKSwKKyAgICBGSUxURVJfT1VUUFVUUyhvdXRwdXRzKSwKKyAg ICBGSUxURVJfU0lOR0xFX1NBTVBMRUZNVChBVl9TQU1QTEVfRk1UX0ZMVFApLAorICAgIC5mbGFn cyAgICAgICAgICAgPSBBVkZJTFRFUl9GTEFHX1NVUFBPUlRfVElNRUxJTkVfSU5URVJOQUwgfAor ICAgICAgICAgICAgICAgICAgICAgICBBVkZJTFRFUl9GTEFHX1NMSUNFX1RIUkVBRFMsCisgICAg LmFjdGl2YXRlICAgICAgICA9IGFjdGl2YXRlLAorICAgIC5wcm9jZXNzX2NvbW1hbmQgPSBwcm9j ZXNzX2NvbW1hbmQsCit9OwpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jIGIv bGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jCmluZGV4IDRmYmU0ODg5NTQuLmEyOWRmZjBiZGYgMTAw NjQ0Ci0tLSBhL2xpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYworKysgYi9saWJhdmZpbHRlci9hbGxm aWx0ZXJzLmMKQEAgLTM1LDYgKzM1LDcgQEAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2FmX2Fk ZWNvcnJlbGF0ZTsKIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl9hZl9hZGVsYXk7CiBleHRlcm4g Y29uc3QgQVZGaWx0ZXIgZmZfYWZfYWRlbm9ybTsKIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl9h Zl9hZGVyaXZhdGl2ZTsKK2V4dGVybiBjb25zdCBBVkZpbHRlciBmZl9hZl9hZHJjOwogZXh0ZXJu IGNvbnN0IEFWRmlsdGVyIGZmX2FmX2FkeW5hbWljZXF1YWxpemVyOwogZXh0ZXJuIGNvbnN0IEFW RmlsdGVyIGZmX2FmX2FkeW5hbWljc21vb3RoOwogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2Fm X2FlY2hvOwotLSAKMi4zNy4yCgo= --000000000000d4dea705ef786a90 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". --000000000000d4dea705ef786a90--