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 D3C3D40118 for ; Sat, 3 Dec 2022 12:50:19 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0D9C768B61D; Sat, 3 Dec 2022 14:50:16 +0200 (EET) Received: from mail-vs1-f45.google.com (mail-vs1-f45.google.com [209.85.217.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BCDAA68ADCE for ; Sat, 3 Dec 2022 14:50:09 +0200 (EET) Received: by mail-vs1-f45.google.com with SMTP id t5so7059042vsh.8 for ; Sat, 03 Dec 2022 04:50:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=KUQqk5mJnOP5yVbAkWSfQNwIL8fm1YZdND8uOLRMULg=; b=Sz3rEeE6AV+Y4VUndl3r0ENTGtGAkoYD8zDFTe4jDda/41HDfGh0TOpcCgKmY2J20l ZGq5SF8umefVHCaARM4DWdVuY6I10/iMrLE8NuHtXXt5HPN6Fa8P2zbcjrpXeNvyUN27 rtvqXhTdreinYacBwG2+rM+byNC7JYpBt5t1biDHbdFo6r4wcMPQSQB4zMDS/d4qnQcE 2LcY0g8bgdwrZyW9um5nDgk4LuZ8PkINzI6PAwUQ1dauyx9ObskJUaJStsAsnGp9mK0i HB/AYSypBKClzModuv0bbHo/6bVJVb84+yeeM1F8TSVhTXP2eHiWGJbJDqqVhDe8myik 988w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=KUQqk5mJnOP5yVbAkWSfQNwIL8fm1YZdND8uOLRMULg=; b=Va9oV/OIKmdzyPCf+wxwVuMA93C+F8PLKHPczEq9pvC4Bujx8ziP/MzCoIPUV8WG91 /UHKbl77hct2L9y53074SW9S79UIDw5qdyrUntS5UJ9u+Z0aNJjJzhoY0htBSbLwwP5w VMMJ++Bddc1y5qZwoxaOqmFay2Mn37RCOr2LXELX7guwJXbblTytnHVn7waZ1kBW00WJ uT4/Qf20JfXyK3yQ6BZ79ADBL6N93PtBX/dFhmVZ+OkRcoWkisbuOEw0syFnDN5C7cPX VSyE3FrYjHt+duJD73tbyu5uexYPGR5flUvo4Jo6yaf5cSYi2scnWR/p/BR6Xx4xpW2N CbiQ== X-Gm-Message-State: ANoB5pmUDVs6RStGtRkInLbiY5wqfrt4v7Io4f8vw/tvhX8C79GMw7cE DKxk/u6BOy0tyY4nHS8TjCgaHsgCzv9B2cTi/ZO0YmOT X-Google-Smtp-Source: AA0mqf5urV90yyqVpgZ2ZHjFMB7G6ary4XKAFqQ6hVZ4ZKlzLmIuuJuy81J5ciFftXL8/HWRVUt1kNbKof99NIc0NPw= X-Received: by 2002:a67:c906:0:b0:3aa:f64:fbfd with SMTP id w6-20020a67c906000000b003aa0f64fbfdmr33843268vsk.15.1670071807887; Sat, 03 Dec 2022 04:50:07 -0800 (PST) MIME-Version: 1.0 Received: by 2002:a05:612c:2428:b0:32a:5eaa:92e4 with HTTP; Sat, 3 Dec 2022 04:50:06 -0800 (PST) From: Paul B Mahol Date: Sat, 3 Dec 2022 13:50:06 +0100 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="000000000000dc00e605eeebe4c6" Subject: [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: --000000000000dc00e605eeebe4c6 Content-Type: text/plain; charset="UTF-8" Patch attached. TODO: add documentation and examples with various transfer expressions (compressor, expander, limiter, gate, etc). --000000000000dc00e605eeebe4c6 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 RnJvbSBkYTk4ZmZiYTAzNzQ5OTgyNWU1MjMwNWJhMjNmMjEwODNlNDM2ZTRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IE1vbiwgNyBOb3YgMjAyMiAyMTowMDo1MCArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIGF2ZmlsdGVy OiBhZGQgYWRyYyBmaWx0ZXIKClNpZ25lZC1vZmYtYnk6IFBhdWwgQiBNYWhvbCA8b25lbWRhQGdt YWlsLmNvbT4KLS0tCiBsaWJhdmZpbHRlci9NYWtlZmlsZSAgICAgfCAgIDEgKwogbGliYXZmaWx0 ZXIvYWZfYWRyYy5jICAgIHwgNDY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwg NDcwIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci9hZl9hZHJj LmMKCmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9NYWtlZmlsZSBiL2xpYmF2ZmlsdGVyL01ha2Vm aWxlCmluZGV4IDU3MjZhZDBjNzYuLjI3OTFiNmE5NTAgMTAwNjQ0Ci0tLSBhL2xpYmF2ZmlsdGVy L01ha2VmaWxlCisrKyBiL2xpYmF2ZmlsdGVyL01ha2VmaWxlCkBAIC00OCw2ICs0OCw3IEBAIE9C SlMtJChDT05GSUdfQURFQ09SUkVMQVRFX0ZJTFRFUikgICAgICAgICAgICs9IGFmX2FkZWNvcnJl bGF0ZS5vCiBPQkpTLSQoQ09ORklHX0FERUxBWV9GSUxURVIpICAgICAgICAgICAgICAgICArPSBh Zl9hZGVsYXkubwogT0JKUy0kKENPTkZJR19BREVOT1JNX0ZJTFRFUikgICAgICAgICAgICAgICAg Kz0gYWZfYWRlbm9ybS5vCiBPQkpTLSQoQ09ORklHX0FERVJJVkFUSVZFX0ZJTFRFUikgICAgICAg ICAgICArPSBhZl9hZGVyaXZhdGl2ZS5vCitPQkpTLSQoQ09ORklHX0FEUkNfRklMVEVSKSAgICAg ICAgICAgICAgICAgICArPSBhZl9hZHJjLm8KIE9CSlMtJChDT05GSUdfQURZTkFNSUNFUVVBTEla RVJfRklMVEVSKSAgICAgICs9IGFmX2FkeW5hbWljZXF1YWxpemVyLm8KIE9CSlMtJChDT05GSUdf QURZTkFNSUNTTU9PVEhfRklMVEVSKSAgICAgICAgICs9IGFmX2FkeW5hbWljc21vb3RoLm8KIE9C SlMtJChDT05GSUdfQUVDSE9fRklMVEVSKSAgICAgICAgICAgICAgICAgICs9IGFmX2FlY2hvLm8K ZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2FmX2FkcmMuYyBiL2xpYmF2ZmlsdGVyL2FmX2FkcmMu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43ZjVjNmIzNTI4Ci0tLSAv ZGV2L251bGwKKysrIGIvbGliYXZmaWx0ZXIvYWZfYWRyYy5jCkBAIC0wLDAgKzEsNDY4IEBACisv KgorICogQ29weXJpZ2h0IChjKSAyMDIyIFBhdWwgQiBNYWhvbAorICoKKyAqIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK KyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcg d2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5k YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg MDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSA8ZmxvYXQuaD4KKworI2luY2x1ZGUgImxp YmF2dXRpbC9ldmFsLmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL2ZmbWF0aC5oIgorI2luY2x1ZGUg ImxpYmF2dXRpbC9vcHQuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvdHguaCIKKyNpbmNsdWRlICJh dWRpby5oIgorI2luY2x1ZGUgImF2ZmlsdGVyLmgiCisjaW5jbHVkZSAiZmlsdGVycy5oIgorI2lu Y2x1ZGUgImludGVybmFsLmgiCisKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdmFyX25hbWVz W10gPSB7CisgICAgImNoIiwgICAgICAgICAgIC8vLzwgdGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50 IGNoYW5uZWwKKyAgICAic24iLCAgICAgICAgICAgLy8vPCBudW1iZXIgb2Ygc2FtcGxlcworICAg ICJuYl9jaGFubmVscyIsCisgICAgInQiLCAgICAgICAgICAgIC8vLzwgdGltZXN0YW1wIGV4cHJl c3NlZCBpbiBzZWNvbmRzCisgICAgInNyIiwgICAgICAgICAgIC8vLzwgc2FtcGxlIHJhdGUKKyAg ICAiZyIsICAgICAgICAgICAgLy8vPCBpbnB1dCBnYWluCisgICAgImYiLCAgICAgICAgICAgIC8v LzwgZnJlcXVlbmN5CisgICAgTlVMTAorfTsKKworZW51bSB2YXJfbmFtZSB7CisgICAgVkFSX0NI LAorICAgIFZBUl9TTiwKKyAgICBWQVJfTkJfQ0hBTk5FTFMsCisgICAgVkFSX1QsCisgICAgVkFS X1NSLAorICAgIFZBUl9HLAorICAgIFZBUl9GLAorICAgIFZBUl9WQVJTX05CCit9OworCit0eXBl ZGVmIHN0cnVjdCBBdWRpb0RSQ0NvbnRleHQgeworICAgIGNvbnN0IEFWQ2xhc3MgKmNsYXNzOwor CisgICAgZG91YmxlIGF0dGFja19tczsKKyAgICBkb3VibGUgcmVsZWFzZV9tczsKKyAgICBjaGFy ICpleHByX3N0cjsKKworICAgIGRvdWJsZSBhdHRhY2s7CisgICAgZG91YmxlIHJlbGVhc2U7CisK KyAgICBpbnQgZmZ0X3NpemU7CisgICAgaW50IG92ZXJsYXA7CisgICAgaW50IGNoYW5uZWxzOwor CisgICAgZmxvYXQgKndpbmRvdzsKKworICAgIEFWRnJhbWUgKmRyY19mcmFtZTsKKyAgICBBVkZy YW1lICplbmVyZ3k7CisgICAgQVZGcmFtZSAqZW52ZWxvcGU7CisgICAgQVZGcmFtZSAqZmFjdG9y czsKKyAgICBBVkZyYW1lICppbjsKKyAgICBBVkZyYW1lICppbl9idWZmZXI7CisgICAgQVZGcmFt ZSAqaW5fZnJhbWU7CisgICAgQVZGcmFtZSAqb3V0X2Rpc3RfZnJhbWU7CisgICAgQVZGcmFtZSAq c3BlY3RydW1fYnVmOworICAgIEFWRnJhbWUgKnRhcmdldF9nYWluOworICAgIEFWRnJhbWUgKndp bmRvd2VkX2ZyYW1lOworCisgICAgQVZUWENvbnRleHQgKip0eF9jdHg7CisgICAgYXZfdHhfZm4g dHhfZm47CisgICAgQVZUWENvbnRleHQgKippdHhfY3R4OworICAgIGF2X3R4X2ZuIGl0eF9mbjsK KworICAgIEFWRXhwciAqZXhwcjsKKyAgICBkb3VibGUgdmFyX3ZhbHVlc1tWQVJfVkFSU19OQl07 Cit9IEF1ZGlvRFJDQ29udGV4dDsKKworI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoQXVkaW9E UkNDb250ZXh0LCB4KQorI2RlZmluZSBGTEFHUyBBVl9PUFRfRkxBR19BVURJT19QQVJBTSB8IEFW X09QVF9GTEFHX0ZJTFRFUklOR19QQVJBTSB8IEFWX09QVF9GTEFHX1JVTlRJTUVfUEFSQU0KKwor c3RhdGljIGNvbnN0IEFWT3B0aW9uIGFkcmNfb3B0aW9uc1tdID0geworICAgIHsgInRyYW5zZmVy IiwgICAgInNldCB0aGUgdHJhbnNmZXIgZXhwcmVzc2lvbiIsIE9GRlNFVChleHByX3N0ciksICAg QVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0cj0iZyJ9LCAgMCwgICAgMCwgRkxBR1MgfSwKKyAgICB7 ICJhdHRhY2siLCAgICAgICJzZXQgdGhlIGF0dGFjayIsICAgICAgICAgICAgICBPRkZTRVQoYXR0 YWNrX21zKSwgIEFWX09QVF9UWVBFX0RPVUJMRSwgey5kYmw9NTAufSwgIDEsIDEwMDAsIEZMQUdT IH0sCisgICAgeyAicmVsZWFzZSIsICAgICAic2V0IHRoZSByZWxlYXNlIiwgICAgICAgICAgICAg T0ZGU0VUKHJlbGVhc2VfbXMpLCBBVl9PUFRfVFlQRV9ET1VCTEUsIHsuZGJsPTEwMC59LCA1LCAy MDAwLCBGTEFHUyB9LAorICAgIHtOVUxMfQorfTsKKworQVZGSUxURVJfREVGSU5FX0NMQVNTKGFk cmMpOworCitzdGF0aWMgdm9pZCBnZW5lcmF0ZV9oYW5uX3dpbmRvdyhmbG9hdCAqd2luZG93LCBp bnQgc2l6ZSkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAg ICBmbG9hdCB2YWx1ZSA9IDAuNWYgKiAoMS5mIC0gY29zZigyLmYgKiBNX1BJICogaSAvIHNpemUp KTsKKworICAgICAgICB3aW5kb3dbaV0gPSB2YWx1ZTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQg Y29uZmlnX2lucHV0KEFWRmlsdGVyTGluayAqaW5saW5rKQoreworICAgIEFWRmlsdGVyQ29udGV4 dCAqY3R4ID0gaW5saW5rLT5kc3Q7CisgICAgQXVkaW9EUkNDb250ZXh0ICpzID0gY3R4LT5wcml2 OworICAgIGZsb2F0IHNjYWxlOworICAgIGludCByZXQ7CisKKyAgICBzLT5mZnRfc2l6ZSA9IGlu bGluay0+c2FtcGxlX3JhdGUgPiAxMDAwMDAgPyAxMDI0IDogaW5saW5rLT5zYW1wbGVfcmF0ZSA+ IDUwMDAwID8gNTEyIDogMjU2OworICAgIHMtPm92ZXJsYXAgPSBzLT5mZnRfc2l6ZSAvIDQ7CisK KyAgICBzLT53aW5kb3cgPSBhdl9jYWxsb2Mocy0+ZmZ0X3NpemUsIHNpemVvZigqcy0+d2luZG93 KSk7CisgICAgaWYgKCFzLT53aW5kb3cpCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7 CisKKyAgICBzLT5kcmNfZnJhbWUgICAgICA9IGZmX2dldF9hdWRpb19idWZmZXIoaW5saW5rLCBz LT5mZnRfc2l6ZSAqIDIpOworICAgIHMtPmVuZXJneSAgICAgICAgID0gZmZfZ2V0X2F1ZGlvX2J1 ZmZlcihpbmxpbmssIHMtPmZmdF9zaXplIC8gMiArIDEpOworICAgIHMtPmVudmVsb3BlICAgICAg ID0gZmZfZ2V0X2F1ZGlvX2J1ZmZlcihpbmxpbmssIHMtPmZmdF9zaXplIC8gMiArIDEpOworICAg IHMtPmZhY3RvcnMgICAgICAgID0gZmZfZ2V0X2F1ZGlvX2J1ZmZlcihpbmxpbmssIHMtPmZmdF9z aXplIC8gMiArIDEpOworICAgIHMtPmluX2J1ZmZlciAgICAgID0gZmZfZ2V0X2F1ZGlvX2J1ZmZl cihpbmxpbmssIHMtPmZmdF9zaXplICogMik7CisgICAgcy0+aW5fZnJhbWUgICAgICAgPSBmZl9n ZXRfYXVkaW9fYnVmZmVyKGlubGluaywgcy0+ZmZ0X3NpemUgKiAyKTsKKyAgICBzLT5vdXRfZGlz dF9mcmFtZSA9IGZmX2dldF9hdWRpb19idWZmZXIoaW5saW5rLCBzLT5mZnRfc2l6ZSAqIDIpOwor ICAgIHMtPnNwZWN0cnVtX2J1ZiAgID0gZmZfZ2V0X2F1ZGlvX2J1ZmZlcihpbmxpbmssIHMtPmZm dF9zaXplICogMik7CisgICAgcy0+dGFyZ2V0X2dhaW4gICAgPSBmZl9nZXRfYXVkaW9fYnVmZmVy KGlubGluaywgcy0+ZmZ0X3NpemUgLyAyICsgMSk7CisgICAgcy0+d2luZG93ZWRfZnJhbWUgPSBm Zl9nZXRfYXVkaW9fYnVmZmVyKGlubGluaywgcy0+ZmZ0X3NpemUgKiAyKTsKKyAgICBpZiAoIXMt PmluX2J1ZmZlciB8fCAhcy0+aW5fZnJhbWUgfHwgIXMtPnRhcmdldF9nYWluIHx8CisgICAgICAg ICFzLT5vdXRfZGlzdF9mcmFtZSB8fCAhcy0+d2luZG93ZWRfZnJhbWUgfHwgIXMtPmVudmVsb3Bl IHx8CisgICAgICAgICFzLT5kcmNfZnJhbWUgfHwgIXMtPnNwZWN0cnVtX2J1ZiB8fCAhcy0+ZW5l cmd5IHx8ICFzLT5mYWN0b3JzKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisg ICAgZ2VuZXJhdGVfaGFubl93aW5kb3cocy0+d2luZG93LCBzLT5mZnRfc2l6ZSk7CisKKyAgICBz LT5jaGFubmVscyA9IGlubGluay0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOworCisgICAgcy0+dHhf Y3R4ID0gYXZfY2FsbG9jKHMtPmNoYW5uZWxzLCBzaXplb2YoKnMtPnR4X2N0eCkpOworICAgIHMt Pml0eF9jdHggPSBhdl9jYWxsb2Mocy0+Y2hhbm5lbHMsIHNpemVvZigqcy0+aXR4X2N0eCkpOwor ICAgIGlmICghcy0+dHhfY3R4IHx8ICFzLT5pdHhfY3R4KQorICAgICAgICByZXR1cm4gQVZFUlJP UihFTk9NRU0pOworCisgICAgZm9yIChpbnQgY2ggPSAwOyBjaCA8IHMtPmNoYW5uZWxzOyBjaCsr KSB7CisgICAgICAgIHNjYWxlID0gMS5mOworICAgICAgICByZXQgPSBhdl90eF9pbml0KCZzLT50 eF9jdHhbY2hdLCAmcy0+dHhfZm4sIEFWX1RYX0ZMT0FUX1JERlQsIDAsIHMtPmZmdF9zaXplLCAm c2NhbGUsIDApOworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7 CisKKyAgICAgICAgc2NhbGUgPSAxLmYgLyBzLT5mZnRfc2l6ZTsKKyAgICAgICAgcmV0ID0gYXZf dHhfaW5pdCgmcy0+aXR4X2N0eFtjaF0sICZzLT5pdHhfZm4sIEFWX1RYX0ZMT0FUX1JERlQsIDEs IHMtPmZmdF9zaXplLCAmc2NhbGUsIDApOworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAg ICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgcy0+dmFyX3ZhbHVlc1tWQVJfU1JdID0gaW5s aW5rLT5zYW1wbGVfcmF0ZTsKKyAgICBzLT52YXJfdmFsdWVzW1ZBUl9OQl9DSEFOTkVMU10gPSBz LT5jaGFubmVsczsKKworICAgIHJldHVybiBhdl9leHByX3BhcnNlKCZzLT5leHByLCBzLT5leHBy X3N0ciwgdmFyX25hbWVzLCBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5V TEwsIE5VTEwsIDAsIGN0eCk7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGx5X3dpbmRvdyhBdWRpb0RS Q0NvbnRleHQgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgKmluX2Zy YW1lLCBmbG9hdCAqb3V0X2ZyYW1lLCBjb25zdCBpbnQgYWRkX3RvX291dF9mcmFtZSkKK3sKKyAg ICBjb25zdCBmbG9hdCAqd2luZG93ID0gcy0+d2luZG93OworICAgIGNvbnN0IGludCBmZnRfc2l6 ZSA9IHMtPmZmdF9zaXplOworCisgICAgaWYgKGFkZF90b19vdXRfZnJhbWUpIHsKKyAgICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBmZnRfc2l6ZTsgaSsrKQorICAgICAgICAgICAgb3V0X2ZyYW1l W2ldICs9IGluX2ZyYW1lW2ldICogd2luZG93W2ldOworICAgIH0gZWxzZSB7CisgICAgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgZmZ0X3NpemU7IGkrKykKKyAgICAgICAgICAgIG91dF9mcmFtZVtp XSA9IGluX2ZyYW1lW2ldICogd2luZG93W2ldOworICAgIH0KK30KKworc3RhdGljIGZsb2F0IHNx cmYoZmxvYXQgeCkKK3sKKyAgICByZXR1cm4geCAqIHg7Cit9CisKK3N0YXRpYyB2b2lkIGdldF9l bmVyZ3koQVZGaWx0ZXJDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBs ZW4sCisgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0ICplbmVyZ3ksCisgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGZsb2F0ICpzcGVjdHJhbCkKK3sKKyAgICBmb3IgKGludCBuID0gMDsg biA8IGxlbjsgbisrKQorICAgICAgICBlbmVyZ3lbbl0gPSAxMC5mICogbG9nMTBmKHNxcmYoc3Bl Y3RyYWxbMiAqIG5dKSArIHNxcmYoc3BlY3RyYWxbMiAqIG4gKyAxXSkpOworfQorCitzdGF0aWMg dm9pZCBnZXRfdGFyZ2V0X2dhaW4oQVZGaWx0ZXJDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h dCAqZ2FpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCAqZW5lcmd5 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqdmFyX3ZhbHVlcywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBmeCkKK3sKKyAgICBBdWRpb0RSQ0NvbnRleHQg KnMgPSBjdHgtPnByaXY7CisKKyAgICBmb3IgKGludCBuID0gMDsgbiA8IGxlbjsgbisrKSB7Cisg ICAgICAgIGNvbnN0IGZsb2F0IFhnID0gZW5lcmd5W25dOworCisgICAgICAgIHZhcl92YWx1ZXNb VkFSX0ddID0gWGc7CisgICAgICAgIHZhcl92YWx1ZXNbVkFSX0ZdID0gbiAqIGZ4OworCisgICAg ICAgIGdhaW5bbl0gPSBhdl9leHByX2V2YWwocy0+ZXhwciwgdmFyX3ZhbHVlcywgcyk7CisgICAg fQorfQorCitzdGF0aWMgdm9pZCBnZXRfZW52ZWxvcGUoQVZGaWx0ZXJDb250ZXh0ICpjdHgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICBmbG9hdCAqZW52ZWxvcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQg KmVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCAqZ2FpbikKK3sK KyAgICBBdWRpb0RSQ0NvbnRleHQgKnMgPSBjdHgtPnByaXY7CisgICAgY29uc3QgZmxvYXQgcmVs ZWFzZSA9IHMtPnJlbGVhc2U7CisgICAgY29uc3QgZmxvYXQgYXR0YWNrID0gcy0+YXR0YWNrOwor CisgICAgZm9yIChpbnQgbiA9IDA7IG4gPCBsZW47IG4rKykgeworICAgICAgICBjb25zdCBmbG9h dCBCZyA9IGdhaW5bbl0gLSBlbmVyZ3lbbl07CisgICAgICAgIGNvbnN0IGZsb2F0IFZnID0gZW52 ZWxvcGVbbl07CisKKyAgICAgICAgaWYgKEJnID4gVmcpIHsKKyAgICAgICAgICAgIGVudmVsb3Bl W25dID0gYXR0YWNrICAqIFZnICsgKDEuZiAtIGF0dGFjaykgICogQmc7CisgICAgICAgIH0gZWxz ZSBpZiAoQmcgPD0gVmcpICB7CisgICAgICAgICAgICBlbnZlbG9wZVtuXSA9IHJlbGVhc2UgKiBW ZyArICgxLmYgLSByZWxlYXNlKSAqIEJnOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg ZW52ZWxvcGVbbl0gPSAwLmY7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGdl dF9mYWN0b3JzKEFWRmlsdGVyQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAg aW50IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0ICpmYWN0b3JzLAorICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgKmVudmVsb3BlKQoreworICAgIGZvciAoaW50 IG4gPSAwOyBuIDwgbGVuOyBuKyspCisgICAgICAgIGZhY3RvcnNbbl0gPSBzcXJ0ZihmZl9leHAx MGYoZW52ZWxvcGVbbl0gLyAxMC5mKSk7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGx5X2ZhY3RvcnMo QVZGaWx0ZXJDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW4s CisgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0ICpzcGVjdHJ1bSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgKmZhY3RvcnMpCit7CisgICAgZm9yIChpbnQgbiA9 IDA7IG4gPCBsZW47IG4rKykgeworICAgICAgICBzcGVjdHJ1bVsyKm4rMF0gKj0gZmFjdG9yc1tu XTsKKyAgICAgICAgc3BlY3RydW1bMipuKzFdICo9IGZhY3RvcnNbbl07CisgICAgfQorfQorCitz dGF0aWMgdm9pZCBmZWVkKEFWRmlsdGVyQ29udGV4dCAqY3R4LCBpbnQgY2gsCisgICAgICAgICAg ICAgICAgIGNvbnN0IGZsb2F0ICppbl9zYW1wbGVzLCBmbG9hdCAqb3V0X3NhbXBsZXMsCisgICAg ICAgICAgICAgICAgIGZsb2F0ICppbl9mcmFtZSwgZmxvYXQgKm91dF9kaXN0X2ZyYW1lLAorICAg ICAgICAgICAgICAgICBmbG9hdCAqd2luZG93ZWRfZnJhbWUsIGZsb2F0ICpkcmNfZnJhbWUsCisg ICAgICAgICAgICAgICAgIGZsb2F0ICpzcGVjdHJ1bV9idWYsIGZsb2F0ICplbmVyZ3ksCisgICAg ICAgICAgICAgICAgIGZsb2F0ICp0YXJnZXRfZ2FpbiwgZmxvYXQgKmVudmVsb3BlLAorICAgICAg ICAgICAgICAgICBmbG9hdCAqZmFjdG9ycykKK3sKKyAgICBBdWRpb0RSQ0NvbnRleHQgKnMgPSBj dHgtPnByaXY7CisgICAgZG91YmxlIHZhcl92YWx1ZXNbVkFSX1ZBUlNfTkJdOworICAgIGNvbnN0 IGludCBmZnRfc2l6ZSA9IHMtPmZmdF9zaXplOworICAgIGNvbnN0IGludCBuYl9jb2VmZnMgPSBz LT5mZnRfc2l6ZSAvIDIgKyAxOworICAgIGNvbnN0IGludCBvdmVybGFwID0gcy0+b3ZlcmxhcDsK KyAgICBjb25zdCBmbG9hdCBmeCA9IHMtPnZhcl92YWx1ZXNbVkFSX1NSXSAqIDAuNWYgLyBuYl9j b2VmZnM7CisKKyAgICBtZW1jcHkodmFyX3ZhbHVlcywgcy0+dmFyX3ZhbHVlcywgc2l6ZW9mKHZh cl92YWx1ZXMpKTsKKworICAgIHZhcl92YWx1ZXNbVkFSX0NIXSA9IGNoOworCisgICAgLy8gc2hp ZnQgaW4vb3V0IGJ1ZmZlcnMKKyAgICBtZW1tb3ZlKGluX2ZyYW1lLCBpbl9mcmFtZSArIG92ZXJs YXAsIChmZnRfc2l6ZSAtIG92ZXJsYXApICogc2l6ZW9mKCppbl9mcmFtZSkpOworICAgIG1lbW1v dmUob3V0X2Rpc3RfZnJhbWUsIG91dF9kaXN0X2ZyYW1lICsgb3ZlcmxhcCwgKGZmdF9zaXplIC0g b3ZlcmxhcCkgKiBzaXplb2YoKm91dF9kaXN0X2ZyYW1lKSk7CisKKyAgICBtZW1jcHkoaW5fZnJh bWUgKyBmZnRfc2l6ZSAtIG92ZXJsYXAsIGluX3NhbXBsZXMsIHNpemVvZigqaW5fZnJhbWUpICog b3ZlcmxhcCk7CisgICAgbWVtc2V0KG91dF9kaXN0X2ZyYW1lICsgZmZ0X3NpemUgLSBvdmVybGFw LCAwLCBzaXplb2YoKm91dF9kaXN0X2ZyYW1lKSAqIG92ZXJsYXApOworCisgICAgYXBwbHlfd2lu ZG93KHMsIGluX2ZyYW1lLCB3aW5kb3dlZF9mcmFtZSwgMCk7CisgICAgcy0+dHhfZm4ocy0+dHhf Y3R4W2NoXSwgc3BlY3RydW1fYnVmLCB3aW5kb3dlZF9mcmFtZSwgc2l6ZW9mKGZsb2F0KSk7CisK KyAgICBnZXRfZW5lcmd5KGN0eCwgbmJfY29lZmZzLCBlbmVyZ3ksIHNwZWN0cnVtX2J1Zik7Cisg ICAgZ2V0X3RhcmdldF9nYWluKGN0eCwgbmJfY29lZmZzLCB0YXJnZXRfZ2FpbiwgZW5lcmd5LCB2 YXJfdmFsdWVzLCBmeCk7CisgICAgZ2V0X2VudmVsb3BlKGN0eCwgbmJfY29lZmZzLCBlbnZlbG9w ZSwgZW5lcmd5LCB0YXJnZXRfZ2Fpbik7CisgICAgZ2V0X2ZhY3RvcnMoY3R4LCBuYl9jb2VmZnMs IGZhY3RvcnMsIGVudmVsb3BlKTsKKyAgICBhcHBseV9mYWN0b3JzKGN0eCwgbmJfY29lZmZzLCBz cGVjdHJ1bV9idWYsIGZhY3RvcnMpOworCisgICAgcy0+aXR4X2ZuKHMtPml0eF9jdHhbY2hdLCBk cmNfZnJhbWUsIHNwZWN0cnVtX2J1Ziwgc2l6ZW9mKEFWQ29tcGxleEZsb2F0KSk7CisKKyAgICBh cHBseV93aW5kb3cocywgZHJjX2ZyYW1lLCBvdXRfZGlzdF9mcmFtZSwgMSk7CisKKyAgICAvLyA0 IHRpbWVzIG92ZXJsYXAgd2l0aCBzcXVhcmVkIGhhbm5pbmcgd2luZG93IHJlc3VsdHMgaW4gMS41 IHRpbWUgaW5jcmVhc2UgaW4gYW1wbGl0dWRlCisgICAgaWYgKCFjdHgtPmlzX2Rpc2FibGVkKSB7 CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb3ZlcmxhcDsgaSsrKQorICAgICAgICAgICAg b3V0X3NhbXBsZXNbaV0gPSBvdXRfZGlzdF9mcmFtZVtpXSAvIDEuNWY7CisgICAgfSBlbHNlIHsK KyAgICAgICAgbWVtY3B5KG91dF9zYW1wbGVzLCBpbl9mcmFtZSwgc2l6ZW9mKCpvdXRfc2FtcGxl cykgKiBvdmVybGFwKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQgZHJjX2NoYW5uZWwoQVZGaWx0 ZXJDb250ZXh0ICpjdHgsIEFWRnJhbWUgKmluLCBBVkZyYW1lICpvdXQsIGludCBjaCkKK3sKKyAg ICBBdWRpb0RSQ0NvbnRleHQgKnMgPSBjdHgtPnByaXY7CisgICAgY29uc3QgZmxvYXQgKnNyYyA9 IChjb25zdCBmbG9hdCAqKWluLT5leHRlbmRlZF9kYXRhW2NoXTsKKyAgICBmbG9hdCAqaW5fYnVm ZmVyID0gKGZsb2F0ICopcy0+aW5fYnVmZmVyLT5leHRlbmRlZF9kYXRhW2NoXTsKKyAgICBmbG9h dCAqZHN0ID0gKGZsb2F0ICopb3V0LT5leHRlbmRlZF9kYXRhW2NoXTsKKworICAgIG1lbWNweShp bl9idWZmZXIsIHNyYywgc2l6ZW9mKCppbl9idWZmZXIpICogcy0+b3ZlcmxhcCk7CisKKyAgICBm ZWVkKGN0eCwgY2gsIGluX2J1ZmZlciwgZHN0LAorICAgICAgICAgKGZsb2F0ICopKHMtPmluX2Zy YW1lLT5leHRlbmRlZF9kYXRhW2NoXSksCisgICAgICAgICAoZmxvYXQgKikocy0+b3V0X2Rpc3Rf ZnJhbWUtPmV4dGVuZGVkX2RhdGFbY2hdKSwKKyAgICAgICAgIChmbG9hdCAqKShzLT53aW5kb3dl ZF9mcmFtZS0+ZXh0ZW5kZWRfZGF0YVtjaF0pLAorICAgICAgICAgKGZsb2F0ICopKHMtPmRyY19m cmFtZS0+ZXh0ZW5kZWRfZGF0YVtjaF0pLAorICAgICAgICAgKGZsb2F0ICopKHMtPnNwZWN0cnVt X2J1Zi0+ZXh0ZW5kZWRfZGF0YVtjaF0pLAorICAgICAgICAgKGZsb2F0ICopKHMtPmVuZXJneS0+ ZXh0ZW5kZWRfZGF0YVtjaF0pLAorICAgICAgICAgKGZsb2F0ICopKHMtPnRhcmdldF9nYWluLT5l eHRlbmRlZF9kYXRhW2NoXSksCisgICAgICAgICAoZmxvYXQgKikocy0+ZW52ZWxvcGUtPmV4dGVu ZGVkX2RhdGFbY2hdKSwKKyAgICAgICAgIChmbG9hdCAqKShzLT5mYWN0b3JzLT5leHRlbmRlZF9k YXRhW2NoXSkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZHJjX2NoYW5uZWxz KEFWRmlsdGVyQ29udGV4dCAqY3R4LCB2b2lkICphcmcsIGludCBqb2JuciwgaW50IG5iX2pvYnMp Cit7CisgICAgQXVkaW9EUkNDb250ZXh0ICpzID0gY3R4LT5wcml2OworICAgIEFWRnJhbWUgKm91 dCA9IGFyZzsKKyAgICBjb25zdCBpbnQgc3RhcnQgPSAob3V0LT5jaF9sYXlvdXQubmJfY2hhbm5l bHMgKiBqb2JucikgLyBuYl9qb2JzOworICAgIGNvbnN0IGludCBlbmQgPSAob3V0LT5jaF9sYXlv dXQubmJfY2hhbm5lbHMgKiAoam9ibnIrMSkpIC8gbmJfam9iczsKKworICAgIGZvciAoaW50IGNo ID0gc3RhcnQ7IGNoIDwgZW5kOyBjaCsrKQorICAgICAgICBkcmNfY2hhbm5lbChjdHgsIHMtPmlu LCBvdXQsIGNoKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGZpbHRlcl9mcmFt ZShBVkZpbHRlckxpbmsgKmlubGluaywgQVZGcmFtZSAqaW4pCit7CisgICAgQVZGaWx0ZXJDb250 ZXh0ICpjdHggPSBpbmxpbmstPmRzdDsKKyAgICBBVkZpbHRlckxpbmsgKm91dGxpbmsgPSBjdHgt Pm91dHB1dHNbMF07CisgICAgQXVkaW9EUkNDb250ZXh0ICpzID0gY3R4LT5wcml2OworICAgIEFW RnJhbWUgKm91dDsKKyAgICBpbnQgcmV0OworCisgICAgb3V0ID0gZmZfZ2V0X2F1ZGlvX2J1ZmZl cihvdXRsaW5rLCBzLT5vdmVybGFwKTsKKyAgICBpZiAoIW91dCkgeworICAgICAgICByZXQgPSBB VkVSUk9SKEVOT01FTSk7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBzLT52YXJf dmFsdWVzW1ZBUl9TTl0gPSBvdXRsaW5rLT5zYW1wbGVfY291bnRfaW47CisgICAgcy0+dmFyX3Zh bHVlc1tWQVJfVF0gPSBzLT52YXJfdmFsdWVzW1ZBUl9TTl0gKiAoZG91YmxlKTEvb3V0bGluay0+ c2FtcGxlX3JhdGU7CisKKyAgICBzLT5pbiA9IGluOworICAgIGF2X2ZyYW1lX2NvcHlfcHJvcHMo b3V0LCBpbik7CisgICAgZmZfZmlsdGVyX2V4ZWN1dGUoY3R4LCBkcmNfY2hhbm5lbHMsIG91dCwg TlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICBGRk1JTihvdXRsaW5rLT5jaF9sYXlvdXQubmJf Y2hhbm5lbHMsIGZmX2ZpbHRlcl9nZXRfbmJfdGhyZWFkcyhjdHgpKSk7CisKKyAgICBvdXQtPnB0 cyA9IGluLT5wdHM7CisgICAgb3V0LT5uYl9zYW1wbGVzID0gaW4tPm5iX3NhbXBsZXM7CisgICAg cmV0ID0gZmZfZmlsdGVyX2ZyYW1lKG91dGxpbmssIG91dCk7CitmYWlsOgorICAgIGF2X2ZyYW1l X2ZyZWUoJmluKTsKKyAgICBzLT5pbiA9IE5VTEw7CisgICAgcmV0dXJuIHJldCA8IDAgPyByZXQg OiAwOworfQorCitzdGF0aWMgaW50IGFjdGl2YXRlKEFWRmlsdGVyQ29udGV4dCAqY3R4KQorewor ICAgIEFWRmlsdGVyTGluayAqaW5saW5rID0gY3R4LT5pbnB1dHNbMF07CisgICAgQVZGaWx0ZXJM aW5rICpvdXRsaW5rID0gY3R4LT5vdXRwdXRzWzBdOworICAgIEF1ZGlvRFJDQ29udGV4dCAqcyA9 IGN0eC0+cHJpdjsKKyAgICBBVkZyYW1lICppbiA9IE5VTEw7CisgICAgaW50IHJldCA9IDAsIHN0 YXR1czsKKyAgICBpbnQ2NF90IHB0czsKKworICAgIEZGX0ZJTFRFUl9GT1JXQVJEX1NUQVRVU19C QUNLKG91dGxpbmssIGlubGluayk7CisKKyAgICByZXQgPSBmZl9pbmxpbmtfY29uc3VtZV9zYW1w bGVzKGlubGluaywgcy0+b3ZlcmxhcCwgcy0+b3ZlcmxhcCwgJmluKTsKKyAgICBpZiAocmV0IDwg MCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIGlmIChyZXQgPiAwKSB7CisgICAgICAgIHMt PmF0dGFjayAgPSBleHBmKC0xLmYgLyAocy0+YXR0YWNrX21zICAqIGlubGluay0+c2FtcGxlX3Jh dGUgLyAxMDAwLmYpKTsKKyAgICAgICAgcy0+cmVsZWFzZSA9IGV4cGYoLTEuZiAvIChzLT5yZWxl YXNlX21zICogaW5saW5rLT5zYW1wbGVfcmF0ZSAvIDEwMDAuZikpOworCisgICAgICAgIHJldHVy biBmaWx0ZXJfZnJhbWUoaW5saW5rLCBpbik7CisgICAgfSBlbHNlIGlmIChmZl9pbmxpbmtfYWNr bm93bGVkZ2Vfc3RhdHVzKGlubGluaywgJnN0YXR1cywgJnB0cykpIHsKKyAgICAgICAgZmZfb3V0 bGlua19zZXRfc3RhdHVzKG91dGxpbmssIHN0YXR1cywgcHRzKTsKKyAgICAgICAgcmV0dXJuIDA7 CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGZmX2lubGlua19xdWV1ZWRfc2FtcGxlcyhpbmxp bmspID49IHMtPm92ZXJsYXApIHsKKyAgICAgICAgICAgIGZmX2ZpbHRlcl9zZXRfcmVhZHkoY3R4 LCAxMCk7CisgICAgICAgIH0gZWxzZSBpZiAoZmZfb3V0bGlua19mcmFtZV93YW50ZWQob3V0bGlu aykpIHsKKyAgICAgICAgICAgIGZmX2lubGlua19yZXF1ZXN0X2ZyYW1lKGlubGluayk7CisgICAg ICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgYXZfY29sZCB2b2lk IHVuaW5pdChBVkZpbHRlckNvbnRleHQgKmN0eCkKK3sKKyAgICBBdWRpb0RSQ0NvbnRleHQgKnMg PSBjdHgtPnByaXY7CisKKyAgICBhdl9leHByX2ZyZWUocy0+ZXhwcik7CisgICAgcy0+ZXhwciA9 IE5VTEw7CisKKyAgICBhdl9mcmVlcCgmcy0+d2luZG93KTsKKworICAgIGF2X2ZyYW1lX2ZyZWUo JnMtPmRyY19mcmFtZSk7CisgICAgYXZfZnJhbWVfZnJlZSgmcy0+ZW5lcmd5KTsKKyAgICBhdl9m cmFtZV9mcmVlKCZzLT5lbnZlbG9wZSk7CisgICAgYXZfZnJhbWVfZnJlZSgmcy0+ZmFjdG9ycyk7 CisgICAgYXZfZnJhbWVfZnJlZSgmcy0+aW5fYnVmZmVyKTsKKyAgICBhdl9mcmFtZV9mcmVlKCZz LT5pbl9mcmFtZSk7CisgICAgYXZfZnJhbWVfZnJlZSgmcy0+b3V0X2Rpc3RfZnJhbWUpOworICAg IGF2X2ZyYW1lX2ZyZWUoJnMtPnNwZWN0cnVtX2J1Zik7CisgICAgYXZfZnJhbWVfZnJlZSgmcy0+ dGFyZ2V0X2dhaW4pOworICAgIGF2X2ZyYW1lX2ZyZWUoJnMtPndpbmRvd2VkX2ZyYW1lKTsKKwor ICAgIGZvciAoaW50IGNoID0gMDsgY2ggPCBzLT5jaGFubmVsczsgY2grKykgeworICAgICAgICBp ZiAocy0+dHhfY3R4KQorICAgICAgICAgICAgYXZfdHhfdW5pbml0KCZzLT50eF9jdHhbY2hdKTsK KyAgICAgICAgaWYgKHMtPml0eF9jdHgpCisgICAgICAgICAgICBhdl90eF91bmluaXQoJnMtPml0 eF9jdHhbY2hdKTsKKyAgICB9CisKKyAgICBhdl9mcmVlcCgmcy0+dHhfY3R4KTsKKyAgICBhdl9m cmVlcCgmcy0+aXR4X2N0eCk7Cit9CisKK3N0YXRpYyBjb25zdCBBVkZpbHRlclBhZCBpbnB1dHNb XSA9IHsKKyAgICB7CisgICAgICAgIC5uYW1lICAgICAgICAgPSAiZGVmYXVsdCIsCisgICAgICAg IC50eXBlICAgICAgICAgPSBBVk1FRElBX1RZUEVfQVVESU8sCisgICAgICAgIC5jb25maWdfcHJv cHMgPSBjb25maWdfaW5wdXQsCisgICAgfSwKK307CisKK3N0YXRpYyBjb25zdCBBVkZpbHRlclBh ZCBvdXRwdXRzW10gPSB7CisgICAgeworICAgICAgICAubmFtZSA9ICJkZWZhdWx0IiwKKyAgICAg ICAgLnR5cGUgPSBBVk1FRElBX1RZUEVfQVVESU8sCisgICAgfSwKK307CisKK2NvbnN0IEFWRmls dGVyIGZmX2FmX2FkcmMgPSB7CisgICAgLm5hbWUgICAgICAgICAgICA9ICJhZHJjIiwKKyAgICAu ZGVzY3JpcHRpb24gICAgID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIkF1ZGlvIFNwZWN0cmFsIER5 bmFtaWMgUmFuZ2UgQ29udHJvbGxlci4iKSwKKyAgICAucHJpdl9zaXplICAgICAgID0gc2l6ZW9m KEF1ZGlvRFJDQ29udGV4dCksCisgICAgLnByaXZfY2xhc3MgICAgICA9ICZhZHJjX2NsYXNzLAor ICAgIC51bmluaXQgICAgICAgICAgPSB1bmluaXQsCisgICAgRklMVEVSX0lOUFVUUyhpbnB1dHMp LAorICAgIEZJTFRFUl9PVVRQVVRTKG91dHB1dHMpLAorICAgIEZJTFRFUl9TSU5HTEVfU0FNUExF Rk1UKEFWX1NBTVBMRV9GTVRfRkxUUCksCisgICAgLmZsYWdzICAgICAgICAgICA9IEFWRklMVEVS X0ZMQUdfU1VQUE9SVF9USU1FTElORV9JTlRFUk5BTCB8CisgICAgICAgICAgICAgICAgICAgICAg IEFWRklMVEVSX0ZMQUdfU0xJQ0VfVEhSRUFEUywKKyAgICAuYWN0aXZhdGUgICAgICAgID0gYWN0 aXZhdGUsCisgICAgLnByb2Nlc3NfY29tbWFuZCA9IGZmX2ZpbHRlcl9wcm9jZXNzX2NvbW1hbmQs Cit9OwpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jIGIvbGliYXZmaWx0ZXIv YWxsZmlsdGVycy5jCmluZGV4IDIxZjI1ZGE0OTkuLjNmZjIwZTc2Y2UgMTAwNjQ0Ci0tLSBhL2xp YmF2ZmlsdGVyL2FsbGZpbHRlcnMuYworKysgYi9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMKQEAg LTM1LDYgKzM1LDcgQEAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2FmX2FkZWNvcnJlbGF0ZTsK IGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl9hZl9hZGVsYXk7CiBleHRlcm4gY29uc3QgQVZGaWx0 ZXIgZmZfYWZfYWRlbm9ybTsKIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl9hZl9hZGVyaXZhdGl2 ZTsKK2V4dGVybiBjb25zdCBBVkZpbHRlciBmZl9hZl9hZHJjOwogZXh0ZXJuIGNvbnN0IEFWRmls dGVyIGZmX2FmX2FkeW5hbWljZXF1YWxpemVyOwogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2Fm X2FkeW5hbWljc21vb3RoOwogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2FmX2FlY2hvOwotLSAK Mi4zNy4yCgo= --000000000000dc00e605eeebe4c6 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". --000000000000dc00e605eeebe4c6--