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 DE61444B5F for ; Sun, 5 Feb 2023 19:18:07 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DFB5668BDC5; Sun, 5 Feb 2023 21:18:02 +0200 (EET) Received: from mail-vs1-f54.google.com (mail-vs1-f54.google.com [209.85.217.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 63D5368BB41 for ; Sun, 5 Feb 2023 21:17:56 +0200 (EET) Received: by mail-vs1-f54.google.com with SMTP id j7so10605931vsl.11 for ; Sun, 05 Feb 2023 11:17:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=8meGRlVw0J85chSLXa0evqdLQXLK/ixo6dTwVxy5p0U=; b=l4I65ug26RpHmseZuEv+VRxj+RIuvX0j2uxX/Qquxnr66mNlZg2Elx6UVR3/Y+awaS yc+6gW1tHY52qk938C7sU/AycnJxFbh2CmD+DYMGCQUwF33Zq6cH3/WxZTugRJEr0CBB PZ7kXibbGEQZJjY3aXmVhwpWPUhMcUncuE69ZYA55a/rLGSWi+ozAkX36TVCM5qQ3pks b70/p3BnyPR+DvrmKYQPFxpBw5Q8qWkJtp0bgsAG9ypm6iYlRG8wdY2zR/5dPjxPwhDJ NnEW8bzKqJjSJNAkWAjvpmO2lKVVl/ZraJmWCHcXQ8e4HpNnBvW0jAbgCDCBaPYMKd83 +GnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=8meGRlVw0J85chSLXa0evqdLQXLK/ixo6dTwVxy5p0U=; b=zzx6InoC+2UByGFa5mRZN49xTMEPAi3aEPmqdgRMtupCE0QqCUBsN0pcOv7fhE501l naW2ubqESP42J8Sq6YkCcomtKXlja+3LybLpjEH44tr9i8aX8vVmuv6YmVGfa44PMV7r /AVT58U5zOi965ZqzPECRGlOFO0paYjBXhQ9sfqsIGeyOX3dQDcUEDCLtcy01ZIVXDXD X/UguneqVvDD2slpSO3+o6BBH8dorwmU7Jr/sLJLuseshkLQrmCiNR169l7nEtEpppTI 3BWWf6uapTwgg+14J+tT/hHIupZfCwONVgjHFNAXAfTHX1i/Z5Qy65hO29YLEAgD3HPc dFSQ== X-Gm-Message-State: AO0yUKU9KbioLeTOx8kKbwn9MKvAm+hPt6KOjUV9f2er76+MTPzw8vyF aZBrkQ9q7XGHO4YZsUFZT/fY9h+ymWv1ExnLFINW/XJ1 X-Google-Smtp-Source: AK7set+NP+F61oMXnwQ7PSxe9aDKwg2eNEEKLTyNlYs4UaQ+i1O5YTCL2tUJOEVYlZQEnYy+nZNS36tEAGt7JocaKUA= X-Received: by 2002:a67:f984:0:b0:3f1:32b7:7185 with SMTP id b4-20020a67f984000000b003f132b77185mr2680452vsq.61.1675624673234; Sun, 05 Feb 2023 11:17:53 -0800 (PST) MIME-Version: 1.0 Received: by 2002:a05:612c:2428:b0:32a:5eaa:92e4 with HTTP; Sun, 5 Feb 2023 11:17:50 -0800 (PST) In-Reply-To: References: From: Paul B Mahol Date: Sun, 5 Feb 2023 20:17:50 +0100 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="0000000000006ceb9c05f3f8c5b9" Subject: [FFmpeg-devel] [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: --0000000000006ceb9c05f3f8c5b9 Content-Type: text/plain; charset="UTF-8" On 2/4/23, Paul B Mahol wrote: > Hi, > > Patches attached, decoder is not bit by bit exact yet for lossless > mode because some samples are not properly rounded. > Now lossless mode is bit exact. --0000000000006ceb9c05f3f8c5b9 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 RnJvbSAyMzIxMjVlNWJiYmQ2YWMwYjgwNDljYzMyZTVjYTYxYzQ4NGQxYmQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMzEgSmFuIDIwMjMgMTk6Mjc6MDkgKzAxMDAKU3ViamVjdDogW1BBVENIIDEvMl0gYXZm b3JtYXQ6IGFkZCBSS0EgZGVtdXhlcgoKU2lnbmVkLW9mZi1ieTogUGF1bCBCIE1haG9sIDxvbmVt ZGFAZ21haWwuY29tPgotLS0KIGxpYmF2Zm9ybWF0L01ha2VmaWxlICAgICB8ICAgMSArCiBsaWJh dmZvcm1hdC9hbGxmb3JtYXRzLmMgfCAgIDEgKwogbGliYXZmb3JtYXQvcmthLmMgICAgICAgIHwg MTczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFu Z2VkLCAxNzUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Zm9ybWF0L3Jr YS5jCgpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtl ZmlsZQppbmRleCBmMDQwOGE1OGIxLi5jZDljN2EzNmE4IDEwMDY0NAotLS0gYS9saWJhdmZvcm1h dC9NYWtlZmlsZQorKysgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQpAQCAtNDgyLDYgKzQ4Miw3IEBA IE9CSlMtJChDT05GSUdfUkFXVklERU9fREVNVVhFUikgICAgICAgICAgKz0gcmF3dmlkZW9kZWMu bwogT0JKUy0kKENPTkZJR19SQVdWSURFT19NVVhFUikgICAgICAgICAgICArPSByYXdlbmMubwog T0JKUy0kKENPTkZJR19SRUFMVEVYVF9ERU1VWEVSKSAgICAgICAgICArPSByZWFsdGV4dGRlYy5v IHN1YnRpdGxlcy5vCiBPQkpTLSQoQ09ORklHX1JFRFNQQVJLX0RFTVVYRVIpICAgICAgICAgICs9 IHJlZHNwYXJrLm8KK09CSlMtJChDT05GSUdfUktBX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0g cmthLm8gYXBldGFnLm8gaW1nMi5vCiBPQkpTLSQoQ09ORklHX1JMMl9ERU1VWEVSKSAgICAgICAg ICAgICAgICs9IHJsMi5vCiBPQkpTLSQoQ09ORklHX1JNX0RFTVVYRVIpICAgICAgICAgICAgICAg ICs9IHJtZGVjLm8gcm0ubyBybXNpcHIubwogT0JKUy0kKENPTkZJR19STV9NVVhFUikgICAgICAg ICAgICAgICAgICArPSBybWVuYy5vIHJtLm8KZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2FsbGZv cm1hdHMuYyBiL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYwppbmRleCA5Y2E4ZDI2OTJmLi40OTAz YmY3ZjlkIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9hbGxmb3JtYXRzLmMKKysrIGIvbGliYXZm b3JtYXQvYWxsZm9ybWF0cy5jCkBAIC0zODAsNiArMzgwLDcgQEAgZXh0ZXJuIGNvbnN0IEFWSW5w dXRGb3JtYXQgIGZmX3Jhd3ZpZGVvX2RlbXV4ZXI7CiBleHRlcm4gY29uc3QgQVZPdXRwdXRGb3Jt YXQgZmZfcmF3dmlkZW9fbXV4ZXI7CiBleHRlcm4gY29uc3QgQVZJbnB1dEZvcm1hdCAgZmZfcmVh bHRleHRfZGVtdXhlcjsKIGV4dGVybiBjb25zdCBBVklucHV0Rm9ybWF0ICBmZl9yZWRzcGFya19k ZW11eGVyOworZXh0ZXJuIGNvbnN0IEFWSW5wdXRGb3JtYXQgIGZmX3JrYV9kZW11eGVyOwogZXh0 ZXJuIGNvbnN0IEFWSW5wdXRGb3JtYXQgIGZmX3JsMl9kZW11eGVyOwogZXh0ZXJuIGNvbnN0IEFW SW5wdXRGb3JtYXQgIGZmX3JtX2RlbXV4ZXI7CiBleHRlcm4gY29uc3QgQVZPdXRwdXRGb3JtYXQg ZmZfcm1fbXV4ZXI7CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9ya2EuYyBiL2xpYmF2Zm9ybWF0 L3JrYS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmMxZTY0ZWJjYjMK LS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmZvcm1hdC9ya2EuYwpAQCAtMCwwICsxLDE3MyBAQAor LyoKKyAqIFJLQSBkZW11eGVyCisgKiBDb3B5cmlnaHQgKGMpIDIwMjMgUGF1bCBCIE1haG9sCisg KgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor ICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor ICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG bG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRlICJsaWJhdnV0 aWwvZGljdC5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRyZWFkd3JpdGUuaCIKKworI2luY2x1 ZGUgImFwZXRhZy5oIgorI2luY2x1ZGUgImF2Zm9ybWF0LmgiCisjaW5jbHVkZSAiYXZpb19pbnRl cm5hbC5oIgorI2luY2x1ZGUgImRlbXV4LmgiCisjaW5jbHVkZSAiaW50ZXJuYWwuaCIKKwordHlw ZWRlZiBzdHJ1Y3QgUktBQ29udGV4dCB7CisgICAgaW50IHRvdGFsX2ZyYW1lcywgY3VycmVudGZy YW1lOworICAgIGludCBmcmFtZV9zaXplOworICAgIGludCBsYXN0X2ZyYW1lX3NpemU7Cit9IFJL QUNvbnRleHQ7CisKK3N0YXRpYyBpbnQgcmthX3Byb2JlKGNvbnN0IEFWUHJvYmVEYXRhICpwKQor eworICAgIGlmIChBVl9STDMyKCZwLT5idWZbMF0pID09IE1LVEFHKCdSJywgJ0snLCAnQScsICc3 JykgJiYKKyAgICAgICAgQVZfUkwzMigmcC0+YnVmWzRdKSA+IDAgJiYKKyAgICAgICAgQVZfUkwz MigmcC0+YnVmWzhdKSA+IDAgJiYKKyAgICAgICAgcC0+YnVmWzEyXSA+IDAgJiYKKyAgICAgICAg cC0+YnVmWzEyXSA8PSAyICYmCisgICAgICAgIChwLT5idWZbMTNdID09IDggfHwgcC0+YnVmWzEz XSA9PSAxNikgJiYKKyAgICAgICAgcC0+YnVmWzE1XSAmIDIgIT0gMCkKKyAgICAgICAgcmV0dXJu IEFWUFJPQkVfU0NPUkVfRVhURU5TSU9OICsgMzA7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQgcmthX3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKK3sKKyAgICBpbnQ2NF90 IG5iX3NhbXBsZXMsIHNpemVfb2Zmc2V0OworICAgIFJLQUNvbnRleHQgKmMgPSBzLT5wcml2X2Rh dGE7CisgICAgaW50IGNoYW5uZWxzLCBicHMsIHNhbXBsZXJhdGU7CisgICAgQVZDb2RlY1BhcmFt ZXRlcnMgKnBhcjsKKyAgICBpbnQ2NF90IGZyYW1lcG9zOworICAgIEFWU3RyZWFtICpzdDsKKyAg ICBpbnQgcmV0OworCisgICAgc3QgPSBhdmZvcm1hdF9uZXdfc3RyZWFtKHMsIE5VTEwpOworICAg IGlmICghc3QpCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICBwYXIgPSBz dC0+Y29kZWNwYXI7CisgICAgcmV0ID0gZmZfZ2V0X2V4dHJhZGF0YShzLCBwYXIsIHMtPnBiLCAx Nik7CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICBuYl9zYW1w bGVzID0gQVZfUkwzMihwYXItPmV4dHJhZGF0YSArIDQpOworICAgIHNhbXBsZXJhdGUgPSBBVl9S TDMyKHBhci0+ZXh0cmFkYXRhICsgOCk7CisgICAgY2hhbm5lbHMgPSBwYXItPmV4dHJhZGF0YVsx Ml07CisgICAgaWYgKGNoYW5uZWxzID09IDApCisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFM SUREQVRBOworICAgIGJwcyA9IHBhci0+ZXh0cmFkYXRhWzEzXTsKKyAgICBpZiAoYnBzID09IDAp CisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgIHNpemVfb2Zmc2V0ID0g YXZpb19ybDMyKHMtPnBiKTsKKyAgICBmcmFtZXBvcyA9IGF2aW9fdGVsbChzLT5wYik7CisgICAg Yy0+ZnJhbWVfc2l6ZSA9IDEzMTA3MjsKKworICAgIGF2cHJpdl9zZXRfcHRzX2luZm8oc3QsIDY0 LCAxLCBzYW1wbGVyYXRlKTsKKyAgICBzdC0+c3RhcnRfdGltZSA9IDA7CisKKyAgICBhdmlvX3Nl ZWsocy0+cGIsIHNpemVfb2Zmc2V0LCBTRUVLX1NFVCk7CisgICAgYy0+dG90YWxfZnJhbWVzID0g KG5iX3NhbXBsZXMgKyBjLT5mcmFtZV9zaXplIC0gMSkgLyBjLT5mcmFtZV9zaXplOworICAgIGMt Pmxhc3RfZnJhbWVfc2l6ZSA9IG5iX3NhbXBsZXMgJSBjLT5mcmFtZV9zaXplOworCisgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBjLT50b3RhbF9mcmFtZXM7IGkrKykgeworICAgICAgICBpbnQgciwg ZW5kID0gMDsKKyAgICAgICAgaW50NjRfdCBzaXplOworCisgICAgICAgIGlmIChhdmlvX2Zlb2Yo cy0+cGIpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgc2l6ZSA9IGF2aW9fcmwyNChz LT5wYik7CisgICAgICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgICAgIGVuZCA9IDE7Cisg ICAgICAgICAgICBzaXplID0gc2l6ZV9vZmZzZXQgLSBmcmFtZXBvczsKKyAgICAgICAgICAgIGlm IChzaXplIDw9IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg ICBpZiAoKHIgPSBhdl9hZGRfaW5kZXhfZW50cnkoc3QsIGZyYW1lcG9zLCAoaSAqIDEzMTA3MkxM KSAvIChjaGFubmVscyAqIChicHMgPj4gMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZSwgMCwgQVZJTkRFWF9LRVlGUkFNRSkpIDwgMCkKKyAgICAgICAgICAgIHJl dHVybiByOworICAgICAgICBmcmFtZXBvcyArPSBzaXplOworCisgICAgICAgIGlmIChlbmQpCisg ICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBwYXItPmNvZGVjX3R5cGUgPSBBVk1FRElB X1RZUEVfQVVESU87CisgICAgcGFyLT5jb2RlY19pZCA9IEFWX0NPREVDX0lEX1JLQTsKKyAgICBw YXItPmNoX2xheW91dC5uYl9jaGFubmVscyA9IGNoYW5uZWxzOworICAgIHBhci0+c2FtcGxlX3Jh dGUgPSBzYW1wbGVyYXRlOworICAgIHBhci0+Yml0c19wZXJfcmF3X3NhbXBsZSA9IGJwczsKKyAg ICBzdC0+ZHVyYXRpb24gPSBuYl9zYW1wbGVzIC8gKGNoYW5uZWxzICogKGJwcyA+PiAzKSk7CisK KyAgICBpZiAocy0+cGItPnNlZWthYmxlICYgQVZJT19TRUVLQUJMRV9OT1JNQUwpCisgICAgICAg IGZmX2FwZV9wYXJzZV90YWcocyk7CisKKyAgICBhdmlvX3NlZWsocy0+cGIsIDIwLCBTRUVLX1NF VCk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBya2FfcmVhZF9wYWNrZXQoQVZG b3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQoreworICAgIFJLQUNvbnRleHQgKmMgPSBz LT5wcml2X2RhdGE7CisgICAgQVZTdHJlYW0gKnN0ID0gcy0+c3RyZWFtc1swXTsKKyAgICBGRlN0 cmVhbSAqY29uc3Qgc3RpID0gZmZzdHJlYW0oc3QpOworICAgIGludCBzaXplLCByZXQ7CisKKyAg ICBpZiAoYXZpb19mZW9mKHMtPnBiKSkKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfRU9GOworCisg ICAgaWYgKGMtPmN1cnJlbnRmcmFtZSA+PSBzdGktPm5iX2luZGV4X2VudHJpZXMpCisgICAgICAg IHJldHVybiBBVkVSUk9SX0VPRjsKKworICAgIHNpemUgPSBzdGktPmluZGV4X2VudHJpZXNbYy0+ Y3VycmVudGZyYW1lXS5zaXplOworCisgICAgcmV0ID0gYXZfZ2V0X3BhY2tldChzLT5wYiwgcGt0 LCBzaXplKTsKKyAgICBwa3QtPmR0cyA9IHN0aS0+aW5kZXhfZW50cmllc1tjLT5jdXJyZW50ZnJh bWUrK10udGltZXN0YW1wOworICAgIHBrdC0+ZHVyYXRpb24gPSBjLT5jdXJyZW50ZnJhbWUgPT0g Yy0+dG90YWxfZnJhbWVzID8gYy0+bGFzdF9mcmFtZV9zaXplIDoKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMTA3MjsKKyAgICByZXR1 cm4gcmV0OworfQorCitzdGF0aWMgaW50IHJrYV9yZWFkX3NlZWsoQVZGb3JtYXRDb250ZXh0ICpz LCBpbnQgc3RyZWFtX2luZGV4LCBpbnQ2NF90IHRpbWVzdGFtcCwgaW50IGZsYWdzKQoreworICAg IFJLQUNvbnRleHQgKmMgPSBzLT5wcml2X2RhdGE7CisgICAgQVZTdHJlYW0gKnN0ID0gcy0+c3Ry ZWFtc1tzdHJlYW1faW5kZXhdOworICAgIGludCBpbmRleCA9IGF2X2luZGV4X3NlYXJjaF90aW1l c3RhbXAoc3QsIHRpbWVzdGFtcCwgZmxhZ3MpOworICAgIGlmIChpbmRleCA8IDApCisgICAgICAg IHJldHVybiAtMTsKKyAgICBpZiAoYXZpb19zZWVrKHMtPnBiLCBmZnN0cmVhbShzdCktPmluZGV4 X2VudHJpZXNbaW5kZXhdLnBvcywgU0VFS19TRVQpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOwor CisgICAgYy0+Y3VycmVudGZyYW1lID0gaW5kZXg7CisKKyAgICByZXR1cm4gMDsKK30KKworY29u c3QgQVZJbnB1dEZvcm1hdCBmZl9ya2FfZGVtdXhlciA9IHsKKyAgICAubmFtZSAgICAgICAgICAg PSAicmthIiwKKyAgICAubG9uZ19uYW1lICAgICAgPSBOVUxMX0lGX0NPTkZJR19TTUFMTCgiUktB IChSSyBBdWRpbykiKSwKKyAgICAucHJpdl9kYXRhX3NpemUgPSBzaXplb2YoUktBQ29udGV4dCks CisgICAgLnJlYWRfcHJvYmUgICAgID0gcmthX3Byb2JlLAorICAgIC5yZWFkX2hlYWRlciAgICA9 IHJrYV9yZWFkX2hlYWRlciwKKyAgICAucmVhZF9wYWNrZXQgICAgPSBya2FfcmVhZF9wYWNrZXQs CisgICAgLnJlYWRfc2VlayAgICAgID0gcmthX3JlYWRfc2VlaywKKyAgICAuZXh0ZW5zaW9ucyAg ICAgPSAicmthIiwKK307Ci0tIAoyLjM5LjEKCg== --0000000000006ceb9c05f3f8c5b9 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 RnJvbSAyMTdiNDU5Y2VhMWU2NDY4ODM1MjQwZDFjMjMxM2U4OTkxOGU2ZDdiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMzEgSmFuIDIwMjMgMjE6MDM6MzggKzAxMDAKU3ViamVjdDogW1BBVENIIDIvMl0gYXZj b2RlYzogYWRkIFJLQSBkZWNvZGVyCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIEIgTWFob2wgPG9uZW1k YUBnbWFpbC5jb20+Ci0tLQogbGliYXZjb2RlYy9NYWtlZmlsZSAgICAgfCAgIDEgKwogbGliYXZj b2RlYy9hbGxjb2RlY3MuYyAgfCAgIDEgKwogbGliYXZjb2RlYy9jb2RlY19kZXNjLmMgfCAgIDcg KwogbGliYXZjb2RlYy9jb2RlY19pZC5oICAgfCAgIDEgKwogbGliYXZjb2RlYy9ya2EuYyAgICAg ICAgfCA5OTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNSBmaWxl cyBjaGFuZ2VkLCAxMDA5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNv ZGVjL3JrYS5jCgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMv TWFrZWZpbGUKaW5kZXggNDk3MTgzMmZmNC4uMzg5MjUzZjVkMCAxMDA2NDQKLS0tIGEvbGliYXZj b2RlYy9NYWtlZmlsZQorKysgYi9saWJhdmNvZGVjL01ha2VmaWxlCkBAIC02MzEsNiArNjMxLDcg QEAgT0JKUy0kKENPTkZJR19SQVNDX0RFQ09ERVIpICAgICAgICAgICAgKz0gcmFzYy5vCiBPQkpT LSQoQ09ORklHX1JBV1ZJREVPX0RFQ09ERVIpICAgICAgICArPSByYXdkZWMubwogT0JKUy0kKENP TkZJR19SQVdWSURFT19FTkNPREVSKSAgICAgICAgKz0gcmF3ZW5jLm8KIE9CSlMtJChDT05GSUdf UkVBTFRFWFRfREVDT0RFUikgICAgICAgICs9IHJlYWx0ZXh0ZGVjLm8gYXNzLm8KK09CSlMtJChD T05GSUdfUktBX0RFQ09ERVIpICAgICAgICAgICAgICs9IHJrYS5vCiBPQkpTLSQoQ09ORklHX1JM Ml9ERUNPREVSKSAgICAgICAgICAgICArPSBybDIubwogT0JKUy0kKENPTkZJR19ST1FfREVDT0RF UikgICAgICAgICAgICAgKz0gcm9xdmlkZW9kZWMubyByb3F2aWRlby5vCiBPQkpTLSQoQ09ORklH X1JPUV9FTkNPREVSKSAgICAgICAgICAgICArPSByb3F2aWRlb2VuYy5vIHJvcXZpZGVvLm8gZWxi Zy5vCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FsbGNvZGVjcy5jIGIvbGliYXZjb2RlYy9hbGxj b2RlY3MuYwppbmRleCBiODBiNjk4M2U5Li5lNTkzYWQxOWFmIDEwMDY0NAotLS0gYS9saWJhdmNv ZGVjL2FsbGNvZGVjcy5jCisrKyBiL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMKQEAgLTI4Nyw2ICsy ODcsNyBAQCBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9yMjEwX2RlY29kZXI7CiBleHRlcm4gY29u c3QgRkZDb2RlYyBmZl9yYXNjX2RlY29kZXI7CiBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9yYXd2 aWRlb19lbmNvZGVyOwogZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfcmF3dmlkZW9fZGVjb2RlcjsK K2V4dGVybiBjb25zdCBGRkNvZGVjIGZmX3JrYV9kZWNvZGVyOwogZXh0ZXJuIGNvbnN0IEZGQ29k ZWMgZmZfcmwyX2RlY29kZXI7CiBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9yb3FfZW5jb2RlcjsK IGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX3JvcV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvbGliYXZj b2RlYy9jb2RlY19kZXNjLmMgYi9saWJhdmNvZGVjL2NvZGVjX2Rlc2MuYwppbmRleCA1N2QwZjk4 MjExLi4xOTlmNjJkZjE1IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2NvZGVjX2Rlc2MuYworKysg Yi9saWJhdmNvZGVjL2NvZGVjX2Rlc2MuYwpAQCAtMzM2MCw2ICszMzYwLDEzIEBAIHN0YXRpYyBj b25zdCBBVkNvZGVjRGVzY3JpcHRvciBjb2RlY19kZXNjcmlwdG9yc1tdID0gewogICAgICAgICAu bG9uZ19uYW1lID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIldhdmVmb3JtIEFyY2hpdmVyIiksCiAg ICAgICAgIC5wcm9wcyAgICAgPSBBVl9DT0RFQ19QUk9QX0lOVFJBX09OTFkgfCBBVl9DT0RFQ19Q Uk9QX0xPU1NMRVNTLAogICAgIH0sCisgICAgeworICAgICAgICAuaWQgICAgICAgID0gQVZfQ09E RUNfSURfUktBLAorICAgICAgICAudHlwZSAgICAgID0gQVZNRURJQV9UWVBFX0FVRElPLAorICAg ICAgICAubmFtZSAgICAgID0gInJrYSIsCisgICAgICAgIC5sb25nX25hbWUgPSBOVUxMX0lGX0NP TkZJR19TTUFMTCgiUktBIChSSyBBdWRpbykiKSwKKyAgICAgICAgLnByb3BzICAgICA9IEFWX0NP REVDX1BST1BfSU5UUkFfT05MWSB8IEFWX0NPREVDX1BST1BfTE9TU1kgfCBBVl9DT0RFQ19QUk9Q X0xPU1NMRVNTLAorICAgIH0sCiAKICAgICAvKiBzdWJ0aXRsZSBjb2RlY3MgKi8KICAgICB7CmRp ZmYgLS1naXQgYS9saWJhdmNvZGVjL2NvZGVjX2lkLmggYi9saWJhdmNvZGVjL2NvZGVjX2lkLmgK aW5kZXggYWQxMTMxYjQ2NC4uODlhNGEwY2I4OSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9jb2Rl Y19pZC5oCisrKyBiL2xpYmF2Y29kZWMvY29kZWNfaWQuaApAQCAtNTM3LDYgKzUzNyw3IEBAIGVu dW0gQVZDb2RlY0lEIHsKICAgICBBVl9DT0RFQ19JRF9BUEFDLAogICAgIEFWX0NPREVDX0lEX0ZU UiwKICAgICBBVl9DT0RFQ19JRF9XQVZBUkMsCisgICAgQVZfQ09ERUNfSURfUktBLAogCiAgICAg Lyogc3VidGl0bGUgY29kZWNzICovCiAgICAgQVZfQ09ERUNfSURfRklSU1RfU1VCVElUTEUgPSAw eDE3MDAwLCAgICAgICAgICAvLy88IEEgZHVtbXkgSUQgcG9pbnRpbmcgYXQgdGhlIHN0YXJ0IG9m IHN1YnRpdGxlIGNvZGVjcy4KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvcmthLmMgYi9saWJhdmNv ZGVjL3JrYS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmQ5MTYyMjc0 ODMKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmNvZGVjL3JrYS5jCkBAIC0wLDAgKzEsOTk5IEBA CisvKgorICogUktBIGRlY29kZXIKKyAqIENvcHlyaWdodCAoYykgMjAyMyBQYXVsIEIgTWFob2wK KyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy CisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj CisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo IEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2luY2x1ZGUgImxpYmF2 dXRpbC9jaGFubmVsX2xheW91dC5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRyZWFkd3JpdGUu aCIKKworI2luY2x1ZGUgImF2Y29kZWMuaCIKKyNpbmNsdWRlICJjb2RlY19pbnRlcm5hbC5oIgor I2luY2x1ZGUgImJ5dGVzdHJlYW0uaCIKKyNpbmNsdWRlICJkZWNvZGUuaCIKKwordHlwZWRlZiBz dHJ1Y3QgQUNvZGVyIHsKKyAgICBHZXRCeXRlQ29udGV4dCBnYjsKKyAgICB1aW50MzJfdCBsb3cs IGhpZ2g7CisgICAgdWludDMyX3QgdmFsdWU7Cit9IEFDb2RlcjsKKwordHlwZWRlZiBzdHJ1Y3Qg RmlsdENvZWZmcyB7CisgICAgaW50MzJfdCBjb2VmZnNbMjU3XTsKKyAgICB1bnNpZ25lZCBzaXpl OworfSBGaWx0Q29lZmZzOworCit0eXBlZGVmIHN0cnVjdCBNb2RlbDY0IHsKKyAgICB1aW50MzJf dCB6ZXJvWzJdOworICAgIHVpbnQzMl90IHNpZ25bMl07CisgICAgdW5zaWduZWQgc2l6ZTsKKyAg ICBpbnQgYml0czsKKworICAgIHVpbnQxNl90IHZhbDRbNjVdOworICAgIHVpbnQxNl90IHZhbDFb NjVdOworfSBNb2RlbDY0OworCit0eXBlZGVmIHN0cnVjdCBBZGFwdGl2ZU1vZGVsIHsKKyAgICBp bnQgbGFzdDsKKyAgICBpbnQgdG90YWw7CisgICAgaW50IGJ1Zl9zaXplOworICAgIGludDE2X3Qg c3VtOworICAgIHVpbnQxNl90IGFwcm9iMDsKKyAgICB1aW50MTZfdCBhcHJvYjE7CisgICAgdWlu dDE2X3QgKnByb2JbMl07Cit9IEFkYXB0aXZlTW9kZWw7CisKK3R5cGVkZWYgc3RydWN0IENoQ29u dGV4dCB7CisgICAgaW50IGNtb2RlOworICAgIGludCBjbW9kZTI7CisgICAgaW50IGxhc3RfbmJf ZGVjb2RlZDsKKyAgICB1bnNpZ25lZCBzcmF0ZV9wYWQ7CisgICAgdW5zaWduZWQgcG9zX2lkeDsK KworICAgIEFkYXB0aXZlTW9kZWwgKmZpbHRfc2l6ZTsKKyAgICBBZGFwdGl2ZU1vZGVsICpmaWx0 X2JpdHM7CisKKyAgICBpbnQgKmJwcm9iMDsKKyAgICBpbnQgKmJwcm9iMTsKKworICAgIEFkYXB0 aXZlTW9kZWwgcG9zaXRpb247CisgICAgQWRhcHRpdmVNb2RlbCBmc2hpZnQ7CisgICAgQWRhcHRp dmVNb2RlbCBuYl9zZWdtZW50czsKKyAgICBBZGFwdGl2ZU1vZGVsIGNvZWZmX2JpdHNbMTFdOwor CisgICAgTW9kZWw2NCBtZGw2NFs0XVsxMV07CisKKyAgICBpbnQzMl90IGJ1ZjBbMTIwMDFdOwor ICAgIGludDMyX3QgYnVmMVsxMjAwMV07Cit9IENoQ29udGV4dDsKKwordHlwZWRlZiBzdHJ1Y3Qg UktBQ29udGV4dCB7CisgICAgQVZDbGFzcyAqY2xhc3M7CisKKyAgICBBQ29kZXIgYWM7CisgICAg Q2hDb250ZXh0IGNoWzJdOworCisgICAgaW50IGJwczsKKyAgICBpbnQgYWxpZ247CisgICAgaW50 IGNoYW5uZWxzOworICAgIGludCBmcmFtZV9zYW1wbGVzOworICAgIGludCBsYXN0X25iX3NhbXBs ZXM7CisgICAgdWludDMyX3QgdG90YWxfbmJfc2FtcGxlczsKKyAgICB1aW50MzJfdCBzYW1wbGVz X2xlZnQ7CisKKyAgICBpbnQgYnByb2IwWzI1N107CisgICAgaW50IGJwcm9iMVsyNTddOworCisg ICAgQWRhcHRpdmVNb2RlbCBmaWx0X3NpemU7CisgICAgQWRhcHRpdmVNb2RlbCBmaWx0X2JpdHM7 Cit9IFJLQUNvbnRleHQ7CisKK3N0YXRpYyBpbnQgYWRhcHRpdmVfbW9kZWxfaW5pdChBZGFwdGl2 ZU1vZGVsICphbSwgaW50IGJ1Zl9zaXplKQoreworICAgIGFtLT5idWZfc2l6ZSA9IGJ1Zl9zaXpl OworICAgIGFtLT5zdW0gPSAyMDAwOworICAgIGFtLT5hcHJvYjAgPSAwOworICAgIGFtLT5hcHJv YjEgPSAwOworICAgIGFtLT50b3RhbCA9IDA7CisKKyAgICBpZiAoIWFtLT5wcm9iWzBdKQorICAg ICAgICBhbS0+cHJvYlswXSA9IGF2X21hbGxvY19hcnJheShidWZfc2l6ZSArIDUsIHNpemVvZigq YW0tPnByb2JbMF0pKTsKKyAgICBpZiAoIWFtLT5wcm9iWzFdKQorICAgICAgICBhbS0+cHJvYlsx XSA9IGF2X21hbGxvY19hcnJheShidWZfc2l6ZSArIDUsIHNpemVvZigqYW0tPnByb2JbMV0pKTsK KworICAgIGlmICghYW0tPnByb2JbMF0gfHwgIWFtLT5wcm9iWzFdKQorICAgICAgICByZXR1cm4g QVZFUlJPUihFTk9NRU0pOworICAgIG1lbXNldChhbS0+cHJvYlswXSwgMCwgKGJ1Zl9zaXplICsg NSkgKiBzaXplb2YoKmFtLT5wcm9iWzBdKSk7CisgICAgbWVtc2V0KGFtLT5wcm9iWzFdLCAwLCAo YnVmX3NpemUgKyA1KSAqIHNpemVvZigqYW0tPnByb2JbMV0pKTsKKyAgICByZXR1cm4gMDsKK30K Kworc3RhdGljIHZvaWQgYWRhcHRpdmVfbW9kZWxfZnJlZShBZGFwdGl2ZU1vZGVsICphbSkKK3sK KyAgICBhdl9mcmVlcCgmYW0tPnByb2JbMF0pOworICAgIGF2X2ZyZWVwKCZhbS0+cHJvYlsxXSk7 Cit9CisKK3N0YXRpYyBhdl9jb2xkIGludCBya2FfZGVjb2RlX2luaXQoQVZDb2RlY0NvbnRleHQg KmF2Y3R4KQoreworICAgIFJLQUNvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOworICAgIGlu dCBjbW9kZTsKKworICAgIGlmIChhdmN0eC0+ZXh0cmFkYXRhX3NpemUgPCAxNikKKyAgICAgICAg cmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisKKyAgICBzLT5icHMgPSBhdmN0eC0+Yml0c19w ZXJfcmF3X3NhbXBsZSA9IGF2Y3R4LT5leHRyYWRhdGFbMTNdOworCisgICAgc3dpdGNoIChzLT5i cHMpIHsKKyAgICBjYXNlIDg6CisgICAgICAgIGF2Y3R4LT5zYW1wbGVfZm10ID0gQVZfU0FNUExF X0ZNVF9VOFA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTY6CisgICAgICAgIGF2Y3R4LT5z YW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9TMTZQOworICAgICAgICBicmVhazsKKyAgICBkZWZh dWx0OgorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICB9CisKKyAgICBz LT5jaGFubmVscyA9IGF2Y3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHM7CisgICAgaWYgKHMtPmNo YW5uZWxzIDwgMSB8fCBzLT5jaGFubmVscyA+IDIpCisgICAgICAgIHJldHVybiBBVkVSUk9SX0lO VkFMSUREQVRBOworCisgICAgcy0+YWxpZ24gPSAocy0+Y2hhbm5lbHMgKiAoYXZjdHgtPmJpdHNf cGVyX3Jhd19zYW1wbGUgPj4gMykpOworICAgIHMtPnNhbXBsZXNfbGVmdCA9IHMtPnRvdGFsX25i X3NhbXBsZXMgPSAoQVZfUkwzMihhdmN0eC0+ZXh0cmFkYXRhICsgNCkpIC8gcy0+YWxpZ247Cisg ICAgcy0+ZnJhbWVfc2FtcGxlcyA9IDEzMTA3MiAvIHMtPmFsaWduOworICAgIHMtPmxhc3RfbmJf c2FtcGxlcyA9IHMtPnRvdGFsX25iX3NhbXBsZXMgJSBzLT5mcmFtZV9zYW1wbGVzOworCisgICAg Y21vZGUgPSBhdmN0eC0+ZXh0cmFkYXRhWzE0XSAmIDB4ZjsKKyAgICBpZiAoKGF2Y3R4LT5leHRy YWRhdGFbMTVdICYgNCkgIT0gMCkKKyAgICAgICAgY21vZGUgPSAtY21vZGU7CisKKyAgICBzLT5j aFswXS5jbW9kZSA9IHMtPmNoWzFdLmNtb2RlID0gY21vZGU7CisgICAgcy0+Y2hbMF0uY21vZGUy ID0gLXMtPmNoWzBdLmNtb2RlOworICAgIHMtPmNoWzFdLmNtb2RlMiA9IC1zLT5jaFsxXS5jbW9k ZTsKKyAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgImNtb2RlOiAlZFxuIiwgY21vZGUp OworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIG1vZGVsNjRfaW5pdChNb2RlbDY0 ICptLCB1bnNpZ25lZCBiaXRzKQoreworICAgIHVuc2lnbmVkIHg7CisKKyAgICBtLT5iaXRzID0g Yml0czsKKyAgICBtLT5zaXplID0gNjQ7CisgICAgbS0+emVyb1swXSA9IDE7CisKKyAgICB4ID0g KDEgPDwgKGJpdHMgPj4gMSkpICsgMzsKKyAgICB4ID0gRkZNSU4oeCwgMjApOworCisgICAgbS0+ emVyb1sxXSA9IHg7CisgICAgbS0+c2lnblswXSA9IDE7CisgICAgbS0+c2lnblsxXSA9IDE7CisK KyAgICBmb3IgKGludCBpID0gMDsgaSA8IEZGX0FSUkFZX0VMRU1TKG0tPnZhbDQpOyBpKyspIHsK KyAgICAgICAgbS0+dmFsNFtpXSA9IDQ7CisgICAgICAgIG0tPnZhbDFbaV0gPSAxOworICAgIH0K K30KKworc3RhdGljIGludCBjaGN0eF9pbml0KFJLQUNvbnRleHQgKnMsIENoQ29udGV4dCAqYywK KyAgICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGUsIGludCBicHMpCit7CisgICAg aW50IHJldDsKKworICAgIG1lbXNldChjLT5idWYwLCAwLCBzaXplb2YoYy0+YnVmMCkpOworICAg IG1lbXNldChjLT5idWYxLCAwLCBzaXplb2YoYy0+YnVmMSkpOworCisgICAgYy0+ZmlsdF9zaXpl ID0gJnMtPmZpbHRfc2l6ZTsKKyAgICBjLT5maWx0X2JpdHMgPSAmcy0+ZmlsdF9iaXRzOworCisg ICAgYy0+YnByb2IwID0gcy0+YnByb2IwOworICAgIGMtPmJwcm9iMSA9IHMtPmJwcm9iMTsKKwor ICAgIGMtPnNyYXRlX3BhZCA9IChzYW1wbGVfcmF0ZSA8PCAxMykgLyA0NDEwMCAmIDB4RkZGRkZG RkNVOworICAgIGMtPnBvc19pZHggPSAxOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBGRl9B UlJBWV9FTEVNUyhzLT5icHJvYjApOyBpKyspCisgICAgICAgIGMtPmJwcm9iMFtpXSA9IGMtPmJw cm9iMVtpXSA9IDE7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDExOyBpKyspIHsKKyAgICAg ICAgcmV0ID0gYWRhcHRpdmVfbW9kZWxfaW5pdCgmYy0+Y29lZmZfYml0c1tpXSwgMzIpOworICAg ICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisKKyAgICAgICAgbW9k ZWw2NF9pbml0KCZjLT5tZGw2NFswXVtpXSwgaSk7CisgICAgICAgIG1vZGVsNjRfaW5pdCgmYy0+ bWRsNjRbMV1baV0sIGkpOworICAgICAgICBtb2RlbDY0X2luaXQoJmMtPm1kbDY0WzJdW2ldLCBp KzEpOworICAgICAgICBtb2RlbDY0X2luaXQoJmMtPm1kbDY0WzNdW2ldLCBpKzEpOworICAgIH0K KworICAgIHJldCA9IGFkYXB0aXZlX21vZGVsX2luaXQoYy0+ZmlsdF9zaXplLCAyNTYpOworICAg IGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworICAgIHJldCA9IGFkYXB0aXZlX21v ZGVsX2luaXQoYy0+ZmlsdF9iaXRzLCAxNik7CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIHJl dHVybiByZXQ7CisgICAgcmV0ID0gYWRhcHRpdmVfbW9kZWxfaW5pdCgmYy0+cG9zaXRpb24sIDE2 KTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICByZXQgPSBhZGFw dGl2ZV9tb2RlbF9pbml0KCZjLT5uYl9zZWdtZW50cywgOCk7CisgICAgaWYgKHJldCA8IDApCisg ICAgICAgIHJldHVybiByZXQ7CisgICAgcmV0dXJuIGFkYXB0aXZlX21vZGVsX2luaXQoJmMtPmZz aGlmdCwgMzIpOworfQorCitzdGF0aWMgdm9pZCBpbml0X2Fjb2RlcihBQ29kZXIgKmFjKQorewor ICAgIGFjLT5sb3cgPSAweDA7CisgICAgYWMtPmhpZ2ggPSAweGZmZmZmZmZmOworICAgIGFjLT52 YWx1ZSA9IGJ5dGVzdHJlYW0yX2dldF9iZTMyKCZhYy0+Z2IpOworfQorCitzdGF0aWMgaW50IGFj X2RlY29kZV9ib29sKEFDb2RlciAqYWMsIGludCBmcmVxMSwgaW50IGZyZXEyKQoreworICAgIHVu c2lnbmVkIGhlbHAsIGFkZCwgaGlnaDsKKyAgICBpbnQgdmFsdWUsIGxvdzsKKworICAgIGxvdyA9 IGFjLT5sb3c7CisgICAgaGVscCA9IGFjLT5oaWdoIC8gKHVuc2lnbmVkIGludCkoZnJlcTIgKyBm cmVxMSk7CisgICAgdmFsdWUgPSBhYy0+dmFsdWU7CisgICAgYWRkID0gZnJlcTEgKiBoZWxwOwor ICAgIGFjLT5oaWdoID0gaGVscDsKKworICAgIGlmICh2YWx1ZSAtIGxvdyA+PSBhZGQpIHsKKyAg ICAgICAgYWMtPmxvdyA9IGxvdyA9IGFkZCArIGxvdzsKKyAgICAgICAgYWMtPmhpZ2ggPSBoaWdo ID0gZnJlcTIgKiBoZWxwOworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgaWYgKChs b3cgXiAoaGlnaCArIGxvdykpID4gMHhGRkZGRkYpIHsKKyAgICAgICAgICAgICAgICBpZiAoaGln aCA+IDB4RkZGRikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAg ICAgYWMtPmhpZ2ggPSAodWludDE2X3QpLShpbnQxNl90KWxvdzsKKyAgICAgICAgICAgIH0KKwor ICAgICAgICAgICAgaWYgKGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KCZhYy0+Z2IpIDw9IDAp CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBhYy0+dmFsdWUgPSBieXRlc3Ry ZWFtMl9nZXRfYnl0ZXUoJmFjLT5nYikgfCAoYWMtPnZhbHVlIDw8IDgpOworICAgICAgICAgICAg YWMtPmhpZ2ggPSBoaWdoID0gYWMtPmhpZ2ggPDwgODsKKyAgICAgICAgICAgIGFjLT5sb3cgPSBs b3cgPSBhYy0+bG93IDw8IDg7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0K KworICAgIGFjLT5oaWdoID0gYWRkOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGlmICgobG93 IF4gKGFkZCArIGxvdykpID4gMHhGRkZGRkYpIHsKKyAgICAgICAgICAgIGlmIChhZGQgPiAweEZG RkYpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBhYy0+aGlnaCA9ICh1 aW50MTZfdCktKGludDE2X3QpbG93OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJ5dGVzdHJl YW0yX2dldF9ieXRlc19sZWZ0KCZhYy0+Z2IpIDw9IDApCisgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgYWMtPnZhbHVlID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KCZhYy0+Z2IpIHwgKGFjLT52 YWx1ZSA8PCA4KTsKKyAgICAgICAgYWMtPmhpZ2ggPSBhZGQgPSBhYy0+aGlnaCA8PCA4OworICAg ICAgICBhYy0+bG93ID0gbG93ID0gYWMtPmxvdyA8PCA4OworICAgIH0KKyAgICByZXR1cm4gLTE7 Cit9CisKK3N0YXRpYyBpbnQgZGVjb2RlX2Jvb2woQUNvZGVyICphYywgQ2hDb250ZXh0ICpjLCBp bnQgaWR4KQoreworICAgIGludCB4LCBiOworCisgICAgeCA9IGMtPmJwcm9iMFtpZHhdOworICAg IGlmICh4ICsgYy0+YnByb2IxW2lkeF0gPiA0MDk2KSB7CisgICAgICAgIGMtPmJwcm9iMFtpZHhd ID0gKHggPj4gMSkgKyAxOworICAgICAgICBjLT5icHJvYjFbaWR4XSA9IChjLT5icHJvYjFbaWR4 XSA+PiAxKSArIDE7CisgICAgfQorCisgICAgYiA9IGFjX2RlY29kZV9ib29sKGFjLCBjLT5icHJv YjBbaWR4XSwgYy0+YnByb2IxW2lkeF0pOworICAgIGlmIChiID09IDEpIHsKKyAgICAgICAgYy0+ YnByb2IxW2lkeF0rKzsKKyAgICB9IGVsc2UgaWYgKGIgPT0gMCkgeworICAgICAgICBjLT5icHJv YjBbaWR4XSsrOworICAgIH0KKworICAgIHJldHVybiBiOworfQorCitzdGF0aWMgaW50IGFjX2dl dF9mcmVxKEFDb2RlciAqYWMsIHVuc2lnbmVkIGZyZXEsIGludCAqcmVzdWx0KQoreworICAgIHVp bnQzMl90IG5ld19oaWdoOworCisgICAgaWYgKGZyZXEgPT0gMCkKKyAgICAgICAgcmV0dXJuIC0x OworCisgICAgbmV3X2hpZ2ggPSBhYy0+aGlnaCAvIGZyZXE7CisgICAgYWMtPmhpZ2ggPSBuZXdf aGlnaDsKKworICAgIGlmIChuZXdfaGlnaCA9PSAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAg ICAqcmVzdWx0ID0gKGFjLT52YWx1ZSAtIGFjLT5sb3cpIC8gbmV3X2hpZ2g7CisKKyAgICByZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBhY191cGRhdGUoQUNvZGVyICphYywgaW50IGZyZXEsIGlu dCBtdWwpCit7CisgICAgdWludDMyX3QgbG93LCBoaWdoOworCisgICAgbG93ID0gYWMtPmxvdyA9 IGFjLT5oaWdoICogZnJlcSArIGFjLT5sb3c7CisgICAgaGlnaCA9IGFjLT5oaWdoID0gYWMtPmhp Z2ggKiBtdWw7CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBpZiAoKChoaWdoICsgbG93KSBe IGxvdykgPiAweGZmZmZmZikgeworICAgICAgICAgICAgaWYgKGhpZ2ggPiAweGZmZmYpCisgICAg ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBhYy0+aGlnaCA9ICgtKGludDE2X3Qp bG93KSAmIDB4ZmZmZjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChieXRlc3RyZWFtMl9nZXRf Ynl0ZXNfbGVmdCgmYWMtPmdiKSA8PSAwKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg YWMtPnZhbHVlID0gKGFjLT52YWx1ZSA8PCA4KSB8IGJ5dGVzdHJlYW0yX2dldF9ieXRldSgmYWMt PmdiKTsKKyAgICAgICAgbG93ID0gYWMtPmxvdyA9IGFjLT5sb3cgPDwgODsKKyAgICAgICAgaGln aCA9IGFjLT5oaWdoID0gYWMtPmhpZ2ggPDwgODsKKyAgICB9CisKKyAgICByZXR1cm4gLTE7Cit9 CisKK3N0YXRpYyB2b2lkIHVwZGF0ZV9jaF9zdWJvYmooQWRhcHRpdmVNb2RlbCAqYW0pCit7Cisg ICAgaW50IGlkeDIsIGlkeCA9IGFtLT5idWZfc2l6ZSAtIDE7CisKKyAgICBpZiAoaWR4ID49IDAp IHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgdWludDE2X3QgKnByb2IgPSBhbS0+cHJvYlsw XTsKKyAgICAgICAgICAgIGludCBwcm9iX2lkeCA9IHByb2JbaWR4XTsKKyAgICAgICAgICAgIGlu dCBkaWZmLCBsZWZ0OworCisgICAgICAgICAgICBpZHgyID0gaWR4IC0gMTsKKyAgICAgICAgICAg IGlmIChpZHggPiAwKSB7CisgICAgICAgICAgICAgICAgaW50IGlkeDMgPSBpZHggLSAxOworCisg ICAgICAgICAgICAgICAgaWYgKChpZHgyICYgaWR4KSAhPSBpZHgyKSB7CisgICAgICAgICAgICAg ICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2JfaWR4IC09IHByb2JbaWR4 M107CisgICAgICAgICAgICAgICAgICAgICAgICBpZHgzICY9IGlkeDMgLSAxOworICAgICAgICAg ICAgICAgICAgICB9IHdoaWxlICgoaWR4MiAmIGlkeCkgIT0gaWR4Myk7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkaWZmID0gKChwcm9iX2lkeCA+IDAp IC0gcHJvYl9pZHgpID4+IDE7CisgICAgICAgICAgICBsZWZ0ID0gaWR4OworICAgICAgICAgICAg YW0tPmFwcm9iMCArPSBkaWZmOworICAgICAgICAgICAgaWYgKGlkeCA8PSAwKSB7CisgICAgICAg ICAgICAgICAgYW0tPnByb2JbMF1bMF0gKz0gZGlmZjsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICBhbS0+cHJvYlswXVtsZWZ0 XSArPSBkaWZmOworICAgICAgICAgICAgICAgICAgICBsZWZ0ICs9IChsZWZ0ICYgLWxlZnQpOwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3aGlsZSAobGVmdCA8IGFtLT5idWZf c2l6ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZHgtLTsKKyAgICAgICAgfSB3aGls ZSAoaWR4MiA+PSAwKTsKKyAgICB9CisKKyAgICBpZiAoYW0tPnN1bSA8IDgwMDApCisgICAgICAg IGFtLT5zdW0gKz0gMjAwOworCisgICAgYW0tPmFwcm9iMSA9IChhbS0+YXByb2IxICsgMSkgPj4g MTsKK30KKworc3RhdGljIGludCBhbWRsX2RlY29kZV9pbnQoQWRhcHRpdmVNb2RlbCAqYW0sIEFD b2RlciAqYWMsIHVuc2lnbmVkICpkc3QsIHVuc2lnbmVkIHNpemUpCit7CisgICAgdW5zaWduZWQg aW50IGZyZXE7CisgICAgaW50IHZhbF8xOworICAgIGludCB2NzsKKyAgICBpbnQgdjg7CisgICAg dWludDE2X3Qgdjk7CisgICAgaW50IHYxMDsKKyAgICB1aW50MTZfdCB2MTE7CisgICAgdWludDE2 X3QgKnYxMjsKKyAgICBpbnQgdjEzOworICAgIGludCB2MTQ7CisgICAgaW50IGs7CisgICAgaW50 IHYxNzsKKyAgICB1bnNpZ25lZCB2MTg7CisgICAgaW50IHZhbDsKKyAgICBpbnQgdjI0OworICAg IGludCBmcmVxYTsKKyAgICB1aW50MTZfdCB2Mjc7CisgICAgdWludDE2X3QgajsKKyAgICB1aW50 MTZfdCB2Mjk7CisKKyAgICB2YWxfMSA9IEZGTUlOKHNpemUsIGFtLT5idWZfc2l6ZSAtIDEpOwor CisgICAgaWYgKGFtLT5hcHJvYjAgPj0gYW0tPnN1bSkKKyAgICAgICAgdXBkYXRlX2NoX3N1Ym9i aihhbSk7CisKKyAgICBpZiAoYW0tPmFwcm9iMSAmJiAoYW0tPnRvdGFsID09IGFtLT5idWZfc2l6 ZSB8fAorICAgICAgICAgICAgICAgICAgICAgICBhY19kZWNvZGVfYm9vbChhYywgYW0tPmFwcm9i MCwgYW0tPmFwcm9iMSkgPT0gMCkpIHsKKyAgICAgICAgaWYgKGFtLT50b3RhbCA8PSAxKSB7Cisg ICAgICAgICAgICBkc3RbMF0gPSBhbS0+bGFzdDsKKyAgICAgICAgICAgIHZhbCA9IGRzdFswXTsK KyAgICAgICAgICAgIGFtLT5hcHJvYjArKzsKKyAgICAgICAgICAgIGlmICh2YWwgPD0gMCkgewor ICAgICAgICAgICAgICAgIGFtLT5wcm9iWzBdWzBdKys7CisgICAgICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgYW0tPnByb2JbMF1bdmFs XSsrOworICAgICAgICAgICAgICAgICAgICB2YWwgKz0gKHZhbCAmIC12YWwpOworICAgICAgICAg ICAgICAgIH0gd2hpbGUgKHZhbCA8IGFtLT5idWZfc2l6ZSk7CisgICAgICAgICAgICB9CisgICAg ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsXzEgPT0gYW0tPmJ1 Zl9zaXplIC0gMSkgeworICAgICAgICAgICAgZnJlcSA9IGFtLT5hcHJvYjA7CisgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICB1bnNpZ25lZCBpID0gYW0tPnByb2JbMF1bMF07CisKKyAgICAg ICAgICAgIGZvciAoaW50IGogPSB2YWxfMTsgaiA+IDA7IGogJj0gKGogLSAxKSApCisgICAgICAg ICAgICAgICAgaSArPSBhbS0+cHJvYlswXVtqXTsKKyAgICAgICAgICAgIGZyZXEgPSBpOworICAg ICAgICB9CisgICAgICAgIHYyNCA9IDA7CisgICAgICAgIGFjX2dldF9mcmVxKGFjLCBmcmVxLCAm djcpOworICAgICAgICB2OCA9IGFtLT5idWZfc2l6ZSA+PiAxOworICAgICAgICB2OSA9IGFtLT5w cm9iWzBdWzBdOworICAgICAgICBpZiAodjcgPj0gdjkpIHsKKyAgICAgICAgICAgIGZvciAoaiA9 IHY3IC0gdjk7IHY4OyB2OCA+Pj0gMSkgeworICAgICAgICAgICAgICAgIHYxMSA9IGFtLT5wcm9i WzBdW3Y4ICsgdjI0XTsKKyAgICAgICAgICAgICAgICBpZiAoaiA+PSB2MTEpIHsKKyAgICAgICAg ICAgICAgICAgICAgdjI0ICs9IHY4OworICAgICAgICAgICAgICAgICAgICBqIC09IHYxMTsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2MjcgPSB2NyAtIGo7 CisgICAgICAgICAgICB2MTAgPSB2MjQgKyAxOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgdjI3ID0gMDsKKyAgICAgICAgICAgIHYxMCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZHN0 WzBdID0gdjEwOworICAgICAgICB2MTIgPSBhbS0+cHJvYlswXTsKKyAgICAgICAgdjEzID0gdjEy W3YxMF07CisgICAgICAgIGlmICh2MTAgPiAwKSB7CisgICAgICAgICAgICB2MTQgPSB2MTAgJiAo djEwIC0gMSk7CisgICAgICAgICAgICBmb3IgKGsgPSB2MTAgLSAxOyB2MTQgIT0gazsgayAmPSBr IC0gMSkKKyAgICAgICAgICAgICAgICB2MTMgLT0gdjEyW2tdOworICAgICAgICB9CisgICAgICAg IGFjX3VwZGF0ZShhYywgdjI3LCB2MTMpOworICAgICAgICB2YWwgPSBkc3RbMF07CisgICAgICAg IGFtLT5hcHJvYjArKzsKKyAgICAgICAgaWYgKHZhbCA8PSAwKSB7CisgICAgICAgICAgICBhbS0+ cHJvYlswXVswXSsrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZG8geworICAgICAg ICAgICAgICAgIGFtLT5wcm9iWzBdW3ZhbF0rKzsKKyAgICAgICAgICAgICAgICB2YWwgKz0gKHZh bCAmIC12YWwpOworICAgICAgICAgICAgfSB3aGlsZSAodmFsIDwgYW0tPmJ1Zl9zaXplKTsKKyAg ICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgdjE3ID0gYW0tPmJ1Zl9zaXpl OworICAgIGFtLT5hcHJvYjErKzsKKyAgICBpZiAodmFsXzEgPT0gdjE3IC0gMSkgeworICAgICAg ICBhY19nZXRfZnJlcShhYywgdjE3IC0gYW0tPnRvdGFsLCAmdjE4KTsKKyAgICB9IGVsc2Ugewor ICAgICAgICBmcmVxYSA9IDE7CisgICAgICAgIGRzdFswXSA9IDA7CisgICAgICAgIGlmICh2YWxf MSA+IDApIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBpZiAoIWFtLT5wcm9i WzFdW2RzdFswXV0pCisgICAgICAgICAgICAgICAgICAgIGZyZXFhKys7CisgICAgICAgICAgICAg ICAgZHN0WzBdKys7CisgICAgICAgICAgICB9IHdoaWxlIChkc3RbMF0gPCB2YWxfMSk7CisgICAg ICAgIH0KKyAgICAgICAgYWNfZ2V0X2ZyZXEoYWMsIGZyZXFhLCAmdjE4KTsKKyAgICB9CisgICAg djI5ID0gMDsKKyAgICBkc3RbMF0gPSAwOworICAgIGlmICh2MTggPiAwICYmIGFtLT5idWZfc2l6 ZSA+IDApIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgdmFsID0gZHN0WzBdOworICAgICAg ICAgICAgaWYgKCFhbS0+cHJvYlsxXVtkc3RbMF1dKQorICAgICAgICAgICAgICAgICsrdjI5Owor ICAgICAgICAgICAgZHN0WzBdID0gdmFsICsgMTsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAo djI5IDwgdjE4ICYmIHZhbCArIDEgPCBhbS0+YnVmX3NpemUpOworICAgIH0KKyAgICBpZiAoYW0t PnByb2JbMV1bZHN0WzBdXSkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICB2YWwgPSBkc3Rb MF0rKzsKKyAgICAgICAgfSB3aGlsZSAodmFsICsgMSA8IGFtLT5idWZfc2l6ZSAmJiBhbS0+cHJv YlsxXVt2YWwgKyAxXSk7CisgICAgfQorICAgIGFjX3VwZGF0ZShhYywgdjI5LCAxKTsKKyAgICBh bS0+cHJvYlsxXVtkc3RbMF1dKys7CisgICAgYW0tPnRvdGFsKys7CisgICAgdmFsID0gZHN0WzBd OworICAgIGFtLT5hcHJvYjArKzsKKyAgICBpZiAodmFsIDw9IDApIHsKKyAgICAgICAgYW0tPnBy b2JbMF1bMF0rKzsKKyAgICB9IGVsc2UgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBhbS0+ cHJvYlswXVt2YWxdKys7CisgICAgICAgICAgICB2YWwgKz0gKHZhbCAmIC12YWwpOworICAgICAg ICB9IHdoaWxlICh2YWwgPCBhbS0+YnVmX3NpemUpOworICAgIH0KKworICAgIGFtLT5sYXN0ID0g ZHN0WzBdOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZGVjb2RlX2ZpbHRfY29l ZmZzKFJLQUNvbnRleHQgKnMsIENoQ29udGV4dCAqY3R4LCBBQ29kZXIgKmFjLCBGaWx0Q29lZmZz ICpkc3QpCit7CisgICAgdW5zaWduZWQgdmFsLCBiaXRzOworICAgIGludCBpZHggPSAwOworCisg ICAgaWYgKGFtZGxfZGVjb2RlX2ludChjdHgtPmZpbHRfc2l6ZSwgYWMsICZkc3QtPnNpemUsIDI1 NikgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoZHN0LT5zaXplID09IDApCisg ICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGFtZGxfZGVjb2RlX2ludChjdHgtPmZpbHRfYml0 cywgYWMsICZiaXRzLCAxMCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBkbyB7Cisg ICAgICAgIGlmICgoKGlkeCA9PSA4KSB8fCAoaWR4ID09IDIwKSkgJiYgKDAgPCBiaXRzKSkKKyAg ICAgICAgICAgIGJpdHMtLTsKKworICAgICAgICBpZiAoYml0cyA+IDEwKQorICAgICAgICAgICAg cmV0dXJuIC0xOworCisgICAgICAgIGlmIChhbWRsX2RlY29kZV9pbnQoJmN0eC0+Y29lZmZfYml0 c1tiaXRzXSwgYWMsICZ2YWwsIDMxKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAg ICAgICAgaWYgKHZhbCA9PSAzMSkgeworICAgICAgICAgICAgYWNfZ2V0X2ZyZXEoYWMsIDY1NTM2 LCAmdmFsKTsKKyAgICAgICAgICAgIGFjX3VwZGF0ZShhYywgdmFsLCAxKTsKKyAgICAgICAgfQor CisgICAgICAgIGlmICh2YWwgPT0gMCkgeworICAgICAgICAgICAgZHN0LT5jb2VmZnNbaWR4Kytd ID0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGZyZXEgPSAwOwor ICAgICAgICAgICAgaW50IHNpZ247CisKKyAgICAgICAgICAgIGlmIChiaXRzID4gMCkgeworICAg ICAgICAgICAgICAgIGFjX2dldF9mcmVxKGFjLCAxIDw8IGJpdHMsICZmcmVxKTsKKyAgICAgICAg ICAgICAgICBhY191cGRhdGUoYWMsIGZyZXEsIDEpOworICAgICAgICAgICAgfQorICAgICAgICAg ICAgZHN0LT5jb2VmZnNbaWR4XSA9IGZyZXEgKyAxICsgKCh2YWwgLSAxVSkgPDwgYml0cyk7Cisg ICAgICAgICAgICBzaWduID0gZGVjb2RlX2Jvb2woYWMsIGN0eCwgaWR4KTsKKyAgICAgICAgICAg IGlmIChzaWduIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBp ZiAoc2lnbiA9PSAxKQorICAgICAgICAgICAgICAgIGRzdC0+Y29lZmZzW2lkeF0gPSAtZHN0LT5j b2VmZnNbaWR4XTsKKyAgICAgICAgICAgIGlkeCsrOworICAgICAgICB9CisgICAgfSB3aGlsZSAo aWR4IDwgZHN0LT5zaXplKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGFjX2Rl Y19iaXQoQUNvZGVyICphYykKK3sKKyAgICB1aW50MzJfdCBoaWdoLCBsb3c7CisKKyAgICBsb3cg PSBhYy0+bG93OworICAgIGFjLT5oaWdoID0gaGlnaCA9IGFjLT5oaWdoID4+IDE7CisgICAgaWYg KGFjLT52YWx1ZSAtIGxvdyA8IGhpZ2gpIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYg KCgoaGlnaCArIGxvdykgXiBsb3cpID4gMHhmZmZmZmYpIHsKKyAgICAgICAgICAgICAgICBpZiAo aGlnaCA+IDB4ZmZmZikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg ICAgICAgYWMtPmhpZ2ggPSAoLShpbnQxNl90KWxvdykgJiAweGZmZmY7CisgICAgICAgICAgICB9 CisKKyAgICAgICAgICAgIGlmIChieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdCgmYWMtPmdiKSA8 PSAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBhYy0+dmFsdWUgPSAo YWMtPnZhbHVlIDw8IDgpIHwgYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KCZhYy0+Z2IpOworICAgICAg ICAgICAgYWMtPmhpZ2ggPSBoaWdoID0gYWMtPmhpZ2ggPDwgODsKKyAgICAgICAgICAgIGFjLT5s b3cgPSBsb3cgPSBhYy0+bG93IDw8IDg7CisgICAgICAgIH0gd2hpbGUgKDEpOworCisgICAgICAg IHJldHVybiAtMTsKKyAgICB9CisgICAgYWMtPmxvdyA9IGxvdyA9IGxvdyArIGhpZ2g7CisgICAg ZG8geworICAgICAgICBpZiAoKChoaWdoICsgbG93KSBeIGxvdykgPiAweGZmZmZmZikgeworICAg ICAgICAgICAgaWYgKGhpZ2ggPiAweGZmZmYpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7Cisg ICAgICAgICAgICBhYy0+aGlnaCA9ICgtKGludDE2X3QpbG93KSAmIDB4ZmZmZjsKKyAgICAgICAg fQorCisgICAgICAgIGlmIChieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdCgmYWMtPmdiKSA8PSAw KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgYWMtPnZhbHVlID0gKGFjLT52YWx1ZSA8 PCA4KSB8IGJ5dGVzdHJlYW0yX2dldF9ieXRldSgmYWMtPmdiKTsKKyAgICAgICAgYWMtPmhpZ2gg PSBoaWdoID0gYWMtPmhpZ2ggPDwgODsKKyAgICAgICAgYWMtPmxvdyA9IGxvdyA9IGFjLT5sb3cg PDwgODsKKyAgICB9IHdoaWxlICgxKTsKKworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIGlu dCBtZGw2NF9kZWNvZGUoQUNvZGVyICphYywgTW9kZWw2NCAqY3R4LCBpbnQgKmRzdCkKK3sKKyAg ICBpbnQgc2lnbiwgaWR4LCBiaXRzOworICAgIHVuc2lnbmVkIHZhbCA9IDA7CisKKyAgICBpZiAo Y3R4LT56ZXJvWzBdICsgY3R4LT56ZXJvWzFdID4gNDAwMCkgeworICAgICAgICBjdHgtPnplcm9b MF0gPSAoY3R4LT56ZXJvWzBdID4+IDEpICsgMTsKKyAgICAgICAgY3R4LT56ZXJvWzFdID0gKGN0 eC0+emVyb1sxXSA+PiAxKSArIDE7CisgICAgfQorICAgIGlmIChjdHgtPnNpZ25bMF0gKyBjdHgt PnNpZ25bMV0gPiA0MDAwKSB7CisgICAgICAgIGN0eC0+c2lnblswXSA9IChjdHgtPnNpZ25bMF0g Pj4gMSkgKyAxOworICAgICAgICBjdHgtPnNpZ25bMV0gPSAoY3R4LT5zaWduWzFdID4+IDEpICsg MTsKKyAgICB9CisgICAgc2lnbiA9IGFjX2RlY29kZV9ib29sKGFjLCBjdHgtPnplcm9bMF0sIGN0 eC0+emVyb1sxXSk7CisgICAgaWYgKHNpZ24gPT0gMCkgeworICAgICAgICBjdHgtPnplcm9bMF0g Kz0gMjsKKyAgICAgICAgZHN0WzBdID0gMDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfSBlbHNl IGlmIChzaWduIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgY3R4LT56ZXJvWzFdICs9 IDI7CisgICAgc2lnbiA9IGFjX2RlY29kZV9ib29sKGFjLCBjdHgtPnNpZ25bMF0sIGN0eC0+c2ln blsxXSk7CisgICAgaWYgKHNpZ24gPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgY3R4LT5z aWduW3NpZ25dKys7CisgICAgYml0cyA9IGN0eC0+Yml0czsKKyAgICBpZiAoYml0cyA+IDApIHsK KyAgICAgICAgaWYgKGJpdHMgPCAxMykgeworICAgICAgICAgICAgYWNfZ2V0X2ZyZXEoYWMsIDEg PDwgYml0cywgJnZhbCk7CisgICAgICAgICAgICBhY191cGRhdGUoYWMsdmFsLDEpOworICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgYWNfZ2V0X2ZyZXEoYWMsIDEgPDwgKGJpdHMgLyAyKSwg JnZhbCk7CisgICAgICAgICAgICBhY191cGRhdGUoYWMsdmFsLDEpOworICAgICAgICAgICAgYWNf Z2V0X2ZyZXEoYWMsMSA8PCAoY3R4LT5iaXRzIC0gKGJpdHMgLyAyKSksICZiaXRzKTsKKyAgICAg ICAgICAgIGFjX3VwZGF0ZShhYyx2YWwsMSk7CisgICAgICAgICAgICB2YWwgPSB2YWwgKyAoYml0 cyA8PCAoYml0cyAvIDIpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBiaXRzID0gY3R4LT5zaXpl OworICAgIGlkeCA9IDA7CisgICAgaWYgKGJpdHMgPj0gMCkgeworICAgICAgICBkbyB7CisgICAg ICAgICAgICB1aW50MTZfdCAqdmFsNCA9IGN0eC0+dmFsNDsKKyAgICAgICAgICAgIGludCBiOwor CisgICAgICAgICAgICBpZiAodmFsNFtpZHhdICsgY3R4LT52YWwxW2lkeF0gPiAyMDAwVSkgewor ICAgICAgICAgICAgICAgIHZhbDRbaWR4XSA9ICh2YWw0W2lkeF0gPj4gMSkgKyAxOworICAgICAg ICAgICAgICAgIGN0eC0+dmFsMVtpZHhdID0gKGN0eC0+dmFsMVtpZHhdID4+IDEpICsgMTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIGIgPSBhY19kZWNvZGVfYm9vbChhYywgY3R4LT52YWw0 W2lkeF0sIGN0eC0+dmFsMVtpZHhdKTsKKyAgICAgICAgICAgIGlmIChiID09IDEpIHsKKyAgICAg ICAgICAgICAgICBjdHgtPnZhbDFbaWR4XSArPSA0OworICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgfSBlbHNlIGlmIChiIDwgMCkgeworICAgICAgICAgICAgICAgIHJldHVybiAt MTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGN0eC0+dmFsNFtpZHhdICs9IDQ7CisgICAg ICAgICAgICBpZHgrKzsKKyAgICAgICAgfSB3aGlsZSAoaWR4IDw9IGN0eC0+c2l6ZSk7CisgICAg ICAgIGJpdHMgPSBjdHgtPnNpemU7CisgICAgICAgIGlmIChpZHggPD0gYml0cykgeworICAgICAg ICAgICAgZHN0WzBdID0gdmFsICsgMSArIChpZHggPDwgY3R4LT5iaXRzKTsKKyAgICAgICAgICAg IGlmIChzaWduKQorICAgICAgICAgICAgICAgIGRzdFswXSA9IC1kc3RbMF07CisgICAgICAgICAg ICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBiaXRzID0gYml0cyArIDE7CisgICAg d2hpbGUgKGFjX2RlY19iaXQoYWMpID09IDApCisgICAgICAgIGJpdHMgPSBiaXRzICsgNjQ7Cisg ICAgYWNfZ2V0X2ZyZXEoYWMsIDY0LCAmaWR4KTsKKyAgICBhY191cGRhdGUoYWMsIGlkeCwgMSk7 CisgICAgaWR4ICs9IGJpdHM7CisgICAgYml0cyA9IHZhbCArIDEgKyAoaWR4IDw8IGN0eC0+Yml0 cyk7CisgICAgZHN0WzBdID0gYml0czsKKyAgICBpZiAoc2lnbikKKyAgICAgICAgZHN0WzBdID0g LWRzdFswXTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgY29uc3QgdWludDhfdCB0YWJb XSA9IHsgMCwgMywgMywgMiwgMiwgMSwgMSwgMSwgMSB9OworCitzdGF0aWMgaW50IGRlY29kZV9m aWx0ZXIoUktBQ29udGV4dCAqcywgQ2hDb250ZXh0ICpjdHgsIEFDb2RlciAqYWMsIGludCBvZmYs IHVuc2lnbmVkIHNpemUpCit7CisgICAgRmlsdENvZWZmcyBmaWx0OworICAgIE1vZGVsNjQgKm1k bDY0OworICAgIGludCBtID0gMCwgc3BsaXQsIHZhbCwgbGFzdF92YWwgPSAwLCByZXQ7CisgICAg dW5zaWduZWQgaWR4ID0gMywgYml0cyA9IDA7CisKKyAgICBpZiAoY3R4LT5jbW9kZSA9PSAwKSB7 CisgICAgICAgIGlmIChhbWRsX2RlY29kZV9pbnQoJmN0eC0+ZnNoaWZ0LCBhYywgJmJpdHMsIDE1 KSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGJpdHMgJj0gMzFVOworICAg IH0KKworICAgIHJldCA9IGRlY29kZV9maWx0X2NvZWZmcyhzLCBjdHgsIGFjLCAmZmlsdCk7Cisg ICAgaWYgKHJldCA8IDApCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICBpZiAoc2l6ZSA8IDUx MikKKyAgICAgICAgc3BsaXQgPSBzaXplIC8gMjsKKyAgICBlbHNlCisgICAgICAgIHNwbGl0ID0g c2l6ZSA+PiA0OworCisgICAgaWYgKHNpemUgPD0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg ICBmb3IgKGludCB4ID0gMDsgeCA8IHNpemU7KSB7CisgICAgICAgIGlmIChhbWRsX2RlY29kZV9p bnQoJmN0eC0+cG9zaXRpb24sIGFjLCAmaWR4LCAxMCkgPCAwKQorICAgICAgICAgICAgcmV0dXJu IC0xOworCisgICAgICAgIGlkeCA9IChjdHgtPnBvc19pZHggKyBpZHgpICUgMTE7CisgICAgICAg IGN0eC0+cG9zX2lkeCA9IGlkeDsKKworICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IHNwbGl0 OyB5KyssIG9mZisrKSB7CisgICAgICAgICAgICBpbnQgbWlkeCwgc2hpZnQgPSBpZHgsICpzcmMs IHN1bSA9IDE2OworCisgICAgICAgICAgICBtaWR4ID0gRkZBQlMobGFzdF92YWwpID4+IHNoaWZ0 OworICAgICAgICAgICAgaWYgKG1pZHggPj0gMTUpIHsKKyAgICAgICAgICAgICAgICBtZGw2NCA9 ICZjdHgtPm1kbDY0WzNdW2lkeF07CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1pZHggPj0gNykg eworICAgICAgICAgICAgICAgIG1kbDY0ID0gJmN0eC0+bWRsNjRbMl1baWR4XTsKKyAgICAgICAg ICAgIH0gZWxzZSBpZiAobWlkeCA+PSA0KSB7CisgICAgICAgICAgICAgICAgbWRsNjQgPSAmY3R4 LT5tZGw2NFsxXVtpZHhdOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBt ZGw2NCA9ICZjdHgtPm1kbDY0WzBdW2lkeF07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy ZXQgPSBtZGw2NF9kZWNvZGUoYWMsIG1kbDY0LCAmdmFsKTsKKyAgICAgICAgICAgIGlmIChyZXQg PCAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGxhc3RfdmFsID0g dmFsOworICAgICAgICAgICAgc3JjID0gJmN0eC0+YnVmMVtvZmYgKyAtMV07CisgICAgICAgICAg ICBmb3IgKGludCBpID0gMDsgaSA8IGZpbHQuc2l6ZSAmJiBpIDwgMTU7IGkrKykKKyAgICAgICAg ICAgICAgICBzdW0gKz0gZmlsdC5jb2VmZnNbaV0gKiBzcmNbLWldOworICAgICAgICAgICAgc3Vt ID0gc3VtICogMjsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxNTsgaSA8IGZpbHQuc2l6ZTsg aSsrKQorICAgICAgICAgICAgICAgIHN1bSArPSBmaWx0LmNvZWZmc1tpXSAqIHNyY1staV07Cisg ICAgICAgICAgICBzdW0gPSBzdW0gPj4gNjsKKyAgICAgICAgICAgIGlmIChjdHgtPmNtb2RlID09 IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoYml0cyA9PSAwKSB7CisgICAgICAgICAgICAgICAg ICAgIGN0eC0+YnVmMVtvZmZdID0gc3VtICsgdmFsOworICAgICAgICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgICAgICAgIGN0eC0+YnVmMVtvZmZdID0gKHZhbCArIChzdW0gPj4gYml0 cykgKiAoMVUgPDwgYml0cykpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICgoKDFVIDw8IGJp dHMpIC0gMVUpICYgY3R4LT5idWYxW29mZiArIC0xXSk7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgIGN0eC0+YnVmMFtvZmZdID0gY3R4LT5idWYxW29mZl0gKyBjdHgtPmJ1ZjBb b2ZmICsgLTFdOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YWwgPSB2 YWwgKiAoMSA8PCBjdHgtPmNtb2RlICYgMHgxZik7CisgICAgICAgICAgICAgICAgc3VtICs9IGN0 eC0+YnVmMFtvZmYgKyAtMV0gKyB2YWw7CisgICAgICAgICAgICAgICAgc3dpdGNoIChzLT5icHMp IHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxNjogc3VtID0gYXZfY2xpcF9pbnQxNihzdW0p OyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAgODogc3VtID0gYXZfY2xpcF9pbnQ4 KHN1bSk7ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY3R4LT5i dWYxW29mZl0gPSBzdW0gLSBjdHgtPmJ1ZjBbb2ZmICsgLTFdOworICAgICAgICAgICAgICAgIGN0 eC0+YnVmMFtvZmZdID0gc3VtOworICAgICAgICAgICAgICAgIG0gKz0gRkZBQlMoY3R4LT5idWYx W29mZl0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChjdHgtPmNtb2Rl MiAhPSAwKSB7CisgICAgICAgICAgICBpbnQgc3VtID0gMDsKKyAgICAgICAgICAgIGZvciAoaW50 IGkgPSAobSA8PCA2KSAvIHNwbGl0OyBpID4gMDsgaSA9IGkgPj4gMSkKKyAgICAgICAgICAgICAg ICBzdW0rKzsKKyAgICAgICAgICAgIHN1bSA9IHN1bSAtIChjdHgtPmNtb2RlMiArIDcpOworICAg ICAgICAgICAgY3R4LT5jbW9kZSA9IEZGTUFYKHN1bSwgdGFiW2N0eC0+Y21vZGUyXSk7CisgICAg ICAgIH0KKworICAgICAgICB4ICs9IHNwbGl0OworICAgIH0KKworICAgIHJldHVybiAwOworfQor CitzdGF0aWMgaW50IGRlY29kZV9zYW1wbGVzKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQUNvZGVy ICphYywgQ2hDb250ZXh0ICpjdHgsIGludCBvZmZzZXQpCit7CisgICAgUktBQ29udGV4dCAqcyA9 IGF2Y3R4LT5wcml2X2RhdGE7CisgICAgaW50IHNlZ21lbnRfc2l6ZSwgc2l6ZSwgb2Zmc2V0Miwg bW9kZSwgcmV0OworCisgICAgcmV0ID0gYW1kbF9kZWNvZGVfaW50KCZjdHgtPm5iX3NlZ21lbnRz LCBhYywgJm1vZGUsIDUpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0Owor CisgICAgaWYgKG1vZGUgPT0gNSkgeworICAgICAgICByZXQgPSBhY19nZXRfZnJlcShhYywgY3R4 LT5zcmF0ZV9wYWQgPj4gMiwgJnNlZ21lbnRfc2l6ZSk7CisgICAgICAgIGlmIChyZXQgPCAwKQor ICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgYWNfdXBkYXRlKGFjLCBzZWdtZW50X3Np emUsIDEpOworICAgICAgICBzZWdtZW50X3NpemUgKj0gNDsKKyAgICAgICAgZGVjb2RlX2ZpbHRl cihzLCBjdHgsIGFjLCBvZmZzZXQsIHNlZ21lbnRfc2l6ZSk7CisgICAgfSBlbHNlIHsKKyAgICAg ICAgc2VnbWVudF9zaXplID0gY3R4LT5zcmF0ZV9wYWQ7CisKKyAgICAgICAgaWYgKG1vZGUpIHsK KyAgICAgICAgICAgIGlmIChtb2RlID4gMikgeworICAgICAgICAgICAgICAgIGRlY29kZV9maWx0 ZXIocywgY3R4LCBhYywgb2Zmc2V0LCBzZWdtZW50X3NpemUgLyA0KTsKKyAgICAgICAgICAgICAg ICBvZmZzZXQyID0gc2VnbWVudF9zaXplIC8gNCArIG9mZnNldDsKKyAgICAgICAgICAgICAgICBk ZWNvZGVfZmlsdGVyKHMsIGN0eCwgYWMsIG9mZnNldDIsIHNlZ21lbnRfc2l6ZSAvIDQpOworICAg ICAgICAgICAgICAgIHNpemUgPSBzZWdtZW50X3NpemUgLyA0ICsgb2Zmc2V0MjsKKyAgICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGVjb2RlX2ZpbHRlcihzLCBjdHgsIGFjLCBv ZmZzZXQsIHNlZ21lbnRfc2l6ZSAvIDIpOworICAgICAgICAgICAgICAgIHNpemUgPSBzZWdtZW50 X3NpemUgLyAyICsgb2Zmc2V0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1vZGUg JiAxKSB7CisgICAgICAgICAgICAgICAgZGVjb2RlX2ZpbHRlcihzLCBjdHgsIGFjLCBzaXplLCBz ZWdtZW50X3NpemUgLyAyKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg ZGVjb2RlX2ZpbHRlcihzLCBjdHgsIGFjLCBzaXplLCBzZWdtZW50X3NpemUgLyA0KTsKKyAgICAg ICAgICAgICAgICBkZWNvZGVfZmlsdGVyKHMsIGN0eCwgYWMsIHNlZ21lbnRfc2l6ZSAvIDQgKyBz aXplLCBzZWdtZW50X3NpemUgLyA0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgIGRlY29kZV9maWx0ZXIocywgY3R4LCBhYywgb2Zmc2V0LCBjdHgtPnNyYXRl X3BhZCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc2VnbWVudF9zaXplOworfQor CitzdGF0aWMgaW50IGRlY29kZV9jaF9zYW1wbGVzKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQ2hD b250ZXh0ICpjKQoreworICAgIFJLQUNvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOworICAg IEFDb2RlciAqYWMgPSAmcy0+YWM7CisgICAgaW50IG5iX2RlY29kZWQgPSAwOworCisgICAgaWYg KGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KCZhYy0+Z2IpIDw9IDApCisgICAgICAgIHJldHVy biAwOworCisgICAgbWVtbW92ZShjLT5idWYwLCAmYy0+YnVmMFtjLT5sYXN0X25iX2RlY29kZWRd LCAyNTYwICogc2l6ZW9mKCpjLT5idWYwKSk7CisgICAgbWVtbW92ZShjLT5idWYxLCAmYy0+YnVm MVtjLT5sYXN0X25iX2RlY29kZWRdLCAyNTYwICogc2l6ZW9mKCpjLT5idWYxKSk7CisKKyAgICBu Yl9kZWNvZGVkID0gZGVjb2RlX3NhbXBsZXMoYXZjdHgsIGFjLCBjLCAyNTYwKTsKKyAgICBpZiAo bmJfZGVjb2RlZCA8IDApCisgICAgICAgIHJldHVybiBuYl9kZWNvZGVkOworICAgIGMtPmxhc3Rf bmJfZGVjb2RlZCA9IG5iX2RlY29kZWQ7CisKKyAgICByZXR1cm4gbmJfZGVjb2RlZDsKK30KKwor c3RhdGljIGludCBya2FfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFt ZSAqZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpnb3RfZnJhbWVfcHRy LCBBVlBhY2tldCAqYXZwa3QpCit7CisgICAgUktBQ29udGV4dCAqcyA9IGF2Y3R4LT5wcml2X2Rh dGE7CisgICAgQUNvZGVyICphYyA9ICZzLT5hYzsKKyAgICBpbnQgcmV0OworCisgICAgYnl0ZXN0 cmVhbTJfaW5pdCgmYWMtPmdiLCBhdnBrdC0+ZGF0YSwgYXZwa3QtPnNpemUpOworICAgIGluaXRf YWNvZGVyKGFjKTsKKworICAgIGZvciAoaW50IGNoID0gMDsgY2ggPCBzLT5jaGFubmVsczsgY2gr KykgeworICAgICAgICByZXQgPSBjaGN0eF9pbml0KHMsICZzLT5jaFtjaF0sIGF2Y3R4LT5zYW1w bGVfcmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhdmN0eC0+Yml0c19wZXJfcmF3X3Nh bXBsZSk7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAg ICB9CisKKyAgICBmcmFtZS0+bmJfc2FtcGxlcyA9IHMtPmZyYW1lX3NhbXBsZXM7CisgICAgaWYg KChyZXQgPSBmZl9nZXRfYnVmZmVyKGF2Y3R4LCBmcmFtZSwgMCkpIDwgMCkKKyAgICAgICAgcmV0 dXJuIHJldDsKKworICAgIGlmIChzLT5jaGFubmVscyA9PSAyKSB7CisgICAgICAgIGludDE2X3Qg KmwxNiA9IChpbnQxNl90ICopZnJhbWUtPmV4dGVuZGVkX2RhdGFbMF07CisgICAgICAgIGludDE2 X3QgKnIxNiA9IChpbnQxNl90ICopZnJhbWUtPmV4dGVuZGVkX2RhdGFbMV07CisKKyAgICAgICAg c3dpdGNoIChhdmN0eC0+c2FtcGxlX2ZtdCkgeworICAgICAgICBjYXNlIEFWX1NBTVBMRV9GTVRf UzE2UDoKKyAgICAgICAgICAgIGZvciAoaW50IG4gPSAwOyBuIDwgZnJhbWUtPm5iX3NhbXBsZXM7 KSB7CisgICAgICAgICAgICAgICAgcmV0ID0gZGVjb2RlX2NoX3NhbXBsZXMoYXZjdHgsICZzLT5j aFswXSk7CisgICAgICAgICAgICAgICAgaWYgKHJldCA9PSAwKSB7CisgICAgICAgICAgICAgICAg ICAgIGZyYW1lLT5uYl9zYW1wbGVzID0gbjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChyZXQgPCAwIHx8IG4gKyByZXQg PiBmcmFtZS0+bmJfc2FtcGxlcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Jf SU5WQUxJRERBVEE7CisKKyAgICAgICAgICAgICAgICByZXQgPSBkZWNvZGVfY2hfc2FtcGxlcyhh dmN0eCwgJnMtPmNoWzFdKTsKKyAgICAgICAgICAgICAgICBpZiAocmV0ID09IDApIHsKKyAgICAg ICAgICAgICAgICAgICAgZnJhbWUtPm5iX3NhbXBsZXMgPSBuOworICAgICAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHJldCA8IDAg fHwgbiArIHJldCA+IGZyYW1lLT5uYl9zYW1wbGVzKQorICAgICAgICAgICAgICAgICAgICByZXR1 cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgcmV0OyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGwgPSBzLT5jaFswXS5i dWYwWzI1NjAgKyBpXTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHIgPSBzLT5jaFsxXS5idWYw WzI1NjAgKyBpXTsKKworICAgICAgICAgICAgICAgICAgICBsMTZbbiArIGldID0gKGwgKiAyICsg ciArIDEpID4+IDE7CisgICAgICAgICAgICAgICAgICAgIHIxNltuICsgaV0gPSAobCAqIDIgLSBy ICsgMSkgPj4gMTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBuICs9IHJl dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor ICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgICAgIH0KKyAgICB9 IGVsc2UgeworICAgICAgICBpbnQxNl90ICptMTYgPSAoaW50MTZfdCAqKWZyYW1lLT5kYXRhWzBd OworCisgICAgICAgIHN3aXRjaCAoYXZjdHgtPnNhbXBsZV9mbXQpIHsKKyAgICAgICAgY2FzZSBB Vl9TQU1QTEVfRk1UX1MxNlA6CisgICAgICAgICAgICBmb3IgKGludCBuID0gMDsgbiA8IGZyYW1l LT5uYl9zYW1wbGVzOykgeworICAgICAgICAgICAgICAgIHJldCA9IGRlY29kZV9jaF9zYW1wbGVz KGF2Y3R4LCAmcy0+Y2hbMF0pOworICAgICAgICAgICAgICAgIGlmIChyZXQgPT0gMCkgeworICAg ICAgICAgICAgICAgICAgICBmcmFtZS0+bmJfc2FtcGxlcyA9IG47CisgICAgICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocmV0IDwg MCB8fCBuICsgcmV0ID4gZnJhbWUtPm5iX3NhbXBsZXMpCisgICAgICAgICAgICAgICAgICAgIHJl dHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCByZXQ7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBpbnQgbSA9IHMtPmNoWzBd LmJ1ZjBbMjU2MCArIGldOworCisgICAgICAgICAgICAgICAgICAgIG0xNltuICsgaV0gPSBtOwor ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG4gKz0gcmV0OworICAgICAgICAg ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy ZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgfQorICAgIH0KKworICAgICpnb3Rf ZnJhbWVfcHRyID0gMTsKKworICAgIHJldHVybiBhdnBrdC0+c2l6ZTsKK30KKworc3RhdGljIGF2 X2NvbGQgaW50IHJrYV9kZWNvZGVfY2xvc2UoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQoreworICAg IFJLQUNvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOworCisgICAgZm9yIChpbnQgY2ggPSAw OyBjaCA8IDI7IGNoKyspIHsKKyAgICAgICAgQ2hDb250ZXh0ICpjID0gJnMtPmNoW2NoXTsKKwor ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDExOyBpKyspCisgICAgICAgICAgICBhZGFwdGl2 ZV9tb2RlbF9mcmVlKCZjLT5jb2VmZl9iaXRzW2ldKTsKKworICAgICAgICBhZGFwdGl2ZV9tb2Rl bF9mcmVlKCZjLT5wb3NpdGlvbik7CisgICAgICAgIGFkYXB0aXZlX21vZGVsX2ZyZWUoJmMtPm5i X3NlZ21lbnRzKTsKKyAgICAgICAgYWRhcHRpdmVfbW9kZWxfZnJlZSgmYy0+ZnNoaWZ0KTsKKyAg ICB9CisKKyAgICBhZGFwdGl2ZV9tb2RlbF9mcmVlKCZzLT5maWx0X3NpemUpOworICAgIGFkYXB0 aXZlX21vZGVsX2ZyZWUoJnMtPmZpbHRfYml0cyk7CisKKyAgICByZXR1cm4gMDsKK30KKworY29u c3QgRkZDb2RlYyBmZl9ya2FfZGVjb2RlciA9IHsKKyAgICAucC5uYW1lICAgICAgICAgPSAicmth IiwKKyAgICBDT0RFQ19MT05HX05BTUUoIlJLQSAoUksgQXVkaW8iKSwKKyAgICAucC50eXBlICAg ICAgICAgPSBBVk1FRElBX1RZUEVfQVVESU8sCisgICAgLnAuaWQgICAgICAgICAgID0gQVZfQ09E RUNfSURfUktBLAorICAgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihSS0FDb250ZXh0KSwKKyAg ICAuaW5pdCAgICAgICAgICAgPSBya2FfZGVjb2RlX2luaXQsCisgICAgLmNsb3NlICAgICAgICAg ID0gcmthX2RlY29kZV9jbG9zZSwKKyAgICBGRl9DT0RFQ19ERUNPREVfQ0IocmthX2RlY29kZV9m cmFtZSksCisgICAgLnAuY2FwYWJpbGl0aWVzID0gQVZfQ09ERUNfQ0FQX0RSMSB8IEFWX0NPREVD X0NBUF9DSEFOTkVMX0NPTkYsCisgICAgLmNhcHNfaW50ZXJuYWwgID0gRkZfQ09ERUNfQ0FQX0lO SVRfQ0xFQU5VUCwKK307Ci0tIAoyLjM5LjEKCg== --0000000000006ceb9c05f3f8c5b9 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". --0000000000006ceb9c05f3f8c5b9--