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 CA5A64780D for ; Tue, 21 May 2024 09:04:09 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A381968D366; Tue, 21 May 2024 12:03:45 +0300 (EEST) Received: from btbn.de (btbn.de [144.76.60.213]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 18FFD68D2D4 for ; Tue, 21 May 2024 12:03:38 +0300 (EEST) Received: from [authenticated] by btbn.de (Postfix) with ESMTPSA id 99D2E27FFD908; Tue, 21 May 2024 11:03:37 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rothenpieler.org; s=mail; t=1716282217; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JL0NFd9iqU2qyZIhx2VRuQKz1d1IG+pdubnNgF9EcrQ=; b=bgBdh4FlREh35wtQsLasBCVYVwvf8ea10wv4RnG8GQhoDfNDbTg36BNau7QpqmI6g7Z75H zczTxMR+iGDQ+dEVGe1ylUTmYlyUYs9Jjmalfivph6NBxZdhyB5lKnqquQv9SZD8TGKJfP I+mY3NnlUw34VRTHmGDImQ36r9rYjFXvcvohQ/CEWcY+uGczHbLi62sDhgLFRcAOr0afkX b3Sq4QS5jKYhGYQ4KvpFBU+nqjQuInFJjLCA50qy42JgwK2mr8MxjcGQlb+8edrimqVCkT 35XpJmFoc0+Uk+bFHmIE9rrn8fMzeTbqNoR6zr9soXaq/V5TLdSKzX8JAnR3Ag== From: Timo Rothenpieler To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 May 2024 11:02:11 +0200 Message-ID: <20240521090316.782-3-timo@rothenpieler.org> X-Mailer: git-send-email 2.43.2 In-Reply-To: <20240521090316.782-1-timo@rothenpieler.org> References: <20240521090316.782-1-timo@rothenpieler.org> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 02/13] 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: =?UTF-8?q?Dennis=20S=C3=A4dtler?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: RnJvbTogRGVubmlzIFPDpGR0bGVyIHZpYSBmZm1wZWctZGV2ZWwgPGZmbXBlZy1kZXZlbEBmZm1w ZWcub3JnPgoKQmFzZWQgb24gZW5oYW5jZWQtcnRtcCB2MiBzcGVjIHB1Ymxpc2hlZCBieSBWZW92 ZXJhOgpodHRwczovL3Zlb3ZlcmEuZ2l0aHViLmlvL2VuaGFuY2VkLXJ0bXAvZG9jcy9lbmhhbmNl ZC9lbmhhbmNlZC1ydG1wLXYyCgpTaWduZWQtb2ZmLWJ5OiBEZW5uaXMgU8OkZHRsZXIgPGRlbm5p c0BvYnNwcm9qZWN0LmNvbT4KLS0tCiBsaWJhdmZvcm1hdC9mbHZkZWMuYyB8IDExNyArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOTYg aW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQv Zmx2ZGVjLmMgYi9saWJhdmZvcm1hdC9mbHZkZWMuYwppbmRleCAyMmE5YjllNGE3Li4yNDQ1ZDFm ZDVlIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9mbHZkZWMuYworKysgYi9saWJhdmZvcm1hdC9m bHZkZWMuYwpAQCAtMTA1LDYgKzEwNSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBGTFZDb250ZXh0IHsK IAogICAgIEZMVk1ldGFWaWRlb0NvbG9yICptZXRhVmlkZW9Db2xvcjsKICAgICBpbnQgbWV0YV9j b2xvcl9pbmZvX2ZsYWc7CisKKyAgICB1aW50OF90ICoqbXRfZXh0cmFkYXRhOworICAgIGludCAq bXRfZXh0cmFkYXRhX3N6OworICAgIGludCBtdF9leHRyYWRhdGFfY250OwogfSBGTFZDb250ZXh0 OwogCiAvKiBBTUYgZGF0ZSB0eXBlICovCkBAIC0xODcsMTMgKzE5MSwxOCBAQCBzdGF0aWMgdm9p ZCBhZGRfa2V5ZnJhbWVzX2luZGV4KEFWRm9ybWF0Q29udGV4dCAqcykKICAgICB9CiB9CiAKLXN0 YXRpYyBBVlN0cmVhbSAqY3JlYXRlX3N0cmVhbShBVkZvcm1hdENvbnRleHQgKnMsIGludCBjb2Rl Y190eXBlKQorc3RhdGljIEFWU3RyZWFtICpjcmVhdGVfc3RyZWFtKEFWRm9ybWF0Q29udGV4dCAq cywgaW50IGNvZGVjX3R5cGUsIGludCB0cmFja19pZHgpCiB7CiAgICAgRkxWQ29udGV4dCAqZmx2 ICAgPSBzLT5wcml2X2RhdGE7CiAgICAgQVZTdHJlYW0gKnN0ID0gYXZmb3JtYXRfbmV3X3N0cmVh bShzLCBOVUxMKTsKICAgICBpZiAoIXN0KQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzdC0+ Y29kZWNwYXItPmNvZGVjX3R5cGUgPSBjb2RlY190eXBlOworICAgIHN0LT5pZCA9IHRyYWNrX2lk eDsKKyAgICBhdnByaXZfc2V0X3B0c19pbmZvKHN0LCAzMiwgMSwgMTAwMCk7IC8qIDMyIGJpdCBw dHMgaW4gbXMgKi8KKyAgICBpZiAodHJhY2tfaWR4KQorICAgICAgICByZXR1cm4gc3Q7CisKICAg ICBpZiAocy0+bmJfc3RyZWFtcz49MyB8fCggICBzLT5uYl9zdHJlYW1zPT0yCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmJiBzLT5zdHJlYW1zWzBdLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSAh PSBBVk1FRElBX1RZUEVfU1VCVElUTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHMt PnN0cmVhbXNbMV0tPmNvZGVjcGFyLT5jb2RlY190eXBlICE9IEFWTUVESUFfVFlQRV9TVUJUSVRM RQpAQCAtMjEwLDggKzIxOSw2IEBAIHN0YXRpYyBBVlN0cmVhbSAqY3JlYXRlX3N0cmVhbShBVkZv cm1hdENvbnRleHQgKnMsIGludCBjb2RlY190eXBlKQogICAgICAgICBzdC0+YXZnX2ZyYW1lX3Jh dGUgPSBmbHYtPmZyYW1lcmF0ZTsKICAgICB9CiAKLQotICAgIGF2cHJpdl9zZXRfcHRzX2luZm8o c3QsIDMyLCAxLCAxMDAwKTsgLyogMzIgYml0IHB0cyBpbiBtcyAqLwogICAgIGZsdi0+bGFzdF9r ZXlmcmFtZV9zdHJlYW1faW5kZXggPSBzLT5uYl9zdHJlYW1zIC0gMTsKICAgICBhZGRfa2V5ZnJh bWVzX2luZGV4KHMpOwogICAgIHJldHVybiBzdDsKQEAgLTM1MSw2ICszNTgsNyBAQCBzdGF0aWMg aW50IGZsdl9zYW1lX3ZpZGVvX2NvZGVjKEFWQ29kZWNQYXJhbWV0ZXJzICp2cGFyLCB1aW50MzJf dCBmbHZfY29kZWNpZCkKICAgICBjYXNlIEZMVl9DT0RFQ0lEX1ZQNkE6CiAgICAgICAgIHJldHVy biB2cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDZBOwogICAgIGNhc2UgRkxWX0NPREVD SURfSDI2NDoKKyAgICBjYXNlIE1LQkVUQUcoJ2EnLCAndicsICdjJywgJzEnKToKICAgICAgICAg cmV0dXJuIHZwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQ7CiAgICAgZGVmYXVsdDoK ICAgICAgICAgcmV0dXJuIHZwYXItPmNvZGVjX3RhZyA9PSBmbHZfY29kZWNpZDsKQEAgLTQwNyw2 ICs0MTUsNyBAQCBzdGF0aWMgaW50IGZsdl9zZXRfdmlkZW9fY29kZWMoQVZGb3JtYXRDb250ZXh0 ICpzLCBBVlN0cmVhbSAqdnN0cmVhbSwKICAgICAgICAgcmV0ID0gMTsgICAgIC8vIDEgYnl0ZSBi b2R5IHNpemUgYWRqdXN0bWVudCBmb3IgZmx2X3JlYWRfcGFja2V0KCkKICAgICAgICAgYnJlYWs7 CiAgICAgY2FzZSBGTFZfQ09ERUNJRF9IMjY0OgorICAgIGNhc2UgTUtCRVRBRygnYScsICd2Jywg J2MnLCAnMScpOgogICAgICAgICBwYXItPmNvZGVjX2lkID0gQVZfQ09ERUNfSURfSDI2NDsKICAg ICAgICAgdnN0cmVhbWktPm5lZWRfcGFyc2luZyA9IEFWU1RSRUFNX1BBUlNFX0hFQURFUlM7CiAg ICAgICAgIGJyZWFrOwpAQCAtNjc2LDcgKzY4NSw3IEBAIHN0YXRpYyBpbnQgYW1mX3BhcnNlX29i amVjdChBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICphc3RyZWFtLAogICAgICAgICAgICAg ICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoa2V5LCAiaGVpZ2h0IikgJiYgdnBhcikgewogICAg ICAgICAgICAgICAgICAgICAgICAgdnBhci0+aGVpZ2h0ID0gbnVtX3ZhbDsKICAgICAgICAgICAg ICAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGtleSwgImRhdGFzdHJlYW0iKSkgewotICAgICAg ICAgICAgICAgICAgICAgICAgQVZTdHJlYW0gKnN0ID0gY3JlYXRlX3N0cmVhbShzLCBBVk1FRElB X1RZUEVfU1VCVElUTEUpOworICAgICAgICAgICAgICAgICAgICAgICAgQVZTdHJlYW0gKnN0ID0g Y3JlYXRlX3N0cmVhbShzLCBBVk1FRElBX1RZUEVfU1VCVElUTEUsIDApOwogICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKCFzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g QVZFUlJPUihFTk9NRU0pOwogICAgICAgICAgICAgICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5j b2RlY19pZCA9IEFWX0NPREVDX0lEX1RFWFQ7CkBAIC04ODUsNiArODk0LDkgQEAgc3RhdGljIGlu dCBmbHZfcmVhZF9jbG9zZShBVkZvcm1hdENvbnRleHQgKnMpCiAgICAgRkxWQ29udGV4dCAqZmx2 ID0gcy0+cHJpdl9kYXRhOwogICAgIGZvciAoaT0wOyBpPEZMVl9TVFJFQU1fVFlQRV9OQjsgaSsr KQogICAgICAgICBhdl9mcmVlcCgmZmx2LT5uZXdfZXh0cmFkYXRhW2ldKTsKKyAgICBmb3IgKGk9 MDsgaSA8IGZsdi0+bXRfZXh0cmFkYXRhX2NudDsgaSsrKQorICAgICAgICBhdl9mcmVlcCgmZmx2 LT5tdF9leHRyYWRhdGFbaV0pOworICAgIGF2X2ZyZWVwKCZmbHYtPm10X2V4dHJhZGF0YV9zeik7 CiAgICAgYXZfZnJlZXAoJmZsdi0+a2V5ZnJhbWVfdGltZXMpOwogICAgIGF2X2ZyZWVwKCZmbHYt PmtleWZyYW1lX2ZpbGVwb3NpdGlvbnMpOwogICAgIGF2X2ZyZWVwKCZmbHYtPm1ldGFWaWRlb0Nv bG9yKTsKQEAgLTkwNCwxOCArOTE2LDQ3IEBAIHN0YXRpYyBpbnQgZmx2X2dldF9leHRyYWRhdGEo QVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqc3QsIGludCBzaXplKQogfQogCiBzdGF0aWMg aW50IGZsdl9xdWV1ZV9leHRyYWRhdGEoRkxWQ29udGV4dCAqZmx2LCBBVklPQ29udGV4dCAqcGIs IGludCBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIGludCBtdWx0aXRyYWNrKQog ewogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBhdl9mcmVlKGZsdi0+ bmV3X2V4dHJhZGF0YVtzdHJlYW1dKTsKLSAgICBmbHYtPm5ld19leHRyYWRhdGFbc3RyZWFtXSA9 IGF2X21hbGxvY3ooc2l6ZSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEFWX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUpOwotICAgIGlmICghZmx2LT5uZXdf ZXh0cmFkYXRhW3N0cmVhbV0pCi0gICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Ci0gICAg Zmx2LT5uZXdfZXh0cmFkYXRhX3NpemVbc3RyZWFtXSA9IHNpemU7Ci0gICAgYXZpb19yZWFkKHBi LCBmbHYtPm5ld19leHRyYWRhdGFbc3RyZWFtXSwgc2l6ZSk7CisgICAgaWYgKCFtdWx0aXRyYWNr KSB7CisgICAgICAgIGF2X2ZyZWUoZmx2LT5uZXdfZXh0cmFkYXRhW3N0cmVhbV0pOworICAgICAg ICBmbHYtPm5ld19leHRyYWRhdGFbc3RyZWFtXSA9IGF2X21hbGxvY3ooc2l6ZSArCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVl9JTlBVVF9CVUZGRVJf UEFERElOR19TSVpFKTsKKyAgICAgICAgaWYgKCFmbHYtPm5ld19leHRyYWRhdGFbc3RyZWFtXSkK KyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgIGZsdi0+bmV3X2V4 dHJhZGF0YV9zaXplW3N0cmVhbV0gPSBzaXplOworICAgICAgICBhdmlvX3JlYWQocGIsIGZsdi0+ bmV3X2V4dHJhZGF0YVtzdHJlYW1dLCBzaXplKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQg bmV3X2NvdW50ID0gc3RyZWFtICsgMTsKKworICAgICAgICBpZiAoZmx2LT5tdF9leHRyYWRhdGFf Y250IDwgbmV3X2NvdW50KSB7CisgICAgICAgICAgICBmbHYtPm10X2V4dHJhZGF0YSA9IGF2X3Jl YWxsb2MoZmx2LT5tdF9leHRyYWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZW9mKCpmbHYtPm10X2V4dHJhZGF0YSkgKgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19jb3VudCk7CisgICAgICAgICAgICBmbHYt Pm10X2V4dHJhZGF0YV9zeiA9IGF2X3JlYWxsb2MoZmx2LT5tdF9leHRyYWRhdGFfc3osCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCpmbHYtPm10 X2V4dHJhZGF0YV9zeikgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5ld19jb3VudCk7CisgICAgICAgICAgICBpZiAoIWZsdi0+bXRfZXh0cmFkYXRhIHx8 ICFmbHYtPm10X2V4dHJhZGF0YV9zeikKKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihF Tk9NRU0pOworICAgICAgICAgICAgLy8gU2V0IG5ld2x5IGFsbG9jYXRlZCBwb2ludGVycy9zaXpl cyB0byAwCisgICAgICAgICAgICBmb3IgKGludCBpID0gZmx2LT5tdF9leHRyYWRhdGFfY250OyBp IDwgbmV3X2NvdW50OyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZmx2LT5tdF9leHRyYWRh dGFbaV0gPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBmbHYtPm10X2V4dHJhZGF0YV9zeltp XSA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmbHYtPm10X2V4dHJhZGF0YV9jbnQg PSBuZXdfY291bnQ7CisgICAgICAgIH0KKworICAgICAgICBhdl9mcmVlKGZsdi0+bXRfZXh0cmFk YXRhW3N0cmVhbV0pOworICAgICAgICBmbHYtPm10X2V4dHJhZGF0YVtzdHJlYW1dID0gYXZfbWFs bG9jeihzaXplICsgQVZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSk7CisgICAgICAgIGlmICgh Zmx2LT5tdF9leHRyYWRhdGFbc3RyZWFtXSkKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVO T01FTSk7CisgICAgICAgIGZsdi0+bXRfZXh0cmFkYXRhX3N6W3N0cmVhbV0gPSBzaXplOworICAg ICAgICBhdmlvX3JlYWQocGIsIGZsdi0+bXRfZXh0cmFkYXRhW3N0cmVhbV0sIHNpemUpOworICAg IH0KKwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMDMxLDcgKzEwNzIsNyBAQCBzdGF0aWMgaW50 IGZsdl9kYXRhX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QsCiAgICAg fQogCiAgICAgaWYgKGkgPT0gcy0+bmJfc3RyZWFtcykgewotICAgICAgICBzdCA9IGNyZWF0ZV9z dHJlYW0ocywgQVZNRURJQV9UWVBFX1NVQlRJVExFKTsKKyAgICAgICAgc3QgPSBjcmVhdGVfc3Ry ZWFtKHMsIEFWTUVESUFfVFlQRV9TVUJUSVRMRSwgMCk7CiAgICAgICAgIGlmICghc3QpCiAgICAg ICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwogICAgICAgICBzdC0+Y29kZWNwYXItPmNv ZGVjX2lkID0gQVZfQ09ERUNfSURfVEVYVDsKQEAgLTEyMDMsNiArMTI0NCw5IEBAIHN0YXRpYyBp bnQgZmx2X3JlYWRfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKICAg ICBpbnQgbGFzdCA9IC0xOwogICAgIGludCBvcmlnX3NpemU7CiAgICAgaW50IGVuaGFuY2VkX2Zs diA9IDA7CisgICAgaW50IG11bHRpdHJhY2sgPSAwOworICAgIGludCBwa3RfdHlwZSA9IDA7Cisg ICAgdWludDhfdCB0cmFja19pZHggPSAwOwogICAgIHVpbnQzMl90IHZpZGVvX2NvZGVjX2lkID0g MDsKIAogcmV0cnk6CkBAIC0xMjU2LDE0ICsxMzAwLDMzIEBAIHJldHJ5OgogICAgICAgICAgKiBo dHRwczovL2dpdGh1Yi5jb20vdmVvdmVyYS9lbmhhbmNlZC1ydG1wL2Jsb2IvbWFpbi9lbmhhbmNl ZC1ydG1wLXYxLnBkZgogICAgICAgICAgKiAqLwogICAgICAgICBlbmhhbmNlZF9mbHYgPSAoZmxh Z3MgPj4gNykgJiAxOworICAgICAgICBwa3RfdHlwZSA9IGVuaGFuY2VkX2ZsdiA/IHZpZGVvX2Nv ZGVjX2lkIDogMDsKICAgICAgICAgc2l6ZS0tOworCisgICAgICAgIGlmIChwa3RfdHlwZSA9PSBQ YWNrZXRUeXBlTXVsdGl0cmFjaykgeworICAgICAgICAgICAgdWludDhfdCB0eXBlcyA9IGF2aW9f cjgocy0+cGIpOworICAgICAgICAgICAgaW50IG11bHRpdHJhY2tfdHlwZSA9IHR5cGVzID4+IDQ7 CisgICAgICAgICAgICBwa3RfdHlwZSA9IHR5cGVzICYgMHhGOworCisgICAgICAgICAgICBpZiAo bXVsdGl0cmFja190eXBlICE9IE11bHRpdHJhY2tUeXBlT25lVHJhY2spIHsKKyAgICAgICAgICAg ICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAiTXVsdGl0cmFjayB0eXBlcyBvdGhlciB0aGFu IE11bHRpdHJhY2tUeXBlT25lVHJhY2sgYXJlIHVuc3VwcG9ydGVkIVxuIik7CisgICAgICAgICAg ICAgICAgcmV0dXJuIEFWRVJST1JfUEFUQ0hXRUxDT01FOworICAgICAgICAgICAgfQorCisgICAg ICAgICAgICBtdWx0aXRyYWNrID0gMTsKKyAgICAgICAgICAgIHNpemUtLTsKKyAgICAgICAgfQor CiAgICAgICAgIGlmIChlbmhhbmNlZF9mbHYpIHsKICAgICAgICAgICAgIHZpZGVvX2NvZGVjX2lk ID0gYXZpb19yYjMyKHMtPnBiKTsKICAgICAgICAgICAgIHNpemUgLT0gNDsKICAgICAgICAgfQor ICAgICAgICBpZiAobXVsdGl0cmFjaykgeworICAgICAgICAgICAgdHJhY2tfaWR4ID0gYXZpb19y OChzLT5wYik7CisgICAgICAgICAgICBzaXplLS07CisgICAgICAgIH0KIAotICAgICAgICBpZiAo ZW5oYW5jZWRfZmx2ICYmIHN0cmVhbV90eXBlID09IEZMVl9TVFJFQU1fVFlQRV9WSURFTyAmJiAo ZmxhZ3MgJiBGTFZfVklERU9fRlJBTUVUWVBFX01BU0spID09IEZMVl9GUkFNRV9WSURFT19JTkZP X0NNRCkgewotICAgICAgICAgICAgaW50IHBrdF90eXBlID0gZmxhZ3MgJiAweDBGOworICAgICAg ICBpZiAoZW5oYW5jZWRfZmx2ICYmIChmbGFncyAmIEZMVl9WSURFT19GUkFNRVRZUEVfTUFTSykg PT0gRkxWX0ZSQU1FX1ZJREVPX0lORk9fQ01EKSB7CiAgICAgICAgICAgICBpZiAocGt0X3R5cGUg PT0gUGFja2V0VHlwZU1ldGFkYXRhKSB7CiAgICAgICAgICAgICAgICAgaW50IHJldCA9IGZsdl9w YXJzZV92aWRlb19jb2xvcl9pbmZvKHMsIHN0LCBuZXh0KTsKICAgICAgICAgICAgICAgICBhdl9s b2cocywgQVZfTE9HX0RFQlVHLCAiZW5oYW5jZWQgZmx2IHBhcnNlIG1ldGFkYXRhIHJldCAlZCBh bmQgc2tpcFxuIiwgcmV0KTsKQEAgLTEzMjcsNyArMTM5MCw4IEBAIHNraXA6CiAgICAgICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RyZWFtX3R5cGUgPT0gRkxWX1NUUkVB TV9UWVBFX1ZJREVPKSB7CiAgICAgICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY190eXBl ID09IEFWTUVESUFfVFlQRV9WSURFTyAmJgotICAgICAgICAgICAgICAgIChzLT52aWRlb19jb2Rl Y19pZCB8fCBmbHZfc2FtZV92aWRlb19jb2RlYyhzdC0+Y29kZWNwYXIsIHZpZGVvX2NvZGVjX2lk KSkpCisgICAgICAgICAgICAgICAgKHMtPnZpZGVvX2NvZGVjX2lkIHx8IGZsdl9zYW1lX3ZpZGVv X2NvZGVjKHN0LT5jb2RlY3BhciwgdmlkZW9fY29kZWNfaWQpKSAmJgorICAgICAgICAgICAgICAg IHN0LT5pZCA9PSB0cmFja19pZHgpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0g ZWxzZSBpZiAoc3RyZWFtX3R5cGUgPT0gRkxWX1NUUkVBTV9UWVBFX1NVQlRJVExFKSB7CiAgICAg ICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9TVUJU SVRMRSkKQEAgLTEzMzksNyArMTQwMyw3IEBAIHNraXA6CiAgICAgfQogICAgIGlmIChpID09IHMt Pm5iX3N0cmVhbXMpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGVudW0gQVZNZWRpYVR5cGUgc3Ry ZWFtX3R5cGVzW10gPSB7QVZNRURJQV9UWVBFX1ZJREVPLCBBVk1FRElBX1RZUEVfQVVESU8sIEFW TUVESUFfVFlQRV9TVUJUSVRMRSwgQVZNRURJQV9UWVBFX0RBVEF9OwotICAgICAgICBzdCA9IGNy ZWF0ZV9zdHJlYW0ocywgc3RyZWFtX3R5cGVzW3N0cmVhbV90eXBlXSk7CisgICAgICAgIHN0ID0g Y3JlYXRlX3N0cmVhbShzLCBzdHJlYW1fdHlwZXNbc3RyZWFtX3R5cGVdLCB0cmFja19pZHgpOwog ICAgICAgICBpZiAoIXN0KQogICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKICAg ICB9CkBAIC0xNDQ2LDcgKzE1MTAsNyBAQCByZXRyeV9kdXJhdGlvbjoKICAgICAgICAgc3QtPmNv ZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpIHsKICAgICAgICAgaW50IHR5cGUg PSAwOwogICAgICAgICBpZiAoZW5oYW5jZWRfZmx2ICYmIHN0cmVhbV90eXBlID09IEZMVl9TVFJF QU1fVFlQRV9WSURFTykgewotICAgICAgICAgICAgdHlwZSA9IGZsYWdzICYgMHgwRjsKKyAgICAg ICAgICAgIHR5cGUgPSBwa3RfdHlwZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHR5 cGUgPSBhdmlvX3I4KHMtPnBiKTsKICAgICAgICAgICAgIHNpemUtLTsKQEAgLTE0NjIsNyArMTUy Niw4IEBAIHJldHJ5X2R1cmF0aW9uOgogICAgICAgICAgICAgZmx2LT5tZXRhX2NvbG9yX2luZm9f ZmxhZyA9IDA7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09E RUNfSURfTVBFRzQgfHwKKyAgICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZf Q09ERUNfSURfTVBFRzQgfHwKKyAgICAgICAgICAgIChzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX0gyNjQgJiYgKCFlbmhhbmNlZF9mbHYgfHwgdHlwZSA9PSBQYWNrZXRUeXBl Q29kZWRGcmFtZXMpKSB8fAogICAgICAgICAgICAgKHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfSEVWQyAmJiB0eXBlID09IFBhY2tldFR5cGVDb2RlZEZyYW1lcykpIHsKICAg ICAgICAgICAgIC8vIHNpZ24gZXh0ZW5zaW9uCiAgICAgICAgICAgICBpbnQzMl90IGN0cyA9IChh dmlvX3JiMjQocy0+cGIpICsgMHhmZjgwMDAwMCkgXiAweGZmODAwMDAwOwpAQCAtMTQ4NSw3ICsx NTUwLDcgQEAgcmV0cnlfZHVyYXRpb246CiAgICAgICAgICAgICBBVkRpY3Rpb25hcnlFbnRyeSAq dDsKIAogICAgICAgICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhKSB7Ci0gICAgICAg ICAgICAgICAgaWYgKChyZXQgPSBmbHZfcXVldWVfZXh0cmFkYXRhKGZsdiwgcy0+cGIsIHN0cmVh bV90eXBlLCBzaXplKSkgPCAwKQorICAgICAgICAgICAgICAgIGlmICgocmV0ID0gZmx2X3F1ZXVl X2V4dHJhZGF0YShmbHYsIHMtPnBiLCBtdWx0aXRyYWNrID8gdHJhY2tfaWR4IDogc3RyZWFtX3R5 cGUsIHNpemUsIG11bHRpdHJhY2spKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy ZXQ7CiAgICAgICAgICAgICAgICAgcmV0ID0gRkZFUlJPUl9SRURPOwogICAgICAgICAgICAgICAg IGdvdG8gbGVhdmU7CkBAIC0xNTE2LDcgKzE1ODEsNyBAQCByZXRyeV9kdXJhdGlvbjoKICAgICBw a3QtPnB0cyAgICAgICAgICA9IHB0cyA9PSBBVl9OT1BUU19WQUxVRSA/IGR0cyA6IHB0czsKICAg ICBwa3QtPnN0cmVhbV9pbmRleCA9IHN0LT5pbmRleDsKICAgICBwa3QtPnBvcyAgICAgICAgICA9 IHBvczsKLSAgICBpZiAoZmx2LT5uZXdfZXh0cmFkYXRhW3N0cmVhbV90eXBlXSkgeworICAgIGlm ICghbXVsdGl0cmFjayAmJiBmbHYtPm5ld19leHRyYWRhdGFbc3RyZWFtX3R5cGVdKSB7CiAgICAg ICAgIGludCByZXQgPSBhdl9wYWNrZXRfYWRkX3NpZGVfZGF0YShwa3QsIEFWX1BLVF9EQVRBX05F V19FWFRSQURBVEEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm bHYtPm5ld19leHRyYWRhdGFbc3RyZWFtX3R5cGVdLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmx2LT5uZXdfZXh0cmFkYXRhX3NpemVbc3RyZWFtX3R5cGVdKTsK QEAgLTE1MjQsNiArMTU4OSwxNiBAQCByZXRyeV9kdXJhdGlvbjoKICAgICAgICAgICAgIGZsdi0+ bmV3X2V4dHJhZGF0YVtzdHJlYW1fdHlwZV0gICAgICA9IE5VTEw7CiAgICAgICAgICAgICBmbHYt Pm5ld19leHRyYWRhdGFfc2l6ZVtzdHJlYW1fdHlwZV0gPSAwOwogICAgICAgICB9CisgICAgfSBl bHNlIGlmIChtdWx0aXRyYWNrCisgICAgICAgICAgICAgICAmJiBmbHYtPm10X2V4dHJhZGF0YV9j bnQgPiB0cmFja19pZHgKKyAgICAgICAgICAgICAgICYmIGZsdi0+bXRfZXh0cmFkYXRhW3RyYWNr X2lkeF0pIHsKKyAgICAgICAgaW50IHJldCA9IGF2X3BhY2tldF9hZGRfc2lkZV9kYXRhKHBrdCwg QVZfUEtUX0RBVEFfTkVXX0VYVFJBREFUQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZsdi0+bXRfZXh0cmFkYXRhW3RyYWNrX2lkeF0sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbHYtPm10X2V4dHJhZGF0YV9zelt0cmFja19p ZHhdKTsKKyAgICAgICAgaWYgKHJldCA+PSAwKSB7CisgICAgICAgICAgICBmbHYtPm10X2V4dHJh ZGF0YVt0cmFja19pZHhdICAgICAgPSBOVUxMOworICAgICAgICAgICAgZmx2LT5tdF9leHRyYWRh dGFfc3pbdHJhY2tfaWR4XSA9IDA7CisgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHN0cmVhbV90 eXBlID09IEZMVl9TVFJFQU1fVFlQRV9BVURJTyAmJgogICAgICAgICAgICAgICAgICAgICAoc2Ft cGxlX3JhdGUgIT0gZmx2LT5sYXN0X3NhbXBsZV9yYXRlIHx8Ci0tIAoyLjQzLjIKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWls aW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxt YW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92 ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3Qg InVuc3Vic2NyaWJlIi4K