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 42530403DA for ; Thu, 23 Jun 2022 12:27:06 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7BC1068B0FB; Thu, 23 Jun 2022 15:26:48 +0300 (EEST) Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A2C1368B6AC for ; Thu, 23 Jun 2022 15:26:41 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 4F1CE240179 for ; Thu, 23 Jun 2022 14:26:41 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id bsEy3cAggU4W for ; Thu, 23 Jun 2022 14:26:40 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id C857424017E for ; Thu, 23 Jun 2022 14:26:39 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id AC1F73A074C; Thu, 23 Jun 2022 14:26:39 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Thu, 23 Jun 2022 14:26:36 +0200 Message-Id: <20220623122636.24732-4-anton@khirnov.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220623122636.24732-1-anton@khirnov.net> References: <20220623122636.24732-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/4] lavc/get_bits: add a compat wrapper for the cached bitstream reader 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 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: VXNlIHRoYXQgaW5zdGVhZCBvZiB0aGUgbWVyZ2VkIHZlcnNpb24uCi0tLQogbGliYXZjb2RlYy9n ZXRfYml0cy5oIHwgMjk3ICsrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogMSBmaWxlIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDI0NyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9saWJhdmNvZGVjL2dldF9iaXRzLmggYi9saWJhdmNvZGVjL2dldF9iaXRzLmgK aW5kZXggOWYyYjE3ODRkNS4uZDlmYzc5NGM4YyAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9nZXRf Yml0cy5oCisrKyBiL2xpYmF2Y29kZWMvZ2V0X2JpdHMuaApAQCAtMSw2ICsxLDUgQEAKIC8qCiAg KiBDb3B5cmlnaHQgKGMpIDIwMDQgTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5h dD4KLSAqIENvcHlyaWdodCAoYykgMjAxNiBBbGV4YW5kcmEgSMOhamtvdsOhCiAgKgogICogVGhp cyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgogICoKQEAgLTU5LDEyICs1OCw0MyBAQAogI2RlZmlu ZSBDQUNIRURfQklUU1RSRUFNX1JFQURFUiAwCiAjZW5kaWYKIAorI2lmIENBQ0hFRF9CSVRTVFJF QU1fUkVBREVSCisjaW5jbHVkZSAiYml0c3RyZWFtLmgiCisKKyNkZWZpbmUgTUlOX0NBQ0hFX0JJ VFMgNjQKKwordHlwZWRlZiBCaXRzdHJlYW1Db250ZXh0IEdldEJpdENvbnRleHQ7CisKKyNkZWZp bmUgZ2V0X2JpdHNfY291bnQgICAgICBiaXRzdHJlYW1fdGVsbAorI2RlZmluZSBnZXRfYml0c19s ZWZ0ICAgICAgIGJpdHN0cmVhbV9iaXRzX2xlZnQKKyNkZWZpbmUgc2tpcF9iaXRzX2xvbmcgICAg ICBiaXRzdHJlYW1fc2tpcAorI2RlZmluZSBza2lwX2JpdHMgICAgICAgICAgIGJpdHN0cmVhbV9z a2lwCisjZGVmaW5lIGdldF9iaXRzICAgICAgICAgICAgYml0c3RyZWFtX3JlYWQKKyNkZWZpbmUg Z2V0X2JpdHN6ICAgICAgICAgICBiaXRzdHJlYW1fcmVhZAorI2RlZmluZSBnZXRfYml0c19sZSAg ICAgICAgIGJpdHN0cmVhbV9yZWFkCisjZGVmaW5lIGdldF9iaXRzX2xvbmcgICAgICAgYml0c3Ry ZWFtX3JlYWQKKyNkZWZpbmUgZ2V0X2JpdHM2NCAgICAgICAgICBiaXRzdHJlYW1fcmVhZF82Mwor I2RlZmluZSBnZXRfeGJpdHMgICAgICAgICAgIGJpdHN0cmVhbV9yZWFkX3hiaXRzCisjZGVmaW5l IGdldF9zYml0cyAgICAgICAgICAgYml0c3RyZWFtX3JlYWRfc2lnbmVkCisjZGVmaW5lIGdldF9z Yml0c19sb25nICAgICAgYml0c3RyZWFtX3JlYWRfc2lnbmVkCisjZGVmaW5lIHNob3dfYml0cyAg ICAgICAgICAgYml0c3RyZWFtX3BlZWsKKyNkZWZpbmUgc2hvd19iaXRzX2xvbmcgICAgICBiaXRz dHJlYW1fcGVlaworI2RlZmluZSBpbml0X2dldF9iaXRzICAgICAgIGJpdHN0cmVhbV9pbml0Cisj ZGVmaW5lIGluaXRfZ2V0X2JpdHM4ICAgICAgYml0c3RyZWFtX2luaXQ4CisjZGVmaW5lIGluaXRf Z2V0X2JpdHM4X2xlICAgYml0c3RyZWFtX2luaXQ4X2xlCisjZGVmaW5lIGFsaWduX2dldF9iaXRz ICAgICAgYml0c3RyZWFtX2FsaWduCisjZGVmaW5lIGdldF92bGMyICAgICAgICAgICAgYml0c3Ry ZWFtX3JlYWRfdmxjCisKKyNkZWZpbmUgZ2V0X2JpdHMxKHMpICAgICAgICBiaXRzdHJlYW1fcmVh ZChzLCAxKQorI2RlZmluZSBzaG93X2JpdHMxKHMpICAgICAgIGJpdHN0cmVhbV9wZWVrKHMsIDEp CisjZGVmaW5lIHNraXBfYml0czEocykgICAgICAgYml0c3RyZWFtX3NraXAocywgMSkKKworI2Rl ZmluZSBza2lwXzFzdG9wXzhkYXRhX2JpdHMgYml0c3RyZWFtX3NraXBfMXN0b3BfOGRhdGEKKwor I2Vsc2UgICAvLyBDQUNIRURfQklUU1RSRUFNX1JFQURFUgorCiB0eXBlZGVmIHN0cnVjdCBHZXRC aXRDb250ZXh0IHsKICAgICBjb25zdCB1aW50OF90ICpidWZmZXIsICpidWZmZXJfZW5kOwotI2lm IENBQ0hFRF9CSVRTVFJFQU1fUkVBREVSCi0gICAgdWludDY0X3QgY2FjaGU7Ci0gICAgdW5zaWdu ZWQgYml0c19sZWZ0OwotI2VuZGlmCiAgICAgaW50IGluZGV4OwogICAgIGludCBzaXplX2luX2Jp dHM7CiAgICAgaW50IHNpemVfaW5fYml0c19wbHVzODsKQEAgLTEyMSwxNiArMTUxLDEyIEBAIHN0 YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHNob3dfYml0cyhHZXRCaXRDb250ZXh0ICpzLCBpbnQg bik7CiAgKiBGb3IgZXhhbXBsZXMgc2VlIGdldF9iaXRzLCBzaG93X2JpdHMsIHNraXBfYml0cywg Z2V0X3ZsYy4KICAqLwogCi0jaWYgQ0FDSEVEX0JJVFNUUkVBTV9SRUFERVIKLSMgICBkZWZpbmUg TUlOX0NBQ0hFX0JJVFMgNjQKLSNlbGlmIGRlZmluZWQgTE9OR19CSVRTVFJFQU1fUkVBREVSCisj aWYgZGVmaW5lZCBMT05HX0JJVFNUUkVBTV9SRUFERVIKICMgICBkZWZpbmUgTUlOX0NBQ0hFX0JJ VFMgMzIKICNlbHNlCiAjICAgZGVmaW5lIE1JTl9DQUNIRV9CSVRTIDI1CiAjZW5kaWYKIAotI2lm ICFDQUNIRURfQklUU1RSRUFNX1JFQURFUgotCiAjZGVmaW5lIE9QRU5fUkVBREVSX05PU0laRShu YW1lLCBnYikgICAgICAgICAgICBcCiAgICAgdW5zaWduZWQgaW50IG5hbWUgIyMgX2luZGV4ID0g KGdiKS0+aW5kZXg7ICBcCiAgICAgdW5zaWduZWQgaW50IGF2X3VudXNlZCBuYW1lICMjIF9jYWNo ZQpAQCAtMjE1LDczICsyNDEsMTIgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgc2hvd19i aXRzKEdldEJpdENvbnRleHQgKnMsIGludCBuKTsKIAogI2RlZmluZSBHRVRfQ0FDSEUobmFtZSwg Z2IpICgodWludDMyX3QpIG5hbWUgIyMgX2NhY2hlKQogCi0jZW5kaWYKIAogc3RhdGljIGlubGlu ZSBpbnQgZ2V0X2JpdHNfY291bnQoY29uc3QgR2V0Qml0Q29udGV4dCAqcykKIHsKLSNpZiBDQUNI RURfQklUU1RSRUFNX1JFQURFUgotICAgIHJldHVybiBzLT5pbmRleCAtIHMtPmJpdHNfbGVmdDsK LSNlbHNlCiAgICAgcmV0dXJuIHMtPmluZGV4OwotI2VuZGlmCiB9CiAKLSNpZiBDQUNIRURfQklU U1RSRUFNX1JFQURFUgotc3RhdGljIGlubGluZSB2b2lkIHJlZmlsbF8zMihHZXRCaXRDb250ZXh0 ICpzLCBpbnQgaXNfbGUpCi17Ci0jaWYgIVVOQ0hFQ0tFRF9CSVRTVFJFQU1fUkVBREVSCi0gICAg aWYgKHMtPmluZGV4ID4+IDMgPj0gcy0+YnVmZmVyX2VuZCAtIHMtPmJ1ZmZlcikKLSAgICAgICAg cmV0dXJuOwotI2VuZGlmCi0KLSAgICBpZiAoaXNfbGUpCi0gICAgICAgIHMtPmNhY2hlID0gKHVp bnQ2NF90KUFWX1JMMzIocy0+YnVmZmVyICsgKHMtPmluZGV4ID4+IDMpKSA8PCBzLT5iaXRzX2xl ZnQgfCBzLT5jYWNoZTsKLSAgICBlbHNlCi0gICAgICAgIHMtPmNhY2hlID0gcy0+Y2FjaGUgfCAo dWludDY0X3QpQVZfUkIzMihzLT5idWZmZXIgKyAocy0+aW5kZXggPj4gMykpIDw8ICgzMiAtIHMt PmJpdHNfbGVmdCk7Ci0gICAgcy0+aW5kZXggICAgICs9IDMyOwotICAgIHMtPmJpdHNfbGVmdCAr PSAzMjsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIHJlZmlsbF82NChHZXRCaXRDb250ZXh0ICpz LCBpbnQgaXNfbGUpCi17Ci0jaWYgIVVOQ0hFQ0tFRF9CSVRTVFJFQU1fUkVBREVSCi0gICAgaWYg KHMtPmluZGV4ID4+IDMgPj0gcy0+YnVmZmVyX2VuZCAtIHMtPmJ1ZmZlcikKLSAgICAgICAgcmV0 dXJuOwotI2VuZGlmCi0KLSAgICBpZiAoaXNfbGUpCi0gICAgICAgIHMtPmNhY2hlID0gQVZfUkw2 NChzLT5idWZmZXIgKyAocy0+aW5kZXggPj4gMykpOwotICAgIGVsc2UKLSAgICAgICAgcy0+Y2Fj aGUgPSBBVl9SQjY0KHMtPmJ1ZmZlciArIChzLT5pbmRleCA+PiAzKSk7Ci0gICAgcy0+aW5kZXgg Kz0gNjQ7Ci0gICAgcy0+Yml0c19sZWZ0ID0gNjQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdWludDY0 X3QgZ2V0X3ZhbChHZXRCaXRDb250ZXh0ICpzLCB1bnNpZ25lZCBuLCBpbnQgaXNfbGUpCi17Ci0g ICAgdWludDY0X3QgcmV0OwotICAgIGF2X2Fzc2VydDIobj4wICYmIG48PTYzKTsKLSAgICBpZiAo aXNfbGUpIHsKLSAgICAgICAgcmV0ID0gcy0+Y2FjaGUgJiAoKFVJTlQ2NF9DKDEpIDw8IG4pIC0g MSk7Ci0gICAgICAgIHMtPmNhY2hlID4+PSBuOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldCA9 IHMtPmNhY2hlID4+ICg2NCAtIG4pOwotICAgICAgICBzLT5jYWNoZSA8PD0gbjsKLSAgICB9Ci0g ICAgcy0+Yml0c19sZWZ0IC09IG47Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIGlubGlu ZSB1bnNpZ25lZCBzaG93X3ZhbChjb25zdCBHZXRCaXRDb250ZXh0ICpzLCB1bnNpZ25lZCBuKQot ewotI2lmZGVmIEJJVFNUUkVBTV9SRUFERVJfTEUKLSAgICByZXR1cm4gcy0+Y2FjaGUgJiAoKFVJ TlQ2NF9DKDEpIDw8IG4pIC0gMSk7Ci0jZWxzZQotICAgIHJldHVybiBzLT5jYWNoZSA+PiAoNjQg LSBuKTsKLSNlbmRpZgotfQotI2VuZGlmCi0KIC8qKgogICogU2tpcHMgdGhlIHNwZWNpZmllZCBu dW1iZXIgb2YgYml0cy4KICAqIEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgYml0cyB0byBza2lwLApA QCAtMjkxLDI4ICsyNTYsMTIgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBzaG93X3ZhbChjb25z dCBHZXRCaXRDb250ZXh0ICpzLCB1bnNpZ25lZCBuKQogICovCiBzdGF0aWMgaW5saW5lIHZvaWQg c2tpcF9iaXRzX2xvbmcoR2V0Qml0Q29udGV4dCAqcywgaW50IG4pCiB7Ci0jaWYgQ0FDSEVEX0JJ VFNUUkVBTV9SRUFERVIKLSAgICBza2lwX2JpdHMocywgbik7Ci0jZWxzZQogI2lmIFVOQ0hFQ0tF RF9CSVRTVFJFQU1fUkVBREVSCiAgICAgcy0+aW5kZXggKz0gbjsKICNlbHNlCiAgICAgcy0+aW5k ZXggKz0gYXZfY2xpcChuLCAtcy0+aW5kZXgsIHMtPnNpemVfaW5fYml0c19wbHVzOCAtIHMtPmlu ZGV4KTsKICNlbmRpZgotI2VuZGlmCi19Ci0KLSNpZiBDQUNIRURfQklUU1RSRUFNX1JFQURFUgot c3RhdGljIGlubGluZSB2b2lkIHNraXBfcmVtYWluaW5nKEdldEJpdENvbnRleHQgKnMsIHVuc2ln bmVkIG4pCi17Ci0jaWZkZWYgQklUU1RSRUFNX1JFQURFUl9MRQotICAgIHMtPmNhY2hlID4+PSBu OwotI2Vsc2UKLSAgICBzLT5jYWNoZSA8PD0gbjsKLSNlbmRpZgotICAgIHMtPmJpdHNfbGVmdCAt PSBuOwogfQotI2VuZGlmCiAKIC8qKgogICogUmVhZCBNUEVHLTEgZGMtc3R5bGUgVkxDIChzaWdu IGJpdCArIG1hbnRpc3NhIHdpdGggbm8gTVNCKS4KQEAgLTMyMSwxMyArMjcwLDYgQEAgc3RhdGlj IGlubGluZSB2b2lkIHNraXBfcmVtYWluaW5nKEdldEJpdENvbnRleHQgKnMsIHVuc2lnbmVkIG4p CiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IGdldF94Yml0cyhHZXRCaXRDb250ZXh0ICpzLCBpbnQg bikKIHsKLSNpZiBDQUNIRURfQklUU1RSRUFNX1JFQURFUgotICAgIGludDMyX3QgY2FjaGUgPSBz aG93X2JpdHMocywgMzIpOwotICAgIGludCBzaWduID0gfmNhY2hlID4+IDMxOwotICAgIHNraXBf cmVtYWluaW5nKHMsIG4pOwotCi0gICAgcmV0dXJuICgoKCh1aW50MzJfdCkoc2lnbiBeIGNhY2hl KSkgPj4gKDMyIC0gbikpIF4gc2lnbikgLSBzaWduOwotI2Vsc2UKICAgICByZWdpc3RlciBpbnQg c2lnbjsKICAgICByZWdpc3RlciBpbnQzMl90IGNhY2hlOwogICAgIE9QRU5fUkVBREVSKHJlLCBz KTsKQEAgLTMzOCwxMCArMjgwLDggQEAgc3RhdGljIGlubGluZSBpbnQgZ2V0X3hiaXRzKEdldEJp dENvbnRleHQgKnMsIGludCBuKQogICAgIExBU1RfU0tJUF9CSVRTKHJlLCBzLCBuKTsKICAgICBD TE9TRV9SRUFERVIocmUsIHMpOwogICAgIHJldHVybiAoTkVHX1VTUjMyKHNpZ24gXiBjYWNoZSwg bikgXiBzaWduKSAtIHNpZ247Ci0jZW5kaWYKIH0KIAotI2lmICFDQUNIRURfQklUU1RSRUFNX1JF QURFUgogc3RhdGljIGlubGluZSBpbnQgZ2V0X3hiaXRzX2xlKEdldEJpdENvbnRleHQgKnMsIGlu dCBuKQogewogICAgIHJlZ2lzdGVyIGludCBzaWduOwpAQCAtMzU1LDIyICsyOTUsMTYgQEAgc3Rh dGljIGlubGluZSBpbnQgZ2V0X3hiaXRzX2xlKEdldEJpdENvbnRleHQgKnMsIGludCBuKQogICAg IENMT1NFX1JFQURFUihyZSwgcyk7CiAgICAgcmV0dXJuICh6ZXJvX2V4dGVuZChzaWduIF4gY2Fj aGUsIG4pIF4gc2lnbikgLSBzaWduOwogfQotI2VuZGlmCiAKIHN0YXRpYyBpbmxpbmUgaW50IGdl dF9zYml0cyhHZXRCaXRDb250ZXh0ICpzLCBpbnQgbikKIHsKICAgICByZWdpc3RlciBpbnQgdG1w OwotI2lmIENBQ0hFRF9CSVRTVFJFQU1fUkVBREVSCi0gICAgYXZfYXNzZXJ0MihuPjAgJiYgbjw9 MjUpOwotICAgIHRtcCA9IHNpZ25fZXh0ZW5kKGdldF9iaXRzKHMsIG4pLCBuKTsKLSNlbHNlCiAg ICAgT1BFTl9SRUFERVIocmUsIHMpOwogICAgIGF2X2Fzc2VydDIobj4wICYmIG48PTI1KTsKICAg ICBVUERBVEVfQ0FDSEUocmUsIHMpOwogICAgIHRtcCA9IFNIT1dfU0JJVFMocmUsIHMsIG4pOwog ICAgIExBU1RfU0tJUF9CSVRTKHJlLCBzLCBuKTsKICAgICBDTE9TRV9SRUFERVIocmUsIHMpOwot I2VuZGlmCiAgICAgcmV0dXJuIHRtcDsKIH0KIApAQCAtMzgwLDMyICszMTQsMTIgQEAgc3RhdGlj IGlubGluZSBpbnQgZ2V0X3NiaXRzKEdldEJpdENvbnRleHQgKnMsIGludCBuKQogc3RhdGljIGlu bGluZSB1bnNpZ25lZCBpbnQgZ2V0X2JpdHMoR2V0Qml0Q29udGV4dCAqcywgaW50IG4pCiB7CiAg ICAgcmVnaXN0ZXIgdW5zaWduZWQgaW50IHRtcDsKLSNpZiBDQUNIRURfQklUU1RSRUFNX1JFQURF UgotCi0gICAgYXZfYXNzZXJ0MihuPjAgJiYgbjw9MzIpOwotICAgIGlmIChuID4gcy0+Yml0c19s ZWZ0KSB7Ci0jaWZkZWYgQklUU1RSRUFNX1JFQURFUl9MRQotICAgICAgICByZWZpbGxfMzIocywg MSk7Ci0jZWxzZQotICAgICAgICByZWZpbGxfMzIocywgMCk7Ci0jZW5kaWYKLSAgICAgICAgaWYg KHMtPmJpdHNfbGVmdCA8IDMyKQotICAgICAgICAgICAgcy0+Yml0c19sZWZ0ID0gbjsKLSAgICB9 Ci0KLSNpZmRlZiBCSVRTVFJFQU1fUkVBREVSX0xFCi0gICAgdG1wID0gZ2V0X3ZhbChzLCBuLCAx KTsKLSNlbHNlCi0gICAgdG1wID0gZ2V0X3ZhbChzLCBuLCAwKTsKLSNlbmRpZgotI2Vsc2UKICAg ICBPUEVOX1JFQURFUihyZSwgcyk7CiAgICAgYXZfYXNzZXJ0MihuPjAgJiYgbjw9MjUpOwogICAg IFVQREFURV9DQUNIRShyZSwgcyk7CiAgICAgdG1wID0gU0hPV19VQklUUyhyZSwgcywgbik7CiAg ICAgTEFTVF9TS0lQX0JJVFMocmUsIHMsIG4pOwogICAgIENMT1NFX1JFQURFUihyZSwgcyk7Ci0j ZW5kaWYKICAgICBhdl9hc3NlcnQyKHRtcCA8IFVJTlQ2NF9DKDEpIDw8IG4pOwogICAgIHJldHVy biB0bXA7CiB9CkBAIC00MjAsMTYgKzMzNCw2IEBAIHN0YXRpYyBhdl9hbHdheXNfaW5saW5lIGlu dCBnZXRfYml0c3ooR2V0Qml0Q29udGV4dCAqcywgaW50IG4pCiAKIHN0YXRpYyBpbmxpbmUgdW5z aWduZWQgaW50IGdldF9iaXRzX2xlKEdldEJpdENvbnRleHQgKnMsIGludCBuKQogewotI2lmIENB Q0hFRF9CSVRTVFJFQU1fUkVBREVSCi0gICAgYXZfYXNzZXJ0MihuPjAgJiYgbjw9MzIpOwotICAg IGlmIChuID4gcy0+Yml0c19sZWZ0KSB7Ci0gICAgICAgIHJlZmlsbF8zMihzLCAxKTsKLSAgICAg ICAgaWYgKHMtPmJpdHNfbGVmdCA8IDMyKQotICAgICAgICAgICAgcy0+Yml0c19sZWZ0ID0gbjsK LSAgICB9Ci0KLSAgICByZXR1cm4gZ2V0X3ZhbChzLCBuLCAxKTsKLSNlbHNlCiAgICAgcmVnaXN0 ZXIgaW50IHRtcDsKICAgICBPUEVOX1JFQURFUihyZSwgcyk7CiAgICAgYXZfYXNzZXJ0MihuPjAg JiYgbjw9MjUpOwpAQCAtNDM4LDcgKzM0Miw2IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50 IGdldF9iaXRzX2xlKEdldEJpdENvbnRleHQgKnMsIGludCBuKQogICAgIExBU1RfU0tJUF9CSVRT KHJlLCBzLCBuKTsKICAgICBDTE9TRV9SRUFERVIocmUsIHMpOwogICAgIHJldHVybiB0bXA7Ci0j ZW5kaWYKIH0KIAogLyoqCkBAIC00NDcsNzEgKzM1MCwyMiBAQCBzdGF0aWMgaW5saW5lIHVuc2ln bmVkIGludCBnZXRfYml0c19sZShHZXRCaXRDb250ZXh0ICpzLCBpbnQgbikKIHN0YXRpYyBpbmxp bmUgdW5zaWduZWQgaW50IHNob3dfYml0cyhHZXRCaXRDb250ZXh0ICpzLCBpbnQgbikKIHsKICAg ICByZWdpc3RlciB1bnNpZ25lZCBpbnQgdG1wOwotI2lmIENBQ0hFRF9CSVRTVFJFQU1fUkVBREVS Ci0gICAgaWYgKG4gPiBzLT5iaXRzX2xlZnQpCi0jaWZkZWYgQklUU1RSRUFNX1JFQURFUl9MRQot ICAgICAgICByZWZpbGxfMzIocywgMSk7Ci0jZWxzZQotICAgICAgICByZWZpbGxfMzIocywgMCk7 Ci0jZW5kaWYKLQotICAgIHRtcCA9IHNob3dfdmFsKHMsIG4pOwotI2Vsc2UKICAgICBPUEVOX1JF QURFUl9OT1NJWkUocmUsIHMpOwogICAgIGF2X2Fzc2VydDIobj4wICYmIG48PTI1KTsKICAgICBV UERBVEVfQ0FDSEUocmUsIHMpOwogICAgIHRtcCA9IFNIT1dfVUJJVFMocmUsIHMsIG4pOwotI2Vu ZGlmCiAgICAgcmV0dXJuIHRtcDsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHNraXBfYml0cyhH ZXRCaXRDb250ZXh0ICpzLCBpbnQgbikKIHsKLSNpZiBDQUNIRURfQklUU1RSRUFNX1JFQURFUgot ICAgIGlmIChuIDwgcy0+Yml0c19sZWZ0KQotICAgICAgICBza2lwX3JlbWFpbmluZyhzLCBuKTsK LSAgICBlbHNlIHsKLSAgICAgICAgbiAtPSBzLT5iaXRzX2xlZnQ7Ci0gICAgICAgIHMtPmNhY2hl ID0gMDsKLSAgICAgICAgcy0+Yml0c19sZWZ0ID0gMDsKLQotICAgICAgICBpZiAobiA+PSA2NCkg ewotICAgICAgICAgICAgdW5zaWduZWQgc2tpcCA9IChuIC8gOCkgKiA4OwotCi0gICAgICAgICAg ICBuIC09IHNraXA7Ci0gICAgICAgICAgICBzLT5pbmRleCArPSBza2lwOwotICAgICAgICB9Ci0j aWZkZWYgQklUU1RSRUFNX1JFQURFUl9MRQotICAgICAgICByZWZpbGxfNjQocywgMSk7Ci0jZWxz ZQotICAgICAgICByZWZpbGxfNjQocywgMCk7Ci0jZW5kaWYKLSAgICAgICAgaWYgKG4pCi0gICAg ICAgICAgICBza2lwX3JlbWFpbmluZyhzLCBuKTsKLSAgICB9Ci0jZWxzZQogICAgIE9QRU5fUkVB REVSKHJlLCBzKTsKICAgICBMQVNUX1NLSVBfQklUUyhyZSwgcywgbik7CiAgICAgQ0xPU0VfUkVB REVSKHJlLCBzKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZXRf Yml0czEoR2V0Qml0Q29udGV4dCAqcykKIHsKLSNpZiBDQUNIRURfQklUU1RSRUFNX1JFQURFUgot ICAgIGlmICghcy0+Yml0c19sZWZ0KQotI2lmZGVmIEJJVFNUUkVBTV9SRUFERVJfTEUKLSAgICAg ICAgcmVmaWxsXzY0KHMsIDEpOwotI2Vsc2UKLSAgICAgICAgcmVmaWxsXzY0KHMsIDApOwotI2Vu ZGlmCi0KLSNpZmRlZiBCSVRTVFJFQU1fUkVBREVSX0xFCi0gICAgcmV0dXJuIGdldF92YWwocywg MSwgMSk7Ci0jZWxzZQotICAgIHJldHVybiBnZXRfdmFsKHMsIDEsIDApOwotI2VuZGlmCi0jZWxz ZQogICAgIHVuc2lnbmVkIGludCBpbmRleCA9IHMtPmluZGV4OwogICAgIHVpbnQ4X3QgcmVzdWx0 ICAgICA9IHMtPmJ1ZmZlcltpbmRleCA+PiAzXTsKICNpZmRlZiBCSVRTVFJFQU1fUkVBREVSX0xF CkBAIC01MjgsNyArMzgyLDYgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2V0X2JpdHMx KEdldEJpdENvbnRleHQgKnMpCiAgICAgcy0+aW5kZXggPSBpbmRleDsKIAogICAgIHJldHVybiBy ZXN1bHQ7Ci0jZW5kaWYKIH0KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgc2hvd19iaXRz MShHZXRCaXRDb250ZXh0ICpzKQpAQCAtNTQ5LDEwICs0MDIsNiBAQCBzdGF0aWMgaW5saW5lIHVu c2lnbmVkIGludCBnZXRfYml0c19sb25nKEdldEJpdENvbnRleHQgKnMsIGludCBuKQogICAgIGF2 X2Fzc2VydDIobj49MCAmJiBuPD0zMik7CiAgICAgaWYgKCFuKSB7CiAgICAgICAgIHJldHVybiAw OwotI2lmIENBQ0hFRF9CSVRTVFJFQU1fUkVBREVSCi0gICAgfQotICAgIHJldHVybiBnZXRfYml0 cyhzLCBuKTsKLSNlbHNlCiAgICAgfSBlbHNlIGlmIChuIDw9IE1JTl9DQUNIRV9CSVRTKSB7CiAg ICAgICAgIHJldHVybiBnZXRfYml0cyhzLCBuKTsKICAgICB9IGVsc2UgewpAQCAtNTY0LDcgKzQx Myw2IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdldF9iaXRzX2xvbmcoR2V0Qml0Q29u dGV4dCAqcywgaW50IG4pCiAgICAgICAgIHJldHVybiByZXQgfCBnZXRfYml0cyhzLCBuIC0gMTYp OwogI2VuZGlmCiAgICAgfQotI2VuZGlmCiB9CiAKIC8qKgpAQCAtNjEwLDggKzQ1OCwxNyBAQCBz dGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBzaG93X2JpdHNfbG9uZyhHZXRCaXRDb250ZXh0ICpz LCBpbnQgbikKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IGluaXRfZ2V0X2JpdHNfeGUo R2V0Qml0Q29udGV4dCAqcywgY29uc3QgdWludDhfdCAqYnVmZmVyLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgYml0X3NpemUsIGludCBpc19sZSkKKworLyoqCisgKiBJ bml0aWFsaXplIEdldEJpdENvbnRleHQuCisgKiBAcGFyYW0gYnVmZmVyIGJpdHN0cmVhbSBidWZm ZXIsIG11c3QgYmUgQVZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSBieXRlcworICogICAgICAg IGxhcmdlciB0aGFuIHRoZSBhY3R1YWwgcmVhZCBiaXRzIGJlY2F1c2Ugc29tZSBvcHRpbWl6ZWQg Yml0c3RyZWFtCisgKiAgICAgICAgcmVhZGVycyByZWFkIDMyIG9yIDY0IGJpdCBhdCBvbmNlIGFu ZCBjb3VsZCByZWFkIG92ZXIgdGhlIGVuZAorICogQHBhcmFtIGJpdF9zaXplIHRoZSBzaXplIG9m IHRoZSBidWZmZXIgaW4gYml0cworICogQHJldHVybiAwIG9uIHN1Y2Nlc3MsIEFWRVJST1JfSU5W QUxJRERBVEEgaWYgdGhlIGJ1ZmZlcl9zaXplIHdvdWxkIG92ZXJmbG93LgorICovCitzdGF0aWMg aW5saW5lIGludCBpbml0X2dldF9iaXRzKEdldEJpdENvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3Qg KmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJpdF9zaXplKQog ewogICAgIGludCBidWZmZXJfc2l6ZTsKICAgICBpbnQgcmV0ID0gMDsKQEAgLTYzMCwzMyArNDg3 LDkgQEAgc3RhdGljIGlubGluZSBpbnQgaW5pdF9nZXRfYml0c194ZShHZXRCaXRDb250ZXh0ICpz LCBjb25zdCB1aW50OF90ICpidWZmZXIsCiAgICAgcy0+YnVmZmVyX2VuZCAgICAgICAgID0gYnVm ZmVyICsgYnVmZmVyX3NpemU7CiAgICAgcy0+aW5kZXggICAgICAgICAgICAgID0gMDsKIAotI2lm IENBQ0hFRF9CSVRTVFJFQU1fUkVBREVSCi0gICAgcy0+Y2FjaGUgICAgICAgICAgICAgID0gMDsK LSAgICBzLT5iaXRzX2xlZnQgICAgICAgICAgPSAwOwotICAgIHJlZmlsbF82NChzLCBpc19sZSk7 Ci0jZW5kaWYKLQogICAgIHJldHVybiByZXQ7CiB9CiAKLS8qKgotICogSW5pdGlhbGl6ZSBHZXRC aXRDb250ZXh0LgotICogQHBhcmFtIGJ1ZmZlciBiaXRzdHJlYW0gYnVmZmVyLCBtdXN0IGJlIEFW X0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUgYnl0ZXMKLSAqICAgICAgICBsYXJnZXIgdGhhbiB0 aGUgYWN0dWFsIHJlYWQgYml0cyBiZWNhdXNlIHNvbWUgb3B0aW1pemVkIGJpdHN0cmVhbQotICog ICAgICAgIHJlYWRlcnMgcmVhZCAzMiBvciA2NCBiaXQgYXQgb25jZSBhbmQgY291bGQgcmVhZCBv dmVyIHRoZSBlbmQKLSAqIEBwYXJhbSBiaXRfc2l6ZSB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIGlu IGJpdHMKLSAqIEByZXR1cm4gMCBvbiBzdWNjZXNzLCBBVkVSUk9SX0lOVkFMSUREQVRBIGlmIHRo ZSBidWZmZXJfc2l6ZSB3b3VsZCBvdmVyZmxvdy4KLSAqLwotc3RhdGljIGlubGluZSBpbnQgaW5p dF9nZXRfYml0cyhHZXRCaXRDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpidWZmZXIsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiaXRfc2l6ZSkKLXsKLSNpZmRlZiBCSVRT VFJFQU1fUkVBREVSX0xFCi0gICAgcmV0dXJuIGluaXRfZ2V0X2JpdHNfeGUocywgYnVmZmVyLCBi aXRfc2l6ZSwgMSk7Ci0jZWxzZQotICAgIHJldHVybiBpbml0X2dldF9iaXRzX3hlKHMsIGJ1ZmZl ciwgYml0X3NpemUsIDApOwotI2VuZGlmCi19Ci0KIC8qKgogICogSW5pdGlhbGl6ZSBHZXRCaXRD b250ZXh0LgogICogQHBhcmFtIGJ1ZmZlciBiaXRzdHJlYW0gYnVmZmVyLCBtdXN0IGJlIEFWX0lO UFVUX0JVRkZFUl9QQURESU5HX1NJWkUgYnl0ZXMKQEAgLTY3OCw3ICs1MTEsNyBAQCBzdGF0aWMg aW5saW5lIGludCBpbml0X2dldF9iaXRzOF9sZShHZXRCaXRDb250ZXh0ICpzLCBjb25zdCB1aW50 OF90ICpidWZmZXIsCiB7CiAgICAgaWYgKGJ5dGVfc2l6ZSA+IElOVF9NQVggLyA4IHx8IGJ5dGVf c2l6ZSA8IDApCiAgICAgICAgIGJ5dGVfc2l6ZSA9IC0xOwotICAgIHJldHVybiBpbml0X2dldF9i aXRzX3hlKHMsIGJ1ZmZlciwgYnl0ZV9zaXplICogOCwgMSk7CisgICAgcmV0dXJuIGluaXRfZ2V0 X2JpdHMocywgYnVmZmVyLCBieXRlX3NpemUgKiA4KTsKIH0KIAogc3RhdGljIGlubGluZSBjb25z dCB1aW50OF90ICphbGlnbl9nZXRfYml0cyhHZXRCaXRDb250ZXh0ICpzKQpAQCAtNzYzLDE5ICs1 OTYsNiBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IHVpbnQ4X3QgKmFsaWduX2dldF9iaXRzKEdldEJp dENvbnRleHQgKnMpCiAgICAgICAgIFNLSVBfQklUUyhuYW1lLCBnYiwgbik7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKLS8qIFJldHVybiB0aGUg TFVUIGVsZW1lbnQgZm9yIHRoZSBnaXZlbiBiaXRzdHJlYW0gY29uZmlndXJhdGlvbi4gKi8KLXN0 YXRpYyBpbmxpbmUgaW50IHNldF9pZHgoR2V0Qml0Q29udGV4dCAqcywgaW50IGNvZGUsIGludCAq biwgaW50ICpuYl9iaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWTENFbGVt ICp0YWJsZSkKLXsKLSAgICB1bnNpZ25lZCBpZHg7Ci0KLSAgICAqbmJfYml0cyA9IC0qbjsKLSAg ICBpZHggPSBzaG93X2JpdHMocywgKm5iX2JpdHMpICsgY29kZTsKLSAgICAqbiA9IHRhYmxlW2lk eF0ubGVuOwotCi0gICAgcmV0dXJuIHRhYmxlW2lkeF0uc3ltOwotfQotCiAvKioKICAqIFBhcnNl IGEgdmxjIGNvZGUuCiAgKiBAcGFyYW0gYml0cyBpcyB0aGUgbnVtYmVyIG9mIGJpdHMgd2hpY2gg d2lsbCBiZSByZWFkIGF0IG9uY2UsIG11c3QgYmUKQEAgLTc4OCwyNCArNjA4LDYgQEAgc3RhdGlj IGlubGluZSBpbnQgc2V0X2lkeChHZXRCaXRDb250ZXh0ICpzLCBpbnQgY29kZSwgaW50ICpuLCBp bnQgKm5iX2JpdHMsCiBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgZ2V0X3ZsYzIoR2V0Qml0 Q29udGV4dCAqcywgY29uc3QgVkxDRWxlbSAqdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGJpdHMsIGludCBtYXhfZGVwdGgpCiB7Ci0jaWYgQ0FDSEVEX0JJ VFNUUkVBTV9SRUFERVIKLSAgICBpbnQgbmJfYml0czsKLSAgICB1bnNpZ25lZCBpZHggPSBzaG93 X2JpdHMocywgYml0cyk7Ci0gICAgaW50IGNvZGUgPSB0YWJsZVtpZHhdLnN5bTsKLSAgICBpbnQg biAgICA9IHRhYmxlW2lkeF0ubGVuOwotCi0gICAgaWYgKG1heF9kZXB0aCA+IDEgJiYgbiA8IDAp IHsKLSAgICAgICAgc2tpcF9yZW1haW5pbmcocywgYml0cyk7Ci0gICAgICAgIGNvZGUgPSBzZXRf aWR4KHMsIGNvZGUsICZuLCAmbmJfYml0cywgdGFibGUpOwotICAgICAgICBpZiAobWF4X2RlcHRo ID4gMiAmJiBuIDwgMCkgewotICAgICAgICAgICAgc2tpcF9yZW1haW5pbmcocywgbmJfYml0cyk7 Ci0gICAgICAgICAgICBjb2RlID0gc2V0X2lkeChzLCBjb2RlLCAmbiwgJm5iX2JpdHMsIHRhYmxl KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBza2lwX3JlbWFpbmluZyhzLCBuKTsKLQotICAgIHJl dHVybiBjb2RlOwotI2Vsc2UKICAgICBpbnQgY29kZTsKIAogICAgIE9QRU5fUkVBREVSKHJlLCBz KTsKQEAgLTgxNiw3ICs2MTgsNiBAQCBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgZ2V0X3Zs YzIoR2V0Qml0Q29udGV4dCAqcywgY29uc3QgVkxDRWxlbSAqdGFibGUsCiAgICAgQ0xPU0VfUkVB REVSKHJlLCBzKTsKIAogICAgIHJldHVybiBjb2RlOwotI2VuZGlmCiB9CiAKIHN0YXRpYyBpbmxp bmUgaW50IGRlY29kZTAxMihHZXRCaXRDb250ZXh0ICpnYikKQEAgLTg1Niw0ICs2NTcsNiBAQCBz dGF0aWMgaW5saW5lIGludCBza2lwXzFzdG9wXzhkYXRhX2JpdHMoR2V0Qml0Q29udGV4dCAqZ2Ip CiAgICAgcmV0dXJuIDA7CiB9CiAKKyNlbmRpZiAvLyBDQUNIRURfQklUU1RSRUFNX1JFQURFUgor CiAjZW5kaWYgLyogQVZDT0RFQ19HRVRfQklUU19IICovCi0tIAoyLjM0LjEKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5n IGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4v bGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwg b3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVu c3Vic2NyaWJlIi4K