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 C4CF544FED for ; Mon, 19 Dec 2022 07:34:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2993D68B29E; Mon, 19 Dec 2022 09:34:27 +0200 (EET) Received: from mail-lf1-f43.google.com (mail-lf1-f43.google.com [209.85.167.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6215868A8C1 for ; Mon, 19 Dec 2022 09:34:19 +0200 (EET) Received: by mail-lf1-f43.google.com with SMTP id c1so12374369lfi.7 for ; Sun, 18 Dec 2022 23:34:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=KpLWpzBX42NKrvxzQ0vgpdR8ff9t1MU2QUluDoU3FJY=; b=Qgn5zWuL6wfUyJ8RLWa05NdJw+P6B3cxQp7z1wDxmhNevhyYRu+bfVcvFbycIla8c/ 74YRZHvGNFQu5Fb/L5EP5eXSwJhuaF66jMhteZjz6vKXtJDKt6wGh7fXy7LIvMuPyVLU R39I+3C0DUuPFkZiUxWOQKyt/tJqoq20y3gN1L0ZNiYUbSFgn6wpl+ScK3+sKniFR1Ou Xm0ZZUdRUUYdxQNhjIxX2Y7N2FUlI8kzrH3yW302joPMfsuXCtnbbOqtHO1wNkfocAEq DdxxWuNtbGs9FK96IMFjBXNi89r4IclZM+ss2C7FRNz/B5yIWqdBN7Zjoq0H9YIZAbCq 2Kwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KpLWpzBX42NKrvxzQ0vgpdR8ff9t1MU2QUluDoU3FJY=; b=FgDQYxcLLJ7uKd/F2h0wxanBxGmSfa5B+d2rbUgg6xjzpMPHVUnX6EohEQpJly4wXT 3fR4OYDMRC0bYLsbCkgldTkEvowjU+yx7yJmyH/AFmPdOLeRnaqPXwrkljL743QT/MP3 JcyX8qqazrhWGqKc5LJiI1rTYT43OlQBnTiRgZIrjZNMlSMSV/vb3rtLs1OqodVc7C9e m85J/35SaFCBTYJQe4k7GTgEB5CPduWeOgzY+szTuUgJoVz3QXRCJ1HSz/kH563ueY6t 5TBX/WlmUQIIDiXjM6350cc4UKrGgcmWrUNjIeiJ5CnH3sGqKVQIafYmTTHtm1StkOTP UNSQ== X-Gm-Message-State: ANoB5pnmk54P67OeRIwEbE2jUp2jWbCYYcZPvx/W27SdXi9bo9ajs6to lTRMizMK9wJY4heKryFqhMiX/FSp0MM= X-Google-Smtp-Source: AA0mqf4zQBflZJ/6AttQK/9jGhqO8Z1rSkTGCLzCGG73H9QHN0LmCNuBLNyjF+kqOdB6yRfyc19GEw== X-Received: by 2002:a05:6512:33c5:b0:4a4:68b7:f86d with SMTP id d5-20020a05651233c500b004a468b7f86dmr22802943lfg.17.1671435258617; Sun, 18 Dec 2022 23:34:18 -0800 (PST) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id r7-20020a19ac47000000b004b58ebf0399sm1029165lfc.132.2022.12.18.23.34.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 Dec 2022 23:34:18 -0800 (PST) From: =?UTF-8?q?Jan=20Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Mon, 19 Dec 2022 09:34:08 +0200 Message-Id: <20221219073408.11501-4-jeebjp@gmail.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221219073408.11501-1-jeebjp@gmail.com> References: <20221219073408.11501-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v6 3/3] ffmpeg: add video heartbeat capability to fix_sub_duration 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: RnJvbTogSmFuIEVrc3Ryw7ZtIDxqYW4uZWtzdHJvbUAyNGkuY29tPgoKU3BsaXRzIHRoZSBjdXJy ZW50bHkgaGFuZGxlZCBzdWJ0aXRsZSBhdCByYW5kb20gYWNjZXNzIHBvaW50CnBhY2tldHMgdGhh dCBjYW4gYmUgY29uZmlndXJlZCB0byBmb2xsb3cgYSBzcGVjaWZpYyBvdXRwdXQgc3RyZWFtLgoK VGhpcyB3YXkgdGhlIHN1YnRpdGxlIC0gd2hpY2ggaXMga25vd24gdG8gYmUgc2hvd24gYXQgdGhp cyB0aW1lCmNhbiBiZSBzcGxpdCBhbmQgcGFzc2VkIHRvIG11eGVyIGJlZm9yZSBpdHMgZnVsbCBk dXJhdGlvbiBpcwp5ZXQga25vd24uIFRoaXMgaXMgYWxzbyBhIGRyYXdiYWNrLCBhcyB0aGlzIGVz c2VudGlhbGx5IG91dHB1dHMKbXVsdGlwbGUgc3VidGl0bGVzIGZyb20gYSBzaW5nbGUgaW5wdXQg c3VidGl0bGUgdGhhdCBjb250aW51ZXMKb3ZlciBtdWx0aXBsZSByYW5kb20gYWNjZXNzIHBvaW50 cy4gVGh1cyB0aGlzIGZlYXR1cmUgc2hvdWxkIG5vdApiZSB1dGlsaXplZCBpbiBjYXNlcyB3aGVy ZSBzdWJ0aXRsZSBvdXRwdXQgbGF0ZW5jeSBkb2VzIG5vdCBtYXR0ZXIuCgpDby1hdXRob3JlZC1i eTogQW5kcnplaiBOYWRhY2hvd3NraSA8YW5kcnplai5uYWRhY2hvd3NraUAyNGkuY29tPgpDby1h dXRob3JlZC1ieTogQmVybmFyZCBCb3VsYXkgPGJlcm5hcmQuYm91bGF5QDI0aS5jb20+CgpTaWdu ZWQtb2ZmLWJ5OiBKYW4gRWtzdHLDtm0gPGphbi5la3N0cm9tQDI0aS5jb20+Ci0tLQogZG9jL2Zm bXBlZy50ZXhpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsrCiBmZnRvb2xz L2ZmbXBlZy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNDEgKysrKysrKysrKysr KysrKysrCiBmZnRvb2xzL2ZmbXBlZy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDggKwogZmZ0b29scy9mZm1wZWdfbXV4X2luaXQuYyAgICAgICAgICAgICAgICAgICAgIHwgICA0 ICsKIGZmdG9vbHMvZmZtcGVnX29wdC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSAr CiB0ZXN0cy9mYXRlL2ZmbXBlZy5tYWsgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTQgKysK IC4uLi9mYXRlL2ZmbXBlZy1maXhfc3ViX2R1cmF0aW9uX2hlYXJ0YmVhdCAgICB8ICA0OCArKysr KysKIDcgZmlsZXMgY2hhbmdlZCwgMjM0IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0ZXN0cy9yZWYvZmF0ZS9mZm1wZWctZml4X3N1Yl9kdXJhdGlvbl9oZWFydGJlYXQKCmRpZmYg LS1naXQgYS9kb2MvZmZtcGVnLnRleGkgYi9kb2MvZmZtcGVnLnRleGkKaW5kZXggMDM2NzkzMGEz Yi4uZDVmMjMxZTYzNSAxMDA2NDQKLS0tIGEvZG9jL2ZmbXBlZy50ZXhpCisrKyBiL2RvYy9mZm1w ZWcudGV4aQpAQCAtMTMzOSw2ICsxMzM5LDIwIEBAIExpc3QgYWxsIGhhcmR3YXJlIGFjY2VsZXJh dGlvbiBjb21wb25lbnRzIGVuYWJsZWQgaW4gdGhpcyBidWlsZCBvZiBmZm1wZWcuCiBBY3R1YWwg cnVudGltZSBhdmFpbGFiaWxpdHkgZGVwZW5kcyBvbiB0aGUgaGFyZHdhcmUgYW5kIGl0cyBzdWl0 YWJsZSBkcml2ZXIKIGJlaW5nIGluc3RhbGxlZC4KIAorQGl0ZW0gLWZpeF9zdWJfZHVyYXRpb25f aGVhcnRiZWF0WzpAdmFye3N0cmVhbV9zcGVjaWZpZXJ9XQorU2V0IGEgc3BlY2lmaWMgb3V0cHV0 IHZpZGVvIHN0cmVhbSBhcyB0aGUgaGVhcnRiZWF0IHN0cmVhbSBhY2NvcmRpbmcgdG8gd2hpY2gK K3RvIHNwbGl0IGFuZCBwdXNoIHRocm91Z2ggY3VycmVudGx5IGluLXByb2dyZXNzIHN1YnRpdGxl IHVwb24gcmVjZWlwdCBvZiBhCityYW5kb20gYWNjZXNzIHBhY2tldC4KKworVGhpcyBsb3dlcnMg dGhlIGxhdGVuY3kgb2Ygc3VidGl0bGVzIGZvciB3aGljaCB0aGUgZW5kIHBhY2tldCBvciB0aGUg Zm9sbG93aW5nCitzdWJ0aXRsZSBoYXMgbm90IHlldCBiZWVuIHJlY2VpdmVkLiBBcyBhIGRyYXdi YWNrLCB0aGlzIHdpbGwgbW9zdCBsaWtlbHkgbGVhZAordG8gZHVwbGljYXRpb24gb2Ygc3VidGl0 bGUgZXZlbnRzIGluIG9yZGVyIHRvIGNvdmVyIHRoZSBmdWxsIGR1cmF0aW9uLCBzbword2hlbiBk ZWFsaW5nIHdpdGggdXNlIGNhc2VzIHdoZXJlIGxhdGVuY3kgb2Ygd2hlbiB0aGUgc3VidGl0bGUg ZXZlbnQgaXMgcGFzc2VkCitvbiB0byBvdXRwdXQgaXMgbm90IHJlbGV2YW50IHRoaXMgb3B0aW9u IHNob3VsZCBub3QgYmUgdXRpbGl6ZWQuCisKK1JlcXVpcmVzIEBvcHRpb257LWZpeF9zdWJfZHVy YXRpb259IHRvIGJlIHNldCBmb3IgdGhlIHJlbGV2YW50IGlucHV0IHN1YnRpdGxlCitzdHJlYW0g Zm9yIHRoaXMgdG8gaGF2ZSBhbnkgZWZmZWN0LgorCiBAZW5kIHRhYmxlCiAKIEBzZWN0aW9uIEF1 ZGlvIE9wdGlvbnMKZGlmZiAtLWdpdCBhL2ZmdG9vbHMvZmZtcGVnLmMgYi9mZnRvb2xzL2ZmbXBl Zy5jCmluZGV4IDNiOTRlYWFhNTguLjFmZGU0YmYwZjUgMTAwNjQ0Ci0tLSBhL2ZmdG9vbHMvZmZt cGVnLmMKKysrIGIvZmZ0b29scy9mZm1wZWcuYwpAQCAtMTE5LDYgKzExOSw3IEBAIHR5cGVkZWYg c3RydWN0IEJlbmNobWFya1RpbWVTdGFtcHMgewogICAgIGludDY0X3Qgc3lzX3VzZWM7CiB9IEJl bmNobWFya1RpbWVTdGFtcHM7CiAKK3N0YXRpYyBpbnQgdHJpZ2dlcl9maXhfc3ViX2R1cmF0aW9u X2hlYXJ0YmVhdChPdXRwdXRTdHJlYW0gKm9zdCwgY29uc3QgQVZQYWNrZXQgKnBrdCk7CiBzdGF0 aWMgQmVuY2htYXJrVGltZVN0YW1wcyBnZXRfYmVuY2htYXJrX3RpbWVfc3RhbXBzKHZvaWQpOwog c3RhdGljIGludDY0X3QgZ2V0bWF4cnNzKHZvaWQpOwogc3RhdGljIGludCBpZmlsdGVyX2hhc19h bGxfaW5wdXRfZm9ybWF0cyhGaWx0ZXJHcmFwaCAqZmcpOwpAQCAtODcwLDYgKzg3MSwxMyBAQCBz dGF0aWMgaW50IGVuY29kZV9mcmFtZShPdXRwdXRGaWxlICpvZiwgT3V0cHV0U3RyZWFtICpvc3Qs IEFWRnJhbWUgKmZyYW1lKQogICAgICAgICAgICAgICAgICAgIGF2X3RzMnN0cihwa3QtPmR1cmF0 aW9uKSwgYXZfdHMydGltZXN0cihwa3QtPmR1cmF0aW9uLCAmZW5jLT50aW1lX2Jhc2UpKTsKICAg ICAgICAgfQogCisgICAgICAgIGlmICgocmV0ID0gdHJpZ2dlcl9maXhfc3ViX2R1cmF0aW9uX2hl YXJ0YmVhdChvc3QsIHBrdCkpIDwgMCkgeworICAgICAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xP R19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAiU3VidGl0bGUgaGVhcnRiZWF0IGxvZ2ljIGZh aWxlZCBpbiAlcyEgKCVzKVxuIiwKKyAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgYXZfZXJy MnN0cihyZXQpKTsKKyAgICAgICAgICAgIGV4aXRfcHJvZ3JhbSgxKTsKKyAgICAgICAgfQorCiAg ICAgICAgIG9zdC0+ZGF0YV9zaXplX2VuYyArPSBwa3QtPnNpemU7CiAKICAgICAgICAgaWYgKGVu Yy0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8pCkBAIC0xODE3LDYgKzE4MjUsMTYg QEAgc3RhdGljIHZvaWQgZG9fc3RyZWFtY29weShJbnB1dFN0cmVhbSAqaXN0LCBPdXRwdXRTdHJl YW0gKm9zdCwgY29uc3QgQVZQYWNrZXQgKnAKIAogICAgIG9wa3QtPmR1cmF0aW9uID0gYXZfcmVz Y2FsZV9xKHBrdC0+ZHVyYXRpb24sIGlzdC0+c3QtPnRpbWVfYmFzZSwgb3N0LT5tdXhfdGltZWJh c2UpOwogCisgICAgeworICAgICAgICBpbnQgcmV0ID0gdHJpZ2dlcl9maXhfc3ViX2R1cmF0aW9u X2hlYXJ0YmVhdChvc3QsIHBrdCk7CisgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAg ICBhdl9sb2coTlVMTCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICJTdWJ0aXRs ZSBoZWFydGJlYXQgbG9naWMgZmFpbGVkIGluICVzISAoJXMpXG4iLAorICAgICAgICAgICAgICAg ICAgIF9fZnVuY19fLCBhdl9lcnIyc3RyKHJldCkpOworICAgICAgICAgICAgZXhpdF9wcm9ncmFt KDEpOworICAgICAgICB9CisgICAgfQorCiAgICAgb2Zfb3V0cHV0X3BhY2tldChvZiwgb3BrdCwg b3N0LCAwKTsKIAogICAgIG9zdC0+c3RyZWFtY29weV9zdGFydGVkID0gMTsKQEAgLTIyNDYsNiAr MjI2NCwxMjkgQEAgb3V0OgogICAgIHJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBpbnQgY29weV9h dl9zdWJ0aXRsZShBVlN1YnRpdGxlICpkc3QsIEFWU3VidGl0bGUgKnNyYykKK3sKKyAgICBpbnQg cmV0ID0gQVZFUlJPUl9CVUc7CisgICAgQVZTdWJ0aXRsZSB0bXAgPSB7CisgICAgICAgIC5mb3Jt YXQgPSBzcmMtPmZvcm1hdCwKKyAgICAgICAgLnN0YXJ0X2Rpc3BsYXlfdGltZSA9IHNyYy0+c3Rh cnRfZGlzcGxheV90aW1lLAorICAgICAgICAuZW5kX2Rpc3BsYXlfdGltZSA9IHNyYy0+ZW5kX2Rp c3BsYXlfdGltZSwKKyAgICAgICAgLm51bV9yZWN0cyA9IDAsCisgICAgICAgIC5yZWN0cyA9IE5V TEwsCisgICAgICAgIC5wdHMgPSBzcmMtPnB0cworICAgIH07CisKKyAgICBpZiAoIXNyYy0+bnVt X3JlY3RzKQorICAgICAgICBnb3RvIHN1Y2Nlc3M7CisKKyAgICBpZiAoISh0bXAucmVjdHMgPSBh dl9jYWxsb2Moc3JjLT5udW1fcmVjdHMsIHNpemVvZigqdG1wLnJlY3RzKSkpKQorICAgICAgICBy ZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzcmMtPm51 bV9yZWN0czsgaSsrKSB7CisgICAgICAgIEFWU3VidGl0bGVSZWN0ICpzcmNfcmVjdCA9IHNyYy0+ cmVjdHNbaV07CisgICAgICAgIEFWU3VidGl0bGVSZWN0ICpkc3RfcmVjdDsKKworICAgICAgICBp ZiAoIShkc3RfcmVjdCA9IHRtcC5yZWN0c1tpXSA9IGF2X21hbGxvY3ooc2l6ZW9mKCp0bXAucmVj dHNbMF0pKSkpIHsKKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRU5PTUVNKTsKKyAgICAgICAg ICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAgfQorCisgICAgICAgIHRtcC5udW1fcmVjdHMrKzsK KworICAgICAgICBkc3RfcmVjdC0+dHlwZSAgICAgID0gc3JjX3JlY3QtPnR5cGU7CisgICAgICAg IGRzdF9yZWN0LT5mbGFncyAgICAgPSBzcmNfcmVjdC0+ZmxhZ3M7CisKKyAgICAgICAgZHN0X3Jl Y3QtPnggICAgICAgICA9IHNyY19yZWN0LT54OworICAgICAgICBkc3RfcmVjdC0+eSAgICAgICAg ID0gc3JjX3JlY3QtPnk7CisgICAgICAgIGRzdF9yZWN0LT53ICAgICAgICAgPSBzcmNfcmVjdC0+ dzsKKyAgICAgICAgZHN0X3JlY3QtPmggICAgICAgICA9IHNyY19yZWN0LT5oOworICAgICAgICBk c3RfcmVjdC0+bmJfY29sb3JzID0gc3JjX3JlY3QtPm5iX2NvbG9yczsKKworICAgICAgICBpZiAo c3JjX3JlY3QtPnRleHQpCisgICAgICAgICAgICBpZiAoIShkc3RfcmVjdC0+dGV4dCA9IGF2X3N0 cmR1cChzcmNfcmVjdC0+dGV4dCkpKSB7CisgICAgICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihF Tk9NRU0pOworICAgICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAgICAgIH0KKwor ICAgICAgICBpZiAoc3JjX3JlY3QtPmFzcykKKyAgICAgICAgICAgIGlmICghKGRzdF9yZWN0LT5h c3MgPSBhdl9zdHJkdXAoc3JjX3JlY3QtPmFzcykpKSB7CisgICAgICAgICAgICAgICAgcmV0ID0g QVZFUlJPUihFTk9NRU0pOworICAgICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAg ICAgIH0KKworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDQ7IGorKykgeworICAgICAgICAg ICAgLy8gU1VCVElUTEVfQklUTUFQIGltYWdlcyBhcmUgc3BlY2lhbCBpbiB0aGUgc2Vuc2UgdGhh dCB0aGV5CisgICAgICAgICAgICAvLyBhcmUgbGlrZSBQQUw4IGltYWdlcy4gZmlyc3QgcG9pbnRl ciB0byBkYXRhLCBzZWNvbmQgdG8KKyAgICAgICAgICAgIC8vIHBhbGV0dGUuIFRoaXMgbWFrZXMg dGhlIHNpemUgY2FsY3VsYXRpb24gbWF0Y2ggdGhpcy4KKyAgICAgICAgICAgIHNpemVfdCBidWZf c2l6ZSA9IHNyY19yZWN0LT50eXBlID09IFNVQlRJVExFX0JJVE1BUCAmJiBqID09IDEgPworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZQQUxFVFRFX1NJWkUgOgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3JjX3JlY3QtPmggKiBzcmNfcmVjdC0+bGluZXNpemVbal07CisK KyAgICAgICAgICAgIGlmICghc3JjX3JlY3QtPmRhdGFbal0pCisgICAgICAgICAgICAgICAgY29u dGludWU7CisKKyAgICAgICAgICAgIGlmICghKGRzdF9yZWN0LT5kYXRhW2pdID0gYXZfbWVtZHVw KHNyY19yZWN0LT5kYXRhW2pdLCBidWZfc2l6ZSkpKSB7CisgICAgICAgICAgICAgICAgcmV0ID0g QVZFUlJPUihFTk9NRU0pOworICAgICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIGRzdF9yZWN0LT5saW5lc2l6ZVtqXSA9IHNyY19yZWN0LT5saW5l c2l6ZVtqXTsKKyAgICAgICAgfQorICAgIH0KKworc3VjY2VzczoKKyAgICAqZHN0ID0gdG1wOwor CisgICAgcmV0dXJuIDA7CisKK2NsZWFudXA6CisgICAgYXZzdWJ0aXRsZV9mcmVlKCZ0bXApOwor CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBmaXhfc3ViX2R1cmF0aW9uX2hlYXJ0 YmVhdChJbnB1dFN0cmVhbSAqaXN0LCBpbnQ2NF90IHNpZ25hbF9wdHMpCit7CisgICAgaW50IHJl dCA9IEFWRVJST1JfQlVHOworICAgIGludCBnb3Rfb3V0cHV0ID0gMTsKKyAgICBBVlN1YnRpdGxl ICpwcmV2X3N1YnRpdGxlID0gJmlzdC0+cHJldl9zdWIuc3VidGl0bGU7CisgICAgQVZTdWJ0aXRs ZSBzdWJ0aXRsZTsKKworICAgIGlmICghaXN0LT5maXhfc3ViX2R1cmF0aW9uIHx8ICFwcmV2X3N1 YnRpdGxlLT5udW1fcmVjdHMgfHwKKyAgICAgICAgc2lnbmFsX3B0cyA8PSBwcmV2X3N1YnRpdGxl LT5wdHMpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKChyZXQgPSBjb3B5X2F2X3N1YnRp dGxlKCZzdWJ0aXRsZSwgcHJldl9zdWJ0aXRsZSkpIDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsK KworICAgIHN1YnRpdGxlLnB0cyA9IHNpZ25hbF9wdHM7CisKKyAgICByZXR1cm4gcHJvY2Vzc19z dWJ0aXRsZShpc3QsICZzdWJ0aXRsZSwgJmdvdF9vdXRwdXQpOworfQorCitzdGF0aWMgaW50IHRy aWdnZXJfZml4X3N1Yl9kdXJhdGlvbl9oZWFydGJlYXQoT3V0cHV0U3RyZWFtICpvc3QsIGNvbnN0 IEFWUGFja2V0ICpwa3QpCit7CisgICAgaW50NjRfdCBzaWduYWxfcHRzID0gYXZfcmVzY2FsZV9x KHBrdC0+cHRzLCBvc3QtPm11eF90aW1lYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQVZfVElNRV9CQVNFX1EpOworCisgICAgaWYgKCFvc3QtPmZpeF9zdWJfZHVy YXRpb25faGVhcnRiZWF0IHx8ICEocGt0LT5mbGFncyAmIEFWX1BLVF9GTEFHX0tFWSkpCisgICAg ICAgIC8vIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gaGVhcnRiZWF0cyBvbiBzdHJlYW1zIGNv bmZpZ3VyZWQsIGFuZAorICAgICAgICAvLyBvbmx5IG9uIHJhbmRvbSBhY2Nlc3MgcG9pbnRzLgor ICAgICAgICByZXR1cm4gMDsKKworICAgIGZvciAoSW5wdXRTdHJlYW0gKmlzdCA9IGlzdF9pdGVy KE5VTEwpOyBpc3Q7IGlzdCA9IGlzdF9pdGVyKGlzdCkpIHsKKyAgICAgICAgaW50IHJldCA9IEFW RVJST1JfQlVHOworCisgICAgICAgIGlmICghaXN0LT5kZWNvZGluZ19uZWVkZWQgfHwKKyAgICAg ICAgICAgIGlzdC0+ZGVjX2N0eC0+Y29kZWNfdHlwZSAhPSBBVk1FRElBX1RZUEVfU1VCVElUTEUp CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoKHJldCA9IGZpeF9zdWJfZHVy YXRpb25faGVhcnRiZWF0KGlzdCwgc2lnbmFsX3B0cykpIDwgMCkKKyAgICAgICAgICAgIHJldHVy biByZXQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgdHJhbnNjb2Rl X3N1YnRpdGxlcyhJbnB1dFN0cmVhbSAqaXN0LCBBVlBhY2tldCAqcGt0LCBpbnQgKmdvdF9vdXRw dXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpkZWNvZGVfZmFpbGVkKQog ewpkaWZmIC0tZ2l0IGEvZmZ0b29scy9mZm1wZWcuaCBiL2ZmdG9vbHMvZmZtcGVnLmgKaW5kZXgg NTUyN2RiZTQ5Yi4uODk2Mjk3ZmVmNiAxMDA2NDQKLS0tIGEvZmZ0b29scy9mZm1wZWcuaAorKysg Yi9mZnRvb2xzL2ZmbXBlZy5oCkBAIC0yMjQsNiArMjI0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgT3B0 aW9uc0NvbnRleHQgewogICAgIGludCAgICAgICAgbmJfcmVpbml0X2ZpbHRlcnM7CiAgICAgU3Bl Y2lmaWVyT3B0ICpmaXhfc3ViX2R1cmF0aW9uOwogICAgIGludCAgICAgICAgbmJfZml4X3N1Yl9k dXJhdGlvbjsKKyAgICBTcGVjaWZpZXJPcHQgKmZpeF9zdWJfZHVyYXRpb25faGVhcnRiZWF0Owor ICAgIGludCAgICAgICAgbmJfZml4X3N1Yl9kdXJhdGlvbl9oZWFydGJlYXQ7CiAgICAgU3BlY2lm aWVyT3B0ICpjYW52YXNfc2l6ZXM7CiAgICAgaW50ICAgICAgICBuYl9jYW52YXNfc2l6ZXM7CiAg ICAgU3BlY2lmaWVyT3B0ICpwYXNzOwpAQCAtNjI1LDYgKzYyNywxMiBAQCB0eXBlZGVmIHN0cnVj dCBPdXRwdXRTdHJlYW0gewogCiAgICAgaW50IHNxX2lkeF9lbmNvZGU7CiAgICAgaW50IHNxX2lk eF9tdXg7CisKKyAgICAvKgorICAgICAqIGJvb2wgb24gd2hldGhlciB0aGlzIHN0cmVhbSBzaG91 bGQgYmUgdXRpbGl6ZWQgZm9yIHNwbGl0dGluZworICAgICAqIHN1YnRpdGxlcyB1dGlsaXppbmcg Zml4X3N1Yl9kdXJhdGlvbiBhdCByYW5kb20gYWNjZXNzIHBvaW50cy4KKyAgICAgKi8KKyAgICB1 bnNpZ25lZCBpbnQgZml4X3N1Yl9kdXJhdGlvbl9oZWFydGJlYXQ7CiB9IE91dHB1dFN0cmVhbTsK IAogdHlwZWRlZiBzdHJ1Y3QgT3V0cHV0RmlsZSB7CmRpZmYgLS1naXQgYS9mZnRvb2xzL2ZmbXBl Z19tdXhfaW5pdC5jIGIvZmZ0b29scy9mZm1wZWdfbXV4X2luaXQuYwppbmRleCAwMjgwNzU5YjA1 Li4xZTBhYmYxZmNhIDEwMDY0NAotLS0gYS9mZnRvb2xzL2ZmbXBlZ19tdXhfaW5pdC5jCisrKyBi L2ZmdG9vbHMvZmZtcGVnX211eF9pbml0LmMKQEAgLTU3LDYgKzU3LDcgQEAgc3RhdGljIGNvbnN0 IGNoYXIgKmNvbnN0IG9wdF9uYW1lX2Rpc3Bvc2l0aW9uW10gICAgICAgICAgICAgICA9IHsiZGlz cG9zaXRpb24iLAogc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IG9wdF9uYW1lX2VuY190aW1lX2Jh c2VzW10gICAgICAgICAgICA9IHsiZW5jX3RpbWVfYmFzZSIsIE5VTEx9Owogc3RhdGljIGNvbnN0 IGNoYXIgKmNvbnN0IG9wdF9uYW1lX2ZpbHRlcnNbXSAgICAgICAgICAgICAgICAgICA9IHsiZmls dGVyIiwgImFmIiwgInZmIiwgTlVMTH07CiBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgb3B0X25h bWVfZmlsdGVyX3NjcmlwdHNbXSAgICAgICAgICAgID0geyJmaWx0ZXJfc2NyaXB0IiwgTlVMTH07 CitzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgb3B0X25hbWVfZml4X3N1Yl9kdXJhdGlvbl9oZWFy dGJlYXRbXSA9IHsiZml4X3N1Yl9kdXJhdGlvbl9oZWFydGJlYXQiLCBOVUxMfTsKIHN0YXRpYyBj b25zdCBjaGFyICpjb25zdCBvcHRfbmFtZV9mcHNfbW9kZVtdICAgICAgICAgICAgICAgICAgPSB7 ImZwc19tb2RlIiwgTlVMTH07CiBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgb3B0X25hbWVfZm9y Y2VfZnBzW10gICAgICAgICAgICAgICAgID0geyJmb3JjZV9mcHMiLCBOVUxMfTsKIHN0YXRpYyBj b25zdCBjaGFyICpjb25zdCBvcHRfbmFtZV9mb3JjZWRfa2V5X2ZyYW1lc1tdICAgICAgICAgPSB7 ImZvcmNlZF9rZXlfZnJhbWVzIiwgTlVMTH07CkBAIC0zNDIsNiArMzQzLDkgQEAgc3RhdGljIE91 dHB1dFN0cmVhbSAqbmV3X291dHB1dF9zdHJlYW0oTXV4ZXIgKm11eCwgY29uc3QgT3B0aW9uc0Nv bnRleHQgKm8sCiAgICAgTUFUQ0hfUEVSX1NUUkVBTV9PUFQoYml0c19wZXJfcmF3X3NhbXBsZSwg aSwgb3N0LT5iaXRzX3Blcl9yYXdfc2FtcGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgIG9j LCBzdCk7CiAKKyAgICBNQVRDSF9QRVJfU1RSRUFNX09QVChmaXhfc3ViX2R1cmF0aW9uX2hlYXJ0 YmVhdCwgaSwgb3N0LT5maXhfc3ViX2R1cmF0aW9uX2hlYXJ0YmVhdCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICBvYywgc3QpOworCiAgICAgaWYgKG9jLT5vZm9ybWF0LT5mbGFncyAmIEFWRk1U X0dMT0JBTEhFQURFUiAmJiBvc3QtPmVuY19jdHgpCiAgICAgICAgIG9zdC0+ZW5jX2N0eC0+Zmxh Z3MgfD0gQVZfQ09ERUNfRkxBR19HTE9CQUxfSEVBREVSOwogCmRpZmYgLS1naXQgYS9mZnRvb2xz L2ZmbXBlZ19vcHQuYyBiL2ZmdG9vbHMvZmZtcGVnX29wdC5jCmluZGV4IDNkZjAyYjdkN2YuLmQx ODdkYTg4YTAgMTAwNjQ0Ci0tLSBhL2ZmdG9vbHMvZmZtcGVnX29wdC5jCisrKyBiL2ZmdG9vbHMv ZmZtcGVnX29wdC5jCkBAIC0xNjQ4LDYgKzE2NDgsMTEgQEAgY29uc3QgT3B0aW9uRGVmIG9wdGlv bnNbXSA9IHsKICAgICB7ICJhdXRvc2NhbGUiLCAgICAgICAgSEFTX0FSRyB8IE9QVF9CT09MIHwg T1BUX1NQRUMgfAogICAgICAgICAgICAgICAgICAgICAgICAgICBPUFRfRVhQRVJUIHwgT1BUX09V VFBVVCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAub2ZmID0gT0ZGU0VUKGF1dG9z Y2FsZSkgfSwKICAgICAgICAgImF1dG9tYXRpY2FsbHkgaW5zZXJ0IGEgc2NhbGUgZmlsdGVyIGF0 IHRoZSBlbmQgb2YgdGhlIGZpbHRlciBncmFwaCIgfSwKKyAgICB7ICJmaXhfc3ViX2R1cmF0aW9u X2hlYXJ0YmVhdCIsIE9QVF9WSURFTyB8IE9QVF9CT09MIHwgT1BUX0VYUEVSVCB8CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUFRfU1BFQyB8IE9QVF9PVVRQVVQsICAgICAg ICAgICAgICAgICAgICAgICB7IC5vZmYgPSBPRkZTRVQoZml4X3N1Yl9kdXJhdGlvbl9oZWFydGJl YXQpIH0sCisgICAgICAgICJzZXQgdGhpcyB2aWRlbyBvdXRwdXQgc3RyZWFtIHRvIGJlIGEgaGVh cnRiZWF0IHN0cmVhbSBmb3IgIgorICAgICAgICAiZml4X3N1Yl9kdXJhdGlvbiwgYWNjb3JkaW5n IHRvIHdoaWNoIHN1YnRpdGxlcyBzaG91bGQgYmUgc3BsaXQgYXQgIgorICAgICAgICAicmFuZG9t IGFjY2VzcyBwb2ludHMiIH0sCiAKICAgICAvKiBhdWRpbyBvcHRpb25zICovCiAgICAgeyAiYWZy YW1lcyIsICAgICAgICBPUFRfQVVESU8gfCBIQVNfQVJHICB8IE9QVF9QRVJGSUxFIHwgT1BUX09V VFBVVCwgICAgICAgICAgIHsgLmZ1bmNfYXJnID0gb3B0X2F1ZGlvX2ZyYW1lcyB9LApkaWZmIC0t Z2l0IGEvdGVzdHMvZmF0ZS9mZm1wZWcubWFrIGIvdGVzdHMvZmF0ZS9mZm1wZWcubWFrCmluZGV4 IGQ4NzYzOWM1OTYuLmE5ODNhY2UzYmQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ZhdGUvZmZtcGVnLm1h aworKysgYi90ZXN0cy9mYXRlL2ZmbXBlZy5tYWsKQEAgLTExNyw2ICsxMTcsMjAgQEAgZmF0ZS1m Zm1wZWctZml4X3N1Yl9kdXJhdGlvbjogQ01EID0gZm10c3Rkb3V0IHNydCAtZml4X3N1Yl9kdXJh dGlvbiBcCiAgIC1yZWFsX3RpbWUgMSAtZiBsYXZmaSBcCiAgIC1pICJtb3ZpZT0kKFRBUkdFVF9T QU1QTEVTKS9zdWIvQ2xvc2VkY2FwdGlvbl9yb2xsdXAubTJ2W291dDArc3ViY2NdIgogCisjIEJh c2ljIHRlc3QgZm9yIGZpeF9zdWJfZHVyYXRpb25faGVhcnRiZWF0LCB3aGljaCBjYXVzZXMgYSBi dWZmZXJlZCBzdWJ0aXRsZQorIyB0byBiZSBwdXNoZWQgb3V0IHdoZW4gYSB2aWRlbyBrZXlmcmFt ZSBpcyByZWNlaXZlZCBmcm9tIGFuIGVuY29kZXIuCitGQVRFX1NBTVBMRVNfRkZNUEVHLSQoY2Fs bCBGSUxURVJERU1ERUNFTkNNVVgsIE1PVklFLCBNUEVHVklERU8sIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIE1QRUcyVklERU8sIFNVQlJJUCwgU1JULCBMQVZGSV9JTkRFViAgXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgTVBFR1ZJREVPX1BBUlNFUiBDQ0FQVElPTl9ERUNPREVS IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE1QRUcyVklERU9fRU5DT0RFUiBOVUxMX01V WEVSIFBJUEVfUFJPVE9DT0wpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICs9IGZhdGUt ZmZtcGVnLWZpeF9zdWJfZHVyYXRpb25faGVhcnRiZWF0CitmYXRlLWZmbXBlZy1maXhfc3ViX2R1 cmF0aW9uX2hlYXJ0YmVhdDogQ01EID0gZm10c3Rkb3V0IHNydCAtZml4X3N1Yl9kdXJhdGlvbiBc CisgIC1yZWFsX3RpbWUgMSAtZiBsYXZmaSBcCisgIC1pICJtb3ZpZT0kKFRBUkdFVF9TQU1QTEVT KS9zdWIvQ2xvc2VkY2FwdGlvbl9yb2xsdXAubTJ2W291dDArc3ViY2NdIiBcCisgIC1tYXAgMDp2 IC1maXhfc3ViX2R1cmF0aW9uX2hlYXJ0YmVhdDp2OjAgXAorICAtYyBtcGVnMnZpZGVvIC1iOnYg Mk0gLWcgMzAgLXNjX3RocmVzaG9sZCAxMDAwMDAwMDAwIFwKKyAgLWYgbnVsbCAtCisKIEZBVEVf U1RSRUFNQ09QWS0kKGNhbGwgUkVNVVgsIE1QNCBNT1YsIEVBQzNfREVNVVhFUikgKz0gZmF0ZS1j b3B5LXRyYWMzMDc0CiBmYXRlLWNvcHktdHJhYzMwNzQ6IENNRCA9IHRyYW5zY29kZSBlYWMzICQo VEFSR0VUX1NBTVBMRVMpL2VhYzMvY3NpX21pYW1pX3N0ZXJlb18xMjhfc3B4LmVhYzNcCiAgICAg ICAgICAgICAgICAgICAgICBtcDQgIi1jb2RlYyBjb3B5IC1tYXAgMCIgIi1jb2RlYyBjb3B5Igpk aWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUvZmZtcGVnLWZpeF9zdWJfZHVyYXRpb25faGVhcnRi ZWF0IGIvdGVzdHMvcmVmL2ZhdGUvZmZtcGVnLWZpeF9zdWJfZHVyYXRpb25faGVhcnRiZWF0Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjk1N2E0MTA5MjEKLS0tIC9kZXYv bnVsbAorKysgYi90ZXN0cy9yZWYvZmF0ZS9mZm1wZWctZml4X3N1Yl9kdXJhdGlvbl9oZWFydGJl YXQKQEAgLTAsMCArMSw0OCBAQAorMQorMDA6MDA6MDAsOTY4IC0tPiAwMDowMDowMSwwMDEKKzxm b250IGZhY2U9Ik1vbm9zcGFjZSI+e1xhbjd9KDwvZm9udD4KKworMgorMDA6MDA6MDEsMDAxIC0t PiAwMDowMDowMSwxNjgKKzxmb250IGZhY2U9Ik1vbm9zcGFjZSI+e1xhbjd9KDwvZm9udD4KKwor MworMDA6MDA6MDEsMTY4IC0tPiAwMDowMDowMSwzNjgKKzxmb250IGZhY2U9Ik1vbm9zcGFjZSI+ e1xhbjd9KDxpPiBpbmF1ZGlibDwvaT48L2ZvbnQ+CisKKzQKKzAwOjAwOjAxLDM2OCAtLT4gMDA6 MDA6MDEsNTY4Cis8Zm9udCBmYWNlPSJNb25vc3BhY2UiPntcYW43fSg8aT4gaW5hdWRpYmxlIHJh ZGlvIGNoYXQ8L2k+PC9mb250PgorCis1CiswMDowMDowMSw1NjggLS0+IDAwOjAwOjAyLDAwMgor PGZvbnQgZmFjZT0iTW9ub3NwYWNlIj57XGFuN30oPGk+IGluYXVkaWJsZSByYWRpbyBjaGF0dGVy PC9pPiApPC9mb250PgorCis2CiswMDowMDowMiwwMDIgLS0+IDAwOjAwOjAzLDAwMworPGZvbnQg ZmFjZT0iTW9ub3NwYWNlIj57XGFuN30oPGk+IGluYXVkaWJsZSByYWRpbyBjaGF0dGVyPC9pPiAp PC9mb250PgorCis3CiswMDowMDowMywwMDMgLS0+IDAwOjAwOjAzLDEwMworPGZvbnQgZmFjZT0i TW9ub3NwYWNlIj57XGFuN30oPGk+IGluYXVkaWJsZSByYWRpbyBjaGF0dGVyPC9pPiApPC9mb250 PgorCis4CiswMDowMDowMywxMDMgLS0+IDAwOjAwOjAzLDMwMworPGZvbnQgZmFjZT0iTW9ub3Nw YWNlIj57XGFuN30oPGk+IGluYXVkaWJsZSByYWRpbyBjaGF0dGVyPC9pPiApCis+PjwvZm9udD4K KworOQorMDA6MDA6MDMsMzAzIC0tPiAwMDowMDowMyw1MDMKKzxmb250IGZhY2U9Ik1vbm9zcGFj ZSI+e1xhbjd9KDxpPiBpbmF1ZGlibGUgcmFkaW8gY2hhdHRlcjwvaT4gKQorPj4gU2FmZXR5IHJl bWE8L2ZvbnQ+CisKKzEwCiswMDowMDowMyw1MDQgLS0+IDAwOjAwOjAzLDcwNAorPGZvbnQgZmFj ZT0iTW9ub3NwYWNlIj57XGFuN30oPGk+IGluYXVkaWJsZSByYWRpbyBjaGF0dGVyPC9pPiApCis+ PiBTYWZldHkgcmVtYWlucyBvdXIgbnVtYjwvZm9udD4KKworMTEKKzAwOjAwOjAzLDcwNCAtLT4g MDA6MDA6MDQsMDA0Cis8Zm9udCBmYWNlPSJNb25vc3BhY2UiPntcYW43fSg8aT4gaW5hdWRpYmxl IHJhZGlvIGNoYXR0ZXI8L2k+ICkKKz4+IFNhZmV0eSByZW1haW5zIG91ciBudW1iZXIgb25lPC9m b250PgorCi0tIAoyLjM4LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5v cmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1 bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVl c3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K