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 13C364AD7F for ; Tue, 21 May 2024 09:03:58 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BBCF468D352; Tue, 21 May 2024 12:03:44 +0300 (EEST) Received: from btbn.de (btbn.de [144.76.60.213]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DCA3168AD99 for ; Tue, 21 May 2024 12:03:37 +0300 (EEST) Received: from [authenticated] by btbn.de (Postfix) with ESMTPSA id 2E6FE27FFD906; 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=daFX0fvzxqrp+dqdwXTpbUJoa4Un4S5ZAyBHIDyruvQ=; b=lUTukQKT8sIeLq+pAZ0Vwofum1I/mHjtkIV2VF9wmSqv7lNuESn+WEq4weroKQ7u6KEJre 4STavGU+dDGCINLgleYqoxZdBR81nC2lrR5QwunuyiYo/XzQucRAFUU9Mpi9aiKiN7plEH ff4cx5JirCvXATcP4KfJ5Noi7e+Xhz7MVTSjoOLKrpWuXWvKSQyAUfuF7KRJ+ov4yLEmHc OjVROPdet8B3W+CfuSv+L2aNLWQq4w4Jt3EL78iig8oJ8D/aUmvrZIsfilh8Q7H9mtK33U WvOTlYTj8bzSo6WTmWbP/KB1trRR2L4LqRhd0bM1pZ4DembWwFVDog1m4HmjhA== From: Timo Rothenpieler To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 May 2024 11:02:10 +0200 Message-ID: <20240521090316.782-2-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 01/13] avformat/flvenc: Implement support for multi-track video 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 ZC9lbmhhbmNlZC1ydG1wLXYyCgpUaGlzIGltcGxlbWVudGF0aW9uIG1haW50YWlucyBzb21lIGJh Y2t3YXJkcyBjb21wYXRpYmlsaXR5IGJ5IG9ubHkKd3JpdGluZyB0aGUgdHJhY2sgaW5mb3JtYXRp b24gZm9yIHRyYWNrIGluZGljZXMgPiAwLiBUaGlzIG1lYW5zIHRoYXQKb2xkZXIgRkZtcGVnIHZl cnNpb25zIC0gYW5kIHBvc3NpYmx5IG90aGVyIHNvZnR3YXJlIC0gY2FuIHN0aWxsIHJlYWQgdGhl CmZpcnN0IHZpZGVvIHRyYWNrIHByb3Blcmx5IGFuZCBza2lwIG92ZXIgdW5zdXBwb3J0ZWQgcGFj a2V0cy4KClNpZ25lZC1vZmYtYnk6IERlbm5pcyBTw6RkdGxlciA8ZGVubmlzQG9ic3Byb2plY3Qu Y29tPgotLS0KIGxpYmF2Zm9ybWF0L2Zsdi5oICAgIHwgICA3ICsrCiBsaWJhdmZvcm1hdC9mbHZl bmMuYyB8IDE1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiAy IGZpbGVzIGNoYW5nZWQsIDExOCBpbnNlcnRpb25zKCspLCA0NyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9saWJhdmZvcm1hdC9mbHYuaCBiL2xpYmF2Zm9ybWF0L2Zsdi5oCmluZGV4IGY3MTA5 NjNiOTIuLjY1M2MyYmM4MmMgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L2Zsdi5oCisrKyBiL2xp YmF2Zm9ybWF0L2Zsdi5oCkBAIC0xMjUsNiArMTI1LDEzIEBAIGVudW0gewogICAgIFBhY2tldFR5 cGVDb2RlZEZyYW1lc1ggICAgICAgICAgPSAzLAogICAgIFBhY2tldFR5cGVNZXRhZGF0YSAgICAg ICAgICAgICAgPSA0LAogICAgIFBhY2tldFR5cGVNUEVHMlRTU2VxdWVuY2VTdGFydCAgPSA1LAor ICAgIFBhY2tldFR5cGVNdWx0aXRyYWNrICAgICAgICAgICAgPSA2LAorfTsKKworZW51bSB7CisJ TXVsdGl0cmFja1R5cGVPbmVUcmFjayAgICAgICAgICAgICA9IDB4MDAsCisJTXVsdGl0cmFja1R5 cGVNYW55VHJhY2tzICAgICAgICAgICA9IDB4MTAsCisJTXVsdGl0cmFja1R5cGVNYW55VHJhY2tz TWFueUNvZGVjcyA9IDB4MjAsCiB9OwogCiBlbnVtIHsKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0 L2ZsdmVuYy5jIGIvbGliYXZmb3JtYXQvZmx2ZW5jLmMKaW5kZXggYWJhMWQ3ZDgwYi4uN2RkYzU5 ZTM2OSAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvZmx2ZW5jLmMKKysrIGIvbGliYXZmb3JtYXQv Zmx2ZW5jLmMKQEAgLTEyNSw4ICsxMjUsOSBAQCB0eXBlZGVmIHN0cnVjdCBGTFZDb250ZXh0IHsK ICAgICBBVkNvZGVjUGFyYW1ldGVycyAqZGF0YV9wYXI7CiAKICAgICBpbnQgZmxhZ3M7Ci0gICAg aW50NjRfdCBsYXN0X3RzW0ZMVl9TVFJFQU1fVFlQRV9OQl07Ci0gICAgaW50IG1ldGFkYXRhX3Br dF93cml0dGVuOworICAgIGludDY0X3QgKmxhc3RfdHM7CisgICAgaW50ICptZXRhZGF0YV9wa3Rf d3JpdHRlbjsKKyAgICBpbnQgKnZpZGVvX3RyYWNrX2lkeF9tYXA7CiB9IEZMVkNvbnRleHQ7CiAK IHN0YXRpYyBpbnQgZ2V0X2F1ZGlvX2ZsYWdzKEFWRm9ybWF0Q29udGV4dCAqcywgQVZDb2RlY1Bh cmFtZXRlcnMgKnBhcikKQEAgLTQ4NCw3ICs0ODUsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZV9tZXRh ZGF0YShBVkZvcm1hdENvbnRleHQgKnMsIHVuc2lnbmVkIGludCB0cykKICAgICBhdmlvX3diMzIo cGIsIGZsdi0+bWV0YWRhdGFfdG90YWxzaXplICsgMTEpOwogfQogCi1zdGF0aWMgdm9pZCBmbHZf d3JpdGVfbWV0YWRhdGFfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZDb2RlY1BhcmFtZXRl cnMgKnBhciwgdW5zaWduZWQgaW50IHRzKQorc3RhdGljIHZvaWQgZmx2X3dyaXRlX21ldGFkYXRh X3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWQ29kZWNQYXJhbWV0ZXJzICpwYXIsIHVuc2ln bmVkIGludCB0cywgaW50IHN0cmVhbV9pZHgpCiB7CiAgICAgQVZJT0NvbnRleHQgKnBiID0gcy0+ cGI7CiAgICAgRkxWQ29udGV4dCAqZmx2ID0gcy0+cHJpdl9kYXRhOwpAQCAtNDk0LDcgKzQ5NSw5 IEBAIHN0YXRpYyB2b2lkIGZsdl93cml0ZV9tZXRhZGF0YV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0 ICpzLCBBVkNvZGVjUGFyYW1ldGVycyAqcGFyCiAgICAgaW50NjRfdCB0b3RhbF9zaXplID0gMDsK ICAgICBjb25zdCBBVlBhY2tldFNpZGVEYXRhICpzaWRlX2RhdGEgPSBOVUxMOwogCi0gICAgaWYg KGZsdi0+bWV0YWRhdGFfcGt0X3dyaXR0ZW4pIHJldHVybjsKKyAgICBpZiAoZmx2LT5tZXRhZGF0 YV9wa3Rfd3JpdHRlbltzdHJlYW1faWR4XSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKHBh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQyB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NP REVDX0lEX0FWMSB8fAogICAgICAgICBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOSkg ewogICAgICAgICBpbnQgZmxhZ3Nfc2l6ZSA9IDU7CkBAIC02MTYsNyArNjE5LDcgQEAgc3RhdGlj IHZvaWQgZmx2X3dyaXRlX21ldGFkYXRhX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWQ29k ZWNQYXJhbWV0ZXJzICpwYXIKICAgICAgICAgYXZpb193YjI0KHBiLCB0b3RhbF9zaXplKTsKICAg ICAgICAgYXZpb19za2lwKHBiLCB0b3RhbF9zaXplICsgMTAgLSAzKTsKICAgICAgICAgYXZpb193 YjMyKHBiLCB0b3RhbF9zaXplICsgMTEpOyAvLyBwcmV2aW91cyB0YWcgc2l6ZQotICAgICAgICBm bHYtPm1ldGFkYXRhX3BrdF93cml0dGVuID0gMTsKKyAgICAgICAgZmx2LT5tZXRhZGF0YV9wa3Rf d3JpdHRlbltzdHJlYW1faWR4XSA9IDE7CiAgICAgfQogfQogCkBAIC02MzEsNyArNjM0LDcgQEAg c3RhdGljIGludCB1bnN1cHBvcnRlZF9jb2RlYyhBVkZvcm1hdENvbnRleHQgKnMsCiAgICAgcmV0 dXJuIEFWRVJST1IoRU5PU1lTKTsKIH0KIAotc3RhdGljIHZvaWQgZmx2X3dyaXRlX2NvZGVjX2hl YWRlcihBVkZvcm1hdENvbnRleHQqIHMsIEFWQ29kZWNQYXJhbWV0ZXJzKiBwYXIsIGludDY0X3Qg dHMpIHsKK3N0YXRpYyB2b2lkIGZsdl93cml0ZV9jb2RlY19oZWFkZXIoQVZGb3JtYXRDb250ZXh0 KiBzLCBBVkNvZGVjUGFyYW1ldGVycyogcGFyLCBpbnQ2NF90IHRzLCBpbnQgc3RyZWFtX2luZGV4 KSB7CiAgICAgaW50NjRfdCBkYXRhX3NpemU7CiAgICAgQVZJT0NvbnRleHQgKnBiID0gcy0+cGI7 CiAgICAgRkxWQ29udGV4dCAqZmx2ID0gcy0+cHJpdl9kYXRhOwpAQCAtNjgxLDEyICs2ODQsMzIg QEAgc3RhdGljIHZvaWQgZmx2X3dyaXRlX2NvZGVjX2hlYWRlcihBVkZvcm1hdENvbnRleHQqIHMs IEFWQ29kZWNQYXJhbWV0ZXJzKiBwYXIsIGkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF2 aW9fd3JpdGUocGIsIHBhci0+ZXh0cmFkYXRhLCBwYXItPmV4dHJhZGF0YV9zaXplKTsKICAgICAg ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X0hFVkMpIHsKLSAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCBGTFZfSVNfRVhfSEVBREVSIHwg UGFja2V0VHlwZVNlcXVlbmNlU3RhcnQgfCBGTFZfRlJBTUVfS0VZKTsgLy8gRXhWaWRlb1RhZ0hl YWRlciBtb2RlIHdpdGggUGFja2V0VHlwZVNlcXVlbmNlU3RhcnQKLSAgICAgICAgICAgICAgICBh dmlvX3dyaXRlKHBiLCAiaHZjMSIsIDQpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X1ZQOSkgewotICAgICAgICAgICAgICAgIGF2aW9fdzgocGIsIEZMVl9JU19FWF9IRUFERVIgfCBQ YWNrZXRUeXBlU2VxdWVuY2VTdGFydCB8IEZMVl9GUkFNRV9LRVkpOwotICAgICAgICAgICAgICAg IGF2aW9fd3JpdGUocGIsIHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxID8gImF2MDEi IDogInZwMDkiLCA0KTsKKyAgICAgICAgICAgIGludCB0cmFja19pZHggPSBmbHYtPnZpZGVvX3Ry YWNrX2lkeF9tYXBbc3RyZWFtX2luZGV4XTsKKyAgICAgICAgICAgIC8vIElmIHZpZGVvIHN0cmVh bSBoYXMgdHJhY2tfaWR4ID4gMCB3ZSBuZWVkIHRvIHNlbmQgSC4yNjQgYXMgZXh0ZW5kZWQgdmlk ZW8gcGFja2V0CisgICAgICAgICAgICBpbnQgZXh0ZW5kZWRfZmx2ID0gKHBhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfSDI2NCAmJiB0cmFja19pZHgpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09E RUNfSURfQVYxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOTsKKworICAgICAgICAgICAgaWYgKGV4dGVuZGVkX2Zs dikgeworICAgICAgICAgICAgICAgIGlmICh0cmFja19pZHgpIHsKKyAgICAgICAgICAgICAgICAg ICAgYXZpb193OChwYiwgRkxWX0lTX0VYX0hFQURFUiB8IFBhY2tldFR5cGVNdWx0aXRyYWNrIHwg RkxWX0ZSQU1FX0tFWSk7CisgICAgICAgICAgICAgICAgICAgIGF2aW9fdzgocGIsIE11bHRpdHJh Y2tUeXBlT25lVHJhY2sgfCBQYWNrZXRUeXBlU2VxdWVuY2VTdGFydCk7CisgICAgICAgICAgICAg ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYXZpb193OChwYiwgRkxWX0lTX0VYX0hF QURFUiB8IFBhY2tldFR5cGVTZXF1ZW5jZVN0YXJ0IHwgRkxWX0ZSQU1FX0tFWSk7CisgICAgICAg ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09E RUNfSURfSDI2NCkKKyAgICAgICAgICAgICAgICAgICAgYXZpb193cml0ZShwYiwgImF2YzEiLCA0 KTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X0hFVkMpCisgICAgICAgICAgICAgICAgICAgIGF2aW9fd3JpdGUocGIsICJodmMxIiwgNCk7Cisg ICAgICAgICAgICAgICAgZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEp CisgICAgICAgICAgICAgICAgICAgIGF2aW9fd3JpdGUocGIsICJhdjAxIiwgNCk7CisgICAgICAg ICAgICAgICAgZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpCisgICAg ICAgICAgICAgICAgICAgIGF2aW9fd3JpdGUocGIsICJ2cDA5IiwgNCk7CisKKyAgICAgICAgICAg ICAgICBpZiAodHJhY2tfaWR4KQorICAgICAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCB0cmFj a19pZHgpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBhdmlvX3c4KHBi LCBwYXItPmNvZGVjX3RhZyB8IEZMVl9GUkFNRV9LRVkpOyAvLyBmbGFncwogICAgICAgICAgICAg ICAgIGF2aW9fdzgocGIsIDApOyAvLyBBVkMgc2VxdWVuY2UgaGVhZGVyCkBAIC03NjksMTMgKzc5 MiwxMiBAQCBzdGF0aWMgaW50IHNoaWZ0X2RhdGEoQVZGb3JtYXRDb250ZXh0ICpzKQogc3RhdGlj IGludCBmbHZfaW5pdChzdHJ1Y3QgQVZGb3JtYXRDb250ZXh0ICpzKQogewogICAgIGludCBpOwor ICAgIGludCB2aWRlb19jdHIgPSAwOwogICAgIEZMVkNvbnRleHQgKmZsdiA9IHMtPnByaXZfZGF0 YTsKIAotICAgIGlmIChzLT5uYl9zdHJlYW1zID4gRkxWX1NUUkVBTV9UWVBFX05CKSB7Ci0gICAg ICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJpbnZhbGlkIG51bWJlciBvZiBzdHJlYW1zICVk XG4iLAotICAgICAgICAgICAgICAgIHMtPm5iX3N0cmVhbXMpOwotICAgICAgICByZXR1cm4gQVZF UlJPUihFSU5WQUwpOwotICAgIH0KKyAgICBmbHYtPmxhc3RfdHMgPSBhdl9tYWxsb2N6KHNpemVv ZigqZmx2LT5sYXN0X3RzKSAqIHMtPm5iX3N0cmVhbXMpOworICAgIGZsdi0+bWV0YWRhdGFfcGt0 X3dyaXR0ZW4gPSBhdl9tYWxsb2N6KHNpemVvZigqZmx2LT5tZXRhZGF0YV9wa3Rfd3JpdHRlbikg KiBzLT5uYl9zdHJlYW1zKTsKKyAgICBmbHYtPnZpZGVvX3RyYWNrX2lkeF9tYXAgPSBhdl9tYWxs b2N6KHNpemVvZigqZmx2LT52aWRlb190cmFja19pZHhfbWFwKSAqIHMtPm5iX3N0cmVhbXMpOwog CiAgICAgZm9yIChpID0gMDsgaSA8IHMtPm5iX3N0cmVhbXM7IGkrKykgewogICAgICAgICBBVkNv ZGVjUGFyYW1ldGVycyAqcGFyID0gcy0+c3RyZWFtc1tpXS0+Y29kZWNwYXI7CkBAIC03ODYsMTIg KzgwOCwxNyBAQCBzdGF0aWMgaW50IGZsdl9pbml0KHN0cnVjdCBBVkZvcm1hdENvbnRleHQgKnMp CiAgICAgICAgICAgICAgICAgcy0+c3RyZWFtc1tpXS0+YXZnX2ZyYW1lX3JhdGUubnVtKSB7CiAg ICAgICAgICAgICAgICAgZmx2LT5mcmFtZXJhdGUgPSBhdl9xMmQocy0+c3RyZWFtc1tpXS0+YXZn X2ZyYW1lX3JhdGUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGZsdi0+dmlkZW9f cGFyKSB7CisgICAgICAgICAgICBmbHYtPnZpZGVvX3RyYWNrX2lkeF9tYXBbaV0gPSB2aWRlb19j dHIrKzsKKyAgICAgICAgICAgIGlmIChmbHYtPnZpZGVvX3BhciAmJiBmbHYtPmZsYWdzICYgRkxW X0FERF9LRVlGUkFNRV9JTkRFWCkgewogICAgICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0df RVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAgICJhdCBtb3N0IG9uZSB2aWRlbyBzdHJlYW0g aXMgc3VwcG9ydGVkIGluIGZsdlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICJhdCBtb3N0 IG9uZSB2aWRlbyBzdHJlYW0gaXMgc3VwcG9ydGVkIGluIGZsdiB3aXRoIGtleWZyYW1lIGluZGV4 XG4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgICAgICAg ICAgfSBlbHNlIGlmIChmbHYtPnZpZGVvX3BhcikgeworICAgICAgICAgICAgICAgIGF2X2xvZyhz LCBBVl9MT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgICAgIm1vcmUgdGhhbiBvbmUg dmlkZW8gc3RyZWFtIGlzIG5vdCBzdXBwb3J0ZWQgYnkgbW9zdCBmbHYgZGVtdXhlcnMuXG4iKTsK ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZsdi0+dmlkZW9fcGFyID0gcGFyOworICAgICAg ICAgICAgaWYgKCFmbHYtPnZpZGVvX3BhcikKKyAgICAgICAgICAgICAgICBmbHYtPnZpZGVvX3Bh ciA9IHBhcjsKICAgICAgICAgICAgIGlmICghZmZfY29kZWNfZ2V0X3RhZyhmbHZfdmlkZW9fY29k ZWNfaWRzLCBwYXItPmNvZGVjX2lkKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdW5zdXBwb3J0 ZWRfY29kZWMocywgIlZpZGVvIiwgcGFyLT5jb2RlY19pZCk7CiAKQEAgLTg4MSw3ICs5MDgsNyBA QCBzdGF0aWMgaW50IGZsdl93cml0ZV9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQogICAgIH0K IAogICAgIGZvciAoaSA9IDA7IGkgPCBzLT5uYl9zdHJlYW1zOyBpKyspIHsKLSAgICAgICAgZmx2 X3dyaXRlX2NvZGVjX2hlYWRlcihzLCBzLT5zdHJlYW1zW2ldLT5jb2RlY3BhciwgMCk7CisgICAg ICAgIGZsdl93cml0ZV9jb2RlY19oZWFkZXIocywgcy0+c3RyZWFtc1tpXS0+Y29kZWNwYXIsIDAs IGkpOwogICAgIH0KIAogICAgIGZsdi0+ZGF0YXN0YXJ0X29mZnNldCA9IGF2aW9fdGVsbChwYik7 CkBAIC05ODksNiArMTAxNiw3IEBAIHN0YXRpYyBpbnQgZmx2X3dyaXRlX3BhY2tldChBVkZvcm1h dENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCiAgICAgdWludDhfdCBmcmFtZXR5cGUgPSBwa3Qt PmZsYWdzICYgQVZfUEtUX0ZMQUdfS0VZID8gRkxWX0ZSQU1FX0tFWSA6IEZMVl9GUkFNRV9JTlRF UjsKICAgICBpbnQgZmxhZ3MgPSAtMSwgZmxhZ3Nfc2l6ZSwgcmV0ID0gMDsKICAgICBpbnQ2NF90 IGN1cl9vZmZzZXQgPSBhdmlvX3RlbGwocGIpOworICAgIGludCB0cmFja19pZHggPSBmbHYtPnZp ZGVvX3RyYWNrX2lkeF9tYXBbcGt0LT5zdHJlYW1faW5kZXhdOwogCiAgICAgaWYgKHBhci0+Y29k ZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8gJiYgIXBrdC0+c2l6ZSkgewogICAgICAgICBh dl9sb2cocywgQVZfTE9HX1dBUk5JTkcsICJFbXB0eSBhdWRpbyBQYWNrZXRcbiIpOwpAQCAtMTAw NSw3ICsxMDMzLDEyIEBAIHN0YXRpYyBpbnQgZmx2X3dyaXRlX3BhY2tldChBVkZvcm1hdENvbnRl eHQgKnMsIEFWUGFja2V0ICpwa3QpCiAgICAgZWxzZQogICAgICAgICBmbGFnc19zaXplID0gMTsK IAotICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMgJiYgcGt0LT5wdHMg IT0gcGt0LT5kdHMpCisgICAgaWYgKHBhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklE RU8gJiYgdHJhY2tfaWR4KQorICAgICAgICBmbGFnc19zaXplICs9IDI7IC8vIGFkZGl0aW9uYWwg aGVhZGVyIGJ5dGVzIGZvciBtdWx0aS10cmFjayB2aWRlbworCisgICAgaWYgKChwYXItPmNvZGVj X2lkID09IEFWX0NPREVDX0lEX0hFVkMgfHwKKyAgICAgICAgKHBhci0+Y29kZWNfaWQgPT0gQVZf Q09ERUNfSURfSDI2NCAmJiB0cmFja19pZHgpKQorICAgICAgICAgICAgJiYgcGt0LT5wdHMgIT0g cGt0LT5kdHMpCiAgICAgICAgIGZsYWdzX3NpemUgKz0gMzsKIAogICAgIGlmIChwYXItPmNvZGVj X2lkID09IEFWX0NPREVDX0lEX0FBQyB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gy NjQKQEAgLTEwMTgsOSArMTA1MSw5IEBAIHN0YXRpYyBpbnQgZmx2X3dyaXRlX3BhY2tldChBVkZv cm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCiAgICAgICAgICAgICBpZiAocmV0IDwgMCkK ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgICAgICAgbWVtY3B5KHBhci0+ZXh0 cmFkYXRhLCBzaWRlLCBzaWRlX3NpemUpOwotICAgICAgICAgICAgZmx2X3dyaXRlX2NvZGVjX2hl YWRlcihzLCBwYXIsIHBrdC0+ZHRzKTsKKyAgICAgICAgICAgIGZsdl93cml0ZV9jb2RlY19oZWFk ZXIocywgcGFyLCBwa3QtPmR0cywgcGt0LT5zdHJlYW1faW5kZXgpOwogICAgICAgICB9Ci0gICAg ICAgIGZsdl93cml0ZV9tZXRhZGF0YV9wYWNrZXQocywgcGFyLCBwa3QtPmR0cyk7CisgICAgICAg IGZsdl93cml0ZV9tZXRhZGF0YV9wYWNrZXQocywgcGFyLCBwa3QtPmR0cywgcGt0LT5zdHJlYW1f aW5kZXgpOwogICAgIH0KIAogICAgIGlmIChmbHYtPmRlbGF5ID09IEFWX05PUFRTX1ZBTFVFKQpA QCAtMTE0MiwzMiArMTE3NSw1OSBAQCBzdGF0aWMgaW50IGZsdl93cml0ZV9wYWNrZXQoQVZGb3Jt YXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQogICAgICAgICBhdmlvX3NlZWsocGIsIGRhdGFf c2l6ZSArIDEwIC0gMywgU0VFS19DVVIpOwogICAgICAgICBhdmlvX3diMzIocGIsIGRhdGFfc2l6 ZSArIDExKTsKICAgICB9IGVsc2UgewotICAgICAgICBhdl9hc3NlcnQxKGZsYWdzPj0wKTsKLSAg ICAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykgewotICAgICAgICAg ICAgaW50IHBrdHR5cGUgPSAocGt0LT5wdHMgIT0gcGt0LT5kdHMpID8gUGFja2V0VHlwZUNvZGVk RnJhbWVzIDogUGFja2V0VHlwZUNvZGVkRnJhbWVzWDsKLSAgICAgICAgICAgIGF2aW9fdzgocGIs IEZMVl9JU19FWF9IRUFERVIgfCBwa3R0eXBlIHwgZnJhbWV0eXBlKTsgLy8gRXhWaWRlb1RhZ0hl YWRlciBtb2RlIHdpdGggUGFja2V0VHlwZUNvZGVkRnJhbWVzKFgpCi0gICAgICAgICAgICBhdmlv X3dyaXRlKHBiLCAiaHZjMSIsIDQpOwotICAgICAgICAgICAgaWYgKHBrdHR5cGUgPT0gUGFja2V0 VHlwZUNvZGVkRnJhbWVzKQorICAgICAgICBpbnQgZXh0ZW5kZWRfZmx2ID0gKHBhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfSDI2NCAmJiB0cmFja19pZHgpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X0FWMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBwYXItPmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX1ZQOTsKKworICAgICAgICBpZiAoZXh0ZW5kZWRfZmx2KSB7CisgICAgICAg ICAgICBpbnQgaDI2NDUgPSBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwKKyAg ICAgICAgICAgICAgICAgICAgICAgIHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQzsK KyAgICAgICAgICAgIGludCBwa3R0eXBlID0gUGFja2V0VHlwZUNvZGVkRnJhbWVzOworICAgICAg ICAgICAgLy8gT3B0aW1pc2F0aW9uIGZvciBIRVZDL0gyNjQ6IERvIG5vdCBzZW5kIGNvbXBvc2l0 aW9uIHRpbWUgaWYgRFRTID09IFBUUworICAgICAgICAgICAgaWYgKGgyNjQ1ICYmIHBrdC0+cHRz ID09IHBrdC0+ZHRzKQorICAgICAgICAgICAgICAgIHBrdHR5cGUgPSBQYWNrZXRUeXBlQ29kZWRG cmFtZXNYOworCisgICAgICAgICAgICBpZiAodHJhY2tfaWR4KSB7CisgICAgICAgICAgICAgICAg YXZpb193OChwYiwgRkxWX0lTX0VYX0hFQURFUiB8IFBhY2tldFR5cGVNdWx0aXRyYWNrIHwgZnJh bWV0eXBlKTsKKyAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCBNdWx0aXRyYWNrVHlwZU9uZVRy YWNrIHwgcGt0dHlwZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGF2 aW9fdzgocGIsIEZMVl9JU19FWF9IRUFERVIgfCBwa3R0eXBlIHwgZnJhbWV0eXBlKTsKKyAgICAg ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf SDI2NCkKKyAgICAgICAgICAgICAgICBhdmlvX3dyaXRlKHBiLCAiYXZjMSIsIDQpOworICAgICAg ICAgICAgZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKQorICAgICAg ICAgICAgICAgIGF2aW9fd3JpdGUocGIsICJodmMxIiwgNCk7CisgICAgICAgICAgICBlbHNlIGlm IChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkKKyAgICAgICAgICAgICAgICBhdmlv X3dyaXRlKHBiLCAiYXYwMSIsIDQpOworICAgICAgICAgICAgZWxzZSBpZiAocGFyLT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9WUDkpCisgICAgICAgICAgICAgICAgYXZpb193cml0ZShwYiwgInZw MDkiLCA0KTsKKworICAgICAgICAgICAgaWYgKHRyYWNrX2lkeCkKKyAgICAgICAgICAgICAgICBh dmlvX3c4KHBiLCB0cmFja19pZHgpOworICAgICAgICAgICAgaWYgKGgyNjQ1ICYmIHBrdHR5cGUg PT0gUGFja2V0VHlwZUNvZGVkRnJhbWVzKQogICAgICAgICAgICAgICAgIGF2aW9fd2IyNChwYiwg cGt0LT5wdHMgLSBwa3QtPmR0cyk7Ci0gICAgICAgIH0gZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9 PSBBVl9DT0RFQ19JRF9BVjEgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpIHsK LSAgICAgICAgICAgIGF2aW9fdzgocGIsIEZMVl9JU19FWF9IRUFERVIgfCBQYWNrZXRUeXBlQ29k ZWRGcmFtZXMgfCBmcmFtZXR5cGUpOwotICAgICAgICAgICAgYXZpb193cml0ZShwYiwgcGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEgPyAiYXYwMSIgOiAidnAwOSIsIDQpOwogICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgYXZfYXNzZXJ0MShmbGFncz49MCk7CiAgICAgICAgICAg ICBhdmlvX3c4KHBiLCBmbGFncyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHBhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfVlA2KQotICAgICAgICAgICAgYXZpb193OChwYiwwKTsKLSAgICAg ICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA2RiB8fCBwYXItPmNvZGVjX2lk ID09IEFWX0NPREVDX0lEX1ZQNkEpIHsKLSAgICAgICAgICAgIGlmIChwYXItPmV4dHJhZGF0YV9z aXplKQotICAgICAgICAgICAgICAgIGF2aW9fdzgocGIsIHBhci0+ZXh0cmFkYXRhWzBdKTsKLSAg ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCAoKEZGQUxJR04ocGFy LT53aWR0aCwgIDE2KSAtIHBhci0+d2lkdGgpIDw8IDQpIHwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKEZGQUxJR04ocGFyLT5oZWlnaHQsIDE2KSAtIHBhci0+aGVpZ2h0KSk7Ci0gICAg ICAgIH0gZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BQUMpCi0gICAgICAg ICAgICBhdmlvX3c4KHBiLCAxKTsgLy8gQUFDIHJhdwotICAgICAgICBlbHNlIGlmIChwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9NUEVHNCkgewotICAgICAgICAgICAgYXZpb193OChwYiwgMSk7IC8vIEFWQyBOQUxVCi0gICAg ICAgICAgICBhdmlvX3diMjQocGIsIHBrdC0+cHRzIC0gcGt0LT5kdHMpOworCisgICAgICAgICAg ICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDYpIHsKKyAgICAgICAgICAgICAg ICBhdmlvX3c4KHBiLDApOworICAgICAgICAgICAgfSBlbHNlIGlmIChwYXItPmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX1ZQNkYgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfVlA2QSkgeworICAgICAgICAgICAgICAgIGlmIChwYXItPmV4dHJh ZGF0YV9zaXplKQorICAgICAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCBwYXItPmV4dHJhZGF0 YVswXSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBhdmlvX3c4 KHBiLCAoKEZGQUxJR04ocGFyLT53aWR0aCwgIDE2KSAtIHBhci0+d2lkdGgpIDw8IDQpIHwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZGQUxJR04ocGFyLT5oZWlnaHQsIDE2KSAt IHBhci0+aGVpZ2h0KSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHBhci0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfQUFDKSB7CisgICAgICAgICAgICAgICAgYXZpb193OChwYiwgMSk7IC8vIEFB QyByYXcKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9IMjY0IHx8CisgICAgICAgICAgICAgICAgICAgICAgICBwYXItPmNvZGVjX2lkID09IEFWX0NP REVDX0lEX01QRUc0KSB7CisgICAgICAgICAgICAgICAgYXZpb193OChwYiwgMSk7IC8vIEFWQyBO QUxVCisgICAgICAgICAgICAgICAgYXZpb193YjI0KHBiLCBwa3QtPnB0cyAtIHBrdC0+ZHRzKTsK KyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGF2aW9fd3JpdGUocGIsIGRhdGEg PyBkYXRhIDogcGt0LT5kYXRhLCBzaXplKTsKQEAgLTEyMzQsNiArMTI5NCwxMCBAQCBzdGF0aWMg dm9pZCBmbHZfZGVpbml0KEFWRm9ybWF0Q29udGV4dCAqcykKICAgICB9CiAgICAgZmx2LT5maWxl cG9zaXRpb25zID0gZmx2LT5oZWFkX2ZpbGVwb3NpdGlvbnMgPSBOVUxMOwogICAgIGZsdi0+Zmls ZXBvc2l0aW9uc19jb3VudCA9IDA7CisKKyAgICBhdl9mcmVlcCgmZmx2LT5sYXN0X3RzKTsKKyAg ICBhdl9mcmVlcCgmZmx2LT5tZXRhZGF0YV9wa3Rfd3JpdHRlbik7CisgICAgYXZfZnJlZXAoJmZs di0+dmlkZW9fdHJhY2tfaWR4X21hcCk7CiB9CiAKIHN0YXRpYyBjb25zdCBBVk9wdGlvbiBvcHRp b25zW10gPSB7Ci0tIAoyLjQzLjIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBl Zy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpU byB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJl cXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K