From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <ffmpeg-devel-bounces@ffmpeg.org> Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 04A6848FCB for <ffmpegdev@gitmailbox.com>; Mon, 1 Apr 2024 16:17:12 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1629368CEC8; Mon, 1 Apr 2024 19:17:03 +0300 (EEST) Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2FA7668CEBC for <ffmpeg-devel@ffmpeg.org>; Mon, 1 Apr 2024 19:16:56 +0300 (EEST) Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-a4702457ccbso519960466b.3 for <ffmpeg-devel@ffmpeg.org>; Mon, 01 Apr 2024 09:16:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711988215; x=1712593015; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kT5tWvGg0NbvxJ+geO3otb3e1vCe32iv5/uAhiQLddg=; b=ErC2D+sgeRB/t0DGJSvxB5AQheI/dQPSS+dRSAW5d/xHGzJIOKj+9N3238QmG20TXV iBM90kWkduZi99HZvEUDSC21KwR0HVaw0rAntv4FmoFyLmLnNH6t5gnjCzWXHkWUHWLe /YDF2dOKGorD59tgnmVBqMe/FsoFN/SnwuTgpM/zSQc3BPDnbmooGeSnuNgOUvR/J6CJ +RdkpRzaPjtZg5zIbQtxvJxrBtiXYzH5OpZaSwCwtq5bR18BrhgK+B0B9k4ru0T73gJE cQMYFVKvexd9dS9p3QXEy/pvKNcxUpm+iITn/NbcjKoLTLgyO/qEOhUj0m3wmpPojLIn QmSA== X-Gm-Message-State: AOJu0YyO9oZagE/AWd1W075bLXd+zOjfcQFNwLBmLs5ilAmf1K5ir4iK wX2A3bZYtqR+raDzS05Krm2wJVmzcfHZgud4q1rO9oL/zeI2KjMVs8i3sBPALgp0wgPwz5zTD4l T X-Google-Smtp-Source: AGHT+IEKR7bpBfcHWJicMGGp4CB1DS0MzthUmwTjaveubRfUedryDH4cLKyQ2banGTN9myQICyyrzg== X-Received: by 2002:a17:906:fac4:b0:a4d:f5d4:fb02 with SMTP id lu4-20020a170906fac400b00a4df5d4fb02mr6671620ejb.51.1711988215060; Mon, 01 Apr 2024 09:16:55 -0700 (PDT) Received: from Denniss-MBP.fritz.box (ip-088-152-103-184.um26.pools.vodafone-ip.de. [88.152.103.184]) by smtp.gmail.com with ESMTPSA id kf16-20020a17090776d000b00a46bf6d890bsm5491341ejc.91.2024.04.01.09.16.54 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 01 Apr 2024 09:16:54 -0700 (PDT) To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Apr 2024 18:16:50 +0200 Message-Id: <20240401161650.34063-2-dennis@obsproject.com> X-Mailer: git-send-email 2.39.3 (Apple Git-146) In-Reply-To: <20240401161650.34063-1-dennis@obsproject.com> References: <20240401161650.34063-1-dennis@obsproject.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] avformat/flvdec: Add support for demuxing multi-track FLV X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org> List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe> List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel> List-Post: <mailto:ffmpeg-devel@ffmpeg.org> List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help> List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe> From: =?utf-8?q?Dennis_S=C3=A4dtler_via_ffmpeg-devel?= <ffmpeg-devel@ffmpeg.org> Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Cc: =?UTF-8?q?Dennis=20S=C3=A4dtler?= <dennis@obsproject.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org> Archived-At: <https://master.gitmailbox.com/ffmpegdev/20240401161650.34063-2-dennis@obsproject.com/> List-Archive: <https://master.gitmailbox.com/ffmpegdev/> List-Post: <mailto:ffmpegdev@gitmailbox.com> QmFzZWQgb24gZW5oYW5jZWQtcnRtcCB2MiBzcGVjIHB1Ymxpc2hlZCBieSBWZW92ZXJhOgpodHRw czovL3Zlb3ZlcmEuZ2l0aHViLmlvL2VuaGFuY2VkLXJ0bXAvZG9jcy9lbmhhbmNlZC9lbmhhbmNl ZC1ydG1wLXYyCgpTaWduZWQtb2ZmLWJ5OiBEZW5uaXMgU8OkZHRsZXIgPGRlbm5pc0BvYnNwcm9q ZWN0LmNvbT4KLS0tCiBsaWJhdmZvcm1hdC9mbHZkZWMuYyB8IDExNyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOTYgaW5zZXJ0aW9u cygrKSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvZmx2ZGVjLmMg Yi9saWJhdmZvcm1hdC9mbHZkZWMuYwppbmRleCAyMmE5YjllNGE3Li4zOWQwMWQzYjFmIDEwMDY0 NAotLS0gYS9saWJhdmZvcm1hdC9mbHZkZWMuYworKysgYi9saWJhdmZvcm1hdC9mbHZkZWMuYwpA QCAtMTA1LDYgKzEwNSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBGTFZDb250ZXh0IHsKIAogICAgIEZM Vk1ldGFWaWRlb0NvbG9yICptZXRhVmlkZW9Db2xvcjsKICAgICBpbnQgbWV0YV9jb2xvcl9pbmZv X2ZsYWc7CisgICAgCisgICAgdWludDhfdCAqKm10X2V4dHJhZGF0YTsKKyAgICBpbnQgKm10X2V4 dHJhZGF0YV9zejsKKyAgICBpbnQgbXRfZXh0cmFkYXRhX2NudDsKIH0gRkxWQ29udGV4dDsKIAog LyogQU1GIGRhdGUgdHlwZSAqLwpAQCAtMTg3LDEzICsxOTEsMTggQEAgc3RhdGljIHZvaWQgYWRk X2tleWZyYW1lc19pbmRleChBVkZvcm1hdENvbnRleHQgKnMpCiAgICAgfQogfQogCi1zdGF0aWMg QVZTdHJlYW0gKmNyZWF0ZV9zdHJlYW0oQVZGb3JtYXRDb250ZXh0ICpzLCBpbnQgY29kZWNfdHlw ZSkKK3N0YXRpYyBBVlN0cmVhbSAqY3JlYXRlX3N0cmVhbShBVkZvcm1hdENvbnRleHQgKnMsIGlu dCBjb2RlY190eXBlLCBpbnQgdHJhY2tfaWR4KQogewogICAgIEZMVkNvbnRleHQgKmZsdiAgID0g cy0+cHJpdl9kYXRhOwogICAgIEFWU3RyZWFtICpzdCA9IGF2Zm9ybWF0X25ld19zdHJlYW0ocywg TlVMTCk7CiAgICAgaWYgKCFzdCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgc3QtPmNvZGVj cGFyLT5jb2RlY190eXBlID0gY29kZWNfdHlwZTsKKyAgICBzdC0+aWQgPSB0cmFja19pZHg7Cisg ICAgYXZwcml2X3NldF9wdHNfaW5mbyhzdCwgMzIsIDEsIDEwMDApOyAvKiAzMiBiaXQgcHRzIGlu IG1zICovCisgICAgaWYgKHRyYWNrX2lkeCkKKyAgICAgICAgcmV0dXJuIHN0OworCiAgICAgaWYg KHMtPm5iX3N0cmVhbXM+PTMgfHwoICAgcy0+bmJfc3RyZWFtcz09MgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgJiYgcy0+c3RyZWFtc1swXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgIT0gQVZN RURJQV9UWVBFX1NVQlRJVExFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzLT5zdHJl YW1zWzFdLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSAhPSBBVk1FRElBX1RZUEVfU1VCVElUTEUKQEAg LTIxMCw4ICsyMTksNiBAQCBzdGF0aWMgQVZTdHJlYW0gKmNyZWF0ZV9zdHJlYW0oQVZGb3JtYXRD b250ZXh0ICpzLCBpbnQgY29kZWNfdHlwZSkKICAgICAgICAgc3QtPmF2Z19mcmFtZV9yYXRlID0g Zmx2LT5mcmFtZXJhdGU7CiAgICAgfQogCi0KLSAgICBhdnByaXZfc2V0X3B0c19pbmZvKHN0LCAz MiwgMSwgMTAwMCk7IC8qIDMyIGJpdCBwdHMgaW4gbXMgKi8KICAgICBmbHYtPmxhc3Rfa2V5ZnJh bWVfc3RyZWFtX2luZGV4ID0gcy0+bmJfc3RyZWFtcyAtIDE7CiAgICAgYWRkX2tleWZyYW1lc19p bmRleChzKTsKICAgICByZXR1cm4gc3Q7CkBAIC0zNTEsNiArMzU4LDcgQEAgc3RhdGljIGludCBm bHZfc2FtZV92aWRlb19jb2RlYyhBVkNvZGVjUGFyYW1ldGVycyAqdnBhciwgdWludDMyX3QgZmx2 X2NvZGVjaWQpCiAgICAgY2FzZSBGTFZfQ09ERUNJRF9WUDZBOgogICAgICAgICByZXR1cm4gdnBh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA2QTsKICAgICBjYXNlIEZMVl9DT0RFQ0lEX0gy NjQ6CisgICAgY2FzZSBNS0JFVEFHKCdhJywgJ3YnLCAnYycsICcxJyk6CiAgICAgICAgIHJldHVy biB2cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0OwogICAgIGRlZmF1bHQ6CiAgICAg ICAgIHJldHVybiB2cGFyLT5jb2RlY190YWcgPT0gZmx2X2NvZGVjaWQ7CkBAIC00MDcsNiArNDE1 LDcgQEAgc3RhdGljIGludCBmbHZfc2V0X3ZpZGVvX2NvZGVjKEFWRm9ybWF0Q29udGV4dCAqcywg QVZTdHJlYW0gKnZzdHJlYW0sCiAgICAgICAgIHJldCA9IDE7ICAgICAvLyAxIGJ5dGUgYm9keSBz aXplIGFkanVzdG1lbnQgZm9yIGZsdl9yZWFkX3BhY2tldCgpCiAgICAgICAgIGJyZWFrOwogICAg IGNhc2UgRkxWX0NPREVDSURfSDI2NDoKKyAgICBjYXNlIE1LQkVUQUcoJ2EnLCAndicsICdjJywg JzEnKToKICAgICAgICAgcGFyLT5jb2RlY19pZCA9IEFWX0NPREVDX0lEX0gyNjQ7CiAgICAgICAg IHZzdHJlYW1pLT5uZWVkX3BhcnNpbmcgPSBBVlNUUkVBTV9QQVJTRV9IRUFERVJTOwogICAgICAg ICBicmVhazsKQEAgLTY3Niw3ICs2ODUsNyBAQCBzdGF0aWMgaW50IGFtZl9wYXJzZV9vYmplY3Qo QVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqYXN0cmVhbSwKICAgICAgICAgICAgICAgICAg ICAgfSBlbHNlIGlmICghc3RyY21wKGtleSwgImhlaWdodCIpICYmIHZwYXIpIHsKICAgICAgICAg ICAgICAgICAgICAgICAgIHZwYXItPmhlaWdodCA9IG51bV92YWw7CiAgICAgICAgICAgICAgICAg ICAgIH0gZWxzZSBpZiAoIXN0cmNtcChrZXksICJkYXRhc3RyZWFtIikpIHsKLSAgICAgICAgICAg ICAgICAgICAgICAgIEFWU3RyZWFtICpzdCA9IGNyZWF0ZV9zdHJlYW0ocywgQVZNRURJQV9UWVBF X1NVQlRJVExFKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFWU3RyZWFtICpzdCA9IGNyZWF0 ZV9zdHJlYW0ocywgQVZNRURJQV9UWVBFX1NVQlRJVExFLCAwKTsKICAgICAgICAgICAgICAgICAg ICAgICAgIGlmICghc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1IoRU5PTUVNKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNf aWQgPSBBVl9DT0RFQ19JRF9URVhUOwpAQCAtODg1LDYgKzg5NCw5IEBAIHN0YXRpYyBpbnQgZmx2 X3JlYWRfY2xvc2UoQVZGb3JtYXRDb250ZXh0ICpzKQogICAgIEZMVkNvbnRleHQgKmZsdiA9IHMt PnByaXZfZGF0YTsKICAgICBmb3IgKGk9MDsgaTxGTFZfU1RSRUFNX1RZUEVfTkI7IGkrKykKICAg ICAgICAgYXZfZnJlZXAoJmZsdi0+bmV3X2V4dHJhZGF0YVtpXSk7CisgICAgZm9yIChpPTA7IGkg PCBmbHYtPm10X2V4dHJhZGF0YV9jbnQ7IGkrKykKKyAgICAgICAgYXZfZnJlZXAoJmZsdi0+bXRf ZXh0cmFkYXRhW2ldKTsKKyAgICBhdl9mcmVlcCgmZmx2LT5tdF9leHRyYWRhdGFfc3opOwogICAg IGF2X2ZyZWVwKCZmbHYtPmtleWZyYW1lX3RpbWVzKTsKICAgICBhdl9mcmVlcCgmZmx2LT5rZXlm cmFtZV9maWxlcG9zaXRpb25zKTsKICAgICBhdl9mcmVlcCgmZmx2LT5tZXRhVmlkZW9Db2xvcik7 CkBAIC05MDQsMTggKzkxNiw0NyBAQCBzdGF0aWMgaW50IGZsdl9nZXRfZXh0cmFkYXRhKEFWRm9y bWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0LCBpbnQgc2l6ZSkKIH0KIAogc3RhdGljIGludCBm bHZfcXVldWVfZXh0cmFkYXRhKEZMVkNvbnRleHQgKmZsdiwgQVZJT0NvbnRleHQgKnBiLCBpbnQg c3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplLCBpbnQgbXVsdGl0cmFjaykKIHsKICAg ICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgYXZfZnJlZShmbHYtPm5ld19l eHRyYWRhdGFbc3RyZWFtXSk7Ci0gICAgZmx2LT5uZXdfZXh0cmFkYXRhW3N0cmVhbV0gPSBhdl9t YWxsb2N6KHNpemUgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBBVl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFKTsKLSAgICBpZiAoIWZsdi0+bmV3X2V4dHJh ZGF0YVtzdHJlYW1dKQotICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwotICAgIGZsdi0+ bmV3X2V4dHJhZGF0YV9zaXplW3N0cmVhbV0gPSBzaXplOwotICAgIGF2aW9fcmVhZChwYiwgZmx2 LT5uZXdfZXh0cmFkYXRhW3N0cmVhbV0sIHNpemUpOworICAgIGlmICghbXVsdGl0cmFjaykgewor ICAgICAgICBhdl9mcmVlKGZsdi0+bmV3X2V4dHJhZGF0YVtzdHJlYW1dKTsKKyAgICAgICAgZmx2 LT5uZXdfZXh0cmFkYXRhW3N0cmVhbV0gPSBhdl9tYWxsb2N6KHNpemUgKworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfSU5QVVRfQlVGRkVSX1BBRERJ TkdfU0laRSk7CisgICAgICAgIGlmICghZmx2LT5uZXdfZXh0cmFkYXRhW3N0cmVhbV0pCisgICAg ICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworICAgICAgICBmbHYtPm5ld19leHRyYWRh dGFfc2l6ZVtzdHJlYW1dID0gc2l6ZTsKKyAgICAgICAgYXZpb19yZWFkKHBiLCBmbHYtPm5ld19l eHRyYWRhdGFbc3RyZWFtXSwgc2l6ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IG5ld19j b3VudCA9IHN0cmVhbSArIDE7CisKKyAgICAgICAgaWYgKGZsdi0+bXRfZXh0cmFkYXRhX2NudCA8 IG5ld19jb3VudCkgeworICAgICAgICAgICAgZmx2LT5tdF9leHRyYWRhdGEgPSBhdl9yZWFsbG9j KGZsdi0+bXRfZXh0cmFkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVvZigqZmx2LT5tdF9leHRyYWRhdGEpICogCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2NvdW50KTsKKyAgICAgICAgICAgIGZsdi0+bXRf ZXh0cmFkYXRhX3N6ID0gYXZfcmVhbGxvYyhmbHYtPm10X2V4dHJhZGF0YV9zeiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoKmZsdi0+bXRfZXh0 cmFkYXRhX3N6KSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmV3X2NvdW50KTsKKyAgICAgICAgICAgIGlmICghZmx2LT5tdF9leHRyYWRhdGEgfHwgIWZs di0+bXRfZXh0cmFkYXRhX3N6KQorICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01F TSk7CisgICAgICAgICAgICAvLyBTZXQgbmV3bHkgYWxsb2NhdGVkIHBvaW50ZXJzL3NpemVzIHRv IDAKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSBmbHYtPm10X2V4dHJhZGF0YV9jbnQ7IGkgPCBu ZXdfY291bnQ7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBmbHYtPm10X2V4dHJhZGF0YVtp XSA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGZsdi0+bXRfZXh0cmFkYXRhX3N6W2ldID0g MDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZsdi0+bXRfZXh0cmFkYXRhX2NudCA9IG5l d19jb3VudDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYXZfZnJlZShmbHYtPm10X2V4 dHJhZGF0YVtzdHJlYW1dKTsKKyAgICAgICAgZmx2LT5tdF9leHRyYWRhdGFbc3RyZWFtXSA9IGF2 X21hbGxvY3ooc2l6ZSArIEFWX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUpOworICAgICAgICBp ZiAoIWZsdi0+bXRfZXh0cmFkYXRhW3N0cmVhbV0pCisgICAgICAgICAgICByZXR1cm4gQVZFUlJP UihFTk9NRU0pOworICAgICAgICBmbHYtPm10X2V4dHJhZGF0YV9zeltzdHJlYW1dID0gc2l6ZTsK KyAgICAgICAgYXZpb19yZWFkKHBiLCBmbHYtPm10X2V4dHJhZGF0YVtzdHJlYW1dLCBzaXplKTsK KyAgICB9CisgICAgCiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEwMzEsNyArMTA3Miw3IEBAIHN0 YXRpYyBpbnQgZmx2X2RhdGFfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBr dCwKICAgICB9CiAKICAgICBpZiAoaSA9PSBzLT5uYl9zdHJlYW1zKSB7Ci0gICAgICAgIHN0ID0g Y3JlYXRlX3N0cmVhbShzLCBBVk1FRElBX1RZUEVfU1VCVElUTEUpOworICAgICAgICBzdCA9IGNy ZWF0ZV9zdHJlYW0ocywgQVZNRURJQV9UWVBFX1NVQlRJVExFLCAwKTsKICAgICAgICAgaWYgKCFz dCkKICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAgICAgICAgIHN0LT5jb2Rl Y3Bhci0+Y29kZWNfaWQgPSBBVl9DT0RFQ19JRF9URVhUOwpAQCAtMTIwMyw2ICsxMjQ0LDkgQEAg c3RhdGljIGludCBmbHZfcmVhZF9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAq cGt0KQogICAgIGludCBsYXN0ID0gLTE7CiAgICAgaW50IG9yaWdfc2l6ZTsKICAgICBpbnQgZW5o YW5jZWRfZmx2ID0gMDsKKyAgICBpbnQgbXVsdGl0cmFjayA9IDA7CisgICAgaW50IHBrdF90eXBl ID0gMDsKKyAgICB1aW50OF90IHRyYWNrX2lkeCA9IDA7CiAgICAgdWludDMyX3QgdmlkZW9fY29k ZWNfaWQgPSAwOwogCiByZXRyeToKQEAgLTEyNTYsMTQgKzEzMDAsMzMgQEAgcmV0cnk6CiAgICAg ICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS92ZW92ZXJhL2VuaGFuY2VkLXJ0bXAvYmxvYi9tYWlu L2VuaGFuY2VkLXJ0bXAtdjEucGRmCiAgICAgICAgICAqICovCiAgICAgICAgIGVuaGFuY2VkX2Zs diA9IChmbGFncyA+PiA3KSAmIDE7CisgICAgICAgIHBrdF90eXBlID0gZW5oYW5jZWRfZmx2ID8g dmlkZW9fY29kZWNfaWQgOiAwOwogICAgICAgICBzaXplLS07CisgICAgICAgIAorICAgICAgICBp ZiAocGt0X3R5cGUgPT0gUGFja2V0VHlwZU11bHRpdHJhY2spIHsKKyAgICAgICAgICAgIHVpbnQ4 X3QgdHlwZXMgPSBhdmlvX3I4KHMtPnBiKTsKKyAgICAgICAgICAgIGludCBtdWx0aXRyYWNrX3R5 cGUgPSB0eXBlcyA+PiA0OworICAgICAgICAgICAgcGt0X3R5cGUgPSB0eXBlcyAmIDB4RjsKKyAg ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG11bHRpdHJhY2tfdHlwZSAhPSBNdWx0aXRyYWNr VHlwZU9uZVRyYWNrKSB7CisgICAgICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwg Ik11bHRpdHJhY2sgdHlwZXMgb3RoZXIgdGhhbiBNdWx0aXRyYWNrVHlwZU9uZVRyYWNrIGFyZSB1 bnN1cHBvcnRlZCFcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX1BBVENIV0VM Q09NRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbXVsdGl0cmFj ayA9IDE7CisgICAgICAgICAgICBzaXplLS07CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAg IGlmIChlbmhhbmNlZF9mbHYpIHsKICAgICAgICAgICAgIHZpZGVvX2NvZGVjX2lkID0gYXZpb19y YjMyKHMtPnBiKTsKICAgICAgICAgICAgIHNpemUgLT0gNDsKICAgICAgICAgfQorICAgICAgICBp ZiAobXVsdGl0cmFjaykgeworICAgICAgICAgICAgdHJhY2tfaWR4ID0gYXZpb19yOChzLT5wYik7 CisgICAgICAgICAgICBzaXplLS07CisgICAgICAgIH0KIAotICAgICAgICBpZiAoZW5oYW5jZWRf Zmx2ICYmIHN0cmVhbV90eXBlID09IEZMVl9TVFJFQU1fVFlQRV9WSURFTyAmJiAoZmxhZ3MgJiBG TFZfVklERU9fRlJBTUVUWVBFX01BU0spID09IEZMVl9GUkFNRV9WSURFT19JTkZPX0NNRCkgewot ICAgICAgICAgICAgaW50IHBrdF90eXBlID0gZmxhZ3MgJiAweDBGOworICAgICAgICBpZiAoZW5o YW5jZWRfZmx2ICYmIChmbGFncyAmIEZMVl9WSURFT19GUkFNRVRZUEVfTUFTSykgPT0gRkxWX0ZS QU1FX1ZJREVPX0lORk9fQ01EKSB7CiAgICAgICAgICAgICBpZiAocGt0X3R5cGUgPT0gUGFja2V0 VHlwZU1ldGFkYXRhKSB7CiAgICAgICAgICAgICAgICAgaW50IHJldCA9IGZsdl9wYXJzZV92aWRl b19jb2xvcl9pbmZvKHMsIHN0LCBuZXh0KTsKICAgICAgICAgICAgICAgICBhdl9sb2cocywgQVZf TE9HX0RFQlVHLCAiZW5oYW5jZWQgZmx2IHBhcnNlIG1ldGFkYXRhIHJldCAlZCBhbmQgc2tpcFxu IiwgcmV0KTsKQEAgLTEzMjcsNyArMTM5MCw4IEBAIHNraXA6CiAgICAgICAgICAgICAgICAgYnJl YWs7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RyZWFtX3R5cGUgPT0gRkxWX1NUUkVBTV9UWVBFX1ZJ REVPKSB7CiAgICAgICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVE SUFfVFlQRV9WSURFTyAmJgotICAgICAgICAgICAgICAgIChzLT52aWRlb19jb2RlY19pZCB8fCBm bHZfc2FtZV92aWRlb19jb2RlYyhzdC0+Y29kZWNwYXIsIHZpZGVvX2NvZGVjX2lkKSkpCisgICAg ICAgICAgICAgICAgKHMtPnZpZGVvX2NvZGVjX2lkIHx8IGZsdl9zYW1lX3ZpZGVvX2NvZGVjKHN0 LT5jb2RlY3BhciwgdmlkZW9fY29kZWNfaWQpKSAmJgorICAgICAgICAgICAgICAgIHN0LT5pZCA9 PSB0cmFja19pZHgpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSBpZiAo c3RyZWFtX3R5cGUgPT0gRkxWX1NUUkVBTV9UWVBFX1NVQlRJVExFKSB7CiAgICAgICAgICAgICBp ZiAoc3QtPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9TVUJUSVRMRSkKQEAg LTEzMzksNyArMTQwMyw3IEBAIHNraXA6CiAgICAgfQogICAgIGlmIChpID09IHMtPm5iX3N0cmVh bXMpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGVudW0gQVZNZWRpYVR5cGUgc3RyZWFtX3R5cGVz W10gPSB7QVZNRURJQV9UWVBFX1ZJREVPLCBBVk1FRElBX1RZUEVfQVVESU8sIEFWTUVESUFfVFlQ RV9TVUJUSVRMRSwgQVZNRURJQV9UWVBFX0RBVEF9OwotICAgICAgICBzdCA9IGNyZWF0ZV9zdHJl YW0ocywgc3RyZWFtX3R5cGVzW3N0cmVhbV90eXBlXSk7CisgICAgICAgIHN0ID0gY3JlYXRlX3N0 cmVhbShzLCBzdHJlYW1fdHlwZXNbc3RyZWFtX3R5cGVdLCB0cmFja19pZHgpOwogICAgICAgICBp ZiAoIXN0KQogICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKICAgICB9CkBAIC0x NDQ2LDcgKzE1MTAsNyBAQCByZXRyeV9kdXJhdGlvbjoKICAgICAgICAgc3QtPmNvZGVjcGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpIHsKICAgICAgICAgaW50IHR5cGUgPSAwOwogICAg ICAgICBpZiAoZW5oYW5jZWRfZmx2ICYmIHN0cmVhbV90eXBlID09IEZMVl9TVFJFQU1fVFlQRV9W SURFTykgewotICAgICAgICAgICAgdHlwZSA9IGZsYWdzICYgMHgwRjsKKyAgICAgICAgICAgIHR5 cGUgPSBwa3RfdHlwZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHR5cGUgPSBhdmlv X3I4KHMtPnBiKTsKICAgICAgICAgICAgIHNpemUtLTsKQEAgLTE0NjIsNyArMTUyNiw4IEBAIHJl dHJ5X2R1cmF0aW9uOgogICAgICAgICAgICAgZmx2LT5tZXRhX2NvbG9yX2luZm9fZmxhZyA9IDA7 CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9D T0RFQ19JRF9IMjY0IHx8IHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBF RzQgfHwKKyAgICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf TVBFRzQgfHwKKyAgICAgICAgICAgIChzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVD X0lEX0gyNjQgJiYgKCFlbmhhbmNlZF9mbHYgfHwgdHlwZSA9PSBQYWNrZXRUeXBlQ29kZWRGcmFt ZXMpKSB8fAogICAgICAgICAgICAgKHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNf SURfSEVWQyAmJiB0eXBlID09IFBhY2tldFR5cGVDb2RlZEZyYW1lcykpIHsKICAgICAgICAgICAg IC8vIHNpZ24gZXh0ZW5zaW9uCiAgICAgICAgICAgICBpbnQzMl90IGN0cyA9IChhdmlvX3JiMjQo cy0+cGIpICsgMHhmZjgwMDAwMCkgXiAweGZmODAwMDAwOwpAQCAtMTQ4NSw3ICsxNTUwLDcgQEAg cmV0cnlfZHVyYXRpb246CiAgICAgICAgICAgICBBVkRpY3Rpb25hcnlFbnRyeSAqdDsKIAogICAg ICAgICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhKSB7Ci0gICAgICAgICAgICAgICAg aWYgKChyZXQgPSBmbHZfcXVldWVfZXh0cmFkYXRhKGZsdiwgcy0+cGIsIHN0cmVhbV90eXBlLCBz aXplKSkgPCAwKQorICAgICAgICAgICAgICAgIGlmICgocmV0ID0gZmx2X3F1ZXVlX2V4dHJhZGF0 YShmbHYsIHMtPnBiLCBtdWx0aXRyYWNrID8gdHJhY2tfaWR4IDogc3RyZWFtX3R5cGUsIHNpemUs IG11bHRpdHJhY2spKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAg ICAgICAgICAgICAgcmV0ID0gRkZFUlJPUl9SRURPOwogICAgICAgICAgICAgICAgIGdvdG8gbGVh dmU7CkBAIC0xNTE2LDcgKzE1ODEsNyBAQCByZXRyeV9kdXJhdGlvbjoKICAgICBwa3QtPnB0cyAg ICAgICAgICA9IHB0cyA9PSBBVl9OT1BUU19WQUxVRSA/IGR0cyA6IHB0czsKICAgICBwa3QtPnN0 cmVhbV9pbmRleCA9IHN0LT5pbmRleDsKICAgICBwa3QtPnBvcyAgICAgICAgICA9IHBvczsKLSAg ICBpZiAoZmx2LT5uZXdfZXh0cmFkYXRhW3N0cmVhbV90eXBlXSkgeworICAgIGlmICghbXVsdGl0 cmFjayAmJiBmbHYtPm5ld19leHRyYWRhdGFbc3RyZWFtX3R5cGVdKSB7CiAgICAgICAgIGludCBy ZXQgPSBhdl9wYWNrZXRfYWRkX3NpZGVfZGF0YShwa3QsIEFWX1BLVF9EQVRBX05FV19FWFRSQURB VEEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbHYtPm5ld19l eHRyYWRhdGFbc3RyZWFtX3R5cGVdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZmx2LT5uZXdfZXh0cmFkYXRhX3NpemVbc3RyZWFtX3R5cGVdKTsKQEAgLTE1MjQs NiArMTU4OSwxNiBAQCByZXRyeV9kdXJhdGlvbjoKICAgICAgICAgICAgIGZsdi0+bmV3X2V4dHJh ZGF0YVtzdHJlYW1fdHlwZV0gICAgICA9IE5VTEw7CiAgICAgICAgICAgICBmbHYtPm5ld19leHRy YWRhdGFfc2l6ZVtzdHJlYW1fdHlwZV0gPSAwOwogICAgICAgICB9CisgICAgfSBlbHNlIGlmICht dWx0aXRyYWNrCisgICAgICAgICAgICAgICAmJiBmbHYtPm10X2V4dHJhZGF0YV9jbnQgPiB0cmFj a19pZHgKKyAgICAgICAgICAgICAgICYmIGZsdi0+bXRfZXh0cmFkYXRhW3RyYWNrX2lkeF0pIHsK KyAgICAgICAgaW50IHJldCA9IGF2X3BhY2tldF9hZGRfc2lkZV9kYXRhKHBrdCwgQVZfUEtUX0RB VEFfTkVXX0VYVFJBREFUQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZsdi0+bXRfZXh0cmFkYXRhW3RyYWNrX2lkeF0sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmbHYtPm10X2V4dHJhZGF0YV9zelt0cmFja19pZHhdKTsKKyAg ICAgICAgaWYgKHJldCA+PSAwKSB7CisgICAgICAgICAgICBmbHYtPm10X2V4dHJhZGF0YVt0cmFj a19pZHhdICAgICAgPSBOVUxMOworICAgICAgICAgICAgZmx2LT5tdF9leHRyYWRhdGFfc3pbdHJh Y2tfaWR4XSA9IDA7CisgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHN0cmVhbV90eXBlID09IEZM Vl9TVFJFQU1fVFlQRV9BVURJTyAmJgogICAgICAgICAgICAgICAgICAgICAoc2FtcGxlX3JhdGUg IT0gZmx2LT5sYXN0X3NhbXBsZV9yYXRlIHx8Ci0tIAoyLjM5LjMgKEFwcGxlIEdpdC0xNDYpCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2 ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxp bmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBz dWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==