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 BC8E9462A1 for ; Tue, 13 Jun 2023 19:54:07 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4D53D68C443; Tue, 13 Jun 2023 22:54:04 +0300 (EEST) Received: from mail-vs1-f43.google.com (mail-vs1-f43.google.com [209.85.217.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 038CC68C40F for ; Tue, 13 Jun 2023 22:53:57 +0300 (EEST) Received: by mail-vs1-f43.google.com with SMTP id ada2fe7eead31-43b4b5378ecso604352137.1 for ; Tue, 13 Jun 2023 12:53:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686686036; x=1689278036; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=6Wu4dYCinyBhKrNZPe4MELl/E2qvIss5ZShMJY8rRU0=; b=PxmIIIrUK1CjN3l+WikRR9gPYE7PlswePUq2Cn7mA0MZBhnUmSGZGkmN9/jjWbU1Bo +Iz1KFg1YfeRJh7ic3/aikbckddVizejW4Xj2EHLZsFLd7CsNQttLSKDNhYa0CeeucEV YiD1ikh2cOStnw8gbAoRXXjQvQPd3zgDPGzXFPxguD0ek4Ov+V/Avs6qxiSZoWTCAUYi 17m3umHbbmfrfa+92FXMjfHEaHKsHckqB7ytS01CIuQZVbfNbGKm6eYWTHBsL0B/sDde JvXGLUI44NZ2FHBhYjp7MLqr2BNzrr3cCoTltWZHzA6kfl2/7iSKjl/xiLp7wDZMcI0G woXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686686036; x=1689278036; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=6Wu4dYCinyBhKrNZPe4MELl/E2qvIss5ZShMJY8rRU0=; b=LFWTaPI6HxxfB+Xv+cm/eJSYyCODFXOU1tcF0k80ED8+mzvxVAdjKktAesLrRHkJXW awdhQQv7GrvQ4f8WoRxc26jiPE60uH0u0kUhp0RUDS8aFpm8lydwB+WcxjicpJLqHvZX PqRW2xUsRyjr2DnJAf2iDjUDDfXiMig7VgR5MuZ4MjSGEc4a1Dhlji6Jqa98n4f7j3w2 0kOl+tQuWbOnIMHNahL8QW++v6vovJc1R2V95XsxnK+2kTffGc3XzmdPvxj9EyaniTZG 3RNeQ2vWrLW2+hBvU9fDJBJcRD5Xex+HFGfPH3bsYsqXZfgFCmr7FYjvwhE5qUKnbg/K pUrg== X-Gm-Message-State: AC+VfDwO9SIDYbCBNSI06wGrtbh6JaPJqoeIIXk1AJ/lQxmPPCre0nN9 GPPSyi+x0wB1Y4uH4MHbFqQz8VIQgXH51eN/EcaHfnxB X-Google-Smtp-Source: ACHHUZ6EGNRQZKjJJJWXQgoLNvjJzZMwAmBnLtIVmddQXg9T9S9aM5Qtdj9I7uqzv1dhx0piKfbUxQAPjO7mh5VQgvM= X-Received: by 2002:a05:6102:3cc:b0:43b:44f2:afb2 with SMTP id n12-20020a05610203cc00b0043b44f2afb2mr6775420vsq.27.1686686036288; Tue, 13 Jun 2023 12:53:56 -0700 (PDT) MIME-Version: 1.0 From: Paul B Mahol Date: Tue, 13 Jun 2023 21:53:36 +0200 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="0000000000000a7e8405fe083294" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] avcodec: add RFBW video 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: --0000000000000a7e8405fe083294 Content-Type: text/plain; charset="UTF-8" Attached. --0000000000000a7e8405fe083294 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-avcodec-add-RFBW-decoder.patch" Content-Disposition: attachment; filename="0001-avcodec-add-RFBW-decoder.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_liuoqhaj0 RnJvbSAxZWNjNGRjNzIxMTlkZTRiMGZiMjNjODVlYmEzNTM0MWI0MzI5ZGVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IEZyaSwgOSBKdW4gMjAyMyAyMzo1NzowMSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIGF2Y29kZWM6 IGFkZCBSRkJXIGRlY29kZXIKClNpZ25lZC1vZmYtYnk6IFBhdWwgQiBNYWhvbCA8b25lbWRhQGdt YWlsLmNvbT4KLS0tCiBjb25maWd1cmUgICAgICAgICAgICAgICB8ICAgMSArCiBsaWJhdmNvZGVj L01ha2VmaWxlICAgICB8ICAgMSArCiBsaWJhdmNvZGVjL2FsbGNvZGVjcy5jICB8ICAgMSArCiBs aWJhdmNvZGVjL2NvZGVjX2Rlc2MuYyB8ICAgNyArCiBsaWJhdmNvZGVjL2NvZGVjX2lkLmggICB8 ICAgMSArCiBsaWJhdmNvZGVjL3JmYncuYyAgICAgICB8IDUwOSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiBsaWJhdmZvcm1hdC9yaWZmLmMgICAgICB8ICAgMSArCiA3 IGZpbGVzIGNoYW5nZWQsIDUyMSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGli YXZjb2RlYy9yZmJ3LmMKCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXgg NGFjN2NjNmMwYi4uZTQxZmUwZjE3MiAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZp Z3VyZQpAQCAtMjk2MSw2ICsyOTYxLDcgQEAgcmFfMTQ0X2VuY29kZXJfc2VsZWN0PSJhdWRpb19m cmFtZV9xdWV1ZSBscGMgYXVkaW9kc3AiCiByYWxmX2RlY29kZXJfc2VsZWN0PSJnb2xvbWIiCiBy YXNjX2RlY29kZXJfc2VsZWN0PSJpbmZsYXRlX3dyYXBwZXIiCiByYXd2aWRlb19kZWNvZGVyX3Nl bGVjdD0iYnN3YXBkc3AiCityZmJ3X2RlY29kZXJfc2VsZWN0PSJpbmZsYXRlX3dyYXBwZXIiCiBy c2NjX2RlY29kZXJfZGVwcz0iemxpYiIKIHJ0djFfZGVjb2Rlcl9zZWxlY3Q9InRleHR1cmVkc3Ai CiBydjEwX2RlY29kZXJfc2VsZWN0PSJoMjYzX2RlY29kZXIiCmRpZmYgLS1naXQgYS9saWJhdmNv ZGVjL01ha2VmaWxlIGIvbGliYXZjb2RlYy9NYWtlZmlsZQppbmRleCAyZWZhYjYwZDdkLi4xMTM0 YTc1NzM2IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL01ha2VmaWxlCisrKyBiL2xpYmF2Y29kZWMv TWFrZWZpbGUKQEAgLTYzNCw2ICs2MzQsNyBAQCBPQkpTLSQoQ09ORklHX1JBU0NfREVDT0RFUikg ICAgICAgICAgICArPSByYXNjLm8KIE9CSlMtJChDT05GSUdfUkFXVklERU9fREVDT0RFUikgICAg ICAgICs9IHJhd2RlYy5vCiBPQkpTLSQoQ09ORklHX1JBV1ZJREVPX0VOQ09ERVIpICAgICAgICAr PSByYXdlbmMubwogT0JKUy0kKENPTkZJR19SRUFMVEVYVF9ERUNPREVSKSAgICAgICAgKz0gcmVh bHRleHRkZWMubyBhc3MubworT0JKUy0kKENPTkZJR19SRkJXX0RFQ09ERVIpICAgICAgICAgICAg Kz0gcmZidy5vCiBPQkpTLSQoQ09ORklHX1JLQV9ERUNPREVSKSAgICAgICAgICAgICArPSBya2Eu bwogT0JKUy0kKENPTkZJR19STDJfREVDT0RFUikgICAgICAgICAgICAgKz0gcmwyLm8KIE9CSlMt JChDT05GSUdfUk9RX0RFQ09ERVIpICAgICAgICAgICAgICs9IHJvcXZpZGVvZGVjLm8gcm9xdmlk ZW8ubwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hbGxjb2RlY3MuYyBiL2xpYmF2Y29kZWMvYWxs Y29kZWNzLmMKaW5kZXggMTFjMTM2ZWY1OS4uNzBmZmY5NDUxZSAxMDA2NDQKLS0tIGEvbGliYXZj b2RlYy9hbGxjb2RlY3MuYworKysgYi9saWJhdmNvZGVjL2FsbGNvZGVjcy5jCkBAIC0yODgsNiAr Mjg4LDcgQEAgZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfcjIxMF9kZWNvZGVyOwogZXh0ZXJuIGNv bnN0IEZGQ29kZWMgZmZfcmFzY19kZWNvZGVyOwogZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfcmF3 dmlkZW9fZW5jb2RlcjsKIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX3Jhd3ZpZGVvX2RlY29kZXI7 CitleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9yZmJ3X2RlY29kZXI7CiBleHRlcm4gY29uc3QgRkZD b2RlYyBmZl9ya2FfZGVjb2RlcjsKIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX3JsMl9kZWNvZGVy OwogZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfcm9xX2VuY29kZXI7CmRpZmYgLS1naXQgYS9saWJh dmNvZGVjL2NvZGVjX2Rlc2MuYyBiL2xpYmF2Y29kZWMvY29kZWNfZGVzYy5jCmluZGV4IDNlMzFh MWVlZDYuLmY0YmM1YTcyYWIgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvY29kZWNfZGVzYy5jCisr KyBiL2xpYmF2Y29kZWMvY29kZWNfZGVzYy5jCkBAIC0xOTYwLDYgKzE5NjAsMTMgQEAgc3RhdGlj IGNvbnN0IEFWQ29kZWNEZXNjcmlwdG9yIGNvZGVjX2Rlc2NyaXB0b3JzW10gPSB7CiAgICAgICAg IC5sb25nX25hbWUgPSBOVUxMX0lGX0NPTkZJR19TTUFMTCgidk1peCBWaWRlbyIpLAogICAgICAg ICAucHJvcHMgICAgID0gQVZfQ09ERUNfUFJPUF9JTlRSQV9PTkxZIHwgQVZfQ09ERUNfUFJPUF9M T1NTWSwKICAgICB9LAorICAgIHsKKyAgICAgICAgLmlkICAgICAgICA9IEFWX0NPREVDX0lEX1JG QlcsCisgICAgICAgIC50eXBlICAgICAgPSBBVk1FRElBX1RZUEVfVklERU8sCisgICAgICAgIC5u YW1lICAgICAgPSAicmZidyIsCisgICAgICAgIC5sb25nX25hbWUgPSBOVUxMX0lGX0NPTkZJR19T TUFMTCgiUkZCVyBWaWRlbyIpLAorICAgICAgICAucHJvcHMgICAgID0gQVZfQ09ERUNfUFJPUF9M T1NTWSwKKyAgICB9LAogCiAgICAgLyogdmFyaW91cyBQQ00gImNvZGVjcyIgKi8KICAgICB7CmRp ZmYgLS1naXQgYS9saWJhdmNvZGVjL2NvZGVjX2lkLmggYi9saWJhdmNvZGVjL2NvZGVjX2lkLmgK aW5kZXggZDIzNTQ5ZDdlMC4uMTg5NDQxNzdhYSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9jb2Rl Y19pZC5oCisrKyBiL2xpYmF2Y29kZWMvY29kZWNfaWQuaApAQCAtMzI0LDYgKzMyNCw3IEBAIGVu dW0gQVZDb2RlY0lEIHsKICAgICBBVl9DT0RFQ19JRF9FVkMsCiAgICAgQVZfQ09ERUNfSURfUlRW MSwKICAgICBBVl9DT0RFQ19JRF9WTUlYLAorICAgIEFWX0NPREVDX0lEX1JGQlcsCiAKICAgICAv KiB2YXJpb3VzIFBDTSAiY29kZWNzIiAqLwogICAgIEFWX0NPREVDX0lEX0ZJUlNUX0FVRElPID0g MHgxMDAwMCwgICAgIC8vLzwgQSBkdW1teSBpZCBwb2ludGluZyBhdCB0aGUgc3RhcnQgb2YgYXVk aW8gY29kZWNzCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3JmYncuYyBiL2xpYmF2Y29kZWMvcmZi dy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmI5YTU1YzQxYWYKLS0t IC9kZXYvbnVsbAorKysgYi9saWJhdmNvZGVjL3JmYncuYwpAQCAtMCwwICsxLDUwOSBAQAorLyoK KyAqIFJGQlcgZGVjb2RlcgorICogQ29weXJpZ2h0IChjKSAyMDIzIFBhdWwgQiBNYWhvbAorICoK KyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq IHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq IExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv b3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4K KyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImF2Y29kZWMuaCIKKyNpbmNsdWRlICJi eXRlc3RyZWFtLmgiCisjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJkZWNv ZGUuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvaW50cmVhZHdyaXRlLmgiCisjaW5jbHVkZSAidGhy ZWFkLmgiCisjaW5jbHVkZSAiemxpYl93cmFwcGVyLmgiCisKKyNpbmNsdWRlIDx6bGliLmg+CisK K3R5cGVkZWYgc3RydWN0IFJGQldTcHJpdGUgeworICAgIHVpbnQxNl90IGluZGV4OworICAgIHVp bnQ4X3QgdywgaDsKKyAgICB1bnNpZ25lZCBvZmZzZXQ7Cit9IFJGQldTcHJpdGU7CisKK3R5cGVk ZWYgc3RydWN0IFJGQldSZWN0IHsKKyAgICB1bnNpZ25lZCBvZmZzZXQ7CisgICAgdW5zaWduZWQg dywgaDsKKyAgICBpbnQgbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wOworICAgIHVpbnQ4X3QgY29s b3I7CisgICAgc3RydWN0IFJGQldSZWN0ICpwcmV2LCAqbmV4dDsKK30gUkZCV1JlY3Q7CisKK3R5 cGVkZWYgc3RydWN0IFJGQldDb250ZXh0IHsKKyAgICBpbnQga2V5OworICAgIEFWRnJhbWUgKmxh c3RfZnJhbWU7CisKKyAgICB1aW50OF90ICAqZGF0YTsKKyAgICB1bnNpZ25lZCAgZGF0YV9zaXpl OworCisgICAgdW5zaWduZWQgIG5iX3JlY3RzOworICAgIFJGQldSZWN0ICpyZWN0czsKKworICAg IHVuc2lnbmVkICAgIG5iX3Nwcml0ZXM7CisgICAgUkZCV1Nwcml0ZSAqc3ByaXRlczsKKworICAg IHVpbnQ4X3QgICpzcHJpdGVfZGF0YTsKKyAgICB1bnNpZ25lZCAgc3ByaXRlX2RhdGFfc2l6ZTsK KworICAgIHVpbnQzMl90IHBhbGV0dGVbMjU2XTsKKworICAgIEZGWlN0cmVhbSB6c3RyZWFtOwor fSBSRkJXQ29udGV4dDsKKworc3RhdGljIGF2X2NvbGQgaW50IGRlY29kZV9pbml0KEFWQ29kZWND b250ZXh0ICphdmN0eCkKK3sKKyAgICBSRkJXQ29udGV4dCAqcyA9IGF2Y3R4LT5wcml2X2RhdGE7 CisgICAgYXZjdHgtPnBpeF9mbXQgPSBBVl9QSVhfRk1UX1BBTDg7CisKKyAgICBzLT5sYXN0X2Zy YW1lID0gYXZfZnJhbWVfYWxsb2MoKTsKKyAgICBpZiAoIXMtPmxhc3RfZnJhbWUpCisgICAgICAg IHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICBpZiAoYXZjdHgtPmV4dHJhZGF0YSAmJiBh dmN0eC0+ZXh0cmFkYXRhX3NpemUgPj0gMTAyNCkgeworICAgICAgICBmb3IgKGludCBuID0gMDsg biA8IDI1NjsgbisrKQorICAgICAgICAgICAgcy0+cGFsZXR0ZVtuXSA9IEFWX1JMMzIoYXZjdHgt PmV4dHJhZGF0YSArIG4gKiA0KSB8ICgweGZmdSA8PCAyNCk7CisgICAgfQorCisgICAgcmV0dXJu IGZmX2luZmxhdGVfaW5pdCgmcy0+enN0cmVhbSwgYXZjdHgpOworfQorCitzdGF0aWMgdm9pZCB4 c2V0KHVpbnQ4X3QgKmRzdCwgcHRyZGlmZl90IGxpbmVzaXplLCBpbnQgeCwgaW50IHksIGludCB3 LCBpbnQgaCwKKyAgICAgICAgICAgICAgICAgdWludDhfdCBjb2xvcikKK3sKKyAgICBpZiAoIXcg fHwgIWgpCisgICAgICAgIHJldHVybjsKKworICAgIGRzdCArPSBsaW5lc2l6ZSAqIHkgKyB4Owor CisgICAgZm9yIChpbnQgaiA9IDA7IGogPCBoOyBqKyspIHsKKyAgICAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCB3OyBpKyspCisgICAgICAgICAgICBkc3RbaV0gPSBjb2xvcjsKKyAgICAgICAgZHN0 ICs9IGxpbmVzaXplOworICAgIH0KK30KKworc3RhdGljIHZvaWQgeGNvcHkodWludDhfdCAqZHN0 LCBwdHJkaWZmX3QgbGluZXNpemUsIGludCB4LCBpbnQgeSwKKyAgICAgICAgICAgICAgICAgIGNv bnN0IHVpbnQ4X3QgKnNyYywgaW50IHNpemUpCit7CisgICAgaWYgKHNpemUgPD0gMCkKKyAgICAg ICAgcmV0dXJuOworCisgICAgZHN0ICs9IGxpbmVzaXplICogeSArIHg7CisKKyAgICBmb3IgKGlu dCBpID0gMDsgaSA8IHNpemU7IGkrKykKKyAgICAgICAgZHN0Wy1pXSA9IHNyY1tpXTsKK30KKwor c3RhdGljIGludCB4cmVhZChHZXRCeXRlQ29udGV4dCAqZ2IpCit7CisgICAgaW50IHggPSBieXRl c3RyZWFtMl9nZXRfYnl0ZShnYik7CisKKyAgICBpZiAoeCA9PSAyNTUpIHsKKyAgICAgICAgcmV0 dXJuIC14cmVhZChnYik7CisgICAgfSBlbHNlIGlmICh4IDwgMTI4KSB7CisgICAgICAgIHJldHVy biB4OworICAgIH0gZWxzZSBpZiAoeCA8IDE5MikgeworICAgICAgICBpbnQgeSA9IGJ5dGVzdHJl YW0yX2dldF9ieXRlKGdiKTsKKyAgICAgICAgcmV0dXJuICgoeCAmIDYzKSA8PCA4KSB8IHk7Cisg ICAgfSBlbHNlIHsKKyAgICAgICAgaW50IHkgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZShnYik7Cisg ICAgICAgIGludCB6ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGUoZ2IpOworICAgICAgICByZXR1cm4g KCh4ICYgNjMpIDw8IDE2KSB8ICh5IDw8IDgpIHwgejsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQg ZGVjb2RlX3JmYncoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBHZXRCeXRlQ29udGV4dCAqZ2IsCisg ICAgICAgICAgICAgICAgICAgICAgIEFWRnJhbWUgKmZyYW1lLCBBVlBhY2tldCAqYXZwa3QpCit7 CisgICAgUkZCV0NvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOworICAgIHpfc3RyZWFtICpj b25zdCB6c3RyZWFtID0gJnMtPnpzdHJlYW0uenN0cmVhbTsKKyAgICB1bnNpZ25lZCByYXdfcGl4 ZWxzLCB3aWR0aCwgaGVpZ2h0LCByYXdfaW5kZXgsIHJhd19vZmZzZXQgPSAwOworICAgIHVuc2ln bmVkIHJlY3RfaW5kZXggPSAwLCBjb21wcmVzc2lvbiwgZGVjb21wcmVzc2VkX3NpemU7CisgICAg dW5zaWduZWQgdmVyc2lvbiwgcGF5bG9hZF9zaXplLCBjb21tYW5kLCBicHAsIHNpemUsIHNpemUx OworICAgIHVuc2lnbmVkIGZpcnN0X25ld19zcHJpdGUsIG5ld19zcHJpdGVfZGF0YV9zaXplOwor ICAgIHVuc2lnbmVkIHNwcml0ZV9vZmZzZXQ7CisgICAgdW5zaWduZWQgeDAsIHkwLCBjb21wcmVz c2VkX3NpemU7CisgICAgUkZCV1JlY3QgKmFyZWN0ID0gTlVMTCwgKnJlY3QgPSBOVUxMOworICAg IFJGQldSZWN0IGhlYWQgPSB7IDAgfSwgdGFpbCA9IHsgMCB9OworICAgIGludCByZWN0X29mZnNl dCwgbGFzdF9vZmZzZXQsIG9mZnNldDsKKyAgICBHZXRCeXRlQ29udGV4dCBkZ2IsIHNnYjEsIHNn YjI7CisgICAgcHRyZGlmZl90IGxpbmVzaXplOworICAgIGludCByZXQsIHpyZXQ7CisgICAgdWlu dDhfdCAqZHN0OworCisgICAgdmVyc2lvbiA9IGJ5dGVzdHJlYW0yX2dldF9sZTMyKGdiKTsKKyAg ICBwYXlsb2FkX3NpemUgPSBieXRlc3RyZWFtMl9nZXRfbGUzMihnYik7CisgICAgY29tbWFuZCA9 IGJ5dGVzdHJlYW0yX2dldF9sZTMyKGdiKTsKKyAgICBieXRlc3RyZWFtMl9za2lwKGdiLCA0KTsK KyAgICBpZiAoY29tbWFuZCA9PSAzOCB8fCBjb21tYW5kID09IDM5KQorICAgICAgICByZXR1cm4g MDsKKworICAgIHgwID0gYnl0ZXN0cmVhbTJfZ2V0X2xlMzIoZ2IpOworICAgIHkwID0gYnl0ZXN0 cmVhbTJfZ2V0X2xlMzIoZ2IpOworICAgIGJ5dGVzdHJlYW0yX2dldF9sZTMyKGdiKTsgLy8gdwor ICAgIGJ5dGVzdHJlYW0yX2dldF9sZTMyKGdiKTsgLy8gaAorICAgIGJ5dGVzdHJlYW0yX2dldF9i eXRlKGdiKTsgLy8gY3Vyc29yCisgICAgYnBwID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGUoZ2IpOwor ICAgIGlmIChicHAgIT0gOCkKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisK KyAgICBpZiAoYnl0ZXN0cmVhbTJfZ2V0X2J5dGVzX2xlZnQoZ2IpIDwgcGF5bG9hZF9zaXplKQor ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgIGlmICh2ZXJzaW9uICE9 IDAgJiYgdmVyc2lvbiAhPSAzKQorICAgICAgICBieXRlc3RyZWFtMl9za2lwKGdiLCA0KTsKKyAg ICBpZiAodmVyc2lvbiA9PSAzKQorICAgICAgICBieXRlc3RyZWFtMl9za2lwKGdiLCAxMik7CisK KyAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKKyAgICBjYXNlIDQ6CisgICAgY2FzZSAzNjoKKyAgICAg ICAgcy0+a2V5ID0gMTsKKyAgICAgICAgcy0+bmJfc3ByaXRlcyA9IDA7CisgICAgICAgIHMtPnNw cml0ZV9kYXRhX3NpemUgPSAwOworICAgICAgICBieXRlc3RyZWFtMl9za2lwKGdiLCA0MCk7Cisg ICAgICAgIGlmIChicHAgPT0gOCkgeworICAgICAgICAgICAgZm9yIChpbnQgbiA9IDA7IG4gPCAy NTY7IG4rKykKKyAgICAgICAgICAgICAgICBzLT5wYWxldHRlW25dID0gYnl0ZXN0cmVhbTJfZ2V0 X2xlMzIoZ2IpIHwgKDB4ZmZ1IDw8IDI0KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg ICBjYXNlIDU6CisgICAgY2FzZSAzNzoKKyAgICAgICAgcy0+a2V5ID0gMDsKKyAgICAgICAgYnJl YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgZGVjb21w cmVzc2VkX3NpemUgPSBhdmN0eC0+d2lkdGggKiBhdmN0eC0+aGVpZ2h0OworICAgIGNvbXByZXNz aW9uID0gYnl0ZXN0cmVhbTJfZ2V0X2xlMzIoZ2IpOworICAgIGNvbXByZXNzZWRfc2l6ZSA9IGJ5 dGVzdHJlYW0yX2dldF9sZTMyKGdiKTsKKyAgICBpZiAoY29tcHJlc3Npb24gPT0gMTMpCisgICAg ICAgIGJ5dGVzdHJlYW0yX3NraXAoZ2IsIDExKTsKKworICAgIHpyZXQgPSBpbmZsYXRlUmVzZXQo enN0cmVhbSk7CisgICAgaWYgKHpyZXQgIT0gWl9PSykgeworICAgICAgICBhdl9sb2coYXZjdHgs IEFWX0xPR19FUlJPUiwgIkluZmxhdGUgcmVzZXQgZXJyb3I6ICVkXG4iLCB6cmV0KTsKKyAgICAg ICAgcmV0dXJuIEFWRVJST1JfRVhURVJOQUw7CisgICAgfQorCisgICAgYXZfZmFzdF9wYWRkZWRf bWFsbG9jKCZzLT5kYXRhLCAmcy0+ZGF0YV9zaXplLCBkZWNvbXByZXNzZWRfc2l6ZSk7CisgICAg aWYgKCFzLT5kYXRhKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAgenN0 cmVhbS0+bmV4dF9pbiAgPSBhdnBrdC0+ZGF0YSArIGJ5dGVzdHJlYW0yX3RlbGwoZ2IpOworICAg IHpzdHJlYW0tPmF2YWlsX2luID0gRkZNSU4oY29tcHJlc3NlZF9zaXplLCBhdnBrdC0+c2l6ZSAt IGJ5dGVzdHJlYW0yX3RlbGwoZ2IpKTsKKworICAgIHpzdHJlYW0tPm5leHRfb3V0ICA9IHMtPmRh dGE7CisgICAgenN0cmVhbS0+YXZhaWxfb3V0ID0gcy0+ZGF0YV9zaXplOworCisgICAgenJldCA9 IGluZmxhdGUoenN0cmVhbSwgWl9GSU5JU0gpOworICAgIGlmICh6cmV0ICE9IFpfU1RSRUFNX0VO RCkgeworICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAgICAg ICJJbmZsYXRlIGZhaWxlZCB3aXRoIHJldHVybiBjb2RlOiAlZC5cbiIsIHpyZXQpOworICAgICAg ICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICB9CisKKyAgICBieXRlc3RyZWFtMl9z a2lwKGdiLCBhdnBrdC0+c2l6ZSAtIHpzdHJlYW0tPmF2YWlsX2luKTsKKworICAgIGJ5dGVzdHJl YW0yX2luaXQoJmRnYiwgcy0+ZGF0YSwgcy0+ZGF0YV9zaXplIC0genN0cmVhbS0+YXZhaWxfb3V0 KTsKKyAgICBieXRlc3RyZWFtMl9za2lwKCZkZ2IsIDQpOworCisgICAgd2lkdGggPSB4cmVhZCgm ZGdiKTsKKyAgICBoZWlnaHQgPSB4cmVhZCgmZGdiKTsKKyAgICByYXdfcGl4ZWxzID0geHJlYWQo JmRnYik7CisgICAgcmF3X2luZGV4ID0gYnl0ZXN0cmVhbTJfdGVsbCgmZGdiKTsKKworICAgIGJ5 dGVzdHJlYW0yX3NraXAoJmRnYiwgcmF3X3BpeGVscyk7CisKKyAgICBzLT5uYl9yZWN0cyA9IHhy ZWFkKCZkZ2IpOworICAgIHMtPnJlY3RzID0gYXZfcmVhbGxvY19mKHMtPnJlY3RzLCBzLT5uYl9y ZWN0cywgc2l6ZW9mKCpzLT5yZWN0cykpOworICAgIGlmICghcy0+cmVjdHMpCisgICAgICAgIHJl dHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICBmb3IgKGludCBuID0gMDsgbiA8IHMtPm5iX3Jl Y3RzOyBuKyspIHsKKyAgICAgICAgUkZCV1JlY3QgKnJlY3QgPSAmcy0+cmVjdHNbbl07CisgICAg ICAgIGludCBvZmZzZXQsIHcsIGgsIGNvbG9yOworCisgICAgICAgIGlmIChieXRlc3RyZWFtMl9n ZXRfYnl0ZXNfbGVmdCgmZGdiKSA8PSAwKQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5W QUxJRERBVEE7CisKKyAgICAgICAgb2Zmc2V0ID0geHJlYWQoJmRnYik7CisgICAgICAgIHcgPSB4 cmVhZCgmZGdiKTsKKyAgICAgICAgaCA9IHhyZWFkKCZkZ2IpOworICAgICAgICBjb2xvciA9IGJ5 dGVzdHJlYW0yX2dldF9ieXRlKCZkZ2IpOworCisgICAgICAgIHJlY3QtPm9mZnNldCA9IG9mZnNl dDsKKyAgICAgICAgcmVjdC0+dyA9IHc7CisgICAgICAgIHJlY3QtPmggPSBoOworICAgICAgICBy ZWN0LT5jb2xvciA9IGNvbG9yOworICAgICAgICByZWN0LT5sZWZ0ID0KKyAgICAgICAgcmVjdC0+ cmlnaHQgPQorICAgICAgICByZWN0LT50b3AgPQorICAgICAgICByZWN0LT5ib3R0b20gPSAwOwor ICAgICAgICByZWN0LT5wcmV2ID0gTlVMTDsKKyAgICAgICAgcmVjdC0+bmV4dCA9IE5VTEw7Cisg ICAgfQorCisgICAgZmlyc3RfbmV3X3Nwcml0ZSA9IHMtPm5iX3Nwcml0ZXM7CisgICAgbmV3X3Nw cml0ZV9kYXRhX3NpemUgPSBzLT5zcHJpdGVfZGF0YV9zaXplOworICAgIHNwcml0ZV9vZmZzZXQg PSBuZXdfc3ByaXRlX2RhdGFfc2l6ZTsKKyAgICBzaXplID0gYnl0ZXN0cmVhbTJfZ2V0X2JlMzIo JmRnYik7CisgICAgd2hpbGUgKHNpemUgPiAwKSB7CisgICAgICAgIFJGQldTcHJpdGUgKnNwcml0 ZTsKKworICAgICAgICBpZiAocy0+bmJfc3ByaXRlcyA+PSBVSU5UMTZfTUFYKQorICAgICAgICAg ICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisKKyAgICAgICAgcy0+c3ByaXRlcyA9IGF2 X3JlYWxsb2NfZihzLT5zcHJpdGVzLCBzLT5uYl9zcHJpdGVzICsgMSwgc2l6ZW9mKCpzLT5zcHJp dGVzKSk7CisgICAgICAgIGlmICghcy0+c3ByaXRlcykKKyAgICAgICAgICAgIHJldHVybiBBVkVS Uk9SKEVOT01FTSk7CisKKyAgICAgICAgc3ByaXRlID0gJnMtPnNwcml0ZXNbcy0+bmJfc3ByaXRl c107CisgICAgICAgIHNwcml0ZS0+aW5kZXggPSBieXRlc3RyZWFtMl9nZXRfbGUxNigmZGdiKTsK KyAgICAgICAgc3ByaXRlLT53ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGUoJmRnYik7CisgICAgICAg IHNwcml0ZS0+aCA9IGJ5dGVzdHJlYW0yX2dldF9ieXRlKCZkZ2IpOworICAgICAgICBpZiAoIXNw cml0ZS0+dyB8fCAhc3ByaXRlLT5oKSB7CisgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xP R19FUlJPUiwgInNwcml0ZSB3L2ggaW52YWxpZFxuIik7CisgICAgICAgICAgICByZXR1cm4gQVZF UlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgfQorCisgICAgICAgIHNwcml0ZS0+b2Zmc2V0ID0g Ynl0ZXN0cmVhbTJfdGVsbCgmZGdiKTsKKyAgICAgICAgbmV3X3Nwcml0ZV9kYXRhX3NpemUgKz0g c3ByaXRlLT53ICogc3ByaXRlLT5oOworICAgICAgICBieXRlc3RyZWFtMl9za2lwKCZkZ2IsIHNw cml0ZS0+dyAqIHNwcml0ZS0+aCk7CisKKyAgICAgICAgaWYgKHNpemUgPCBzcHJpdGUtPncgKiBz cHJpdGUtPmggKyA0KQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisK KyAgICAgICAgc2l6ZSAtPSBzcHJpdGUtPncgKiBzcHJpdGUtPmggKyA0OworCisgICAgICAgIHMt Pm5iX3Nwcml0ZXMrKzsKKyAgICB9CisKKyAgICBzLT5zcHJpdGVfZGF0YSA9IGF2X3JlYWxsb2Nf ZihzLT5zcHJpdGVfZGF0YSwgbmV3X3Nwcml0ZV9kYXRhX3NpemUsIHNpemVvZigqcy0+c3ByaXRl X2RhdGEpKTsKKyAgICBpZiAoIXMtPnNwcml0ZV9kYXRhKQorICAgICAgICByZXR1cm4gQVZFUlJP UihFTk9NRU0pOworICAgIHMtPnNwcml0ZV9kYXRhX3NpemUgPSBuZXdfc3ByaXRlX2RhdGFfc2l6 ZTsKKworICAgIGZvciAoaW50IG4gPSBmaXJzdF9uZXdfc3ByaXRlOyBuIDwgcy0+bmJfc3ByaXRl czsgbisrKSB7CisgICAgICAgIFJGQldTcHJpdGUgKnNwcml0ZSA9ICZzLT5zcHJpdGVzW25dOwor CisgICAgICAgIG1lbWNweShzLT5zcHJpdGVfZGF0YSArIHNwcml0ZV9vZmZzZXQsIHMtPmRhdGEg KyBzcHJpdGUtPm9mZnNldCwKKyAgICAgICAgICAgICAgIHNwcml0ZS0+dyAqIHNwcml0ZS0+aCk7 CisgICAgICAgIHNwcml0ZS0+b2Zmc2V0ID0gc3ByaXRlX29mZnNldDsKKyAgICAgICAgc3ByaXRl X29mZnNldCArPSBzcHJpdGUtPncgKiBzcHJpdGUtPmg7CisgICAgfQorCisgICAgc2l6ZTEgPSBi eXRlc3RyZWFtMl9nZXRfYmUzMigmZGdiKTsKKyAgICBzZ2IxID0gZGdiOworICAgIGJ5dGVzdHJl YW0yX3NraXAoJmRnYiwgc2l6ZTEpOworICAgIGJ5dGVzdHJlYW0yX2dldF9iZTMyKCZkZ2IpOwor ICAgIHNnYjIgPSBkZ2I7CisKKyAgICBpZiAoKHJldCA9IGZmX3JlZ2V0X2J1ZmZlcihhdmN0eCwg cy0+bGFzdF9mcmFtZSwgMCkpIDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIHJldCA9 IGF2X2ZyYW1lX3JlZihmcmFtZSwgcy0+bGFzdF9mcmFtZSk7CisgICAgaWYgKHJldCA8IDApCisg ICAgICAgIHJldHVybiByZXQ7CisKKyAgICBoZWFkLm5leHQgPSAmdGFpbDsKKyAgICBoZWFkLmxl ZnQgPSAwOworICAgIGhlYWQudG9wID0gLTE7CisgICAgaGVhZC5yaWdodCA9IC0xOworICAgIHRh aWwucHJldiA9ICZoZWFkOworCisgICAgaWYgKHMtPm5iX3JlY3RzID4gMCkgeworICAgICAgICBy ZWN0ID0gJnMtPnJlY3RzW3JlY3RfaW5kZXhdOworICAgICAgICByZWN0X29mZnNldCA9IHJlY3Qt Pm9mZnNldDsKKyAgICB9IGVsc2UgeworICAgICAgICByZWN0ID0gTlVMTDsKKyAgICAgICAgcmVj dF9vZmZzZXQgPSByYXdfcGl4ZWxzOworICAgIH0KKworICAgIGxhc3Rfb2Zmc2V0ID0gd2lkdGgg KiBoZWlnaHQ7CisKKyAgICBsaW5lc2l6ZSA9IGZyYW1lLT5saW5lc2l6ZVswXTsKKyAgICBkc3Qg PSBmcmFtZS0+ZGF0YVswXSArIHkwICogbGluZXNpemUgKyB4MDsKKyAgICBmb3IgKGludCB5ID0g aGVpZ2h0IC0gMTsgeSA+PSAwOyB5LS0pIHsKKyAgICAgICAgaW50IHggPSB3aWR0aCAtIDE7CisK KyAgICAgICAgYXJlY3QgPSB0YWlsLnByZXY7CisgICAgICAgIHdoaWxlICh4ID49IDApIHsKKyAg ICAgICAgICAgIHdoaWxlIChhcmVjdC0+dG9wID4geSkgeworICAgICAgICAgICAgICAgIGFyZWN0 LT5wcmV2LT5uZXh0ID0gYXJlY3QtPm5leHQ7CisgICAgICAgICAgICAgICAgYXJlY3QtPm5leHQt PnByZXYgPSBhcmVjdC0+cHJldjsKKyAgICAgICAgICAgICAgICBhcmVjdCA9IGFyZWN0LT5wcmV2 OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocmVjdF9vZmZzZXQgPiAwKSB7Cisg ICAgICAgICAgICAgICAgaW50IHNraXAgPSBGRk1JTih4IC0gYXJlY3QtPnJpZ2h0LCByZWN0X29m ZnNldCk7CisKKyAgICAgICAgICAgICAgICB4Y29weShkc3QsIGxpbmVzaXplLCB4LCB5LAorICAg ICAgICAgICAgICAgICAgICAgIHMtPmRhdGEgKyByYXdfaW5kZXggKyByYXdfb2Zmc2V0LCBza2lw KTsKKyAgICAgICAgICAgICAgICB4IC09IHNraXA7CisgICAgICAgICAgICAgICAgcmF3X29mZnNl dCAgKz0gc2tpcDsKKyAgICAgICAgICAgICAgICByZWN0X29mZnNldCAtPSBza2lwOworICAgICAg ICAgICAgICAgIGxhc3Rfb2Zmc2V0IC09IHNraXA7CisgICAgICAgICAgICB9CisKKyAgICAgICAg ICAgIGlmIChyZWN0X29mZnNldCA9PSAwICYmIHJlY3QgIT0gTlVMTCkgeworICAgICAgICAgICAg ICAgIHdoaWxlICh4ID49IDAgJiYgYXJlY3QtPnJpZ2h0ID09IHgpIHsKKyAgICAgICAgICAgICAg ICAgICAgeHNldChkc3QsIGxpbmVzaXplLCBhcmVjdC0+bGVmdCwgeSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICBhcmVjdC0+dywgMSwgYXJlY3QtPmNvbG9yKTsKKworICAgICAgICAgICAgICAg ICAgICB4IC09IGFyZWN0LT5yaWdodCAtIGFyZWN0LT5sZWZ0ICsgMTsKKyAgICAgICAgICAgICAg ICAgICAgYXJlY3QgPSBhcmVjdC0+cHJldjsKKworICAgICAgICAgICAgICAgICAgICB3aGlsZSAo YXJlY3QtPnRvcCA+IHkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZWN0LT5wcmV2LT5u ZXh0ID0gYXJlY3QtPm5leHQ7CisgICAgICAgICAgICAgICAgICAgICAgICBhcmVjdC0+bmV4dC0+ cHJldiA9IGFyZWN0LT5wcmV2OworICAgICAgICAgICAgICAgICAgICAgICAgYXJlY3QgPSBhcmVj dC0+cHJldjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAg ICAgICAgICAgICAgIGlmICh4ID09IC0xKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK KworICAgICAgICAgICAgICAgIHJlY3QtPnJpZ2h0ICA9IHg7CisgICAgICAgICAgICAgICAgcmVj dC0+Ym90dG9tID0geTsKKyAgICAgICAgICAgICAgICByZWN0LT5sZWZ0ICAgPSB4IC0gcmVjdC0+ dyArIDE7CisgICAgICAgICAgICAgICAgcmVjdC0+dG9wICAgID0geSAtIHJlY3QtPmggKyAxOwor CisgICAgICAgICAgICAgICAgcmVjdC0+bmV4dCA9IGFyZWN0LT5uZXh0OworICAgICAgICAgICAg ICAgIGFyZWN0LT5uZXh0LT5wcmV2ID0gcmVjdDsKKyAgICAgICAgICAgICAgICByZWN0LT5wcmV2 ID0gYXJlY3Q7CisgICAgICAgICAgICAgICAgYXJlY3QtPm5leHQgPSByZWN0OworICAgICAgICAg ICAgICAgIGFyZWN0ID0gcmVjdDsKKworICAgICAgICAgICAgICAgIGxhc3Rfb2Zmc2V0IC09IHJl Y3QtPncgKiByZWN0LT5oOworCisgICAgICAgICAgICAgICAgcmVjdF9pbmRleCsrOworICAgICAg ICAgICAgICAgIGlmIChyZWN0X2luZGV4IDwgcy0+bmJfcmVjdHMpIHsKKyAgICAgICAgICAgICAg ICAgICAgcmVjdCA9ICZzLT5yZWN0c1tyZWN0X2luZGV4XTsKKyAgICAgICAgICAgICAgICAgICAg cmVjdF9vZmZzZXQgPSByZWN0LT5vZmZzZXQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgICAgICAgICAgcmVjdCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIHJlY3Rf b2Zmc2V0ID0gbGFzdF9vZmZzZXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor CisgICAgICAgICAgICB4c2V0KGRzdCwgbGluZXNpemUsIGFyZWN0LT5sZWZ0LCB5LAorICAgICAg ICAgICAgICAgICBhcmVjdC0+dywgMSwgYXJlY3QtPmNvbG9yKTsKKworICAgICAgICAgICAgeCAt PSBhcmVjdC0+cmlnaHQgLSBhcmVjdC0+bGVmdCArIDE7CisKKyAgICAgICAgICAgIGFyZWN0ID0g YXJlY3QtPnByZXY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtZW1jcHkoZnJhbWUtPmRhdGFb MV0sIHMtPnBhbGV0dGUsIHNpemVvZihzLT5wYWxldHRlKSk7CisKKyAgICBpZiAocy0+bmJfc3By aXRlcyA9PSAwKQorICAgICAgICByZXR1cm4gMTsKKworICAgIG9mZnNldCA9IDA7CisgICAgd2hp bGUgKHNpemUxID4gMCkgeworICAgICAgICB1aW50OF90ICpkc3QgPSBmcmFtZS0+ZGF0YVswXSAr IHkwICogbGluZXNpemUgKyB4MDsKKyAgICAgICAgdW5zaWduZWQgc3ByaXRlX29mZnNldCwgc3By aXRlX3csIHNwcml0ZV9oOworICAgICAgICBpbnQgZHcsIGRoLCBkeCwgZHksIHNyY19vZmZzZXQg PSAwLCBpbmRleDsKKyAgICAgICAgY29uc3QgdWludDhfdCAqc3JjOworCisgICAgICAgIHNpemUx IC09IDI7CisgICAgICAgIGluZGV4ID0gYnl0ZXN0cmVhbTJfZ2V0X2JlMTYoJnNnYjEpOworICAg ICAgICBpZiAoaW5kZXggPj0gcy0+bmJfc3ByaXRlcykgeworICAgICAgICAgICAgYXZfbG9nKGF2 Y3R4LCBBVl9MT0dfREVCVUcsICJzcHJpdGUgaW5kZXg6ICVkIG91dCBvZiByYW5nZTogJWRcbiIs CisgICAgICAgICAgICAgICAgICAgaW5kZXgsIHMtPm5iX3Nwcml0ZXMpOworICAgICAgICAgICAg Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBzcHJpdGVfb2Zmc2V0ID0gcy0+c3ByaXRl c1tpbmRleF0ub2Zmc2V0OworICAgICAgICBzcHJpdGVfdyA9IHMtPnNwcml0ZXNbaW5kZXhdLnc7 CisgICAgICAgIHNwcml0ZV9oID0gcy0+c3ByaXRlc1tpbmRleF0uaDsKKworICAgICAgICBvZmZz ZXQgKz0geHJlYWQoJnNnYjIpOworCisgICAgICAgIGR4ID0gd2lkdGggIC0gKG9mZnNldCAlIHdp ZHRoKSAtIDE7CisgICAgICAgIGR5ID0gaGVpZ2h0IC0gKG9mZnNldCAvIHdpZHRoKSAtIDE7CisK KyAgICAgICAgc3JjID0gcy0+c3ByaXRlX2RhdGEgKyBzcHJpdGVfb2Zmc2V0OworICAgICAgICBk dyA9IEZGTUlOKGR4ICsgc3ByaXRlX3csIHdpZHRoKTsKKyAgICAgICAgZGggPSBGRk1JTihkeSAr IHNwcml0ZV9oLCBoZWlnaHQpOworICAgICAgICBmb3IgKGludCB5ID0gZHk7IHkgPCBkaDsgeSsr KSB7CisgICAgICAgICAgICB1aW50OF90ICpkc3R5ID0gZHN0ICsgeSAqIGxpbmVzaXplOworICAg ICAgICAgICAgZm9yIChpbnQgaSA9IDAsIHggPSBkeDsgeCA8IGR3OyBpKyssIHgrKykKKyAgICAg ICAgICAgICAgICBkc3R5W3hdID0gc3JjW3NyY19vZmZzZXQgKyBpXTsKKyAgICAgICAgICAgIHNy Y19vZmZzZXQgKz0gc3ByaXRlX3c7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMTsK K30KKworc3RhdGljIGludCBkZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZy YW1lICpmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZ290X2ZyYW1lLCBBVlBh Y2tldCAqYXZwa3QpCit7CisgICAgUkZCV0NvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOwor ICAgIEdldEJ5dGVDb250ZXh0IGdiOworICAgIGludCByZXQ7CisKKyAgICBpZiAoYXZwa3QtPnNp emUgPCAyMikKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisKKyAgICBieXRl c3RyZWFtMl9pbml0KCZnYiwgYXZwa3QtPmRhdGEsIGF2cGt0LT5zaXplKTsKKworICAgIGlmICgo cmV0ID0gZGVjb2RlX3JmYncoYXZjdHgsICZnYiwgZnJhbWUsIGF2cGt0KSkgPD0gMCkKKyAgICAg ICAgcmV0dXJuIHJldDsKKworICAgIGlmIChzLT5rZXkpCisgICAgICAgIGZyYW1lLT5mbGFncyB8 PSBBVl9GUkFNRV9GTEFHX0tFWTsKKyAgICBmcmFtZS0+cGljdF90eXBlID0gKGZyYW1lLT5mbGFn cyAmIEFWX0ZSQU1FX0ZMQUdfS0VZKSA/IEFWX1BJQ1RVUkVfVFlQRV9JIDogQVZfUElDVFVSRV9U WVBFX1A7CisKKyAgICAqZ290X2ZyYW1lID0gMTsKKworICAgIHJldHVybiBhdnBrdC0+c2l6ZTsK K30KKworc3RhdGljIGF2X2NvbGQgaW50IGRlY29kZV9jbG9zZShBVkNvZGVjQ29udGV4dCAqYXZj dHgpCit7CisgICAgUkZCV0NvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOworCisgICAgZmZf aW5mbGF0ZV9lbmQoJnMtPnpzdHJlYW0pOworICAgIGF2X2ZyZWVwKCZzLT5zcHJpdGVfZGF0YSk7 CisgICAgYXZfZnJlZXAoJnMtPnNwcml0ZXMpOworICAgIGF2X2ZyZWVwKCZzLT5yZWN0cyk7Cisg ICAgYXZfZnJlZXAoJnMtPmRhdGEpOworICAgIGF2X2ZyYW1lX2ZyZWUoJnMtPmxhc3RfZnJhbWUp OworCisgICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IEZGQ29kZWMgZmZfcmZid19kZWNvZGVyID0g eworICAgIC5wLm5hbWUgICAgICAgICAgID0gInJmYnciLAorICAgIENPREVDX0xPTkdfTkFNRSgi UkZCVyBWaWRlbyIpLAorICAgIC5wLnR5cGUgICAgICAgICAgID0gQVZNRURJQV9UWVBFX1ZJREVP LAorICAgIC5wLmlkICAgICAgICAgICAgID0gQVZfQ09ERUNfSURfUkZCVywKKyAgICAucHJpdl9k YXRhX3NpemUgICA9IHNpemVvZihSRkJXQ29udGV4dCksCisgICAgLmluaXQgICAgICAgICAgICAg PSBkZWNvZGVfaW5pdCwKKyAgICBGRl9DT0RFQ19ERUNPREVfQ0IoZGVjb2RlX2ZyYW1lKSwKKyAg ICAuY2xvc2UgICAgICAgICAgICA9IGRlY29kZV9jbG9zZSwKKyAgICAuY2Fwc19pbnRlcm5hbCAg ICA9IEZGX0NPREVDX0NBUF9JTklUX0NMRUFOVVAsCisgICAgLnAuY2FwYWJpbGl0aWVzICAgPSBB Vl9DT0RFQ19DQVBfRFIxLAorfTsKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L3JpZmYuYyBiL2xp YmF2Zm9ybWF0L3JpZmYuYwppbmRleCA5NzcwOGRmNmUzLi4wZGU4YmJlNDlhIDEwMDY0NAotLS0g YS9saWJhdmZvcm1hdC9yaWZmLmMKKysrIGIvbGliYXZmb3JtYXQvcmlmZi5jCkBAIC01MDMsNiAr NTAzLDcgQEAgY29uc3QgQVZDb2RlY1RhZyBmZl9jb2RlY19ibXBfdGFnc1tdID0gewogICAgIHsg QVZfQ09ERUNfSURfVlFDLCAgICAgICAgICBNS1RBRygnVicsICdRJywgJ0MnLCAnMicpIH0sCiAg ICAgeyBBVl9DT0RFQ19JRF9SVFYxLCAgICAgICAgIE1LVEFHKCdSJywgJ1QnLCAnVicsICcxJykg fSwKICAgICB7IEFWX0NPREVDX0lEX1ZNSVgsICAgICAgICAgTUtUQUcoJ1YnLCAnTScsICdYJywg JzEnKSB9LAorICAgIHsgQVZfQ09ERUNfSURfUkZCVywgICAgICAgICBNS1RBRygnUicsICdGJywg J0InLCAnVycpIH0sCiAgICAgeyBBVl9DT0RFQ19JRF9OT05FLCAgICAgICAgIDAgfQogfTsKIAot LSAKMi4zOS4xCgo= --0000000000000a7e8405fe083294 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". --0000000000000a7e8405fe083294--