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 5A96148290 for ; Fri, 15 Dec 2023 20:12:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5FA1168D0CF; Fri, 15 Dec 2023 22:12:44 +0200 (EET) Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 79C7068CFFA for ; Fri, 15 Dec 2023 22:12:37 +0200 (EET) Received: by mail-lj1-f176.google.com with SMTP id 38308e7fff4ca-2c9f84533beso10581911fa.1 for ; Fri, 15 Dec 2023 12:12:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702671156; x=1703275956; 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=hb+ukwqjN1v87Bykljq3lgvKsQrrgd3VzosCKezmNlU=; b=Ybl0Lt+IPgcv0IHy/xVW1h4kFRqNpXLTefe/9r3ZwFWQ9MN1HILktJElrj7v/Llsg+ N3vyJZaBOcuHPjsE1xfJkkt+KaNudjmkSEj4c4naMbOVl2OJt+E8gWGjMY2k31RwzWbM 2McmamS37JEqn7O6IWFJfTLi3mUA0IM8g0vgFNonHdb2+8zhwh7aJ6dn0zZW25GY/y0r /MHz2Rv0UlDELuQ63idEfm597v8Is/PVXJli7g/wmHjDkAlq0cqRAN3rr/WVrmk/5Ow3 0MbcS9wMsQvsJRgAeXKr/AF2+ndE3eyJcy/OXg2TALW4nKmtqhMzpMUUQ59EyeiE0RSH 1kRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702671156; x=1703275956; 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=hb+ukwqjN1v87Bykljq3lgvKsQrrgd3VzosCKezmNlU=; b=DWHOyNo+7gZJRd9j8tpM7Dpd/w6Y+omKMlxQ/WIuAp6yiA0eZ7WqC1m1wh0T7XT7yt xRQM7sSzGIdUoQMgJnAvMW1MgtfbzV7lwUlykBOGbo8pTo/78gmY/ruyQBUBH5gk+CRQ egBvTMuv6rvfbwk7AHDCtwrwX1Et/oZR26YCXuBRDynbo7DCZvxnbP9KdmDLtv2/LNSz cL55THgbeSd+qC8qlC0jrZpBmxETmMLfi9FDOu62sI4aDQfoXDyvcWEP4eBznBEXBcGf opUKVFn4Njab8khN/jvnL+f4W1UbAUoslWKhdEEhCU1QzpB4ZsfXe0BpXYdjJTW59uzK aGKQ== X-Gm-Message-State: AOJu0YwAP4WddpCJRFflnX1ok/LN4DtJAmWOnpmY+jiFCmYV0OONy6Fr exnqcTE0+1/1LogsiQhDIj1YhTKvHxY7pPxBJVkR8IXcGac= X-Google-Smtp-Source: AGHT+IGy7SwCFzQ9Acdmq+chs6udBL0gbVECBAp06D6cWyHNrDPm77jAI8IgC4xKycK9/NZhy1IVAtXsKIrG0m1ladA= X-Received: by 2002:a2e:be9d:0:b0:2cb:3160:92ad with SMTP id a29-20020a2ebe9d000000b002cb316092admr5200801ljr.67.1702671156091; Fri, 15 Dec 2023 12:12:36 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Vittorio Giovara Date: Fri, 15 Dec 2023 15:12:24 -0500 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="0000000000006e2483060c920524" 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: --0000000000006e2483060c920524 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Dec 15, 2023 at 12:34=E2=80=AFPM Andreas Rheinhardt < andreas.rheinhardt@outlook.com> wrote: > > +static int list_add_frame(FrameList **list, size_t *size, AVFrame > > *frame) > > +{ > > + FrameList *element =3D av_mallocz(sizeof(FrameList)); > > The overhead of this FrameList is unnecessary: You can simply use > AVFrame.opaque as your next pointer. > Good tip! Attached an edited version, with all the other suggestions too. --=20 Vittorio --0000000000006e2483060c920524 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_lq72e2qw0 RnJvbSBkZTA5MmNjMDZmZDk2MDU5YjgzYjRlYjk4NmVjYTQ2ODgxZTNhMmZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaXR0b3JpbyBHaW92YXJhIDx2aXR0b3Jpby5naW92YXJhQGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAxNCBKdWwgMjAxNCAyMToyNjo1NSAtMDQwMApTdWJqZWN0OiBb UEFUQ0hdIEFkZCBuZXcgdmZfdGlsdGFuZHNoaWZ0IGZpbHRlcgoKU2lnbmVkLW9mZi1ieTogVml0 dG9yaW8gR2lvdmFyYSA8dml0dG9yaW8uZ2lvdmFyYUBnbWFpbC5jb20+Ci0tLQogQ2hhbmdlbG9n ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBkb2MvZmlsdGVycy50ZXhpICAgICAg ICAgICAgICAgICAgIHwgIDYzICsrKysrCiBsaWJhdmZpbHRlci9NYWtlZmlsZSAgICAgICAgICAg ICAgIHwgICAxICsKIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyAgICAgICAgICAgfCAgIDEgKwog bGliYXZmaWx0ZXIvdmZfdGlsdGFuZHNoaWZ0LmMgICAgICB8IDM2NyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogdGVzdHMvZmF0ZS9maWx0ZXItdmlkZW8ubWFrICAgICAgICB8ICAgMiAr CiB0ZXN0cy9yZWYvZmF0ZS9maWx0ZXItdGlsdGFuZHNoaWZ0IHwgIDU1ICsrKysrCiA3IGZpbGVz IGNoYW5nZWQsIDQ5MCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0 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 bHRhbmRzaGlmdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBiMWEw M2UyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmZpbHRlci92Zl90aWx0YW5kc2hpZnQuYwpA QCAtMCwwICsxLDM2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNCBWaXR0b3JpbyBHaW92 YXJhCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExl c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKy8qKgorICogQGZp bGUgdmZfdGlsdGFuZHNoaWZ0LmMKKyAqIFNpbXBsZSB0aW1lIGFuZCBzcGFjZSBpbnZlcnRlci4K KyAqLworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJsaWJhdnV0aWwvY29tbW9u LmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL2ltZ3V0aWxzLmgiCisjaW5jbHVkZSAibGliYXZ1dGls L29wdC5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9waXhkZXNjLmgiCisjaW5jbHVkZSAibGliYXZ1 dGlsL3JhdGlvbmFsLmgiCisKKyNpbmNsdWRlICJhdmZpbHRlci5oIgorI2luY2x1ZGUgImZvcm1h dHMuaCIKKyNpbmNsdWRlICJpbnRlcm5hbC5oIgorI2luY2x1ZGUgInZpZGVvLmgiCisKK2VudW0g UGFkZGluZ09wdGlvbiB7CisgICAgVElMVF9OT05FLAorICAgIFRJTFRfRlJBTUUsCisgICAgVElM VF9CTEFDSywKKyAgICBUSUxUX09QVF9NQVgsCit9OworCit0eXBlZGVmIHN0cnVjdCBUaWx0YW5k c2hpZnRDb250ZXh0IHsKKyAgICBjb25zdCBBVkNsYXNzICpjbGFzczsKKworICAgIC8qIHNldCB3 aGVuIGFsbCBpbnB1dCBmcmFtZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZCBhbmQgd2UgaGF2ZSB0bwor ICAgICAqIGVtcHR5IGJ1ZmZlcnMsIHBhZCBhbmQgdGhlbiByZXR1cm4gKi8KKyAgICBpbnQgZW9m X3JlY3Y7CisKKyAgICAvKiBsaXZlIG9yIHN0YXRpYyBzbGlkaW5nICovCisgICAgaW50IHRpbHQ7 CisKKyAgICAvKiBpbml0aWFsIG9yIGZpbmFsIGFjdGlvbnMgdG8gcGVyZm9ybSAocGFkL2hvbGQg YSBmcmFtZS9ibGFjay9ub3RoaW5nKSAqLworICAgIGVudW0gUGFkZGluZ09wdGlvbiBzdGFydDsK KyAgICBlbnVtIFBhZGRpbmdPcHRpb24gZW5kOworCisgICAgLyogY29sdW1ucyB0byBob2xkIG9y IHBhZCBhdCB0aGUgYmVnaW5uaW5nIG9yIGF0IHRoZSBlbmQgKHJlc3BlY3RpdmVseSkgKi8KKyAg ICBpbnQgaG9sZDsKKyAgICBpbnQgcGFkOworCisgICAgLyogYnVmZmVycyBmb3IgYmxhY2sgY29s dW1ucyAqLworICAgIHVpbnQ4X3QgKmJsYWNrX2J1ZmZlcnNbNF07CisgICAgaW50IGJsYWNrX2xp bmVzaXplc1s0XTsKKworICAgIC8qIGxpc3QgY29udGFpbmluZyBhbGwgaW5wdXQgZnJhbWVzICov CisgICAgc2l6ZV90IGlucHV0X3NpemU7CisgICAgQVZGcmFtZSAqaW5wdXQ7CisgICAgQVZGcmFt ZSAqcHJldjsKKworICAgIGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRvciAqZGVzYzsKK30gVGlsdGFu ZHNoaWZ0Q29udGV4dDsKKworc3RhdGljIGludCBsaXN0X2FkZF9mcmFtZShUaWx0YW5kc2hpZnRD b250ZXh0ICpzLCBBVkZyYW1lICpmcmFtZSkKK3sKKyAgICBpZiAocy0+aW5wdXQgPT0gTlVMTCkg eworICAgICAgICBzLT5pbnB1dCA9IGZyYW1lOworICAgIH0gZWxzZSB7CisgICAgICAgIEFWRnJh bWUgKmhlYWQgPSBzLT5pbnB1dDsKKyAgICAgICAgd2hpbGUgKGhlYWQtPm9wYXF1ZSkKKyAgICAg ICAgICAgIGhlYWQgPSBoZWFkLT5vcGFxdWU7CisgICAgICAgIGhlYWQtPm9wYXF1ZSA9IGZyYW1l OworICAgIH0KKyAgICBzLT5pbnB1dF9zaXplKys7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp YyB2b2lkIGxpc3RfcmVtb3ZlX2hlYWQoVGlsdGFuZHNoaWZ0Q29udGV4dCAqcykKK3sKKyAgICBB VkZyYW1lICpoZWFkID0gcy0+aW5wdXQ7CisgICAgaWYgKGhlYWQpIHsKKyAgICAgICAgcy0+aW5w dXQgPSBoZWFkLT5vcGFxdWU7CisgICAgICAgIGF2X2ZyYW1lX2ZyZWUoJmhlYWQpOworICAgIH0K KyAgICBzLT5pbnB1dF9zaXplLS07Cit9CisKK3N0YXRpYyBjb25zdCBlbnVtIEFWUGl4ZWxGb3Jt YXQgcGl4X2ZtdHNbXSA9IHsKKyAgICBBVl9QSVhfRk1UX1lVVjQyMFAsIEFWX1BJWF9GTVRfWVVW NDIyUCwgQVZfUElYX0ZNVF9ZVVY0NDRQLAorICAgIEFWX1BJWF9GTVRfWVVWNDEwUCwKKyAgICBB Vl9QSVhfRk1UX1lVVko0MjBQLCBBVl9QSVhfRk1UX1lVVko0MjJQLCBBVl9QSVhfRk1UX1lVVko0 NDRQLAorICAgIEFWX1BJWF9GTVRfWVVWSjQ0MFAsCisgICAgQVZfUElYX0ZNVF9OT05FCit9Owor CitzdGF0aWMgYXZfY29sZCB2b2lkIHVuaW5pdChBVkZpbHRlckNvbnRleHQgKmN0eCkKK3sKKyAg ICBUaWx0YW5kc2hpZnRDb250ZXh0ICpzID0gY3R4LT5wcml2OworICAgIHdoaWxlIChzLT5pbnB1 dCkKKyAgICAgICAgbGlzdF9yZW1vdmVfaGVhZChzKTsKKyAgICBhdl9mcmVlcCgmcy0+YmxhY2tf YnVmZmVycyk7Cit9CisKK3N0YXRpYyBpbnQgY29uZmlnX3Byb3BzKEFWRmlsdGVyTGluayAqb3V0 bGluaykKK3sKKyAgICBBVkZpbHRlckNvbnRleHQgKmN0eCA9IG91dGxpbmstPnNyYzsKKyAgICBU aWx0YW5kc2hpZnRDb250ZXh0ICpzID0gY3R4LT5wcml2OworCisgICAgb3V0bGluay0+dyA9IGN0 eC0+aW5wdXRzWzBdLT53OworICAgIG91dGxpbmstPmggPSBjdHgtPmlucHV0c1swXS0+aDsKKyAg ICBvdXRsaW5rLT5mb3JtYXQgPSBjdHgtPmlucHV0c1swXS0+Zm9ybWF0OworCisgICAgLy8gd2hl biB3ZSBoYXZlIHRvIHBhZCBibGFjayBvciBhIGZyYW1lIGF0IHRoZSBzdGFydCwgc2tpcCBuYXZp Z2F0aW5nCisgICAgLy8gdGhlIGxpc3QgYW5kIHVzZSBlaXRoZXIgdGhlIGZyYW1lIG9yIGJsYWNr IGZvciB0aGUgcmVxdWVzdGVkIHZhbHVlCisgICAgaWYgKHMtPnN0YXJ0ICE9IFRJTFRfTk9ORSAm JiAhcy0+aG9sZCkKKyAgICAgICAgcy0+aG9sZCA9IG91dGxpbmstPnc7CisKKyAgICAvLyBJbml0 IGJsYWNrIGJ1ZmZlcnMgaWYgd2UgcGFkIHdpdGggYmxhY2sgYXQgdGhlIHN0YXJ0IG9yIGF0IHRo ZSBlbmQuCisgICAgLy8gRm9yIHRoZSBlbmQsIHdlIGFsd2F5cyBoYXZlIHRvIGluaXQgb24gTk9O RSBhbmQgQkxBQ0sgYmVjYXVzZSB3ZSBuZXZlcgorICAgIC8vIGtub3cgaWYgdGhlcmUgYXJlIGdv aW5nIHRvIGJlIGVub3VnaCBpbnB1dCBmcmFtZXMgdG8gZmlsbCBhbiBvdXRwdXQgb25lLgorICAg IGlmIChzLT5zdGFydCA9PSBUSUxUX0JMQUNLIHx8IHMtPmVuZCAhPSBUSUxUX0ZSQU1FKSB7Cisg ICAgICAgIGludCBpLCBqLCByZXQ7CisgICAgICAgIHVpbnQ4X3QgYmxhY2tfZGF0YVtdID0geyAw eDEwLCAweDgwLCAweDgwLCAweDEwIH07CisgICAgICAgIGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRv ciAqZGVzYyA9IGF2X3BpeF9mbXRfZGVzY19nZXQob3V0bGluay0+Zm9ybWF0KTsKKyAgICAgICAg aWYgKCFkZXNjKQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfQlVHOworCisgICAgICAgIGlm IChvdXRsaW5rLT5mb3JtYXQgPT0gQVZfUElYX0ZNVF9ZVVZKNDIwUCB8fAorICAgICAgICAgICAg b3V0bGluay0+Zm9ybWF0ID09IEFWX1BJWF9GTVRfWVVWSjQyMlAgfHwKKyAgICAgICAgICAgIG91 dGxpbmstPmZvcm1hdCA9PSBBVl9QSVhfRk1UX1lVVko0NDRQIHx8CisgICAgICAgICAgICBvdXRs aW5rLT5mb3JtYXQgPT0gQVZfUElYX0ZNVF9ZVVZKNDQwUCkKKyAgICAgICAgICAgIGJsYWNrX2Rh dGFbMF0gPSBibGFja19kYXRhWzNdID0gMDsKKworICAgICAgICByZXQgPSBhdl9pbWFnZV9hbGxv YyhzLT5ibGFja19idWZmZXJzLCBzLT5ibGFja19saW5lc2l6ZXMsIDEsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG91dGxpbmstPmgsIG91dGxpbmstPmZvcm1hdCwgMSk7CisgICAgICAg IGlmIChyZXQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKworICAgICAgICBmb3IgKGkg PSAwOyBpIDwgRkZNSU4oZGVzYy0+bmJfY29tcG9uZW50cywgNCk7IGkrKykKKyAgICAgICAgICAg IGZvciAoaiA9IDA7IGogPCAoIWkgPyBvdXRsaW5rLT5oCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDogLSgoLW91dGxpbmstPmgpID4+IGRlc2MtPmxvZzJfY2hyb21hX2gpKTsgaisr KQorICAgICAgICAgICAgICAgIG1lbXNldChzLT5ibGFja19idWZmZXJzW2ldICsgaiAqIHMtPmJs YWNrX2xpbmVzaXplc1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tfZGF0YVtpXSwg MSk7CisKKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX1ZFUkJPU0UsICJQYWRkaW5nIGJ1ZmZl cnMgaW5pdGlhbGl6ZWQuXG4iKTsKKyAgICB9CisKKyAgICBzLT5kZXNjID0gYXZfcGl4X2ZtdF9k ZXNjX2dldChvdXRsaW5rLT5mb3JtYXQpOworICAgIGlmICghcy0+ZGVzYykKKyAgICAgICAgcmV0 dXJuIEFWRVJST1JfQlVHOworCisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIHZvaWQgY29w eV9jb2x1bW4oQVZGaWx0ZXJMaW5rICpvdXRsaW5rLAorICAgICAgICAgICAgICAgICAgICAgICAg dWludDhfdCAqZHN0X2RhdGFbNF0sIGludCBkc3RfbGluZXNpemVzWzRdLAorICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc3JjX2RhdGFbNF0sIGNvbnN0IGludCBzcmNfbGlu ZXNpemVzWzRdLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5jb2wsIGludCB0aWx0KQor eworICAgIEFWRmlsdGVyQ29udGV4dCAqY3R4ID0gb3V0bGluay0+c3JjOworICAgIFRpbHRhbmRz aGlmdENvbnRleHQgKnMgPSBjdHgtPnByaXY7CisgICAgdWludDhfdCAqZHN0WzRdOworICAgIGNv bnN0IHVpbnQ4X3QgKnNyY1s0XTsKKworICAgIGRzdFswXSA9IGRzdF9kYXRhWzBdICsgbmNvbDsK KyAgICBkc3RbMV0gPSBkc3RfZGF0YVsxXSArIChuY29sID4+IHMtPmRlc2MtPmxvZzJfY2hyb21h X2gpOworICAgIGRzdFsyXSA9IGRzdF9kYXRhWzJdICsgKG5jb2wgPj4gcy0+ZGVzYy0+bG9nMl9j aHJvbWFfaCk7CisKKyAgICBpZiAoIXRpbHQpCisgICAgICAgIG5jb2wgPSAwOworICAgIHNyY1sw XSA9IHNyY19kYXRhWzBdICsgbmNvbDsKKyAgICBzcmNbMV0gPSBzcmNfZGF0YVsxXSArIChuY29s ID4+IHMtPmRlc2MtPmxvZzJfY2hyb21hX2gpOworICAgIHNyY1syXSA9IHNyY19kYXRhWzJdICsg KG5jb2wgPj4gcy0+ZGVzYy0+bG9nMl9jaHJvbWFfaCk7CisKKyAgICBhdl9pbWFnZV9jb3B5KGRz dCwgZHN0X2xpbmVzaXplcywgc3JjLCBzcmNfbGluZXNpemVzLCBvdXRsaW5rLT5mb3JtYXQsIDEs IG91dGxpbmstPmgpOworfQorCitzdGF0aWMgaW50IG91dHB1dF9mcmFtZShBVkZpbHRlckxpbmsg Km91dGxpbmspCit7CisgICAgVGlsdGFuZHNoaWZ0Q29udGV4dCAqcyA9IG91dGxpbmstPnNyYy0+ cHJpdjsKKyAgICBBVkZyYW1lICpoZWFkOworICAgIGludCByZXQ7CisKKyAgICBpbnQgbmNvbCA9 IDA7CisgICAgQVZGcmFtZSAqZHN0ID0gZmZfZ2V0X3ZpZGVvX2J1ZmZlcihvdXRsaW5rLCBvdXRs aW5rLT53LCBvdXRsaW5rLT5oKTsKKyAgICBpZiAoIWRzdCkKKyAgICAgICAgcmV0dXJuIEFWRVJS T1IoRU5PTUVNKTsKKworICAgIC8vIGluIGNhc2Ugd2UgaGF2ZSB0byBkbyBhbnkgaW5pdGlhbCBi bGFjayBwYWRkaW5nCisgICAgaWYgKHMtPnN0YXJ0ID09IFRJTFRfQkxBQ0spIHsKKyAgICAgICAg Zm9yICggOyBuY29sIDwgcy0+aG9sZDsgbmNvbCsrKQorICAgICAgICAgICAgY29weV9jb2x1bW4o b3V0bGluaywgZHN0LT5kYXRhLCBkc3QtPmxpbmVzaXplLAorICAgICAgICAgICAgICAgICAgICAg ICAgKGNvbnN0IHVpbnQ4X3QgKiopcy0+YmxhY2tfYnVmZmVycywgcy0+YmxhY2tfbGluZXNpemVz LAorICAgICAgICAgICAgICAgICAgICAgICAgbmNvbCwgMCk7CisgICAgfQorCisgICAgaGVhZCA9 IHMtPmlucHV0OworICAgIC8vIGNvcHkgYSBjb2x1bW4gZnJvbSBlYWNoIGlucHV0IGZyYW1lCisg ICAgZm9yICggOyBuY29sIDwgcy0+aW5wdXRfc2l6ZTsgbmNvbCsrKSB7CisgICAgICAgIEFWRnJh bWUgKnNyYyA9IGhlYWQ7CisKKyAgICAgICAgY29weV9jb2x1bW4ob3V0bGluaywgZHN0LT5kYXRh LCBkc3QtPmxpbmVzaXplLAorICAgICAgICAgICAgICAgICAgICAoY29uc3QgdWludDhfdCAqKilz cmMtPmRhdGEsIHNyYy0+bGluZXNpemUsCisgICAgICAgICAgICAgICAgICAgIG5jb2wsIHMtPnRp bHQpOworCisgICAgICAgIC8vIGtlZXAgdHJhY2sgb2YgdGhlIGxhc3Qga25vd24gZnJhbWUgaW4g Y2FzZSB3ZSBuZWVkIGl0IGJlbG93CisgICAgICAgIHMtPnByZXYgPSBoZWFkOworICAgICAgICAv LyBhZHZhbmNlIHRvIHRoZSBuZXh0IGZyYW1lIHVubGVzcyB3ZSBoYXZlIHRvIGhvbGQgaXQKKyAg ICAgICAgaWYgKHMtPmhvbGQgPD0gbmNvbCkKKyAgICAgICAgICAgIGhlYWQgPSBoZWFkLT5vcGFx dWU7CisgICAgfQorCisgICAgLy8gcGFkIGFueSByZW1haW5pbmcgc3BhY2Ugd2l0aCBibGFjayBv ciBsYXN0IGZyYW1lCisgICAgaWYgKHMtPmVuZCA9PSBUSUxUX0ZSQU1FKSB7CisgICAgICAgIGZv ciAoIDsgbmNvbCA8IG91dGxpbmstPnc7IG5jb2wrKykKKyAgICAgICAgICAgIGNvcHlfY29sdW1u KG91dGxpbmssIGRzdC0+ZGF0YSwgZHN0LT5saW5lc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgIChjb25zdCB1aW50OF90ICoqKXMtPnByZXYtPmRhdGEsCisgICAgICAgICAgICAgICAgICAg ICAgICBzLT5wcmV2LT5saW5lc2l6ZSwgbmNvbCwgMSk7CisgICAgfSBlbHNlIHsgLy8gVElMVF9C TEFDSyBhbmQgVElMVF9OT05FCisgICAgICAgIGZvciAoIDsgbmNvbCA8IG91dGxpbmstPnc7IG5j b2wrKykKKyAgICAgICAgICAgIGNvcHlfY29sdW1uKG91dGxpbmssIGRzdC0+ZGF0YSwgZHN0LT5s aW5lc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1aW50OF90ICoqKXMtPmJs YWNrX2J1ZmZlcnMsIHMtPmJsYWNrX2xpbmVzaXplcywKKyAgICAgICAgICAgICAgICAgICAgICAg IG5jb2wsIDApOworICAgIH0KKworICAgIC8vIHNldCBjb3JyZWN0IHRpbWVzdGFtcHMgYW5kIHBy b3BzIGFzIGxvbmcgYXMgdGhlcmUgaXMgcHJvcGVyIGlucHV0CisgICAgcmV0ID0gYXZfZnJhbWVf Y29weV9wcm9wcyhkc3QsIHMtPmlucHV0KTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0 dXJuIHJldDsKKworICAgIC8vIGRpc2NhcmQgZnJhbWUgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdCBz aW5jZSBpdCBoYXMgYmVlbiBmdWxseSBwcm9jZXNzZWQKKyAgICBsaXN0X3JlbW92ZV9oZWFkKHMp OworICAgIC8vIGFuZCBpdCBpcyBzYWZlIHRvIHJlZHVjZSB0aGUgaG9sZCB2YWx1ZSAoZXZlbiBp ZiB1bnVzZWQpCisgICAgcy0+aG9sZC0tOworCisgICAgLy8gb3V0cHV0CisgICAgcmV0dXJuIGZm X2ZpbHRlcl9mcmFtZShvdXRsaW5rLCBkc3QpOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIGp1c3Qg cG9sbHMgZm9yIG5ldyBmcmFtZXMgYW5kIHF1ZXVlcyB0aGVtIG9uIGEgbGlzdAorc3RhdGljIGlu dCBmaWx0ZXJfZnJhbWUoQVZGaWx0ZXJMaW5rICppbmxpbmssIEFWRnJhbWUgKmZyYW1lKQorewor ICAgIEFWRmlsdGVyTGluayAqb3V0bGluayA9IGlubGluay0+ZHN0LT5vdXRwdXRzWzBdOworICAg IEFWRmlsdGVyQ29udGV4dCAqY3R4ID0gb3V0bGluay0+c3JjOworICAgIFRpbHRhbmRzaGlmdENv bnRleHQgKnMgPSBpbmxpbmstPmRzdC0+cHJpdjsKKworICAgIGludCByZXQgPSBsaXN0X2FkZF9m cmFtZShzLCBmcmFtZSk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgcmV0dXJuIHJldDsK KyAgICB9CisKKyAgICAvLyBsb2FkIHVwIGVub3VnaCBmcmFtZXMgdG8gZmlsbCBhIGZyYW1lIGFu ZCBrZWVwIHRoZSBxdWV1ZSBmaWxsZWQgb24gc3Vic2VxdWVudAorICAgIC8vIGNhbGxzLCB1bnRp bCB3ZSByZWNlaXZlIEVPRiwgYW5kIHRoZW4gd2UgZWl0aGVyIHBhZCBvciBlbmQKKyAgICBpZiAo IXMtPmVvZl9yZWN2ICYmIHMtPmlucHV0X3NpemUgPCBvdXRsaW5rLT53IC0gcy0+cGFkKSB7Cisg ICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19ERUJVRywgIk5vdCBlbm91Z2ggZnJhbWVzIGluIHRo ZSBsaXN0ICglenUvJWQpLCB3YWl0aW5nIGZvciBtb3JlLlxuIiwgcy0+aW5wdXRfc2l6ZSwgb3V0 bGluay0+dyAtIHMtPnBhZCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVy biBvdXRwdXRfZnJhbWUob3V0bGluayk7Cit9CisKK3N0YXRpYyBpbnQgcmVxdWVzdF9mcmFtZShB VkZpbHRlckxpbmsgKm91dGxpbmspCit7CisgICAgQVZGaWx0ZXJDb250ZXh0ICpjdHggPSBvdXRs aW5rLT5zcmM7CisgICAgVGlsdGFuZHNoaWZ0Q29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKyAgICBp bnQgcmV0OworCisgICAgLy8gc2lnbmFsIGpvYiBmaW5pc2hlZCB3aGVuIGxpc3QgaXMgZW1wdHkg b3Igd2hlbiBwYWRkaW5nIGlzIGVpdGhlcgorICAgIC8vIGxpbWl0ZWQgb3IgZGlzYWJsZWQgYW5k IGVvZiB3YXMgcmVjZWl2ZWQKKyAgICBpZiAoKHMtPmlucHV0X3NpemUgPD0gMCB8fCBzLT5pbnB1 dF9zaXplID09IG91dGxpbmstPncgLSBzLT5wYWQgfHwgcy0+ZW5kID09IFRJTFRfTk9ORSkgJiYg cy0+ZW9mX3JlY3YpIHsKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfRU9GOworICAgIH0KKworICAg IHJldCA9IGZmX3JlcXVlc3RfZnJhbWUoY3R4LT5pbnB1dHNbMF0pOworICAgIGlmIChyZXQgPT0g QVZFUlJPUl9FT0YpIHsKKyAgICAgICAgcy0+ZW9mX3JlY3YgPSAxOworICAgIH0gZWxzZSBpZiAo cmV0IDwgMCkgeworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIGlmIChzLT5lb2Zf cmVjdikgeworICAgICAgICB3aGlsZSAocy0+aW5wdXRfc2l6ZSkgeworICAgICAgICAgICAgYXZf bG9nKGN0eCwgQVZfTE9HX0RFQlVHLCAiRW1wdHlpbmcgYnVmZmVycyAoJXp1LyVkKS5cbiIsIHMt PmlucHV0X3NpemUsIG91dGxpbmstPncgLSBzLT5wYWQpOworICAgICAgICAgICAgcmV0ID0gb3V0 cHV0X2ZyYW1lKG91dGxpbmspOworICAgICAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAg ICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg ICAgcmV0dXJuIDA7Cit9CisKKyNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNldG9mKFRpbHRhbmRzaGlm dENvbnRleHQsIHgpCisjZGVmaW5lIFYgQVZfT1BUX0ZMQUdfVklERU9fUEFSQU0KK3N0YXRpYyBj b25zdCBBVk9wdGlvbiB0aWx0YW5kc2hpZnRfb3B0aW9uc1tdID0geworICAgIHsgInRpbHQiLCAi VGlsdCB0aGUgdmlkZW8gaG9yaXpvbnRhbGx5IHdoaWxlIHNoaWZ0aW5nIiwgT0ZGU0VUKHRpbHQp LCBBVl9PUFRfVFlQRV9JTlQsCisgICAgICAgIHsgLmk2NCA9IDEgfSwgMCwgMSwgLmZsYWdzID0g ViwgLnVuaXQgPSAidGlsdCIgfSwKKworICAgIHsgInN0YXJ0IiwgIkFjdGlvbiBhdCB0aGUgc3Rh cnQgb2YgaW5wdXQiLCBPRkZTRVQoc3RhcnQpLCBBVl9PUFRfVFlQRV9JTlQsCisgICAgICAgIHsg Lmk2NCA9IFRJTFRfTk9ORSB9LCAwLCBUSUxUX09QVF9NQVgsIC5mbGFncyA9IFYsIC51bml0ID0g InN0YXJ0IiB9LAorICAgIHsgIm5vbmUiLCAiU3RhcnQgaW1tZWRpYXRlbHkgKGRlZmF1bHQpIiwg MCwgQVZfT1BUX1RZUEVfQ09OU1QsCisgICAgICAgIHsgLmk2NCA9IFRJTFRfTk9ORSB9LCBJTlRf TUlOLCBJTlRfTUFYLCAuZmxhZ3MgPSBWLCAudW5pdCA9ICJzdGFydCIgfSwKKyAgICB7ICJmcmFt ZSIsICJVc2UgdGhlIGZpcnN0IGZyYW1lcyIsIDAsIEFWX09QVF9UWVBFX0NPTlNULAorICAgICAg ICB7IC5pNjQgPSBUSUxUX0ZSQU1FIH0sIElOVF9NSU4sIElOVF9NQVgsIC5mbGFncyA9IFYsIC51 bml0ID0gInN0YXJ0IiB9LAorICAgIHsgImJsYWNrIiwgIkZpbGwgd2l0aCBibGFjayIsIDAsIEFW X09QVF9UWVBFX0NPTlNULAorICAgICAgICB7IC5pNjQgPSBUSUxUX0JMQUNLIH0sIElOVF9NSU4s IElOVF9NQVgsIC5mbGFncyA9IFYsIC51bml0ID0gInN0YXJ0IiB9LAorCisgICAgeyAiZW5kIiwg IkFjdGlvbiBhdCB0aGUgZW5kIG9mIGlucHV0IiwgT0ZGU0VUKGVuZCksIEFWX09QVF9UWVBFX0lO VCwKKyAgICAgICAgeyAuaTY0ID0gVElMVF9OT05FIH0sIDAsIFRJTFRfT1BUX01BWCwgLmZsYWdz ID0gViwgLnVuaXQgPSAiZW5kIiB9LAorICAgIHsgIm5vbmUiLCAiRG8gbm90IHBhZCBhdCB0aGUg ZW5kIChkZWZhdWx0KSIsIDAsIEFWX09QVF9UWVBFX0NPTlNULAorICAgICAgICB7IC5pNjQgPSBU SUxUX05PTkUgfSwgSU5UX01JTiwgSU5UX01BWCwgLmZsYWdzID0gViwgLnVuaXQgPSAiZW5kIiB9 LAorICAgIHsgImZyYW1lIiwgIlVzZSB0aGUgbGFzdCBmcmFtZSIsIDAsIEFWX09QVF9UWVBFX0NP TlNULAorICAgICAgICB7IC5pNjQgPSBUSUxUX0ZSQU1FIH0sIElOVF9NSU4sIElOVF9NQVgsIC5m bGFncyA9IFYsIC51bml0ID0gImVuZCIgfSwKKyAgICB7ICJibGFjayIsICJGaWxsIHdpdGggYmxh Y2siLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwKKyAgICAgICAgeyAuaTY0ID0gVElMVF9CTEFDSyB9 LCBJTlRfTUlOLCBJTlRfTUFYLCAuZmxhZ3MgPSBWLCAudW5pdCA9ICJlbmQiIH0sCisKKyAgICB7 ICJob2xkIiwgIk51bWJlciBvZiBjb2x1bW5zIHRvIGhvbGQgYXQgdGhlIHN0YXJ0IG9mIHRoZSB2 aWRlbyIsIE9GRlNFVChob2xkKSwgQVZfT1BUX1RZUEVfSU5ULAorICAgICAgICB7IC5pNjQgPSAw IH0sIDAsIElOVF9NQVgsIC5mbGFncyA9IFYsIC51bml0ID0gImhvbGQiIH0sCisgICAgeyAicGFk IiwgIk51bWJlciBvZiBjb2x1bW5zIHRvIHBhZCBhdCB0aGUgZW5kIG9mIHRoZSB2aWRlbyIsIE9G RlNFVChwYWQpLCBBVl9PUFRfVFlQRV9JTlQsCisgICAgICAgIHsgLmk2NCA9IDAgfSwgMCwgSU5U X01BWCwgLmZsYWdzID0gViwgLnVuaXQgPSAicGFkIiB9LAorCisgICAgeyBOVUxMIH0sCit9Owor CitBVkZJTFRFUl9ERUZJTkVfQ0xBU1ModGlsdGFuZHNoaWZ0KTsKKworc3RhdGljIGNvbnN0IEFW RmlsdGVyUGFkIHRpbHRhbmRzaGlmdF9pbnB1dHNbXSA9IHsKKyAgICB7CisgICAgICAgIC5uYW1l ICAgICAgICAgPSAiaW4iLAorICAgICAgICAudHlwZSAgICAgICAgID0gQVZNRURJQV9UWVBFX1ZJ REVPLAorICAgICAgICAuZmlsdGVyX2ZyYW1lID0gZmlsdGVyX2ZyYW1lLAorICAgIH0sCit9Owor CitzdGF0aWMgY29uc3QgQVZGaWx0ZXJQYWQgdGlsdGFuZHNoaWZ0X291dHB1dHNbXSA9IHsKKyAg ICB7CisgICAgICAgIC5uYW1lICAgICAgICAgID0gIm91dCIsCisgICAgICAgIC50eXBlICAgICAg ICAgID0gQVZNRURJQV9UWVBFX1ZJREVPLAorICAgICAgICAuY29uZmlnX3Byb3BzICA9IGNvbmZp Z19wcm9wcywKKyAgICAgICAgLnJlcXVlc3RfZnJhbWUgPSByZXF1ZXN0X2ZyYW1lLAorICAgIH0s Cit9OworCitjb25zdCBBVkZpbHRlciBmZl92Zl90aWx0YW5kc2hpZnQgPSB7CisgICAgLm5hbWUg ICAgICAgICAgPSAidGlsdGFuZHNoaWZ0IiwKKyAgICAuZGVzY3JpcHRpb24gICA9IE5VTExfSUZf Q09ORklHX1NNQUxMKCJHZW5lcmF0ZSBhIHRpbHQtYW5kLXNoaWZ0J2QgdmlkZW8uIiksCisgICAg LnByaXZfc2l6ZSAgICAgPSBzaXplb2YoVGlsdGFuZHNoaWZ0Q29udGV4dCksCisgICAgLnByaXZf Y2xhc3MgICAgPSAmdGlsdGFuZHNoaWZ0X2NsYXNzLAorICAgIC51bmluaXQgICAgICAgID0gdW5p bml0LAorICAgIEZJTFRFUl9JTlBVVFModGlsdGFuZHNoaWZ0X2lucHV0cyksCisgICAgRklMVEVS X09VVFBVVFModGlsdGFuZHNoaWZ0X291dHB1dHMpLAorICAgIEZJTFRFUl9QSVhGTVRTX0FSUkFZ KHBpeF9mbXRzKSwKK307CmRpZmYgLS1naXQgYS90ZXN0cy9mYXRlL2ZpbHRlci12aWRlby5tYWsg Yi90ZXN0cy9mYXRlL2ZpbHRlci12aWRlby5tYWsKaW5kZXggZTRiZGY1OWRiOS4uN2YwNmJhZjE3 MSAxMDA2NDQKLS0tIGEvdGVzdHMvZmF0ZS9maWx0ZXItdmlkZW8ubWFrCisrKyBiL3Rlc3RzL2Zh dGUvZmlsdGVyLXZpZGVvLm1hawpAQCAtNTMyLDYgKzUzMiw4IEBAIGZhdGUtZmlsdGVyLXRodW1i bmFpbDogQ01EID0gdmlkZW9fZmlsdGVyICJzY2FsZSx0aHVtYm5haWw9MTAiCiBGQVRFX0ZJTFRF Ul9WU1lOVEhfVklERU9fRklMVEVSLSQoQ09ORklHX1RJTEVfRklMVEVSKSArPSBmYXRlLWZpbHRl ci10aWxlCiBmYXRlLWZpbHRlci10aWxlOiBDTUQgPSB2aWRlb19maWx0ZXIgInRpbGU9M3gzOm5i X2ZyYW1lcz01OnBhZGRpbmc9NzptYXJnaW49MiIKIAorRkFURV9GSUxURVJfVlNZTlRIX1ZJREVP X0ZJTFRFUi0kKENPTkZJR19USUxUQU5EU0hJRlRfRklMVEVSKSArPSBmYXRlLWZpbHRlci10aWx0 YW5kc2hpZnQKK2ZhdGUtZmlsdGVyLXRpbHRhbmRzaGlmdDogQ01EID0gZnJhbWVjcmMgLWM6diBw Z215dXYgLWkgJChTUkMpIC1mbGFncyArYml0ZXhhY3QgLXZmIHRpbHRhbmRzaGlmdAogCiB0ZXN0 cy9waXhmbXRzLm1hazogVEFHID0gR0VOCiB0ZXN0cy9waXhmbXRzLm1hazogZmZtcGVnJChQUk9H U1NVRikkKEVYRVNVRikgfCB0ZXN0cwpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUvZmlsdGVy LXRpbHRhbmRzaGlmdCBiL3Rlc3RzL3JlZi9mYXRlL2ZpbHRlci10aWx0YW5kc2hpZnQKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYmJiMTcwZTI0NgotLS0gL2Rldi9udWxs CisrKyBiL3Rlc3RzL3JlZi9mYXRlL2ZpbHRlci10aWx0YW5kc2hpZnQKQEAgLTAsMCArMSw1NSBA QAorI3RiIDA6IDEvMjUKKyNtZWRpYV90eXBlIDA6IHZpZGVvCisjY29kZWNfaWQgMDogcmF3dmlk ZW8KKyNkaW1lbnNpb25zIDA6IDM1MngyODgKKyNzYXIgMDogMC8xCiswLCAgICAgICAgICAwLCAg ICAgICAgICAwLCAgICAgICAgMSwgICAxNTIwNjQsIDB4MjUyNTBiNGIKKzAsICAgICAgICAgIDEs ICAgICAgICAgIDEsICAgICAgICAxLCAgIDE1MjA2NCwgMHg4ZDZhZGE3YQorMCwgICAgICAgICAg MiwgICAgICAgICAgMiwgICAgICAgIDEsICAgMTUyMDY0LCAweGMwMzNjM2Q3CiswLCAgICAgICAg ICAzLCAgICAgICAgICAzLCAgICAgICAgMSwgICAxNTIwNjQsIDB4MDM1YjVkMDgKKzAsICAgICAg ICAgIDQsICAgICAgICAgIDQsICAgICAgICAxLCAgIDE1MjA2NCwgMHg1ODQxZTk2OQorMCwgICAg ICAgICAgNSwgICAgICAgICAgNSwgICAgICAgIDEsICAgMTUyMDY0LCAweDc2YjgwOWIyCiswLCAg ICAgICAgICA2LCAgICAgICAgICA2LCAgICAgICAgMSwgICAxNTIwNjQsIDB4MWNmY2Q5YzMKKzAs ICAgICAgICAgIDcsICAgICAgICAgIDcsICAgICAgICAxLCAgIDE1MjA2NCwgMHg2NjNhNDJlYwor MCwgICAgICAgICAgOCwgICAgICAgICAgOCwgICAgICAgIDEsICAgMTUyMDY0LCAweDgyMzBiMTkx CiswLCAgICAgICAgICA5LCAgICAgICAgICA5LCAgICAgICAgMSwgICAxNTIwNjQsIDB4YjlkNjI3 YTMKKzAsICAgICAgICAgMTAsICAgICAgICAgMTAsICAgICAgICAxLCAgIDE1MjA2NCwgMHhiMzc0 OTM3MAorMCwgICAgICAgICAxMSwgICAgICAgICAxMSwgICAgICAgIDEsICAgMTUyMDY0LCAweDU0 OWYyZWFiCiswLCAgICAgICAgIDEyLCAgICAgICAgIDEyLCAgICAgICAgMSwgICAxNTIwNjQsIDB4 MjU3ZDE0NzYKKzAsICAgICAgICAgMTMsICAgICAgICAgMTMsICAgICAgICAxLCAgIDE1MjA2NCwg MHhkNGM3NmFlYQorMCwgICAgICAgICAxNCwgICAgICAgICAxNCwgICAgICAgIDEsICAgMTUyMDY0 LCAweDMxNWM5ZjNkCiswLCAgICAgICAgIDE1LCAgICAgICAgIDE1LCAgICAgICAgMSwgICAxNTIw NjQsIDB4ODBkZmY2ZGYKKzAsICAgICAgICAgMTYsICAgICAgICAgMTYsICAgICAgICAxLCAgIDE1 MjA2NCwgMHhmZjJmODIwNAorMCwgICAgICAgICAxNywgICAgICAgICAxNywgICAgICAgIDEsICAg MTUyMDY0LCAweGRjMTdjMzYxCiswLCAgICAgICAgIDE4LCAgICAgICAgIDE4LCAgICAgICAgMSwg ICAxNTIwNjQsIDB4ZDYyYjQ5OTQKKzAsICAgICAgICAgMTksICAgICAgICAgMTksICAgICAgICAx LCAgIDE1MjA2NCwgMHg0YWJlY2I5MgorMCwgICAgICAgICAyMCwgICAgICAgICAyMCwgICAgICAg IDEsICAgMTUyMDY0LCAweDRmZDEzM2NkCiswLCAgICAgICAgIDIxLCAgICAgICAgIDIxLCAgICAg ICAgMSwgICAxNTIwNjQsIDB4N2RkY2Q5MjAKKzAsICAgICAgICAgMjIsICAgICAgICAgMjIsICAg ICAgICAxLCAgIDE1MjA2NCwgMHg1NmE1MWM4YworMCwgICAgICAgICAyMywgICAgICAgICAyMywg ICAgICAgIDEsICAgMTUyMDY0LCAweDhkNDBjN2JkCiswLCAgICAgICAgIDI0LCAgICAgICAgIDI0 LCAgICAgICAgMSwgICAxNTIwNjQsIDB4YmFjYzg5MjkKKzAsICAgICAgICAgMjUsICAgICAgICAg MjUsICAgICAgICAxLCAgIDE1MjA2NCwgMHg3NDJjY2IxMworMCwgICAgICAgICAyNiwgICAgICAg ICAyNiwgICAgICAgIDEsICAgMTUyMDY0LCAweGI0NGI2YWI0CiswLCAgICAgICAgIDI3LCAgICAg ICAgIDI3LCAgICAgICAgMSwgICAxNTIwNjQsIDB4NTYzNzI4MzgKKzAsICAgICAgICAgMjgsICAg ICAgICAgMjgsICAgICAgICAxLCAgIDE1MjA2NCwgMHhhNjlmYTlkNworMCwgICAgICAgICAyOSwg ICAgICAgICAyOSwgICAgICAgIDEsICAgMTUyMDY0LCAweDQ1Nzg2ODE4CiswLCAgICAgICAgIDMw LCAgICAgICAgIDMwLCAgICAgICAgMSwgICAxNTIwNjQsIDB4MzM2N2M2NTAKKzAsICAgICAgICAg MzEsICAgICAgICAgMzEsICAgICAgICAxLCAgIDE1MjA2NCwgMHhlNThlYTMyNQorMCwgICAgICAg ICAzMiwgICAgICAgICAzMiwgICAgICAgIDEsICAgMTUyMDY0LCAweGQ0ZDhlMWQyCiswLCAgICAg ICAgIDMzLCAgICAgICAgIDMzLCAgICAgICAgMSwgICAxNTIwNjQsIDB4NGM2Nzk4N2IKKzAsICAg ICAgICAgMzQsICAgICAgICAgMzQsICAgICAgICAxLCAgIDE1MjA2NCwgMHhjOWIyNTNjOQorMCwg ICAgICAgICAzNSwgICAgICAgICAzNSwgICAgICAgIDEsICAgMTUyMDY0LCAweDhjZjU4ZmZmCisw LCAgICAgICAgIDM2LCAgICAgICAgIDM2LCAgICAgICAgMSwgICAxNTIwNjQsIDB4ZTYxNTE5YWYK KzAsICAgICAgICAgMzcsICAgICAgICAgMzcsICAgICAgICAxLCAgIDE1MjA2NCwgMHg4ZjMxNGZj YgorMCwgICAgICAgICAzOCwgICAgICAgICAzOCwgICAgICAgIDEsICAgMTUyMDY0LCAweGYzMDdk MGVkCiswLCAgICAgICAgIDM5LCAgICAgICAgIDM5LCAgICAgICAgMSwgICAxNTIwNjQsIDB4MDI1 ZjU2NzAKKzAsICAgICAgICAgNDAsICAgICAgICAgNDAsICAgICAgICAxLCAgIDE1MjA2NCwgMHg5 NWVlZWY5YgorMCwgICAgICAgICA0MSwgICAgICAgICA0MSwgICAgICAgIDEsICAgMTUyMDY0LCAw eDBmMzE2ZGExCiswLCAgICAgICAgIDQyLCAgICAgICAgIDQyLCAgICAgICAgMSwgICAxNTIwNjQs IDB4NjY4YmZhMDUKKzAsICAgICAgICAgNDMsICAgICAgICAgNDMsICAgICAgICAxLCAgIDE1MjA2 NCwgMHhkYjAwNzAwYQorMCwgICAgICAgICA0NCwgICAgICAgICA0NCwgICAgICAgIDEsICAgMTUy MDY0LCAweDdhNjRmNTAyCiswLCAgICAgICAgIDQ1LCAgICAgICAgIDQ1LCAgICAgICAgMSwgICAx NTIwNjQsIDB4ZWYzZTY4MWMKKzAsICAgICAgICAgNDYsICAgICAgICAgNDYsICAgICAgICAxLCAg IDE1MjA2NCwgMHg2MTUyZThkMAorMCwgICAgICAgICA0NywgICAgICAgICA0NywgICAgICAgIDEs ICAgMTUyMDY0LCAweDk1OGI1YTQ4CiswLCAgICAgICAgIDQ4LCAgICAgICAgIDQ4LCAgICAgICAg MSwgICAxNTIwNjQsIDB4NjZmMmQ3ZTcKKzAsICAgICAgICAgNDksICAgICAgICAgNDksICAgICAg ICAxLCAgIDE1MjA2NCwgMHg0N2RhNDlmZAotLSAKMi40My4wCgo= --0000000000006e2483060c920524 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". --0000000000006e2483060c920524--