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 61AFB43D24 for ; Wed, 7 Sep 2022 17:59:04 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D1E2968BB97; Wed, 7 Sep 2022 20:59:02 +0300 (EEST) Received: from mail-yb1-f174.google.com (mail-yb1-f174.google.com [209.85.219.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 21BA468BAB6 for ; Wed, 7 Sep 2022 20:58:56 +0300 (EEST) Received: by mail-yb1-f174.google.com with SMTP id 202so18078054ybe.13 for ; Wed, 07 Sep 2022 10:58:56 -0700 (PDT) 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; bh=v7ngRKnU0d+tIkFTo+5mIbQGhSXuWlW7yuNF+6OVr/w=; b=gnnn1pY6ladJucy/29iZ1fzXOa7EahY95rwTtybn/ElWYTuDtYzfrfzkbwLpYUi6aI HiY6W5NPMO9Qo0lvKyamx+rfRQhKf+KOAjIJALgM7Uqp0OFKOXLrKUjHyDNrHntfTyYv NTZM+WdYl2KgXnuLWtw91rv5arlhAC1MFd6Hmd5yoVIswyXufA5bSRy8gJh+EGxeYuU4 qDhKNFoS4FinMe6sS+Tdvt1X6Wh9Czyfunl6J3dy7k+ihDIr/dYG47SusX90mK2BLBdZ WRhJ2/OxKqzGTnkOcdOD2ebAwndn8AO8Vbzi+d6PgvUNdvsq81fS8+GZpmjvFIy8J331 Iyig== 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; bh=v7ngRKnU0d+tIkFTo+5mIbQGhSXuWlW7yuNF+6OVr/w=; b=C3luPOMZhoSQ8SAtQqy2LpI0aFqXToi31PbBe+zGjro+QWe78DU8p+P+t7tWxXZmoD m3kZ4GHysYdDuNnnxazOxKolPYaId1CKZtGuv7PYan0keIf5CCel9YoKUE4sjA905oic zP5hZks9XpFU2bEYw1pqHI3bglemiVqaAtBgzr2BqEkyEGShxW7tr0dChyB+s95Thj77 BovUuGbc3Cis7nGOBw9O8roZUU+qsooe8ldvmkCnOfZYB+zZjpxUV0cPDm0Ds0nRXEwK U46o2vqgqXAwUmwRWUIZsgpgt1He54kwNyZUhEigkdTqtkNyqakYSffjBmEZzvCgawtI AfZA== X-Gm-Message-State: ACgBeo3WG+Uq7e5JGrgpYEXYzO3wxa28AM4/+xcbaCoHUc1fFKg4L6Bp OznQK3hn39BC3Cl6Wb7ouj9pmuPLIJoVY53hoSpL1oJD X-Google-Smtp-Source: AA6agR4KbiET6IbGffp9PlBVLoMK244nKdYp7ozHy7890ZzOA9mAqmXcKkRPWKGPtBRYjt94PoQWueZbsmIbGtZ1Hs0= X-Received: by 2002:a25:4fc1:0:b0:6ad:2ca4:d74d with SMTP id d184-20020a254fc1000000b006ad2ca4d74dmr2848885ybb.396.1662573534624; Wed, 07 Sep 2022 10:58:54 -0700 (PDT) MIME-Version: 1.0 From: Paul B Mahol Date: Wed, 7 Sep 2022 20:02:01 +0200 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="000000000000f22de205e81a106b" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] Bonk, Bonk 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: --000000000000f22de205e81a106b Content-Type: text/plain; charset="UTF-8" Patches attached. Could decoder be made faster? --000000000000f22de205e81a106b Content-Type: text/x-patch; charset="US-ASCII"; name="0002-avformat-add-bonk-demuxer.patch" Content-Disposition: attachment; filename="0002-avformat-add-bonk-demuxer.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l7rxgk8b0 RnJvbSA2NWEzOTU2YWYyNTFkMjk2ZDg4MTgxZGIyNmZkZmM4NTEwYmU3MDMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgNyBTZXAgMjAyMiAxNDowMTo0MiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBhdmZv cm1hdDogYWRkIGJvbmsgZGVtdXhlcgoKU2lnbmVkLW9mZi1ieTogUGF1bCBCIE1haG9sIDxvbmVt ZGFAZ21haWwuY29tPgotLS0KIGxpYmF2Zm9ybWF0L01ha2VmaWxlICAgICB8ICAxICsKIGxpYmF2 Zm9ybWF0L2FsbGZvcm1hdHMuYyB8ICAxICsKIGxpYmF2Zm9ybWF0L2JvbmsuYyAgICAgICB8IDgz ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdl ZCwgODUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Zm9ybWF0L2Jvbmsu YwoKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlIGIvbGliYXZmb3JtYXQvTWFrZWZp bGUKaW5kZXggNjg0YmFkMGViNC4uNWNkY2RhMzIzOSAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQv TWFrZWZpbGUKKysrIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKQEAgLTE0Nyw2ICsxNDcsNyBAQCBP QkpTLSQoQ09ORklHX0JJVF9NVVhFUikgICAgICAgICAgICAgICAgICs9IGJpdC5vCiBPQkpTLSQo Q09ORklHX0JJVFBBQ0tFRF9ERU1VWEVSKSAgICAgICAgICs9IHJhd3ZpZGVvZGVjLm8KIE9CSlMt JChDT05GSUdfQk1WX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gYm12Lm8KIE9CSlMtJChDT05G SUdfQk9BX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gYm9hZGVjLm8KK09CSlMtJChDT05GSUdf Qk9OS19ERU1VWEVSKSAgICAgICAgICAgICAgKz0gYm9uay5vIHJhd2RlYy5vCiBPQkpTLSQoQ09O RklHX0JGU1RNX0RFTVVYRVIpICAgICAgICAgICAgICs9IGJyc3RtLm8KIE9CSlMtJChDT05GSUdf QlJTVE1fREVNVVhFUikgICAgICAgICAgICAgKz0gYnJzdG0ubwogT0JKUy0kKENPTkZJR19DOTNf REVNVVhFUikgICAgICAgICAgICAgICArPSBjOTMubyB2b2NfcGFja2V0Lm8gdm9jLm8KZGlmZiAt LWdpdCBhL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYyBiL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMu YwppbmRleCBhZTQ0NzlmYjdhLi5jZWJkNWUwYzY3IDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9h bGxmb3JtYXRzLmMKKysrIGIvbGliYXZmb3JtYXQvYWxsZm9ybWF0cy5jCkBAIC0xMDIsNiArMTAy LDcgQEAgZXh0ZXJuIGNvbnN0IEFWSW5wdXRGb3JtYXQgIGZmX2Jtdl9kZW11eGVyOwogZXh0ZXJu IGNvbnN0IEFWSW5wdXRGb3JtYXQgIGZmX2Jmc3RtX2RlbXV4ZXI7CiBleHRlcm4gY29uc3QgQVZJ bnB1dEZvcm1hdCAgZmZfYnJzdG1fZGVtdXhlcjsKIGV4dGVybiBjb25zdCBBVklucHV0Rm9ybWF0 ICBmZl9ib2FfZGVtdXhlcjsKK2V4dGVybiBjb25zdCBBVklucHV0Rm9ybWF0ICBmZl9ib25rX2Rl bXV4ZXI7CiBleHRlcm4gY29uc3QgQVZJbnB1dEZvcm1hdCAgZmZfYzkzX2RlbXV4ZXI7CiBleHRl cm4gY29uc3QgQVZJbnB1dEZvcm1hdCAgZmZfY2FmX2RlbXV4ZXI7CiBleHRlcm4gY29uc3QgQVZP dXRwdXRGb3JtYXQgZmZfY2FmX211eGVyOwpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvYm9uay5j IGIvbGliYXZmb3JtYXQvYm9uay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLjlkZGUzMGQ0ODMKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmZvcm1hdC9ib25rLmMKQEAg LTAsMCArMSw4MyBAQAorLyoKKyAqIEJvbmsgZGVtdXhlcgorICogQ29weXJpZ2h0IChjKSAyMDE2 IFBhdWwgQiBNYWhvbAorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisg KiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisj aW5jbHVkZSAibGliYXZ1dGlsL2ludHJlYWR3cml0ZS5oIgorI2luY2x1ZGUgImF2Zm9ybWF0Lmgi CisjaW5jbHVkZSAiZGVtdXguaCIKKyNpbmNsdWRlICJpbnRlcm5hbC5oIgorI2luY2x1ZGUgInJh d2RlYy5oIgorCitzdGF0aWMgaW50IGJvbmtfcHJvYmUoY29uc3QgQVZQcm9iZURhdGEgKnApCit7 CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwLT5idWZfc2l6ZSAtIDU7IGkrKykgeworICAgICAg ICBpZiAoIXAtPmJ1ZltpXSAmJiBBVl9STDMyKHAtPmJ1ZiArIGkgKyAxKSA9PSBNS1RBRygnQics J08nLCdOJywnSycpICYmCisgICAgICAgICAgICAhcC0+YnVmW2kgKyA1XSkKKyAgICAgICAgICAg IHJldHVybiBBVlBST0JFX1NDT1JFX01BWDsKKyAgICAgICAgZWxzZSBpZiAoIXAtPmJ1ZltpXSkK KyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMg aW50IGJvbmtfcmVhZF9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQoreworICAgIEFWU3RyZWFt ICpzdDsKKyAgICBpbnQgcmV0OworCisgICAgZm9yIChpbnQgaSA9IDA7ICFhdmlvX2Zlb2Yocy0+ cGIpOyBpKyspIHsKKyAgICAgICAgaW50IGIgPSBhdmlvX3I4KHMtPnBiKTsKKyAgICAgICAgaWYg KCFiICYmIGF2aW9fcmwzMihzLT5wYikgPT0gTUtUQUcoJ0InLCdPJywnTicsJ0snKSkKKyAgICAg ICAgICAgIGJyZWFrOworICAgICAgICBlbHNlIGlmICghYikKKyAgICAgICAgICAgIHJldHVybiBB VkVSUk9SX0lOVkFMSUREQVRBOworICAgIH0KKworICAgIHN0ID0gYXZmb3JtYXRfbmV3X3N0cmVh bShzLCBOVUxMKTsKKyAgICBpZiAoIXN0KQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0p OworICAgIGlmICgocmV0ID0gZmZfZ2V0X2V4dHJhZGF0YShzLCBzdC0+Y29kZWNwYXIsIHMtPnBi LCAxNykpIDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICBzdC0+Y29kZWNwYXItPmNvZGVj X3R5cGUgID0gQVZNRURJQV9UWVBFX0FVRElPOworICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQg ICAgPSBBVl9DT0RFQ19JRF9CT05LOworICAgIHN0LT5jb2RlY3Bhci0+c2FtcGxlX3JhdGUgPSBB Vl9STDMyKHN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhICsgNSk7CisgICAgc3QtPmNvZGVjcGFyLT5j aF9sYXlvdXQubmJfY2hhbm5lbHMgPSBzdC0+Y29kZWNwYXItPmV4dHJhZGF0YVs5XTsKKyAgICBp ZiAoc3QtPmNvZGVjcGFyLT5jaF9sYXlvdXQubmJfY2hhbm5lbHMgPT0gMCkKKyAgICAgICAgcmV0 dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgc3QtPmR1cmF0aW9uICAgICAgICAgICAgICA9 IEFWX1JMMzIoc3QtPmNvZGVjcGFyLT5leHRyYWRhdGEgKyAxKSAvIHN0LT5jb2RlY3Bhci0+Y2hf bGF5b3V0Lm5iX2NoYW5uZWxzOworICAgIGF2cHJpdl9zZXRfcHRzX2luZm8oc3QsIDY0LCAxLCBz dC0+Y29kZWNwYXItPnNhbXBsZV9yYXRlKTsKKyAgICBmZmZvcm1hdGNvbnRleHQocyktPmRhdGFf b2Zmc2V0ID0gYXZpb190ZWxsKHMtPnBiKTsKKworICAgIHJldHVybiAwOworfQorCitjb25zdCBB VklucHV0Rm9ybWF0IGZmX2JvbmtfZGVtdXhlciA9IHsKKyAgICAubmFtZSAgICAgICAgICAgPSAi Ym9uayIsCisgICAgLmxvbmdfbmFtZSAgICAgID0gTlVMTF9JRl9DT05GSUdfU01BTEwoInJhdyBC b25rIiksCisgICAgLnJlYWRfcHJvYmUgICAgID0gYm9ua19wcm9iZSwKKyAgICAucmVhZF9oZWFk ZXIgICAgPSBib25rX3JlYWRfaGVhZGVyLAorICAgIC5yZWFkX3BhY2tldCAgICA9IGZmX3Jhd19y ZWFkX3BhcnRpYWxfcGFja2V0LAorICAgIC5leHRlbnNpb25zICAgICA9ICJib25rIiwKKyAgICAu ZmxhZ3MgICAgICAgICAgPSBBVkZNVF9OT0JJTlNFQVJDSCB8IEFWRk1UX05PR0VOU0VBUkNIIHwg QVZGTVRfTk9fQllURV9TRUVLIHwgQVZGTVRfTk9USU1FU1RBTVBTLAorICAgIC5yYXdfY29kZWNf aWQgICA9IEFWX0NPREVDX0lEX0JPTkssCisgICAgLnByaXZfZGF0YV9zaXplID0gc2l6ZW9mKEZG UmF3RGVtdXhlckNvbnRleHQpLAorICAgIC5wcml2X2NsYXNzICAgICA9ICZmZl9yYXdfZGVtdXhl cl9jbGFzcywKK307Ci0tIAoyLjM3LjIKCg== --000000000000f22de205e81a106b Content-Type: text/x-patch; charset="US-ASCII"; name="0001-avcodec-add-bonk-audio-decoder.patch" Content-Disposition: attachment; filename="0001-avcodec-add-bonk-audio-decoder.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l7rxgk9y1 RnJvbSBhNmU0NTIzMjFjNzYzN2RkOWZhMzBiNTlhNzc1M2ZlMzBlZjcwMWRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgNyBTZXAgMjAyMiAxMzo1ODo1MyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMS8yXSBhdmNv ZGVjOiBhZGQgYm9uayBhdWRpbyBkZWNvZGVyCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIEIgTWFob2wg PG9uZW1kYUBnbWFpbC5jb20+Ci0tLQogbGliYXZjb2RlYy9NYWtlZmlsZSAgICAgfCAgIDEgKwog bGliYXZjb2RlYy9hbGxjb2RlY3MuYyAgfCAgIDEgKwogbGliYXZjb2RlYy9ib25rLmMgICAgICAg fCA0MjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliYXZjb2Rl Yy9jb2RlY19kZXNjLmMgfCAgIDcgKwogbGliYXZjb2RlYy9jb2RlY19pZC5oICAgfCAgIDEgKwog NSBmaWxlcyBjaGFuZ2VkLCA0MzQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxp YmF2Y29kZWMvYm9uay5jCgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9NYWtlZmlsZSBiL2xpYmF2 Y29kZWMvTWFrZWZpbGUKaW5kZXggOTQ1OTA4ZTNiOC4uMGI0NmJjMDE3MyAxMDA2NDQKLS0tIGEv bGliYXZjb2RlYy9NYWtlZmlsZQorKysgYi9saWJhdmNvZGVjL01ha2VmaWxlCkBAIC0yNjMsNiAr MjYzLDcgQEAgT0JKUy0kKENPTkZJR19CTVBfREVDT0RFUikgICAgICAgICAgICAgKz0gYm1wLm8g bXNybGVkZWMubwogT0JKUy0kKENPTkZJR19CTVBfRU5DT0RFUikgICAgICAgICAgICAgKz0gYm1w ZW5jLm8KIE9CSlMtJChDT05GSUdfQk1WX0FVRElPX0RFQ09ERVIpICAgICAgICs9IGJtdmF1ZGlv Lm8KIE9CSlMtJChDT05GSUdfQk1WX1ZJREVPX0RFQ09ERVIpICAgICAgICs9IGJtdnZpZGVvLm8K K09CSlMtJChDT05GSUdfQk9OS19ERUNPREVSKSAgICAgICAgICAgICs9IGJvbmsubwogT0JKUy0k KENPTkZJR19CUkVOREVSX1BJWF9ERUNPREVSKSAgICAgKz0gYnJlbmRlcnBpeC5vCiBPQkpTLSQo Q09ORklHX0M5M19ERUNPREVSKSAgICAgICAgICAgICArPSBjOTMubwogT0JKUy0kKENPTkZJR19D QVZTX0RFQ09ERVIpICAgICAgICAgICAgKz0gY2F2cy5vIGNhdnNkZWMubyBjYXZzZHNwLm8gXApk aWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hbGxjb2RlY3MuYyBiL2xpYmF2Y29kZWMvYWxsY29kZWNz LmMKaW5kZXggNjkzOWE0ZTI1Zi4uNWQ1OGE1ZDlmMCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9h bGxjb2RlY3MuYworKysgYi9saWJhdmNvZGVjL2FsbGNvZGVjcy5jCkBAIC00NDYsNiArNDQ2LDcg QEAgZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfYXRyYWM5X2RlY29kZXI7CiBleHRlcm4gY29uc3Qg RkZDb2RlYyBmZl9iaW5rYXVkaW9fZGN0X2RlY29kZXI7CiBleHRlcm4gY29uc3QgRkZDb2RlYyBm Zl9iaW5rYXVkaW9fcmRmdF9kZWNvZGVyOwogZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfYm12X2F1 ZGlvX2RlY29kZXI7CitleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9ib25rX2RlY29kZXI7CiBleHRl cm4gY29uc3QgRkZDb2RlYyBmZl9jb29rX2RlY29kZXI7CiBleHRlcm4gY29uc3QgRkZDb2RlYyBm Zl9kY2FfZW5jb2RlcjsKIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2RjYV9kZWNvZGVyOwpkaWZm IC0tZ2l0IGEvbGliYXZjb2RlYy9ib25rLmMgYi9saWJhdmNvZGVjL2JvbmsuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mNjk2MTIyYWRhCi0tLSAvZGV2L251bGwKKysr IGIvbGliYXZjb2RlYy9ib25rLmMKQEAgLTAsMCArMSw0MjQgQEAKKy8qCisgKiBCb25rIGF1ZGlv IGRlY29kZXIKKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZt cGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor ICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2luY2x1 ZGUgImxpYmF2dXRpbC9pbnRlcm5hbC5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRyZWFkd3Jp dGUuaCIKKyNpbmNsdWRlICJhdmNvZGVjLmgiCisjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIK KyNpbmNsdWRlICJkZWNvZGUuaCIKKyNkZWZpbmUgQklUU1RSRUFNX1JFQURFUl9MRQorI2luY2x1 ZGUgImdldF9iaXRzLmgiCisjaW5jbHVkZSAiYnl0ZXN0cmVhbS5oIgorCit0eXBlZGVmIHN0cnVj dCBCaXRDb3VudCB7CisgICAgdWludDhfdCBiaXQ7CisgICAgdW5zaWduZWQgY291bnQ7Cit9IEJp dENvdW50OworCit0eXBlZGVmIHN0cnVjdCBCb25rQ29udGV4dCB7CisgICAgR2V0Qml0Q29udGV4 dCBnYjsKKyAgICBpbnQgc2tpcDsKKworICAgIHVpbnQ4X3QgKmJpdHN0cmVhbTsKKyAgICBpbnQg bWF4X2ZyYW1lc2l6ZTsKKyAgICBpbnQgYml0c3RyZWFtX3NpemU7CisgICAgaW50IGJpdHN0cmVh bV9pbmRleDsKKworICAgIHVpbnQ2NF90IG5iX3NhbXBsZXM7CisgICAgaW50IGxvc3NsZXNzOwor ICAgIGludCBtaWRfc2lkZTsKKyAgICBpbnQgbl90YXBzOworICAgIGludCBkb3duX3NhbXBsaW5n OworICAgIGludCBzYW1wbGVzX3Blcl9wYWNrZXQ7CisKKyAgICBpbnQgc3RhdGVbMl1bMjA0OF0s IGtbMjA0OF07CisgICAgaW50ICpzYW1wbGVzOworICAgIGludCAqaW5wdXRfc2FtcGxlczsKKyAg ICB1aW50OF90IHF1YW50WzIwNDhdOworICAgIEJpdENvdW50ICpiaXRzOworfSBCb25rQ29udGV4 dDsKKworc3RhdGljIGF2X2NvbGQgaW50IGJvbmtfY2xvc2UoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 KQoreworICAgIEJvbmtDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKKworICAgIGF2X2Zy ZWVwKCZzLT5iaXRzdHJlYW0pOworICAgIGF2X2ZyZWVwKCZzLT5pbnB1dF9zYW1wbGVzKTsKKyAg ICBhdl9mcmVlcCgmcy0+c2FtcGxlcyk7CisgICAgYXZfZnJlZXAoJnMtPmJpdHMpOworICAgIHMt PmJpdHN0cmVhbV9zaXplID0gMDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgYXZfY29s ZCBpbnQgYm9ua19pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKK3sKKyAgICBCb25rQ29udGV4 dCAqcyA9IGF2Y3R4LT5wcml2X2RhdGE7CisKKyAgICBhdmN0eC0+c2FtcGxlX2ZtdCA9IEFWX1NB TVBMRV9GTVRfUzE2OworICAgIGlmIChhdmN0eC0+ZXh0cmFkYXRhX3NpemUgPCAxNykKKyAgICAg ICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKworICAgIGlmIChhdmN0eC0+ZXh0cmFkYXRhWzBd KSB7CisgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiVW5zdXBwb3J0ZWQgdmVy c2lvbi5cbiIpOworICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICB9CisK KyAgICBpZiAoYXZjdHgtPmNoX2xheW91dC5uYl9jaGFubmVscyA8IDEgfHwgYXZjdHgtPmNoX2xh eW91dC5uYl9jaGFubmVscyA+IDIpCisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRB OworCisgICAgcy0+bmJfc2FtcGxlcyA9IEFWX1JMMzIoYXZjdHgtPmV4dHJhZGF0YSArIDEpIC8g YXZjdHgtPmNoX2xheW91dC5uYl9jaGFubmVsczsKKyAgICBpZiAoIXMtPm5iX3NhbXBsZXMpCisg ICAgICAgIHMtPm5iX3NhbXBsZXMgPSBVSU5UNjRfTUFYOworICAgIHMtPmxvc3NsZXNzID0gYXZj dHgtPmV4dHJhZGF0YVsxMF0gIT0gMDsKKyAgICBzLT5taWRfc2lkZSA9IGF2Y3R4LT5leHRyYWRh dGFbMTFdICE9IDA7CisgICAgcy0+bl90YXBzID0gQVZfUkwxNihhdmN0eC0+ZXh0cmFkYXRhICsg MTIpOworICAgIGlmICghcy0+bl90YXBzIHx8IHMtPm5fdGFwcyA+IDIwNDgpCisgICAgICAgIHJl dHVybiBBVkVSUk9SKEVJTlZBTCk7CisKKyAgICBzLT5kb3duX3NhbXBsaW5nID0gYXZjdHgtPmV4 dHJhZGF0YVsxNF07CisgICAgaWYgKCFzLT5kb3duX3NhbXBsaW5nKQorICAgICAgICByZXR1cm4g QVZFUlJPUihFSU5WQUwpOworCisgICAgcy0+c2FtcGxlc19wZXJfcGFja2V0ID0gQVZfUkwxNihh dmN0eC0+ZXh0cmFkYXRhICsgMTUpOworICAgIGlmICghcy0+c2FtcGxlc19wZXJfcGFja2V0KQor ICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgIHMtPm1heF9mcmFtZXNpemUgPSBz LT5zYW1wbGVzX3Blcl9wYWNrZXQgKiBhdmN0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzICogcy0+ ZG93bl9zYW1wbGluZyAqIDMyOworICAgIHMtPmJpdHN0cmVhbSA9IGF2X2NhbGxvYyhzLT5tYXhf ZnJhbWVzaXplICsgQVZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSwgc2l6ZW9mKCpzLT5iaXRz dHJlYW0pKTsKKyAgICBpZiAoIXMtPmJpdHN0cmVhbSkKKyAgICAgICAgcmV0dXJuIEFWRVJST1Io RU5PTUVNKTsKKworICAgIHMtPmlucHV0X3NhbXBsZXMgPSBhdl9jYWxsb2Mocy0+c2FtcGxlc19w ZXJfcGFja2V0LCBzaXplb2YoKnMtPmlucHV0X3NhbXBsZXMpKTsKKyAgICBpZiAoIXMtPmlucHV0 X3NhbXBsZXMpCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICBzLT5zYW1w bGVzID0gYXZfY2FsbG9jKHMtPnNhbXBsZXNfcGVyX3BhY2tldCAqIHMtPmRvd25fc2FtcGxpbmcg KiBhdmN0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzLCBzaXplb2YoKnMtPnNhbXBsZXMpKTsKKyAg ICBpZiAoIXMtPnNhbXBsZXMpCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAg ICBzLT5iaXRzID0gYXZfY2FsbG9jKHMtPm1heF9mcmFtZXNpemUgKiA4LCBzaXplb2YoKnMtPmJp dHMpKTsKKyAgICBpZiAoIXMtPmJpdHMpCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7 CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDUxMjsgaSsrKSB7CisgICAgICAgIHMtPnF1YW50 W2ldID0gc3FydChpICsgMSk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1 bnNpZ25lZCByZWFkX3VpbnRfbWF4KEJvbmtDb250ZXh0ICpzLCB1aW50MzJfdCBtYXgpCit7Cisg ICAgdW5zaWduZWQgdmFsdWUgPSAwOworICAgIGludCBpLCBiaXRzOworCisgICAgaWYgKG1heCA9 PSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChtYXggPj4gMzEpCisgICAgICAgIHJl dHVybiAzMjsKKworICAgIGJpdHMgPSAzMiAtIGZmX2NseihtYXgpOworCisgICAgZm9yIChpID0g MDsgaSA8IGJpdHMgLSAxOyBpKyspCisgICAgICAgIGlmIChnZXRfYml0czEoJnMtPmdiKSkKKyAg ICAgICAgICAgIHZhbHVlICs9IDEgPDwgaTsKKworICAgIGlmICgodmFsdWUgfCAoMSA8PCAoYml0 cyAtIDEpKSkgPD0gbWF4KQorICAgICAgICBpZiAoZ2V0X2JpdHMxKCZzLT5nYikpCisgICAgICAg ICAgICB2YWx1ZSArPSAxIDw8IChiaXRzIC0gMSk7CisKKyAgICByZXR1cm4gdmFsdWU7Cit9CisK K3N0YXRpYyBpbnQgaW50bGlzdF9yZWFkKEJvbmtDb250ZXh0ICpzLCBpbnQgKmJ1ZiwgaW50IGVu dHJpZXMsIGludCBiYXNlXzJfcGFydCkKK3sKKyAgICBpbnQgaSwgbG93X2JpdHMgPSAwLCB4ID0g MCwgbWF4X3g7CisgICAgaW50IG5femVyb3MgPSAwLCBzdGVwID0gMjU2LCBkb21pbmFudCA9IDA7 CisgICAgaW50IHBvcyA9IDAsIGxldmVsID0gMDsKKyAgICBCaXRDb3VudCAqYml0cyA9IHMtPmJp dHM7CisKKyAgICBtZW1zZXQoYnVmLCAwLCBlbnRyaWVzICogc2l6ZW9mKCpidWYpKTsKKyAgICBp ZiAoYmFzZV8yX3BhcnQpIHsKKyAgICAgICAgbG93X2JpdHMgPSBnZXRfYml0cygmcy0+Z2IsIDQp OworCisgICAgICAgIGlmIChsb3dfYml0cykKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBl bnRyaWVzOyBpKyspCisgICAgICAgICAgICAgICAgYnVmW2ldID0gZ2V0X2JpdHMoJnMtPmdiLCBs b3dfYml0cyk7CisgICAgfQorCisgICAgd2hpbGUgKG5femVyb3MgPCBlbnRyaWVzKSB7CisgICAg ICAgIGludCBzdGVwbGV0ID0gc3RlcCA+PiA4OworCisgICAgICAgIGlmIChnZXRfYml0c19sZWZ0 KCZzLT5nYikgPD0gMCkKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwor CisgICAgICAgIGlmICghZ2V0X2JpdHMxKCZzLT5nYikpIHsKKyAgICAgICAgICAgIGlmIChzdGVw bGV0IDwgMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgaWYgKHN0ZXBs ZXQgPiAwKSB7CisgICAgICAgICAgICAgICAgYml0c1t4ICBdLmJpdCAgID0gZG9taW5hbnQ7Cisg ICAgICAgICAgICAgICAgYml0c1t4KytdLmNvdW50ID0gc3RlcGxldDsKKyAgICAgICAgICAgIH0K KworICAgICAgICAgICAgaWYgKCFkb21pbmFudCkKKyAgICAgICAgICAgICAgICBuX3plcm9zICs9 IHN0ZXBsZXQ7CisKKyAgICAgICAgICAgIHN0ZXAgKz0gc3RlcCAvIDg7CisgICAgICAgIH0gZWxz ZSBpZiAoc3RlcGxldCA+IDApIHsKKyAgICAgICAgICAgIGludCBhY3R1YWxfcnVuID0gcmVhZF91 aW50X21heChzLCBzdGVwbGV0IC0gMSk7CisKKyAgICAgICAgICAgIGlmIChhY3R1YWxfcnVuIDwg MCkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgaWYgKGFjdHVhbF9ydW4g PiAwKSB7CisgICAgICAgICAgICAgICAgYml0c1t4ICBdLmJpdCAgID0gZG9taW5hbnQ7CisgICAg ICAgICAgICAgICAgYml0c1t4KytdLmNvdW50ID0gYWN0dWFsX3J1bjsKKyAgICAgICAgICAgIH0K KworICAgICAgICAgICAgYml0c1t4ICBdLmJpdCAgID0gIWRvbWluYW50OworICAgICAgICAgICAg Yml0c1t4KytdLmNvdW50ID0gMTsKKworICAgICAgICAgICAgaWYgKCFkb21pbmFudCkKKyAgICAg ICAgICAgICAgICBuX3plcm9zICs9IGFjdHVhbF9ydW47CisgICAgICAgICAgICBlbHNlCisgICAg ICAgICAgICAgICAgbl96ZXJvcysrOworCisgICAgICAgICAgICBzdGVwIC09IHN0ZXAgLyA4Owor ICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0ZXAgPCAyNTYpIHsKKyAgICAgICAgICAgIGlmIChz dGVwID09IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cisg ICAgICAgICAgICBzdGVwID0gNjU1MzYgLyBzdGVwOworICAgICAgICAgICAgZG9taW5hbnQgPSAh ZG9taW5hbnQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtYXhfeCA9IHg7CisgICAgeCA9IDA7 CisgICAgbl96ZXJvcyA9IDA7CisgICAgZm9yIChpID0gMDsgbl96ZXJvcyA8IGVudHJpZXM7IGkr KykgeworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgaWYgKHBvcyA+PSBlbnRyaWVz KSB7CisgICAgICAgICAgICAgICAgcG9zID0gMDsKKyAgICAgICAgICAgICAgICBsZXZlbCArPSAx IDw8IGxvd19iaXRzOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYnVmW3Bvc10g Pj0gbGV2ZWwpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIHBvcysrOwor ICAgICAgICB9CisKKyAgICAgICAgaWYgKHggPj0gbWF4X3gpCisgICAgICAgICAgICByZXR1cm4g QVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgaWYgKGJpdHNbeF0uYml0KQorICAgICAgICAg ICAgYnVmW3Bvc10gKz0gMSA8PCBsb3dfYml0czsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg bl96ZXJvcysrOworCisgICAgICAgIGJpdHNbeF0uY291bnQtLTsKKyAgICAgICAgaWYgKGJpdHNb eF0uY291bnQgPT0gMCkKKyAgICAgICAgICAgIHgrKzsKKworICAgICAgICBwb3MrKzsKKyAgICB9 CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgZW50cmllczsgaSsrKSB7CisgICAgICAgIGlmIChidWZb aV0gJiYgZ2V0X2JpdHMxKCZzLT5nYikpIHsKKyAgICAgICAgICAgIGJ1ZltpXSA9IC1idWZbaV07 CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSBp bnQgc2hpZnRfZG93bihpbnQgYSwgaW50IGIpCit7CisgICAgcmV0dXJuIChhID4+IGIpICsgKGEg PCAwKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgc2hpZnQoaW50IGEsIGludCBiKQoreworICAg IHJldHVybiBhICsgKDEgPDwgYiAtIDEpID4+IGI7Cit9CisKKyNkZWZpbmUgTEFUVElDRV9TSElG VCAxMAorI2RlZmluZSBTQU1QTEVfU0hJRlQgICA0CisjZGVmaW5lIFNBTVBMRV9GQUNUT1IgKDEg PDwgU0FNUExFX1NISUZUKQorCitzdGF0aWMgaW50IHByZWRpY3Rvcl9jYWxjX2Vycm9yKGludCAq aywgaW50ICpzdGF0ZSwgaW50IG9yZGVyLCBpbnQgZXJyb3IpCit7CisgICAgaW50IGksIHggPSBl cnJvciAtIHNoaWZ0X2Rvd24oa1tvcmRlci0xXSAqIHN0YXRlW29yZGVyLTFdLCBMQVRUSUNFX1NI SUZUKTsKKyAgICBpbnQgKmtfcHRyID0gJihrW29yZGVyLTJdKSwKKyAgICAgICAgKnN0YXRlX3B0 ciA9ICYoc3RhdGVbb3JkZXItMl0pOworCisgICAgZm9yIChpID0gb3JkZXItMjsgaSA+PSAwOyBp LS0sIGtfcHRyLS0sIHN0YXRlX3B0ci0tKSB7CisgICAgICAgIGludCBrX3ZhbHVlID0gKmtfcHRy LCBzdGF0ZV92YWx1ZSA9ICpzdGF0ZV9wdHI7CisKKyAgICAgICAgeCAtPSBzaGlmdF9kb3duKGtf dmFsdWUgKiBzdGF0ZV92YWx1ZSwgTEFUVElDRV9TSElGVCk7CisgICAgICAgIHN0YXRlX3B0clsx XSA9IHN0YXRlX3ZhbHVlICsgc2hpZnRfZG93bihrX3ZhbHVlICogeCwgTEFUVElDRV9TSElGVCk7 CisgICAgfQorCisgICAgLy8gZG9uJ3QgZHJpZnQgdG9vIGZhciwgdG8gYXZvaWQgb3ZlcmZsb3dz CisgICAgYXZfY2xpcCh4LCAtKFNBTVBMRV9GQUNUT1IgPDwgMTYpLCBTQU1QTEVfRkFDVE9SIDw8 IDE2KTsKKworICAgIHN0YXRlWzBdID0geDsKKworICAgIHJldHVybiB4OworfQorCitzdGF0aWMg dm9pZCBwcmVkaWN0b3JfaW5pdF9zdGF0ZShpbnQgKmssIGludCAqc3RhdGUsIGludCBvcmRlcikK K3sKKyAgICBmb3IgKGludCBpID0gb3JkZXIgLSAyOyBpID49IDA7IGktLSkgeworICAgICAgICBp bnQgeCA9IHN0YXRlW2ldOworCisgICAgICAgIGZvciAoaW50IGogPSAwLCBwID0gaSArIDE7IHAg PCBvcmRlcjsgaisrLCBwKyspIHsKKyAgICAgICAgICAgIGludCB0bXAgPSB4ICsgc2hpZnRfZG93 bihrW2pdICogc3RhdGVbcF0sIExBVFRJQ0VfU0hJRlQpOworCisgICAgICAgICAgICBzdGF0ZVtw XSArPSBzaGlmdF9kb3duKGtbal0gKiB4LCBMQVRUSUNFX1NISUZUKTsKKyAgICAgICAgICAgIHgg PSB0bXA7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyBpbnQgYm9ua19kZWNvZGUoQVZD b2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgaW50ICpnb3RfZnJhbWVfcHRyLCBBVlBhY2tldCAqcGt0KQoreworICAgIEJvbmtDb250ZXh0 ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKKyAgICBHZXRCaXRDb250ZXh0ICpnYiA9ICZzLT5nYjsK KyAgICBjb25zdCB1aW50OF90ICpidWY7CisgICAgaW50MTZfdCAqc2FtcGxlczsKKyAgICBpbnQg cXVhbnQsIG4sIGJ1Zl9zaXplLCBpbnB1dF9idWZfc2l6ZTsKKyAgICBpbnQgcmV0ID0gQVZFUlJP Ul9JTlZBTElEREFUQTsKKworICAgIGlmICgoIXBrdC0+c2l6ZSAmJiAhcy0+Yml0c3RyZWFtX3Np emUpIHx8IHMtPm5iX3NhbXBsZXMgPT0gMCkgeworICAgICAgICAqZ290X2ZyYW1lX3B0ciA9IDA7 CisgICAgICAgIHJldHVybiBwa3QtPnNpemU7CisgICAgfQorCisgICAgYnVmX3NpemUgPSBGRk1J Tihwa3QtPnNpemUsIHMtPm1heF9mcmFtZXNpemUgLSBzLT5iaXRzdHJlYW1fc2l6ZSk7CisgICAg aW5wdXRfYnVmX3NpemUgPSBidWZfc2l6ZTsKKyAgICBpZiAocy0+Yml0c3RyZWFtX2luZGV4ICsg cy0+Yml0c3RyZWFtX3NpemUgKyBidWZfc2l6ZSArIEFWX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJ WkUgPiBzLT5tYXhfZnJhbWVzaXplKSB7CisgICAgICAgIG1lbW1vdmUocy0+Yml0c3RyZWFtLCAm cy0+Yml0c3RyZWFtW3MtPmJpdHN0cmVhbV9pbmRleF0sIHMtPmJpdHN0cmVhbV9zaXplKTsKKyAg ICAgICAgcy0+Yml0c3RyZWFtX2luZGV4ID0gMDsKKyAgICB9CisgICAgaWYgKHBrdC0+ZGF0YSkK KyAgICAgICAgbWVtY3B5KCZzLT5iaXRzdHJlYW1bcy0+Yml0c3RyZWFtX2luZGV4ICsgcy0+Yml0 c3RyZWFtX3NpemVdLCBwa3QtPmRhdGEsIGJ1Zl9zaXplKTsKKyAgICBidWYgICAgICAgICAgICAg ICAgPSAmcy0+Yml0c3RyZWFtW3MtPmJpdHN0cmVhbV9pbmRleF07CisgICAgYnVmX3NpemUgICAg ICAgICAgKz0gcy0+Yml0c3RyZWFtX3NpemU7CisgICAgcy0+Yml0c3RyZWFtX3NpemUgID0gYnVm X3NpemU7CisgICAgaWYgKGJ1Zl9zaXplIDwgcy0+bWF4X2ZyYW1lc2l6ZSAmJiBwa3QtPmRhdGEp IHsKKyAgICAgICAgKmdvdF9mcmFtZV9wdHIgPSAwOworICAgICAgICByZXR1cm4gaW5wdXRfYnVm X3NpemU7CisgICAgfQorCisgICAgZnJhbWUtPm5iX3NhbXBsZXMgPSBGRk1JTihzLT5zYW1wbGVz X3Blcl9wYWNrZXQgKiBzLT5kb3duX3NhbXBsaW5nLCBzLT5uYl9zYW1wbGVzKTsKKyAgICBpZiAo KHJldCA9IGZmX2dldF9idWZmZXIoYXZjdHgsIGZyYW1lLCAwKSkgPCAwKQorICAgICAgICByZXR1 cm4gcmV0OworICAgIHNhbXBsZXMgPSAoaW50MTZfdCAqKWZyYW1lLT5kYXRhWzBdOworCisgICAg aWYgKChyZXQgPSBpbml0X2dldF9iaXRzOChnYiwgYnVmLCBidWZfc2l6ZSkpIDwgMCkKKyAgICAg ICAgcmV0dXJuIHJldDsKKworICAgIHNraXBfYml0cyhnYiwgcy0+c2tpcCk7CisgICAgaWYgKChy ZXQgPSBpbnRsaXN0X3JlYWQocywgcy0+aywgcy0+bl90YXBzLCAwKSkgPCAwKQorICAgICAgICBy ZXR1cm4gcmV0OworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLT5uX3RhcHM7IGkrKykKKyAg ICAgICAgcy0+a1tpXSAqPSBzLT5xdWFudFtpXTsKKyAgICBxdWFudCA9IHMtPmxvc3NsZXNzID8g MSA6IGdldF9iaXRzKCZzLT5nYiwgMTYpICogU0FNUExFX0ZBQ1RPUjsKKworICAgIGZvciAoaW50 IGNoID0gMDsgY2ggPCBhdmN0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOyBjaCsrKSB7CisgICAg ICAgIGludCAqc2FtcGxlID0gcy0+c2FtcGxlcyArIGNoOworCisgICAgICAgIHByZWRpY3Rvcl9p bml0X3N0YXRlKHMtPmssIHMtPnN0YXRlW2NoXSwgcy0+bl90YXBzKTsKKyAgICAgICAgaWYgKChy ZXQgPSBpbnRsaXN0X3JlYWQocywgcy0+aW5wdXRfc2FtcGxlcywgcy0+c2FtcGxlc19wZXJfcGFj a2V0LCAxKSkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKworICAgICAgICBmb3IgKGlu dCBpID0gMDsgaSA8IHMtPnNhbXBsZXNfcGVyX3BhY2tldDsgaSsrKSB7CisgICAgICAgICAgICBm b3IgKGludCBqID0gMDsgaiA8IHMtPmRvd25fc2FtcGxpbmcgLSAxOyBqKyspIHsKKyAgICAgICAg ICAgICAgICAqc2FtcGxlID0gcHJlZGljdG9yX2NhbGNfZXJyb3Iocy0+aywgcy0+c3RhdGVbY2hd LCBzLT5uX3RhcHMsIDApOworICAgICAgICAgICAgICAgIHNhbXBsZSArPSBhdmN0eC0+Y2hfbGF5 b3V0Lm5iX2NoYW5uZWxzOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAqc2FtcGxlID0g cHJlZGljdG9yX2NhbGNfZXJyb3Iocy0+aywgcy0+c3RhdGVbY2hdLCBzLT5uX3RhcHMsIHMtPmlu cHV0X3NhbXBsZXNbaV0gKiBxdWFudCk7CisgICAgICAgICAgICBzYW1wbGUgKz0gYXZjdHgtPmNo X2xheW91dC5uYl9jaGFubmVsczsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgcy0+bl90YXBzOyBpKyspCisgICAgICAgICAgICBzLT5zdGF0ZVtjaF1baV0gPSBzLT5z YW1wbGVzW3MtPnNhbXBsZXNfcGVyX3BhY2tldCAqIHMtPmRvd25fc2FtcGxpbmcgKiBhdmN0eC0+ Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYXZjdHgtPmNoX2xheW91dC5uYl9jaGFubmVscyArIGNoIC0gaSAqIGF2Y3R4LT5j aF9sYXlvdXQubmJfY2hhbm5lbHNdOworICAgIH0KKworICAgIGlmIChzLT5taWRfc2lkZSAmJiBh dmN0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzID09IDIpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBmcmFtZS0+bmJfc2FtcGxlcyAqIDI7IGkgKz0gMikgeworICAgICAgICAgICAgcy0+ c2FtcGxlc1tpICsgMV0gKz0gc2hpZnQocy0+c2FtcGxlc1tpXSwgMSk7CisgICAgICAgICAgICBz LT5zYW1wbGVzW2ldICAgICAtPSBzLT5zYW1wbGVzW2kgKyAxXTsKKyAgICAgICAgfQorICAgIH0K KworICAgIGlmICghcy0+bG9zc2xlc3MpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBm cmFtZS0+bmJfc2FtcGxlcyAqIGF2Y3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHM7IGkrKykKKyAg ICAgICAgICAgIHMtPnNhbXBsZXNbaV0gPSBzaGlmdChzLT5zYW1wbGVzW2ldLCA0KTsKKyAgICB9 CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGZyYW1lLT5uYl9zYW1wbGVzICogYXZjdHgtPmNo X2xheW91dC5uYl9jaGFubmVsczsgaSsrKSB7CisgICAgICAgIHNhbXBsZXNbaV0gPSBhdl9jbGlw X2ludDE2KHMtPnNhbXBsZXNbaV0pOworICAgIH0KKworICAgIHMtPm5iX3NhbXBsZXMgLT0gZnJh bWUtPm5iX3NhbXBsZXM7CisKKyAgICBzLT5za2lwID0gZ2V0X2JpdHNfY291bnQoZ2IpIC0gOCAq IChnZXRfYml0c19jb3VudChnYikgLyA4KTsKKyAgICBuID0gZ2V0X2JpdHNfY291bnQoZ2IpIC8g ODsKKworICAgIGlmIChuID4gYnVmX3NpemUpIHsKKyAgICAgICAgcy0+Yml0c3RyZWFtX3NpemUg PSAwOworICAgICAgICBzLT5iaXRzdHJlYW1faW5kZXggPSAwOworICAgICAgICByZXR1cm4gQVZF UlJPUl9JTlZBTElEREFUQTsKKyAgICB9CisKKyAgICAqZ290X2ZyYW1lX3B0ciA9IDE7CisKKyAg ICBpZiAocy0+Yml0c3RyZWFtX3NpemUpIHsKKyAgICAgICAgcy0+Yml0c3RyZWFtX2luZGV4ICs9 IG47CisgICAgICAgIHMtPmJpdHN0cmVhbV9zaXplICAtPSBuOworICAgICAgICByZXR1cm4gaW5w dXRfYnVmX3NpemU7CisgICAgfQorICAgIHJldHVybiBuOworfQorCitjb25zdCBGRkNvZGVjIGZm X2JvbmtfZGVjb2RlciA9IHsKKyAgICAucC5uYW1lICAgICAgICAgICA9ICJib25rIiwKKyAgICBD T0RFQ19MT05HX05BTUUoIkJvbmsgYXVkaW8iKSwKKyAgICAucC50eXBlICAgICAgICAgICA9IEFW TUVESUFfVFlQRV9BVURJTywKKyAgICAucC5pZCAgICAgICAgICAgICA9IEFWX0NPREVDX0lEX0JP TkssCisgICAgLnByaXZfZGF0YV9zaXplICAgPSBzaXplb2YoQm9ua0NvbnRleHQpLAorICAgIC5p bml0ICAgICAgICAgICAgID0gYm9ua19pbml0LAorICAgIEZGX0NPREVDX0RFQ09ERV9DQihib25r X2RlY29kZSksCisgICAgLmNsb3NlICAgICAgICAgICAgPSBib25rX2Nsb3NlLAorICAgIC5wLmNh cGFiaWxpdGllcyAgID0gQVZfQ09ERUNfQ0FQX0RFTEFZIHwKKyAgICAgICAgICAgICAgICAgICAg ICAgIEFWX0NPREVDX0NBUF9EUjEgfAorICAgICAgICAgICAgICAgICAgICAgICAgQVZfQ09ERUNf Q0FQX1NVQkZSQU1FUywKKyAgICAucC5zYW1wbGVfZm10cyAgPSAoY29uc3QgZW51bSBBVlNhbXBs ZUZvcm1hdFtdKSB7IEFWX1NBTVBMRV9GTVRfUzE2LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfU0FNUExFX0ZNVF9OT05FIH0sCit9Owpk aWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9jb2RlY19kZXNjLmMgYi9saWJhdmNvZGVjL2NvZGVjX2Rl c2MuYwppbmRleCAwNmRmZTU1ZDBmLi5jMDAyNDgwZDM5IDEwMDY0NAotLS0gYS9saWJhdmNvZGVj L2NvZGVjX2Rlc2MuYworKysgYi9saWJhdmNvZGVjL2NvZGVjX2Rlc2MuYwpAQCAtMzI5MCw2ICsz MjkwLDEzIEBAIHN0YXRpYyBjb25zdCBBVkNvZGVjRGVzY3JpcHRvciBjb2RlY19kZXNjcmlwdG9y c1tdID0gewogICAgICAgICAubG9uZ19uYW1lID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIkRGUFdN IChEeW5hbWljIEZpbHRlciBQdWxzZSBXaWR0aCBNb2R1bGF0aW9uKSIpLAogICAgICAgICAucHJv cHMgICAgID0gQVZfQ09ERUNfUFJPUF9MT1NTWSwKICAgICB9LAorICAgIHsKKyAgICAgICAgLmlk ICAgICAgICA9IEFWX0NPREVDX0lEX0JPTkssCisgICAgICAgIC50eXBlICAgICAgPSBBVk1FRElB X1RZUEVfQVVESU8sCisgICAgICAgIC5uYW1lICAgICAgPSAiYm9uayIsCisgICAgICAgIC5sb25n X25hbWUgPSBOVUxMX0lGX0NPTkZJR19TTUFMTCgiQm9uayBhdWRpbyIpLAorICAgICAgICAucHJv cHMgICAgID0gQVZfQ09ERUNfUFJPUF9MT1NTWSB8IEFWX0NPREVDX1BST1BfSU5UUkFfT05MWSB8 IEFWX0NPREVDX1BST1BfTE9TU0xFU1MsCisgICAgfSwKIAogICAgIC8qIHN1YnRpdGxlIGNvZGVj cyAqLwogICAgIHsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY29kZWNfaWQuaCBiL2xpYmF2Y29k ZWMvY29kZWNfaWQuaAppbmRleCAyMjQ3YmMwMzA5Li44NThiNWMzYTc1IDEwMDY0NAotLS0gYS9s aWJhdmNvZGVjL2NvZGVjX2lkLmgKKysrIGIvbGliYXZjb2RlYy9jb2RlY19pZC5oCkBAIC01Mjcs NiArNTI3LDcgQEAgZW51bSBBVkNvZGVjSUQgewogICAgIEFWX0NPREVDX0lEX0ZBU1RBVURJTywK ICAgICBBVl9DT0RFQ19JRF9NU05TSVJFTiwKICAgICBBVl9DT0RFQ19JRF9ERlBXTSwKKyAgICBB Vl9DT0RFQ19JRF9CT05LLAogCiAgICAgLyogc3VidGl0bGUgY29kZWNzICovCiAgICAgQVZfQ09E RUNfSURfRklSU1RfU1VCVElUTEUgPSAweDE3MDAwLCAgICAgICAgICAvLy88IEEgZHVtbXkgSUQg cG9pbnRpbmcgYXQgdGhlIHN0YXJ0IG9mIHN1YnRpdGxlIGNvZGVjcy4KLS0gCjIuMzcuMgoK --000000000000f22de205e81a106b 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". --000000000000f22de205e81a106b--