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 2AB8343203 for ; Tue, 18 Jan 2022 13:58:19 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AE90368B0FD; Tue, 18 Jan 2022 15:58:16 +0200 (EET) Received: from shout01.mail.de (shout01.mail.de [62.201.172.24]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ADCEC68B070 for ; Tue, 18 Jan 2022 15:58:09 +0200 (EET) Received: from postfix01.mail.de (postfix02.bt.mail.de [10.0.121.126]) by shout01.mail.de (Postfix) with ESMTP id 1B35CA0B98 for ; Tue, 18 Jan 2022 14:58:09 +0100 (CET) Received: from smtp03.mail.de (smtp03.bt.mail.de [10.0.121.213]) by postfix01.mail.de (Postfix) with ESMTP id 00CE6A03C2 for ; Tue, 18 Jan 2022 14:58:08 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mail.de; s=mailde202009; t=1642514289; bh=Unqe6g8YdGom9iykhsfPqlVvZrl5Nnal8q6yI5OvEtI=; h=Subject:To:References:From:Date:In-Reply-To:From; b=BS6iXX+YHNlcIvVE3x2J5yuxALF2MV3afgQoIDSYFUjsy2QaMTup1p5LR/6peGFUT jmEc2D2KcS4hxCrZ+H6xxoZy7utXE/z+Pm6QRfi7awf7dLEuzR46/Dgt+uk7+8Yxia Wsjg6EQCQNKryi8m0osCvxdpaCuVxM4wSVi0kLI5DRbgatUq+RIzw5l8zpvEhTvsAd 5tHh5/Ue6f2SnZ25ha8SOchPoeuzwXd6kVKC5jInxcnWYpkHcagL6rIczqcE39XL4m EVVKNCUtN7jKHr8mzfOo5imWyE3ELNXw4FcN+hN7WXOooBK/teCVt2MCzfzMezYaYL cHjdCxlToeAVQ== Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtp03.mail.de (Postfix) with ESMTPSA id B63A9A04DC for ; Tue, 18 Jan 2022 14:58:08 +0100 (CET) To: ffmpeg-devel@ffmpeg.org References: <20210115045832.76405-1-borbarak@fb.com> <3fa8e9b2-6824-eb3a-2390-22fd024efa9f@mail.de> From: Thilo Borgmann Message-ID: Date: Tue, 18 Jan 2022 14:58:07 +0100 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------7BE49BCB4D653356713CEDDE" Content-Language: en-US X-purgate: clean X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate-type: clean X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate: clean X-purgate-size: 22570 X-purgate-ID: 154282::1642514288-00007508-53E6812D/0/0 Subject: Re: [FFmpeg-devel] [PATCH] avfilter: Added siti 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: This is a multi-part message in MIME format. --------------7BE49BCB4D653356713CEDDE Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Am 15.01.22 um 09:27 schrieb Paul B Mahol: > On Sat, Jan 15, 2022 at 9:25 AM Paul B Mahol wrote: > >> >> >> On Fri, Jan 14, 2022 at 5:22 PM Thilo Borgmann >> wrote: >> >>> Hi, >>> >>> Am 19.01.21 um 05:49 schrieb Lynne: >>>> Jan 19, 2021, 01:07 by borbarak@fb.com: >>>> >>>>> Calculate Spatial Info (SI) and Temporal Info (TI) scores for a video, >>> as defined >>>>> in ITU-T P.910: Subjective video quality assessment methods for >>> multimedia >>>>> applications. >>>>> >>>>> Update: Fixed bracket style. >>>>> >>>> >>>> Thanks, looks much neater now. >>>> >>>> >>>> >>>>> I'm already adding the data to the frame's metadata, is the suggestion >>> to remove the file option altogether? >>>>> >>>> >>>> Yes. We want to avoid filters having their own file in/out options >>> rather >>>> than using generic ones. >>> >>> Updated the patch to apply to git HEAD. >>> Removed file output. >>> Made printing summary to console optional. >>> >>> >>>>> + >>>>> +#include "libavutil/imgutils.h" >>>>> +#include "libavutil/internal.h" >>>>> +#include "libavutil/opt.h" >>>>> + >>>>> +#include "avfilter.h" >>>>> +#include "formats.h" >>>>> +#include "internal.h" >>>>> +#include "video.h" >>>>> + >>>>> +static const int X_FILTER[9] = { >>>>> + 1, 0, -1, >>>>> + 2, 0, -2, >>>>> + 1, 0, -1 >>>>> +}; >>>>> + >>>>> +static const int Y_FILTER[9] = { >>>>> + 1, 2, 1, >>>>> + 0, 0, 0, >>>>> + -1, -2, -1 >>>>> +}; >>>>> >>>> >>>> We have optimized assembly to apply 3x3 matrices. Check out >>>> libavfilter/x86/vf_convolution.asm:ff_filter_3x3_sse4 >>>> vf_convolution already applies a sobel filter that way. Maybe >>>> look into sharing some DSP code with it? >>> >>> I checked a bit since I also want a common sobel for vf_edgedetect / my >>> patch for vf_blurriness. >>> >>> For sobel, there is no direct asm implementation. We have a generic >>> filter_3x3 with sse4 optimization. To use sobel with that, you'd need to >>> run two times filter_3x3 plus one pass for gradient calculation. >>> >>> As another difference, this filter (SITI) does on-the-fly conversion to >>> full-range pixel values during its sobel. While vf_edgedetect / >>> vf_bluriness use an abbreviation for the gradients during its sobel. Which >>> makes them both distinct enough not to fit into a general filter_3x3 or >>> filter_sobel from vf_convolution easily (and more overhead). So I think >>> it's not worth the effort to force them into a common function? (Especially >>> since we don't have a sobel_sse4 or something) >>> >>> Patch without a common sobel attached. >>> >>> >> >> Violations of code style. Enhanced. >> Also why filter description only shows SI part and TI part is missing? Mentioned. v2 attached. Thanks, Thilo --------------7BE49BCB4D653356713CEDDE Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v2-0001-lavfilter-Add-SITI-filter.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0001-lavfilter-Add-SITI-filter.patch" RnJvbSAwYjNmMWMxNWM3MGY4ZGViODI4NDk3ZDM2OGRhYmI1OGY5NDY5ZTEyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBCYXJhY2FsZG8gPGJvcmJhcmFrQGZiLmNv bT4KRGF0ZTogVHVlLCAxOCBKYW4gMjAyMiAxNDo1NzozMCArMDEwMApTdWJqZWN0OiBbUEFU Q0ggdjJdIGxhdmZpbHRlcjogQWRkIFNJVEkgZmlsdGVyCgpDYWxjdWxhdGUgU3BhdGlhbCBJ bmZvIChTSSkgYW5kIFRlbXBvcmFsIEluZm8gKFRJKSBzY29yZXMgZm9yIGEgdmlkZW8sIGFz IGRlZmluZWQKaW4gSVRVLVQgUC45MTA6IFN1YmplY3RpdmUgdmlkZW8gcXVhbGl0eSBhc3Nl c3NtZW50IG1ldGhvZHMgZm9yIG11bHRpbWVkaWEKYXBwbGljYXRpb25zLgotLS0KIENoYW5n ZWxvZyAgICAgICAgICAgICAgICB8ICAgMSArCiBkb2MvZmlsdGVycy50ZXhpICAgICAgICAg fCAgMjMgKysrCiBsaWJhdmZpbHRlci9NYWtlZmlsZSAgICAgfCAgIDEgKwogbGliYXZmaWx0 ZXIvYWxsZmlsdGVycy5jIHwgICAxICsKIGxpYmF2ZmlsdGVyL3ZlcnNpb24uaCAgICB8ICAg MiArLQogbGliYXZmaWx0ZXIvdmZfc2l0aS5jICAgIHwgMjk2ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAzMjMgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2ZmlsdGVyL3Zm X3NpdGkuYwoKZGlmZiAtLWdpdCBhL0NoYW5nZWxvZyBiL0NoYW5nZWxvZwppbmRleCAzZGRl MzMyNmJlLi5kY2IyYzM2OGQyIDEwMDY0NAotLS0gYS9DaGFuZ2Vsb2cKKysrIGIvQ2hhbmdl bG9nCkBAIC0xMzIsNiArMTMyLDcgQEAgdmVyc2lvbiA0LjQ6CiAtIG1zYWQgdmlkZW8gZmls dGVyCiAtIGdvcGhlcnMgcHJvdG9jb2wKIC0gUklTVCBwcm90b2NvbCB2aWEgbGlicmlzdAor LSBzaXRpIGZpbHRlcgogCiAKIHZlcnNpb24gNC4zOgpkaWZmIC0tZ2l0IGEvZG9jL2ZpbHRl cnMudGV4aSBiL2RvYy9maWx0ZXJzLnRleGkKaW5kZXggMDVkNGIxYTU2ZS4uZjhhOGEyY2I3 MiAxMDA2NDQKLS0tIGEvZG9jL2ZpbHRlcnMudGV4aQorKysgYi9kb2MvZmlsdGVycy50ZXhp CkBAIC0xOTg3NSw2ICsxOTg3NSwyOSBAQCBmZm1wZWcgLWkgaW5wdXQxLm1rdiAtaSBpbnB1 dDIubWt2IC1maWx0ZXJfY29tcGxleCAiWzA6dl1bMTp2XSBzaWduYXR1cmU9bmJfaW5wdQog CiBAZW5kIGl0ZW1pemUKIAorQGFuY2hvcntzaXRpfQorQHNlY3Rpb24gc2l0aQorCitDYWxj dWxhdGUgU3BhdGlhbCBJbmZvIChTSSkgYW5kIFRlbXBvcmFsIEluZm8gKFRJKSBzY29yZXMg Zm9yIGEgdmlkZW8sIGFzIGRlZmluZWQKK2luIElUVS1UIFAuOTEwOiBTdWJqZWN0aXZlIHZp ZGVvIHF1YWxpdHkgYXNzZXNzbWVudCBtZXRob2RzIGZvciBtdWx0aW1lZGlhCithcHBsaWNh dGlvbnMuIEF2YWlsYWJsZSBQREYgYXQgQHVybHtodHRwczovL3d3dy5pdHUuaW50L3JlYy9U LVJFQy1QLjkxMC0xOTk5MDktUy9lbiB9LgorCitJdCBhY2NlcHRzIHRoZSBmb2xsb3dpbmcg b3B0aW9uOgorCitAdGFibGUgQG9wdGlvbgorQGl0ZW0gcHJpbnRfc3VtbWFyeQorSWYgc2V0 IHRvIDEsIFN1bW1hcnkgc3RhdGlzdGljcyB3aWxsIGJlIHByaW50ZWQgdG8gdGhlIGNvbnNv bGUuIERlZmF1bHQgMC4KK0BlbmQgdGFibGUKKworQHN1YnNlY3Rpb24gRXhhbXBsZXMKK0Bp dGVtaXplCitAaXRlbQorVG8gY2FsY3VsYXRlIFNJL1RJIG1ldHJpY3MgYW5kIHByaW50IHN1 bW1hcnk6CitAZXhhbXBsZQorZmZtcGVnIC1pIGlucHV0Lm1wNCAtdmYgc2l0aT1wcmludF9z dW1tYXJ5PTEgLWYgbnVsbCAtCitAZW5kIGV4YW1wbGUKK0BlbmQgaXRlbWl6ZQorCiBAYW5j aG9ye3NtYXJ0Ymx1cn0KIEBzZWN0aW9uIHNtYXJ0Ymx1cgogCmRpZmYgLS1naXQgYS9saWJh dmZpbHRlci9NYWtlZmlsZSBiL2xpYmF2ZmlsdGVyL01ha2VmaWxlCmluZGV4IDFhZGJlYTc1 YmQuLjMyNjFkMDUzMTEgMTAwNjQ0Ci0tLSBhL2xpYmF2ZmlsdGVyL01ha2VmaWxlCisrKyBi L2xpYmF2ZmlsdGVyL01ha2VmaWxlCkBAIC00NTQsNiArNDU0LDcgQEAgT0JKUy0kKENPTkZJ R19TTUFSVEJMVVJfRklMVEVSKSAgICAgICAgICAgICAgKz0gdmZfc21hcnRibHVyLm8KIE9C SlMtJChDT05GSUdfU09CRUxfRklMVEVSKSAgICAgICAgICAgICAgICAgICs9IHZmX2NvbnZv bHV0aW9uLm8KIE9CSlMtJChDT05GSUdfU09CRUxfT1BFTkNMX0ZJTFRFUikgICAgICAgICAg ICs9IHZmX2NvbnZvbHV0aW9uX29wZW5jbC5vIG9wZW5jbC5vIFwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5jbC9jb252b2x1dGlvbi5v CitPQkpTLSQoQ09ORklHX1NJVElfRklMVEVSKSAgICAgICAgICAgICAgICAgICArPSB2Zl9z aXRpLm8KIE9CSlMtJChDT05GSUdfU1BMSVRfRklMVEVSKSAgICAgICAgICAgICAgICAgICs9 IHNwbGl0Lm8KIE9CSlMtJChDT05GSUdfU1BQX0ZJTFRFUikgICAgICAgICAgICAgICAgICAg ICs9IHZmX3NwcC5vIHFwX3RhYmxlLm8KIE9CSlMtJChDT05GSUdfU1JfRklMVEVSKSAgICAg ICAgICAgICAgICAgICAgICs9IHZmX3NyLm8KZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2Fs bGZpbHRlcnMuYyBiL2xpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYwppbmRleCA0MzI1YTNlNTU3 Li44MDhjMTcyYjI4IDEwMDY0NAotLS0gYS9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMKKysr IGIvbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jCkBAIC00MzAsNiArNDMwLDcgQEAgZXh0ZXJu IGNvbnN0IEFWRmlsdGVyIGZmX3ZmX3NodWZmbGVwbGFuZXM7CiBleHRlcm4gY29uc3QgQVZG aWx0ZXIgZmZfdmZfc2lkZWRhdGE7CiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfc2ln bmFsc3RhdHM7CiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfc2lnbmF0dXJlOworZXh0 ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX3NpdGk7CiBleHRlcm4gY29uc3QgQVZGaWx0ZXIg ZmZfdmZfc21hcnRibHVyOwogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX3NvYmVsOwog ZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX3NvYmVsX29wZW5jbDsKZGlmZiAtLWdpdCBh L2xpYmF2ZmlsdGVyL3ZlcnNpb24uaCBiL2xpYmF2ZmlsdGVyL3ZlcnNpb24uaAppbmRleCAx YTk4NDllZjgyLi44OTcxNGJjZTg0IDEwMDY0NAotLS0gYS9saWJhdmZpbHRlci92ZXJzaW9u LmgKKysrIGIvbGliYXZmaWx0ZXIvdmVyc2lvbi5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j bHVkZSAibGliYXZ1dGlsL3ZlcnNpb24uaCIKIAogI2RlZmluZSBMSUJBVkZJTFRFUl9WRVJT SU9OX01BSk9SICAgOAotI2RlZmluZSBMSUJBVkZJTFRFUl9WRVJTSU9OX01JTk9SICAyNQor I2RlZmluZSBMSUJBVkZJTFRFUl9WRVJTSU9OX01JTk9SICAyNgogI2RlZmluZSBMSUJBVkZJ TFRFUl9WRVJTSU9OX01JQ1JPIDEwMAogCiAKZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL3Zm X3NpdGkuYyBiL2xpYmF2ZmlsdGVyL3ZmX3NpdGkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi5mYjE0ZTJmZTgzCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZm aWx0ZXIvdmZfc2l0aS5jCkBAIC0wLDAgKzEsMjk2IEBACisvKgorICogQ29weXJpZ2h0IChj KSAyMDIxIEJvcmlzIEJhcmFjYWxkbworICogQ29weXJpZ2h0IChjKSAyMDIyIFRoaWxvIEJv cmdtYW5uIAorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBG Rm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyAqIHdpdGggRkZtcGVnOyBpZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiA1 MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEg VVNBLgorICovCisKKy8qKgorICogQGZpbGUKKyAqIENhbGN1bGF0ZSBTcGF0aWFsIEluZm8g KFNJKSBhbmQgVGVtcG9yYWwgSW5mbyAoVEkpIHNjb3JlcworICovCisKKyNpbmNsdWRlIDxt YXRoLmg+CisKKyNpbmNsdWRlICJsaWJhdnV0aWwvaW1ndXRpbHMuaCIKKyNpbmNsdWRlICJs aWJhdnV0aWwvaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCisKKyNp bmNsdWRlICJhdmZpbHRlci5oIgorI2luY2x1ZGUgImZvcm1hdHMuaCIKKyNpbmNsdWRlICJp bnRlcm5hbC5oIgorI2luY2x1ZGUgInZpZGVvLmgiCisKK3N0YXRpYyBjb25zdCBpbnQgWF9G SUxURVJbOV0gPSB7CisgICAgMSwgMCwgLTEsCisgICAgMiwgMCwgLTIsCisgICAgMSwgMCwg LTEKK307CisKK3N0YXRpYyBjb25zdCBpbnQgWV9GSUxURVJbOV0gPSB7CisgICAgMSwgMiwg MSwKKyAgICAwLCAwLCAwLAorICAgIC0xLCAtMiwgLTEKK307CisKK3R5cGVkZWYgc3RydWN0 IFNpVGlDb250ZXh0IHsKKyAgICBjb25zdCBBVkNsYXNzICpjbGFzczsKKyAgICBpbnQgcGl4 ZWxfZGVwdGg7CisgICAgaW50IHdpZHRoLCBoZWlnaHQ7CisgICAgaW50IG5iX2ZyYW1lczsK KyAgICB1bnNpZ25lZCBjaGFyICpwcmV2X2ZyYW1lOworICAgIGRvdWJsZSBtYXhfc2k7Cisg ICAgZG91YmxlIG1heF90aTsKKyAgICBkb3VibGUgbWluX3NpOworICAgIGRvdWJsZSBtaW5f dGk7CisgICAgZG91YmxlIHN1bV9zaTsKKyAgICBkb3VibGUgc3VtX3RpOworICAgIGludCBm dWxsX3JhbmdlOworICAgIGludCBwcmludF9zdW1tYXJ5OworfSBTaVRpQ29udGV4dDsKKwor c3RhdGljIGNvbnN0IGVudW0gQVZQaXhlbEZvcm1hdCBwaXhfZm10c1tdID0geworICAgIEFW X1BJWF9GTVRfWVVWNDIwUCwgQVZfUElYX0ZNVF9ZVVY0MjJQLAorICAgIEFWX1BJWF9GTVRf WVVWSjQyMFAsIEFWX1BJWF9GTVRfWVVWSjQyMlAsCisgICAgQVZfUElYX0ZNVF9ZVVY0MjBQ MTAsIEFWX1BJWF9GTVRfWVVWNDIyUDEwLAorICAgIEFWX1BJWF9GTVRfTk9ORQorfTsKKwor c3RhdGljIGF2X2NvbGQgaW50IGluaXQoQVZGaWx0ZXJDb250ZXh0ICpjdHgpIHsKKyAgICAv LyBVc2VyIG9wdGlvbnMgYnV0IG5vIGlucHV0IGRhdGEKKyAgICBTaVRpQ29udGV4dCAqcyA9 IGN0eC0+cHJpdjsKKyAgICBzLT5tYXhfc2kgPSAwOworICAgIHMtPm1heF90aSA9IDA7Cisg ICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBhdl9jb2xkIHZvaWQgdW5pbml0KEFWRmlsdGVy Q29udGV4dCAqY3R4KSB7CisgICAgU2lUaUNvbnRleHQgKnMgPSBjdHgtPnByaXY7CisKKyAg ICBpZiAocy0+cHJpbnRfc3VtbWFyeSkgeworICAgICAgICBkb3VibGUgYXZnX3NpID0gcy0+ c3VtX3NpIC8gcy0+bmJfZnJhbWVzOworICAgICAgICBkb3VibGUgYXZnX3RpID0gcy0+c3Vt X3RpIC8gcy0+bmJfZnJhbWVzOworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfSU5GTywK KyAgICAgICAgICAgICAgICJTSVRJIFN1bW1hcnk6XG5Ub3RhbCBmcmFtZXM6ICVkXG5cbiIK KyAgICAgICAgICAgICAgICJTcGF0aWFsIEluZm9ybWF0aW9uOlxuQXZlcmFnZTogJWZcbk1h eDogJWZcbk1pbjogJWZcblxuIgorICAgICAgICAgICAgICAgIlRlbXBvcmFsIEluZm9ybWF0 aW9uOlxuQXZlcmFnZTogJWZcbk1heDogJWZcbk1pbjogJWZcbiIsCisgICAgICAgICAgICAg ICBzLT5uYl9mcmFtZXMsIGF2Z19zaSwgcy0+bWF4X3NpLCBzLT5taW5fc2ksIGF2Z190aSwg cy0+bWF4X3RpLCBzLT5taW5fdGkKKyAgICAgICAgKTsKKyAgICB9Cit9CisKK3N0YXRpYyBp bnQgY29uZmlnX2lucHV0KEFWRmlsdGVyTGluayAqaW5saW5rKSB7CisgICAgLy8gVmlkZW8g aW5wdXQgZGF0YSBhdmlsYWJsZQorICAgIEFWRmlsdGVyQ29udGV4dCAqY3R4ID0gaW5saW5r LT5kc3Q7CisgICAgU2lUaUNvbnRleHQgKnMgPSBjdHgtPnByaXY7CisgICAgaW50IG1heF9w aXhzdGVwc1s0XTsKKworICAgIGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRvciAqZGVzYyA9IGF2 X3BpeF9mbXRfZGVzY19nZXQoaW5saW5rLT5mb3JtYXQpOworICAgIGF2X2ltYWdlX2ZpbGxf bWF4X3BpeHN0ZXBzKG1heF9waXhzdGVwcywgTlVMTCwgZGVzYyk7CisKKyAgICBzLT5waXhl bF9kZXB0aCA9IG1heF9waXhzdGVwc1swXTsKKyAgICBzLT53aWR0aCA9IGlubGluay0+dzsK KyAgICBzLT5oZWlnaHQgPSBpbmxpbmstPmg7CisgICAgc2l6ZV90IHBpeGVsX3N6ID0gcy0+ cGl4ZWxfZGVwdGg9PTEgPyAoc2l6ZV90KSBzaXplb2YodWludDhfdCkgOiAoc2l6ZV90KSBz aXplb2YodWludDE2X3QpOworICAgIHNpemVfdCBkYXRhX3N6ID0gKHNpemVfdCkgcy0+d2lk dGggKiBwaXhlbF9zeiAqIHMtPmhlaWdodDsKKyAgICBzLT5wcmV2X2ZyYW1lID0gYXZfbWFs bG9jKGRhdGFfc3opOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8vIEdldCBmcmFtZSBkYXRh IGhhbmRsaW5nIDggYW5kIDEwIGJpdCBmb3JtYXRzCitzdGF0aWMgdWludDE2X3QgZ2V0X2Zy YW1lX2RhdGEoY29uc3QgdW5zaWduZWQgY2hhciogc3JjLCBpbnQgcGl4ZWxfZGVwdGgsIGlu dCBpbmRleCkgeworICAgIGNvbnN0IHVpbnQxNl90ICpzcmMxNiA9IChjb25zdCB1aW50MTZf dCAqKXNyYzsKKyAgICBpZiAocGl4ZWxfZGVwdGggPT0gMikKKyAgICAgICAgcmV0dXJuIHNy YzE2W2luZGV4XTsKKyAgICByZXR1cm4gKHVpbnQxNl90KSBzcmNbaW5kZXhdOworfQorCisv LyBTZXQgZnJhbWUgZGF0YSBoYW5kbGluZyA4IGFuZCAxMCBiaXQgZm9ybWF0cworc3RhdGlj IHZvaWQgc2V0X2ZyYW1lX2RhdGEodW5zaWduZWQgY2hhciogZHN0LCBpbnQgcGl4ZWxfZGVw dGgsIGludCBpbmRleCwgdWludDE2X3QgZGF0YSkgeworICAgIHVpbnQxNl90ICpkc3QxNiA9 ICh1aW50MTZfdCAqKWRzdDsKKyAgICBpZiAocGl4ZWxfZGVwdGggPT0gMikKKyAgICAgICAg ZHN0MTZbaW5kZXhdID0gZGF0YTsKKyAgICBlbHNlCisgICAgICAgIGRzdFtpbmRleF0gPSAo dWludDhfdCkgZGF0YTsKK30KKworLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHZpZGVvIGlz IGluIGZ1bGwgb3IgbGltaXRlZCByYW5nZS4gSWYgbm90IGRlZmluZWQsIGFzc3VtZSBsaW1p dGVkLgorc3RhdGljIGludCBpc19mdWxsX3JhbmdlKEFWRnJhbWUqIGZyYW1lKSB7CisgICAg Ly8gSWYgY29sb3IgcmFuZ2Ugbm90IHNwZWNpZmllZCwgZmFsbGJhY2sgdG8gcGl4ZWwgZm9y bWF0CisgICAgaWYgKGZyYW1lLT5jb2xvcl9yYW5nZSA9PSBBVkNPTF9SQU5HRV9VTlNQRUNJ RklFRCB8fCBmcmFtZS0+Y29sb3JfcmFuZ2UgPT0gQVZDT0xfUkFOR0VfTkIpCisgICAgICAg IHJldHVybiBmcmFtZS0+Zm9ybWF0ID09IEFWX1BJWF9GTVRfWVVWSjQyMFAgfHwgZnJhbWUt PmZvcm1hdCA9PSBBVl9QSVhfRk1UX1lVVko0MjJQOworICAgIHJldHVybiBmcmFtZS0+Y29s b3JfcmFuZ2UgPT0gQVZDT0xfUkFOR0VfSlBFRzsKK30KKworLy8gQ2hlY2sgZnJhbWUncyBj b2xvciByYW5nZSBhbmQgY29udmVydCB0byBmdWxsIHJhbmdlIGlmIG5lZWRlZAorc3RhdGlj IHVpbnQxNl90IGNvbnZlcnRfZnVsbF9yYW5nZSh1aW50MTZfdCB5LCBTaVRpQ29udGV4dCAq cykgeworICAgIGlmIChzLT5mdWxsX3JhbmdlID09IDEpCisgICAgICAgIHJldHVybiB5Owor CisgICAgLy8gRm9yIDggYml0cywgbGltaXRlZCByYW5nZSBnb2VzIGZyb20gMTYgdG8gMjM1 LCBmb3IgMTAgYml0cyB0aGUgcmFuZ2UgaXMgbXVsdGlwbGllZCBieSA0CisgICAgZG91Ymxl IGZhY3RvciA9IHMtPnBpeGVsX2RlcHRoID09IDEgPyAxIDogNDsKKyAgICBkb3VibGUgc2hp ZnQgPSAxNiAqIGZhY3RvcjsKKyAgICBkb3VibGUgbGltaXRfdXBwZXIgPSAyMzUgKiBmYWN0 b3IgLSBzaGlmdDsKKyAgICBkb3VibGUgZnVsbF91cHBlciA9IDI1NiAqIGZhY3RvciAtIDE7 CisgICAgZG91YmxlIGxpbWl0X3kgPSBmbWluKGZtYXgoeSAtIHNoaWZ0LCAwKSwgbGltaXRf dXBwZXIpOworICAgIHJldHVybiAodWludDE2X3QpIChmdWxsX3VwcGVyICogbGltaXRfeSAv IGxpbWl0X3VwcGVyKTsKK30KKworLy8gQXBwbGllcyBzb2JlbCBjb252b2x1dGlvbgorc3Rh dGljIHZvaWQgY29udm9sdmVfc29iZWwoY29uc3QgdW5zaWduZWQgY2hhciogc3JjLCBkb3Vi bGUqIGRzdCwgaW50IGxpbmVzaXplLCBTaVRpQ29udGV4dCAqcykgeworICAgIGludCBmaWx0 ZXJfd2lkdGggPSAzOworICAgIGludCBmaWx0ZXJfc2l6ZSA9IGZpbHRlcl93aWR0aCAqIGZp bHRlcl93aWR0aDsKKyAgICBmb3IgKGludCBqID0gMTsgaiA8IHMtPmhlaWdodCAtIDE7IGor KykgeworICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHMtPndpZHRoIC0gMTsgaSsrKSB7 CisgICAgICAgICAgICBkb3VibGUgeF9jb252X3N1bSA9IDAsIHlfY29udl9zdW0gPSAwOwor ICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBmaWx0ZXJfc2l6ZTsgaysrKSB7Cisg ICAgICAgICAgICAgICAgaW50IGtpID0gayAlIGZpbHRlcl93aWR0aCAtIDE7CisgICAgICAg ICAgICAgICAgaW50IGtqID0gZmxvb3IoayAvIGZpbHRlcl93aWR0aCkgLSAxOworICAgICAg ICAgICAgICAgIGludCBpbmRleCA9IChqICsga2opICogKGxpbmVzaXplIC8gcy0+cGl4ZWxf ZGVwdGgpICsgKGkgKyBraSk7CisgICAgICAgICAgICAgICAgdWludDE2X3QgZGF0YSA9IGNv bnZlcnRfZnVsbF9yYW5nZShnZXRfZnJhbWVfZGF0YShzcmMsIHMtPnBpeGVsX2RlcHRoLCBp bmRleCksIHMpOworICAgICAgICAgICAgICAgIHhfY29udl9zdW0gKz0gZGF0YSAqIFhfRklM VEVSW2tdOworICAgICAgICAgICAgICAgIHlfY29udl9zdW0gKz0gZGF0YSAqIFlfRklMVEVS W2tdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZG91YmxlIGdyYWRpZW50ID0gc3Fy dCh4X2NvbnZfc3VtICogeF9jb252X3N1bSArIHlfY29udl9zdW0gKiB5X2NvbnZfc3VtKTsK KyAgICAgICAgICAgIC8vIERzdCBtYXRyaXggaXMgc21hbGxlciB0aGFuIHNyYyBzaW5jZSB3 ZSBpZ25vcmUgZWRnZXMgdGhhdCBjYW4ndCBiZSBjb252b2x2ZWQKKyAgICAgICAgICAgIGRz dFsoaiAtIDEpICogKHMtPndpZHRoIC0gMikgKyAoaSAtIDEpXSA9IGdyYWRpZW50OworICAg ICAgICB9CisgICAgfQorfQorCisvLyBDYWxjdWxhdGUgcGl4ZWwgZGlmZmVyZW5jZSBiZXR3 ZWVuIGN1cnJlbnQgYW5kIHByZXZpb3VzIGZyYW1lLCBhbmQgdXBkYXRlIHByZXZpb3VzCitz dGF0aWMgdm9pZCBjYWxjdWxhdGVfbW90aW9uKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGN1cnIs IGRvdWJsZSogbW90aW9uX21hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IGxpbmVzaXplLCBTaVRpQ29udGV4dCAqcykgeworICAgIGZvciAoaW50IGogPSAwOyBq IDwgcy0+aGVpZ2h0OyBqKyspIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLT53 aWR0aDsgaSsrKSB7CisgICAgICAgICAgICBkb3VibGUgbW90aW9uID0gMDsKKyAgICAgICAg ICAgIGludCBjdXJyX2luZGV4ID0gaiAqIChsaW5lc2l6ZSAvIHMtPnBpeGVsX2RlcHRoKSAr IGk7CisgICAgICAgICAgICBpbnQgcHJldl9pbmRleCA9IGogKiBzLT53aWR0aCArIGk7Cisg ICAgICAgICAgICB1aW50MTZfdCBjdXJyX2RhdGEgPSBjb252ZXJ0X2Z1bGxfcmFuZ2UoZ2V0 X2ZyYW1lX2RhdGEoY3Vyciwgcy0+cGl4ZWxfZGVwdGgsIGN1cnJfaW5kZXgpLCBzKTsKKwor ICAgICAgICAgICAgLy8gUHJldmlvdXMgZnJhbWUgaXMgYWxyZWFkeSBjb252ZXJ0ZWQgdG8g ZnVsbCByYW5nZQorICAgICAgICAgICAgaWYgKHMtPm5iX2ZyYW1lcyA+IDEpCisgICAgICAg ICAgICAgICAgbW90aW9uID0gY3Vycl9kYXRhIC0gZ2V0X2ZyYW1lX2RhdGEocy0+cHJldl9m cmFtZSwgcy0+cGl4ZWxfZGVwdGgsIHByZXZfaW5kZXgpOworICAgICAgICAgICAgc2V0X2Zy YW1lX2RhdGEocy0+cHJldl9mcmFtZSwgcy0+cGl4ZWxfZGVwdGgsIHByZXZfaW5kZXgsIGN1 cnJfZGF0YSk7CisgICAgICAgICAgICBtb3Rpb25fbWF0cml4W2ogKiBzLT53aWR0aCArIGld ID0gbW90aW9uOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgZG91YmxlIHN0ZF9k ZXZpYXRpb24oZG91YmxlKiBpbWdfbWV0cmljcywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7 CisgICAgZG91YmxlIHNpemUgPSBoZWlnaHQgKiB3aWR0aDsKKyAgICBkb3VibGUgbWVhbl9z dW0gPSAwOworICAgIGZvciAoaW50IGogPSAwOyBqIDwgaGVpZ2h0OyBqKyspCisgICAgICAg IGZvciAoaW50IGkgPSAwOyBpIDwgd2lkdGg7IGkrKykKKyAgICAgICAgICAgIG1lYW5fc3Vt ICs9IGltZ19tZXRyaWNzW2ogKiB3aWR0aCArIGldOworCisgICAgZG91YmxlIG1lYW4gPSBt ZWFuX3N1bSAvIHNpemU7CisKKyAgICBkb3VibGUgc3FyX2RpZmZfc3VtID0gMDsKKyAgICBm b3IgKGludCBqID0gMDsgaiA8IGhlaWdodDsgaisrKSB7CisgICAgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgd2lkdGg7IGkrKykgeworICAgICAgICAgICAgZG91YmxlIG1lYW5fZGlmZiA9 IGltZ19tZXRyaWNzW2ogKiB3aWR0aCArIGldIC0gbWVhbjsKKyAgICAgICAgICAgIHNxcl9k aWZmX3N1bSArPSAobWVhbl9kaWZmICogbWVhbl9kaWZmKTsKKyAgICAgICAgfQorICAgIH0K KyAgICBkb3VibGUgdmFyaWFuY2UgPSBzcXJfZGlmZl9zdW0gLyBzaXplOworICAgIHJldHVy biBzcXJ0KHZhcmlhbmNlKTsKK30KKworc3RhdGljIHZvaWQgc2V0X21ldGEoQVZEaWN0aW9u YXJ5ICoqbWV0YWRhdGEsIGNvbnN0IGNoYXIgKmtleSwgZmxvYXQgZCkgeworICAgIGNoYXIg dmFsdWVbMTI4XTsKKyAgICBzbnByaW50Zih2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwgIiUwLjJm IiwgZCk7CisgICAgYXZfZGljdF9zZXQobWV0YWRhdGEsIGtleSwgdmFsdWUsIDApOworfQor CitzdGF0aWMgaW50IGZpbHRlcl9mcmFtZShBVkZpbHRlckxpbmsgKmlubGluaywgQVZGcmFt ZSAqZnJhbWUpIHsKKyAgICBBVkZpbHRlckNvbnRleHQgKmN0eCA9IGlubGluay0+ZHN0Owor ICAgIFNpVGlDb250ZXh0ICpzID0gY3R4LT5wcml2OworCisgICAgLy8gR3JhZGllbnQgbWF0 cml4IHdpbGwgbm90IGluY2x1ZGUgdGhlIGlucHV0IGZyYW1lJ3MgZWRnZXMKKyAgICBzaXpl X3QgZ3JhZGllbnRfZGF0YV9zeiA9IChzaXplX3QpIChzLT53aWR0aCAtIDIpICogc2l6ZW9m KGRvdWJsZSkgKiAocy0+aGVpZ2h0IC0gMik7CisgICAgZG91YmxlICpncmFkaWVudF9tYXRy aXggPSBhdl9tYWxsb2MoZ3JhZGllbnRfZGF0YV9zeik7CisgICAgc2l6ZV90IG1vdGlvbl9k YXRhX3N6ID0gKHNpemVfdCkgcy0+d2lkdGggKiBzaXplb2YoZG91YmxlKSAqIHMtPmhlaWdo dDsKKyAgICBkb3VibGUgKm1vdGlvbl9tYXRyaXggPSBhdl9tYWxsb2MobW90aW9uX2RhdGFf c3opOworICAgIGlmICghZ3JhZGllbnRfbWF0cml4IHx8ICFtb3Rpb25fbWF0cml4KSB7Cisg ICAgICAgIGF2X2ZyYW1lX2ZyZWUoJmZyYW1lKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1Io RU5PTUVNKTsKKyAgICB9CisKKyAgICBzLT5mdWxsX3JhbmdlID0gaXNfZnVsbF9yYW5nZShm cmFtZSk7CisgICAgcy0+bmJfZnJhbWVzKys7CisKKyAgICAvLyBDYWxjdWxhdGUgc2kgYW5k IHRpCisgICAgY29udm9sdmVfc29iZWwoZnJhbWUtPmRhdGFbMF0sIGdyYWRpZW50X21hdHJp eCwgZnJhbWUtPmxpbmVzaXplWzBdLCBzKTsKKyAgICBjYWxjdWxhdGVfbW90aW9uKGZyYW1l LT5kYXRhWzBdLCBtb3Rpb25fbWF0cml4LCBmcmFtZS0+bGluZXNpemVbMF0sIHMpOworICAg IGRvdWJsZSBzaSA9IHN0ZF9kZXZpYXRpb24oZ3JhZGllbnRfbWF0cml4LCBzLT53aWR0aCAt IDIsIHMtPmhlaWdodCAtIDIpOworICAgIGRvdWJsZSB0aSA9IHN0ZF9kZXZpYXRpb24obW90 aW9uX21hdHJpeCwgcy0+d2lkdGgsIHMtPmhlaWdodCk7CisKKyAgICAvLyBDYWxjdWxhdGUg c3RhdGlzdGljcworICAgIHMtPm1heF9zaSAgPSBmbWF4KHNpLCBzLT5tYXhfc2kpOworICAg IHMtPm1heF90aSAgPSBmbWF4KHRpLCBzLT5tYXhfdGkpOworICAgIHMtPnN1bV9zaSArPSBz aTsKKyAgICBzLT5zdW1fdGkgKz0gdGk7CisgICAgcy0+bWluX3NpICA9IHMtPm5iX2ZyYW1l cyA9PSAxID8gc2kgOiBmbWluKHNpLCBzLT5taW5fc2kpOworICAgIHMtPm1pbl90aSAgPSBz LT5uYl9mcmFtZXMgPT0gMSA/IHRpIDogZm1pbih0aSwgcy0+bWluX3RpKTsKKworICAgIC8v IFNldCBzaSB0aSBpbmZvcm1hdGlvbiBpbiBmcmFtZSBtZXRhZGF0YQorICAgIHNldF9tZXRh KCZmcmFtZS0+bWV0YWRhdGEsICJsYXZmaS5zaXRpLnNpIiwgc2kpOworICAgIHNldF9tZXRh KCZmcmFtZS0+bWV0YWRhdGEsICJsYXZmaS5zaXRpLnRpIiwgdGkpOworCisgICAgYXZfZnJl ZShncmFkaWVudF9tYXRyaXgpOworICAgIHJldHVybiBmZl9maWx0ZXJfZnJhbWUoaW5saW5r LT5kc3QtPm91dHB1dHNbMF0sIGZyYW1lKTsKK30KKworI2RlZmluZSBPRkZTRVQoeCkgb2Zm c2V0b2YoU2lUaUNvbnRleHQsIHgpCisjZGVmaW5lIEZMQUdTIEFWX09QVF9GTEFHX1ZJREVP X1BBUkFNfEFWX09QVF9GTEFHX0ZJTFRFUklOR19QQVJBTQorCitzdGF0aWMgY29uc3QgQVZP cHRpb24gc2l0aV9vcHRpb25zW10gPSB7CisgICAgeyAicHJpbnRfc3VtbWFyeSIsICJQcmlu dCBzdW1tYXJ5IHNob3dpbmcgYXZlcmFnZSB2YWx1ZXMiLCBPRkZTRVQocHJpbnRfc3VtbWFy eSksIEFWX09QVF9UWVBFX0JPT0wsIHsgLmk2ND0wIH0sIDAsIDEsIEZMQUdTIH0sCisgICAg eyBOVUxMIH0KK307CisKK0FWRklMVEVSX0RFRklORV9DTEFTUyhzaXRpKTsKKworc3RhdGlj IGNvbnN0IEFWRmlsdGVyUGFkIGF2ZmlsdGVyX3ZmX3NpdGlfaW5wdXRzW10gPSB7CisgICAg eworICAgICAgICAubmFtZSAgICAgICAgID0gImRlZmF1bHQiLAorICAgICAgICAudHlwZSAg ICAgICAgID0gQVZNRURJQV9UWVBFX1ZJREVPLAorICAgICAgICAuY29uZmlnX3Byb3BzID0g Y29uZmlnX2lucHV0LAorICAgICAgICAuZmlsdGVyX2ZyYW1lID0gZmlsdGVyX2ZyYW1lLAor ICAgIH0sCit9OworCitzdGF0aWMgY29uc3QgQVZGaWx0ZXJQYWQgYXZmaWx0ZXJfdmZfc2l0 aV9vdXRwdXRzW10gPSB7CisgICAgeworICAgICAgICAubmFtZSA9ICJkZWZhdWx0IiwKKyAg ICAgICAgLnR5cGUgPSBBVk1FRElBX1RZUEVfVklERU8KKyAgICB9LAorfTsKKworQVZGaWx0 ZXIgZmZfdmZfc2l0aSA9IHsKKyAgICAubmFtZSAgICAgICAgICA9ICJzaXRpIiwKKyAgICAu ZGVzY3JpcHRpb24gICA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJDYWxjdWxhdGUgc3BhdGlh bCBpbmZvcm1hdGlvbiAoU0kpIGFuZCB0ZW1wb3JhbCBpbmZvcm1hdGlvbiAoVEkpLiIpLAor ICAgIC5wcml2X3NpemUgICAgID0gc2l6ZW9mKFNpVGlDb250ZXh0KSwKKyAgICAucHJpdl9j bGFzcyAgICA9ICZzaXRpX2NsYXNzLAorICAgIC5pbml0ICAgICAgICAgID0gaW5pdCwKKyAg ICAudW5pbml0ICAgICAgICA9IHVuaW5pdCwKKyAgICBGSUxURVJfUElYRk1UU19BUlJBWShw aXhfZm10cyksCisgICAgRklMVEVSX0lOUFVUUyhhdmZpbHRlcl92Zl9zaXRpX2lucHV0cyks CisgICAgRklMVEVSX09VVFBVVFMoYXZmaWx0ZXJfdmZfc2l0aV9vdXRwdXRzKSwKK307Ci0t IAoyLjIwLjEgKEFwcGxlIEdpdC0xMTcpCgo= --------------7BE49BCB4D653356713CEDDE 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". --------------7BE49BCB4D653356713CEDDE--