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 796E545E94 for ; Tue, 12 Dec 2023 00:52:10 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D1E6F68D233; Tue, 12 Dec 2023 02:52:06 +0200 (EET) Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 60DA168D186 for ; Tue, 12 Dec 2023 02:52:00 +0200 (EET) Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-40c31f18274so45568755e9.0 for ; Mon, 11 Dec 2023 16:52:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702342319; x=1702947119; darn=ffmpeg.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=dNG6L9cy5hU064hP6xJ8/CCDaUZ4rSeExJXJq2X8JvA=; b=JJTEUO2sxK/AqLLhKghV+eTpMsQStcjdWRYDGR4p0YY/nqY3kfb7yeleqlwFNYNYXS dx2xLmHz659GI9x3f+34zKuJtr0S8YRuVuTgXpuOyELDBzjPejrhkynZ84AuLb+SOpKZ vxfyM2jdDBx9QKQagnH0AX5bVDoNoqDh/0QkG0Smbrg3H48DmVOnyEs4vf2ihtwoEGaQ dDKjE9TCWKtbCTMxR/w7GaouU3n+H/tIHVqy6yao7TwKQuWz5dllazpA5awnnAuXa8Yc KLNANiW1JfeoLGA3eWFHaE5JuzI9dBBF7VJGiz/ZrLFp0AJ/uhIRStDkEwx5nzRTd6xp Fw1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702342319; x=1702947119; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=dNG6L9cy5hU064hP6xJ8/CCDaUZ4rSeExJXJq2X8JvA=; b=WBU6KeWxPilxlNECvQqRhkA2jz02zrhQpR0gbwGrl5VQZb/m7pXgxtakB0tz9Eo5t0 4WTeuOp01pBIBcWnSAyAZizLruYVVjNyqhk1wtJ6xBSjiVIye2xrhqq5v020Qu1rBE7Q ijS9CG7kMt31nGIxw5C2Eb9Vq3XIZv+29uXRUEixrll3LYU2NHNe5tlWV6Fzn93vfzsk nwmLsaixhquO1flW4inRY9WLI0VhZ3lUHFpi9fczi2hxpycMv4Pui8cFqFvsSc+XM9i4 0J68uJeGaC6PyCntO6YkxVkgFzK7x3jTsQj9UdifA2C8JLOD3nawLmu32PPUA7RbIS5w 3R/A== X-Gm-Message-State: AOJu0YzJXSb96wHtuI48bLIaWlXKpomVFB0Fee24t/JPYLJ5/gLrEqU9 JV/2+jQksHZCZufzYxg7KRD7tFeVgjTwqfARiNl/uhojzVEU9w== X-Google-Smtp-Source: AGHT+IF4+iMexp4h6xWVpylzrZGtE/cOJKnO+IUBftM+MHL8Uh/0SYd3Lg1lAbogE8WyFvi5Ug299Rv08Z5MZ0u3AKI= X-Received: by 2002:a7b:ce88:0:b0:408:434c:dae7 with SMTP id q8-20020a7bce88000000b00408434cdae7mr2504325wmj.2.1702342319248; Mon, 11 Dec 2023 16:51:59 -0800 (PST) MIME-Version: 1.0 From: Vittorio Giovara Date: Mon, 11 Dec 2023 19:51:47 -0500 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="0000000000003a0e04060c4575ad" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [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: --0000000000003a0e04060c4575ad Content-Type: text/plain; charset="UTF-8" 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=copy Please see attached. -- Vittorio --0000000000003a0e04060c4575ad 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_lq1mkw8k0 RnJvbSAwOTcyZDMzN2M3NDA4Yjk0M2I1YTM4ZGJhYWNiODEzZGM1MWM1OTNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaXR0b3JpbyBHaW92YXJhIDx2aXR0b3Jpby5naW92YXJhQGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAxNCBKdWwgMjAxNCAyMToyNjo1NSAtMDQwMApTdWJqZWN0OiBb UEFUQ0hdIEFkZCBuZXcgdmZfdGlsdGFuZHNoaWZ0IGZpbHRlcgoKU2lnbmVkLW9mZi1ieTogVml0 dG9yaW8gR2lvdmFyYSA8dml0dG9yaW8uZ2lvdmFyYUBnbWFpbC5jb20+Ci0tLQogQ2hhbmdlbG9n ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBkb2MvZmlsdGVycy50ZXhpICAgICAg ICAgICAgICAgICAgIHwgIDYzICsrKysrCiBsaWJhdmZpbHRlci9NYWtlZmlsZSAgICAgICAgICAg ICAgIHwgICAxICsKIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyAgICAgICAgICAgfCAgIDEgKwog bGliYXZmaWx0ZXIvdmZfdGlsdGFuZHNoaWZ0LmMgICAgICB8IDM2MCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogdGVzdHMvZmF0ZS9maWx0ZXItdmlkZW8ubWFrICAgICAgICB8ICAgMiAr CiB0ZXN0cy9yZWYvZmF0ZS9maWx0ZXItdGlsdGFuZHNoaWZ0IHwgICAxICsKIDcgZmlsZXMgY2hh bmdlZCwgNDI5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci92 Zl90aWx0YW5kc2hpZnQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3JlZi9mYXRlL2ZpbHRl ci10aWx0YW5kc2hpZnQKCmRpZmYgLS1naXQgYS9DaGFuZ2Vsb2cgYi9DaGFuZ2Vsb2cKaW5kZXgg ZjAwYmMyN2NhNC4uMGNhODY3Y2M0NyAxMDA2NDQKLS0tIGEvQ2hhbmdlbG9nCisrKyBiL0NoYW5n ZWxvZwpAQCAtNyw2ICs3LDcgQEAgdmVyc2lvbiA8bmV4dD46CiAtIEVWQyBlbmNvZGluZyB1c2lu ZyBleHRlcm5hbCBsaWJyYXJ5IGxpYnhldmUKIC0gUU9BIGRlY29kZXIgYW5kIGRlbXV4ZXIKIC0g YWFwIGZpbHRlcgorLSB0aWx0YW5kc2hpZnQgZmlsdGVyCiAKIHZlcnNpb24gNi4xOgogLSBsaWJh cmliY2FwdGlvbiBkZWNvZGVyCmRpZmYgLS1naXQgYS9kb2MvZmlsdGVycy50ZXhpIGIvZG9jL2Zp bHRlcnMudGV4aQppbmRleCA2ZDAwYmEyYzNmLi4xZDE2MzRiZjA2IDEwMDY0NAotLS0gYS9kb2Mv ZmlsdGVycy50ZXhpCisrKyBiL2RvYy9maWx0ZXJzLnRleGkKQEAgLTIzMTg2LDYgKzIzMTg2LDY5 IEBAIHRpbGU9M3gyOm5iX2ZyYW1lcz01OnBhZGRpbmc9NzptYXJnaW49MgogQGVuZCBleGFtcGxl CiBAZW5kIGl0ZW1pemUKIAorQHNlY3Rpb24gdGlsdGFuZHNoaWZ0CisKK1doYXQgaGFwcGVucyB3 aGVuIHlvdSBpbnZlcnQgdGltZSBhbmQgc3BhY2U/CisKK05vcm1hbGx5IGEgdmlkZW8gaXMgY29t cG9zZWQgb2Ygc2V2ZXJhbCBmcmFtZXMgdGhhdCByZXByZXNlbnQgYSBkaWZmZXJlbnQKK2luc3Rh bnQgb2YgdGltZSBhbmQgc2hvd3MgYSBzY2VuY2UgdGhhdCBldm9sdmVzIGluIHRoZSBzcGFjZSBj YXB0dXJlZCBieSB0aGUKK2ZyYW1lLiBUaGlzIGZpbHRlciBpcyB0aGUgYW50aXBvZGUgb2YgdGhh dCBjb25jZXB0LCB0YWtpbmcgaW5zcGlyYXRpb24gYnkKK3RpbHQgYW5kIHNoaWZ0IHBob3RvZ3Jh cGh5LgorCitBIGZpbHRlcmVkIGZyYW1lIGNvbnRhaW5zIHRoZSB3aG9sZSB0aW1lbGluZSBvZiBl dmVudHMgY29tcG9zaW5nIHRoZSBzZXF1ZW5jZSwKK2FuZCB0aGlzIGlzIG9idGFpbmVkIGJ5IHBs YWNpbmcgYSBzbGljZSBvZiBwaXhlbHMgZnJvbSBlYWNoIGZyYW1lIGludG8gYSBzaW5nbGUKK29u ZS4gSG93ZXZlciwgc2luY2UgdGhlcmUgYXJlIG5vIGluZmluaXRlLXdpZHRoIGZyYW1lcywgdGhp cyBpcyBkb25lIHVwIHRoZQord2lkdGggb2YgdGhlIGlucHV0IGZyYW1lLCBhbmQgYSB2aWRlbyBp cyByZWNvbXBvc2VkIGJ5IHNoaWZ0aW5nIGF3YXkgb25lCitjb2x1bW4gZm9yIGVhY2ggc3Vic2Vx dWVudCBmcmFtZS4gSW4gb3JkZXIgdG8gbWFwIHNwYWNlIHRvIHRpbWUsIHRoZSBmaWx0ZXIKK3Rp bHRzIGVhY2ggaW5wdXQgZnJhbWUgYXMgd2VsbCwgc28gdGhhdCBtb3Rpb24gaXMgcHJlc2V2ZWQu IFRoaXMgaXMgYWNjb21wbGlzaGVkCitieSBwcm9ncmVzc2l2ZWx5IHNlbGVjdGluZyBhIGRpZmZl cmVudCBjb2x1bW4gZnJvbSBlYWNoIGlucHV0IGZyYW1lLgorCitUaGUgZW5kIHJlc3VsdCBpcyBh IHNvcnQgb2YgaW52ZXJ0ZWQgcGFycmFsYXgsIHNvIHRoYXQgZmFyIGF3YXkgb2JqZWN0cyBtb3Zl CittdWNoIGZhc3RlciB0aGF0IHRoZSBvbmVzIGluIHRoZSBmcm9udC4gVGhlIGlkZWFsIGNvbmRp dGlvbnMgZm9yIHRoaXMgdmlkZW8KK2VmZmVjdCBhcmUgd2hlbiB0aGVyZSBpcyBlaXRoZXIgdmVy eSBsaXR0bGUgbW90aW9uIGFuZCB0aGUgYmFja2dyb3VkIGlzIHN0YXRpYywKK29yIHdoZW4gdGhl cmUgaXMgYSBsb3Qgb2YgbW90aW9uIGFuZCBhIHZlcnkgd2lkZSBkZXB0aCBvZiBmaWVsZCAoZWcu IHdpZGUKK3Bhbm9yYW1hLCB3aGlsZSBtb3Zpbmcgb24gYSB0cmFpbikuCisKK1RoZSBmaWx0ZXIg YWNjZXB0cyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6CisKK0B0YWJsZSBAb3B0aW9uCisKK0Bp dGVtIHRpbHQKK1RpbHQgdmlkZW8gd2hpbGUgc2hpZnRpbmcgKGRlZmF1bHQpLiBXaGVuIHVuc2V0 LCB2aWRlbyB3aWxsIGJlIHNsaWRpbmcgYQorc3RhdGljIGltYWdlLCBjb21wb3NlZCBvZiB0aGUg Zmlyc3QgY29sdW1uIG9mIGVhY2ggZnJhbWUuCisKK0BpdGVtIHN0YXJ0CitXaGF0IHRvIGRvIGF0 IHRoZSBzdGFydCBvZiBmaWx0ZXJpbmcgKHNlZSBiZWxvdykuCisKK0BpdGVtIGVuZAorV2hhdCB0 byBkbyBhdCB0aGUgZW5kIG9mIGZpbHRlcmluZyAoc2VlIGJlbG93KS4KKworQGl0ZW0gaG9sZAor SG93IG1hbnkgY29sdW1ucyBzaG91bGQgcGFzcyB0aHJvdWdoIGJlZm9yZSBzdGFydCBvZiBmaWx0 ZXJpbmcuCisKK0BpdGVtIHBhZAorSG93IG1hbnkgY29sdW1ucyBzaG91bGQgYmUgaW5zZXJ0ZWQg YmVmb3JlIGVuZCBvZiBmaWx0ZXJpbmcuCisKK0BlbmQgdGFibGUKKworTm9ybWFsbHkgdGhlIGZp bHRlciBzaGlmdHMgYW5kIHRpbHMgZnJvbSB0aGUgdmVyeSBmaXJzdCBmcmFtZSwgYW5kIHN0b3Bz IHdoZW4KK3RoZSBsYXN0IG9uZSBpcyByZWNlaXZlZC4gSG93ZXZlciwgYmVmb3JlIGZpbHRlcmlu ZyBzdGFydHMsIG5vcm1hbCB2aWRlbyBtYXkKK2JlIHByZXNldmVkLCBzbyB0aGF0IHRoZSBlZmZl Y3QgaXMgc2xvd2x5IHNoaWZ0ZWQgaW4gaXRzIHBsYWNlLiBTaW1pbGFybHksCit0aGUgbGFzdCB2 aWRlbyBmcmFtZSBtYXkgYmUgcmVjb25zdHJ1Y3RlZCBhdCB0aGUgZW5kLiBBbHRlcm5hdGl2ZWx5 IGl0IGlzCitwb3NzaWJsZSB0byBqdXN0IHN0YXJ0IGFuZCBlbmQgd2l0aCBibGFjay4KKworQHRh YmxlIEBzYW1wCitAaXRlbSBub25lCitGaWx0ZXJpbmcgaXMgc3RhcnRzIGltbWVkaWF0ZWx5IGFu ZCBlbmRzIHdoZW4gdGhlIGxhc3QgZnJhbWUgaXMgcmVjZWl2ZWQuCisKK0BpdGVtIGZyYW1lCitU aGUgZmlyc3QgZnJhbWVzIG9yIHRoZSB2ZXJ5IGxhc3QgZnJhbWUgYXJlIGtlcHQgaW50YWN0IGR1 cmluZyBwcm9jZXNzaW5nLgorCitAaXRlbSBibGFjaworQmxhY2sgaXMgcGFkZGVkIGF0IHRoZSBi ZWdpbm5pbmcgb3IgYXQgdGhlIGVuZCBvZiBmaWx0ZXJpbmcuCisKK0BlbmQgdGFibGUKKwogQHNl Y3Rpb24gdGludGVybGFjZQogCiBQZXJmb3JtIHZhcmlvdXMgdHlwZXMgb2YgdGVtcG9yYWwgZmll bGQgaW50ZXJsYWNpbmcuCmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9NYWtlZmlsZSBiL2xpYmF2 ZmlsdGVyL01ha2VmaWxlCmluZGV4IDYzNzI1ZjkxYjQuLmFmYzdiYzE1NjYgMTAwNjQ0Ci0tLSBh L2xpYmF2ZmlsdGVyL01ha2VmaWxlCisrKyBiL2xpYmF2ZmlsdGVyL01ha2VmaWxlCkBAIC01MTQs NiArNTE0LDcgQEAgT0JKUy0kKENPTkZJR19USFVNQk5BSUxfRklMVEVSKSAgICAgICAgICAgICAg Kz0gdmZfdGh1bWJuYWlsLm8KIE9CSlMtJChDT05GSUdfVEhVTUJOQUlMX0NVREFfRklMVEVSKSAg ICAgICAgICs9IHZmX3RodW1ibmFpbF9jdWRhLm8gdmZfdGh1bWJuYWlsX2N1ZGEucHR4Lm8gXAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VkYS9sb2Fk X2hlbHBlci5vCiBPQkpTLSQoQ09ORklHX1RJTEVfRklMVEVSKSAgICAgICAgICAgICAgICAgICAr PSB2Zl90aWxlLm8KK09CSlMtJChDT05GSUdfVElMVEFORFNISUZUX0ZJTFRFUikgICAgICAgICAg ICs9IHZmX3RpbHRhbmRzaGlmdC5vCiBPQkpTLSQoQ09ORklHX1RJTlRFUkxBQ0VfRklMVEVSKSAg ICAgICAgICAgICArPSB2Zl90aW50ZXJsYWNlLm8KIE9CSlMtJChDT05GSUdfVExVVDJfRklMVEVS KSAgICAgICAgICAgICAgICAgICs9IHZmX2x1dDIubyBmcmFtZXN5bmMubwogT0JKUy0kKENPTkZJ R19UTUVESUFOX0ZJTFRFUikgICAgICAgICAgICAgICAgKz0gdmZfeG1lZGlhbi5vIGZyYW1lc3lu Yy5vCmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMgYi9saWJhdmZpbHRlci9h bGxmaWx0ZXJzLmMKaW5kZXggZWQ3YzMyYmU5NC4uMTM1Nzk0YmEzNiAxMDA2NDQKLS0tIGEvbGli YXZmaWx0ZXIvYWxsZmlsdGVycy5jCisrKyBiL2xpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYwpAQCAt NDgzLDYgKzQ4Myw3IEBAIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl90aHJlc2hvbGQ7CiBl eHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfdGh1bWJuYWlsOwogZXh0ZXJuIGNvbnN0IEFWRmls dGVyIGZmX3ZmX3RodW1ibmFpbF9jdWRhOwogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX3Rp bGU7CitleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfdGlsdGFuZHNoaWZ0OwogZXh0ZXJuIGNv bnN0IEFWRmlsdGVyIGZmX3ZmX3RpbnRlcmxhY2U7CiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZf dmZfdGx1dDI7CiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfdG1lZGlhbjsKZGlmZiAtLWdp dCBhL2xpYmF2ZmlsdGVyL3ZmX3RpbHRhbmRzaGlmdC5jIGIvbGliYXZmaWx0ZXIvdmZfdGlsdGFu ZHNoaWZ0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMjQzMTA1YTll OAotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2ZmlsdGVyL3ZmX3RpbHRhbmRzaGlmdC5jCkBAIC0w LDAgKzEsMzYwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE0IFZpdHRvcmlvIEdpb3ZhcmEK KyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy CisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj CisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo IEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworLyoqCisgKiBAZmlsZSB2 Zl90aWx0YW5kc2hpZnQuYworICogU2ltcGxlIHRpbWUgYW5kIHNwYWNlIGludmVydGVyLgorICov CisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImxpYmF2dXRpbC9jb21tb24uaCIK KyNpbmNsdWRlICJsaWJhdnV0aWwvaW1ndXRpbHMuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0 LmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwv cmF0aW9uYWwuaCIKKworI2luY2x1ZGUgImF2ZmlsdGVyLmgiCisjaW5jbHVkZSAiZm9ybWF0cy5o IgorI2luY2x1ZGUgImludGVybmFsLmgiCisjaW5jbHVkZSAidmlkZW8uaCIKKworI2RlZmluZSBU SUxUX05PTkUgIC0xCisjZGVmaW5lIFRJTFRfRlJBTUUgIDAKKyNkZWZpbmUgVElMVF9CTEFDSyAg MQorCit0eXBlZGVmIHN0cnVjdCBGcmFtZUxpc3QgeworICAgIEFWRnJhbWUgKmZyYW1lOworICAg IHN0cnVjdCBGcmFtZUxpc3QgKm5leHQ7Cit9IEZyYW1lTGlzdDsKKwordHlwZWRlZiBzdHJ1Y3Qg VGlsdGFuZHNoaWZ0Q29udGV4dCB7CisgICAgY29uc3QgQVZDbGFzcyAqY2xhc3M7CisKKyAgICAv KiBzZXQgd2hlbiBhbGwgaW5wdXQgZnJhbWVzIGhhdmUgYmVlbiBwcm9jZXNzZWQgYW5kIHdlIGhh dmUgdG8KKyAgICAgKiBlbXB0eSBidWZmZXJzLCBwYWQgYW5kIHRoZW4gcmV0dXJuICovCisgICAg aW50IGVvZl9yZWN2OworCisgICAgLyogbGl2ZSBvciBzdGF0aWMgc2xpZGluZyAqLworICAgIGlu dCB0aWx0OworCisgICAgLyogaW5pdGlhbCBvciBmaW5hbCBhY3Rpb25zIHRvIHBlcmZvcm0gKHBh ZC9ob2xkIGEgZnJhbWUvYmxhY2svbm90aGluZykgKi8KKyAgICBpbnQgc3RhcnQ7CisgICAgaW50 IGVuZDsKKworICAgIC8qIGNvbHVtbnMgdG8gaG9sZCBvciBwYWQgYXQgdGhlIGJlZ2lubmluZyBv ciBhdCB0aGUgZW5kIChyZXNwZWN0aXZlbHkpICovCisgICAgaW50IGhvbGQ7CisgICAgaW50IHBh ZDsKKworICAgIC8qIGJ1ZmZlcnMgZm9yIGJsYWNrIGNvbHVtbnMgKi8KKyAgICB1aW50OF90ICpi bGFja19idWZmZXJzWzRdOworICAgIGludCBibGFja19saW5lc2l6ZXNbNF07CisKKyAgICAvKiBs aXN0IGNvbnRhaW5pbmcgYWxsIGlucHV0IGZyYW1lcyAqLworICAgIGludCBsaXN0X3NpemU7Cisg ICAgRnJhbWVMaXN0ICppbnB1dDsKKyAgICBGcmFtZUxpc3QgKnByZXY7CisKKyAgICBjb25zdCBB VlBpeEZtdERlc2NyaXB0b3IgKmRlc2M7Cit9IFRpbHRhbmRzaGlmdENvbnRleHQ7CisKK3N0YXRp YyBpbnQgbGlzdF9hZGRfZnJhbWUoVGlsdGFuZHNoaWZ0Q29udGV4dCAqcywgQVZGcmFtZSAqZnJh bWUpCit7CisgICAgRnJhbWVMaXN0ICplbGVtZW50ID0gYXZfbWFsbG9jeihzaXplb2YoRnJhbWVM aXN0KSk7CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0p OworCisgICAgZWxlbWVudC0+ZnJhbWUgPSBmcmFtZTsKKworICAgIGlmIChzLT5pbnB1dCA9PSBO VUxMKSB7CisgICAgICAgIHMtPmlucHV0ID0gZWxlbWVudDsKKyAgICB9IGVsc2UgeworICAgICAg ICBGcmFtZUxpc3QgKmhlYWQgPSBzLT5pbnB1dDsKKyAgICAgICAgd2hpbGUgKGhlYWQtPm5leHQp CisgICAgICAgICAgICBoZWFkID0gaGVhZC0+bmV4dDsKKyAgICAgICAgaGVhZC0+bmV4dCA9IGVs ZW1lbnQ7CisgICAgfQorCisgICAgcy0+bGlzdF9zaXplKys7CisgICAgcmV0dXJuIDA7Cit9CisK K3N0YXRpYyB2b2lkIGxpc3RfcmVtb3ZlX2hlYWQoVGlsdGFuZHNoaWZ0Q29udGV4dCAqcykKK3sK KyAgICBGcmFtZUxpc3QgKmhlYWQgPSBzLT5pbnB1dDsKKworICAgIGlmIChoZWFkKSB7CisgICAg ICAgIGF2X2ZyYW1lX2ZyZWUoJmhlYWQtPmZyYW1lKTsKKyAgICAgICAgcy0+aW5wdXQgPSBoZWFk LT5uZXh0OworICAgICAgICBhdl9mcmVlcCgmaGVhZCk7CisgICAgfQorCisgICAgcy0+bGlzdF9z aXplLS07Cit9CisKK3N0YXRpYyBjb25zdCBlbnVtIEFWUGl4ZWxGb3JtYXQgZm9ybWF0c19zdXBw b3J0ZWRbXSA9IHsKKyAgICBBVl9QSVhfRk1UX1lVVjQyMFAsIEFWX1BJWF9GTVRfWVVWNDIyUCwg QVZfUElYX0ZNVF9ZVVY0NDRQLAorICAgIEFWX1BJWF9GTVRfWVVWNDEwUCwKKyAgICBBVl9QSVhf Rk1UX1lVVko0MjBQLCBBVl9QSVhfRk1UX1lVVko0MjJQLCBBVl9QSVhfRk1UX1lVVko0NDRQLAor ICAgIEFWX1BJWF9GTVRfWVVWSjQ0MFAsCisgICAgQVZfUElYX0ZNVF9OT05FCit9OworCitzdGF0 aWMgaW50IHF1ZXJ5X2Zvcm1hdHMoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCit7CisgICAgcmV0dXJu IGZmX3NldF9jb21tb25fZm9ybWF0cyhjdHgsIGZmX21ha2VfZm9ybWF0X2xpc3QoZm9ybWF0c19z dXBwb3J0ZWQpKTsKK30KKworc3RhdGljIGF2X2NvbGQgdm9pZCB1bmluaXQoQVZGaWx0ZXJDb250 ZXh0ICpjdHgpCit7CisgICAgVGlsdGFuZHNoaWZ0Q29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKyAg ICB3aGlsZSAocy0+aW5wdXQpCisgICAgICAgIGxpc3RfcmVtb3ZlX2hlYWQocyk7CisgICAgYXZf ZnJlZXAoJnMtPmJsYWNrX2J1ZmZlcnMpOworfQorCitzdGF0aWMgaW50IGNvbmZpZ19wcm9wcyhB VkZpbHRlckxpbmsgKm91dGxpbmspCit7CisgICAgQVZGaWx0ZXJDb250ZXh0ICpjdHggPSBvdXRs aW5rLT5zcmM7CisgICAgVGlsdGFuZHNoaWZ0Q29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKworICAg IG91dGxpbmstPncgPSBjdHgtPmlucHV0c1swXS0+dzsKKyAgICBvdXRsaW5rLT5oID0gY3R4LT5p bnB1dHNbMF0tPmg7CisgICAgb3V0bGluay0+Zm9ybWF0ID0gY3R4LT5pbnB1dHNbMF0tPmZvcm1h dDsKKworICAgIC8vIHdoZW4gd2UgaGF2ZSB0byBwYWQgYmxhY2sgb3IgYSBmcmFtZSBhdCB0aGUg c3RhcnQsIHNraXAgbmF2aWdhdGluZworICAgIC8vIHRoZSBsaXN0IGFuZCB1c2UgZWl0aGVyIHRo ZSBmcmFtZSBvciBibGFjayBmb3IgdGhlIHJlcXVlc3RlZCB2YWx1ZQorICAgIGlmIChzLT5zdGFy dCAhPSBUSUxUX05PTkUgJiYgIXMtPmhvbGQpCisgICAgICAgIHMtPmhvbGQgPSBvdXRsaW5rLT53 OworCisgICAgLy8gSW5pdCBibGFjayBidWZmZXJzIGlmIHdlIHBhZCB3aXRoIGJsYWNrIGF0IHRo ZSBzdGFydCBvciBhdCB0aGUgZW5kLgorICAgIC8vIEZvciB0aGUgZW5kLCB3ZSBhbHdheXMgaGF2 ZSB0byBpbml0IG9uIE5PTkUgYW5kIEJMQUNLIGJlY2F1c2Ugd2UgbmV2ZXIKKyAgICAvLyBrbm93 IGlmIHRoZXJlIGFyZSBnb2luZyB0byBiZSBlbm91Z2ggaW5wdXQgZnJhbWVzIHRvIGZpbGwgYW4g b3V0cHV0IG9uZS4KKyAgICBpZiAocy0+c3RhcnQgPT0gVElMVF9CTEFDSyB8fCBzLT5lbmQgIT0g VElMVF9GUkFNRSkgeworICAgICAgICBpbnQgaSwgaiwgcmV0OworICAgICAgICB1aW50OF90IGJs YWNrX2RhdGFbXSA9IHsgMHgxMCwgMHg4MCwgMHg4MCwgMHgxMCB9OworICAgICAgICBjb25zdCBB VlBpeEZtdERlc2NyaXB0b3IgKmRlc2MgPSBhdl9waXhfZm10X2Rlc2NfZ2V0KG91dGxpbmstPmZv cm1hdCk7CisgICAgICAgIGlmICghZGVzYykKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0JV RzsKKworICAgICAgICBpZiAob3V0bGluay0+Zm9ybWF0ID09IEFWX1BJWF9GTVRfWVVWSjQyMFAg fHwKKyAgICAgICAgICAgIG91dGxpbmstPmZvcm1hdCA9PSBBVl9QSVhfRk1UX1lVVko0MjJQIHx8 CisgICAgICAgICAgICBvdXRsaW5rLT5mb3JtYXQgPT0gQVZfUElYX0ZNVF9ZVVZKNDQ0UCB8fAor ICAgICAgICAgICAgb3V0bGluay0+Zm9ybWF0ID09IEFWX1BJWF9GTVRfWVVWSjQ0MFApCisgICAg ICAgICAgICBibGFja19kYXRhWzBdID0gYmxhY2tfZGF0YVszXSA9IDA7CisKKyAgICAgICAgcmV0 ID0gYXZfaW1hZ2VfYWxsb2Mocy0+YmxhY2tfYnVmZmVycywgcy0+YmxhY2tfbGluZXNpemVzLCAx LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRsaW5rLT5oLCBvdXRsaW5rLT5mb3Jt YXQsIDEpOworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisK KyAgICAgICAgZm9yIChpID0gMDsgaSA8IEZGTUlOKGRlc2MtPm5iX2NvbXBvbmVudHMsIDQpOyBp KyspCisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgKCFpID8gb3V0bGluay0+aAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6IC0oKC1vdXRsaW5rLT5oKSA+PiBkZXNjLT5sb2cy X2Nocm9tYV9oKSk7IGorKykKKyAgICAgICAgICAgICAgICBtZW1zZXQocy0+YmxhY2tfYnVmZmVy c1tpXSArIGogKiBzLT5ibGFja19saW5lc2l6ZXNbaV0sCisgICAgICAgICAgICAgICAgICAgICAg IGJsYWNrX2RhdGFbaV0sIDEpOworCisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19WRVJCT1NF LCAiUGFkZGluZyBidWZmZXJzIGluaXRpYWxpemVkLlxuIik7CisgICAgfQorCisgICAgcy0+ZGVz YyA9IGF2X3BpeF9mbXRfZGVzY19nZXQob3V0bGluay0+Zm9ybWF0KTsKKyAgICBpZiAoIXMtPmRl c2MpCisgICAgICAgIHJldHVybiBBVkVSUk9SX0JVRzsKKworICAgIHJldHVybiAwOworfQorCisv LyBUaGlzIGZ1bmN0aW9uIGp1c3QgcG9sbHMgZm9yIG5ldyBmcmFtZXMgYW5kIHF1ZXVlcyB0aGVt IG9uIGEgbGlzdAorc3RhdGljIGludCBmaWx0ZXJfZnJhbWUoQVZGaWx0ZXJMaW5rICppbmxpbmss IEFWRnJhbWUgKmZyYW1lKQoreworICAgIFRpbHRhbmRzaGlmdENvbnRleHQgKnMgPSBpbmxpbmst PmRzdC0+cHJpdjsKKyAgICByZXR1cm4gbGlzdF9hZGRfZnJhbWUocywgZnJhbWUpOworfQorCitz dGF0aWMgdm9pZCBjb3B5X2NvbHVtbihBVkZpbHRlckxpbmsgKm91dGxpbmssCisgICAgICAgICAg ICAgICAgICAgICAgICB1aW50OF90ICpkc3RfZGF0YVs0XSwgaW50IGRzdF9saW5lc2l6ZXNbNF0s CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmNfZGF0YVs0XSwgY29u c3QgaW50IHNyY19saW5lc2l6ZXNbNF0sCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmNv bCwgaW50IHRpbHQpCit7CisgICAgQVZGaWx0ZXJDb250ZXh0ICpjdHggPSBvdXRsaW5rLT5zcmM7 CisgICAgVGlsdGFuZHNoaWZ0Q29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKyAgICB1aW50OF90ICpk c3RbNF07CisgICAgY29uc3QgdWludDhfdCAqc3JjWzRdOworCisgICAgZHN0WzBdID0gZHN0X2Rh dGFbMF0gKyBuY29sOworICAgIGRzdFsxXSA9IGRzdF9kYXRhWzFdICsgKG5jb2wgPj4gcy0+ZGVz Yy0+bG9nMl9jaHJvbWFfaCk7CisgICAgZHN0WzJdID0gZHN0X2RhdGFbMl0gKyAobmNvbCA+PiBz LT5kZXNjLT5sb2cyX2Nocm9tYV9oKTsKKworICAgIGlmICghdGlsdCkKKyAgICAgICAgbmNvbCA9 IDA7CisgICAgc3JjWzBdID0gc3JjX2RhdGFbMF0gKyBuY29sOworICAgIHNyY1sxXSA9IHNyY19k YXRhWzFdICsgKG5jb2wgPj4gcy0+ZGVzYy0+bG9nMl9jaHJvbWFfaCk7CisgICAgc3JjWzJdID0g c3JjX2RhdGFbMl0gKyAobmNvbCA+PiBzLT5kZXNjLT5sb2cyX2Nocm9tYV9oKTsKKworICAgIGF2 X2ltYWdlX2NvcHkoZHN0LCBkc3RfbGluZXNpemVzLCBzcmMsIHNyY19saW5lc2l6ZXMsIG91dGxp bmstPmZvcm1hdCwgMSwgb3V0bGluay0+aCk7Cit9CisKK3N0YXRpYyBpbnQgcmVxdWVzdF9mcmFt ZShBVkZpbHRlckxpbmsgKm91dGxpbmspCit7CisgICAgQVZGaWx0ZXJDb250ZXh0ICpjdHggPSBv dXRsaW5rLT5zcmM7CisgICAgVGlsdGFuZHNoaWZ0Q29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKyAg ICBGcmFtZUxpc3QgKmhlYWQgPSBzLT5pbnB1dDsKKyAgICBpbnQgcmV0LCBuY29sOworICAgIEFW RnJhbWUgKmRzdDsKKworICAgIC8vIHNpZ25hbCBqb2IgZmluaXNoZWQgd2hlbiBsaXN0IGlzIGVt cHR5IG9yIHdoZW4gcGFkZGluZyBpcyBlaXRoZXIKKyAgICAvLyBsaW1pdGVkIG9yIGRpc2FibGVk IGFuZCBlb2Ygd2FzIHJlY2VpdmVkCisgICAgaWYgKChzLT5saXN0X3NpemUgPD0gMCB8fCBzLT5s aXN0X3NpemUgPT0gb3V0bGluay0+dyAtIHMtPnBhZCB8fCBzLT5lbmQgPT0gVElMVF9OT05FKSAm JiBzLT5lb2ZfcmVjdikgeworICAgICAgICByZXR1cm4gQVZFUlJPUl9FT0Y7CisgICAgfQorCisg ICAgcmV0ID0gZmZfcmVxdWVzdF9mcmFtZShjdHgtPmlucHV0c1swXSk7CisgICAgaWYgKHJldCA9 PSBBVkVSUk9SX0VPRikgeworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfVkVSQk9TRSwgIkxh c3QgZnJhbWUsIGVtcHR5aW5nIGJ1ZmZlcnMgKCVkLyVkKS5cbiIsIHMtPmxpc3Rfc2l6ZSwgb3V0 bGluay0+dyAtIHMtPnBhZCk7CisgICAgICAgIHMtPmVvZl9yZWN2ID0gMTsKKyAgICB9IGVsc2Ug aWYgKHJldCA8IDApIHsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisgICAgCisgICAgLy8g bG9hZCB1cCBlbm91Z2ggZnJhbWVzIHRvIGZpbGwgYSBmcmFtZSBhbmQga2VlcCB0aGUgcXVldWUg ZmlsbGVkIG9uIHN1YnNlcXVlbnQKKyAgICAvLyBjYWxscywgdW50aWwgd2UgcmVjZWl2ZSBFT0Ys IGFuZCB0aGVuIHdlIGVpdGhlciBwYWQgb3IgZW5kCisgICAgaWYgKCFzLT5lb2ZfcmVjdiAmJiBz LT5saXN0X3NpemUgPCBvdXRsaW5rLT53IC0gcy0+cGFkKSB7CisgICAgICAgIGF2X2xvZyhjdHgs IEFWX0xPR19WRVJCT1NFLCAiTm90IGVub3VnaCBmcmFtZXMgaW4gdGhlIGxpc3QgKCVkLyVkKSwg cG9sbGluZyBmb3IgbW9yZS5cbiIsCisgICAgICAgICAgICAgICBzLT5saXN0X3NpemUsIG91dGxp bmstPncgLSBzLT5wYWQpOworICAgICAgICByZXR1cm4gQVZFUlJPUihFQUdBSU4pOworICAgIH0K KworICAgIC8vIG5ldyBmcmFtZQorICAgIG5jb2wgPSAwOworICAgIGRzdCA9IGZmX2dldF92aWRl b19idWZmZXIob3V0bGluaywgb3V0bGluay0+dywgb3V0bGluay0+aCk7CisgICAgaWYgKCFkc3Qp CisgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICAvLyBpbiBjYXNlIHdlIGhh dmUgdG8gZG8gYW55IGluaXRpYWwgYmxhY2sgcGFkZGluZworICAgIGlmIChzLT5zdGFydCA9PSBU SUxUX0JMQUNLKSB7CisgICAgICAgIGZvciAoIDsgbmNvbCA8IHMtPmhvbGQ7IG5jb2wrKykKKyAg ICAgICAgICAgIGNvcHlfY29sdW1uKG91dGxpbmssIGRzdC0+ZGF0YSwgZHN0LT5saW5lc2l6ZSwK KyAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1aW50OF90ICoqKXMtPmJsYWNrX2J1ZmZl cnMsIHMtPmJsYWNrX2xpbmVzaXplcywKKyAgICAgICAgICAgICAgICAgICAgICAgIG5jb2wsIDAp OworICAgIH0KKworICAgIC8vIGNvcHkgYSBjb2x1bW4gZnJvbSBlYWNoIGlucHV0IGZyYW1lCisg ICAgZm9yICggOyBuY29sIDwgcy0+bGlzdF9zaXplOyBuY29sKyspIHsKKyAgICAgICAgQVZGcmFt ZSAqc3JjID0gaGVhZC0+ZnJhbWU7CisKKyAgICAgICAgY29weV9jb2x1bW4ob3V0bGluaywgZHN0 LT5kYXRhLCBkc3QtPmxpbmVzaXplLAorICAgICAgICAgICAgICAgICAgICAoY29uc3QgdWludDhf dCAqKilzcmMtPmRhdGEsIHNyYy0+bGluZXNpemUsCisgICAgICAgICAgICAgICAgICAgIG5jb2ws IHMtPnRpbHQpOworCisgICAgICAgIC8vIGtlZXAgdHJhY2sgb2YgdGhlIGxhc3Qga25vd24gZnJh bWUgaW4gY2FzZSB3ZSBuZWVkIGl0IGJlbG93CisgICAgICAgIHMtPnByZXYgPSBoZWFkOworICAg ICAgICAvLyBhZHZhbmNlIHRvIHRoZSBuZXh0IGZyYW1lIHVubGVzcyB3ZSBoYXZlIHRvIGhvbGQg aXQKKyAgICAgICAgaWYgKHMtPmhvbGQgPD0gbmNvbCkKKyAgICAgICAgICAgIGhlYWQgPSBoZWFk LT5uZXh0OworICAgIH0KKworICAgIC8vIHBhZCBhbnkgcmVtYWluaW5nIHNwYWNlIHdpdGggYmxh Y2sgb3IgbGFzdCBmcmFtZQorICAgIGlmIChzLT5lbmQgPT0gVElMVF9GUkFNRSkgeworICAgICAg ICBmb3IgKCA7IG5jb2wgPCBvdXRsaW5rLT53OyBuY29sKyspCisgICAgICAgICAgICBjb3B5X2Nv bHVtbihvdXRsaW5rLCBkc3QtPmRhdGEsIGRzdC0+bGluZXNpemUsCisgICAgICAgICAgICAgICAg ICAgICAgICAoY29uc3QgdWludDhfdCAqKilzLT5wcmV2LT5mcmFtZS0+ZGF0YSwKKyAgICAgICAg ICAgICAgICAgICAgICAgIHMtPnByZXYtPmZyYW1lLT5saW5lc2l6ZSwgbmNvbCwgMSk7CisgICAg fSBlbHNlIHsgLy8gVElMVF9CTEFDSyBhbmQgVElMVF9OT05FCisgICAgICAgIGZvciAoIDsgbmNv bCA8IG91dGxpbmstPnc7IG5jb2wrKykKKyAgICAgICAgICAgIGNvcHlfY29sdW1uKG91dGxpbmss IGRzdC0+ZGF0YSwgZHN0LT5saW5lc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChjb25z dCB1aW50OF90ICoqKXMtPmJsYWNrX2J1ZmZlcnMsIHMtPmJsYWNrX2xpbmVzaXplcywKKyAgICAg ICAgICAgICAgICAgICAgICAgIG5jb2wsIDApOworICAgIH0KKworICAgIC8vIHNldCBjb3JyZWN0 IHRpbWVzdGFtcHMgYW5kIHByb3BzIGFzIGxvbmcgYXMgdGhlcmUgaXMgcHJvcGVyIGlucHV0Cisg ICAgcmV0ID0gYXZfZnJhbWVfY29weV9wcm9wcyhkc3QsIHMtPmlucHV0LT5mcmFtZSk7CisgICAg aWYgKHJldCA8IDApCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICAvLyBkaXNjYXJkIGZyYW1l IGF0IHRoZSB0b3Agb2YgdGhlIGxpc3Qgc2luY2UgaXQgaGFzIGJlZW4gZnVsbHkgcHJvY2Vzc2Vk CisgICAgbGlzdF9yZW1vdmVfaGVhZChzKTsKKyAgICAvLyBhbmQgaXQgaXMgc2FmZSB0byByZWR1 Y2UgdGhlIGhvbGQgdmFsdWUgKGV2ZW4gaWYgdW51c2VkKQorICAgIHMtPmhvbGQtLTsKKworICAg IC8vIG91dHB1dAorICAgIHJldHVybiBmZl9maWx0ZXJfZnJhbWUob3V0bGluaywgZHN0KTsKK30K KworI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoVGlsdGFuZHNoaWZ0Q29udGV4dCwgeCkKKyNk ZWZpbmUgViBBVl9PUFRfRkxBR19WSURFT19QQVJBTQorc3RhdGljIGNvbnN0IEFWT3B0aW9uIHRp bHRhbmRzaGlmdF9vcHRpb25zW10gPSB7CisgICAgeyAidGlsdCIsICJUaWx0IHRoZSB2aWRlbyBo b3Jpem9udGFsbHkgd2hpbGUgc2hpZnRpbmciLCBPRkZTRVQodGlsdCksIEFWX09QVF9UWVBFX0lO VCwKKyAgICAgICAgeyAuaTY0ID0gMSB9LCAwLCAxLCAuZmxhZ3MgPSBWLCAudW5pdCA9ICJ0aWx0 IiB9LAorCisgICAgeyAic3RhcnQiLCAiQWN0aW9uIGF0IHRoZSBzdGFydCBvZiBpbnB1dCIsIE9G RlNFVChzdGFydCksIEFWX09QVF9UWVBFX0lOVCwKKyAgICAgICAgeyAuaTY0ID0gVElMVF9OT05F IH0sIC0xLCAxLCAuZmxhZ3MgPSBWLCAudW5pdCA9ICJzdGFydCIgfSwKKyAgICB7ICJub25lIiwg IlN0YXJ0IGltbWVkaWF0ZWx5IChkZWZhdWx0KSIsIDAsIEFWX09QVF9UWVBFX0NPTlNULAorICAg ICAgICB7IC5pNjQgPSBUSUxUX05PTkUgfSwgSU5UX01JTiwgSU5UX01BWCwgLmZsYWdzID0gViwg LnVuaXQgPSAic3RhcnQiIH0sCisgICAgeyAiZnJhbWUiLCAiVXNlIHRoZSBmaXJzdCBmcmFtZXMi LCAwLCBBVl9PUFRfVFlQRV9DT05TVCwKKyAgICAgICAgeyAuaTY0ID0gVElMVF9GUkFNRSB9LCBJ TlRfTUlOLCBJTlRfTUFYLCAuZmxhZ3MgPSBWLCAudW5pdCA9ICJzdGFydCIgfSwKKyAgICB7ICJi bGFjayIsICJGaWxsIHdpdGggYmxhY2siLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwKKyAgICAgICAg eyAuaTY0ID0gVElMVF9CTEFDSyB9LCBJTlRfTUlOLCBJTlRfTUFYLCAuZmxhZ3MgPSBWLCAudW5p dCA9ICJzdGFydCIgfSwKKworICAgIHsgImVuZCIsICJBY3Rpb24gYXQgdGhlIGVuZCBvZiBpbnB1 dCIsIE9GRlNFVChlbmQpLCBBVl9PUFRfVFlQRV9JTlQsCisgICAgICAgIHsgLmk2NCA9IFRJTFRf Tk9ORSB9LCAtMSwgMSwgLmZsYWdzID0gViwgLnVuaXQgPSAiZW5kIiB9LAorICAgIHsgIm5vbmUi LCAiRG8gbm90IHBhZCBhdCB0aGUgZW5kIChkZWZhdWx0KSIsIDAsIEFWX09QVF9UWVBFX0NPTlNU LAorICAgICAgICB7IC5pNjQgPSBUSUxUX05PTkUgfSwgSU5UX01JTiwgSU5UX01BWCwgLmZsYWdz ID0gViwgLnVuaXQgPSAiZW5kIiB9LAorICAgIHsgImZyYW1lIiwgIlVzZSB0aGUgbGFzdCBmcmFt ZSIsIDAsIEFWX09QVF9UWVBFX0NPTlNULAorICAgICAgICB7IC5pNjQgPSBUSUxUX0ZSQU1FIH0s IElOVF9NSU4sIElOVF9NQVgsIC5mbGFncyA9IFYsIC51bml0ID0gImVuZCIgfSwKKyAgICB7ICJi bGFjayIsICJGaWxsIHdpdGggYmxhY2siLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwKKyAgICAgICAg eyAuaTY0ID0gVElMVF9CTEFDSyB9LCBJTlRfTUlOLCBJTlRfTUFYLCAuZmxhZ3MgPSBWLCAudW5p dCA9ICJlbmQiIH0sCisKKyAgICB7ICJob2xkIiwgIk51bWJlciBvZiBjb2x1bW5zIHRvIGhvbGQg YXQgdGhlIHN0YXJ0IG9mIHRoZSB2aWRlbyIsIE9GRlNFVChob2xkKSwgQVZfT1BUX1RZUEVfSU5U LAorICAgICAgICB7IC5pNjQgPSAwIH0sIDAsIElOVF9NQVgsIC5mbGFncyA9IFYsIC51bml0ID0g ImhvbGQiIH0sCisgICAgeyAicGFkIiwgIk51bWJlciBvZiBjb2x1bW5zIHRvIHBhZCBhdCB0aGUg ZW5kIG9mIHRoZSB2aWRlbyIsIE9GRlNFVChwYWQpLCBBVl9PUFRfVFlQRV9JTlQsCisgICAgICAg IHsgLmk2NCA9IDAgfSwgMCwgSU5UX01BWCwgLmZsYWdzID0gViwgLnVuaXQgPSAicGFkIiB9LAor CisgICAgeyBOVUxMIH0sCit9OworCitBVkZJTFRFUl9ERUZJTkVfQ0xBU1ModGlsdGFuZHNoaWZ0 KTsKKworc3RhdGljIGNvbnN0IEFWRmlsdGVyUGFkIHRpbHRhbmRzaGlmdF9pbnB1dHNbXSA9IHsK KyAgICB7CisgICAgICAgIC5uYW1lICAgICAgICAgPSAiaW4iLAorICAgICAgICAudHlwZSAgICAg ICAgID0gQVZNRURJQV9UWVBFX1ZJREVPLAorICAgICAgICAuZmlsdGVyX2ZyYW1lID0gZmlsdGVy X2ZyYW1lLAorICAgIH0sCit9OworCitzdGF0aWMgY29uc3QgQVZGaWx0ZXJQYWQgdGlsdGFuZHNo aWZ0X291dHB1dHNbXSA9IHsKKyAgICB7CisgICAgICAgIC5uYW1lICAgICAgICAgID0gIm91dCIs CisgICAgICAgIC50eXBlICAgICAgICAgID0gQVZNRURJQV9UWVBFX1ZJREVPLAorICAgICAgICAu Y29uZmlnX3Byb3BzICA9IGNvbmZpZ19wcm9wcywKKyAgICAgICAgLnJlcXVlc3RfZnJhbWUgPSBy ZXF1ZXN0X2ZyYW1lLAorICAgIH0sCit9OworCitBVkZpbHRlciBmZl92Zl90aWx0YW5kc2hpZnQg PSB7CisgICAgLm5hbWUgICAgICAgICAgPSAidGlsdGFuZHNoaWZ0IiwKKyAgICAuZGVzY3JpcHRp b24gICA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJHZW5lcmF0ZSBhIHRpbHQtYW5kLXNoaWZ0J2Qg dmlkZW8uIiksCisgICAgLnByaXZfc2l6ZSAgICAgPSBzaXplb2YoVGlsdGFuZHNoaWZ0Q29udGV4 dCksCisgICAgLnByaXZfY2xhc3MgICAgPSAmdGlsdGFuZHNoaWZ0X2NsYXNzLAorICAgIC51bmlu aXQgICAgICAgID0gdW5pbml0LAorICAgIEZJTFRFUl9JTlBVVFModGlsdGFuZHNoaWZ0X2lucHV0 cyksCisgICAgRklMVEVSX09VVFBVVFModGlsdGFuZHNoaWZ0X291dHB1dHMpLAorICAgIEZJTFRF Ul9RVUVSWV9GVU5DKHF1ZXJ5X2Zvcm1hdHMpLAorfTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2ZhdGUv ZmlsdGVyLXZpZGVvLm1hayBiL3Rlc3RzL2ZhdGUvZmlsdGVyLXZpZGVvLm1hawppbmRleCBlNGJk ZjU5ZGI5Li4yNWJjNDdiMzkzIDEwMDY0NAotLS0gYS90ZXN0cy9mYXRlL2ZpbHRlci12aWRlby5t YWsKKysrIGIvdGVzdHMvZmF0ZS9maWx0ZXItdmlkZW8ubWFrCkBAIC01MzIsNiArNTMyLDggQEAg ZmF0ZS1maWx0ZXItdGh1bWJuYWlsOiBDTUQgPSB2aWRlb19maWx0ZXIgInNjYWxlLHRodW1ibmFp bD0xMCIKIEZBVEVfRklMVEVSX1ZTWU5USF9WSURFT19GSUxURVItJChDT05GSUdfVElMRV9GSUxU RVIpICs9IGZhdGUtZmlsdGVyLXRpbGUKIGZhdGUtZmlsdGVyLXRpbGU6IENNRCA9IHZpZGVvX2Zp bHRlciAidGlsZT0zeDM6bmJfZnJhbWVzPTU6cGFkZGluZz03Om1hcmdpbj0yIgogCitGQVRFX0ZJ TFRFUl9WU1lOVEhfVklERU9fRklMVEVSLSQoQ09ORklHX1RJTFRBTkRTSElGVF9GSUxURVIpICs9 IGZhdGUtZmlsdGVyLXRpbHRhbmRzaGlmdAorZmF0ZS1maWx0ZXItdGlsdGFuZHNoaWZ0OiBDTUQg PSB2aWRlb19maWx0ZXIgInRpbHRhbmRzaGlmdCIKIAogdGVzdHMvcGl4Zm10cy5tYWs6IFRBRyA9 IEdFTgogdGVzdHMvcGl4Zm10cy5tYWs6IGZmbXBlZyQoUFJPR1NTVUYpJChFWEVTVUYpIHwgdGVz dHMKZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZi9mYXRlL2ZpbHRlci10aWx0YW5kc2hpZnQgYi90ZXN0 cy9yZWYvZmF0ZS9maWx0ZXItdGlsdGFuZHNoaWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLmU2Mzk5MjJlM2IKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZWYvZmF0 ZS9maWx0ZXItdGlsdGFuZHNoaWZ0CkBAIC0wLDAgKzEgQEAKK3RpbHRhbmRzaGlmdCAgICAgICAg ZWVkMWNhYTBjMjU1MWZkZGFkMmU0NWNlODRiNDY1ZjAKLS0gCjIuNDIuMAoK --0000000000003a0e04060c4575ad 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". --0000000000003a0e04060c4575ad--