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 90F4C47C3C for ; Wed, 13 Dec 2023 10:07:12 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D260E68D10D; Wed, 13 Dec 2023 12:07:04 +0200 (EET) Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com [209.85.208.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DD87F68D0E8 for ; Wed, 13 Dec 2023 12:06:58 +0200 (EET) Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-2cb21afa6c1so79518831fa.0 for ; Wed, 13 Dec 2023 02:06:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702462018; x=1703066818; darn=ffmpeg.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=zdRHC0EBfa4jpjJWstAbWWmyorTAFXKz9joTl1PDaQk=; b=ImXnb+bfZV8tjveJ1dz9A/D3GTowK32JLkuK8ffvY7RAZu/ItDfvc51jB4uqm4Sb4E Qn+33jIx8ppgCUVmKqTa8TJuxtEyRqyU6+wFAVMljaj87i3ciZdKcZtD3S+sTtaUtbLL 4GLQJpogjZvg1K0RjcGaeCpCApP8VEQ1LLQ4DejN3E7xnx4aoxYL5vYabX5eMrsHkgC9 8+R0kIbVgaAtidtGATLNBXu+uhsM0yLWBS1udJrA5nNStJZorcjgDeFVzbtJxjpBHRsx OJYKXkjU1cObyNDz6JIQAshhmTIdkZo6+h2g+l/fYcStwvTYyQVh1PxzSnUnyhKbjloA V8nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702462018; x=1703066818; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=zdRHC0EBfa4jpjJWstAbWWmyorTAFXKz9joTl1PDaQk=; b=klL2ho97ajbQywmEk4kO7wx247QWcAX1vTn06VYmiuzEVNeDbbxfr1cxKOcNLUGKUN 3QBJAoBt4yraL9AQ1587RWfaM+REomroP8kSUasWjkp/bu0TbtC4DkF8P1JSa6LH7rpk e8AiUy4n0KJbEhl/6PfGyMxz73k8lGPpbbjpPweZzor4vYp3tmFXvHzfuHiLxJb7S+kO lCzoIg58yIYs7bnenOZ1dWNDqVz1I3LQcQSUrRNat55842H1csB5phK7XZ+CsTyAlKg4 DZeYjCBnAr4HnkoM0oJd9ufiK24Aj1w/pWSYHQpbKf4Hja3qAVpeoNGIvmb1cVzCAHfH ze8g== X-Gm-Message-State: AOJu0YyBRSKc0fXIk5xkinyWqGbJArBQlK112ZoohFoEY3dom6o5M+iy tYTxm69p/hxWCEnlXK/DrN/fDu6VOVJb5vFuZV5YWJlcalM= X-Google-Smtp-Source: AGHT+IEpejoA4WtRPEClAO19s5cLW288TyX4iq4u5YhLJ2dXsWCZMsCUudkZTrEJ8ZLcXD0G8pKnMUNlBcGRcMSSW9Q= X-Received: by 2002:a2e:a993:0:b0:2cc:31e9:7462 with SMTP id x19-20020a2ea993000000b002cc31e97462mr867115ljq.75.1702462017620; Wed, 13 Dec 2023 02:06:57 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Vittorio Giovara Date: Wed, 13 Dec 2023 05:06:46 -0500 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="000000000000ce483d060c615316" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH] Add new vf_tiltandshift filter 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: --000000000000ce483d060c615316 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Dec 12, 2023 at 3:00=E2=80=AFAM Nicolas George wr= ote: > Vittorio Giovara (12023-12-11): > > This is an older filter I wrote and never got around publishing. > > It can be used to generate a distortion effect like > > https://vimeo.com/104938599?share=3Dcopy > > Please see attached. > > Your code is doing in request_frame() what should be done in > filter_frame(). That will work in simple linear graphs but not in > graphs with branches and/or time shifts. See doc/filter_design.txt for > details. > Thanks for the review, attached the proposed changes. --=20 Vittorio --000000000000ce483d060c615316 Content-Type: application/octet-stream; name="0001-Add-new-vf_tiltandshift-filter.patch" Content-Disposition: attachment; filename="0001-Add-new-vf_tiltandshift-filter.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lq3lwwuq0 RnJvbSA3M2I1MjA3MTBmZjk0NmFiYTZiZDc1MGRjYzY3NmIxODEyZjY0NWUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaXR0b3JpbyBHaW92YXJhIDx2aXR0b3Jpby5naW92YXJhQGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAxNCBKdWwgMjAxNCAyMToyNjo1NSAtMDQwMApTdWJqZWN0OiBb UEFUQ0hdIEFkZCBuZXcgdmZfdGlsdGFuZHNoaWZ0IGZpbHRlcgoKU2lnbmVkLW9mZi1ieTogVml0 dG9yaW8gR2lvdmFyYSA8dml0dG9yaW8uZ2lvdmFyYUBnbWFpbC5jb20+Ci0tLQogQ2hhbmdlbG9n ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBkb2MvZmlsdGVycy50ZXhpICAgICAg ICAgICAgICAgICAgIHwgIDYzICsrKysrCiBsaWJhdmZpbHRlci9NYWtlZmlsZSAgICAgICAgICAg ICAgIHwgICAxICsKIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyAgICAgICAgICAgfCAgIDEgKwog bGliYXZmaWx0ZXIvdmZfdGlsdGFuZHNoaWZ0LmMgICAgICB8IDM4MyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogdGVzdHMvZmF0ZS9maWx0ZXItdmlkZW8ubWFrICAgICAgICB8ICAgMiAr CiB0ZXN0cy9yZWYvZmF0ZS9maWx0ZXItdGlsdGFuZHNoaWZ0IHwgIDU1ICsrKysrCiA3IGZpbGVz IGNoYW5nZWQsIDUwNiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0 ZXIvdmZfdGlsdGFuZHNoaWZ0LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9yZWYvZmF0ZS9m aWx0ZXItdGlsdGFuZHNoaWZ0CgpkaWZmIC0tZ2l0IGEvQ2hhbmdlbG9nIGIvQ2hhbmdlbG9nCmlu ZGV4IGYwMGJjMjdjYTQuLjBjYTg2N2NjNDcgMTAwNjQ0Ci0tLSBhL0NoYW5nZWxvZworKysgYi9D aGFuZ2Vsb2cKQEAgLTcsNiArNyw3IEBAIHZlcnNpb24gPG5leHQ+OgogLSBFVkMgZW5jb2Rpbmcg dXNpbmcgZXh0ZXJuYWwgbGlicmFyeSBsaWJ4ZXZlCiAtIFFPQSBkZWNvZGVyIGFuZCBkZW11eGVy CiAtIGFhcCBmaWx0ZXIKKy0gdGlsdGFuZHNoaWZ0IGZpbHRlcgogCiB2ZXJzaW9uIDYuMToKIC0g bGliYXJpYmNhcHRpb24gZGVjb2RlcgpkaWZmIC0tZ2l0IGEvZG9jL2ZpbHRlcnMudGV4aSBiL2Rv Yy9maWx0ZXJzLnRleGkKaW5kZXggNmQwMGJhMmMzZi4uMWQxNjM0YmYwNiAxMDA2NDQKLS0tIGEv ZG9jL2ZpbHRlcnMudGV4aQorKysgYi9kb2MvZmlsdGVycy50ZXhpCkBAIC0yMzE4Niw2ICsyMzE4 Niw2OSBAQCB0aWxlPTN4MjpuYl9mcmFtZXM9NTpwYWRkaW5nPTc6bWFyZ2luPTIKIEBlbmQgZXhh bXBsZQogQGVuZCBpdGVtaXplCiAKK0BzZWN0aW9uIHRpbHRhbmRzaGlmdAorCitXaGF0IGhhcHBl bnMgd2hlbiB5b3UgaW52ZXJ0IHRpbWUgYW5kIHNwYWNlPworCitOb3JtYWxseSBhIHZpZGVvIGlz IGNvbXBvc2VkIG9mIHNldmVyYWwgZnJhbWVzIHRoYXQgcmVwcmVzZW50IGEgZGlmZmVyZW50Citp bnN0YW50IG9mIHRpbWUgYW5kIHNob3dzIGEgc2NlbmNlIHRoYXQgZXZvbHZlcyBpbiB0aGUgc3Bh Y2UgY2FwdHVyZWQgYnkgdGhlCitmcmFtZS4gVGhpcyBmaWx0ZXIgaXMgdGhlIGFudGlwb2RlIG9m IHRoYXQgY29uY2VwdCwgdGFraW5nIGluc3BpcmF0aW9uIGJ5Cit0aWx0IGFuZCBzaGlmdCBwaG90 b2dyYXBoeS4KKworQSBmaWx0ZXJlZCBmcmFtZSBjb250YWlucyB0aGUgd2hvbGUgdGltZWxpbmUg b2YgZXZlbnRzIGNvbXBvc2luZyB0aGUgc2VxdWVuY2UsCithbmQgdGhpcyBpcyBvYnRhaW5lZCBi eSBwbGFjaW5nIGEgc2xpY2Ugb2YgcGl4ZWxzIGZyb20gZWFjaCBmcmFtZSBpbnRvIGEgc2luZ2xl CitvbmUuIEhvd2V2ZXIsIHNpbmNlIHRoZXJlIGFyZSBubyBpbmZpbml0ZS13aWR0aCBmcmFtZXMs IHRoaXMgaXMgZG9uZSB1cCB0aGUKK3dpZHRoIG9mIHRoZSBpbnB1dCBmcmFtZSwgYW5kIGEgdmlk ZW8gaXMgcmVjb21wb3NlZCBieSBzaGlmdGluZyBhd2F5IG9uZQorY29sdW1uIGZvciBlYWNoIHN1 YnNlcXVlbnQgZnJhbWUuIEluIG9yZGVyIHRvIG1hcCBzcGFjZSB0byB0aW1lLCB0aGUgZmlsdGVy Cit0aWx0cyBlYWNoIGlucHV0IGZyYW1lIGFzIHdlbGwsIHNvIHRoYXQgbW90aW9uIGlzIHByZXNl dmVkLiBUaGlzIGlzIGFjY29tcGxpc2hlZAorYnkgcHJvZ3Jlc3NpdmVseSBzZWxlY3RpbmcgYSBk aWZmZXJlbnQgY29sdW1uIGZyb20gZWFjaCBpbnB1dCBmcmFtZS4KKworVGhlIGVuZCByZXN1bHQg aXMgYSBzb3J0IG9mIGludmVydGVkIHBhcnJhbGF4LCBzbyB0aGF0IGZhciBhd2F5IG9iamVjdHMg bW92ZQorbXVjaCBmYXN0ZXIgdGhhdCB0aGUgb25lcyBpbiB0aGUgZnJvbnQuIFRoZSBpZGVhbCBj b25kaXRpb25zIGZvciB0aGlzIHZpZGVvCitlZmZlY3QgYXJlIHdoZW4gdGhlcmUgaXMgZWl0aGVy IHZlcnkgbGl0dGxlIG1vdGlvbiBhbmQgdGhlIGJhY2tncm91ZCBpcyBzdGF0aWMsCitvciB3aGVu IHRoZXJlIGlzIGEgbG90IG9mIG1vdGlvbiBhbmQgYSB2ZXJ5IHdpZGUgZGVwdGggb2YgZmllbGQg KGVnLiB3aWRlCitwYW5vcmFtYSwgd2hpbGUgbW92aW5nIG9uIGEgdHJhaW4pLgorCitUaGUgZmls dGVyIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOgorCitAdGFibGUgQG9wdGlvbgor CitAaXRlbSB0aWx0CitUaWx0IHZpZGVvIHdoaWxlIHNoaWZ0aW5nIChkZWZhdWx0KS4gV2hlbiB1 bnNldCwgdmlkZW8gd2lsbCBiZSBzbGlkaW5nIGEKK3N0YXRpYyBpbWFnZSwgY29tcG9zZWQgb2Yg dGhlIGZpcnN0IGNvbHVtbiBvZiBlYWNoIGZyYW1lLgorCitAaXRlbSBzdGFydAorV2hhdCB0byBk byBhdCB0aGUgc3RhcnQgb2YgZmlsdGVyaW5nIChzZWUgYmVsb3cpLgorCitAaXRlbSBlbmQKK1do YXQgdG8gZG8gYXQgdGhlIGVuZCBvZiBmaWx0ZXJpbmcgKHNlZSBiZWxvdykuCisKK0BpdGVtIGhv bGQKK0hvdyBtYW55IGNvbHVtbnMgc2hvdWxkIHBhc3MgdGhyb3VnaCBiZWZvcmUgc3RhcnQgb2Yg ZmlsdGVyaW5nLgorCitAaXRlbSBwYWQKK0hvdyBtYW55IGNvbHVtbnMgc2hvdWxkIGJlIGluc2Vy dGVkIGJlZm9yZSBlbmQgb2YgZmlsdGVyaW5nLgorCitAZW5kIHRhYmxlCisKK05vcm1hbGx5IHRo ZSBmaWx0ZXIgc2hpZnRzIGFuZCB0aWxzIGZyb20gdGhlIHZlcnkgZmlyc3QgZnJhbWUsIGFuZCBz dG9wcyB3aGVuCit0aGUgbGFzdCBvbmUgaXMgcmVjZWl2ZWQuIEhvd2V2ZXIsIGJlZm9yZSBmaWx0 ZXJpbmcgc3RhcnRzLCBub3JtYWwgdmlkZW8gbWF5CitiZSBwcmVzZXZlZCwgc28gdGhhdCB0aGUg ZWZmZWN0IGlzIHNsb3dseSBzaGlmdGVkIGluIGl0cyBwbGFjZS4gU2ltaWxhcmx5LAordGhlIGxh c3QgdmlkZW8gZnJhbWUgbWF5IGJlIHJlY29uc3RydWN0ZWQgYXQgdGhlIGVuZC4gQWx0ZXJuYXRp dmVseSBpdCBpcworcG9zc2libGUgdG8ganVzdCBzdGFydCBhbmQgZW5kIHdpdGggYmxhY2suCisK K0B0YWJsZSBAc2FtcAorQGl0ZW0gbm9uZQorRmlsdGVyaW5nIGlzIHN0YXJ0cyBpbW1lZGlhdGVs eSBhbmQgZW5kcyB3aGVuIHRoZSBsYXN0IGZyYW1lIGlzIHJlY2VpdmVkLgorCitAaXRlbSBmcmFt ZQorVGhlIGZpcnN0IGZyYW1lcyBvciB0aGUgdmVyeSBsYXN0IGZyYW1lIGFyZSBrZXB0IGludGFj dCBkdXJpbmcgcHJvY2Vzc2luZy4KKworQGl0ZW0gYmxhY2sKK0JsYWNrIGlzIHBhZGRlZCBhdCB0 aGUgYmVnaW5uaW5nIG9yIGF0IHRoZSBlbmQgb2YgZmlsdGVyaW5nLgorCitAZW5kIHRhYmxlCisK IEBzZWN0aW9uIHRpbnRlcmxhY2UKIAogUGVyZm9ybSB2YXJpb3VzIHR5cGVzIG9mIHRlbXBvcmFs IGZpZWxkIGludGVybGFjaW5nLgpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvTWFrZWZpbGUgYi9s aWJhdmZpbHRlci9NYWtlZmlsZQppbmRleCA2MzcyNWY5MWI0Li5hZmM3YmMxNTY2IDEwMDY0NAot LS0gYS9saWJhdmZpbHRlci9NYWtlZmlsZQorKysgYi9saWJhdmZpbHRlci9NYWtlZmlsZQpAQCAt NTE0LDYgKzUxNCw3IEBAIE9CSlMtJChDT05GSUdfVEhVTUJOQUlMX0ZJTFRFUikgICAgICAgICAg ICAgICs9IHZmX3RodW1ibmFpbC5vCiBPQkpTLSQoQ09ORklHX1RIVU1CTkFJTF9DVURBX0ZJTFRF UikgICAgICAgICArPSB2Zl90aHVtYm5haWxfY3VkYS5vIHZmX3RodW1ibmFpbF9jdWRhLnB0eC5v IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ZGEv bG9hZF9oZWxwZXIubwogT0JKUy0kKENPTkZJR19USUxFX0ZJTFRFUikgICAgICAgICAgICAgICAg ICAgKz0gdmZfdGlsZS5vCitPQkpTLSQoQ09ORklHX1RJTFRBTkRTSElGVF9GSUxURVIpICAgICAg ICAgICArPSB2Zl90aWx0YW5kc2hpZnQubwogT0JKUy0kKENPTkZJR19USU5URVJMQUNFX0ZJTFRF UikgICAgICAgICAgICAgKz0gdmZfdGludGVybGFjZS5vCiBPQkpTLSQoQ09ORklHX1RMVVQyX0ZJ TFRFUikgICAgICAgICAgICAgICAgICArPSB2Zl9sdXQyLm8gZnJhbWVzeW5jLm8KIE9CSlMtJChD T05GSUdfVE1FRElBTl9GSUxURVIpICAgICAgICAgICAgICAgICs9IHZmX3htZWRpYW4ubyBmcmFt ZXN5bmMubwpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jIGIvbGliYXZmaWx0 ZXIvYWxsZmlsdGVycy5jCmluZGV4IGVkN2MzMmJlOTQuLjEzNTc5NGJhMzYgMTAwNjQ0Ci0tLSBh L2xpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYworKysgYi9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMK QEAgLTQ4Myw2ICs0ODMsNyBAQCBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfdGhyZXNob2xk OwogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX3RodW1ibmFpbDsKIGV4dGVybiBjb25zdCBB VkZpbHRlciBmZl92Zl90aHVtYm5haWxfY3VkYTsKIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92 Zl90aWxlOworZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX3RpbHRhbmRzaGlmdDsKIGV4dGVy biBjb25zdCBBVkZpbHRlciBmZl92Zl90aW50ZXJsYWNlOwogZXh0ZXJuIGNvbnN0IEFWRmlsdGVy IGZmX3ZmX3RsdXQyOwogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX3RtZWRpYW47CmRpZmYg LS1naXQgYS9saWJhdmZpbHRlci92Zl90aWx0YW5kc2hpZnQuYyBiL2xpYmF2ZmlsdGVyL3ZmX3Rp bHRhbmRzaGlmdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjI4ZjUw MDNiOWQKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmZpbHRlci92Zl90aWx0YW5kc2hpZnQuYwpA QCAtMCwwICsxLDM4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNCBWaXR0b3JpbyBHaW92 YXJhCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExl c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKy8qKgorICogQGZp bGUgdmZfdGlsdGFuZHNoaWZ0LmMKKyAqIFNpbXBsZSB0aW1lIGFuZCBzcGFjZSBpbnZlcnRlci4K KyAqLworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJsaWJhdnV0aWwvY29tbW9u LmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL2ltZ3V0aWxzLmgiCisjaW5jbHVkZSAibGliYXZ1dGls L29wdC5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9waXhkZXNjLmgiCisjaW5jbHVkZSAibGliYXZ1 dGlsL3JhdGlvbmFsLmgiCisKKyNpbmNsdWRlICJhdmZpbHRlci5oIgorI2luY2x1ZGUgImZvcm1h dHMuaCIKKyNpbmNsdWRlICJpbnRlcm5hbC5oIgorI2luY2x1ZGUgInZpZGVvLmgiCisKKyNkZWZp bmUgVElMVF9OT05FICAtMQorI2RlZmluZSBUSUxUX0ZSQU1FICAwCisjZGVmaW5lIFRJTFRfQkxB Q0sgIDEKKwordHlwZWRlZiBzdHJ1Y3QgRnJhbWVMaXN0IHsKKyAgICBBVkZyYW1lICpmcmFtZTsK KyAgICBzdHJ1Y3QgRnJhbWVMaXN0ICpuZXh0OworfSBGcmFtZUxpc3Q7CisKK3R5cGVkZWYgc3Ry dWN0IFRpbHRhbmRzaGlmdENvbnRleHQgeworICAgIGNvbnN0IEFWQ2xhc3MgKmNsYXNzOworCisg ICAgLyogc2V0IHdoZW4gYWxsIGlucHV0IGZyYW1lcyBoYXZlIGJlZW4gcHJvY2Vzc2VkIGFuZCB3 ZSBoYXZlIHRvCisgICAgICogZW1wdHkgYnVmZmVycywgcGFkIGFuZCB0aGVuIHJldHVybiAqLwor ICAgIGludCBlb2ZfcmVjdjsKKworICAgIC8qIGxpdmUgb3Igc3RhdGljIHNsaWRpbmcgKi8KKyAg ICBpbnQgdGlsdDsKKworICAgIC8qIGluaXRpYWwgb3IgZmluYWwgYWN0aW9ucyB0byBwZXJmb3Jt IChwYWQvaG9sZCBhIGZyYW1lL2JsYWNrL25vdGhpbmcpICovCisgICAgaW50IHN0YXJ0OworICAg IGludCBlbmQ7CisKKyAgICAvKiBjb2x1bW5zIHRvIGhvbGQgb3IgcGFkIGF0IHRoZSBiZWdpbm5p bmcgb3IgYXQgdGhlIGVuZCAocmVzcGVjdGl2ZWx5KSAqLworICAgIGludCBob2xkOworICAgIGlu dCBwYWQ7CisKKyAgICAvKiBidWZmZXJzIGZvciBibGFjayBjb2x1bW5zICovCisgICAgdWludDhf dCAqYmxhY2tfYnVmZmVyc1s0XTsKKyAgICBpbnQgYmxhY2tfbGluZXNpemVzWzRdOworCisgICAg LyogbGlzdCBjb250YWluaW5nIGFsbCBpbnB1dCBmcmFtZXMgKi8KKyAgICBzaXplX3QgaW5wdXRf c2l6ZTsKKyAgICBGcmFtZUxpc3QgKmlucHV0OworICAgIEZyYW1lTGlzdCAqcHJldjsKKworICAg IGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRvciAqZGVzYzsKK30gVGlsdGFuZHNoaWZ0Q29udGV4dDsK Kworc3RhdGljIGludCBsaXN0X2FkZF9mcmFtZShGcmFtZUxpc3QgKipsaXN0LCBzaXplX3QgKnNp emUsIEFWRnJhbWUgKmZyYW1lKQoreworICAgIEZyYW1lTGlzdCAqZWxlbWVudCA9IGF2X21hbGxv Y3ooc2l6ZW9mKEZyYW1lTGlzdCkpOworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJu IEFWRVJST1IoRU5PTUVNKTsKKworICAgIGVsZW1lbnQtPmZyYW1lID0gZnJhbWU7CisKKyAgICBp ZiAoKmxpc3QgPT0gTlVMTCkgeworICAgICAgICAqbGlzdCA9IGVsZW1lbnQ7CisgICAgfSBlbHNl IHsKKyAgICAgICAgRnJhbWVMaXN0ICpoZWFkID0gKmxpc3Q7CisgICAgICAgIHdoaWxlIChoZWFk LT5uZXh0KQorICAgICAgICAgICAgaGVhZCA9IGhlYWQtPm5leHQ7CisgICAgICAgIGhlYWQtPm5l eHQgPSBlbGVtZW50OworICAgIH0KKworICAgICgqc2l6ZSkrKzsKKyAgICByZXR1cm4gMDsKK30K Kworc3RhdGljIHZvaWQgbGlzdF9yZW1vdmVfaGVhZChGcmFtZUxpc3QgKipsaXN0LCBzaXplX3Qg KnNpemUpCit7CisgICAgRnJhbWVMaXN0ICpoZWFkID0gKmxpc3Q7CisgICAgaWYgKGhlYWQpIHsK KyAgICAgICAgYXZfZnJhbWVfZnJlZSgmaGVhZC0+ZnJhbWUpOworICAgICAgICAqbGlzdCA9IGhl YWQtPm5leHQ7CisgICAgICAgIGF2X2ZyZWVwKCZoZWFkKTsKKyAgICB9CisKKyAgICAoKnNpemUp LS07Cit9CisKK3N0YXRpYyBjb25zdCBlbnVtIEFWUGl4ZWxGb3JtYXQgZm9ybWF0c19zdXBwb3J0 ZWRbXSA9IHsKKyAgICBBVl9QSVhfRk1UX1lVVjQyMFAsIEFWX1BJWF9GTVRfWVVWNDIyUCwgQVZf UElYX0ZNVF9ZVVY0NDRQLAorICAgIEFWX1BJWF9GTVRfWVVWNDEwUCwKKyAgICBBVl9QSVhfRk1U X1lVVko0MjBQLCBBVl9QSVhfRk1UX1lVVko0MjJQLCBBVl9QSVhfRk1UX1lVVko0NDRQLAorICAg IEFWX1BJWF9GTVRfWVVWSjQ0MFAsCisgICAgQVZfUElYX0ZNVF9OT05FCit9OworCitzdGF0aWMg aW50IHF1ZXJ5X2Zvcm1hdHMoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCit7CisgICAgcmV0dXJuIGZm X3NldF9jb21tb25fZm9ybWF0cyhjdHgsIGZmX21ha2VfZm9ybWF0X2xpc3QoZm9ybWF0c19zdXBw b3J0ZWQpKTsKK30KKworc3RhdGljIGF2X2NvbGQgdm9pZCB1bmluaXQoQVZGaWx0ZXJDb250ZXh0 ICpjdHgpCit7CisgICAgVGlsdGFuZHNoaWZ0Q29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKyAgICB3 aGlsZSAocy0+aW5wdXQpCisgICAgICAgIGxpc3RfcmVtb3ZlX2hlYWQoJnMtPmlucHV0LCAmcy0+ aW5wdXRfc2l6ZSk7CisgICAgYXZfZnJlZXAoJnMtPmJsYWNrX2J1ZmZlcnMpOworfQorCitzdGF0 aWMgaW50IGNvbmZpZ19wcm9wcyhBVkZpbHRlckxpbmsgKm91dGxpbmspCit7CisgICAgQVZGaWx0 ZXJDb250ZXh0ICpjdHggPSBvdXRsaW5rLT5zcmM7CisgICAgVGlsdGFuZHNoaWZ0Q29udGV4dCAq cyA9IGN0eC0+cHJpdjsKKworICAgIG91dGxpbmstPncgPSBjdHgtPmlucHV0c1swXS0+dzsKKyAg ICBvdXRsaW5rLT5oID0gY3R4LT5pbnB1dHNbMF0tPmg7CisgICAgb3V0bGluay0+Zm9ybWF0ID0g Y3R4LT5pbnB1dHNbMF0tPmZvcm1hdDsKKworICAgIC8vIHdoZW4gd2UgaGF2ZSB0byBwYWQgYmxh Y2sgb3IgYSBmcmFtZSBhdCB0aGUgc3RhcnQsIHNraXAgbmF2aWdhdGluZworICAgIC8vIHRoZSBs aXN0IGFuZCB1c2UgZWl0aGVyIHRoZSBmcmFtZSBvciBibGFjayBmb3IgdGhlIHJlcXVlc3RlZCB2 YWx1ZQorICAgIGlmIChzLT5zdGFydCAhPSBUSUxUX05PTkUgJiYgIXMtPmhvbGQpCisgICAgICAg IHMtPmhvbGQgPSBvdXRsaW5rLT53OworCisgICAgLy8gSW5pdCBibGFjayBidWZmZXJzIGlmIHdl IHBhZCB3aXRoIGJsYWNrIGF0IHRoZSBzdGFydCBvciBhdCB0aGUgZW5kLgorICAgIC8vIEZvciB0 aGUgZW5kLCB3ZSBhbHdheXMgaGF2ZSB0byBpbml0IG9uIE5PTkUgYW5kIEJMQUNLIGJlY2F1c2Ug d2UgbmV2ZXIKKyAgICAvLyBrbm93IGlmIHRoZXJlIGFyZSBnb2luZyB0byBiZSBlbm91Z2ggaW5w dXQgZnJhbWVzIHRvIGZpbGwgYW4gb3V0cHV0IG9uZS4KKyAgICBpZiAocy0+c3RhcnQgPT0gVElM VF9CTEFDSyB8fCBzLT5lbmQgIT0gVElMVF9GUkFNRSkgeworICAgICAgICBpbnQgaSwgaiwgcmV0 OworICAgICAgICB1aW50OF90IGJsYWNrX2RhdGFbXSA9IHsgMHgxMCwgMHg4MCwgMHg4MCwgMHgx MCB9OworICAgICAgICBjb25zdCBBVlBpeEZtdERlc2NyaXB0b3IgKmRlc2MgPSBhdl9waXhfZm10 X2Rlc2NfZ2V0KG91dGxpbmstPmZvcm1hdCk7CisgICAgICAgIGlmICghZGVzYykKKyAgICAgICAg ICAgIHJldHVybiBBVkVSUk9SX0JVRzsKKworICAgICAgICBpZiAob3V0bGluay0+Zm9ybWF0ID09 IEFWX1BJWF9GTVRfWVVWSjQyMFAgfHwKKyAgICAgICAgICAgIG91dGxpbmstPmZvcm1hdCA9PSBB Vl9QSVhfRk1UX1lVVko0MjJQIHx8CisgICAgICAgICAgICBvdXRsaW5rLT5mb3JtYXQgPT0gQVZf UElYX0ZNVF9ZVVZKNDQ0UCB8fAorICAgICAgICAgICAgb3V0bGluay0+Zm9ybWF0ID09IEFWX1BJ WF9GTVRfWVVWSjQ0MFApCisgICAgICAgICAgICBibGFja19kYXRhWzBdID0gYmxhY2tfZGF0YVsz XSA9IDA7CisKKyAgICAgICAgcmV0ID0gYXZfaW1hZ2VfYWxsb2Mocy0+YmxhY2tfYnVmZmVycywg cy0+YmxhY2tfbGluZXNpemVzLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRs aW5rLT5oLCBvdXRsaW5rLT5mb3JtYXQsIDEpOworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAg ICAgICAgIHJldHVybiByZXQ7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IEZGTUlOKGRlc2Mt Pm5iX2NvbXBvbmVudHMsIDQpOyBpKyspCisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgKCFp ID8gb3V0bGluay0+aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IC0oKC1vdXRs aW5rLT5oKSA+PiBkZXNjLT5sb2cyX2Nocm9tYV9oKSk7IGorKykKKyAgICAgICAgICAgICAgICBt ZW1zZXQocy0+YmxhY2tfYnVmZmVyc1tpXSArIGogKiBzLT5ibGFja19saW5lc2l6ZXNbaV0sCisg ICAgICAgICAgICAgICAgICAgICAgIGJsYWNrX2RhdGFbaV0sIDEpOworCisgICAgICAgIGF2X2xv ZyhjdHgsIEFWX0xPR19WRVJCT1NFLCAiUGFkZGluZyBidWZmZXJzIGluaXRpYWxpemVkLlxuIik7 CisgICAgfQorCisgICAgcy0+ZGVzYyA9IGF2X3BpeF9mbXRfZGVzY19nZXQob3V0bGluay0+Zm9y bWF0KTsKKyAgICBpZiAoIXMtPmRlc2MpCisgICAgICAgIHJldHVybiBBVkVSUk9SX0JVRzsKKwor ICAgIHJldHVybiAwOworfQorCisKK3N0YXRpYyB2b2lkIGNvcHlfY29sdW1uKEFWRmlsdGVyTGlu ayAqb3V0bGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRzdF9kYXRhWzRd LCBpbnQgZHN0X2xpbmVzaXplc1s0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp bnQ4X3QgKnNyY19kYXRhWzRdLCBjb25zdCBpbnQgc3JjX2xpbmVzaXplc1s0XSwKKyAgICAgICAg ICAgICAgICAgICAgICAgIGludCBuY29sLCBpbnQgdGlsdCkKK3sKKyAgICBBVkZpbHRlckNvbnRl eHQgKmN0eCA9IG91dGxpbmstPnNyYzsKKyAgICBUaWx0YW5kc2hpZnRDb250ZXh0ICpzID0gY3R4 LT5wcml2OworICAgIHVpbnQ4X3QgKmRzdFs0XTsKKyAgICBjb25zdCB1aW50OF90ICpzcmNbNF07 CisKKyAgICBkc3RbMF0gPSBkc3RfZGF0YVswXSArIG5jb2w7CisgICAgZHN0WzFdID0gZHN0X2Rh dGFbMV0gKyAobmNvbCA+PiBzLT5kZXNjLT5sb2cyX2Nocm9tYV9oKTsKKyAgICBkc3RbMl0gPSBk c3RfZGF0YVsyXSArIChuY29sID4+IHMtPmRlc2MtPmxvZzJfY2hyb21hX2gpOworCisgICAgaWYg KCF0aWx0KQorICAgICAgICBuY29sID0gMDsKKyAgICBzcmNbMF0gPSBzcmNfZGF0YVswXSArIG5j b2w7CisgICAgc3JjWzFdID0gc3JjX2RhdGFbMV0gKyAobmNvbCA+PiBzLT5kZXNjLT5sb2cyX2No cm9tYV9oKTsKKyAgICBzcmNbMl0gPSBzcmNfZGF0YVsyXSArIChuY29sID4+IHMtPmRlc2MtPmxv ZzJfY2hyb21hX2gpOworCisgICAgYXZfaW1hZ2VfY29weShkc3QsIGRzdF9saW5lc2l6ZXMsIHNy Yywgc3JjX2xpbmVzaXplcywgb3V0bGluay0+Zm9ybWF0LCAxLCBvdXRsaW5rLT5oKTsKK30KKwor c3RhdGljIGludCBvdXRwdXRfZnJhbWUoQVZGaWx0ZXJMaW5rICpvdXRsaW5rKQoreworICAgIFRp bHRhbmRzaGlmdENvbnRleHQgKnMgPSBvdXRsaW5rLT5zcmMtPnByaXY7CisgICAgRnJhbWVMaXN0 ICpoZWFkOworICAgIGludCByZXQ7CisKKyAgICBpbnQgbmNvbCA9IDA7CisgICAgQVZGcmFtZSAq ZHN0ID0gZmZfZ2V0X3ZpZGVvX2J1ZmZlcihvdXRsaW5rLCBvdXRsaW5rLT53LCBvdXRsaW5rLT5o KTsKKyAgICBpZiAoIWRzdCkKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKworICAg IC8vIGluIGNhc2Ugd2UgaGF2ZSB0byBkbyBhbnkgaW5pdGlhbCBibGFjayBwYWRkaW5nCisgICAg aWYgKHMtPnN0YXJ0ID09IFRJTFRfQkxBQ0spIHsKKyAgICAgICAgZm9yICggOyBuY29sIDwgcy0+ aG9sZDsgbmNvbCsrKQorICAgICAgICAgICAgY29weV9jb2x1bW4ob3V0bGluaywgZHN0LT5kYXRh LCBkc3QtPmxpbmVzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVpbnQ4X3Qg Kiopcy0+YmxhY2tfYnVmZmVycywgcy0+YmxhY2tfbGluZXNpemVzLAorICAgICAgICAgICAgICAg ICAgICAgICAgbmNvbCwgMCk7CisgICAgfQorCisgICAgaGVhZCA9IHMtPmlucHV0OworICAgIC8v IGNvcHkgYSBjb2x1bW4gZnJvbSBlYWNoIGlucHV0IGZyYW1lCisgICAgZm9yICggOyBuY29sIDwg cy0+aW5wdXRfc2l6ZTsgbmNvbCsrKSB7CisgICAgICAgIEFWRnJhbWUgKnNyYyA9IGhlYWQtPmZy YW1lOworCisgICAgICAgIGNvcHlfY29sdW1uKG91dGxpbmssIGRzdC0+ZGF0YSwgZHN0LT5saW5l c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKiopc3JjLT5kYXRhLCBz cmMtPmxpbmVzaXplLAorICAgICAgICAgICAgICAgICAgICBuY29sLCBzLT50aWx0KTsKKworICAg ICAgICAvLyBrZWVwIHRyYWNrIG9mIHRoZSBsYXN0IGtub3duIGZyYW1lIGluIGNhc2Ugd2UgbmVl ZCBpdCBiZWxvdworICAgICAgICBzLT5wcmV2ID0gaGVhZDsKKyAgICAgICAgLy8gYWR2YW5jZSB0 byB0aGUgbmV4dCBmcmFtZSB1bmxlc3Mgd2UgaGF2ZSB0byBob2xkIGl0CisgICAgICAgIGlmIChz LT5ob2xkIDw9IG5jb2wpCisgICAgICAgICAgICBoZWFkID0gaGVhZC0+bmV4dDsKKyAgICB9CisK KyAgICAvLyBwYWQgYW55IHJlbWFpbmluZyBzcGFjZSB3aXRoIGJsYWNrIG9yIGxhc3QgZnJhbWUK KyAgICBpZiAocy0+ZW5kID09IFRJTFRfRlJBTUUpIHsKKyAgICAgICAgZm9yICggOyBuY29sIDwg b3V0bGluay0+dzsgbmNvbCsrKQorICAgICAgICAgICAgY29weV9jb2x1bW4ob3V0bGluaywgZHN0 LT5kYXRhLCBkc3QtPmxpbmVzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVp bnQ4X3QgKiopcy0+cHJldi0+ZnJhbWUtPmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBz LT5wcmV2LT5mcmFtZS0+bGluZXNpemUsIG5jb2wsIDEpOworICAgIH0gZWxzZSB7IC8vIFRJTFRf QkxBQ0sgYW5kIFRJTFRfTk9ORQorICAgICAgICBmb3IgKCA7IG5jb2wgPCBvdXRsaW5rLT53OyBu Y29sKyspCisgICAgICAgICAgICBjb3B5X2NvbHVtbihvdXRsaW5rLCBkc3QtPmRhdGEsIGRzdC0+ bGluZXNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgdWludDhfdCAqKilzLT5i bGFja19idWZmZXJzLCBzLT5ibGFja19saW5lc2l6ZXMsCisgICAgICAgICAgICAgICAgICAgICAg ICBuY29sLCAwKTsKKyAgICB9CisKKyAgICAvLyBzZXQgY29ycmVjdCB0aW1lc3RhbXBzIGFuZCBw cm9wcyBhcyBsb25nIGFzIHRoZXJlIGlzIHByb3BlciBpbnB1dAorICAgIHJldCA9IGF2X2ZyYW1l X2NvcHlfcHJvcHMoZHN0LCBzLT5pbnB1dC0+ZnJhbWUpOworICAgIGlmIChyZXQgPCAwKQorICAg ICAgICByZXR1cm4gcmV0OworCisgICAgLy8gZGlzY2FyZCBmcmFtZSBhdCB0aGUgdG9wIG9mIHRo ZSBsaXN0IHNpbmNlIGl0IGhhcyBiZWVuIGZ1bGx5IHByb2Nlc3NlZAorICAgIGxpc3RfcmVtb3Zl X2hlYWQoJnMtPmlucHV0LCAmcy0+aW5wdXRfc2l6ZSk7CisgICAgLy8gYW5kIGl0IGlzIHNhZmUg dG8gcmVkdWNlIHRoZSBob2xkIHZhbHVlIChldmVuIGlmIHVudXNlZCkKKyAgICBzLT5ob2xkLS07 CisKKyAgICAvLyBvdXRwdXQKKyAgICByZXR1cm4gZmZfZmlsdGVyX2ZyYW1lKG91dGxpbmssIGRz dCk7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24ganVzdCBwb2xscyBmb3IgbmV3IGZyYW1lcyBhbmQg cXVldWVzIHRoZW0gb24gYSBsaXN0CitzdGF0aWMgaW50IGZpbHRlcl9mcmFtZShBVkZpbHRlckxp bmsgKmlubGluaywgQVZGcmFtZSAqZnJhbWUpCit7CisgICAgQVZGaWx0ZXJMaW5rICpvdXRsaW5r ID0gaW5saW5rLT5kc3QtPm91dHB1dHNbMF07CisgICAgQVZGaWx0ZXJDb250ZXh0ICpjdHggPSBv dXRsaW5rLT5zcmM7CisgICAgVGlsdGFuZHNoaWZ0Q29udGV4dCAqcyA9IGlubGluay0+ZHN0LT5w cml2OworCisgICAgaW50IHJldCA9IGxpc3RfYWRkX2ZyYW1lKCZzLT5pbnB1dCwgJnMtPmlucHV0 X3NpemUsIGZyYW1lKTsKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICByZXR1cm4gcmV0Owor ICAgIH0KKworICAgIC8vIGxvYWQgdXAgZW5vdWdoIGZyYW1lcyB0byBmaWxsIGEgZnJhbWUgYW5k IGtlZXAgdGhlIHF1ZXVlIGZpbGxlZCBvbiBzdWJzZXF1ZW50CisgICAgLy8gY2FsbHMsIHVudGls IHdlIHJlY2VpdmUgRU9GLCBhbmQgdGhlbiB3ZSBlaXRoZXIgcGFkIG9yIGVuZAorICAgIGlmICgh cy0+ZW9mX3JlY3YgJiYgcy0+aW5wdXRfc2l6ZSA8IG91dGxpbmstPncgLSBzLT5wYWQpIHsKKyAg ICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0RFQlVHLCAiTm90IGVub3VnaCBmcmFtZXMgaW4gdGhl IGxpc3QgKCV6dS8lZCksIHdhaXRpbmcgZm9yIG1vcmUuXG4iLCBzLT5pbnB1dF9zaXplLCBvdXRs aW5rLT53IC0gcy0+cGFkKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJu IG91dHB1dF9mcmFtZShvdXRsaW5rKTsKK30KKworc3RhdGljIGludCByZXF1ZXN0X2ZyYW1lKEFW RmlsdGVyTGluayAqb3V0bGluaykKK3sKKyAgICBBVkZpbHRlckNvbnRleHQgKmN0eCA9IG91dGxp bmstPnNyYzsKKyAgICBUaWx0YW5kc2hpZnRDb250ZXh0ICpzID0gY3R4LT5wcml2OworICAgIGlu dCByZXQ7CisKKyAgICAvLyBzaWduYWwgam9iIGZpbmlzaGVkIHdoZW4gbGlzdCBpcyBlbXB0eSBv ciB3aGVuIHBhZGRpbmcgaXMgZWl0aGVyCisgICAgLy8gbGltaXRlZCBvciBkaXNhYmxlZCBhbmQg ZW9mIHdhcyByZWNlaXZlZAorICAgIGlmICgocy0+aW5wdXRfc2l6ZSA8PSAwIHx8IHMtPmlucHV0 X3NpemUgPT0gb3V0bGluay0+dyAtIHMtPnBhZCB8fCBzLT5lbmQgPT0gVElMVF9OT05FKSAmJiBz LT5lb2ZfcmVjdikgeworICAgICAgICByZXR1cm4gQVZFUlJPUl9FT0Y7CisgICAgfQorCisgICAg cmV0ID0gZmZfcmVxdWVzdF9mcmFtZShjdHgtPmlucHV0c1swXSk7CisgICAgaWYgKHJldCA9PSBB VkVSUk9SX0VPRikgeworICAgICAgICBzLT5lb2ZfcmVjdiA9IDE7CisgICAgfSBlbHNlIGlmIChy ZXQgPCAwKSB7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgaWYgKHMtPmVvZl9y ZWN2KSB7CisgICAgICAgIHdoaWxlIChzLT5pbnB1dF9zaXplKSB7CisgICAgICAgICAgICBhdl9s b2coY3R4LCBBVl9MT0dfREVCVUcsICJFbXB0eWluZyBidWZmZXJzICglenUvJWQpLlxuIiwgcy0+ aW5wdXRfc2l6ZSwgb3V0bGluay0+dyAtIHMtPnBhZCk7CisgICAgICAgICAgICByZXQgPSBvdXRw dXRfZnJhbWUob3V0bGluayk7CisgICAgICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAg ICAgICAgIHJldHVybiByZXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg ICByZXR1cm4gMDsKK30KKworI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoVGlsdGFuZHNoaWZ0 Q29udGV4dCwgeCkKKyNkZWZpbmUgViBBVl9PUFRfRkxBR19WSURFT19QQVJBTQorc3RhdGljIGNv bnN0IEFWT3B0aW9uIHRpbHRhbmRzaGlmdF9vcHRpb25zW10gPSB7CisgICAgeyAidGlsdCIsICJU aWx0IHRoZSB2aWRlbyBob3Jpem9udGFsbHkgd2hpbGUgc2hpZnRpbmciLCBPRkZTRVQodGlsdCks IEFWX09QVF9UWVBFX0lOVCwKKyAgICAgICAgeyAuaTY0ID0gMSB9LCAwLCAxLCAuZmxhZ3MgPSBW LCAudW5pdCA9ICJ0aWx0IiB9LAorCisgICAgeyAic3RhcnQiLCAiQWN0aW9uIGF0IHRoZSBzdGFy dCBvZiBpbnB1dCIsIE9GRlNFVChzdGFydCksIEFWX09QVF9UWVBFX0lOVCwKKyAgICAgICAgeyAu aTY0ID0gVElMVF9OT05FIH0sIC0xLCAxLCAuZmxhZ3MgPSBWLCAudW5pdCA9ICJzdGFydCIgfSwK KyAgICB7ICJub25lIiwgIlN0YXJ0IGltbWVkaWF0ZWx5IChkZWZhdWx0KSIsIDAsIEFWX09QVF9U WVBFX0NPTlNULAorICAgICAgICB7IC5pNjQgPSBUSUxUX05PTkUgfSwgSU5UX01JTiwgSU5UX01B WCwgLmZsYWdzID0gViwgLnVuaXQgPSAic3RhcnQiIH0sCisgICAgeyAiZnJhbWUiLCAiVXNlIHRo ZSBmaXJzdCBmcmFtZXMiLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwKKyAgICAgICAgeyAuaTY0ID0g VElMVF9GUkFNRSB9LCBJTlRfTUlOLCBJTlRfTUFYLCAuZmxhZ3MgPSBWLCAudW5pdCA9ICJzdGFy dCIgfSwKKyAgICB7ICJibGFjayIsICJGaWxsIHdpdGggYmxhY2siLCAwLCBBVl9PUFRfVFlQRV9D T05TVCwKKyAgICAgICAgeyAuaTY0ID0gVElMVF9CTEFDSyB9LCBJTlRfTUlOLCBJTlRfTUFYLCAu ZmxhZ3MgPSBWLCAudW5pdCA9ICJzdGFydCIgfSwKKworICAgIHsgImVuZCIsICJBY3Rpb24gYXQg dGhlIGVuZCBvZiBpbnB1dCIsIE9GRlNFVChlbmQpLCBBVl9PUFRfVFlQRV9JTlQsCisgICAgICAg IHsgLmk2NCA9IFRJTFRfTk9ORSB9LCAtMSwgMSwgLmZsYWdzID0gViwgLnVuaXQgPSAiZW5kIiB9 LAorICAgIHsgIm5vbmUiLCAiRG8gbm90IHBhZCBhdCB0aGUgZW5kIChkZWZhdWx0KSIsIDAsIEFW X09QVF9UWVBFX0NPTlNULAorICAgICAgICB7IC5pNjQgPSBUSUxUX05PTkUgfSwgSU5UX01JTiwg SU5UX01BWCwgLmZsYWdzID0gViwgLnVuaXQgPSAiZW5kIiB9LAorICAgIHsgImZyYW1lIiwgIlVz ZSB0aGUgbGFzdCBmcmFtZSIsIDAsIEFWX09QVF9UWVBFX0NPTlNULAorICAgICAgICB7IC5pNjQg PSBUSUxUX0ZSQU1FIH0sIElOVF9NSU4sIElOVF9NQVgsIC5mbGFncyA9IFYsIC51bml0ID0gImVu ZCIgfSwKKyAgICB7ICJibGFjayIsICJGaWxsIHdpdGggYmxhY2siLCAwLCBBVl9PUFRfVFlQRV9D T05TVCwKKyAgICAgICAgeyAuaTY0ID0gVElMVF9CTEFDSyB9LCBJTlRfTUlOLCBJTlRfTUFYLCAu ZmxhZ3MgPSBWLCAudW5pdCA9ICJlbmQiIH0sCisKKyAgICB7ICJob2xkIiwgIk51bWJlciBvZiBj b2x1bW5zIHRvIGhvbGQgYXQgdGhlIHN0YXJ0IG9mIHRoZSB2aWRlbyIsIE9GRlNFVChob2xkKSwg QVZfT1BUX1RZUEVfSU5ULAorICAgICAgICB7IC5pNjQgPSAwIH0sIDAsIElOVF9NQVgsIC5mbGFn cyA9IFYsIC51bml0ID0gImhvbGQiIH0sCisgICAgeyAicGFkIiwgIk51bWJlciBvZiBjb2x1bW5z IHRvIHBhZCBhdCB0aGUgZW5kIG9mIHRoZSB2aWRlbyIsIE9GRlNFVChwYWQpLCBBVl9PUFRfVFlQ RV9JTlQsCisgICAgICAgIHsgLmk2NCA9IDAgfSwgMCwgSU5UX01BWCwgLmZsYWdzID0gViwgLnVu aXQgPSAicGFkIiB9LAorCisgICAgeyBOVUxMIH0sCit9OworCitBVkZJTFRFUl9ERUZJTkVfQ0xB U1ModGlsdGFuZHNoaWZ0KTsKKworc3RhdGljIGNvbnN0IEFWRmlsdGVyUGFkIHRpbHRhbmRzaGlm dF9pbnB1dHNbXSA9IHsKKyAgICB7CisgICAgICAgIC5uYW1lICAgICAgICAgPSAiaW4iLAorICAg ICAgICAudHlwZSAgICAgICAgID0gQVZNRURJQV9UWVBFX1ZJREVPLAorICAgICAgICAuZmlsdGVy X2ZyYW1lID0gZmlsdGVyX2ZyYW1lLAorICAgIH0sCit9OworCitzdGF0aWMgY29uc3QgQVZGaWx0 ZXJQYWQgdGlsdGFuZHNoaWZ0X291dHB1dHNbXSA9IHsKKyAgICB7CisgICAgICAgIC5uYW1lICAg ICAgICAgID0gIm91dCIsCisgICAgICAgIC50eXBlICAgICAgICAgID0gQVZNRURJQV9UWVBFX1ZJ REVPLAorICAgICAgICAuY29uZmlnX3Byb3BzICA9IGNvbmZpZ19wcm9wcywKKyAgICAgICAgLnJl cXVlc3RfZnJhbWUgPSByZXF1ZXN0X2ZyYW1lLAorICAgIH0sCit9OworCitBVkZpbHRlciBmZl92 Zl90aWx0YW5kc2hpZnQgPSB7CisgICAgLm5hbWUgICAgICAgICAgPSAidGlsdGFuZHNoaWZ0IiwK KyAgICAuZGVzY3JpcHRpb24gICA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJHZW5lcmF0ZSBhIHRp bHQtYW5kLXNoaWZ0J2QgdmlkZW8uIiksCisgICAgLnByaXZfc2l6ZSAgICAgPSBzaXplb2YoVGls dGFuZHNoaWZ0Q29udGV4dCksCisgICAgLnByaXZfY2xhc3MgICAgPSAmdGlsdGFuZHNoaWZ0X2Ns YXNzLAorICAgIC51bmluaXQgICAgICAgID0gdW5pbml0LAorICAgIEZJTFRFUl9JTlBVVFModGls dGFuZHNoaWZ0X2lucHV0cyksCisgICAgRklMVEVSX09VVFBVVFModGlsdGFuZHNoaWZ0X291dHB1 dHMpLAorICAgIEZJTFRFUl9RVUVSWV9GVU5DKHF1ZXJ5X2Zvcm1hdHMpLAorfTsKZGlmZiAtLWdp dCBhL3Rlc3RzL2ZhdGUvZmlsdGVyLXZpZGVvLm1hayBiL3Rlc3RzL2ZhdGUvZmlsdGVyLXZpZGVv Lm1hawppbmRleCBlNGJkZjU5ZGI5Li43ZjA2YmFmMTcxIDEwMDY0NAotLS0gYS90ZXN0cy9mYXRl L2ZpbHRlci12aWRlby5tYWsKKysrIGIvdGVzdHMvZmF0ZS9maWx0ZXItdmlkZW8ubWFrCkBAIC01 MzIsNiArNTMyLDggQEAgZmF0ZS1maWx0ZXItdGh1bWJuYWlsOiBDTUQgPSB2aWRlb19maWx0ZXIg InNjYWxlLHRodW1ibmFpbD0xMCIKIEZBVEVfRklMVEVSX1ZTWU5USF9WSURFT19GSUxURVItJChD T05GSUdfVElMRV9GSUxURVIpICs9IGZhdGUtZmlsdGVyLXRpbGUKIGZhdGUtZmlsdGVyLXRpbGU6 IENNRCA9IHZpZGVvX2ZpbHRlciAidGlsZT0zeDM6bmJfZnJhbWVzPTU6cGFkZGluZz03Om1hcmdp bj0yIgogCitGQVRFX0ZJTFRFUl9WU1lOVEhfVklERU9fRklMVEVSLSQoQ09ORklHX1RJTFRBTkRT SElGVF9GSUxURVIpICs9IGZhdGUtZmlsdGVyLXRpbHRhbmRzaGlmdAorZmF0ZS1maWx0ZXItdGls dGFuZHNoaWZ0OiBDTUQgPSBmcmFtZWNyYyAtYzp2IHBnbXl1diAtaSAkKFNSQykgLWZsYWdzICti aXRleGFjdCAtdmYgdGlsdGFuZHNoaWZ0CiAKIHRlc3RzL3BpeGZtdHMubWFrOiBUQUcgPSBHRU4K IHRlc3RzL3BpeGZtdHMubWFrOiBmZm1wZWckKFBST0dTU1VGKSQoRVhFU1VGKSB8IHRlc3RzCmRp ZmYgLS1naXQgYS90ZXN0cy9yZWYvZmF0ZS9maWx0ZXItdGlsdGFuZHNoaWZ0IGIvdGVzdHMvcmVm L2ZhdGUvZmlsdGVyLXRpbHRhbmRzaGlmdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwLi5iYmIxNzBlMjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVmL2ZhdGUvZmls dGVyLXRpbHRhbmRzaGlmdApAQCAtMCwwICsxLDU1IEBACisjdGIgMDogMS8yNQorI21lZGlhX3R5 cGUgMDogdmlkZW8KKyNjb2RlY19pZCAwOiByYXd2aWRlbworI2RpbWVuc2lvbnMgMDogMzUyeDI4 OAorI3NhciAwOiAwLzEKKzAsICAgICAgICAgIDAsICAgICAgICAgIDAsICAgICAgICAxLCAgIDE1 MjA2NCwgMHgyNTI1MGI0YgorMCwgICAgICAgICAgMSwgICAgICAgICAgMSwgICAgICAgIDEsICAg MTUyMDY0LCAweDhkNmFkYTdhCiswLCAgICAgICAgICAyLCAgICAgICAgICAyLCAgICAgICAgMSwg ICAxNTIwNjQsIDB4YzAzM2MzZDcKKzAsICAgICAgICAgIDMsICAgICAgICAgIDMsICAgICAgICAx LCAgIDE1MjA2NCwgMHgwMzViNWQwOAorMCwgICAgICAgICAgNCwgICAgICAgICAgNCwgICAgICAg IDEsICAgMTUyMDY0LCAweDU4NDFlOTY5CiswLCAgICAgICAgICA1LCAgICAgICAgICA1LCAgICAg ICAgMSwgICAxNTIwNjQsIDB4NzZiODA5YjIKKzAsICAgICAgICAgIDYsICAgICAgICAgIDYsICAg ICAgICAxLCAgIDE1MjA2NCwgMHgxY2ZjZDljMworMCwgICAgICAgICAgNywgICAgICAgICAgNywg ICAgICAgIDEsICAgMTUyMDY0LCAweDY2M2E0MmVjCiswLCAgICAgICAgICA4LCAgICAgICAgICA4 LCAgICAgICAgMSwgICAxNTIwNjQsIDB4ODIzMGIxOTEKKzAsICAgICAgICAgIDksICAgICAgICAg IDksICAgICAgICAxLCAgIDE1MjA2NCwgMHhiOWQ2MjdhMworMCwgICAgICAgICAxMCwgICAgICAg ICAxMCwgICAgICAgIDEsICAgMTUyMDY0LCAweGIzNzQ5MzcwCiswLCAgICAgICAgIDExLCAgICAg ICAgIDExLCAgICAgICAgMSwgICAxNTIwNjQsIDB4NTQ5ZjJlYWIKKzAsICAgICAgICAgMTIsICAg ICAgICAgMTIsICAgICAgICAxLCAgIDE1MjA2NCwgMHgyNTdkMTQ3NgorMCwgICAgICAgICAxMywg ICAgICAgICAxMywgICAgICAgIDEsICAgMTUyMDY0LCAweGQ0Yzc2YWVhCiswLCAgICAgICAgIDE0 LCAgICAgICAgIDE0LCAgICAgICAgMSwgICAxNTIwNjQsIDB4MzE1YzlmM2QKKzAsICAgICAgICAg MTUsICAgICAgICAgMTUsICAgICAgICAxLCAgIDE1MjA2NCwgMHg4MGRmZjZkZgorMCwgICAgICAg ICAxNiwgICAgICAgICAxNiwgICAgICAgIDEsICAgMTUyMDY0LCAweGZmMmY4MjA0CiswLCAgICAg ICAgIDE3LCAgICAgICAgIDE3LCAgICAgICAgMSwgICAxNTIwNjQsIDB4ZGMxN2MzNjEKKzAsICAg ICAgICAgMTgsICAgICAgICAgMTgsICAgICAgICAxLCAgIDE1MjA2NCwgMHhkNjJiNDk5NAorMCwg ICAgICAgICAxOSwgICAgICAgICAxOSwgICAgICAgIDEsICAgMTUyMDY0LCAweDRhYmVjYjkyCisw LCAgICAgICAgIDIwLCAgICAgICAgIDIwLCAgICAgICAgMSwgICAxNTIwNjQsIDB4NGZkMTMzY2QK KzAsICAgICAgICAgMjEsICAgICAgICAgMjEsICAgICAgICAxLCAgIDE1MjA2NCwgMHg3ZGRjZDky MAorMCwgICAgICAgICAyMiwgICAgICAgICAyMiwgICAgICAgIDEsICAgMTUyMDY0LCAweDU2YTUx YzhjCiswLCAgICAgICAgIDIzLCAgICAgICAgIDIzLCAgICAgICAgMSwgICAxNTIwNjQsIDB4OGQ0 MGM3YmQKKzAsICAgICAgICAgMjQsICAgICAgICAgMjQsICAgICAgICAxLCAgIDE1MjA2NCwgMHhi YWNjODkyOQorMCwgICAgICAgICAyNSwgICAgICAgICAyNSwgICAgICAgIDEsICAgMTUyMDY0LCAw eDc0MmNjYjEzCiswLCAgICAgICAgIDI2LCAgICAgICAgIDI2LCAgICAgICAgMSwgICAxNTIwNjQs IDB4YjQ0YjZhYjQKKzAsICAgICAgICAgMjcsICAgICAgICAgMjcsICAgICAgICAxLCAgIDE1MjA2 NCwgMHg1NjM3MjgzOAorMCwgICAgICAgICAyOCwgICAgICAgICAyOCwgICAgICAgIDEsICAgMTUy MDY0LCAweGE2OWZhOWQ3CiswLCAgICAgICAgIDI5LCAgICAgICAgIDI5LCAgICAgICAgMSwgICAx NTIwNjQsIDB4NDU3ODY4MTgKKzAsICAgICAgICAgMzAsICAgICAgICAgMzAsICAgICAgICAxLCAg IDE1MjA2NCwgMHgzMzY3YzY1MAorMCwgICAgICAgICAzMSwgICAgICAgICAzMSwgICAgICAgIDEs ICAgMTUyMDY0LCAweGU1OGVhMzI1CiswLCAgICAgICAgIDMyLCAgICAgICAgIDMyLCAgICAgICAg MSwgICAxNTIwNjQsIDB4ZDRkOGUxZDIKKzAsICAgICAgICAgMzMsICAgICAgICAgMzMsICAgICAg ICAxLCAgIDE1MjA2NCwgMHg0YzY3OTg3YgorMCwgICAgICAgICAzNCwgICAgICAgICAzNCwgICAg ICAgIDEsICAgMTUyMDY0LCAweGM5YjI1M2M5CiswLCAgICAgICAgIDM1LCAgICAgICAgIDM1LCAg ICAgICAgMSwgICAxNTIwNjQsIDB4OGNmNThmZmYKKzAsICAgICAgICAgMzYsICAgICAgICAgMzYs ICAgICAgICAxLCAgIDE1MjA2NCwgMHhlNjE1MTlhZgorMCwgICAgICAgICAzNywgICAgICAgICAz NywgICAgICAgIDEsICAgMTUyMDY0LCAweDhmMzE0ZmNiCiswLCAgICAgICAgIDM4LCAgICAgICAg IDM4LCAgICAgICAgMSwgICAxNTIwNjQsIDB4ZjMwN2QwZWQKKzAsICAgICAgICAgMzksICAgICAg ICAgMzksICAgICAgICAxLCAgIDE1MjA2NCwgMHgwMjVmNTY3MAorMCwgICAgICAgICA0MCwgICAg ICAgICA0MCwgICAgICAgIDEsICAgMTUyMDY0LCAweDk1ZWVlZjliCiswLCAgICAgICAgIDQxLCAg ICAgICAgIDQxLCAgICAgICAgMSwgICAxNTIwNjQsIDB4MGYzMTZkYTEKKzAsICAgICAgICAgNDIs ICAgICAgICAgNDIsICAgICAgICAxLCAgIDE1MjA2NCwgMHg2NjhiZmEwNQorMCwgICAgICAgICA0 MywgICAgICAgICA0MywgICAgICAgIDEsICAgMTUyMDY0LCAweGRiMDA3MDBhCiswLCAgICAgICAg IDQ0LCAgICAgICAgIDQ0LCAgICAgICAgMSwgICAxNTIwNjQsIDB4N2E2NGY1MDIKKzAsICAgICAg ICAgNDUsICAgICAgICAgNDUsICAgICAgICAxLCAgIDE1MjA2NCwgMHhlZjNlNjgxYworMCwgICAg ICAgICA0NiwgICAgICAgICA0NiwgICAgICAgIDEsICAgMTUyMDY0LCAweDYxNTJlOGQwCiswLCAg ICAgICAgIDQ3LCAgICAgICAgIDQ3LCAgICAgICAgMSwgICAxNTIwNjQsIDB4OTU4YjVhNDgKKzAs ICAgICAgICAgNDgsICAgICAgICAgNDgsICAgICAgICAxLCAgIDE1MjA2NCwgMHg2NmYyZDdlNwor MCwgICAgICAgICA0OSwgICAgICAgICA0OSwgICAgICAgIDEsICAgMTUyMDY0LCAweDQ3ZGE0OWZk Ci0tIAoyLjQyLjAKCg== --000000000000ce483d060c615316 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". --000000000000ce483d060c615316--