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 3BA9840C96 for ; Tue, 3 Oct 2023 12:27:00 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 47EED68CCAD; Tue, 3 Oct 2023 15:26:58 +0300 (EEST) Received: from mail-pg1-f170.google.com (mail-pg1-f170.google.com [209.85.215.170]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EC9B568CB0E for ; Tue, 3 Oct 2023 15:26:51 +0300 (EEST) Received: by mail-pg1-f170.google.com with SMTP id 41be03b00d2f7-578d791dd91so610345a12.0 for ; Tue, 03 Oct 2023 05:26:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1696336010; x=1696940810; darn=ffmpeg.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=u8zMkWmxgOpUBTx5ruDcvyt4uSL27/ODtqloTOFmZ6o=; b=Q1C4wUYMDCiL9PJnn2ImfYMwQaLJYmZupelITvYxrfQnWeoyitKottCtBcrYwT135A WPeBuFHv8Gsy9Iz1TBXIphaw4HgIikUq85PAyo4aLtr41fUM3kG7yzPCsfMi8TP1WzIW Bnrs4MdDaAL5eebJCivG7G1ZTHM7LxDhscIJRTSu8ww4yRVXoFKIhhLtah+RQCkemPFI RhlYkFF9/nh99VjGfwlK3EZqtmi4xLZrVmoW6YnVcGgYsAHP2YDS9tIeci4bESDRAlPe /tYvG1/STfglDqLwGmfiCovEF3pB7IXqimeuzdbC8RGo5wJLi5MB+7ilche+Wq/SJv9D zwpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696336010; x=1696940810; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=u8zMkWmxgOpUBTx5ruDcvyt4uSL27/ODtqloTOFmZ6o=; b=ox009C/Exy2w7biaYi7FInK/b/yd5ZZoYgsZP3QcRsS1Y+0lk5sSbl7bYFtNUi3jBm esawep8d8kGzqifeexrPu+ebVdkbdx+YgFQdbgJbEb/m/KTR8JPrxIM/Xiq6u6X1/dXi D7KlNt/gt7aNoNhjFKFnLxAnS97d11JbJkyLbLPdSthB6SMW4c1i5qJmfF/VI7C5UFpt UKuyyONhhgZ/HxBHp4iIV5OvmYcRBwGLy4+uouVPiW+WGmjYhfOKyXZcqZV3bFdxDkZ1 FT/zmQswfKm6VXpnDsvb8hjipDSIp/Eeo/hBvF0Q4SARugUsy63bZbiyStDRXA996qUZ vkUg== X-Gm-Message-State: AOJu0Yx4bR6LSkZww8PRkkDQzCSZ+9is0J55rM0ymFU98XfEzorq9zPe 8wWz1cmvXlgPa67sA79gAwxJ7DtoJZfcG4azedt6exIM3b0= X-Google-Smtp-Source: AGHT+IF2ODCQ4FhIAuBkeNSE3BvOUQ2W8UcWres8nUX7ja76NqSRlrdO+qyKhiGAJc8i0rJw7dKUArx0DcoBQ2+6qgg= X-Received: by 2002:a17:90a:d985:b0:273:83ac:5eb9 with SMTP id d5-20020a17090ad98500b0027383ac5eb9mr3943603pjv.4.1696336009732; Tue, 03 Oct 2023 05:26:49 -0700 (PDT) MIME-Version: 1.0 From: Vladimir Petrov Date: Tue, 3 Oct 2023 15:26:38 +0300 Message-ID: To: ffmpeg-devel@ffmpeg.org Content-Type: multipart/mixed; boundary="00000000000047c87a0606cf015f" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] avfilter/vf_decimate: Improve decimation factor precision 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --00000000000047c87a0606cf015f Content-Type: text/plain; charset="UTF-8" Currently, decimate video filter supports dropping of only single frame per cycle, limiting the range of available framerate decimation factors. Now, adding a new option 'dropcount' allows increasing of drop count, so more fractional factors could be chosen. Also added an option 'spread' to set percentage of dropped frame metrics spreading to adjanced frames. Bigger value of 'spread' option means that non-duplicate frames will be distributed more evenly to output. Especially, this is useful in case of static scenes to avoid skipping of large frame sequences, i.e. to avoid jumpy motion. Added a new option 'compat' (compatibility with the old behaviour / 2nd patch). When set to 'true', no metrics recalculation will be done when marking a new frame to be dropped. In case of scene change detection, the last one per batch will be prioritized, instead of the best one. In mixed mode, checking for interlaced frames will be omited. Compatibility option is intended to keep matching with the original VIVTC VDecimate filter code. Rules to drop frames are as follow: First priority drops will be duplicate frames, in ascending order by their 'maxbdiff' metrics. If these are not enough and have scene change, then will be dropped first frames of the new scene. If all these are insufficient, then will drop some frames with less 'maxbdiff' metrics. The logic (with 'dropcount=1') corresponds to the current behaviour. Examples below (both converts 29.97 fps 3:2 pulldown content mixed with interlaced content to 23.976 fps video): 1. Deinterlace after decimation. fieldmatch=order=tff:mode=pcn:field=top:combmatch=full,decimate=mixed=1,bwdif=parity=tff:deint=1,fps=30000/1001 2. Deinterlace before decimation. fieldmatch=order=tff:mode=pcn:field=top:combmatch=full,bwdif=parity=tff:deint=1,fps=60000/1001,decimate=mixed=0:cycle=10:dropcount=6:compat=0 --00000000000047c87a0606cf015f Content-Type: text/x-patch; charset="US-ASCII"; name="0001-avfilter-vf_decimate-Improve-decimation-factor-preci.patch" Content-Disposition: attachment; filename="0001-avfilter-vf_decimate-Improve-decimation-factor-preci.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lnaahjuf0 RnJvbSAxMjdiZWQwYTRmZDJjYTA1ZjQzZmExMTdiYTRiZjg1OTQzMGZjNWZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWbGFkaW1pciBQZXRyb3YgPHZwcGV0cm92bW1zQGdtYWlsLmNv bT4KRGF0ZTogU2F0LCAyMyBTZXAgMjAyMyAwMDozNzozMiArMDMwMApTdWJqZWN0OiBbUEFUQ0gg MS8yXSBhdmZpbHRlci92Zl9kZWNpbWF0ZTogSW1wcm92ZSBkZWNpbWF0aW9uIGZhY3RvciBwcmVj aXNpb24KCkN1cnJlbnRseSwgZGVjaW1hdGUgdmlkZW8gZmlsdGVyIHN1cHBvcnRzIGRyb3BwaW5n IG9mCm9ubHkgc2luZ2xlIGZyYW1lIHBlciBjeWNsZSwgbGltaXRpbmcgdGhlIHJhbmdlIG9mCmF2 YWlsYWJsZSBmcmFtZXJhdGUgZGVjaW1hdGlvbiBmYWN0b3JzLiBOb3csIGFkZGluZwphIG5ldyBv cHRpb24gJ2Ryb3Bjb3VudCcgYWxsb3dzIGluY3JlYXNpbmcgb2YgZHJvcApjb3VudCwgc28gbW9y ZSBmcmFjdGlvbmFsIGZhY3RvcnMgY291bGQgYmUgY2hvc2VuLgpBbHNvIGFkZGVkIGFuIG9wdGlv biAnc3ByZWFkJyB0byBzZXQgcGVyY2VudGFnZSBvZgpkcm9wcGVkIGZyYW1lIG1ldHJpY3Mgc3By ZWFkaW5nIHRvIGFkamFuY2VkIGZyYW1lcy4KClNpZ25lZC1vZmYtYnk6IFZsYWRpbWlyIFBldHJv diA8dnBwZXRyb3ZtbXNAZ21haWwuY29tPgotLS0KIGRvYy9maWx0ZXJzLnRleGkgICAgICAgICAg fCAgMTYgKystCiBsaWJhdmZpbHRlci92Zl9kZWNpbWF0ZS5jIHwgMjY5ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDIzNyBpbnNlcnRpb25z KCspLCA0OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2MvZmlsdGVycy50ZXhpIGIvZG9j L2ZpbHRlcnMudGV4aQppbmRleCBhNzI5YTA4ZGNlLi5lZWY3NmQ3MWIwIDEwMDY0NAotLS0gYS9k b2MvZmlsdGVycy50ZXhpCisrKyBiL2RvYy9maWx0ZXJzLnRleGkKQEAgLTExMzk1LDEwICsxMTM5 NSwyMiBAQCBUaGUgZmlsdGVyIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBvcHRpb25zOgogCiBAdGFi bGUgQG9wdGlvbgogQGl0ZW0gY3ljbGUKLVNldCB0aGUgbnVtYmVyIG9mIGZyYW1lcyBmcm9tIHdo aWNoIG9uZSB3aWxsIGJlIGRyb3BwZWQuIFNldHRpbmcgdGhpcyB0bwotQHZhcntOfSBtZWFucyBv bmUgZnJhbWUgaW4gZXZlcnkgYmF0Y2ggb2YgQHZhcntOfSBmcmFtZXMgd2lsbCBiZSBkcm9wcGVk LgorU2V0IHRoZSBudW1iZXIgb2YgZnJhbWVzIHBlciBjeWNsZS4gU2V0dGluZyB0aGlzIHRvIEB2 YXJ7Tn0gYW5kIEB2YXJ7ZHJvcGNvdW50fQordG8gQHZhcntNfSBtZWFucyBAdmFye019IGZyYW1l cyBpbiBldmVyeSBiYXRjaCBvZiBAdmFye059IGZyYW1lcyB3aWxsIGJlIGRyb3BwZWQuCiBEZWZh dWx0IGlzIEBjb2RlezV9LgogCitAaXRlbSBkcm9wY291bnQKK1NldCB0aGUgbnVtYmVyIG9mIGZy YW1lcyB0byBiZSBkcm9wcGVkIGZyb20gZWFjaCBjeWNsZS4KK011c3QgYmUgc21hbGxlciB0aGFu IEB2YXJ7Y3ljbGV9LgorRGVmYXVsdCBpcyBAY29kZXsxfQorCitAaXRlbSBzcHJlYWQKK1NldCBw ZXJjZW50YWdlIG9mIGRyb3BwZWQgZnJhbWUgbWV0cmljcyBzcHJlYWRpbmcgdG8gYWRqYW5jZWQg ZnJhbWVzLiBCaWdnZXIgdmFsdWUgbWVhbnMKK3RoYXQgbm9uLWR1cGxpY2F0ZSBmcmFtZXMgd2ls bCBiZSBkaXN0cmlidXRlZCBtb3JlIGV2ZW5seSB0byBvdXRwdXQuIEVzcGVjaWFsbHksIHRoaXMg aXMKK3VzZWZ1bCBpbiBjYXNlIG9mIHN0YXRpYyBzY2VuZXMgdG8gYXZvaWQgc2tpcHBpbmcgb2Yg bGFyZ2UgZnJhbWUgc2VxdWVuY2VzLCBpLmUuIHRvIGF2b2lkCitqdW1weSBtb3Rpb24uCitEZWZh dWx0IGlzIEBjb2Rlezc1fS4KKwogQGl0ZW0gZHVwdGhyZXNoCiBTZXQgdGhlIHRocmVzaG9sZCBm b3IgZHVwbGljYXRlIGRldGVjdGlvbi4gSWYgdGhlIGRpZmZlcmVuY2UgbWV0cmljIGZvciBhIGZy YW1lCiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhpcyB2YWx1ZSwgdGhlbiBpdCBpcyBkZWNs YXJlZCBhcyBkdXBsaWNhdGUuIERlZmF1bHQKZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL3ZmX2Rl Y2ltYXRlLmMgYi9saWJhdmZpbHRlci92Zl9kZWNpbWF0ZS5jCmluZGV4IGRiZWNhNDI3ZjEuLjY3 ODk2ZWFhMGQgMTAwNjQ0Ci0tLSBhL2xpYmF2ZmlsdGVyL3ZmX2RlY2ltYXRlLmMKKysrIGIvbGli YXZmaWx0ZXIvdmZfZGVjaW1hdGUuYwpAQCAtMTksNiArMTksNyBAQAogICogRm91bmRhdGlvbiwg SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0x MzAxIFVTQQogICovCiAKKyNpbmNsdWRlICJsaWJhdnV0aWwvY29tbW9uLmgiCiAjaW5jbHVkZSAi bGliYXZ1dGlsL29wdC5oIgogI2luY2x1ZGUgImxpYmF2dXRpbC9waXhkZXNjLmgiCiAjaW5jbHVk ZSAibGliYXZ1dGlsL3RpbWVzdGFtcC5oIgpAQCAtMzMsMTEgKzM0LDEyIEBAIHN0cnVjdCBxaXRl bSB7CiAgICAgQVZGcmFtZSAqZnJhbWU7CiAgICAgaW50NjRfdCBtYXhiZGlmZjsKICAgICBpbnQ2 NF90IHRvdGRpZmY7CisgICAgaW50IGRyb3A7CiB9OwogCiB0eXBlZGVmIHN0cnVjdCBEZWNpbWF0 ZUNvbnRleHQgewogICAgIGNvbnN0IEFWQ2xhc3MgKmNsYXNzOwotICAgIHN0cnVjdCBxaXRlbSAq cXVldWU7ICAgIC8vLzwgd2luZG93IG9mIGN5Y2xlIGZyYW1lcyBhbmQgdGhlIGFzc29jaWF0ZWQg ZGF0YSBkaWZmCisgICAgc3RydWN0IHFpdGVtICpxdWV1ZTsgICAgLy8vPCB3aW5kb3cgb2YgY3lj bGUrMSBmcmFtZXMgYW5kIHRoZSBhc3NvY2lhdGVkIGRhdGEgZGlmZgogICAgIGludCBmaWQ7ICAg ICAgICAgICAgICAgIC8vLzwgY3VycmVudCBmcmFtZSBpZCBpbiB0aGUgcXVldWUKICAgICBpbnQg ZmlsbGVkOyAgICAgICAgICAgICAvLy88IDEgaWYgdGhlIHF1ZXVlIGlzIGZpbGxlZCwgMCBvdGhl cndpc2UKICAgICBBVkZyYW1lICpsYXN0OyAgICAgICAgICAvLy88IGxhc3QgZnJhbWUgZnJvbSB0 aGUgcHJldmlvdXMgcXVldWUKQEAgLTU4LDYgKzYwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgRGVjaW1h dGVDb250ZXh0IHsKIAogICAgIC8qIG9wdGlvbnMgKi8KICAgICBpbnQgY3ljbGU7CisgICAgaW50 IGRyb3Bjb3VudDsKKyAgICBpbnQgc3ByZWFkOwogICAgIGRvdWJsZSBkdXB0aHJlc2hfZmx0Owog ICAgIGRvdWJsZSBzY3RocmVzaF9mbHQ7CiAgICAgaW50NjRfdCBkdXB0aHJlc2g7CkBAIC03Miw3 ICs3Niw5IEBAIHR5cGVkZWYgc3RydWN0IERlY2ltYXRlQ29udGV4dCB7CiAjZGVmaW5lIEZMQUdT IEFWX09QVF9GTEFHX1ZJREVPX1BBUkFNfEFWX09QVF9GTEFHX0ZJTFRFUklOR19QQVJBTQogCiBz dGF0aWMgY29uc3QgQVZPcHRpb24gZGVjaW1hdGVfb3B0aW9uc1tdID0gewotICAgIHsgImN5Y2xl IiwgICAgICJzZXQgdGhlIG51bWJlciBvZiBmcmFtZSBmcm9tIHdoaWNoIG9uZSB3aWxsIGJlIGRy b3BwZWQiLCBPRkZTRVQoY3ljbGUpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gNX0sIDIsIDI1 LCBGTEFHUyB9LAorICAgIHsgImN5Y2xlIiwgICAgICJzZXQgdGhlIG51bWJlciBvZiBmcmFtZXMg cGVyIGN5Y2xlIiwgT0ZGU0VUKGN5Y2xlKSwgQVZfT1BUX1RZUEVfSU5ULCB7Lmk2NCA9IDV9LCAy LCAyNSwgRkxBR1MgfSwKKyAgICB7ICJkcm9wY291bnQiLCAic2V0IHRoZSBudW1iZXIgb2YgZnJh bWVzIHRvIGJlIGRyb3BwZWQgZnJvbSBlYWNoIGN5Y2xlIiwgT0ZGU0VUKGRyb3Bjb3VudCksIEFW X09QVF9UWVBFX0lOVCwgey5pNjQgPSAxfSwgMSwgMjQsIEZMQUdTIH0sCisgICAgeyAic3ByZWFk IiwgICAgInNldCBwZXJjZW50YWdlIG9mIGRyb3BwZWQgZnJhbWUgbWV0cmljcyBzcHJlYWRpbmcg dG8gYWRqYW5jZWQgZnJhbWVzIiwgT0ZGU0VUKHNwcmVhZCksIEFWX09QVF9UWVBFX0lOVCwgey5p NjQgPSA3NX0sIDAsIDIwMCwgRkxBR1MgfSwKICAgICB7ICJkdXB0aHJlc2giLCAic2V0IGR1cGxp Y2F0ZSB0aHJlc2hvbGQiLCAgICBPRkZTRVQoZHVwdGhyZXNoX2ZsdCksIEFWX09QVF9UWVBFX0RP VUJMRSwgey5kYmwgPSAgMS4xfSwgMCwgMTAwLCBGTEFHUyB9LAogICAgIHsgInNjdGhyZXNoIiwg ICJzZXQgc2NlbmUgY2hhbmdlIHRocmVzaG9sZCIsIE9GRlNFVChzY3RocmVzaF9mbHQpLCAgQVZf T1BUX1RZUEVfRE9VQkxFLCB7LmRibCA9IDE1LjB9LCAwLCAxMDAsIEZMQUdTIH0sCiAgICAgeyAi YmxvY2t4IiwgICAgInNldCB0aGUgc2l6ZSBvZiB0aGUgeC1heGlzIGJsb2NrcyB1c2VkIGR1cmlu ZyBtZXRyaWMgY2FsY3VsYXRpb25zIiwgT0ZGU0VUKGJsb2NreCksIEFWX09QVF9UWVBFX0lOVCwg ey5pNjQgPSAzMn0sIDQsIDE8PDksIEZMQUdTIH0sCkBAIC0xNTAsMTQgKzE1NiwxNTQgQEAgc3Rh dGljIHZvaWQgY2FsY19kaWZmcyhjb25zdCBEZWNpbWF0ZUNvbnRleHQgKmRtLCBzdHJ1Y3QgcWl0 ZW0gKnEsCiAgICAgcS0+bWF4YmRpZmYgPSBtYXhkaWZmOwogfQogCitzdGF0aWMgaW50IGR1cF9j bnQoY29uc3QgRGVjaW1hdGVDb250ZXh0KiBjb25zdCBkbSkKK3sKKyAgICBpbnQgaTsKKyAgICBp bnQgcmV0ID0gMDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBkbS0+Y3ljbGUgJiYgZG0tPnF1ZXVl W2ldLmZyYW1lOyBpKyspIHsKKyAgICAgICAgaWYgKCFkbS0+cXVldWVbaV0uZHJvcCAmJiBkbS0+ cXVldWVbaV0ubWF4YmRpZmYgPCBkbS0+ZHVwdGhyZXNoKQorICAgICAgICAgICAgcmV0Kys7Cisg ICAgfQorCisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBxX2NudChjb25zdCBEZWNp bWF0ZUNvbnRleHQqIGNvbnN0IGRtKQoreworICAgIGludCBpOworICAgIGludCByZXQgPSAwOwor CisgICAgZm9yIChpID0gMDsgaSA8IGRtLT5jeWNsZSAmJiBkbS0+cXVldWVbaV0uZnJhbWU7IGkr KykgeworICAgICAgICByZXQrKzsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0 aWMgaW50IGRyb3BfY250KGNvbnN0IERlY2ltYXRlQ29udGV4dCogY29uc3QgZG0pCit7CisgICAg aW50IGk7CisgICAgaW50IHJldCA9IDA7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgZG0tPmN5Y2xl ICYmIGRtLT5xdWV1ZVtpXS5mcmFtZTsgaSsrKSB7CisgICAgICAgIGlmIChkbS0+cXVldWVbaV0u ZHJvcCkKKyAgICAgICAgICAgIHJldCsrOworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisK K3N0YXRpYyBpbnQgcHJldl9mcmFtZV9pZHgoY29uc3QgRGVjaW1hdGVDb250ZXh0KiBjb25zdCBk bSwgY29uc3QgaW50IGN1cl9mcmFtZV9pZHgpCit7CisgICAgaW50IGkgPSAwOworCisgICAgZm9y IChpID0gY3VyX2ZyYW1lX2lkeCAtIDE7IDAgPD0gaTsgaS0tKSB7CisgICAgICAgIGlmICghZG0t PnF1ZXVlW2ldLmRyb3ApCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4g aTsKK30KKworc3RhdGljIGludCBuZXh0X2ZyYW1lX2lkeChjb25zdCBEZWNpbWF0ZUNvbnRleHQq IGNvbnN0IGRtLCBjb25zdCBpbnQgY3VyX2ZyYW1lX2lkeCkKK3sKKyAgICBpbnQgaSA9IDA7CisK KyAgICBmb3IgKGkgPSBjdXJfZnJhbWVfaWR4ICsgMTsgZG0tPmN5Y2xlID4gaSAmJiBkbS0+cXVl dWVbaV0uZnJhbWU7IGkrKykgeworICAgICAgICBpZiAoIWRtLT5xdWV1ZVtpXS5kcm9wKQorICAg ICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKGRtLT5jeWNsZSA9PSBpIHx8ICFkbS0+ cXVldWVbaV0uZnJhbWUpCisgICAgICAgIGkgPSAtMTsKKworICAgIHJldHVybiBpOworfQorCitz dGF0aWMgaW50IGJlc3RfZHVwX2lkeChjb25zdCBEZWNpbWF0ZUNvbnRleHQqIGNvbnN0IGRtKQor eworICAgIGludCBpID0gMDsKKyAgICBpbnQgcmV0ID0gbmV4dF9mcmFtZV9pZHgoZG0sIC0xKTsK KworICAgIGlmICgwIDw9IHJldCkgeworICAgICAgICBmb3IgKGkgPSByZXQgKyAxOyBkbS0+Y3lj bGUgPiBpICYmIGRtLT5xdWV1ZVtpXS5mcmFtZTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoIWRt LT5xdWV1ZVtpXS5kcm9wICYmIGRtLT5xdWV1ZVtpXS5tYXhiZGlmZiA8IGRtLT5xdWV1ZVtyZXRd Lm1heGJkaWZmKQorICAgICAgICAgICAgICAgIHJldCA9IGk7CisgICAgICAgIH0KKyAgICB9CisK KyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGJlc3Rfc2NfaWR4KGNvbnN0IERlY2lt YXRlQ29udGV4dCogY29uc3QgZG0pCit7CisgICAgaW50IGkgPSAwOworICAgIGludCByZXQgPSBu ZXh0X2ZyYW1lX2lkeChkbSwgLTEpOworCisgICAgaWYgKDAgPD0gcmV0KSB7CisgICAgICAgIGZv ciAoaSA9IHJldCArIDE7IGRtLT5jeWNsZSA+IGkgJiYgZG0tPnF1ZXVlW2ldLmZyYW1lOyBpKysp IHsKKyAgICAgICAgICAgIGlmICghZG0tPnF1ZXVlW2ldLmRyb3AgJiYgZG0tPnF1ZXVlW2ldLnRv dGRpZmYgPiBkbS0+cXVldWVbcmV0XS50b3RkaWZmKQorICAgICAgICAgICAgICAgIHJldCA9IGk7 CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCB1 cGRhdGVfZnJhbWVfbWV0cmljcyhEZWNpbWF0ZUNvbnRleHQgKmRtLCBjb25zdCBpbnQgaWR4X3As IGNvbnN0IGludCBpZHgsIGludCBpZHhfZHIpCit7CisgICAgaW50IGlkeF9ueHQ7CisgICAgQVZG cmFtZSAqZjEsICpmMjsKKyAgICBpbnQ2NF90IGJkaWZmLCBiZGlmZl9kcjsKKworICAgIGlkeF9u eHQgPSAoMCA8PSBpZHgpID8gaWR4IDogZG0tPmN5Y2xlOworICAgIGYxID0gKDAgPD0gaWR4X3Ap ID8gZG0tPnF1ZXVlW2lkeF9wXS5mcmFtZSA6IGRtLT5sYXN0OworICAgIGYyID0gZG0tPnF1ZXVl W2lkeF9ueHRdLmZyYW1lOworICAgIGJkaWZmID0gZG0tPnF1ZXVlW2lkeF9ueHRdLm1heGJkaWZm OworICAgIGJkaWZmX2RyID0gKDAgPD0gaWR4X2RyKSA/IGRtLT5xdWV1ZVtpZHhfZHJdLm1heGJk aWZmIDogMDsKKworICAgIGlmICghZjEpIHsKKyAgICAgICAgZG0tPnF1ZXVlW2lkeF9ueHRdLm1h eGJkaWZmID0gSU5UNjRfTUFYOworICAgICAgICBkbS0+cXVldWVbaWR4X254dF0udG90ZGlmZiAg PSBJTlQ2NF9NQVg7CisgICAgfSBlbHNlIGlmIChkbS0+bWl4ZWQgJiYgKChBVl9GUkFNRV9GTEFH X0lOVEVSTEFDRUQgJiBmMS0+ZmxhZ3MpIHx8IChmMiAmJiAoQVZfRlJBTUVfRkxBR19JTlRFUkxB Q0VEICYgZjItPmZsYWdzKSkpKSB7CisgICAgICAgIGRtLT5xdWV1ZVtpZHhfbnh0XS5tYXhiZGlm ZiA9IElOVDY0X01BWCAtIDE7CisgICAgICAgIGRtLT5xdWV1ZVtpZHhfbnh0XS50b3RkaWZmICA9 IDA7CisgICAgfSBlbHNlIGlmIChmMikgeworICAgICAgICBjYWxjX2RpZmZzKGRtLCAmZG0tPnF1 ZXVlW2lkeF9ueHRdLCBmMSwgZjIpOworICAgIH0KKworICAgIGlmIChiZGlmZiA8IGRtLT5kdXB0 aHJlc2ggfHwgYmRpZmZfZHIgPCBkbS0+ZHVwdGhyZXNoKQorICAgICAgICBiZGlmZiA9IGJkaWZm X2RyID0gMDsKKyAgICBkbS0+cXVldWVbaWR4X254dF0ubWF4YmRpZmYgPSBhdl9zYXRfYWRkNjQo ZG0tPnF1ZXVlW2lkeF9ueHRdLm1heGJkaWZmLCBhdl9jbGlwNjQoYmRpZmYsIDAsIElOVDY0X01B WC8yMDApICogZG0tPnNwcmVhZCAvIDEwMCk7CisgICAgaWYgKDAgPD0gaWR4X3ApCisgICAgICAg IGRtLT5xdWV1ZVtpZHhfcF0ubWF4YmRpZmYgPSBhdl9zYXRfYWRkNjQoZG0tPnF1ZXVlW2lkeF9w XS5tYXhiZGlmZiwgYXZfY2xpcDY0KGJkaWZmX2RyLCAwLCBJTlQ2NF9NQVgvMjAwKSAqIGRtLT5z cHJlYWQgLyAxMDApOworfQorCitzdGF0aWMgdm9pZCBtYXJrX2Ryb3BfZnJhbWUoRGVjaW1hdGVD b250ZXh0ICpkbSwgY29uc3QgaW50IGlkeCwgY29uc3QgaW50IGRyb3BfaWQpCit7CisgICAgZG0t PnF1ZXVlW2lkeF0uZHJvcCA9IGRyb3BfaWQ7Cit9CisKIHN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1l KEFWRmlsdGVyTGluayAqaW5saW5rLCBBVkZyYW1lICppbikKIHsKLSAgICBpbnQgc2Nwb3MgPSAt MSwgZHVwcG9zID0gLTE7Ci0gICAgaW50IGRyb3AgPSBJTlRfTUlOLCBpLCBsb3dlc3QgPSAwLCBy ZXQ7CisgICAgaW50IGksIHJldDsKKyAgICBpbnQgaWR4X3BydiA9IC0xLCBpZHhfbnh0ID0gLTEs IGlkeF9kdXAgPSAtMSwgaWR4X3NjID0gLTEsIGlkeF9kcm9wID0gLTE7CisgICAgaW50IGRyb3Ag PSAwLCBkcm9wX2Nhc2UgPSAwLCBmbHVzaF9kcm9wcyA9IDA7CiAgICAgQVZGaWx0ZXJDb250ZXh0 ICpjdHggID0gaW5saW5rLT5kc3Q7CiAgICAgQVZGaWx0ZXJMaW5rICpvdXRsaW5rID0gY3R4LT5v dXRwdXRzWzBdOwogICAgIERlY2ltYXRlQ29udGV4dCAqZG0gICA9IGN0eC0+cHJpdjsKLSAgICBB VkZyYW1lICpwcnY7CisKKyAgICAvKiBtb3ZlIGFscmVhZHkgcHJlLXJlYWQgZnJhbWUgYW5kIGNs ZWFyIHRoZSByZXN0ICovCisgICAgaWYgKDAgPT0gZG0tPmZpZCAmJiBkbS0+cXVldWVbZG0tPmN5 Y2xlXS5mcmFtZSkgeworICAgICAgICBpZiAoZG0tPnBwc3JjKSB7CisgICAgICAgICAgICBtZW1j cHkoJmRtLT5jbGVhbl9zcmNbMF0sICZkbS0+Y2xlYW5fc3JjW2RtLT5jeWNsZV0sIHNpemVvZihk bS0+Y2xlYW5fc3JjWzBdKSk7CisgICAgICAgICAgICBtZW1zZXQoJmRtLT5jbGVhbl9zcmNbMV0s IDAsIHNpemVvZihkbS0+Y2xlYW5fc3JjWzFdKSAqIGRtLT5jeWNsZSk7CisgICAgICAgIH0KKyAg ICAgICAgbWVtY3B5KCZkbS0+cXVldWVbMF0sICZkbS0+cXVldWVbZG0tPmN5Y2xlXSwgc2l6ZW9m KGRtLT5xdWV1ZVswXSkpOworICAgICAgICBtZW1zZXQoJmRtLT5xdWV1ZVsxXSwgMCwgc2l6ZW9m KGRtLT5xdWV1ZVsxXSkgKiBkbS0+Y3ljbGUpOworICAgICAgICBkbS0+ZmlkKys7CisgICAgfQog CiAgICAgLyogdXBkYXRlIGZyYW1lcyBxdWV1ZShzKSAqLwogICAgIGlmIChGRl9JTkxJTktfSURY KGlubGluaykgPT0gSU5QVVRfTUFJTikgewpAQCAtMTcxLDU5ICszMTcsODUgQEAgc3RhdGljIGlu dCBmaWx0ZXJfZnJhbWUoQVZGaWx0ZXJMaW5rICppbmxpbmssIEFWRnJhbWUgKmluKQogICAgICAg ICByZXR1cm4gMDsKICAgICBkbS0+Z290X2ZyYW1lW0lOUFVUX01BSU5dID0gZG0tPmdvdF9mcmFt ZVtJTlBVVF9DTEVBTlNSQ10gPSAwOwogCi0gICAgaWYgKGRtLT5wcHNyYykKLSAgICAgICAgaW4g PSBkbS0+cXVldWVbZG0tPmZpZF0uZnJhbWU7Ci0KLSAgICBpZiAoaW4pIHsKKyAgICBpZiAoZG0t PnF1ZXVlW2RtLT5maWRdLmZyYW1lKSB7CiAgICAgICAgIC8qIHVwZGF0ZSBmcmFtZSBtZXRyaWNz ICovCi0gICAgICAgIHBydiA9IGRtLT5maWQgPyBkbS0+cXVldWVbZG0tPmZpZCAtIDFdLmZyYW1l IDogZG0tPmxhc3Q7Ci0gICAgICAgIGlmICghcHJ2KSB7Ci0gICAgICAgICAgICBkbS0+cXVldWVb ZG0tPmZpZF0ubWF4YmRpZmYgPSBJTlQ2NF9NQVg7Ci0gICAgICAgICAgICBkbS0+cXVldWVbZG0t PmZpZF0udG90ZGlmZiAgPSBJTlQ2NF9NQVg7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg ICBjYWxjX2RpZmZzKGRtLCAmZG0tPnF1ZXVlW2RtLT5maWRdLCBwcnYsIGluKTsKLSAgICAgICAg fQotICAgICAgICBpZiAoKytkbS0+ZmlkICE9IGRtLT5jeWNsZSkKKyAgICAgICAgdXBkYXRlX2Zy YW1lX21ldHJpY3MoZG0sIGRtLT5maWQgLSAxLCBkbS0+ZmlkLCAtMSk7CisgICAgICAgIGlmICgr K2RtLT5maWQgPD0gZG0tPmN5Y2xlKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGF2 X2ZyYW1lX2ZyZWUoJmRtLT5sYXN0KTsKLSAgICAgICAgZG0tPmxhc3QgPSBhdl9mcmFtZV9jbG9u ZShpbik7CiAgICAgICAgIGRtLT5maWQgPSAwOwogCi0gICAgICAgIC8qIHdlIGhhdmUgYSBjb21w bGV0ZSBjeWNsZSwgc2VsZWN0IHRoZSBmcmFtZSB0byBkcm9wICovCi0gICAgICAgIGxvd2VzdCA9 IDA7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBkbS0+Y3ljbGU7IGkrKykgewotICAgICAgICAg ICAgaWYgKGRtLT5xdWV1ZVtpXS50b3RkaWZmID4gZG0tPnNjdGhyZXNoKQotICAgICAgICAgICAg ICAgIHNjcG9zID0gaTsKLSAgICAgICAgICAgIGlmIChkbS0+cXVldWVbaV0ubWF4YmRpZmYgPCBk bS0+cXVldWVbbG93ZXN0XS5tYXhiZGlmZikKLSAgICAgICAgICAgICAgICBsb3dlc3QgPSBpOwor ICAgICAgICAvKiB3ZSBoYXZlIGEgY29tcGxldGUgY3ljbGUsIHNlbGVjdCBmcmFtZXMgdG8gZHJv cCAqLworICAgICAgICBpZiAoIShkbS0+bWl4ZWQgJiYgZHVwX2NudChkbSkgPCBkbS0+ZHJvcGNv dW50KSkgeworICAgICAgICAgICAgZHJvcCA9IDE7CisgICAgICAgICAgICB3aGlsZSAoZHJvcF9j bnQoZG0pIDwgZG0tPmRyb3Bjb3VudCkgeworICAgICAgICAgICAgICAgIGlkeF9kdXAgPSBiZXN0 X2R1cF9pZHgoZG0pOworICAgICAgICAgICAgICAgIGlkeF9zYyA9IGJlc3Rfc2NfaWR4KGRtKTsK KyAgICAgICAgICAgICAgICBpZiAoMCA8PSBpZHhfZHVwICYmIGRtLT5xdWV1ZVtpZHhfZHVwXS5t YXhiZGlmZiA8IGRtLT5kdXB0aHJlc2gpIHsKKyAgICAgICAgICAgICAgICAgICAgZHJvcF9jYXNl ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgaWR4X2Ryb3AgPSBpZHhfZHVwOworICAgICAgICAg ICAgICAgIH0gZWxzZSBpZiAoMCA8PSBpZHhfc2MgJiYgZG0tPnF1ZXVlW2lkeF9zY10udG90ZGlm ZiA+IGRtLT5zY3RocmVzaCkgeworICAgICAgICAgICAgICAgICAgICBkcm9wX2Nhc2UgPSAyOwor ICAgICAgICAgICAgICAgICAgICBpZHhfZHJvcCA9IGlkeF9zYzsKKyAgICAgICAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBkcm9wX2Nhc2UgPSAzOworICAgICAgICAgICAg ICAgICAgICBpZHhfZHJvcCA9IGlkeF9kdXA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg ICAgICAgICAgaWYgKDAgPiBpZHhfZHJvcCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZHhfcHJ2ID0g cHJldl9mcmFtZV9pZHgoZG0sIGlkeF9kcm9wKTsKKyAgICAgICAgICAgICAgICAgICAgaWR4X254 dCA9IG5leHRfZnJhbWVfaWR4KGRtLCBpZHhfZHJvcCk7CisgICAgICAgICAgICAgICAgICAgIHVw ZGF0ZV9mcmFtZV9tZXRyaWNzKGRtLCBpZHhfcHJ2LCBpZHhfbnh0LCBpZHhfZHJvcCk7CisgICAg ICAgICAgICAgICAgICAgIG1hcmtfZHJvcF9mcmFtZShkbSwgaWR4X2Ryb3AsIGRyb3BfY2FzZSk7 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlm IChkbS0+cXVldWVbbG93ZXN0XS5tYXhiZGlmZiA8IGRtLT5kdXB0aHJlc2gpCi0gICAgICAgICAg ICBkdXBwb3MgPSBsb3dlc3Q7Ci0KLSAgICAgICAgaWYgKGRtLT5taXhlZCAmJiBkdXBwb3MgPCAw KSB7Ci0gICAgICAgICAgICBkcm9wID0gLTE7IC8vIG5vIGRyb3AgaWYgbWl4ZWQgY29udGVudCAr IG5vIGZyYW1lIGluIGN5Y2xlIGJlbG93IHRocmVzaG9sZAotICAgICAgICB9IGVsc2UgewotICAg ICAgICAgICAgZHJvcCA9IHNjcG9zID49IDAgJiYgZHVwcG9zIDwgMCA/IHNjcG9zIDogbG93ZXN0 OworICAgICAgICBhdl9mcmFtZV9mcmVlKCZkbS0+bGFzdCk7CisgICAgICAgIGlkeF9wcnYgPSBw cmV2X2ZyYW1lX2lkeChkbSwgZG0tPmN5Y2xlKTsKKyAgICAgICAgaWYgKDAgPD0gaWR4X3BydiAm JiBkbS0+cXVldWVbaWR4X3Bydl0uZnJhbWUpCisgICAgICAgICAgICBkbS0+bGFzdCA9IGF2X2Zy YW1lX2Nsb25lKGRtLT5xdWV1ZVtpZHhfcHJ2XS5mcmFtZSk7CisgICAgfSBlbHNlIHsKKyAgICAg ICAgLyogcHJlcGFyZSBmbHVzaGluZyAqLworICAgICAgICBmbHVzaF9kcm9wcyA9IGRtLT5kcm9w Y291bnQgKiBxX2NudChkbSkgLyBkbS0+Y3ljbGU7CisgICAgICAgIGlmICghKGRtLT5taXhlZCAm JiBkdXBfY250KGRtKSA8IGZsdXNoX2Ryb3BzKSkgeworICAgICAgICAgICAgZHJvcCA9IDE7Cisg ICAgICAgICAgICB3aGlsZSAoZHJvcF9jbnQoZG0pIDwgZmx1c2hfZHJvcHMpIHsKKyAgICAgICAg ICAgICAgICBpZHhfZHJvcCA9IGJlc3RfZHVwX2lkeChkbSk7CisgICAgICAgICAgICAgICAgaWYg KDAgPiBpZHhfZHJvcCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZHhfcHJ2ID0gcHJldl9mcmFtZV9p ZHgoZG0sIGlkeF9kcm9wKTsKKyAgICAgICAgICAgICAgICAgICAgaWR4X254dCA9IG5leHRfZnJh bWVfaWR4KGRtLCBpZHhfZHJvcCk7CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9mcmFtZV9t ZXRyaWNzKGRtLCBpZHhfcHJ2LCBpZHhfbnh0LCBpZHhfZHJvcCk7CisgICAgICAgICAgICAgICAg ICAgIG1hcmtfZHJvcF9mcmFtZShkbSwgaWR4X2Ryb3AsIDQpOworICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBhdl9mcmFtZV9mcmVlKCZkbS0+bGFz dCk7CiAgICAgfQogCisKICAgICAvKiBtZXRyaWNzIGRlYnVnICovCiAgICAgaWYgKGF2X2xvZ19n ZXRfbGV2ZWwoKSA+PSBBVl9MT0dfREVCVUcpIHsKLSAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9H X0RFQlVHLCAiMS8lZCBmcmFtZSBkcm9wOlxuIiwgZG0tPmN5Y2xlKTsKKyAgICAgICAgYXZfbG9n KGN0eCwgQVZfTE9HX0RFQlVHLCAiJWQvJWQgJXMgZHJvcDpcbiIsIGRtLT5kcm9wY291bnQsIGRt LT5jeWNsZSwgZHJvcCA/ICJmcmFtZSIgOiAibm8iKTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8 IGRtLT5jeWNsZSAmJiBkbS0+cXVldWVbaV0uZnJhbWU7IGkrKykgewotICAgICAgICAgICAgYXZf bG9nKGN0eCwgQVZfTE9HX0RFQlVHLCIgICMlZDogdG90ZGlmZj0lMDgiUFJJeDY0IiBtYXhiZGlm Zj0lMDgiUFJJeDY0IiVzJXMlcyVzXG4iLAorICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9H X0RFQlVHLCIgICMlZDogdG90ZGlmZj0lMDgiUFJJeDY0IiBtYXhiZGlmZj0lMDgiUFJJeDY0IiVz JXMlcyVzJXMlcyVzXG4iLAogICAgICAgICAgICAgICAgICAgIGkgKyAxLCBkbS0+cXVldWVbaV0u dG90ZGlmZiwgZG0tPnF1ZXVlW2ldLm1heGJkaWZmLAotICAgICAgICAgICAgICAgICAgIGkgPT0g c2Nwb3MgID8gIiBzYyIgICAgIDogIiIsCi0gICAgICAgICAgICAgICAgICAgaSA9PSBkdXBwb3Mg PyAiIGR1cCIgICAgOiAiIiwKLSAgICAgICAgICAgICAgICAgICBpID09IGxvd2VzdCA/ICIgbG93 ZXN0IiA6ICIiLAotICAgICAgICAgICAgICAgICAgIGkgPT0gZHJvcCAgID8gIiBbRFJPUF0iIDog IiIpOworICAgICAgICAgICAgICAgICAgIGRtLT5xdWV1ZVtpXS50b3RkaWZmID4gZG0tPnNjdGhy ZXNoID8gIiBzYyIgOiAiICAgIiwKKyAgICAgICAgICAgICAgICAgICBkbS0+cXVldWVbaV0ubWF4 YmRpZmYgPCBkbS0+ZHVwdGhyZXNoID8gIiBkdXAiIDogIiAgICAiLAorICAgICAgICAgICAgICAg ICAgIDEgPT0gZG0tPnF1ZXVlW2ldLmRyb3AgPyAiIFtEUk9QLURVUF0iIDogIiIsCisgICAgICAg ICAgICAgICAgICAgMiA9PSBkbS0+cXVldWVbaV0uZHJvcCA/ICIgW0RST1AtU0NOXSIgOiAiIiwK KyAgICAgICAgICAgICAgICAgICAzID09IGRtLT5xdWV1ZVtpXS5kcm9wID8gIiBbRFJPUC1MT1dd IiA6ICIiLAorICAgICAgICAgICAgICAgICAgIDQgPT0gZG0tPnF1ZXVlW2ldLmRyb3AgPyAiIFtE Uk9QLUZMVV0iIDogIiIsCisgICAgICAgICAgICAgICAgICAgNSA8PSBkbS0+cXVldWVbaV0uZHJv cCA/ICIgW0RST1AtVUtOXSIgOiAiIik7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvKiBwdXNo IGFsbCBmcmFtZXMgZXhjZXB0IHRoZSBkcm9wICovCiAgICAgcmV0ID0gMDsKICAgICBmb3IgKGkg PSAwOyBpIDwgZG0tPmN5Y2xlICYmIGRtLT5xdWV1ZVtpXS5mcmFtZTsgaSsrKSB7Ci0gICAgICAg IGlmIChpID09IGRyb3ApIHsKKyAgICAgICAgaWYgKGRyb3AgJiYgZG0tPnF1ZXVlW2ldLmRyb3Ap IHsKICAgICAgICAgICAgIGlmIChkbS0+cHBzcmMpCiAgICAgICAgICAgICAgICAgYXZfZnJhbWVf ZnJlZSgmZG0tPmNsZWFuX3NyY1tpXSk7CiAgICAgICAgICAgICBhdl9mcmFtZV9mcmVlKCZkbS0+ cXVldWVbaV0uZnJhbWUpOwpAQCAtMjQzLDcgKzQxNSw3IEBAIHN0YXRpYyBpbnQgZmlsdGVyX2Zy YW1lKEFWRmlsdGVyTGluayAqaW5saW5rLCBBVkZyYW1lICppbikKIAogICAgICAgICAgICAgZnJh bWUtPnB0cyA9IGRtLT5sYXN0X2R1cmF0aW9uID8gZG0tPmxhc3RfcHRzICsgZG0tPmxhc3RfZHVy YXRpb24gOgogICAgICAgICAgICAgICAgICAgICAgICAgIChkbS0+c3RhcnRfcHRzID09IEFWX05P UFRTX1ZBTFVFID8gMCA6IGRtLT5zdGFydF9wdHMpOwotICAgICAgICAgICAgZnJhbWUtPmR1cmF0 aW9uID0gZG0tPm1peGVkID8gYXZfZGl2X3EoZHJvcCA8IDAgPyBkbS0+bm9uZGVjX3RiIDogZG0t PmRlY190Yiwgb3V0bGluay0+dGltZV9iYXNlKS5udW0gOiAxOworICAgICAgICAgICAgZnJhbWUt PmR1cmF0aW9uID0gZG0tPm1peGVkID8gYXZfZGl2X3EoZHJvcCA/IGRtLT5kZWNfdGIgOiBkbS0+ bm9uZGVjX3RiLCBvdXRsaW5rLT50aW1lX2Jhc2UpLm51bSA6IDE7CiAgICAgICAgICAgICBkbS0+ bGFzdF9kdXJhdGlvbiA9IGZyYW1lLT5kdXJhdGlvbjsKICAgICAgICAgICAgIGRtLT5sYXN0X3B0 cyA9IGZyYW1lLT5wdHM7CiAgICAgICAgICAgICByZXQgPSBmZl9maWx0ZXJfZnJhbWUob3V0bGlu aywgZnJhbWUpOwpAQCAtMzQwLDYgKzUxMiwxMSBAQCBzdGF0aWMgYXZfY29sZCBpbnQgZGVjaW1h dGVfaW5pdChBVkZpbHRlckNvbnRleHQgKmN0eCkKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlO VkFMKTsKICAgICB9CiAKKyAgICBpZiAoIShkbS0+Y3ljbGUgPiBkbS0+ZHJvcGNvdW50KSkgewor ICAgICAgICBkbS0+ZHJvcGNvdW50ID0gZG0tPmN5Y2xlIC0gMTsKKyAgICAgICAgYXZfbG9nKGN0 eCwgQVZfTE9HX1dBUk5JTkcsICJSZWR1Y2luZyBkcm9wIGNvdW50IHRvICVkXG4iLCBkbS0+ZHJv cGNvdW50KTsKKyAgICB9CisKICAgICBkbS0+c3RhcnRfcHRzID0gQVZfTk9QVFNfVkFMVUU7CiAg ICAgZG0tPmxhc3RfZHVyYXRpb24gPSAwOwogCkBAIC0zNTQsMTIgKzUzMSwxMiBAQCBzdGF0aWMg YXZfY29sZCB2b2lkIGRlY2ltYXRlX3VuaW5pdChBVkZpbHRlckNvbnRleHQgKmN0eCkKICAgICBh dl9mcmFtZV9mcmVlKCZkbS0+bGFzdCk7CiAgICAgYXZfZnJlZXAoJmRtLT5iZGlmZnMpOwogICAg IGlmIChkbS0+cXVldWUpIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGRtLT5jeWNsZTsgaSsr KQorICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IGRtLT5jeWNsZTsgaSsrKQogICAgICAgICAgICAg YXZfZnJhbWVfZnJlZSgmZG0tPnF1ZXVlW2ldLmZyYW1lKTsKICAgICB9CiAgICAgYXZfZnJlZXAo JmRtLT5xdWV1ZSk7CiAgICAgaWYgKGRtLT5jbGVhbl9zcmMpIHsKLSAgICAgICAgZm9yIChpID0g MDsgaSA8IGRtLT5jeWNsZTsgaSsrKQorICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IGRtLT5jeWNs ZTsgaSsrKQogICAgICAgICAgICAgYXZfZnJhbWVfZnJlZSgmZG0tPmNsZWFuX3NyY1tpXSk7CiAg ICAgfQogICAgIGF2X2ZyZWVwKCZkbS0+Y2xlYW5fc3JjKTsKQEAgLTQwMCwxNiArNTc3LDE2IEBA IHN0YXRpYyBpbnQgY29uZmlnX291dHB1dChBVkZpbHRlckxpbmsgKm91dGxpbmspCiAgICAgZG0t Pm55YmxvY2tzICA9IChoICsgZG0tPmJsb2NreS8yIC0gMSkgLyAoZG0tPmJsb2NreS8yKTsKICAg ICBkbS0+YmRpZmZzaXplID0gZG0tPm54YmxvY2tzICogZG0tPm55YmxvY2tzOwogICAgIGRtLT5i ZGlmZnMgICAgPSBhdl9tYWxsb2NfYXJyYXkoZG0tPmJkaWZmc2l6ZSwgc2l6ZW9mKCpkbS0+YmRp ZmZzKSk7Ci0gICAgZG0tPnF1ZXVlICAgICA9IGF2X2NhbGxvYyhkbS0+Y3ljbGUsIHNpemVvZigq ZG0tPnF1ZXVlKSk7CisgICAgZG0tPnF1ZXVlICAgICA9IGF2X2NhbGxvYyhkbS0+Y3ljbGUgKyAx LCBzaXplb2YoKmRtLT5xdWV1ZSkpOwogICAgIGRtLT5pbl90YiAgICAgPSBpbmxpbmstPnRpbWVf YmFzZTsKICAgICBkbS0+bm9uZGVjX3RiID0gYXZfaW52X3EoZnBzKTsKLSAgICBkbS0+ZGVjX3Ri ICAgID0gYXZfbXVsX3EoZG0tPm5vbmRlY190YiwgKEFWUmF0aW9uYWwpe2RtLT5jeWNsZSwgZG0t PmN5Y2xlIC0gMX0pOworICAgIGRtLT5kZWNfdGIgICAgPSBhdl9tdWxfcShkbS0+bm9uZGVjX3Ri LCAoQVZSYXRpb25hbCl7ZG0tPmN5Y2xlLCBkbS0+Y3ljbGUgLSBkbS0+ZHJvcGNvdW50fSk7CiAK ICAgICBpZiAoIWRtLT5iZGlmZnMgfHwgIWRtLT5xdWV1ZSkKICAgICAgICAgcmV0dXJuIEFWRVJS T1IoRU5PTUVNKTsKIAogICAgIGlmIChkbS0+cHBzcmMpIHsKLSAgICAgICAgZG0tPmNsZWFuX3Ny YyA9IGF2X2NhbGxvYyhkbS0+Y3ljbGUsIHNpemVvZigqZG0tPmNsZWFuX3NyYykpOworICAgICAg ICBkbS0+Y2xlYW5fc3JjID0gYXZfY2FsbG9jKGRtLT5jeWNsZSArIDEsIHNpemVvZigqZG0tPmNs ZWFuX3NyYykpOwogICAgICAgICBpZiAoIWRtLT5jbGVhbl9zcmMpCiAgICAgICAgICAgICByZXR1 cm4gQVZFUlJPUihFTk9NRU0pOwogICAgIH0KLS0gCjIuMzkuMgoK --00000000000047c87a0606cf015f Content-Type: text/x-patch; charset="US-ASCII"; name="0002-avfilter-vf_decimate-Add-compatibility-option.patch" Content-Disposition: attachment; filename="0002-avfilter-vf_decimate-Add-compatibility-option.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lnaahjum1 RnJvbSBiZGQ1Njg4ZDNjMjgxMTkyMzg5NWUzMWM4ODZkZDgwNWU0NGMyYWM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWbGFkaW1pciBQZXRyb3YgPHZwcGV0cm92bW1zQGdtYWlsLmNv bT4KRGF0ZTogU2F0LCAyMyBTZXAgMjAyMyAxNzo0MTo1OCArMDMwMApTdWJqZWN0OiBbUEFUQ0gg Mi8yXSBhdmZpbHRlci92Zl9kZWNpbWF0ZTogQWRkIGNvbXBhdGliaWxpdHkgb3B0aW9uCgpBZGRz IGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgb2xkIGJlaGF2aW91ci4KQWRkZWQgYSBuZXcgb3B0aW9u ICdjb21wYXQnLiBXaGVuIHNldCB0byAndHJ1ZScsIG5vIG1ldHJpY3MKcmVjYWxjdWxhdGlvbiB3 aWxsIGJlIGRvbmUgd2hlbiBtYXJraW5nIGEgbmV3IGZyYW1lIHRvIGJlCmRyb3BwZWQuIEluIGNh c2Ugb2Ygc2NlbmUgY2hhbmdlIGRldGVjdGlvbiwgdGhlIGxhc3Qgb25lCnBlciBiYXRjaCB3aWxs IGJlIHByaW9yaXRpemVkLCBpbnN0ZWFkIG9mIHRoZSBiZXN0IG9uZS4KSW4gbWl4ZWQgbW9kZSwg Y2hlY2tpbmcgZm9yIGludGVybGFjZWQgZnJhbWVzIHdpbGwgYmUgb21pdGVkLgoKU2lnbmVkLW9m Zi1ieTogVmxhZGltaXIgUGV0cm92IDx2cHBldHJvdm1tc0BnbWFpbC5jb20+Ci0tLQogZG9jL2Zp bHRlcnMudGV4aSAgICAgICAgICB8ICA5ICsrKysrKysrKwogbGliYXZmaWx0ZXIvdmZfZGVjaW1h dGUuYyB8IDE0ICsrKysrKysrKy0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMo KyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL2ZpbHRlcnMudGV4aSBiL2RvYy9m aWx0ZXJzLnRleGkKaW5kZXggZWVmNzZkNzFiMC4uNTk1NDI5OTcxMyAxMDA2NDQKLS0tIGEvZG9j L2ZpbHRlcnMudGV4aQorKysgYi9kb2MvZmlsdGVycy50ZXhpCkBAIC0xMTQ0MSw2ICsxMTQ0MSwx NSBAQCBTZXQgd2hldGhlciBvciBub3QgY2hyb21hIGlzIGNvbnNpZGVyZWQgaW4gdGhlIG1ldHJp YyBjYWxjdWxhdGlvbnMuIERlZmF1bHQgaXMKIFNldCB3aGV0aGVyIG9yIG5vdCB0aGUgaW5wdXQg b25seSBwYXJ0aWFsbHkgY29udGFpbnMgY29udGVudCB0byBiZSBkZWNpbWF0ZWQuCiBEZWZhdWx0 IGlzIEBjb2Rle2ZhbHNlfS4KIElmIGVuYWJsZWQgdmlkZW8gb3V0cHV0IHN0cmVhbSB3aWxsIGJl IGluIHZhcmlhYmxlIGZyYW1lIHJhdGUuCisKK0BpdGVtIGNvbXBhdAorU2V0IGNvbXBhdGliaWxp dHkgd2l0aCB0aGUgb2xkIGJlaGF2aW91ci4gV2hlbiBzZXQgdG8gQGNvZGV7dHJ1ZX0sIG5vIG1l dHJpY3MKK3JlY2FsY3VsYXRpb24gd2lsbCBiZSBkb25lIHdoZW4gbWFya2luZyBhIG5ldyBmcmFt ZSB0byBiZSBkcm9wcGVkLiBJbiBjYXNlIG9mCitzY2VuZSBjaGFuZ2UgZGV0ZWN0aW9uLCB0aGUg bGFzdCBvbmUgcGVyIGJhdGNoIHdpbGwgYmUgcHJpb3JpdGl6ZWQsIGluc3RlYWQgb2YKK3RoZSBi ZXN0IG9uZS4gSW4gbWl4ZWQgbW9kZSwgY2hlY2tpbmcgZm9yIGludGVybGFjZWQgZnJhbWVzIHdp bGwgYmUgb21pdGVkLgorSW4gb3JkZXIgdG8gZ2V0IHNtb290aGVyIG1vdGlvbiBhbmQgbW9yZSBh Y2N1cmF0ZSBzY2VuZSBjaGFuZ2UgZGV0ZWN0aW9uLAorcGxlYXNlIHNldCB0aGlzIHRvIEBjb2Rl e2ZhbHNlfS4KK0RlZmF1bHQgaXMgQGNvZGV7dHJ1ZX0uCiBAZW5kIHRhYmxlCiAKIEBzZWN0aW9u IGRlY29udm9sdmUKZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL3ZmX2RlY2ltYXRlLmMgYi9saWJh dmZpbHRlci92Zl9kZWNpbWF0ZS5jCmluZGV4IDY3ODk2ZWFhMGQuLjVhYjk1M2Y5ODUgMTAwNjQ0 Ci0tLSBhL2xpYmF2ZmlsdGVyL3ZmX2RlY2ltYXRlLmMKKysrIGIvbGliYXZmaWx0ZXIvdmZfZGVj aW1hdGUuYwpAQCAtNzAsNiArNzAsNyBAQCB0eXBlZGVmIHN0cnVjdCBEZWNpbWF0ZUNvbnRleHQg ewogICAgIGludCBwcHNyYzsKICAgICBpbnQgY2hyb21hOwogICAgIGludCBtaXhlZDsKKyAgICBp bnQgY29tcGF0OwogfSBEZWNpbWF0ZUNvbnRleHQ7CiAKICNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNl dG9mKERlY2ltYXRlQ29udGV4dCwgeCkKQEAgLTg2LDYgKzg3LDcgQEAgc3RhdGljIGNvbnN0IEFW T3B0aW9uIGRlY2ltYXRlX29wdGlvbnNbXSA9IHsKICAgICB7ICJwcHNyYyIsICAgICAibWFyayBt YWluIGlucHV0IGFzIGEgcHJlLXByb2Nlc3NlZCBpbnB1dCBhbmQgYWN0aXZhdGUgY2xlYW4gc291 cmNlIGlucHV0IHN0cmVhbSIsIE9GRlNFVChwcHNyYyksIEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0 PTB9LCAwLCAxLCBGTEFHUyB9LAogICAgIHsgImNocm9tYSIsICAgICJzZXQgd2hldGhlciBvciBu b3QgY2hyb21hIGlzIGNvbnNpZGVyZWQgaW4gdGhlIG1ldHJpYyBjYWxjdWxhdGlvbnMiLCBPRkZT RVQoY2hyb21hKSwgQVZfT1BUX1RZUEVfQk9PTCwgey5pNjQ9MX0sIDAsIDEsIEZMQUdTIH0sCiAg ICAgeyAibWl4ZWQiLCAgICAgInNldCB3aGV0aGVyIG9yIG5vdCB0aGUgaW5wdXQgb25seSBwYXJ0 aWFsbHkgY29udGFpbnMgY29udGVudCB0byBiZSBkZWNpbWF0ZWQiLCBPRkZTRVQobWl4ZWQpLCBB Vl9PUFRfVFlQRV9CT09MLCB7Lmk2ND0wfSwgMCwgMSwgRkxBR1MgfSwKKyAgICB7ICJjb21wYXQi LCAgICAic2V0IGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgYmVoYXZpb3VyIiwgT0ZGU0VUKGNvbXBh dCksIEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0PTF9LCAwLCAxLCBGTEFHUyB9LAogICAgIHsgTlVM TCB9CiB9OwogCkBAIC0yNDMsNyArMjQ1LDcgQEAgc3RhdGljIGludCBiZXN0X3NjX2lkeChjb25z dCBEZWNpbWF0ZUNvbnRleHQqIGNvbnN0IGRtKQogCiAgICAgaWYgKDAgPD0gcmV0KSB7CiAgICAg ICAgIGZvciAoaSA9IHJldCArIDE7IGRtLT5jeWNsZSA+IGkgJiYgZG0tPnF1ZXVlW2ldLmZyYW1l OyBpKyspIHsKLSAgICAgICAgICAgIGlmICghZG0tPnF1ZXVlW2ldLmRyb3AgJiYgZG0tPnF1ZXVl W2ldLnRvdGRpZmYgPiBkbS0+cXVldWVbcmV0XS50b3RkaWZmKQorICAgICAgICAgICAgaWYgKCFk bS0+cXVldWVbaV0uZHJvcCAmJiBkbS0+cXVldWVbaV0udG90ZGlmZiA+IChkbS0+Y29tcGF0ID8g ZG0tPnNjdGhyZXNoIDogZG0tPnF1ZXVlW3JldF0udG90ZGlmZikpCiAgICAgICAgICAgICAgICAg cmV0ID0gaTsKICAgICAgICAgfQogICAgIH0KQEAgLTI2Niw3ICsyNjgsNyBAQCBzdGF0aWMgdm9p ZCB1cGRhdGVfZnJhbWVfbWV0cmljcyhEZWNpbWF0ZUNvbnRleHQgKmRtLCBjb25zdCBpbnQgaWR4 X3AsIGNvbnN0IGludAogICAgIGlmICghZjEpIHsKICAgICAgICAgZG0tPnF1ZXVlW2lkeF9ueHRd Lm1heGJkaWZmID0gSU5UNjRfTUFYOwogICAgICAgICBkbS0+cXVldWVbaWR4X254dF0udG90ZGlm ZiAgPSBJTlQ2NF9NQVg7Ci0gICAgfSBlbHNlIGlmIChkbS0+bWl4ZWQgJiYgKChBVl9GUkFNRV9G TEFHX0lOVEVSTEFDRUQgJiBmMS0+ZmxhZ3MpIHx8IChmMiAmJiAoQVZfRlJBTUVfRkxBR19JTlRF UkxBQ0VEICYgZjItPmZsYWdzKSkpKSB7CisgICAgfSBlbHNlIGlmICghZG0tPmNvbXBhdCAmJiBk bS0+bWl4ZWQgJiYgKChBVl9GUkFNRV9GTEFHX0lOVEVSTEFDRUQgJiBmMS0+ZmxhZ3MpIHx8IChm MiAmJiAoQVZfRlJBTUVfRkxBR19JTlRFUkxBQ0VEICYgZjItPmZsYWdzKSkpKSB7CiAgICAgICAg IGRtLT5xdWV1ZVtpZHhfbnh0XS5tYXhiZGlmZiA9IElOVDY0X01BWCAtIDE7CiAgICAgICAgIGRt LT5xdWV1ZVtpZHhfbnh0XS50b3RkaWZmICA9IDA7CiAgICAgfSBlbHNlIGlmIChmMikgewpAQCAt MzQ2LDEzICszNDgsMTQgQEAgc3RhdGljIGludCBmaWx0ZXJfZnJhbWUoQVZGaWx0ZXJMaW5rICpp bmxpbmssIEFWRnJhbWUgKmluKQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg ICAgICAgICAgIGlkeF9wcnYgPSBwcmV2X2ZyYW1lX2lkeChkbSwgaWR4X2Ryb3ApOwogICAgICAg ICAgICAgICAgICAgICBpZHhfbnh0ID0gbmV4dF9mcmFtZV9pZHgoZG0sIGlkeF9kcm9wKTsKLSAg ICAgICAgICAgICAgICAgICAgdXBkYXRlX2ZyYW1lX21ldHJpY3MoZG0sIGlkeF9wcnYsIGlkeF9u eHQsIGlkeF9kcm9wKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkbS0+Y29tcGF0KQorICAg ICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2ZyYW1lX21ldHJpY3MoZG0sIGlkeF9wcnYsIGlk eF9ueHQsIGlkeF9kcm9wKTsKICAgICAgICAgICAgICAgICAgICAgbWFya19kcm9wX2ZyYW1lKGRt LCBpZHhfZHJvcCwgZHJvcF9jYXNlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9 CiAgICAgICAgIH0KICAgICAgICAgYXZfZnJhbWVfZnJlZSgmZG0tPmxhc3QpOwotICAgICAgICBp ZHhfcHJ2ID0gcHJldl9mcmFtZV9pZHgoZG0sIGRtLT5jeWNsZSk7CisgICAgICAgIGlkeF9wcnYg PSBkbS0+Y29tcGF0ID8gKGRtLT5jeWNsZSAtIDEpIDogcHJldl9mcmFtZV9pZHgoZG0sIGRtLT5j eWNsZSk7CiAgICAgICAgIGlmICgwIDw9IGlkeF9wcnYgJiYgZG0tPnF1ZXVlW2lkeF9wcnZdLmZy YW1lKQogICAgICAgICAgICAgZG0tPmxhc3QgPSBhdl9mcmFtZV9jbG9uZShkbS0+cXVldWVbaWR4 X3Bydl0uZnJhbWUpOwogICAgIH0gZWxzZSB7CkBAIC0zNjcsNyArMzcwLDggQEAgc3RhdGljIGlu dCBmaWx0ZXJfZnJhbWUoQVZGaWx0ZXJMaW5rICppbmxpbmssIEFWRnJhbWUgKmluKQogICAgICAg ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlkeF9wcnYgPSBwcmV2X2Zy YW1lX2lkeChkbSwgaWR4X2Ryb3ApOwogICAgICAgICAgICAgICAgICAgICBpZHhfbnh0ID0gbmV4 dF9mcmFtZV9pZHgoZG0sIGlkeF9kcm9wKTsKLSAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2Zy YW1lX21ldHJpY3MoZG0sIGlkeF9wcnYsIGlkeF9ueHQsIGlkeF9kcm9wKTsKKyAgICAgICAgICAg ICAgICAgICAgaWYgKCFkbS0+Y29tcGF0KQorICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRl X2ZyYW1lX21ldHJpY3MoZG0sIGlkeF9wcnYsIGlkeF9ueHQsIGlkeF9kcm9wKTsKICAgICAgICAg ICAgICAgICAgICAgbWFya19kcm9wX2ZyYW1lKGRtLCBpZHhfZHJvcCwgNCk7CiAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgfQotLSAKMi4zOS4yCgo= --00000000000047c87a0606cf015f Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". --00000000000047c87a0606cf015f--