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 37B8040C5F for ; Sat, 4 Feb 2023 09:04:36 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5CACA68BD96; Sat, 4 Feb 2023 11:04:33 +0200 (EET) Received: from mail-ua1-f51.google.com (mail-ua1-f51.google.com [209.85.222.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B796168BB84 for ; Sat, 4 Feb 2023 11:04:27 +0200 (EET) Received: by mail-ua1-f51.google.com with SMTP id g24so1356144uap.13 for ; Sat, 04 Feb 2023 01:04:27 -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=lDByrxhBbsVBqEn0w/sfAdEBVvNyeZXTFucHgklw0uM=; b=ZaQcYAoXLYvv3TBf9zuyEMdzCJyILyMwcTpr7Xxe410Fdu6AjwSXFPzwt5/5ckmpuE zRvp7JlLq9ghpGsAsRmEIp9I+mdEzlSwcBpGB8mZ1etP8c0B9VKrIFccJjckgr8pQV1t RKo5PKGElKxyPUdBu8wgqEyWjGbpCTOgB3fNAJkloHMk+Cc8b7fWpnwlceGQqf2qZp3F ssQ+R/c+pLMuMAIgOR3qVquSgiFC24SJ78HvV+I4ZzuS/I2rX/+uHgi7qpdVMvxSQCB8 tJ4S4S17hv+YvF58bX22IAZO4+lSIbAHtOKIJdBNHW5QeWoyw41X3NoqN7j6c1tj22Cf KaLQ== 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=lDByrxhBbsVBqEn0w/sfAdEBVvNyeZXTFucHgklw0uM=; b=bGcOvm/j1KjsA7uFltg2FVD8rLnwQhCc76uig+0tqV6QAZVTUTdgUtVLzgWXQ6JP/b MaqBCt9zqSS/WVDeJPVUYhFUybGUnhkRVw2WwhWlWg9SWYoXxyZjumH640b+kY7vRG7M edr9fZO2MS6nhPcKclX1Pq2q8Qakma0ZSM7VCWHcRFGelsR86uyNlXj7Dz3u70dGdeD0 /w0awiMl7SpbbbMHaUz2TYuoY2TGXwwApwujsLjpftkwZzf5OzE3syYqK95D3vGPFiqX RtbqxheZkFrS8HFTH8slFNtmjZYjRT9a0KWsN5KQ1oM7PvHmWhMLWQaTGqFfTh8Vm5s/ 8JIg== X-Gm-Message-State: AO0yUKWRMKEoc24662sYgUCTbOCtCzys86Psu7h7OKuxg4v5GzxF/MJY VdIceBzOaK773SeU4IcW/C1M4LJibccJ+KhM5IfOmcyS X-Google-Smtp-Source: AK7set92RDTaLOO9N2JaMT8Y/fvkeXSRWcX1zNdpnlBwC0kOi7FAn+vDtt2suPf5yn6qKE7STM5vJAYNe/vbNrW4J0Q= X-Received: by 2002:ab0:5a08:0:b0:65d:15a9:7862 with SMTP id l8-20020ab05a08000000b0065d15a97862mr2080495uad.69.1675501465980; Sat, 04 Feb 2023 01:04:25 -0800 (PST) MIME-Version: 1.0 Received: by 2002:a05:612c:2428:b0:32a:5eaa:92e4 with HTTP; Sat, 4 Feb 2023 01:04:24 -0800 (PST) From: Paul B Mahol Date: Sat, 4 Feb 2023 10:04:24 +0100 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="000000000000b3681b05f3dc15d1" Subject: [FFmpeg-devel] [RFC][WIP][PATCH] RK Audio demuxer and decoder 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: --000000000000b3681b05f3dc15d1 Content-Type: text/plain; charset="UTF-8" Hi, Patches attached, decoder is not bit by bit exact yet for lossless mode because some samples are not properly rounded. --000000000000b3681b05f3dc15d1 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-avformat-add-RKA-demuxer.patch" Content-Disposition: attachment; filename="0001-avformat-add-RKA-demuxer.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: file0 RnJvbSA3MWJmZGI5ZWFkYzk4OGIxMTU0ZjgyMDJiMTJhMzgwODM5MDk2ZDQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMzEgSmFuIDIwMjMgMTk6Mjc6MDkgKzAxMDAKU3ViamVjdDogW1BBVENIIDEvMl0gYXZm b3JtYXQ6IGFkZCBSS0EgZGVtdXhlcgoKU2lnbmVkLW9mZi1ieTogUGF1bCBCIE1haG9sIDxvbmVt ZGFAZ21haWwuY29tPgotLS0KIGxpYmF2Zm9ybWF0L01ha2VmaWxlICAgICB8ICAgMSArCiBsaWJh dmZvcm1hdC9hbGxmb3JtYXRzLmMgfCAgIDEgKwogbGliYXZmb3JtYXQvcmthLmMgICAgICAgIHwg MTcwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFu Z2VkLCAxNzIgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Zm9ybWF0L3Jr YS5jCgpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtl ZmlsZQppbmRleCBmMDQwOGE1OGIxLi4yOGNiZjkxMzgyIDEwMDY0NAotLS0gYS9saWJhdmZvcm1h dC9NYWtlZmlsZQorKysgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQpAQCAtNDgyLDYgKzQ4Miw3IEBA IE9CSlMtJChDT05GSUdfUkFXVklERU9fREVNVVhFUikgICAgICAgICAgKz0gcmF3dmlkZW9kZWMu bwogT0JKUy0kKENPTkZJR19SQVdWSURFT19NVVhFUikgICAgICAgICAgICArPSByYXdlbmMubwog T0JKUy0kKENPTkZJR19SRUFMVEVYVF9ERU1VWEVSKSAgICAgICAgICArPSByZWFsdGV4dGRlYy5v IHN1YnRpdGxlcy5vCiBPQkpTLSQoQ09ORklHX1JFRFNQQVJLX0RFTVVYRVIpICAgICAgICAgICs9 IHJlZHNwYXJrLm8KK09CSlMtJChDT05GSUdfUktBX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0g cmthLm8KIE9CSlMtJChDT05GSUdfUkwyX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gcmwyLm8K IE9CSlMtJChDT05GSUdfUk1fREVNVVhFUikgICAgICAgICAgICAgICAgKz0gcm1kZWMubyBybS5v IHJtc2lwci5vCiBPQkpTLSQoQ09ORklHX1JNX01VWEVSKSAgICAgICAgICAgICAgICAgICs9IHJt ZW5jLm8gcm0ubwpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvYWxsZm9ybWF0cy5jIGIvbGliYXZm b3JtYXQvYWxsZm9ybWF0cy5jCmluZGV4IDljYThkMjY5MmYuLjQ5MDNiZjdmOWQgMTAwNjQ0Ci0t LSBhL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYworKysgYi9saWJhdmZvcm1hdC9hbGxmb3JtYXRz LmMKQEAgLTM4MCw2ICszODAsNyBAQCBleHRlcm4gY29uc3QgQVZJbnB1dEZvcm1hdCAgZmZfcmF3 dmlkZW9fZGVtdXhlcjsKIGV4dGVybiBjb25zdCBBVk91dHB1dEZvcm1hdCBmZl9yYXd2aWRlb19t dXhlcjsKIGV4dGVybiBjb25zdCBBVklucHV0Rm9ybWF0ICBmZl9yZWFsdGV4dF9kZW11eGVyOwog ZXh0ZXJuIGNvbnN0IEFWSW5wdXRGb3JtYXQgIGZmX3JlZHNwYXJrX2RlbXV4ZXI7CitleHRlcm4g Y29uc3QgQVZJbnB1dEZvcm1hdCAgZmZfcmthX2RlbXV4ZXI7CiBleHRlcm4gY29uc3QgQVZJbnB1 dEZvcm1hdCAgZmZfcmwyX2RlbXV4ZXI7CiBleHRlcm4gY29uc3QgQVZJbnB1dEZvcm1hdCAgZmZf cm1fZGVtdXhlcjsKIGV4dGVybiBjb25zdCBBVk91dHB1dEZvcm1hdCBmZl9ybV9tdXhlcjsKZGlm ZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L3JrYS5jIGIvbGliYXZmb3JtYXQvcmthLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMGY2NzBhODlhMwotLS0gL2Rldi9udWxsCisr KyBiL2xpYmF2Zm9ybWF0L3JrYS5jCkBAIC0wLDAgKzEsMTcwIEBACisvKgorICogUktBIGRlbXV4 ZXIKKyAqIENvcHlyaWdodCAoYykgMjAyMyBQYXVsIEIgTWFob2wKKyAqCisgKiBUaGlzIGZpbGUg aXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBv ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq CisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25n IHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3Vu ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B IDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2luY2x1ZGUgImxpYmF2dXRpbC9kaWN0LmgiCisjaW5j bHVkZSAibGliYXZ1dGlsL2ludHJlYWR3cml0ZS5oIgorCisjaW5jbHVkZSAiYXBldGFnLmgiCisj aW5jbHVkZSAiYXZmb3JtYXQuaCIKKyNpbmNsdWRlICJhdmlvX2ludGVybmFsLmgiCisjaW5jbHVk ZSAiZGVtdXguaCIKKyNpbmNsdWRlICJpbnRlcm5hbC5oIgorCit0eXBlZGVmIHN0cnVjdCBSS0FD b250ZXh0IHsKKyAgICBpbnQgdG90YWxfZnJhbWVzLCBjdXJyZW50ZnJhbWU7CisgICAgaW50IGZy YW1lX3NpemU7CisgICAgaW50IGxhc3RfZnJhbWVfc2l6ZTsKK30gUktBQ29udGV4dDsKKworc3Rh dGljIGludCBya2FfcHJvYmUoY29uc3QgQVZQcm9iZURhdGEgKnApCit7CisgICAgaWYgKEFWX1JM MzIoJnAtPmJ1ZlswXSkgPT0gTUtUQUcoJ1InLCAnSycsICdBJywgJzcnKSAmJgorICAgICAgICBB Vl9STDMyKCZwLT5idWZbNF0pID4gMCAmJgorICAgICAgICBBVl9STDMyKCZwLT5idWZbOF0pID4g MCAmJgorICAgICAgICBwLT5idWZbMTJdID4gMCAmJgorICAgICAgICBwLT5idWZbMTJdIDw9IDIg JiYKKyAgICAgICAgKHAtPmJ1ZlsxM10gPT0gOCB8fCBwLT5idWZbMTNdID09IDE2KSAmJgorICAg ICAgICBwLT5idWZbMTVdICYgMiAhPSAwKQorICAgICAgICByZXR1cm4gQVZQUk9CRV9TQ09SRV9F WFRFTlNJT04gKyAzMDsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBya2FfcmVhZF9o ZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQoreworICAgIGludDY0X3QgbmJfc2FtcGxlcywgc2l6 ZV9vZmZzZXQ7CisgICAgUktBQ29udGV4dCAqYyA9IHMtPnByaXZfZGF0YTsKKyAgICBpbnQgY2hh bm5lbHMsIGJwcywgc2FtcGxlcmF0ZTsKKyAgICBBVkNvZGVjUGFyYW1ldGVycyAqcGFyOworICAg IGludDY0X3QgZnJhbWVwb3M7CisgICAgQVZTdHJlYW0gKnN0OworICAgIGludCByZXQ7CisKKyAg ICBzdCA9IGF2Zm9ybWF0X25ld19zdHJlYW0ocywgTlVMTCk7CisgICAgaWYgKCFzdCkKKyAgICAg ICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKworICAgIHBhciA9IHN0LT5jb2RlY3BhcjsKKyAg ICByZXQgPSBmZl9nZXRfZXh0cmFkYXRhKHMsIHBhciwgcy0+cGIsIDE2KTsKKyAgICBpZiAocmV0 IDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIG5iX3NhbXBsZXMgPSBBVl9STDMyKHBh ci0+ZXh0cmFkYXRhICsgNCk7CisgICAgc2FtcGxlcmF0ZSA9IEFWX1JMMzIocGFyLT5leHRyYWRh dGEgKyA4KTsKKyAgICBjaGFubmVscyA9IHBhci0+ZXh0cmFkYXRhWzEyXTsKKyAgICBpZiAoY2hh bm5lbHMgPT0gMCkKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgYnBz ID0gcGFyLT5leHRyYWRhdGFbMTNdOworICAgIGlmIChicHMgPT0gMCkKKyAgICAgICAgcmV0dXJu IEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgc2l6ZV9vZmZzZXQgPSBhdmlvX3JsMzIocy0+cGIp OworICAgIGZyYW1lcG9zID0gYXZpb190ZWxsKHMtPnBiKTsKKyAgICBjLT5mcmFtZV9zaXplID0g MTMxMDcyOworCisgICAgYXZwcml2X3NldF9wdHNfaW5mbyhzdCwgNjQsIDEsIHNhbXBsZXJhdGUp OworICAgIHN0LT5zdGFydF90aW1lID0gMDsKKworICAgIGF2aW9fc2VlayhzLT5wYiwgc2l6ZV9v ZmZzZXQsIFNFRUtfU0VUKTsKKyAgICBjLT50b3RhbF9mcmFtZXMgPSAobmJfc2FtcGxlcyArIGMt PmZyYW1lX3NpemUgLSAxKSAvIGMtPmZyYW1lX3NpemU7CisgICAgYy0+bGFzdF9mcmFtZV9zaXpl ID0gbmJfc2FtcGxlcyAlIGMtPmZyYW1lX3NpemU7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8 IGMtPnRvdGFsX2ZyYW1lczsgaSsrKSB7CisgICAgICAgIGludCByLCBlbmQgPSAwOworICAgICAg ICBpbnQ2NF90IHNpemU7CisKKyAgICAgICAgaWYgKGF2aW9fZmVvZihzLT5wYikpCisgICAgICAg ICAgICBicmVhazsKKworICAgICAgICBzaXplID0gYXZpb19ybDI0KHMtPnBiKTsKKyAgICAgICAg aWYgKHNpemUgPT0gMCkgeworICAgICAgICAgICAgZW5kID0gMTsKKyAgICAgICAgICAgIHNpemUg PSBzaXplX29mZnNldCAtIGZyYW1lcG9zOworICAgICAgICAgICAgaWYgKHNpemUgPD0gMCkKKyAg ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgociA9IGF2X2Fk ZF9pbmRleF9lbnRyeShzdCwgZnJhbWVwb3MsIChpICogMTMxMDcyTEwpIC8gKGNoYW5uZWxzICog KGJwcyA+PiAzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLCAw LCBBVklOREVYX0tFWUZSQU1FKSkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHI7CisgICAgICAg IGZyYW1lcG9zICs9IHNpemU7CisKKyAgICAgICAgaWYgKGVuZCkKKyAgICAgICAgICAgIGJyZWFr OworICAgIH0KKworICAgIHBhci0+Y29kZWNfdHlwZSA9IEFWTUVESUFfVFlQRV9BVURJTzsKKyAg ICBwYXItPmNvZGVjX2lkID0gQVZfQ09ERUNfSURfUktBOworICAgIHBhci0+Y2hfbGF5b3V0Lm5i X2NoYW5uZWxzID0gY2hhbm5lbHM7CisgICAgcGFyLT5zYW1wbGVfcmF0ZSA9IHNhbXBsZXJhdGU7 CisgICAgcGFyLT5iaXRzX3Blcl9yYXdfc2FtcGxlID0gYnBzOworICAgIHN0LT5kdXJhdGlvbiA9 IG5iX3NhbXBsZXMgLyAoY2hhbm5lbHMgKiAoYnBzID4+IDMpKTsKKworICAgIGF2aW9fc2Vlayhz LT5wYiwgMjAsIFNFRUtfU0VUKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJr YV9yZWFkX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCit7CisgICAg UktBQ29udGV4dCAqYyA9IHMtPnByaXZfZGF0YTsKKyAgICBBVlN0cmVhbSAqc3QgPSBzLT5zdHJl YW1zWzBdOworICAgIEZGU3RyZWFtICpjb25zdCBzdGkgPSBmZnN0cmVhbShzdCk7CisgICAgaW50 IHNpemUsIHJldDsKKworICAgIGlmIChhdmlvX2Zlb2Yocy0+cGIpKQorICAgICAgICByZXR1cm4g QVZFUlJPUl9FT0Y7CisKKyAgICBpZiAoYy0+Y3VycmVudGZyYW1lID49IHN0aS0+bmJfaW5kZXhf ZW50cmllcykKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfRU9GOworCisgICAgc2l6ZSA9IHN0aS0+ aW5kZXhfZW50cmllc1tjLT5jdXJyZW50ZnJhbWVdLnNpemU7CisKKyAgICByZXQgPSBhdl9nZXRf cGFja2V0KHMtPnBiLCBwa3QsIHNpemUpOworICAgIHBrdC0+ZHRzID0gc3RpLT5pbmRleF9lbnRy aWVzW2MtPmN1cnJlbnRmcmFtZSsrXS50aW1lc3RhbXA7CisgICAgcGt0LT5kdXJhdGlvbiA9IGMt PmN1cnJlbnRmcmFtZSA9PSBjLT50b3RhbF9mcmFtZXMgPyBjLT5sYXN0X2ZyYW1lX3NpemUgOgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MTMxMDcyOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgcmthX3JlYWRfc2VlayhB VkZvcm1hdENvbnRleHQgKnMsIGludCBzdHJlYW1faW5kZXgsIGludDY0X3QgdGltZXN0YW1wLCBp bnQgZmxhZ3MpCit7CisgICAgUktBQ29udGV4dCAqYyA9IHMtPnByaXZfZGF0YTsKKyAgICBBVlN0 cmVhbSAqc3QgPSBzLT5zdHJlYW1zW3N0cmVhbV9pbmRleF07CisgICAgaW50IGluZGV4ID0gYXZf aW5kZXhfc2VhcmNoX3RpbWVzdGFtcChzdCwgdGltZXN0YW1wLCBmbGFncyk7CisgICAgaWYgKGlu ZGV4IDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChhdmlvX3NlZWsocy0+cGIsIGZm c3RyZWFtKHN0KS0+aW5kZXhfZW50cmllc1tpbmRleF0ucG9zLCBTRUVLX1NFVCkgPCAwKQorICAg ICAgICByZXR1cm4gLTE7CisKKyAgICBjLT5jdXJyZW50ZnJhbWUgPSBpbmRleDsKKworICAgIHJl dHVybiAwOworfQorCitjb25zdCBBVklucHV0Rm9ybWF0IGZmX3JrYV9kZW11eGVyID0geworICAg IC5uYW1lICAgICAgICAgICA9ICJya2EiLAorICAgIC5sb25nX25hbWUgICAgICA9IE5VTExfSUZf Q09ORklHX1NNQUxMKCJSS0EgKFJLIEF1ZGlvKSIpLAorICAgIC5wcml2X2RhdGFfc2l6ZSA9IHNp emVvZihSS0FDb250ZXh0KSwKKyAgICAucmVhZF9wcm9iZSAgICAgPSBya2FfcHJvYmUsCisgICAg LnJlYWRfaGVhZGVyICAgID0gcmthX3JlYWRfaGVhZGVyLAorICAgIC5yZWFkX3BhY2tldCAgICA9 IHJrYV9yZWFkX3BhY2tldCwKKyAgICAucmVhZF9zZWVrICAgICAgPSBya2FfcmVhZF9zZWVrLAor ICAgIC5leHRlbnNpb25zICAgICA9ICJya2EiLAorfTsKLS0gCjIuMzkuMQoK --000000000000b3681b05f3dc15d1 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-avcodec-add-RKA-decoder.patch" Content-Disposition: attachment; filename="0002-avcodec-add-RKA-decoder.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: file2 RnJvbSBmM2QwNWE5YWM0NTE3N2VlYjNlM2NiYmJjZTllNTM5ODBjNDA0N2Y1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMzEgSmFuIDIwMjMgMjE6MDM6MzggKzAxMDAKU3ViamVjdDogW1BBVENIIDIvMl0gYXZj b2RlYzogYWRkIFJLQSBkZWNvZGVyCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIEIgTWFob2wgPG9uZW1k YUBnbWFpbC5jb20+Ci0tLQogbGliYXZjb2RlYy9NYWtlZmlsZSAgICAgfCAgICAxICsKIGxpYmF2 Y29kZWMvYWxsY29kZWNzLmMgIHwgICAgMSArCiBsaWJhdmNvZGVjL2NvZGVjX2Rlc2MuYyB8ICAg IDcgKwogbGliYXZjb2RlYy9jb2RlY19pZC5oICAgfCAgICAxICsKIGxpYmF2Y29kZWMvcmthLmMg ICAgICAgIHwgMTA2NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDUg ZmlsZXMgY2hhbmdlZCwgMTA3NiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGli YXZjb2RlYy9ya2EuYwoKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvTWFrZWZpbGUgYi9saWJhdmNv ZGVjL01ha2VmaWxlCmluZGV4IDQ5NzE4MzJmZjQuLjM4OTI1M2Y1ZDAgMTAwNjQ0Ci0tLSBhL2xp YmF2Y29kZWMvTWFrZWZpbGUKKysrIGIvbGliYXZjb2RlYy9NYWtlZmlsZQpAQCAtNjMxLDYgKzYz MSw3IEBAIE9CSlMtJChDT05GSUdfUkFTQ19ERUNPREVSKSAgICAgICAgICAgICs9IHJhc2Mubwog T0JKUy0kKENPTkZJR19SQVdWSURFT19ERUNPREVSKSAgICAgICAgKz0gcmF3ZGVjLm8KIE9CSlMt JChDT05GSUdfUkFXVklERU9fRU5DT0RFUikgICAgICAgICs9IHJhd2VuYy5vCiBPQkpTLSQoQ09O RklHX1JFQUxURVhUX0RFQ09ERVIpICAgICAgICArPSByZWFsdGV4dGRlYy5vIGFzcy5vCitPQkpT LSQoQ09ORklHX1JLQV9ERUNPREVSKSAgICAgICAgICAgICArPSBya2EubwogT0JKUy0kKENPTkZJ R19STDJfREVDT0RFUikgICAgICAgICAgICAgKz0gcmwyLm8KIE9CSlMtJChDT05GSUdfUk9RX0RF Q09ERVIpICAgICAgICAgICAgICs9IHJvcXZpZGVvZGVjLm8gcm9xdmlkZW8ubwogT0JKUy0kKENP TkZJR19ST1FfRU5DT0RFUikgICAgICAgICAgICAgKz0gcm9xdmlkZW9lbmMubyByb3F2aWRlby5v IGVsYmcubwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hbGxjb2RlY3MuYyBiL2xpYmF2Y29kZWMv YWxsY29kZWNzLmMKaW5kZXggYjgwYjY5ODNlOS4uZTU5M2FkMTlhZiAxMDA2NDQKLS0tIGEvbGli YXZjb2RlYy9hbGxjb2RlY3MuYworKysgYi9saWJhdmNvZGVjL2FsbGNvZGVjcy5jCkBAIC0yODcs NiArMjg3LDcgQEAgZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfcjIxMF9kZWNvZGVyOwogZXh0ZXJu IGNvbnN0IEZGQ29kZWMgZmZfcmFzY19kZWNvZGVyOwogZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZf cmF3dmlkZW9fZW5jb2RlcjsKIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX3Jhd3ZpZGVvX2RlY29k ZXI7CitleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9ya2FfZGVjb2RlcjsKIGV4dGVybiBjb25zdCBG RkNvZGVjIGZmX3JsMl9kZWNvZGVyOwogZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfcm9xX2VuY29k ZXI7CiBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9yb3FfZGVjb2RlcjsKZGlmZiAtLWdpdCBhL2xp YmF2Y29kZWMvY29kZWNfZGVzYy5jIGIvbGliYXZjb2RlYy9jb2RlY19kZXNjLmMKaW5kZXggNTdk MGY5ODIxMS4uMTk5ZjYyZGYxNSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9jb2RlY19kZXNjLmMK KysrIGIvbGliYXZjb2RlYy9jb2RlY19kZXNjLmMKQEAgLTMzNjAsNiArMzM2MCwxMyBAQCBzdGF0 aWMgY29uc3QgQVZDb2RlY0Rlc2NyaXB0b3IgY29kZWNfZGVzY3JpcHRvcnNbXSA9IHsKICAgICAg ICAgLmxvbmdfbmFtZSA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJXYXZlZm9ybSBBcmNoaXZlciIp LAogICAgICAgICAucHJvcHMgICAgID0gQVZfQ09ERUNfUFJPUF9JTlRSQV9PTkxZIHwgQVZfQ09E RUNfUFJPUF9MT1NTTEVTUywKICAgICB9LAorICAgIHsKKyAgICAgICAgLmlkICAgICAgICA9IEFW X0NPREVDX0lEX1JLQSwKKyAgICAgICAgLnR5cGUgICAgICA9IEFWTUVESUFfVFlQRV9BVURJTywK KyAgICAgICAgLm5hbWUgICAgICA9ICJya2EiLAorICAgICAgICAubG9uZ19uYW1lID0gTlVMTF9J Rl9DT05GSUdfU01BTEwoIlJLQSAoUksgQXVkaW8pIiksCisgICAgICAgIC5wcm9wcyAgICAgPSBB Vl9DT0RFQ19QUk9QX0lOVFJBX09OTFkgfCBBVl9DT0RFQ19QUk9QX0xPU1NZIHwgQVZfQ09ERUNf UFJPUF9MT1NTTEVTUywKKyAgICB9LAogCiAgICAgLyogc3VidGl0bGUgY29kZWNzICovCiAgICAg ewpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9jb2RlY19pZC5oIGIvbGliYXZjb2RlYy9jb2RlY19p ZC5oCmluZGV4IGFkMTEzMWI0NjQuLjg5YTRhMGNiODkgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMv Y29kZWNfaWQuaAorKysgYi9saWJhdmNvZGVjL2NvZGVjX2lkLmgKQEAgLTUzNyw2ICs1MzcsNyBA QCBlbnVtIEFWQ29kZWNJRCB7CiAgICAgQVZfQ09ERUNfSURfQVBBQywKICAgICBBVl9DT0RFQ19J RF9GVFIsCiAgICAgQVZfQ09ERUNfSURfV0FWQVJDLAorICAgIEFWX0NPREVDX0lEX1JLQSwKIAog ICAgIC8qIHN1YnRpdGxlIGNvZGVjcyAqLwogICAgIEFWX0NPREVDX0lEX0ZJUlNUX1NVQlRJVExF ID0gMHgxNzAwMCwgICAgICAgICAgLy8vPCBBIGR1bW15IElEIHBvaW50aW5nIGF0IHRoZSBzdGFy dCBvZiBzdWJ0aXRsZSBjb2RlY3MuCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3JrYS5jIGIvbGli YXZjb2RlYy9ya2EuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42Mjk5 NzhmZjJkCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy9ya2EuYwpAQCAtMCwwICsxLDEw NjYgQEAKKy8qCisgKiBSS0EgZGVjb2RlcgorICogQ29weXJpZ2h0IChjKSAyMDIzIFBhdWwgQiBN YWhvbAorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSA8 bGltaXRzLmg+CisKKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKKyNpbmNsdWRlICJs aWJhdnV0aWwvY2hhbm5lbF9sYXlvdXQuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvaW50cmVhZHdy aXRlLmgiCisKKyNpbmNsdWRlICJhdmNvZGVjLmgiCisjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwu aCIKKyNpbmNsdWRlICJieXRlc3RyZWFtLmgiCisjaW5jbHVkZSAiZGVjb2RlLmgiCisjaW5jbHVk ZSAidW5hcnkuaCIKKwordHlwZWRlZiBzdHJ1Y3QgQUNvZGVyIHsKKyAgICBHZXRCeXRlQ29udGV4 dCBnYjsKKyAgICB1aW50MzJfdCBsb3csIGhpZ2g7CisgICAgdWludDMyX3QgdmFsdWU7Cit9IEFD b2RlcjsKKwordHlwZWRlZiBzdHJ1Y3QgRmlsdENvZWZmcyB7CisgICAgaW50MzJfdCBjb2VmZnNb MjU3XTsKKyAgICB1bnNpZ25lZCBzaXplOworfSBGaWx0Q29lZmZzOworCit0eXBlZGVmIHN0cnVj dCBNb2RlbDY0IHsKKyAgICBpbnQzMl90IHplcm9fcHJvYjA7CisgICAgaW50MzJfdCB6ZXJvX3By b2IxOworICAgIGludDMyX3Qgc2lnbl9wcm9iMDsKKyAgICBpbnQzMl90IHNpZ25fcHJvYjE7Cisg ICAgdW5zaWduZWQgc2l6ZTsKKyAgICBpbnQgYml0czsKKworICAgIHVpbnQxNl90IGJ1Zl92YWw0 WzY1XTsKKyAgICB1aW50MTZfdCBidWZfdmFsMVs2NV07Cit9IE1vZGVsNjQ7CisKK3R5cGVkZWYg c3RydWN0IEFkYXB0aXZlTW9kZWwgeworICAgIGludCBsYXN0OworICAgIGludCB0b3RhbDsKKyAg ICBpbnQgYnVmX3NpemU7CisgICAgaW50MTZfdCBzdW07CisgICAgdWludDE2X3QgYXByb2IwOwor ICAgIHVpbnQxNl90IGFwcm9iMTsKKyAgICB1aW50MTZfdCAqcHJvYjsKKyAgICB1aW50MTZfdCAq cHRyOworfSBBZGFwdGl2ZU1vZGVsOworCit0eXBlZGVmIHN0cnVjdCBDaENvbnRleHQgeworICAg IGludCBzdGFydDsKKyAgICBpbnQgZW5kOworICAgIGludCBjbW9kZTsKKyAgICBpbnQgY21vZGUy OworICAgIHVuc2lnbmVkIHNyYXRlX3BhZDsKKyAgICB1bnNpZ25lZCBwb3NfbW9kMTE7CisKKyAg ICBBZGFwdGl2ZU1vZGVsICpmaWx0X3NpemU7CisgICAgQWRhcHRpdmVNb2RlbCAqZmlsdF9iaXRz OworCisgICAgaW50ICpicHJvYjA7CisgICAgaW50ICpicHJvYjE7CisKKyAgICBBZGFwdGl2ZU1v ZGVsIHBvc191cGRhdGU7CisgICAgQWRhcHRpdmVNb2RlbCBmc2hpZnQ7CisgICAgQWRhcHRpdmVN b2RlbCBuYl9zZWdtZW50czsKKyAgICBBZGFwdGl2ZU1vZGVsIGNvZWZmX2JpdHNbMTFdOworCisg ICAgTW9kZWw2NCBtZGw2NFs0XVsxMV07CisKKyAgICBpbnQzMl90IGJ1ZjBbMTIwMDFdOworICAg IGludDMyX3QgYnVmMVsxMjAwMV07Cit9IENoQ29udGV4dDsKKwordHlwZWRlZiBzdHJ1Y3QgUktB Q29udGV4dCB7CisgICAgQVZDbGFzcyAqY2xhc3M7CisKKyAgICBBQ29kZXIgYWM7CisgICAgQ2hD b250ZXh0IGNoWzJdOworCisgICAgaW50IGJwczsKKyAgICBpbnQgYWxpZ247CisgICAgaW50IGN1 cl9jaGFuOworICAgIGludCBjaGFubmVsczsKKyAgICBpbnQgZnJhbWVfc2FtcGxlczsKKyAgICBp bnQgbGFzdF9uYl9zYW1wbGVzOworICAgIHVpbnQzMl90IHRvdGFsX25iX3NhbXBsZXM7CisgICAg dWludDMyX3Qgc2FtcGxlc19sZWZ0OworCisgICAgaW50IGJwcm9iMFsyNTddOworICAgIGludCBi cHJvYjFbMjU3XTsKKworICAgIEFkYXB0aXZlTW9kZWwgZmlsdF9zaXplOworICAgIEFkYXB0aXZl TW9kZWwgZmlsdF9iaXRzOworfSBSS0FDb250ZXh0OworCitzdGF0aWMgaW50IGFkYXB0aXZlX21v ZGVsX2luaXQoQWRhcHRpdmVNb2RlbCAqYW0sIGludCBidWZfc2l6ZSkKK3sKKyAgICBhbS0+dG90 YWwgPSAwOworICAgIGFtLT5hcHJvYjAgPSAwOworICAgIGFtLT5hcHJvYjEgPSAwOworICAgIGFt LT5idWZfc2l6ZSA9IGJ1Zl9zaXplOworICAgIGFtLT5zdW0gPSAyMDAwOworCisgICAgaWYgKCFh bS0+cHJvYikKKyAgICAgICAgYW0tPnByb2IgPSBhdl9tYWxsb2NfYXJyYXkoYnVmX3NpemUgKyA1 LCBzaXplb2YoKmFtLT5wcm9iKSk7CisgICAgaWYgKCFhbS0+cHRyKQorICAgICAgICBhbS0+cHRy ID0gYXZfbWFsbG9jX2FycmF5KGJ1Zl9zaXplICsgNSwgc2l6ZW9mKCphbS0+cHRyKSk7CisKKyAg ICBpZiAoIWFtLT5wcm9iIHx8ICFhbS0+cHRyKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9N RU0pOworICAgIG1lbXNldChhbS0+cHJvYiwgMCwgKGJ1Zl9zaXplICsgNSkgKiBzaXplb2YoKmFt LT5wcm9iKSk7CisgICAgbWVtc2V0KGFtLT5wdHIsIDAsIChidWZfc2l6ZSArIDUpICogc2l6ZW9m KCphbS0+cHRyKSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGFkYXB0aXZlX21v ZGVsX2ZyZWUoQWRhcHRpdmVNb2RlbCAqYW0pCit7CisgICAgYXZfZnJlZXAoJmFtLT5wcm9iKTsK KyAgICBhdl9mcmVlcCgmYW0tPnB0cik7Cit9CisKK3N0YXRpYyBhdl9jb2xkIGludCBya2FfZGVj b2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQoreworICAgIFJLQUNvbnRleHQgKnMgPSBh dmN0eC0+cHJpdl9kYXRhOworICAgIGludCBjbW9kZTsKKworICAgIGlmIChhdmN0eC0+ZXh0cmFk YXRhX3NpemUgPCAxNikKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisKKyAg ICBzLT5icHMgPSBhdmN0eC0+Yml0c19wZXJfcmF3X3NhbXBsZSA9IGF2Y3R4LT5leHRyYWRhdGFb MTNdOworCisgICAgc3dpdGNoIChzLT5icHMpIHsKKyAgICBjYXNlIDg6CisgICAgICAgIGF2Y3R4 LT5zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9VODsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz ZSAxNjoKKyAgICAgICAgYXZjdHgtPnNhbXBsZV9mbXQgPSBBVl9TQU1QTEVfRk1UX1MxNjsKKyAg ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJ RERBVEE7CisgICAgfQorCisgICAgcy0+Y2hhbm5lbHMgPSBhdmN0eC0+Y2hfbGF5b3V0Lm5iX2No YW5uZWxzOworICAgIGlmIChzLT5jaGFubmVscyA8IDEgfHwgcy0+Y2hhbm5lbHMgPiAyKQorICAg ICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgIHMtPmFsaWduID0gKHMtPmNo YW5uZWxzICogKGF2Y3R4LT5iaXRzX3Blcl9yYXdfc2FtcGxlID4+IDMpKTsKKyAgICBzLT5zYW1w bGVzX2xlZnQgPSBzLT50b3RhbF9uYl9zYW1wbGVzID0gKEFWX1JMMzIoYXZjdHgtPmV4dHJhZGF0 YSArIDQpKSAvIHMtPmFsaWduOworICAgIHMtPmZyYW1lX3NhbXBsZXMgPSAxMzEwNzIgLyBzLT5h bGlnbjsKKyAgICBzLT5sYXN0X25iX3NhbXBsZXMgPSBzLT50b3RhbF9uYl9zYW1wbGVzICUgcy0+ ZnJhbWVfc2FtcGxlczsKKworICAgIGNtb2RlID0gYXZjdHgtPmV4dHJhZGF0YVsxNF0gJiAweGY7 CisgICAgaWYgKChhdmN0eC0+ZXh0cmFkYXRhWzE1XSAmIDQpICE9IDApCisgICAgICAgIGNtb2Rl ID0gLWNtb2RlOworCisgICAgcy0+Y2hbMF0uY21vZGUgPSBzLT5jaFsxXS5jbW9kZSA9IGNtb2Rl OworICAgIHMtPmNoWzBdLmNtb2RlMiA9IC1zLT5jaFswXS5jbW9kZTsKKyAgICBzLT5jaFsxXS5j bW9kZTIgPSAtcy0+Y2hbMV0uY21vZGU7CisgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19ERUJVRywg ImNtb2RlOiAlZFxuIiwgY21vZGUpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lk IG1vZGVsNjRfaW5pdChNb2RlbDY0ICptLCB1bnNpZ25lZCBiaXRzKQoreworICAgIHVuc2lnbmVk IHg7CisKKyAgICBtLT5iaXRzID0gYml0czsKKyAgICBtLT5zaXplID0gNjQ7CisgICAgbS0+emVy b19wcm9iMSA9IDE7CisKKyAgICB4ID0gKDEgPDwgKGJpdHMgPj4gMSkpICsgMzsKKyAgICB4ID0g RkZNSU4oeCwgMjApOworCisgICAgbS0+emVyb19wcm9iMCA9IHg7CisgICAgbS0+c2lnbl9wcm9i MCA9IDE7CisgICAgbS0+c2lnbl9wcm9iMSA9IDE7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8 IEZGX0FSUkFZX0VMRU1TKG0tPmJ1Zl92YWw0KTsgaSsrKSB7CisgICAgICAgIG0tPmJ1Zl92YWw0 W2ldID0gNDsKKyAgICAgICAgbS0+YnVmX3ZhbDFbaV0gPSAxOworICAgIH0KK30KKworc3RhdGlj IGludCBjaGN0eF9pbml0KFJLQUNvbnRleHQgKnMsIENoQ29udGV4dCAqYywKKyAgICAgICAgICAg ICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGUsIGludCBicHMpCit7CisgICAgaW50IHJldDsKKwor ICAgIG1lbXNldChjLT5idWYwLCAwLCBzaXplb2YoYy0+YnVmMCkpOworICAgIG1lbXNldChjLT5i dWYxLCAwLCBzaXplb2YoYy0+YnVmMSkpOworCisgICAgYy0+ZmlsdF9zaXplID0gJnMtPmZpbHRf c2l6ZTsKKyAgICBjLT5maWx0X2JpdHMgPSAmcy0+ZmlsdF9iaXRzOworCisgICAgYy0+YnByb2Iw ID0gcy0+YnByb2IwOworICAgIGMtPmJwcm9iMSA9IHMtPmJwcm9iMTsKKworICAgIGMtPnN0YXJ0 ID0gYy0+ZW5kID0gMjU2MDsKKyAgICBjLT5zcmF0ZV9wYWQgPSAoc2FtcGxlX3JhdGUgPDwgMTMp IC8gNDQxMDAgJiAweEZGRkZGRkZDVTsKKyAgICBjLT5wb3NfbW9kMTEgPSAxOworCisgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyhzLT5icHJvYjApOyBpKyspCisgICAgICAg IGMtPmJwcm9iMFtpXSA9IGMtPmJwcm9iMVtpXSA9IDE7CisKKyAgICBmb3IgKGludCBpID0gMDsg aSA8IDExOyBpKyspIHsKKyAgICAgICAgcmV0ID0gYWRhcHRpdmVfbW9kZWxfaW5pdCgmYy0+Y29l ZmZfYml0c1tpXSwgMzIpOworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVy biByZXQ7CisKKyAgICAgICAgbW9kZWw2NF9pbml0KCZjLT5tZGw2NFswXVtpXSwgaSk7CisgICAg ICAgIG1vZGVsNjRfaW5pdCgmYy0+bWRsNjRbMV1baV0sIGkpOworICAgICAgICBtb2RlbDY0X2lu aXQoJmMtPm1kbDY0WzJdW2ldLCBpKzEpOworICAgICAgICBtb2RlbDY0X2luaXQoJmMtPm1kbDY0 WzNdW2ldLCBpKzEpOworICAgIH0KKworICAgIHJldCA9IGFkYXB0aXZlX21vZGVsX2luaXQoYy0+ ZmlsdF9zaXplLCAyNTYpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0Owor ICAgIHJldCA9IGFkYXB0aXZlX21vZGVsX2luaXQoYy0+ZmlsdF9iaXRzLCAxNik7CisgICAgaWYg KHJldCA8IDApCisgICAgICAgIHJldHVybiByZXQ7CisgICAgcmV0ID0gYWRhcHRpdmVfbW9kZWxf aW5pdCgmYy0+cG9zX3VwZGF0ZSwgMTYpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1 cm4gcmV0OworICAgIHJldCA9IGFkYXB0aXZlX21vZGVsX2luaXQoJmMtPm5iX3NlZ21lbnRzLCA4 KTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICByZXR1cm4gYWRh cHRpdmVfbW9kZWxfaW5pdCgmYy0+ZnNoaWZ0LCAzMik7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRf YWNvZGVyKEFDb2RlciAqYWMpCit7CisgICAgYWMtPmxvdyA9IDB4MDsKKyAgICBhYy0+aGlnaCA9 IDB4ZmZmZmZmZmY7CisgICAgYWMtPnZhbHVlID0gYnl0ZXN0cmVhbTJfZ2V0X2JlMzIoJmFjLT5n Yik7Cit9CisKK3N0YXRpYyBpbnQgYWNfZGVjb2RlX2Jvb2woQUNvZGVyICphYywgaW50IGZyZXEx LCBpbnQgZnJlcTIpCit7CisgICAgdW5zaWduZWQgaGVscCwgYWRkLCBoaWdoOworICAgIGludCB2 YWx1ZSwgbG93OworCisgICAgbG93ID0gYWMtPmxvdzsKKyAgICBoZWxwID0gYWMtPmhpZ2ggLyAo dW5zaWduZWQgaW50KShmcmVxMiArIGZyZXExKTsKKyAgICB2YWx1ZSA9IGFjLT52YWx1ZTsKKyAg ICBhZGQgPSBmcmVxMSAqIGhlbHA7CisgICAgYWMtPmhpZ2ggPSBoZWxwOworCisgICAgaWYgKHZh bHVlIC0gbG93ID49IGFkZCkgeworICAgICAgICBhYy0+bG93ID0gbG93ID0gYWRkICsgbG93Owor ICAgICAgICBhYy0+aGlnaCA9IGhpZ2ggPSBmcmVxMiAqIGhlbHA7CisgICAgICAgIHdoaWxlICgx KSB7CisgICAgICAgICAgICBpZiAoKGxvdyBeIChoaWdoICsgbG93KSkgPiAweEZGRkZGRikgewor ICAgICAgICAgICAgICAgIGlmIChoaWdoID4gMHhGRkZGKQorICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gMTsKKyAgICAgICAgICAgICAgICBhYy0+aGlnaCA9ICh1aW50MTZfdCktKGludDE2X3Qp bG93OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYnl0ZXN0cmVhbTJfZ2V0X2J5 dGVzX2xlZnQoJmFjLT5nYikgPD0gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg ICAgIGFjLT52YWx1ZSA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldSgmYWMtPmdiKSB8IChhYy0+dmFs dWUgPDwgOCk7CisgICAgICAgICAgICBhYy0+aGlnaCA9IGhpZ2ggPSBhYy0+aGlnaCA8PCA4Owor ICAgICAgICAgICAgYWMtPmxvdyA9IGxvdyA9IGFjLT5sb3cgPDwgODsKKyAgICAgICAgfQorICAg ICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgYWMtPmhpZ2ggPSBhZGQ7CisgICAgd2hpbGUg KDEpIHsKKyAgICAgICAgaWYgKChsb3cgXiAoYWRkICsgbG93KSkgPiAweEZGRkZGRikgeworICAg ICAgICAgICAgaWYgKGFkZCA+IDB4RkZGRikKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAg ICAgICAgICAgIGFjLT5oaWdoID0gKHVpbnQxNl90KS0oaW50MTZfdClsb3c7CisgICAgICAgIH0K KworICAgICAgICBpZiAoYnl0ZXN0cmVhbTJfZ2V0X2J5dGVzX2xlZnQoJmFjLT5nYikgPD0gMCkK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBhYy0+dmFsdWUgPSBieXRlc3RyZWFtMl9nZXRf Ynl0ZXUoJmFjLT5nYikgfCAoYWMtPnZhbHVlIDw8IDgpOworICAgICAgICBhYy0+aGlnaCA9IGFk ZCA9IGFjLT5oaWdoIDw8IDg7CisgICAgICAgIGFjLT5sb3cgPSBsb3cgPSBhYy0+bG93IDw8IDg7 CisgICAgfQorICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIGludCBkZWNvZGVfYm9vbChBQ29k ZXIgKmFjLCBDaENvbnRleHQgKmMsIGludCBpZHgpCit7CisgICAgaW50IHgsIGI7CisKKyAgICB4 ID0gYy0+YnByb2IwW2lkeF07CisgICAgaWYgKHggKyBjLT5icHJvYjFbaWR4XSA+IDQwOTYpIHsK KyAgICAgICAgYy0+YnByb2IwW2lkeF0gPSAoeCA+PiAxKSArIDE7CisgICAgICAgIGMtPmJwcm9i MVtpZHhdID0gKGMtPmJwcm9iMVtpZHhdID4+IDEpICsgMTsKKyAgICB9CisKKyAgICBiID0gYWNf ZGVjb2RlX2Jvb2woYWMsIGMtPmJwcm9iMFtpZHhdLCBjLT5icHJvYjFbaWR4XSk7CisgICAgaWYg KGIgPT0gMSkgeworICAgICAgICBjLT5icHJvYjFbaWR4XSsrOworICAgIH0gZWxzZSBpZiAoYiA9 PSAwKSB7CisgICAgICAgIGMtPmJwcm9iMFtpZHhdKys7CisgICAgfQorCisgICAgcmV0dXJuIGI7 Cit9CisKK3N0YXRpYyBpbnQgYWNfZ2V0X2ZyZXEoQUNvZGVyICphYywgdW5zaWduZWQgZnJlcSwg aW50ICpyZXN1bHQpCit7CisgICAgdWludDMyX3QgbmV3X2hpZ2g7CisKKyAgICBpZiAoZnJlcSA9 PSAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBuZXdfaGlnaCA9IGFjLT5oaWdoIC8gZnJl cTsKKyAgICBhYy0+aGlnaCA9IG5ld19oaWdoOworCisgICAgaWYgKG5ld19oaWdoID09IDApCisg ICAgICAgIHJldHVybiAtMTsKKworICAgICpyZXN1bHQgPSAoYWMtPnZhbHVlIC0gYWMtPmxvdykg LyBuZXdfaGlnaDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGFjX3VwZGF0ZShB Q29kZXIgKmFjLCBpbnQgZnJlcSwgaW50IG11bCkKK3sKKyAgICB1aW50MzJfdCBsb3csIGhpZ2g7 CisKKyAgICBsb3cgPSBhYy0+bG93ID0gYWMtPmhpZ2ggKiBmcmVxICsgYWMtPmxvdzsKKyAgICBo aWdoID0gYWMtPmhpZ2ggPSBhYy0+aGlnaCAqIG11bDsKKworICAgIHdoaWxlICgxKSB7CisgICAg ICAgIGlmICgoKGhpZ2ggKyBsb3cpIF4gbG93KSA+IDB4ZmZmZmZmKSB7CisgICAgICAgICAgICBp ZiAoaGlnaCA+IDB4ZmZmZikKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg IGFjLT5oaWdoID0gKC0oaW50MTZfdClsb3cpICYgMHhmZmZmOworICAgICAgICB9CisKKyAgICAg ICAgaWYgKGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KCZhYy0+Z2IpIDw9IDApCisgICAgICAg ICAgICBicmVhazsKKworICAgICAgICBhYy0+dmFsdWUgPSAoYWMtPnZhbHVlIDw8IDgpIHwgYnl0 ZXN0cmVhbTJfZ2V0X2J5dGV1KCZhYy0+Z2IpOworICAgICAgICBsb3cgPSBhYy0+bG93ID0gYWMt PmxvdyA8PCA4OworICAgICAgICBoaWdoID0gYWMtPmhpZ2ggPSBhYy0+aGlnaCA8PCA4OworICAg IH0KKworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIHZvaWQgdXBkYXRlX2NoX3N1Ym9iaihB ZGFwdGl2ZU1vZGVsICphbSkKK3sKKyAgICBpbnQgaWR4MiwgaWR4ID0gYW0tPmJ1Zl9zaXplIC0g MTsKKworICAgIGlmIChpZHggPj0gMCkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICB1aW50 MTZfdCAqcHJvYiA9IGFtLT5wcm9iOworICAgICAgICAgICAgaW50IHByb2JfaWR4ID0gcHJvYltp ZHhdOworICAgICAgICAgICAgaW50IGRpZmYsIGxlZnQ7CisKKyAgICAgICAgICAgIGlkeDIgPSBp ZHggLSAxOworICAgICAgICAgICAgaWYgKGlkeCA+IDApIHsKKyAgICAgICAgICAgICAgICBpbnQg aWR4MyA9IGlkeCAtIDE7CisKKyAgICAgICAgICAgICAgICBpZiAoKGlkeDIgJiBpZHgpICE9IGlk eDIpIHsKKyAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAg cHJvYl9pZHggLT0gcHJvYltpZHgzXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkeDMgJj0g aWR4MyAtIDE7CisgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKChpZHgyICYgaWR4KSAhPSBp ZHgzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRp ZmYgPSAoKHByb2JfaWR4ID4gMCkgLSBwcm9iX2lkeCkgPj4gMTsKKyAgICAgICAgICAgIGxlZnQg PSBpZHg7CisgICAgICAgICAgICBhbS0+YXByb2IwICs9IGRpZmY7CisgICAgICAgICAgICBpZiAo IGlkeCA8PSAwICkgeworICAgICAgICAgICAgICAgIGFtLT5wcm9iWzBdICs9IGRpZmY7CisgICAg ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAg ICAgYW0tPnByb2JbbGVmdF0gKz0gZGlmZjsKKyAgICAgICAgICAgICAgICAgICAgbGVmdCArPSAo bGVmdCAmIC1sZWZ0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgd2hpbGUg KGxlZnQgPCBhbS0+YnVmX3NpemUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWR4LS07 CisgICAgICAgIH0gd2hpbGUgKGlkeDIgPj0gMCk7CisgICAgfQorCisgICAgaWYgKGFtLT5zdW0g PCA4MDAwKQorICAgICAgICBhbS0+c3VtICs9IDIwMDsKKworICAgIGFtLT5hcHJvYjEgPSAoYW0t PmFwcm9iMSArIDEpID4+IDE7Cit9CisKK3N0YXRpYyBpbnQgYW1kbF9kZWNvZGVfaW50KEFkYXB0 aXZlTW9kZWwgKmFtLCBBQ29kZXIgKmFjLCB1bnNpZ25lZCAqZHN0LCB1bnNpZ25lZCBzaXplKQor eworICAgIGludCB2YWxfMTsKKyAgICBpbnQgdjU7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAg aW50IHY3OworICAgIGludCB2ODsKKyAgICB1aW50MTZfdCB2OTsKKyAgICBpbnQgdjEwOworICAg IHVpbnQxNl90IHYxMTsKKyAgICB1aW50MTZfdCAqdjEyOworICAgIGludCB2MTM7CisgICAgaW50 IHYxNDsKKyAgICBpbnQgazsKKyAgICBpbnQgdjE3OworICAgIHVuc2lnbmVkIHYxODsKKyAgICBp bnQgdmFsOworICAgIGludCB2MjQ7CisgICAgdW5zaWduZWQgaW50IGZyZXE7CisgICAgc2lnbmVk IGludCBmcmVxYTsKKyAgICB1aW50MTZfdCB2Mjc7CisgICAgdWludDE2X3QgajsKKyAgICB1aW50 MTZfdCB2Mjk7CisKKyAgICB2YWxfMSA9IHNpemU7CisgICAgaWYgKHNpemUgPiBhbS0+YnVmX3Np emUgLSAxKQorICAgICAgICB2YWxfMSA9IGFtLT5idWZfc2l6ZSAtIDE7CisgICAgaWYgKGFtLT5h cHJvYjAgPj0gYW0tPnN1bSkKKyAgICAgICAgdXBkYXRlX2NoX3N1Ym9iaihhbSk7CisKKyAgICBp ZiAoYW0tPmFwcm9iMSAmJiAoYW0tPnRvdGFsID09IGFtLT5idWZfc2l6ZSB8fAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgYWNfZGVjb2RlX2Jvb2woYWMsIGFtLT5hcHJvYjAsIGFtLT5hcHJv YjEpID09IDApKSB7CisgICAgICAgIGlmIChhbS0+dG90YWwgPD0gMSkgeworICAgICAgICAgICAg ZHN0WzBdID0gYW0tPmxhc3Q7CisgICAgICAgICAgICB2YWwgPSBkc3RbMF07CisgICAgICAgICAg ICBhbS0+YXByb2IwKys7CisgICAgICAgICAgICBpZiAodmFsIDw9IDApIHsKKyAgICAgICAgICAg ICAgICBhbS0+cHJvYlswXSsrOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg ICBkbyB7CisgICAgICAgICAgICAgICAgICAgIGFtLT5wcm9iW3ZhbF0rKzsKKyAgICAgICAgICAg ICAgICAgICAgdmFsICs9ICh2YWwgJiAtdmFsKTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlICgg dmFsIDwgYW0tPmJ1Zl9zaXplICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g MDsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsXzEgPT0gYW0tPmJ1Zl9zaXplIC0gMSkgewor ICAgICAgICAgICAgZnJlcSA9IGFtLT5hcHJvYjA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICBpZiAodmFsXzEgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICB2NSA9IHZhbF8xOworICAg ICAgICAgICAgICAgIGZvciAoIGkgPSBhbS0+cHJvYlswXTsgdjUgPiAwOyB2NSAmPSAodjUgLSAx KSApCisgICAgICAgICAgICAgICAgICAgIGkgKz0gYW0tPnByb2JbdjVdOworICAgICAgICAgICAg ICAgIGZyZXEgPSBpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmcmVx ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB2MjQgPSAwOworICAgICAg ICBhY19nZXRfZnJlcShhYywgZnJlcSwgJnY3KTsKKyAgICAgICAgdjggPSBhbS0+YnVmX3NpemUg Pj4gMTsKKyAgICAgICAgdjkgPSBhbS0+cHJvYlswXTsKKyAgICAgICAgaWYgKHY3ID49IHY5KSB7 CisgICAgICAgICAgICBmb3IgKCBqID0gdjcgLSB2OTsgdjg7IHY4ID4+PSAxICkgeworICAgICAg ICAgICAgICAgIHYxMSA9IGFtLT5wcm9iW3Y4ICsgdjI0XTsKKyAgICAgICAgICAgICAgICBpZiAo IGogPj0gdjExICkgeworICAgICAgICAgICAgICAgICAgICB2MjQgKz0gdjg7CisgICAgICAgICAg ICAgICAgICAgIGogLT0gdjExOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIHYyNyA9IHY3IC0gajsKKyAgICAgICAgICAgIHYxMCA9IHYyNCArIDE7CisgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2MjcgPSAwOworICAgICAgICAgICAgdjEwID0gMDsK KyAgICAgICAgfQorICAgICAgICBkc3RbMF0gPSB2MTA7CisgICAgICAgIHYxMiA9IGFtLT5wcm9i OworICAgICAgICB2MTMgPSB2MTJbdjEwXTsKKyAgICAgICAgaWYgKHYxMCA+IDApIHsKKyAgICAg ICAgICAgIHYxNCA9IHYxMCAmICh2MTAgLSAxKTsKKyAgICAgICAgICAgIGZvciAoayA9IHYxMCAt IDE7IHYxNCAhPSBrOyBrICY9IGsgLSAxKQorICAgICAgICAgICAgICAgIHYxMyAtPSB2MTJba107 CisgICAgICAgIH0KKyAgICAgICAgYWNfdXBkYXRlKGFjLCB2MjcsIHYxMyk7CisgICAgICAgIHZh bCA9IGRzdFswXTsKKyAgICAgICAgYW0tPmFwcm9iMCsrOworICAgICAgICBpZiAodmFsIDw9IDAp IHsKKyAgICAgICAgICAgIGFtLT5wcm9iWzBdKys7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICBkbyB7CisgICAgICAgICAgICAgICAgYW0tPnByb2JbdmFsXSsrOworICAgICAgICAgICAg ICAgIHZhbCArPSAodmFsICYgLXZhbCk7CisgICAgICAgICAgICB9IHdoaWxlICh2YWwgPCBhbS0+ YnVmX3NpemUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICB2MTcg PSBhbS0+YnVmX3NpemU7CisgICAgYW0tPmFwcm9iMSsrOworICAgIGlmICh2YWxfMSA9PSB2MTcg LSAxKSB7CisgICAgICAgIGFjX2dldF9mcmVxKGFjLCB2MTcgLSBhbS0+dG90YWwsICZ2MTgpOwor ICAgIH0gZWxzZSB7CisgICAgICAgIGZyZXFhID0gMTsKKyAgICAgICAgZHN0WzBdID0gMDsKKyAg ICAgICAgaWYgKHZhbF8xID4gMCkgeworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAg IGlmICghYW0tPnB0cltkc3RbMF1dKQorICAgICAgICAgICAgICAgICAgICBmcmVxYSsrOworICAg ICAgICAgICAgICAgIGRzdFswXSsrOworICAgICAgICAgICAgfSB3aGlsZSAoZHN0WzBdIDwgdmFs XzEpOworICAgICAgICB9CisgICAgICAgIGFjX2dldF9mcmVxKGFjLCBmcmVxYSwgJnYxOCk7Cisg ICAgfQorICAgIHYyOSA9IDA7CisgICAgZHN0WzBdID0gMDsKKyAgICBpZiAodjE4ID4gMCAmJiBh bS0+YnVmX3NpemUgPiAwKSB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHZhbCA9IGRzdFsw XTsKKyAgICAgICAgICAgIGlmICghYW0tPnB0cltkc3RbMF1dKQorICAgICAgICAgICAgICAgICsr djI5OworICAgICAgICAgICAgZHN0WzBdID0gdmFsICsgMTsKKyAgICAgICAgfQorICAgICAgICB3 aGlsZSAoIHYyOSA8IHYxOCAmJiB2YWwgKyAxIDwgYW0tPmJ1Zl9zaXplICk7CisgICAgfQorICAg IGlmIChhbS0+cHRyW2RzdFswXV0pIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgdmFsID0g ZHN0WzBdKys7CisgICAgICAgIH0gd2hpbGUgKHZhbCArIDEgPCBhbS0+YnVmX3NpemUgJiYgYW0t PnB0clt2YWwgKyAxXSk7CisgICAgfQorICAgIGFjX3VwZGF0ZShhYywgdjI5LCAxKTsKKyAgICBh bS0+cHRyW2RzdFswXV0rKzsKKyAgICBhbS0+dG90YWwrKzsKKyAgICB2YWwgPSBkc3RbMF07Cisg ICAgYW0tPmFwcm9iMCsrOworICAgIGlmICh2YWwgPD0gMCkgeworICAgICAgICBhbS0+cHJvYlsw XSsrOworICAgIH0gZWxzZSB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGFtLT5wcm9iW3Zh bF0rKzsKKyAgICAgICAgICAgIHZhbCArPSAodmFsICYgLXZhbCk7CisgICAgICAgIH0gd2hpbGUg KHZhbCA8IGFtLT5idWZfc2l6ZSk7CisgICAgfQorCisgICAgYW0tPmxhc3QgPSBkc3RbMF07CisK KyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkZWNvZGVfZmlsdF9jb2VmZnMoUktBQ29u dGV4dCAqcywgQ2hDb250ZXh0ICpjdHgsIEFDb2RlciAqYWMsIEZpbHRDb2VmZnMgKmRzdCkKK3sK KyAgICB1bnNpZ25lZCB2YWwsIGJpdHM7CisgICAgaW50IGk7CisKKyAgICBpZiAoYW1kbF9kZWNv ZGVfaW50KGN0eC0+ZmlsdF9zaXplLCBhYywgJmRzdC0+c2l6ZSwgMjU2KSA8IDApCisgICAgICAg IHJldHVybiAtMTsKKworICAgIGlmIChkc3QtPnNpemUgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7 CisKKyAgICBpZiAoYW1kbF9kZWNvZGVfaW50KGN0eC0+ZmlsdF9iaXRzLCBhYywgJmJpdHMsIDEw KSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGkgPSAwOworICAgIGRvIHsKKyAgICAg ICAgaWYgKCgoaSA9PSA4KSB8fCAoaSA9PSAyMCkpICYmICgwIDwgYml0cykpCisgICAgICAgICAg ICBiaXRzLS07CisKKyAgICAgICAgaWYgKGJpdHMgPiAxMCkKKyAgICAgICAgICAgIHJldHVybiAt MTsKKworICAgICAgICBpZiAoYW1kbF9kZWNvZGVfaW50KCZjdHgtPmNvZWZmX2JpdHNbYml0c10s IGFjLCAmdmFsLCAzMSkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgIGlm ICh2YWwgPT0gMzEpIHsKKyAgICAgICAgICAgIGFjX2dldF9mcmVxKGFjLCAweDEwMDAwLCAmdmFs KTsKKyAgICAgICAgICAgIGFjX3VwZGF0ZShhYywgdmFsLCAxKTsKKyAgICAgICAgfQorCisgICAg ICAgIGlmICh2YWwgPT0gMCkgeworICAgICAgICAgICAgZHN0LT5jb2VmZnNbaV0gPSAwOworICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgdW5zaWduZWQgZnJlcSA9IDA7CisgICAgICAgICAg ICBpbnQgc2lnbjsKKworICAgICAgICAgICAgaWYgKGJpdHMgPiAwKSB7CisgICAgICAgICAgICAg ICAgYWNfZ2V0X2ZyZXEoYWMsIDEgPDwgYml0cywgJmZyZXEpOworICAgICAgICAgICAgICAgIGFj X3VwZGF0ZShhYywgZnJlcSwgMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkc3QtPmNv ZWZmc1tpXSA9IGZyZXEgKyAxICsgKCh2YWwgLSAxVSkgPDwgYml0cyk7CisgICAgICAgICAgICBz aWduID0gZGVjb2RlX2Jvb2woYWMsIGN0eCwgaSk7CisgICAgICAgICAgICBpZiAoc2lnbiA8IDAp CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgaWYgKHNpZ24gPT0gMSkK KyAgICAgICAgICAgICAgICBkc3QtPmNvZWZmc1tpXSA9IC1kc3QtPmNvZWZmc1tpXTsKKyAgICAg ICAgfQorICAgIH0gd2hpbGUgKCsraSA8IGRzdC0+c2l6ZSk7CisKKyAgICByZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBhY19kZWNfYml0KEFDb2RlciAqYWMpCisKK3sKKyAgICB1aW50MzJfdCBo aWdoLCBsb3c7CisKKyAgICBsb3cgPSBhYy0+bG93OworICAgIGhpZ2ggPSBhYy0+aGlnaCA+PiAx OworICAgIGFjLT5oaWdoID0gaGlnaDsKKyAgICBpZiAoYWMtPnZhbHVlIC0gbG93IDwgaGlnaCkg eworICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiAoKChoaWdoICsgbG93KSBeIGxvdykgPiAw eGZmZmZmZikgeworICAgICAgICAgICAgICAgIGlmIChoaWdoID4gMHhmZmZmKQorICAgICAgICAg ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICBhYy0+aGlnaCA9ICgtKGludDE2 X3QpbG93KSAmIDB4ZmZmZjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGJ5dGVz dHJlYW0yX2dldF9ieXRlc19sZWZ0KCZhYy0+Z2IpIDw9IDApCisgICAgICAgICAgICAgICAgYnJl YWs7CisKKyAgICAgICAgICAgIGFjLT52YWx1ZSA9IChhYy0+dmFsdWUgPDwgOCkgfCBieXRlc3Ry ZWFtMl9nZXRfYnl0ZXUoJmFjLT5nYik7CisgICAgICAgICAgICBoaWdoID0gYWMtPmhpZ2ggPDwg ODsKKyAgICAgICAgICAgIGFjLT5oaWdoID0gaGlnaDsKKyAgICAgICAgICAgIGxvdyA9IGFjLT5s b3cgPDwgODsKKyAgICAgICAgICAgIGFjLT5sb3cgPSBsb3c7CisgICAgICAgIH0gd2hpbGUgKDEp OworCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgYWMtPmxvdyA9IGxvdyA9IGxvdyAr IGhpZ2g7CisgICAgZG8geworICAgICAgICBpZiAoKChoaWdoICsgbG93KSBeIGxvdykgPiAweGZm ZmZmZikgeworICAgICAgICAgICAgaWYgKGhpZ2ggPiAweGZmZmYpCisgICAgICAgICAgICAgICAg cmV0dXJuIDE7CisgICAgICAgICAgICBhYy0+aGlnaCA9ICgtKGludDE2X3QpbG93KSAmIDB4ZmZm ZjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdCgm YWMtPmdiKSA8PSAwKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgYWMtPnZhbHVlID0g KGFjLT52YWx1ZSA8PCA4KSB8IGJ5dGVzdHJlYW0yX2dldF9ieXRldSgmYWMtPmdiKTsKKyAgICAg ICAgYWMtPmhpZ2ggPSBoaWdoID0gYWMtPmhpZ2ggPDwgODsKKyAgICAgICAgYWMtPmxvdyA9IGxv dyA9IGFjLT5sb3cgPDwgODsKKyAgICB9IHdoaWxlICgxKTsKKworICAgIHJldHVybiAtMTsKK30K Kworc3RhdGljIGludCBtZGw2NF9kZWNvZGUoQUNvZGVyICphYywgTW9kZWw2NCAqY3R4LCBpbnQg KmRzdCkKK3sKKyAgICB1aW50MTZfdCAqcHNWYXIxOworICAgIGludCBiVmFyMzsKKyAgICBpbnQg c2lnbjsKKyAgICBpbnQgaVZhcjU7CisgICAgdW5zaWduZWQgdmFsOworICAgIGludCBiaXRzOwor CisgICAgdmFsID0gMDsKKyAgICBpZiAoKHVuc2lnbmVkKShjdHgtPnplcm9fcHJvYjAgKyBjdHgt Pnplcm9fcHJvYjEpID4gNDAwMCkgeworICAgICAgICBjdHgtPnplcm9fcHJvYjAgPSAoY3R4LT56 ZXJvX3Byb2IwID4+IDEpICsgMTsKKyAgICAgICAgY3R4LT56ZXJvX3Byb2IxID0gKGN0eC0+emVy b19wcm9iMSA+PiAxKSArIDE7CisgICAgfQorICAgIGlmICgodW5zaWduZWQpKGN0eC0+c2lnbl9w cm9iMSArIGN0eC0+c2lnbl9wcm9iMCkgPiA0MDAwKSB7CisgICAgICAgIGN0eC0+c2lnbl9wcm9i MCA9IChjdHgtPnNpZ25fcHJvYjAgPj4gMSkgKyAxOworICAgICAgICBjdHgtPnNpZ25fcHJvYjEg PSAoY3R4LT5zaWduX3Byb2IxID4+IDEpICsgMTsKKyAgICB9CisgICAgc2lnbiA9IGFjX2RlY29k ZV9ib29sKGFjLGN0eC0+emVyb19wcm9iMSxjdHgtPnplcm9fcHJvYjApOworICAgIGlmIChzaWdu ID09IDApIHsKKyAgICAgICAgY3R4LT56ZXJvX3Byb2IxICs9IDI7CisgICAgICAgIGRzdFswXSA9 IDA7CisgICAgICAgIHJldHVybiAwOworICAgIH0gZWxzZSBpZiAoc2lnbiA8IDApCisgICAgICAg IHJldHVybiAtMTsKKworICAgIGN0eC0+emVyb19wcm9iMCArPSAyOworICAgIHNpZ24gPSBhY19k ZWNvZGVfYm9vbChhYyxjdHgtPnNpZ25fcHJvYjAsY3R4LT5zaWduX3Byb2IxKTsKKyAgICBpZiAo c2lnbiA9PSAxKSB7CisgICAgICAgIGN0eC0+c2lnbl9wcm9iMSsrOworICAgIH0gZWxzZSBpZiAo c2lnbiA9PSAwKSB7CisgICAgICAgIGN0eC0+c2lnbl9wcm9iMCsrOworICAgIH0gZWxzZSB7Cisg ICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgYml0cyA9IGN0eC0+Yml0czsKKyAgICBpZiAo Yml0cyA+IDApIHsKKyAgICAgICAgaWYgKGJpdHMgPCAxMykgeworICAgICAgICAgICAgYWNfZ2V0 X2ZyZXEoYWMsIDEgPDwgYml0cywgJnZhbCk7CisgICAgICAgICAgICBhY191cGRhdGUoYWMsdmFs LDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYWNfZ2V0X2ZyZXEoYWMsIDEgPDwg KGJpdHMgLyAyKSwgJnZhbCk7CisgICAgICAgICAgICBhY191cGRhdGUoYWMsdmFsLDEpOworICAg ICAgICAgICAgYWNfZ2V0X2ZyZXEoYWMsMSA8PCAoY3R4LT5iaXRzIC0gKGJpdHMgLyAyKSksICZi aXRzKTsKKyAgICAgICAgICAgIGFjX3VwZGF0ZShhYyx2YWwsMSk7CisgICAgICAgICAgICB2YWwg PSB2YWwgKyAoYml0cyA8PCAoYml0cyAvIDIpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBiaXRz ID0gY3R4LT5zaXplOworICAgIGlWYXI1ID0gMDsKKyAgICBpZiAoYml0cyA+PSAwKSB7CisgICAg ICAgIGRvIHsKKyAgICAgICAgICAgIHBzVmFyMSA9IGN0eC0+YnVmX3ZhbDQ7CisgICAgICAgICAg ICBpZiAoMjAwMFUgPCAodW5zaWduZWQpKHBzVmFyMVtpVmFyNV0gKyBjdHgtPmJ1Zl92YWwxW2lW YXI1XSkpIHsKKyAgICAgICAgICAgICAgICBwc1ZhcjFbaVZhcjVdID0gKHBzVmFyMVtpVmFyNV0g Pj4gMSkgKyAxOworICAgICAgICAgICAgICAgIGN0eC0+YnVmX3ZhbDFbaVZhcjVdID0gKGN0eC0+ YnVmX3ZhbDFbaVZhcjVdID4+IDEpICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJW YXIzID0gYWNfZGVjb2RlX2Jvb2woYWMsIGN0eC0+YnVmX3ZhbDRbaVZhcjVdLCBjdHgtPmJ1Zl92 YWwxW2lWYXI1XSk7CisgICAgICAgICAgICBpZiAoYlZhcjMgPT0gMSkgeworICAgICAgICAgICAg ICAgIGN0eC0+YnVmX3ZhbDFbaVZhcjVdID0gY3R4LT5idWZfdmFsMVtpVmFyNV0gKyA0OworICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfSBlbHNlIGlmIChiVmFyMyA8IDApCisg ICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgY3R4LT5idWZfdmFsNFtpVmFy NV0gPSBjdHgtPmJ1Zl92YWw0W2lWYXI1XSArIDQ7CisgICAgICAgICAgICBpVmFyNSA9IGlWYXI1 ICsgMTsKKyAgICAgICAgfSB3aGlsZSAoaVZhcjUgPD0gY3R4LT5zaXplKTsKKyAgICAgICAgYml0 cyA9IGN0eC0+c2l6ZTsKKyAgICAgICAgaWYgKGlWYXI1IDw9IGJpdHMpIHsKKyAgICAgICAgICAg IGJpdHMgPSB2YWwgKyAxICsgKGlWYXI1IDw8ICgodWludDhfdCljdHgtPmJpdHMgJiAweDFmKSk7 CisgICAgICAgICAgICBkc3RbMF0gPSBiaXRzOworICAgICAgICAgICAgaWYgKHNpZ24pCisgICAg ICAgICAgICAgICAgZHN0WzBdICo9IC0xOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg IH0KKyAgICB9CisgICAgYml0cyA9IGJpdHMgKyAxOworICAgIHdoaWxlIChhY19kZWNfYml0KGFj KSA9PSAwKQorICAgICAgICBiaXRzID0gYml0cyArIDY0OworICAgIGFjX2dldF9mcmVxKGFjLCA2 NCwgJmlWYXI1KTsKKyAgICBhY191cGRhdGUoYWMsaVZhcjUsMSk7CisgICAgaVZhcjUgPSBiaXRz ICsgaVZhcjU7CisgICAgYml0cyA9IHZhbCArIDEgKyAoaVZhcjUgPDwgKCh1aW50OF90KWN0eC0+ Yml0cyAmIDB4MWYpKTsKKyAgICBkc3RbMF0gPSBiaXRzOworICAgIGlmIChzaWduKQorICAgICAg ICBkc3RbMF0gPSAtZHN0WzBdOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCB1 aW50OF90IHRhYltdID0geyAwLCAzLCAzLCAyLCAyLCAxLCAxLCAxLCAxIH07CisKK3N0YXRpYyBp bnQgZGVjb2RlX2ZpbHRlcihSS0FDb250ZXh0ICpzLCBDaENvbnRleHQgKmN0eCwgQUNvZGVyICph YywgaW50IG9mZiwgdW5zaWduZWQgc2l6ZSkKK3sKKyAgICBGaWx0Q29lZmZzIGZpbHQ7CisgICAg TW9kZWw2NCAqbWRsNjQ7CisgICAgdW5zaWduZWQgYml0czsKKyAgICBpbnQgcmV0OworICAgIGlu dCBhdmFsOworICAgIHVpbnQ4X3Qgc2hpZnQ7CisgICAgaW50IGlWYXIzOworICAgIGludCBpOwor ICAgIGludCBsb2NhbF9jNDA7CisgICAgaW50IGxvY2FsX2MzYzsKKyAgICBpbnQgbG9jYWxfYzMw OworICAgIGludCBsYXN0X3ZhbDsKKyAgICBpbnQgbG9jYWxfYzI4OworICAgIHVuc2lnbmVkIHBv c19tb2QxMTsKKyAgICBpbnQgY21vZGUyOworCisgICAgcG9zX21vZDExID0gMzsKKyAgICBsYXN0 X3ZhbCA9IDA7CisgICAgYml0cyA9IDA7CisgICAgaWYgKGN0eC0+Y21vZGUgPT0gMCkgeworICAg ICAgICBpZiAoYW1kbF9kZWNvZGVfaW50KCZjdHgtPmZzaGlmdCwgYWMsICZiaXRzLCAxNSkgPCAw KQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBiaXRzICY9IDMxVTsKKyAgICB9Cisg ICAgcmV0ID0gZGVjb2RlX2ZpbHRfY29lZmZzKHMsIGN0eCwgYWMsICZmaWx0KTsKKyAgICBpZiAo cmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIGlmIChzaXplIDwgNTEyKQorICAg ICAgICBsb2NhbF9jMzAgPSBzaXplIC8gMjsKKyAgICBlbHNlCisgICAgICAgIGxvY2FsX2MzMCA9 IHNpemUgPj4gNDsKKyAgICBjbW9kZTIgPSAwOworICAgIGlmIChzaXplID4gMCkgeworICAgICAg ICBkbyB7CisgICAgICAgICAgICBsb2NhbF9jNDAgPSAwOworICAgICAgICAgICAgbG9jYWxfYzNj ID0gbG9jYWxfYzMwICsgY21vZGUyOworICAgICAgICAgICAgaWYgKHNpemUgPCBsb2NhbF9jM2Mp IHsKKyAgICAgICAgICAgICAgICBsb2NhbF9jMzAgPSBzaXplIC0gY21vZGUyOworICAgICAgICAg ICAgICAgIGxvY2FsX2MzYyA9IHNpemU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo YW1kbF9kZWNvZGVfaW50KCZjdHgtPnBvc191cGRhdGUsIGFjLCAmcG9zX21vZDExLCAxMCkgPCAw KQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIHBvc19tb2QxMSA9IChj dHgtPnBvc19tb2QxMSArIHBvc19tb2QxMSkgJSAxMTsKKyAgICAgICAgICAgIGN0eC0+cG9zX21v ZDExID0gcG9zX21vZDExOworICAgICAgICAgICAgaVZhcjMgPSBsb2NhbF9jMzAgKyBjbW9kZTI7 CisgICAgICAgICAgICBpZiAoY21vZGUyIDwgbG9jYWxfYzNjKSB7CisgICAgICAgICAgICAgICAg ZG8geworICAgICAgICAgICAgICAgICAgICBpbnQgKnNyYywgc3VtID0gMTY7CisKKyAgICAgICAg ICAgICAgICAgICAgYXZhbCA9IEZGQUJTKGxhc3RfdmFsKTsKKyAgICAgICAgICAgICAgICAgICAg c2hpZnQgPSAodWludDhfdClwb3NfbW9kMTE7CisgICAgICAgICAgICAgICAgICAgIGlmIChhdmFs ID4+IChzaGlmdCAmIDB4MWYpIDwgMHhmKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhdmFs ID0gRkZBQlMobGFzdF92YWwpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF2YWwgPj4g KHNoaWZ0ICYgMHgxZikgPCA3KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF92 YWwgPSBGRkFCUyhsYXN0X3ZhbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxh c3RfdmFsID4+IChzaGlmdCAmIDB4MWYpIDwgNCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWRsNjQgPSAmY3R4LT5tZGw2NFswXVtwb3NfbW9kMTFdOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWRsNjQg PSAmY3R4LT5tZGw2NFsxXVtwb3NfbW9kMTFdOworICAgICAgICAgICAgICAgICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZGw2NCA9ICZjdHgtPm1kbDY0WzJd W3Bvc19tb2QxMV07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtZGw2NCA9ICZjdHgtPm1kbDY0 WzNdW3Bvc19tb2QxMV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg ICAgcmV0ID0gbWRsNjRfZGVjb2RlKGFjLCBtZGw2NCwgJmxvY2FsX2MyOCk7CisgICAgICAgICAg ICAgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0x OworICAgICAgICAgICAgICAgICAgICBsYXN0X3ZhbCA9IGxvY2FsX2MyODsKKyAgICAgICAgICAg ICAgICAgICAgYXZhbCA9IGNtb2RlMiArIDE7CisgICAgICAgICAgICAgICAgICAgIHNyYyA9ICZj dHgtPmJ1ZjFbb2ZmICsgY21vZGUyICsgLTFdOworICAgICAgICAgICAgICAgICAgICBmb3IgKGkg PSAwOyBpIDwgZmlsdC5zaXplICYmIGkgPCAxNTsgaSsrKQorICAgICAgICAgICAgICAgICAgICAg ICAgc3VtICs9IGZpbHQuY29lZmZzW2ldICogc3JjWy1pXTsKKyAgICAgICAgICAgICAgICAgICAg c3VtID0gc3VtICogMjsKKyAgICAgICAgICAgICAgICAgICAgZm9yICg7IGkgPCBmaWx0LnNpemU7 IGkrKykKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1bSArPSBmaWx0LmNvZWZmc1tpXSAqIHNy Y1staV07CisgICAgICAgICAgICAgICAgICAgIHN1bSA9IHN1bSA+PiA2OworICAgICAgICAgICAg ICAgICAgICBpZiAoY3R4LT5jbW9kZSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoYml0cyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5idWYxW29m ZiArIGNtb2RlMl0gPSBzdW0gKyBsb2NhbF9jMjg7CisgICAgICAgICAgICAgICAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+YnVmMVtvZmYgKyBjbW9k ZTJdID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2FsX2MyOCArIChzdW0g Pj4gYml0cykgKiAoMVUgPDwgYml0cykpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKCgoMVUgPDwgYml0cykgLSAxVSkgJiBjdHgtPmJ1ZjFbb2ZmICsgY21vZGUyICsgLTFdKTsK KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+ YnVmMFtvZmYgKyBjbW9kZTJdID0gY3R4LT5idWYxW29mZiArIGNtb2RlMl0gKyBjdHgtPmJ1ZjBb b2ZmICsgY21vZGUyICsgLTFdOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgICAgICAgICAgICAgbG9jYWxfYzI4ID0gbG9jYWxfYzI4ICogKDEgPDwgY3R4LT5jbW9k ZSAmIDB4MWYpOworICAgICAgICAgICAgICAgICAgICAgICAgc3VtID0gc3VtICsgY3R4LT5idWYw W29mZiArIGNtb2RlMiArIC0xXSArIGxvY2FsX2MyODsKKyAgICAgICAgICAgICAgICAgICAgICAg IHN3aXRjaCAocy0+YnBzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE2OiBzdW0g PSBhdl9jbGlwX2ludDE2KHN1bSk7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2Fz ZSAgODogc3VtID0gYXZfY2xpcF9pbnQ4KHN1bSk7ICBicmVhazsKKyAgICAgICAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+YnVmMVtvZmYgKyBjbW9kZTJd ID0gc3VtIC0gY3R4LT5idWYwW29mZiArIGNtb2RlMiArIC0xXTsKKyAgICAgICAgICAgICAgICAg ICAgICAgIGN0eC0+YnVmMFtvZmYgKyBjbW9kZTJdID0gc3VtOworICAgICAgICAgICAgICAgICAg ICAgICAgY21vZGUyID0gRkZBQlMoY3R4LT5idWYxW29mZiArIGNtb2RlMl0pOworICAgICAgICAg ICAgICAgICAgICAgICAgbG9jYWxfYzQwICs9IGNtb2RlMjsKKyAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICBjbW9kZTIgPSBhdmFsOworICAgICAgICAgICAgICAgIH0g d2hpbGUgKGF2YWwgPCBsb2NhbF9jM2MpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY21v ZGUyID0gY3R4LT5jbW9kZTI7CisgICAgICAgICAgICBpZiAoY21vZGUyICE9IDApIHsKKyAgICAg ICAgICAgICAgICBpbnQgc3VtID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKGF2YWwgPSAobG9j YWxfYzQwIDw8IDYpIC8gbG9jYWxfYzMwOyAwIDwgYXZhbDsgYXZhbCA9IGF2YWwgPj4gMSkKKyAg ICAgICAgICAgICAgICAgICAgc3VtID0gc3VtICsgMTsKKyAgICAgICAgICAgICAgICBzdW0gPSBz dW0gLSAoY21vZGUyICsgNyk7CisgICAgICAgICAgICAgICAgYXZhbCA9IHRhYltjbW9kZTJdOwor ICAgICAgICAgICAgICAgIGlmICh0YWJbY21vZGUyXSA8IHN1bSkKKyAgICAgICAgICAgICAgICAg ICAgYXZhbCA9IHN1bTsKKyAgICAgICAgICAgICAgICBjdHgtPmNtb2RlID0gYXZhbDsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIGNtb2RlMiA9IGlWYXIzOworICAgICAgICB9IHdoaWxlIChp VmFyMyA8IHNpemUpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRl Y29kZV9zYW1wbGVzKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQUNvZGVyICphYywgQ2hDb250ZXh0 ICpjdHgsIGludCBvZmZzZXQpCit7CisgICAgUktBQ29udGV4dCAqcyA9IGF2Y3R4LT5wcml2X2Rh dGE7CisgICAgaW50IHNlZ21lbnRfc2l6ZSwgc2l6ZSwgb2Zmc2V0MiwgbW9kZSwgcmV0OworCisg ICAgcmV0ID0gYW1kbF9kZWNvZGVfaW50KCZjdHgtPm5iX3NlZ21lbnRzLCBhYywgJm1vZGUsIDUp OworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgaWYgKG1vZGUg PT0gNSkgeworICAgICAgICByZXQgPSBhY19nZXRfZnJlcShhYywgY3R4LT5zcmF0ZV9wYWQgPj4g MiwgJnNlZ21lbnRfc2l6ZSk7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgcmV0 dXJuIHJldDsKKyAgICAgICAgYWNfdXBkYXRlKGFjLCBzZWdtZW50X3NpemUsIDEpOworICAgICAg ICBzZWdtZW50X3NpemUgKj0gNDsKKyAgICAgICAgZGVjb2RlX2ZpbHRlcihzLCBjdHgsIGFjLCBv ZmZzZXQsIHNlZ21lbnRfc2l6ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2VnbWVudF9zaXpl ID0gY3R4LT5zcmF0ZV9wYWQ7CisKKyAgICAgICAgaWYgKG1vZGUpIHsKKyAgICAgICAgICAgIGlm IChtb2RlID4gMikgeworICAgICAgICAgICAgICAgIGRlY29kZV9maWx0ZXIocywgY3R4LCBhYywg b2Zmc2V0LCBzZWdtZW50X3NpemUgLyA0KTsKKyAgICAgICAgICAgICAgICBvZmZzZXQyID0gc2Vn bWVudF9zaXplIC8gNCArIG9mZnNldDsKKyAgICAgICAgICAgICAgICBkZWNvZGVfZmlsdGVyKHMs IGN0eCwgYWMsIG9mZnNldDIsIHNlZ21lbnRfc2l6ZSAvIDQpOworICAgICAgICAgICAgICAgIHNp emUgPSBzZWdtZW50X3NpemUgLyA0ICsgb2Zmc2V0MjsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICAgICAgZGVjb2RlX2ZpbHRlcihzLCBjdHgsIGFjLCBvZmZzZXQsIHNlZ21lbnRf c2l6ZSAvIDIpOworICAgICAgICAgICAgICAgIHNpemUgPSBzZWdtZW50X3NpemUgLyAyICsgb2Zm c2V0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1vZGUgJiAxKSB7CisgICAgICAg ICAgICAgICAgZGVjb2RlX2ZpbHRlcihzLCBjdHgsIGFjLCBzaXplLCBzZWdtZW50X3NpemUgLyAy KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGVjb2RlX2ZpbHRlcihz LCBjdHgsIGFjLCBzaXplLCBzZWdtZW50X3NpemUgLyA0KTsKKyAgICAgICAgICAgICAgICBkZWNv ZGVfZmlsdGVyKHMsIGN0eCwgYWMsIHNlZ21lbnRfc2l6ZSAvIDQgKyBzaXplLCBzZWdtZW50X3Np emUgLyA0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRl Y29kZV9maWx0ZXIocywgY3R4LCBhYywgb2Zmc2V0LCBjdHgtPnNyYXRlX3BhZCk7CisgICAgICAg IH0KKyAgICB9CisKKyAgICByZXR1cm4gc2VnbWVudF9zaXplOworfQorCitzdGF0aWMgaW50IGRl Y29kZV9jaF9zYW1wbGUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBpbnQgKnNhbXBsZSkKK3sKKyAg ICBSS0FDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKKyAgICBBQ29kZXIgKmFjID0gJnMt PmFjOworICAgIENoQ29udGV4dCAqYzsKKworICAgIGMgPSAmcy0+Y2hbcy0+Y3VyX2NoYW5dOwor ICAgIGlmIChjLT5zdGFydCA+PSBjLT5lbmQpIHsKKyAgICAgICAgaW50IGkgPSAwOworCisgICAg ICAgIGlmIChieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdCgmYWMtPmdiKSA8PSAwKQorICAgICAg ICAgICAgcmV0dXJuIEFWRVJST1JfRU9GOworCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGMt PmJ1ZjBbaV0gPSBjLT5idWYwW2kgKyBjLT5lbmQgLSAyNTYwXTsKKyAgICAgICAgICAgIGMtPmJ1 ZjFbaV0gPSBjLT5idWYxW2kgKyBjLT5lbmQgLSAyNTYwXTsKKyAgICAgICAgICAgIGkrKzsKKyAg ICAgICAgfSB3aGlsZSAoaSA8IDI1NjApOworCisgICAgICAgIGMtPnN0YXJ0ID0gYy0+ZW5kID0g MjU2MDsKKworICAgICAgICBpID0gZGVjb2RlX3NhbXBsZXMoYXZjdHgsIGFjLCBjLCAyNTYwKTsK KyAgICAgICAgaWYgKGkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIGMtPmVu ZCArPSBpOworICAgIH0KKworICAgIHNhbXBsZVswXSA9IGMtPmJ1ZjBbYy0+c3RhcnRdOworICAg IGMtPnN0YXJ0Kys7CisKKyAgICBzLT5jdXJfY2hhbisrOworICAgIGlmIChzLT5jdXJfY2hhbiA+ PSBzLT5jaGFubmVscykKKyAgICAgICAgcy0+Y3VyX2NoYW4gPSAwOworCisgICAgcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgcmthX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgs IEFWRnJhbWUgKmZyYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZ290X2Zy YW1lX3B0ciwgQVZQYWNrZXQgKmF2cGt0KQoreworICAgIFJLQUNvbnRleHQgKnMgPSBhdmN0eC0+ cHJpdl9kYXRhOworICAgIEFDb2RlciAqYWMgPSAmcy0+YWM7CisgICAgaW50IHJldDsKKworICAg IGJ5dGVzdHJlYW0yX2luaXQoJmFjLT5nYiwgYXZwa3QtPmRhdGEsIGF2cGt0LT5zaXplKTsKKyAg ICBpbml0X2Fjb2RlcihhYyk7CisgICAgcy0+Y3VyX2NoYW4gPSAwOworCisgICAgZm9yIChpbnQg Y2ggPSAwOyBjaCA8IHMtPmNoYW5uZWxzOyBjaCsrKSB7CisgICAgICAgIHJldCA9IGNoY3R4X2lu aXQocywgJnMtPmNoW2NoXSwgYXZjdHgtPnNhbXBsZV9yYXRlLAorICAgICAgICAgICAgICAgICAg ICAgICAgIGF2Y3R4LT5iaXRzX3Blcl9yYXdfc2FtcGxlKTsKKyAgICAgICAgaWYgKHJldCA8IDAp CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIGZyYW1lLT5uYl9zYW1wbGVz ID0gcy0+ZnJhbWVfc2FtcGxlczsKKyAgICBpZiAoKHJldCA9IGZmX2dldF9idWZmZXIoYXZjdHgs IGZyYW1lLCAwKSkgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgaWYgKHMtPmNoYW5u ZWxzID09IDIpIHsKKyAgICAgICAgaW50MTZfdCAqZHN0ID0gKGludDE2X3QgKilmcmFtZS0+ZGF0 YVswXTsKKworICAgICAgICBzd2l0Y2ggKGF2Y3R4LT5zYW1wbGVfZm10KSB7CisgICAgICAgIGNh c2UgQVZfU0FNUExFX0ZNVF9TMTY6CisgICAgICAgICAgICBmb3IgKGludCBuID0gMDsgbiA8IGZy YW1lLT5uYl9zYW1wbGVzOyBuKyspIHsKKyAgICAgICAgICAgICAgICBpbnQgbCwgcjsKKworICAg ICAgICAgICAgICAgIHJldCA9IGRlY29kZV9jaF9zYW1wbGUoYXZjdHgsICZsKTsKKyAgICAgICAg ICAgICAgICBpZiAocmV0ID09IEFWRVJST1JfRU9GKSB7CisgICAgICAgICAgICAgICAgICAgIGZy YW1lLT5uYl9zYW1wbGVzID0gbjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgICAg ICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgICAgICAgICAgICAgIHJldCA9 IGRlY29kZV9jaF9zYW1wbGUoYXZjdHgsICZyKTsKKyAgICAgICAgICAgICAgICBpZiAocmV0ID09 IEFWRVJST1JfRU9GKSB7CisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5uYl9zYW1wbGVzID0g bjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJP Ul9JTlZBTElEREFUQTsKKworICAgICAgICAgICAgICAgIGRzdFsyICogbiArIDBdID0gKGwgKiAy ICsgciArIDEpIC8gMjsKKyAgICAgICAgICAgICAgICBkc3RbMiAqIG4gKyAxXSA9IChsICogMiAt IHIgKyAxKSAvIDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAg ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50MTZfdCAqZHN0ID0gKGludDE2X3QgKilmcmFt ZS0+ZGF0YVswXTsKKworICAgICAgICBzd2l0Y2ggKGF2Y3R4LT5zYW1wbGVfZm10KSB7CisgICAg ICAgIGNhc2UgQVZfU0FNUExFX0ZNVF9TMTY6CisgICAgICAgICAgICBmb3IgKGludCBuID0gMDsg biA8IGZyYW1lLT5uYl9zYW1wbGVzOyBuKyspIHsKKyAgICAgICAgICAgICAgICBpbnQgbTsKKwor ICAgICAgICAgICAgICAgIHJldCA9IGRlY29kZV9jaF9zYW1wbGUoYXZjdHgsICZtKTsKKyAgICAg ICAgICAgICAgICBpZiAocmV0ID09IEFWRVJST1JfRU9GKSB7CisgICAgICAgICAgICAgICAgICAg IGZyYW1lLT5uYl9zYW1wbGVzID0gbjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAg ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgICAgICAgICAgICAgIGRz dFtuXSA9IG07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVm YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICB9 CisgICAgfQorCisgICAgKmdvdF9mcmFtZV9wdHIgPSAxOworCisgICAgcmV0dXJuIGF2cGt0LT5z aXplOworfQorCitzdGF0aWMgYXZfY29sZCBpbnQgcmthX2RlY29kZV9jbG9zZShBVkNvZGVjQ29u dGV4dCAqYXZjdHgpCit7CisgICAgUktBQ29udGV4dCAqcyA9IGF2Y3R4LT5wcml2X2RhdGE7CisK KyAgICBmb3IgKGludCBjaCA9IDA7IGNoIDwgMjsgY2grKykgeworICAgICAgICBDaENvbnRleHQg KmMgPSAmcy0+Y2hbY2hdOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTE7IGkrKykK KyAgICAgICAgICAgIGFkYXB0aXZlX21vZGVsX2ZyZWUoJmMtPmNvZWZmX2JpdHNbaV0pOworCisg ICAgICAgIGFkYXB0aXZlX21vZGVsX2ZyZWUoJmMtPnBvc191cGRhdGUpOworICAgICAgICBhZGFw dGl2ZV9tb2RlbF9mcmVlKCZjLT5uYl9zZWdtZW50cyk7CisgICAgICAgIGFkYXB0aXZlX21vZGVs X2ZyZWUoJmMtPmZzaGlmdCk7CisgICAgfQorCisgICAgYWRhcHRpdmVfbW9kZWxfZnJlZSgmcy0+ ZmlsdF9zaXplKTsKKyAgICBhZGFwdGl2ZV9tb2RlbF9mcmVlKCZzLT5maWx0X2JpdHMpOworCisg ICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IEZGQ29kZWMgZmZfcmthX2RlY29kZXIgPSB7CisgICAg LnAubmFtZSAgICAgICAgID0gInJrYSIsCisgICAgQ09ERUNfTE9OR19OQU1FKCJSS0EgKFJLIEF1 ZGlvIiksCisgICAgLnAudHlwZSAgICAgICAgID0gQVZNRURJQV9UWVBFX0FVRElPLAorICAgIC5w LmlkICAgICAgICAgICA9IEFWX0NPREVDX0lEX1JLQSwKKyAgICAucHJpdl9kYXRhX3NpemUgPSBz aXplb2YoUktBQ29udGV4dCksCisgICAgLmluaXQgICAgICAgICAgID0gcmthX2RlY29kZV9pbml0 LAorICAgIC5jbG9zZSAgICAgICAgICA9IHJrYV9kZWNvZGVfY2xvc2UsCisgICAgRkZfQ09ERUNf REVDT0RFX0NCKHJrYV9kZWNvZGVfZnJhbWUpLAorICAgIC5wLmNhcGFiaWxpdGllcyA9IEFWX0NP REVDX0NBUF9EUjEgfCBBVl9DT0RFQ19DQVBfQ0hBTk5FTF9DT05GLAorICAgIC5jYXBzX2ludGVy bmFsICA9IEZGX0NPREVDX0NBUF9JTklUX0NMRUFOVVAsCit9OwotLSAKMi4zOS4xCgo= --000000000000b3681b05f3dc15d1 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". --000000000000b3681b05f3dc15d1--