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 47C33478F7 for ; Sun, 26 Nov 2023 14:32:57 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4319468CEEC; Sun, 26 Nov 2023 16:32:55 +0200 (EET) Received: from mail-io1-f52.google.com (mail-io1-f52.google.com [209.85.166.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 37AC568CBD2 for ; Sun, 26 Nov 2023 16:32:49 +0200 (EET) Received: by mail-io1-f52.google.com with SMTP id ca18e2360f4ac-7b35d476d61so86138339f.0 for ; Sun, 26 Nov 2023 06:32:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701009167; x=1701613967; darn=ffmpeg.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=3php9L75vtSM28IlFBOgn+4fxwuuvtZE0ddN0JZtXLc=; b=XU0uVMQu2cxyNDd0FmW1PB+HdYYPQDMODjxKjHqjdLCoQBmV5xI1di1UI9139yCi3H thBRVW9GMJCW2omtPizTGIND9TS3R0E7pWR7sExZ3924DCnQiguIx8tTUALqp8mtvpnK hranJ0abpwJHKVaELwVFgJGOkeieg7B/FfMrAHmnuM4dMMOlSU+5UJS1j6hzR6O8nEXO 73MJcqBZ4Sv0mLhHwH7SIlLVEoSItQ9Dv4cXj7s2wVF4B4J3PB8f/f3Lz7/P3yT0CNjV BtRatZxefJusHzYbERkyFT3BJoPkjhrPipF88aX6vcMQuJBeUDLZ/jIN9RlAnBmHwNMY MBPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701009167; x=1701613967; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=3php9L75vtSM28IlFBOgn+4fxwuuvtZE0ddN0JZtXLc=; b=gh1mO+W1dSOzNDnsw3A8T0U8KLbhXgimsKGXiB1CWpMTRAfT+4vlm8/JeKQ7kTryBy QNp2iakKyD7aZSppHIigLJ2m0G5VZZfzYO3bx29aFbptXSOzRfnIsJf8kJvWlXcp8LH3 m6Na3/8aHmR0BjnjIqZY2qJskSNQJXVQHrStoPd15FMFmJUqNiSZ5dpg52BNmGOAfHB/ /9tWHhOmP9hV3UQarQe3s/eoSi5ScRqoCUZUi3oLmK1pzk44vGDdbeBfinDQP/OosTFY J074zYmubR/th3MH7zyahyV6gzku5cOBQRBnwdpQ0l+hZip+vR0dVbnwLOl2Dth7tGc/ OpGg== X-Gm-Message-State: AOJu0YxnkP8xC5cf1gsTKffCGD3FazBDq7tGdTIXGJVZAi1TvqZeRyfK QfrdsmpsNvsyPrAiV9vNmd1GfYLzHFAmEU7Rbpt5UrOu X-Google-Smtp-Source: AGHT+IFr8INd8cNGBEHg77jy6gpLdWKF08/QrP9fR1SrplUmj+zRR4gpR23/zhwiQgqSW6PcC3XShDu08s1rvfQ63Fo= X-Received: by 2002:a92:ce45:0:b0:35c:c3c3:7893 with SMTP id a5-20020a92ce45000000b0035cc3c37893mr1015496ilr.1.1701009166195; Sun, 26 Nov 2023 06:32:46 -0800 (PST) MIME-Version: 1.0 From: Paul B Mahol Date: Sun, 26 Nov 2023 15:41:14 +0100 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="0000000000001d5be5060b0f0f75" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] avfilter: add Affine Projection adaptive audio 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: --0000000000001d5be5060b0f0f75 Content-Type: text/plain; charset="UTF-8" Attached. --0000000000001d5be5060b0f0f75 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-avfilter-add-Affine-Projection-adaptive-audio-filter.patch" Content-Disposition: attachment; filename="0001-avfilter-add-Affine-Projection-adaptive-audio-filter.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lpfl8ku50 RnJvbSA2YzM1NWY3OWU5YzIxYTExZTVlMTI2NmRhNzkzNmE0YWMyZGMwN2FjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IFN1biwgMzAgQXByIDIwMjMgMTc6MDY6MDAgKzAyMDAKU3ViamVjdDogW1BBVENIXSBhdmZpbHRl cjogYWRkIEFmZmluZSBQcm9qZWN0aW9uIGFkYXB0aXZlIGF1ZGlvIGZpbHRlcgoKU2lnbmVkLW9m Zi1ieTogUGF1bCBCIE1haG9sIDxvbmVtZGFAZ21haWwuY29tPgotLS0KIGRvYy9maWx0ZXJzLnRl eGkgICAgICAgICB8ICA0MyArKysrCiBsaWJhdmZpbHRlci9NYWtlZmlsZSAgICAgfCAgIDEgKwog bGliYXZmaWx0ZXIvYWZfYWFwLmMgICAgIHwgNDUxICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jIHwgICAxICsKIDQgZmlsZXMg Y2hhbmdlZCwgNDk2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRl ci9hZl9hYXAuYwoKZGlmZiAtLWdpdCBhL2RvYy9maWx0ZXJzLnRleGkgYi9kb2MvZmlsdGVycy50 ZXhpCmluZGV4IDUyNjhiMjAwM2MuLjNjOWQzMmFhNzYgMTAwNjQ0Ci0tLSBhL2RvYy9maWx0ZXJz LnRleGkKKysrIGIvZG9jL2ZpbHRlcnMudGV4aQpAQCAtNDE4LDYgKzQxOCw0OSBAQCBidWlsZC4K IAogQmVsb3cgaXMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgY3VycmVudGx5IGF2YWlsYWJsZSBhdWRp byBmaWx0ZXJzLgogCitAc2VjdGlvbiBhYXAKK0FwcGx5IEFmZmluZSBQcm9qZWN0aW9uIGFsZ29y aXRobSB0byB0aGUgZmlyc3QgYXVkaW8gc3RyZWFtIHVzaW5nIHRoZSBzZWNvbmQgYXVkaW8gc3Ry ZWFtLgorCitUaGlzIGFkYXB0aXZlIGZpbHRlciBpcyB1c2VkIHRvIGVzdGltYXRlIHVua25vd24g YXVkaW8gYmFzZWQgb24gbXVsdGlwbGUgaW5wdXQgYXVkaW8gc2FtcGxlcy4KK0FmZmluZSBwcm9q ZWN0aW9uIGFsZ29yaXRobSBjYW4gbWFrZSB0cmFkZS1vZmZzIGJldHdlZW4gY29tcHV0YXRpb24g Y29tcGxleGl0eSB3aXRoIGNvbnZlcmdlbmNlIHNwZWVkLgorCitBIGRlc2NyaXB0aW9uIG9mIHRo ZSBhY2NlcHRlZCBvcHRpb25zIGZvbGxvd3MuCisKK0B0YWJsZSBAb3B0aW9uCitAaXRlbSBvcmRl cgorU2V0IHRoZSBmaWx0ZXIgb3JkZXIuCisKK0BpdGVtIHByb2plY3Rpb24KK1NldCB0aGUgcHJv amVjdGlvbiBvcmRlci4KKworQGl0ZW0gbXUKK1NldCB0aGUgZmlsdGVyIG11LgorCitAaXRlbSBk ZWx0YQorU2V0IHRoZSBjb2VmZmljaWVudCB0byBpbml0aWFsaXplIGludGVybmFsIGNvdmFyaWFu Y2UgbWF0cml4LgorCitAaXRlbSBvdXRfbW9kZQorU2V0IHRoZSBmaWx0ZXIgb3V0cHV0IHNhbXBs ZXMuIEl0IGFjY2VwdHMgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CitAdGFibGUgQG9wdGlvbgorQGl0 ZW0gaQorUGFzcyB0aGUgMXN0IGlucHV0LgorCitAaXRlbSBkCitQYXNzIHRoZSAybmQgaW5wdXQu CisKK0BpdGVtIG8KK1Bhc3MgZGlmZmVyZW5jZSBiZXR3ZWVuIGRlc2lyZWQsIDJuZCBpbnB1dCBh bmQgZXJyb3Igc2lnbmFsIGVzdGltYXRlLgorCitAaXRlbSBuCitQYXNzIGRpZmZlcmVuY2UgYmV0 d2VlbiBpbnB1dCwgMXN0IGlucHV0IGFuZCBlcnJvciBzaWduYWwgZXN0aW1hdGUuCisKK0BpdGVt IGUKK1Bhc3MgZXJyb3Igc2lnbmFsIGVzdGltYXRlZCBzYW1wbGVzLgorCitEZWZhdWx0IHZhbHVl IGlzIEB2YXJ7b30uCitAZW5kIHRhYmxlCitAZW5kIHRhYmxlCisKIEBzZWN0aW9uIGFjb21wcmVz c29yCiAKIEEgY29tcHJlc3NvciBpcyBtYWlubHkgdXNlZCB0byByZWR1Y2UgdGhlIGR5bmFtaWMg cmFuZ2Ugb2YgYSBzaWduYWwuCmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9NYWtlZmlsZSBiL2xp YmF2ZmlsdGVyL01ha2VmaWxlCmluZGV4IDVlNTA2OGI1NjQuLjBkYTYyNTQwZjggMTAwNjQ0Ci0t LSBhL2xpYmF2ZmlsdGVyL01ha2VmaWxlCisrKyBiL2xpYmF2ZmlsdGVyL01ha2VmaWxlCkBAIC0z NSw2ICszNSw3IEBAIE9CSlMtJChDT05GSUdfRE5OKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICs9IGRubl9maWx0ZXJfY29tbW9uLm8KIGluY2x1ZGUgJChTUkNfUEFUSCkvbGliYXZmaWx0ZXIv ZG5uL01ha2VmaWxlCiAKICMgYXVkaW8gZmlsdGVycworT0JKUy0kKENPTkZJR19BQVBfRklMVEVS KSAgICAgICAgICAgICAgICAgICAgKz0gYWZfYWFwLm8KIE9CSlMtJChDT05GSUdfQUJFTkNIX0ZJ TFRFUikgICAgICAgICAgICAgICAgICs9IGZfYmVuY2gubwogT0JKUy0kKENPTkZJR19BQ09NUFJF U1NPUl9GSUxURVIpICAgICAgICAgICAgKz0gYWZfc2lkZWNoYWluY29tcHJlc3MubwogT0JKUy0k KENPTkZJR19BQ09OVFJBU1RfRklMVEVSKSAgICAgICAgICAgICAgKz0gYWZfYWNvbnRyYXN0Lm8K ZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2FmX2FhcC5jIGIvbGliYXZmaWx0ZXIvYWZfYWFwLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOTc4YTg1MzEzNwotLS0gL2Rl di9udWxsCisrKyBiL2xpYmF2ZmlsdGVyL2FmX2FhcC5jCkBAIC0wLDAgKzEsNDUxIEBACisvKgor ICogQ29weXJpZ2h0IChjKSAyMDIzIFBhdWwgQiBNYWhvbAorICoKKyAqIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRo ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq IEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0 aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRp b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIx MTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAibGliYXZ1dGlsL2NoYW5uZWxfbGF5b3V0Lmgi CisjaW5jbHVkZSAibGliYXZ1dGlsL2NvbW1vbi5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9mbG9h dF9kc3AuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCisKKyNpbmNsdWRlICJhdWRpby5o IgorI2luY2x1ZGUgImF2ZmlsdGVyLmgiCisjaW5jbHVkZSAiZm9ybWF0cy5oIgorI2luY2x1ZGUg ImZpbHRlcnMuaCIKKyNpbmNsdWRlICJpbnRlcm5hbC5oIgorCitlbnVtIE91dE1vZGVzIHsKKyAg ICBJTl9NT0RFLAorICAgIERFU0lSRURfTU9ERSwKKyAgICBPVVRfTU9ERSwKKyAgICBOT0lTRV9N T0RFLAorICAgIEVSUk9SX01PREUsCisgICAgTkJfT01PREVTCit9OworCit0eXBlZGVmIHN0cnVj dCBBdWRpb0FQQ29udGV4dCB7CisgICAgY29uc3QgQVZDbGFzcyAqY2xhc3M7CisKKyAgICBpbnQg b3JkZXI7CisgICAgaW50IHByb2plY3Rpb247CisgICAgZmxvYXQgbXU7CisgICAgZmxvYXQgZGVs dGE7CisgICAgaW50IG91dHB1dF9tb2RlOworCisgICAgaW50IGtlcm5lbF9zaXplOworICAgIEFW RnJhbWUgKm9mZnNldDsKKyAgICBBVkZyYW1lICpkZWxheTsKKyAgICBBVkZyYW1lICpjb2VmZnM7 CisgICAgQVZGcmFtZSAqZTsKKyAgICBBVkZyYW1lICpwOworICAgIEFWRnJhbWUgKng7CisgICAg QVZGcmFtZSAqdzsKKyAgICBBVkZyYW1lICpkY29lZmZzOworICAgIEFWRnJhbWUgKnRtcDsKKyAg ICBBVkZyYW1lICp0bXBtOworICAgIEFWRnJhbWUgKml0bXBtOworCisgICAgZmxvYXQgKip0bXBt cDsKKyAgICBmbG9hdCAqKml0bXBtcDsKKworICAgIEFWRnJhbWUgKmZyYW1lWzJdOworCisgICAg QVZGbG9hdERTUENvbnRleHQgKmZkc3A7Cit9IEF1ZGlvQVBDb250ZXh0OworCisjZGVmaW5lIE9G RlNFVCh4KSBvZmZzZXRvZihBdWRpb0FQQ29udGV4dCwgeCkKKyNkZWZpbmUgQSBBVl9PUFRfRkxB R19BVURJT19QQVJBTXxBVl9PUFRfRkxBR19GSUxURVJJTkdfUEFSQU0KKyNkZWZpbmUgQVQgQVZf T1BUX0ZMQUdfQVVESU9fUEFSQU18QVZfT1BUX0ZMQUdfRklMVEVSSU5HX1BBUkFNfEFWX09QVF9G TEFHX1JVTlRJTUVfUEFSQU0KKworc3RhdGljIGNvbnN0IEFWT3B0aW9uIGFhcF9vcHRpb25zW10g PSB7CisgICAgeyAib3JkZXIiLCAgICAgICJzZXQgdGhlIGZpbHRlciBvcmRlciIsICAgICAgT0ZG U0VUKG9yZGVyKSwgICAgICAgQVZfT1BUX1RZUEVfSU5ULCAgIHsuaTY0PTE2fSwgICAxLCBJTlQx Nl9NQVgsIEEgfSwKKyAgICB7ICJwcm9qZWN0aW9uIiwgInNldCB0aGUgZmlsdGVyIHByb2plY3Rp b24iLCBPRkZTRVQocHJvamVjdGlvbiksICBBVl9PUFRfVFlQRV9JTlQsICAgey5pNjQ9Mn0sICAg IDEsIDI1NiwgQSB9LAorICAgIHsgIm11IiwgICAgICAgICAic2V0IHRoZSBmaWx0ZXIgbXUiLCAg ICAgICAgIE9GRlNFVChtdSksICAgICAgICAgIEFWX09QVF9UWVBFX0ZMT0FULCB7LmRibD0wLjAw MDF9LDAsMSwgQVQgfSwKKyAgICB7ICJkZWx0YSIsICAgICAgInNldCB0aGUgZmlsdGVyIGRlbHRh IiwgICAgICBPRkZTRVQoZGVsdGEpLCAgICAgICBBVl9PUFRfVFlQRV9GTE9BVCwgey5kYmw9MC4w MDF9LDAsIDEsIEFUIH0sCisgICAgeyAib3V0X21vZGUiLCAgICJzZXQgb3V0cHV0IG1vZGUiLCAg ICAgICAgICAgT0ZGU0VUKG91dHB1dF9tb2RlKSwgQVZfT1BUX1RZUEVfSU5ULCB7Lmk2ND1PVVRf TU9ERX0sIDAsIE5CX09NT0RFUy0xLCBBVCwgIm1vZGUiIH0sCisgICAgeyAgImkiLCAiaW5wdXQi LCAgIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2ND1JTl9NT0RFfSwgICAgICAwLCAwLCBBVCwg Im1vZGUiIH0sCisgICAgeyAgImQiLCAiZGVzaXJlZCIsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7 Lmk2ND1ERVNJUkVEX01PREV9LCAwLCAwLCBBVCwgIm1vZGUiIH0sCisgICAgeyAgIm8iLCAib3V0 cHV0IiwgIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2ND1PVVRfTU9ERX0sICAgICAwLCAwLCBB VCwgIm1vZGUiIH0sCisgICAgeyAgIm4iLCAibm9pc2UiLCAgIDAsIEFWX09QVF9UWVBFX0NPTlNU LCB7Lmk2ND1OT0lTRV9NT0RFfSwgICAwLCAwLCBBVCwgIm1vZGUiIH0sCisgICAgeyAgImUiLCAi ZXJyb3IiLCAgIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2ND1FUlJPUl9NT0RFfSwgICAwLCAw LCBBVCwgIm1vZGUiIH0sCisgICAgeyBOVUxMIH0KK307CisKK0FWRklMVEVSX0RFRklORV9DTEFT UyhhYXApOworCitzdGF0aWMgZmxvYXQgZmlyX3NhbXBsZShBdWRpb0FQQ29udGV4dCAqcywgZmxv YXQgc2FtcGxlLCBmbG9hdCAqZGVsYXksCisgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAq Y29lZmZzLCBmbG9hdCAqdG1wLCBpbnQgKm9mZnNldCkKK3sKKyAgICBjb25zdCBpbnQgb3JkZXIg PSBzLT5vcmRlcjsKKyAgICBmbG9hdCBvdXRwdXQ7CisKKyAgICBkZWxheVsqb2Zmc2V0XSA9IHNh bXBsZTsKKworICAgIG1lbWNweSh0bXAsIGNvZWZmcyArIG9yZGVyIC0gKm9mZnNldCwgb3JkZXIg KiBzaXplb2YoZmxvYXQpKTsKKyAgICBvdXRwdXQgPSBzLT5mZHNwLT5zY2FsYXJwcm9kdWN0X2Zs b2F0KGRlbGF5LCB0bXAsIHMtPmtlcm5lbF9zaXplKTsKKworICAgIGlmICgtLSgqb2Zmc2V0KSA8 IDApCisgICAgICAgICpvZmZzZXQgPSBvcmRlciAtIDE7CisKKyAgICByZXR1cm4gb3V0cHV0Owor fQorCitzdGF0aWMgaW50IGx1cF9kZWNvbXBvc2UoZmxvYXQgKipNQSwgY29uc3QgaW50IE4sIGNv bnN0IGZsb2F0IHRvbCwgaW50ICpQKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IE47IGkr KykKKyAgICAgICAgUFtpXSA9IGk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykg eworICAgICAgICBmbG9hdCBtYXhBID0gMC5mOworICAgICAgICBpbnQgaW1heCA9IGk7CisKKyAg ICAgICAgZm9yIChpbnQgayA9IGk7IGsgPCBOOyBrKyspIHsKKyAgICAgICAgICAgIGZsb2F0IGFi c0EgPSBmYWJzKE1BW2tdW2ldKTsKKyAgICAgICAgICAgIGlmIChhYnNBID4gbWF4QSkgeworICAg ICAgICAgICAgICAgIG1heEEgPSBhYnNBOworICAgICAgICAgICAgICAgIGltYXggPSBrOworICAg ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG1heEEgPCB0b2wpCisgICAgICAg ICAgICByZXR1cm4gMDsKKworICAgICAgICBpZiAoaW1heCAhPSBpKSB7CisgICAgICAgICAgICBG RlNXQVAoaW50LCBQW2ldLCBQW2ltYXhdKTsKKyAgICAgICAgICAgIEZGU1dBUChmbG9hdCAqLCBN QVtpXSwgTUFbaW1heF0pOworICAgICAgICAgICAgUFtOXSsrOworICAgICAgICB9CisKKyAgICAg ICAgZm9yIChpbnQgaiA9IGkgKyAxOyBqIDwgTjsgaisrKSB7CisgICAgICAgICAgICBNQVtqXVtp XSAvPSBNQVtpXVtpXTsKKworICAgICAgICAgICAgZm9yIChpbnQgayA9IGkgKyAxOyBrIDwgTjsg aysrKQorICAgICAgICAgICAgICAgIE1BW2pdW2tdIC09IE1BW2pdW2ldICogTUFbaV1ba107Cisg ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIHZvaWQgbHVwX2lu dmVydChmbG9hdCAqY29uc3QgKk1BLCBjb25zdCBpbnQgKlAsIGNvbnN0IGludCBOLCBmbG9hdCAq KklBKQoreworICAgIGZvciAoaW50IGogPSAwOyBqIDwgTjsgaisrKSB7CisgICAgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgTjsgaSsrKSB7CisgICAgICAgICAgICBJQVtpXVtqXSA9IFBbaV0gPT0g aiA/IDEuZiA6IDAuZjsKKworICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBpOyBrKysp CisgICAgICAgICAgICAgICAgSUFbaV1bal0gLT0gTUFbaV1ba10gKiBJQVtrXVtqXTsKKyAgICAg ICAgfQorCisgICAgICAgIGZvciAoaW50IGkgPSBOIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAg ICAgICAgIGZvciAoaW50IGsgPSBpICsgMTsgayA8IE47IGsrKykKKyAgICAgICAgICAgICAgICBJ QVtpXVtqXSAtPSBNQVtpXVtrXSAqIElBW2tdW2pdOworCisgICAgICAgICAgICBJQVtpXVtqXSAv PSBNQVtpXVtpXTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIGZsb2F0IHByb2Nlc3Nf c2FtcGxlKEF1ZGlvQVBDb250ZXh0ICpzLCBmbG9hdCBpbnB1dCwgZmxvYXQgZGVzaXJlZCwgaW50 IGNoKQoreworICAgIGZsb2F0ICpkY29lZmZzID0gKGZsb2F0ICopcy0+ZGNvZWZmcy0+ZXh0ZW5k ZWRfZGF0YVtjaF07CisgICAgZmxvYXQgKmNvZWZmcyA9IChmbG9hdCAqKXMtPmNvZWZmcy0+ZXh0 ZW5kZWRfZGF0YVtjaF07CisgICAgZmxvYXQgKmRlbGF5ID0gKGZsb2F0ICopcy0+ZGVsYXktPmV4 dGVuZGVkX2RhdGFbY2hdOworICAgIGZsb2F0ICoqaXRtcG1wID0gJnMtPml0bXBtcFtzLT5wcm9q ZWN0aW9uICogY2hdOworICAgIGZsb2F0ICoqdG1wbXAgPSAmcy0+dG1wbXBbcy0+cHJvamVjdGlv biAqIGNoXTsKKyAgICBmbG9hdCAqdG1wbSA9IChmbG9hdCAqKXMtPnRtcG0tPmV4dGVuZGVkX2Rh dGFbY2hdOworICAgIGZsb2F0ICp0bXAgPSAoZmxvYXQgKilzLT50bXAtPmV4dGVuZGVkX2RhdGFb Y2hdOworICAgIGZsb2F0ICplID0gKGZsb2F0ICopcy0+ZS0+ZXh0ZW5kZWRfZGF0YVtjaF07Cisg ICAgZmxvYXQgKnggPSAoZmxvYXQgKilzLT54LT5leHRlbmRlZF9kYXRhW2NoXTsKKyAgICBmbG9h dCAqdyA9IChmbG9hdCAqKXMtPnctPmV4dGVuZGVkX2RhdGFbY2hdOworICAgIGludCAqcCA9IChp bnQgKilzLT5wLT5leHRlbmRlZF9kYXRhW2NoXTsKKyAgICBpbnQgKm9mZnNldCA9IChpbnQgKilz LT5vZmZzZXQtPmV4dGVuZGVkX2RhdGFbY2hdOworICAgIGNvbnN0IGludCBwcm9qZWN0aW9uID0g cy0+cHJvamVjdGlvbjsKKyAgICBjb25zdCBmbG9hdCBkZWx0YSA9IHMtPmRlbHRhOworICAgIGNv bnN0IGludCBvcmRlciA9IHMtPm9yZGVyOworICAgIGNvbnN0IGludCBsZW5ndGggPSBwcm9qZWN0 aW9uICsgb3JkZXI7CisgICAgY29uc3QgZmxvYXQgbXUgPSBzLT5tdTsKKyAgICBjb25zdCBmbG9h dCB0b2wgPSAwLjAwMDAxZjsKKyAgICBmbG9hdCBvdXRwdXQ7CisKKyAgICB4W29mZnNldFsyXSAr IGxlbmd0aF0gPSB4W29mZnNldFsyXV0gPSBpbnB1dDsKKyAgICBkZWxheVtvZmZzZXRbMF0gKyBv cmRlcl0gPSBpbnB1dDsKKworICAgIG91dHB1dCA9IGZpcl9zYW1wbGUocywgaW5wdXQsIGRlbGF5 LCBjb2VmZnMsIHRtcCwgb2Zmc2V0KTsKKyAgICBlW29mZnNldFsxXV0gPSBlW29mZnNldFsxXSAr IHByb2plY3Rpb25dID0gZGVzaXJlZCAtIG91dHB1dDsKKworICAgIGZvciAoaW50IGkgPSAwOyBp IDwgcHJvamVjdGlvbjsgaSsrKSB7CisgICAgICAgIGNvbnN0IGludCBpcHJvamVjdGlvbiA9IGkg KiBwcm9qZWN0aW9uOworCisgICAgICAgIGZvciAoaW50IGogPSBpOyBqIDwgcHJvamVjdGlvbjsg aisrKSB7CisgICAgICAgICAgICBmbG9hdCBzdW0gPSAwLmY7CisgICAgICAgICAgICBmb3IgKGlu dCBrID0gMDsgayA8IG9yZGVyOyBrKyspCisgICAgICAgICAgICAgICAgc3VtICs9IHhbb2Zmc2V0 WzJdICsgaSArIGtdICogeFtvZmZzZXRbMl0gKyBqICsga107CisgICAgICAgICAgICB0bXBtW2lw cm9qZWN0aW9uICsgal0gPSBzdW07CisgICAgICAgICAgICBpZiAoaSAhPSBqKQorICAgICAgICAg ICAgICAgIHRtcG1baiAqIHByb2plY3Rpb24gKyBpXSA9IHN1bTsKKyAgICAgICAgfQorCisgICAg ICAgIHRtcG1baXByb2plY3Rpb24gKyBpXSArPSBkZWx0YTsKKyAgICB9CisKKyAgICBsdXBfZGVj b21wb3NlKHRtcG1wLCBwcm9qZWN0aW9uLCB0b2wsIHApOworICAgIGx1cF9pbnZlcnQodG1wbXAs IHAsIHByb2plY3Rpb24sIGl0bXBtcCk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHByb2pl Y3Rpb247IGkrKykgeworICAgICAgICBmbG9hdCBzdW0gPSAwLmY7CisgICAgICAgIGZvciAoaW50 IGogPSAwOyBqIDwgcHJvamVjdGlvbjsgaisrKQorICAgICAgICAgICAgc3VtICs9IGl0bXBtcFtp XVtqXSAqIGVbaiArIG9mZnNldFsxXV07CisgICAgICAgIHdbaV0gPSBzdW07CisgICAgfQorCisg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvcmRlcjsgaSsrKSB7CisgICAgICAgIGZsb2F0IHN1bSA9 IDAuZjsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBwcm9qZWN0aW9uOyBqKyspCisgICAg ICAgICAgICBzdW0gKz0geFtvZmZzZXRbMl0gKyBpICsgal0gKiB3W2pdOworICAgICAgICBkY29l ZmZzW2ldID0gc3VtOworICAgIH0KKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb3JkZXI7IGkr KykKKyAgICAgICAgY29lZmZzW2ldID0gY29lZmZzW2kgKyBvcmRlcl0gPSBjb2VmZnNbaV0gKyBt dSAqIGRjb2VmZnNbaV07CisKKyAgICBpZiAoLS1vZmZzZXRbMV0gPCAwKQorICAgICAgICBvZmZz ZXRbMV0gPSBwcm9qZWN0aW9uIC0gMTsKKworICAgIGlmICgtLW9mZnNldFsyXSA8IDApCisgICAg ICAgIG9mZnNldFsyXSA9IGxlbmd0aCAtIDE7CisKKyAgICBzd2l0Y2ggKHMtPm91dHB1dF9tb2Rl KSB7CisgICAgY2FzZSBJTl9NT0RFOiAgICAgIG91dHB1dCA9IGlucHV0OyAgICAgICAgICAgIGJy ZWFrOworICAgIGNhc2UgREVTSVJFRF9NT0RFOiBvdXRwdXQgPSBkZXNpcmVkOyAgICAgICAgICBi cmVhazsKKyAgICBjYXNlIE9VVF9NT0RFOiAgICAgb3V0cHV0ID0gZGVzaXJlZCAtIG91dHB1dDsg YnJlYWs7CisgICAgY2FzZSBOT0lTRV9NT0RFOiAgIG91dHB1dCA9IGlucHV0IC0gb3V0cHV0OyAg IGJyZWFrOworICAgIGNhc2UgRVJST1JfTU9ERTogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIG91dHB1dDsKK30KKworc3RhdGljIGludCBwcm9j ZXNzX2NoYW5uZWxzKEFWRmlsdGVyQ29udGV4dCAqY3R4LCB2b2lkICphcmcsIGludCBqb2Juciwg aW50IG5iX2pvYnMpCit7CisgICAgQXVkaW9BUENvbnRleHQgKnMgPSBjdHgtPnByaXY7CisgICAg QVZGcmFtZSAqb3V0ID0gYXJnOworICAgIGNvbnN0IGludCBzdGFydCA9IChvdXQtPmNoX2xheW91 dC5uYl9jaGFubmVscyAqIGpvYm5yKSAvIG5iX2pvYnM7CisgICAgY29uc3QgaW50IGVuZCA9IChv dXQtPmNoX2xheW91dC5uYl9jaGFubmVscyAqIChqb2JucisxKSkgLyBuYl9qb2JzOworCisgICAg Zm9yIChpbnQgYyA9IHN0YXJ0OyBjIDwgZW5kOyBjKyspIHsKKyAgICAgICAgY29uc3QgZmxvYXQg KmlucHV0ID0gKGNvbnN0IGZsb2F0ICopcy0+ZnJhbWVbMF0tPmV4dGVuZGVkX2RhdGFbY107Cisg ICAgICAgIGNvbnN0IGZsb2F0ICpkZXNpcmVkID0gKGNvbnN0IGZsb2F0ICopcy0+ZnJhbWVbMV0t PmV4dGVuZGVkX2RhdGFbY107CisgICAgICAgIGZsb2F0ICpvdXRwdXQgPSAoZmxvYXQgKilvdXQt PmV4dGVuZGVkX2RhdGFbY107CisKKyAgICAgICAgZm9yIChpbnQgbiA9IDA7IG4gPCBvdXQtPm5i X3NhbXBsZXM7IG4rKykgeworICAgICAgICAgICAgb3V0cHV0W25dID0gcHJvY2Vzc19zYW1wbGUo cywgaW5wdXRbbl0sIGRlc2lyZWRbbl0sIGMpOworICAgICAgICAgICAgaWYgKGN0eC0+aXNfZGlz YWJsZWQpCisgICAgICAgICAgICAgICAgb3V0cHV0W25dID0gaW5wdXRbbl07CisgICAgICAgIH0K KyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhY3RpdmF0ZShBVkZpbHRl ckNvbnRleHQgKmN0eCkKK3sKKyAgICBBdWRpb0FQQ29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKyAg ICBpbnQgaSwgcmV0LCBzdGF0dXM7CisgICAgaW50IG5iX3NhbXBsZXM7CisgICAgaW50NjRfdCBw dHM7CisKKyAgICBGRl9GSUxURVJfRk9SV0FSRF9TVEFUVVNfQkFDS19BTEwoY3R4LT5vdXRwdXRz WzBdLCBjdHgpOworCisgICAgbmJfc2FtcGxlcyA9IEZGTUlOKGZmX2lubGlua19xdWV1ZWRfc2Ft cGxlcyhjdHgtPmlucHV0c1swXSksCisgICAgICAgICAgICAgICAgICAgICAgIGZmX2lubGlua19x dWV1ZWRfc2FtcGxlcyhjdHgtPmlucHV0c1sxXSkpOworICAgIGZvciAoaSA9IDA7IGkgPCBjdHgt Pm5iX2lucHV0cyAmJiBuYl9zYW1wbGVzID4gMDsgaSsrKSB7CisgICAgICAgIGlmIChzLT5mcmFt ZVtpXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChmZl9pbmxpbmtfY2hl Y2tfYXZhaWxhYmxlX3NhbXBsZXMoY3R4LT5pbnB1dHNbaV0sIG5iX3NhbXBsZXMpID4gMCkgewor ICAgICAgICAgICAgcmV0ID0gZmZfaW5saW5rX2NvbnN1bWVfc2FtcGxlcyhjdHgtPmlucHV0c1tp XSwgbmJfc2FtcGxlcywgbmJfc2FtcGxlcywgJnMtPmZyYW1lW2ldKTsKKyAgICAgICAgICAgIGlm IChyZXQgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIH0KKyAgICB9 CisKKyAgICBpZiAocy0+ZnJhbWVbMF0gJiYgcy0+ZnJhbWVbMV0pIHsKKyAgICAgICAgQVZGcmFt ZSAqb3V0OworCisgICAgICAgIG91dCA9IGZmX2dldF9hdWRpb19idWZmZXIoY3R4LT5vdXRwdXRz WzBdLCBzLT5mcmFtZVswXS0+bmJfc2FtcGxlcyk7CisgICAgICAgIGlmICghb3V0KSB7CisgICAg ICAgICAgICBhdl9mcmFtZV9mcmVlKCZzLT5mcmFtZVswXSk7CisgICAgICAgICAgICBhdl9mcmFt ZV9mcmVlKCZzLT5mcmFtZVsxXSk7CisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0p OworICAgICAgICB9CisKKyAgICAgICAgZmZfZmlsdGVyX2V4ZWN1dGUoY3R4LCBwcm9jZXNzX2No YW5uZWxzLCBvdXQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZGTUlOKGN0eC0+ b3V0cHV0c1swXS0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzLCBmZl9maWx0ZXJfZ2V0X25iX3RocmVh ZHMoY3R4KSkpOworCisgICAgICAgIG91dC0+cHRzID0gcy0+ZnJhbWVbMF0tPnB0czsKKworICAg ICAgICBhdl9mcmFtZV9mcmVlKCZzLT5mcmFtZVswXSk7CisgICAgICAgIGF2X2ZyYW1lX2ZyZWUo JnMtPmZyYW1lWzFdKTsKKworICAgICAgICByZXQgPSBmZl9maWx0ZXJfZnJhbWUoY3R4LT5vdXRw dXRzWzBdLCBvdXQpOworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVybiBy ZXQ7CisgICAgfQorCisgICAgaWYgKCFuYl9zYW1wbGVzKSB7CisgICAgICAgIGZvciAoaSA9IDA7 IGkgPCAyOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChmZl9pbmxpbmtfYWNrbm93bGVkZ2Vfc3Rh dHVzKGN0eC0+aW5wdXRzW2ldLCAmc3RhdHVzLCAmcHRzKSkgeworICAgICAgICAgICAgICAgIGZm X291dGxpbmtfc2V0X3N0YXR1cyhjdHgtPm91dHB1dHNbMF0sIHN0YXR1cywgcHRzKTsKKyAgICAg ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor ICAgIGlmIChmZl9vdXRsaW5rX2ZyYW1lX3dhbnRlZChjdHgtPm91dHB1dHNbMF0pKSB7CisgICAg ICAgIGZvciAoaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChmZl9pbmxpbmtf cXVldWVkX3NhbXBsZXMoY3R4LT5pbnB1dHNbaV0pID4gMCkKKyAgICAgICAgICAgICAgICBjb250 aW51ZTsKKyAgICAgICAgICAgIGZmX2lubGlua19yZXF1ZXN0X2ZyYW1lKGN0eC0+aW5wdXRzW2ld KTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAw OworfQorCitzdGF0aWMgaW50IGNvbmZpZ19vdXRwdXQoQVZGaWx0ZXJMaW5rICpvdXRsaW5rKQor eworICAgIGNvbnN0IGludCBjaGFubmVscyA9IG91dGxpbmstPmNoX2xheW91dC5uYl9jaGFubmVs czsKKyAgICBBVkZpbHRlckNvbnRleHQgKmN0eCA9IG91dGxpbmstPnNyYzsKKyAgICBBdWRpb0FQ Q29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKworICAgIHMtPmtlcm5lbF9zaXplID0gRkZBTElHTihz LT5vcmRlciwgMTYpOworCisgICAgaWYgKCFzLT5vZmZzZXQpCisgICAgICAgIHMtPm9mZnNldCA9 IGZmX2dldF9hdWRpb19idWZmZXIob3V0bGluaywgMyk7CisgICAgaWYgKCFzLT5kZWxheSkKKyAg ICAgICAgcy0+ZGVsYXkgPSBmZl9nZXRfYXVkaW9fYnVmZmVyKG91dGxpbmssIDIgKiBzLT5rZXJu ZWxfc2l6ZSk7CisgICAgaWYgKCFzLT5kY29lZmZzKQorICAgICAgICBzLT5kY29lZmZzID0gZmZf Z2V0X2F1ZGlvX2J1ZmZlcihvdXRsaW5rLCBzLT5rZXJuZWxfc2l6ZSk7CisgICAgaWYgKCFzLT5j b2VmZnMpCisgICAgICAgIHMtPmNvZWZmcyA9IGZmX2dldF9hdWRpb19idWZmZXIob3V0bGluaywg MiAqIHMtPmtlcm5lbF9zaXplKTsKKyAgICBpZiAoIXMtPmUpCisgICAgICAgIHMtPmUgPSBmZl9n ZXRfYXVkaW9fYnVmZmVyKG91dGxpbmssIDIgKiBzLT5wcm9qZWN0aW9uKTsKKyAgICBpZiAoIXMt PnApCisgICAgICAgIHMtPnAgPSBmZl9nZXRfYXVkaW9fYnVmZmVyKG91dGxpbmssIHMtPnByb2pl Y3Rpb24gKyAxKTsKKyAgICBpZiAoIXMtPngpCisgICAgICAgIHMtPnggPSBmZl9nZXRfYXVkaW9f YnVmZmVyKG91dGxpbmssIDIgKiAocy0+cHJvamVjdGlvbiArIHMtPm9yZGVyKSk7CisgICAgaWYg KCFzLT53KQorICAgICAgICBzLT53ID0gZmZfZ2V0X2F1ZGlvX2J1ZmZlcihvdXRsaW5rLCBzLT5w cm9qZWN0aW9uKTsKKyAgICBpZiAoIXMtPnRtcCkKKyAgICAgICAgcy0+dG1wID0gZmZfZ2V0X2F1 ZGlvX2J1ZmZlcihvdXRsaW5rLCBzLT5rZXJuZWxfc2l6ZSk7CisgICAgaWYgKCFzLT50bXBtKQor ICAgICAgICBzLT50bXBtID0gZmZfZ2V0X2F1ZGlvX2J1ZmZlcihvdXRsaW5rLCBzLT5wcm9qZWN0 aW9uICogcy0+cHJvamVjdGlvbik7CisgICAgaWYgKCFzLT5pdG1wbSkKKyAgICAgICAgcy0+aXRt cG0gPSBmZl9nZXRfYXVkaW9fYnVmZmVyKG91dGxpbmssIHMtPnByb2plY3Rpb24gKiBzLT5wcm9q ZWN0aW9uKTsKKworICAgIGlmICghcy0+dG1wbXApCisgICAgICAgIHMtPnRtcG1wID0gYXZfY2Fs bG9jKHMtPnByb2plY3Rpb24gKiBjaGFubmVscywgc2l6ZW9mKCpzLT50bXBtcCkpOworICAgIGlm ICghcy0+aXRtcG1wKQorICAgICAgICBzLT5pdG1wbXAgPSBhdl9jYWxsb2Mocy0+cHJvamVjdGlv biAqIGNoYW5uZWxzLCBzaXplb2YoKnMtPml0bXBtcCkpOworCisgICAgaWYgKCFzLT5vZmZzZXQg fHwgIXMtPmRlbGF5IHx8ICFzLT5kY29lZmZzIHx8ICFzLT5jb2VmZnMgfHwgIXMtPnRtcG1wIHx8 ICFzLT5pdG1wbXAgfHwKKyAgICAgICAgIXMtPmUgfHwgIXMtPnAgfHwgIXMtPnggfHwgIXMtPncg fHwgIXMtPnRtcCB8fCAhcy0+dG1wbSB8fCAhcy0+aXRtcG0pCisgICAgICAgIHJldHVybiBBVkVS Uk9SKEVOT01FTSk7CisKKyAgICBmb3IgKGludCBjaCA9IDA7IGNoIDwgY2hhbm5lbHM7IGNoKysp IHsKKyAgICAgICAgZmxvYXQgKml0bXBtID0gKGZsb2F0ICopcy0+aXRtcG0tPmV4dGVuZGVkX2Rh dGFbY2hdOworICAgICAgICBmbG9hdCAqdG1wbSA9IChmbG9hdCAqKXMtPnRtcG0tPmV4dGVuZGVk X2RhdGFbY2hdOworICAgICAgICBmbG9hdCAqKml0bXBtcCA9ICZzLT5pdG1wbXBbcy0+cHJvamVj dGlvbiAqIGNoXTsKKyAgICAgICAgZmxvYXQgKip0bXBtcCA9ICZzLT50bXBtcFtzLT5wcm9qZWN0 aW9uICogY2hdOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy0+cHJvamVjdGlvbjsg aSsrKSB7CisgICAgICAgICAgICBpdG1wbXBbaV0gPSAmaXRtcG1baSAqIHMtPnByb2plY3Rpb25d OworICAgICAgICAgICAgdG1wbXBbaV0gPSAmdG1wbVtpICogcy0+cHJvamVjdGlvbl07CisgICAg ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGF2X2NvbGQgaW50IGlu aXQoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCit7CisgICAgQXVkaW9BUENvbnRleHQgKnMgPSBjdHgt PnByaXY7CisKKyAgICBzLT5mZHNwID0gYXZwcml2X2Zsb2F0X2RzcF9hbGxvYygwKTsKKyAgICBp ZiAoIXMtPmZkc3ApCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICByZXR1 cm4gMDsKK30KKworc3RhdGljIGF2X2NvbGQgdm9pZCB1bmluaXQoQVZGaWx0ZXJDb250ZXh0ICpj dHgpCit7CisgICAgQXVkaW9BUENvbnRleHQgKnMgPSBjdHgtPnByaXY7CisKKyAgICBhdl9mcmVl cCgmcy0+ZmRzcCk7CisKKyAgICBhdl9mcmFtZV9mcmVlKCZzLT5vZmZzZXQpOworICAgIGF2X2Zy YW1lX2ZyZWUoJnMtPmRlbGF5KTsKKyAgICBhdl9mcmFtZV9mcmVlKCZzLT5kY29lZmZzKTsKKyAg ICBhdl9mcmFtZV9mcmVlKCZzLT5jb2VmZnMpOworICAgIGF2X2ZyYW1lX2ZyZWUoJnMtPmUpOwor ICAgIGF2X2ZyYW1lX2ZyZWUoJnMtPnApOworICAgIGF2X2ZyYW1lX2ZyZWUoJnMtPncpOworICAg IGF2X2ZyYW1lX2ZyZWUoJnMtPngpOworICAgIGF2X2ZyYW1lX2ZyZWUoJnMtPnRtcCk7CisgICAg YXZfZnJhbWVfZnJlZSgmcy0+dG1wbSk7CisgICAgYXZfZnJhbWVfZnJlZSgmcy0+aXRtcG0pOwor CisgICAgYXZfZnJlZXAoJnMtPnRtcG1wKTsKKyAgICBhdl9mcmVlcCgmcy0+aXRtcG1wKTsKK30K Kworc3RhdGljIGNvbnN0IEFWRmlsdGVyUGFkIGlucHV0c1tdID0geworICAgIHsKKyAgICAgICAg Lm5hbWUgPSAiaW5wdXQiLAorICAgICAgICAudHlwZSA9IEFWTUVESUFfVFlQRV9BVURJTywKKyAg ICB9LAorICAgIHsKKyAgICAgICAgLm5hbWUgPSAiZGVzaXJlZCIsCisgICAgICAgIC50eXBlID0g QVZNRURJQV9UWVBFX0FVRElPLAorICAgIH0sCit9OworCitzdGF0aWMgY29uc3QgQVZGaWx0ZXJQ YWQgb3V0cHV0c1tdID0geworICAgIHsKKyAgICAgICAgLm5hbWUgICAgICAgICA9ICJkZWZhdWx0 IiwKKyAgICAgICAgLnR5cGUgICAgICAgICA9IEFWTUVESUFfVFlQRV9BVURJTywKKyAgICAgICAg LmNvbmZpZ19wcm9wcyA9IGNvbmZpZ19vdXRwdXQsCisgICAgfSwKK307CisKK2NvbnN0IEFWRmls dGVyIGZmX2FmX2FhcCA9IHsKKyAgICAubmFtZSAgICAgICAgICAgPSAiYWFwIiwKKyAgICAuZGVz Y3JpcHRpb24gICAgPSBOVUxMX0lGX0NPTkZJR19TTUFMTCgiQXBwbHkgQWZmaW5lIFByb2plY3Rp b24gYWxnb3JpdGhtIHRvIGZpcnN0IGF1ZGlvIHN0cmVhbS4iKSwKKyAgICAucHJpdl9zaXplICAg ICAgPSBzaXplb2YoQXVkaW9BUENvbnRleHQpLAorICAgIC5wcml2X2NsYXNzICAgICA9ICZhYXBf Y2xhc3MsCisgICAgLmluaXQgICAgICAgICAgID0gaW5pdCwKKyAgICAudW5pbml0ICAgICAgICAg PSB1bmluaXQsCisgICAgLmFjdGl2YXRlICAgICAgID0gYWN0aXZhdGUsCisgICAgRklMVEVSX0lO UFVUUyhpbnB1dHMpLAorICAgIEZJTFRFUl9PVVRQVVRTKG91dHB1dHMpLAorICAgIEZJTFRFUl9T SU5HTEVfU0FNUExFRk1UKEFWX1NBTVBMRV9GTVRfRkxUUCksCisgICAgLmZsYWdzICAgICAgICAg ID0gQVZGSUxURVJfRkxBR19TVVBQT1JUX1RJTUVMSU5FX0lOVEVSTkFMIHwKKyAgICAgICAgICAg ICAgICAgICAgICBBVkZJTFRFUl9GTEFHX1NMSUNFX1RIUkVBRFMsCisgICAgLnByb2Nlc3NfY29t bWFuZCA9IGZmX2ZpbHRlcl9wcm9jZXNzX2NvbW1hbmQsCit9OwpkaWZmIC0tZ2l0IGEvbGliYXZm aWx0ZXIvYWxsZmlsdGVycy5jIGIvbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jCmluZGV4IDVmYmZl OWQ5MDYuLjlkNjYyMTNhNjIgMTAwNjQ0Ci0tLSBhL2xpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYwor KysgYi9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMKQEAgLTIxLDYgKzIxLDcgQEAKIAogI2luY2x1 ZGUgImF2ZmlsdGVyLmgiCiAKK2V4dGVybiBjb25zdCBBVkZpbHRlciBmZl9hZl9hYXA7CiBleHRl cm4gY29uc3QgQVZGaWx0ZXIgZmZfYWZfYWJlbmNoOwogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZm X2FmX2Fjb21wcmVzc29yOwogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2FmX2Fjb250cmFzdDsK LS0gCjIuNDIuMQoK --0000000000001d5be5060b0f0f75 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". --0000000000001d5be5060b0f0f75--