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 060B2471EE for ; Tue, 29 Aug 2023 21:18:24 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B377868C6B5; Wed, 30 Aug 2023 00:18:21 +0300 (EEST) Received: from mail-vs1-f52.google.com (mail-vs1-f52.google.com [209.85.217.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CDBD868BEF1 for ; Wed, 30 Aug 2023 00:18:15 +0300 (EEST) Received: by mail-vs1-f52.google.com with SMTP id ada2fe7eead31-44e3a4d0a6fso2007957137.0 for ; Tue, 29 Aug 2023 14:18:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693343894; x=1693948694; 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=K5WkYU+ZYxgD64kjAMs9uLG2heEm5Za9NmW4DWN+TC4=; b=MsFwj1J0bOW03Mz1K23QVsVWYylk38qmjEJi50LVN6buI1rqiHI4VdHyXhYnz1f2G/ 2w8ayPgdza6ByIuUq2ivOhY/AkVQBhWTevSlAwMfjQEg/7YEiYNb/DCavqkoRhzXxHrj XyzVY0R62x2BzDPFWWUIxVtA2QAG+xPk12Xe+8uKbND/KfF89njbtPE0eI+u3BMUppWm 2BA6PKVcH49K/peRwtZedCVLdX/YFB7hPHsxwHpYMeeBdsxisoTcXtfSB9pLuL7/CLbU bG5x+MDlItXbsVLLf4wQT+DN3I/5H4UMBPV0vdXsF8DaDKop0J/xit3HcLxhCjCkYmlr kwRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693343894; x=1693948694; 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=K5WkYU+ZYxgD64kjAMs9uLG2heEm5Za9NmW4DWN+TC4=; b=J1fWAQhNOyveLh1OwtEqb32/gwzVqG1m2WCxikc0pXGYTi/KRTL3ItDLusbk8DF1EO s3AUkQXNwNT6lGs8FHuMWuQl0CnZ10ZOnOhltA5RslKgteM9BMSnPMOonb4xLCOl2vV9 cuSnbzRN1GTnfzndBrdp7DHYOYKslAKWBV1D5RejS4QFzmC9PAILeAjlSRIuLgQcCl9y xRHEtW1LpkpbNkSSLmjdurNE5IVaSh7QFoHocD8t/TXQ8j+cTyCZHwhv89OFVKLAyZET W4etDxjYLbYfX5WdCIa8UmWXtgrDvhnEft44fPBO6isMgSRappqrm4YKxqseGrNl4Lzl WUEQ== X-Gm-Message-State: AOJu0Yy/LnwDIO3YdZ8rpdg0ZNtJqc849lBmzegukAUFTciJ9h+VkOvl A9Po45QmNmXTeXTQP5qJZ9PWDuK+WLDoxRQeha55I00h X-Google-Smtp-Source: AGHT+IF5xlr1DTNmYMrQFHPlRTLuRvz+fIxVrt2Nc70FCVSWMSJIWSqQ3/v31cix8EWtYkeH7fifr+h7vTu4MEpoP8Y= X-Received: by 2002:a05:6102:3c7:b0:44e:94b3:9253 with SMTP id n7-20020a05610203c700b0044e94b39253mr456161vsq.12.1693343894152; Tue, 29 Aug 2023 14:18:14 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Paul B Mahol Date: Tue, 29 Aug 2023 23:25:30 +0200 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="0000000000004b40b106041659f1" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH] OSQ lossless audio format support 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: --0000000000004b40b106041659f1 Content-Type: text/plain; charset="UTF-8" Now with always bitexact output and other improvements and fixes. --0000000000004b40b106041659f1 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-avformat-add-OSQ-demuxer.patch" Content-Disposition: attachment; filename="0002-avformat-add-OSQ-demuxer.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_llwtgxjx0 RnJvbSAyMDgyNjU3MDdkNTdkYmMxNGZlYzg4NjYyOTMwN2MyMzlmMDEwOTBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMjcgSnVuIDIwMjMgMTk6NTE6NTQgKzAyMDAKU3ViamVjdDogW1BBVENIIDIvMl0gYXZm b3JtYXQ6IGFkZCBPU1EgZGVtdXhlcgoKU2lnbmVkLW9mZi1ieTogUGF1bCBCIE1haG9sIDxvbmVt ZGFAZ21haWwuY29tPgotLS0KIGxpYmF2Zm9ybWF0L01ha2VmaWxlICAgICB8ICAgMSArCiBsaWJh dmZvcm1hdC9hbGxmb3JtYXRzLmMgfCAgIDEgKwogbGliYXZmb3JtYXQvb3NxLmMgICAgICAgIHwg MTE5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFu Z2VkLCAxMjEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Zm9ybWF0L29z cS5jCgpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtl ZmlsZQppbmRleCBiZDc4YzIwNmI5Li4xYzhjOTY1YTc0IDEwMDY0NAotLS0gYS9saWJhdmZvcm1h dC9NYWtlZmlsZQorKysgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQpAQCAtNDMzLDYgKzQzMyw3IEBA IE9CSlMtJChDT05GSUdfT01BX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gb21hZGVjLm8gcGNt Lm8gb21hLm8KIE9CSlMtJChDT05GSUdfT01BX01VWEVSKSAgICAgICAgICAgICAgICAgKz0gb21h ZW5jLm8gcmF3ZW5jLm8gb21hLm8gaWQzdjJlbmMubwogT0JKUy0kKENPTkZJR19PUFVTX01VWEVS KSAgICAgICAgICAgICAgICArPSBvZ2dlbmMubyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZvcmJpc2NvbW1lbnQubworT0JKUy0kKENPTkZJR19PU1FfREVN VVhFUikgICAgICAgICAgICAgICArPSBvc3EubyByYXdkZWMubwogT0JKUy0kKENPTkZJR19QQUZf REVNVVhFUikgICAgICAgICAgICAgICArPSBwYWYubwogT0JKUy0kKENPTkZJR19QQ01fQUxBV19E RU1VWEVSKSAgICAgICAgICArPSBwY21kZWMubyBwY20ubwogT0JKUy0kKENPTkZJR19QQ01fQUxB V19NVVhFUikgICAgICAgICAgICArPSBwY21lbmMubyByYXdlbmMubwpkaWZmIC0tZ2l0IGEvbGli YXZmb3JtYXQvYWxsZm9ybWF0cy5jIGIvbGliYXZmb3JtYXQvYWxsZm9ybWF0cy5jCmluZGV4IDYz MjQ5NTJiZDIuLmY0MjEwZTQ5MzIgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMu YworKysgYi9saWJhdmZvcm1hdC9hbGxmb3JtYXRzLmMKQEAgLTMzMSw2ICszMzEsNyBAQCBleHRl cm4gY29uc3QgRkZPdXRwdXRGb3JtYXQgZmZfb2d2X211eGVyOwogZXh0ZXJuIGNvbnN0IEFWSW5w dXRGb3JtYXQgIGZmX29tYV9kZW11eGVyOwogZXh0ZXJuIGNvbnN0IEZGT3V0cHV0Rm9ybWF0IGZm X29tYV9tdXhlcjsKIGV4dGVybiBjb25zdCBGRk91dHB1dEZvcm1hdCBmZl9vcHVzX211eGVyOwor ZXh0ZXJuIGNvbnN0IEFWSW5wdXRGb3JtYXQgIGZmX29zcV9kZW11eGVyOwogZXh0ZXJuIGNvbnN0 IEFWSW5wdXRGb3JtYXQgIGZmX3BhZl9kZW11eGVyOwogZXh0ZXJuIGNvbnN0IEFWSW5wdXRGb3Jt YXQgIGZmX3BjbV9hbGF3X2RlbXV4ZXI7CiBleHRlcm4gY29uc3QgRkZPdXRwdXRGb3JtYXQgZmZf cGNtX2FsYXdfbXV4ZXI7CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9vc3EuYyBiL2xpYmF2Zm9y bWF0L29zcS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjM2M2M4YTNm NDIKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmZvcm1hdC9vc3EuYwpAQCAtMCwwICsxLDExOSBA QAorLyoKKyAqIE9TUSBkZW11eGVyCisgKiBDb3B5cmlnaHQgKGMpIDIwMjMgUGF1bCBCIE1haG9s CisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl cgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0 aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRlICJsaWJh dnV0aWwvaW50cmVhZHdyaXRlLmgiCisjaW5jbHVkZSAiYXZpb19pbnRlcm5hbC5oIgorI2luY2x1 ZGUgImF2Zm9ybWF0LmgiCisjaW5jbHVkZSAiZGVtdXguaCIKKyNpbmNsdWRlICJpbnRlcm5hbC5o IgorI2luY2x1ZGUgInJhd2RlYy5oIgorCitzdGF0aWMgaW50IG9zcV9wcm9iZShjb25zdCBBVlBy b2JlRGF0YSAqcCkKK3sKKyAgICBpZiAoQVZfUkwzMihwLT5idWYpICE9IE1LVEFHKCdPJywnUycs J1EnLCcgJykpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChBVl9STDMyKHAtPmJ1ZiArIDQp ICE9IDQ4KQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoQVZfUkwxNihwLT5idWYgKyA4KSAh PSAxKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAocC0+YnVmWzEwXSA9PSAwKQorICAgICAg ICByZXR1cm4gMDsKKyAgICBpZiAocC0+YnVmWzExXSA9PSAwKQorICAgICAgICByZXR1cm4gMDsK KyAgICBpZiAoQVZfUkwzMihwLT5idWYgKyAxMikgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7Cisg ICAgaWYgKEFWX1JMMTYocC0+YnVmICsgMTYpID09IDApCisgICAgICAgIHJldHVybiAwOworCisg ICAgcmV0dXJuIEFWUFJPQkVfU0NPUkVfTUFYOworfQorCitzdGF0aWMgaW50IG9zcV9yZWFkX2hl YWRlcihBVkZvcm1hdENvbnRleHQgKnMpCit7CisgICAgdWludDMyX3QgdCwgc2l6ZTsKKyAgICBB VlN0cmVhbSAqc3Q7CisgICAgaW50IHJldDsKKworICAgIHQgPSBhdmlvX3JsMzIocy0+cGIpOwor ICAgIGlmICh0ICE9IE1LVEFHKCdPJywnUycsJ1EnLCcgJykpCisgICAgICAgIHJldHVybiBBVkVS Uk9SX0lOVkFMSUREQVRBOworCisgICAgc2l6ZSA9IGF2aW9fcmwzMihzLT5wYik7CisgICAgaWYg KHNpemUgIT0gNDgpCisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworCisgICAg c3QgPSBhdmZvcm1hdF9uZXdfc3RyZWFtKHMsIE5VTEwpOworICAgIGlmICghc3QpCisgICAgICAg IHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisgICAgaWYgKChyZXQgPSBmZl9nZXRfZXh0cmFkYXRh KHMsIHN0LT5jb2RlY3Bhciwgcy0+cGIsIHNpemUpKSA8IDApCisgICAgICAgIHJldHVybiByZXQ7 CisKKyAgICB0ID0gYXZpb19ybDMyKHMtPnBiKTsKKyAgICBpZiAodCAhPSBNS1RBRygnUicsJ0kn LCdGJywnRicpKQorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICBhdmlv X3NraXAocy0+cGIsIDgpOworCisgICAgdCA9IGF2aW9fcmwzMihzLT5wYik7CisgICAgaWYgKHQg IT0gTUtUQUcoJ2YnLCdtJywndCcsJyAnKSkKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJ RERBVEE7CisgICAgc2l6ZSA9IGF2aW9fcmwzMihzLT5wYik7CisgICAgYXZpb19za2lwKHMtPnBi LCBzaXplKTsKKworICAgIHQgPSBhdmlvX3JsMzIocy0+cGIpOworICAgIHNpemUgPSBhdmlvX3Js MzIocy0+cGIpOworICAgIHdoaWxlICh0ICE9IE1LVEFHKCdkJywnYScsJ3QnLCdhJykpIHsKKyAg ICAgICAgYXZpb19za2lwKHMtPnBiLCBzaXplKTsKKworICAgICAgICB0ID0gYXZpb19ybDMyKHMt PnBiKTsKKyAgICAgICAgc2l6ZSA9IGF2aW9fcmwzMihzLT5wYik7CisgICAgICAgIGlmIChhdmlv X2Zlb2Yocy0+cGIpKQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cisg ICAgfQorCisgICAgc3QtPmNvZGVjcGFyLT5jb2RlY190eXBlICA9IEFWTUVESUFfVFlQRV9BVURJ TzsKKyAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkICAgID0gQVZfQ09ERUNfSURfT1NROworICAg IHN0LT5jb2RlY3Bhci0+c2FtcGxlX3JhdGUgPSBBVl9STDMyKHN0LT5jb2RlY3Bhci0+ZXh0cmFk YXRhICsgNCk7CisgICAgaWYgKHN0LT5jb2RlY3Bhci0+c2FtcGxlX3JhdGUgPD0gMCkKKyAgICAg ICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgYXZfY2hhbm5lbF9sYXlvdXRfdW5p bml0KCZzdC0+Y29kZWNwYXItPmNoX2xheW91dCk7CisgICAgc3QtPmNvZGVjcGFyLT5jaF9sYXlv dXQub3JkZXIgPSBBVl9DSEFOTkVMX09SREVSX1VOU1BFQzsKKyAgICBzdC0+Y29kZWNwYXItPmNo X2xheW91dC5uYl9jaGFubmVscyA9IHN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhWzNdOworICAgIGlm IChzdC0+Y29kZWNwYXItPmNoX2xheW91dC5uYl9jaGFubmVscyA9PSAwKQorICAgICAgICByZXR1 cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICBzdC0+c3RhcnRfdGltZSA9IDA7CisgICAgc3Qt PmR1cmF0aW9uID0gQVZfUkwzMihzdC0+Y29kZWNwYXItPmV4dHJhZGF0YSArIDE2KTsKKyAgICBh dnByaXZfc2V0X3B0c19pbmZvKHN0LCA2NCwgMSwgc3QtPmNvZGVjcGFyLT5zYW1wbGVfcmF0ZSk7 CisKKyAgICByZXR1cm4gMDsKK30KKworY29uc3QgQVZJbnB1dEZvcm1hdCBmZl9vc3FfZGVtdXhl ciA9IHsKKyAgICAubmFtZSAgICAgICAgICAgPSAib3NxIiwKKyAgICAubG9uZ19uYW1lICAgICAg PSBOVUxMX0lGX0NPTkZJR19TTUFMTCgicmF3IE9TUSIpLAorICAgIC5yZWFkX3Byb2JlICAgICA9 IG9zcV9wcm9iZSwKKyAgICAucmVhZF9oZWFkZXIgICAgPSBvc3FfcmVhZF9oZWFkZXIsCisgICAg LnJlYWRfcGFja2V0ICAgID0gZmZfcmF3X3JlYWRfcGFydGlhbF9wYWNrZXQsCisgICAgLmV4dGVu c2lvbnMgICAgID0gIm9zcSIsCisgICAgLmZsYWdzICAgICAgICAgID0gQVZGTVRfTk9CSU5TRUFS Q0ggfCBBVkZNVF9OT0dFTlNFQVJDSCB8IEFWRk1UX05PX0JZVEVfU0VFSyB8IEFWRk1UX05PVElN RVNUQU1QUywKKyAgICAucmF3X2NvZGVjX2lkICAgPSBBVl9DT0RFQ19JRF9PU1EsCisgICAgLnBy aXZfZGF0YV9zaXplID0gc2l6ZW9mKEZGUmF3RGVtdXhlckNvbnRleHQpLAorICAgIC5wcml2X2Ns YXNzICAgICA9ICZmZl9yYXdfZGVtdXhlcl9jbGFzcywKK307Ci0tIAoyLjM5LjEKCg== --0000000000004b40b106041659f1 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-avcodec-add-OSQ-audio-decoder.patch" Content-Disposition: attachment; filename="0001-avcodec-add-OSQ-audio-decoder.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_llwtgxnd1 RnJvbSA1MDc5NTQwYTQxZTIzZTk5MWZmZWE2NDFkYjAwZGVhMWNhZTQyMDFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMjcgSnVuIDIwMjMgMTk6NTQ6MjUgKzAyMDAKU3ViamVjdDogW1BBVENIIDEvMl0gYXZj b2RlYzogYWRkIE9TUSBhdWRpbyBkZWNvZGVyCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIEIgTWFob2wg PG9uZW1kYUBnbWFpbC5jb20+Ci0tLQogbGliYXZjb2RlYy9NYWtlZmlsZSAgICAgfCAgIDEgKwog bGliYXZjb2RlYy9hbGxjb2RlY3MuYyAgfCAgIDEgKwogbGliYXZjb2RlYy9jb2RlY19kZXNjLmMg fCAgIDcgKwogbGliYXZjb2RlYy9jb2RlY19pZC5oICAgfCAgIDEgKwogbGliYXZjb2RlYy9vc3Eu YyAgICAgICAgfCA0NzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog NSBmaWxlcyBjaGFuZ2VkLCA0ODUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxp YmF2Y29kZWMvb3NxLmMKCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL01ha2VmaWxlIGIvbGliYXZj b2RlYy9NYWtlZmlsZQppbmRleCAzYzE2YjUxNDYyLi5mM2FmZGE2MWQ0IDEwMDY0NAotLS0gYS9s aWJhdmNvZGVjL01ha2VmaWxlCisrKyBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKQEAgLTU3OSw2ICs1 NzksNyBAQCBPQkpTLSQoQ09ORklHX09QVVNfREVDT0RFUikgICAgICAgICAgICArPSBvcHVzZGVj Lm8gb3B1c2RlY19jZWx0Lm8gb3B1c19jZWx0Lm8gXAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb3B1c2RzcC5vIG9wdXNfcGFyc2UubyBvcHVzX3JjLm8KIE9CSlMt JChDT05GSUdfT1BVU19FTkNPREVSKSAgICAgICAgICAgICs9IG9wdXNlbmMubyBvcHVzZW5jX3Bz eS5vIG9wdXNfY2VsdC5vIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9wdXNfcHZxLm8gb3B1c19yYy5vIG9wdXN0YWIubworT0JKUy0kKENPTkZJR19PU1FfREVD T0RFUikgICAgICAgICAgICAgKz0gb3NxLm8KIE9CSlMtJChDT05GSUdfUEFGX0FVRElPX0RFQ09E RVIpICAgICAgICs9IHBhZmF1ZGlvLm8KIE9CSlMtJChDT05GSUdfUEFGX1ZJREVPX0RFQ09ERVIp ICAgICAgICs9IHBhZnZpZGVvLm8KIE9CSlMtJChDT05GSUdfUEFNX0RFQ09ERVIpICAgICAgICAg ICAgICs9IHBubWRlYy5vIHBubS5vCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FsbGNvZGVjcy5j IGIvbGliYXZjb2RlYy9hbGxjb2RlY3MuYwppbmRleCA4Nzc1ZDE1YTRmLi42ZTk1Y2E1NjM2IDEw MDY0NAotLS0gYS9saWJhdmNvZGVjL2FsbGNvZGVjcy5jCisrKyBiL2xpYmF2Y29kZWMvYWxsY29k ZWNzLmMKQEAgLTUxNiw2ICs1MTYsNyBAQCBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9uZWxseW1v c2VyX2RlY29kZXI7CiBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9vbjJhdmNfZGVjb2RlcjsKIGV4 dGVybiBjb25zdCBGRkNvZGVjIGZmX29wdXNfZW5jb2RlcjsKIGV4dGVybiBjb25zdCBGRkNvZGVj IGZmX29wdXNfZGVjb2RlcjsKK2V4dGVybiBjb25zdCBGRkNvZGVjIGZmX29zcV9kZWNvZGVyOwog ZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfcGFmX2F1ZGlvX2RlY29kZXI7CiBleHRlcm4gY29uc3Qg RkZDb2RlYyBmZl9xY2VscF9kZWNvZGVyOwogZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfcWRtMl9k ZWNvZGVyOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9jb2RlY19kZXNjLmMgYi9saWJhdmNvZGVj L2NvZGVjX2Rlc2MuYwppbmRleCA0NDA2ZGQ4MzE4Li5mNTU2YmI5NGQ1IDEwMDY0NAotLS0gYS9s aWJhdmNvZGVjL2NvZGVjX2Rlc2MuYworKysgYi9saWJhdmNvZGVjL2NvZGVjX2Rlc2MuYwpAQCAt MzQxMyw2ICszNDEzLDEzIEBAIHN0YXRpYyBjb25zdCBBVkNvZGVjRGVzY3JpcHRvciBjb2RlY19k ZXNjcmlwdG9yc1tdID0gewogICAgICAgICAubG9uZ19uYW1lID0gTlVMTF9JRl9DT05GSUdfU01B TEwoIkFDLTQiKSwKICAgICAgICAgLnByb3BzICAgICA9IEFWX0NPREVDX1BST1BfTE9TU1ksCiAg ICAgfSwKKyAgICB7CisgICAgICAgIC5pZCAgICAgICAgPSBBVl9DT0RFQ19JRF9PU1EsCisgICAg ICAgIC50eXBlICAgICAgPSBBVk1FRElBX1RZUEVfQVVESU8sCisgICAgICAgIC5uYW1lICAgICAg PSAib3NxIiwKKyAgICAgICAgLmxvbmdfbmFtZSA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJPU1Eg KE9yaWdpbmFsIFNvdW5kIFF1YWxpdHkpIiksCisgICAgICAgIC5wcm9wcyAgICAgPSBBVl9DT0RF Q19QUk9QX0lOVFJBX09OTFkgfCBBVl9DT0RFQ19QUk9QX0xPU1NMRVNTLAorICAgIH0sCiAKICAg ICAvKiBzdWJ0aXRsZSBjb2RlY3MgKi8KICAgICB7CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Nv ZGVjX2lkLmggYi9saWJhdmNvZGVjL2NvZGVjX2lkLmgKaW5kZXggYTVhMGNiODUyNS4uMjliNDEw YjhkMyAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9jb2RlY19pZC5oCisrKyBiL2xpYmF2Y29kZWMv Y29kZWNfaWQuaApAQCAtNTQzLDYgKzU0Myw3IEBAIGVudW0gQVZDb2RlY0lEIHsKICAgICBBVl9D T0RFQ19JRF9XQVZBUkMsCiAgICAgQVZfQ09ERUNfSURfUktBLAogICAgIEFWX0NPREVDX0lEX0FD NCwKKyAgICBBVl9DT0RFQ19JRF9PU1EsCiAKICAgICAvKiBzdWJ0aXRsZSBjb2RlY3MgKi8KICAg ICBBVl9DT0RFQ19JRF9GSVJTVF9TVUJUSVRMRSA9IDB4MTcwMDAsICAgICAgICAgIC8vLzwgQSBk dW1teSBJRCBwb2ludGluZyBhdCB0aGUgc3RhcnQgb2Ygc3VidGl0bGUgY29kZWNzLgpkaWZmIC0t Z2l0IGEvbGliYXZjb2RlYy9vc3EuYyBiL2xpYmF2Y29kZWMvb3NxLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDc1ODdjZDgxMgotLS0gL2Rldi9udWxsCisrKyBiL2xp YmF2Y29kZWMvb3NxLmMKQEAgLTAsMCArMSw0NzUgQEAKKy8qCisgKiBPU1EgYXVkaW8gZGVjb2Rl cgorICogQ29weXJpZ2h0IChjKSAyMDIzIFBhdWwgQiBNYWhvbAorICoKKyAqIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK KyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcg d2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5k YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg MDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAibGliYXZ1dGlsL2ludGVybmFsLmgiCisj aW5jbHVkZSAibGliYXZ1dGlsL2ludHJlYWR3cml0ZS5oIgorI2luY2x1ZGUgImF2Y29kZWMuaCIK KyNpbmNsdWRlICJjb2RlY19pbnRlcm5hbC5oIgorI2luY2x1ZGUgImRlY29kZS5oIgorI2luY2x1 ZGUgImludGVybmFsLmgiCisjZGVmaW5lIEJJVFNUUkVBTV9SRUFERVJfTEUKKyNpbmNsdWRlICJn ZXRfYml0cy5oIgorI2luY2x1ZGUgInVuYXJ5LmgiCisKKyNkZWZpbmUgT0ZGU0VUIDUKKwordHlw ZWRlZiBzdHJ1Y3QgT1NRQ2hhbm5lbCB7CisgICAgdW5zaWduZWQgcHJlZGljdGlvbjsKKyAgICB1 bnNpZ25lZCBjb2RpbmdfbW9kZTsKKyAgICB1bnNpZ25lZCByZXNpZHVlX3BhcmFtZXRlcjsKKyAg ICB1bnNpZ25lZCByZXNpZHVlX2JpdHM7CisgICAgdW5zaWduZWQgaGlzdG9yeVszXTsKKyAgICB1 bnNpZ25lZCBwb3MsIGNvdW50OworICAgIGRvdWJsZSBzdW07CisgICAgaW50MzJfdCBwcmV2Owor fSBPU1FDaGFubmVsOworCit0eXBlZGVmIHN0cnVjdCBPU1FDb250ZXh0IHsKKyAgICBHZXRCaXRD b250ZXh0IGdiOworICAgIE9TUUNoYW5uZWwgY2hbMl07CisKKyAgICB1aW50OF90ICpiaXRzdHJl YW07CisgICAgc2l6ZV90IG1heF9mcmFtZXNpemU7CisgICAgc2l6ZV90IGJpdHN0cmVhbV9zaXpl OworCisgICAgaW50IGRlY29ycmVsYXRlOworICAgIGludCBmcmFtZV9zYW1wbGVzOworICAgIGlu dDY0X3QgbmJfc2FtcGxlczsKKworICAgIGludDMyX3QgKmRlY29kZV9idWZmZXJbMl07CisKKyAg ICBBVlBhY2tldCAqcGt0OworICAgIGludCBwa3Rfb2Zmc2V0OworfSBPU1FDb250ZXh0OworCitz dGF0aWMgYXZfY29sZCBpbnQgb3NxX2Nsb3NlKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKK3sKKyAg ICBPU1FDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKKworICAgIGF2X2ZyZWVwKCZzLT5i aXRzdHJlYW0pOworICAgIHMtPmJpdHN0cmVhbV9zaXplID0gMDsKKworICAgIGZvciAoaW50IGNo ID0gMDsgY2ggPCBGRl9BUlJBWV9FTEVNUyhzLT5kZWNvZGVfYnVmZmVyKTsgY2grKykKKyAgICAg ICAgYXZfZnJlZXAoJnMtPmRlY29kZV9idWZmZXJbY2hdKTsKKworICAgIHJldHVybiAwOworfQor CitzdGF0aWMgYXZfY29sZCBpbnQgb3NxX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQorewor ICAgIE9TUUNvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOworCisgICAgaWYgKGF2Y3R4LT5l eHRyYWRhdGFfc2l6ZSA8IDQ4KQorICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworCisg ICAgaWYgKGF2Y3R4LT5leHRyYWRhdGFbMF0gIT0gMSkgeworICAgICAgICBhdl9sb2coYXZjdHgs IEFWX0xPR19FUlJPUiwgIlVuc3VwcG9ydGVkIHZlcnNpb24uXG4iKTsKKyAgICAgICAgcmV0dXJu IEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgfQorCisgICAgYXZjdHgtPnNhbXBsZV9yYXRlID0g QVZfUkwzMihhdmN0eC0+ZXh0cmFkYXRhICsgNCk7CisgICAgaWYgKGF2Y3R4LT5zYW1wbGVfcmF0 ZSA8IDEpCisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworCisgICAgYXZfY2hh bm5lbF9sYXlvdXRfdW5pbml0KCZhdmN0eC0+Y2hfbGF5b3V0KTsKKyAgICBhdmN0eC0+Y2hfbGF5 b3V0Lm9yZGVyID0gQVZfQ0hBTk5FTF9PUkRFUl9VTlNQRUM7CisgICAgYXZjdHgtPmNoX2xheW91 dC5uYl9jaGFubmVscyA9IGF2Y3R4LT5leHRyYWRhdGFbM107CisgICAgaWYgKGF2Y3R4LT5jaF9s YXlvdXQubmJfY2hhbm5lbHMgPCAxKQorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFU QTsKKyAgICBpZiAoYXZjdHgtPmNoX2xheW91dC5uYl9jaGFubmVscyA+IEZGX0FSUkFZX0VMRU1T KHMtPmRlY29kZV9idWZmZXIpKQorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsK KworICAgIHN3aXRjaCAoYXZjdHgtPmV4dHJhZGF0YVsyXSkgeworICAgIGNhc2UgIDg6IGF2Y3R4 LT5zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9VOFA7IGJyZWFrOworICAgIGNhc2UgMTY6IGF2 Y3R4LT5zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9TMTZQOyBicmVhazsKKyAgICBjYXNlIDIw OgorICAgIGNhc2UgMjQ6CisgICAgY2FzZSAyODoKKyAgICBjYXNlIDMyOiBhdmN0eC0+c2FtcGxl X2ZtdCA9IEFWX1NBTVBMRV9GTVRfUzMyUDsgYnJlYWs7CisgICAgZGVmYXVsdDogcmV0dXJuIEFW RVJST1JfSU5WQUxJRERBVEE7CisgICAgfQorCisgICAgcy0+bmJfc2FtcGxlcyA9IEFWX1JMNjQo YXZjdHgtPmV4dHJhZGF0YSArIDE2KTsKKyAgICBzLT5mcmFtZV9zYW1wbGVzID0gQVZfUkwxNihh dmN0eC0+ZXh0cmFkYXRhICsgOCk7CisgICAgcy0+bWF4X2ZyYW1lc2l6ZSA9IChzLT5mcmFtZV9z YW1wbGVzICogMTYgKyAxMDI0KSAqIGF2Y3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHM7CisKKyAg ICBzLT5iaXRzdHJlYW0gPSBhdl9jYWxsb2Mocy0+bWF4X2ZyYW1lc2l6ZSArIEFWX0lOUFVUX0JV RkZFUl9QQURESU5HX1NJWkUsIHNpemVvZigqcy0+Yml0c3RyZWFtKSk7CisgICAgaWYgKCFzLT5i aXRzdHJlYW0pCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICBmb3IgKGlu dCBjaCA9IDA7IGNoIDwgYXZjdHgtPmNoX2xheW91dC5uYl9jaGFubmVsczsgY2grKykgeworICAg ICAgICBzLT5kZWNvZGVfYnVmZmVyW2NoXSA9IGF2X2NhbGxvYyhzLT5mcmFtZV9zYW1wbGVzICsg T0ZGU0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yo KnMtPmRlY29kZV9idWZmZXJbY2hdKSk7CisgICAgICAgIGlmICghcy0+ZGVjb2RlX2J1ZmZlcltj aF0pCisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworICAgIH0KKworICAgIHMt PnBrdCA9IGF2Y3R4LT5pbnRlcm5hbC0+aW5fcGt0OworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyB2b2lkIHJlc2V0X3N0YXRzKE9TUUNoYW5uZWwgKmNiKQoreworICAgIG1lbXNldChjYi0+ aGlzdG9yeSwgMCwgc2l6ZW9mKGNiLT5oaXN0b3J5KSk7CisgICAgY2ItPnBvcyA9IGNiLT5jb3Vu dCA9IGNiLT5zdW0gPSAwOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVfc3RhdHMoT1NRQ2hhbm5l bCAqY2IsIGludCB2YWwpCit7CisgICAgY2ItPnN1bSArPSBGRkFCUyh2YWwpIC0gY2ItPmhpc3Rv cnlbY2ItPnBvc107CisgICAgY2ItPmhpc3RvcnlbY2ItPnBvc10gPSBGRkFCUyh2YWwpOworICAg IGNiLT5wb3MrKzsKKyAgICBjYi0+Y291bnQrKzsKKyAgICBpZiAoY2ItPnBvcyA+PSBGRl9BUlJB WV9FTEVNUyhjYi0+aGlzdG9yeSkpCisgICAgICAgIGNiLT5wb3MgPSAwOworfQorCitzdGF0aWMg aW50IHVwZGF0ZV9yZXNpZHVlX3BhcmFtZXRlcihPU1FDaGFubmVsICpjYikKK3sKKyAgICBkb3Vi bGUgc3VtLCB4OworICAgIGludCByaWNlX2s7CisKKyAgICBzdW0gPSBjYi0+c3VtOworICAgIHgg PSBzdW0gLyBjYi0+Y291bnQ7CisgICAgcmljZV9rID0gYXZfY2VpbF9sb2cyKHgpOworICAgIGlm IChyaWNlX2sgPj0gMzApIHsKKyAgICAgICAgcmljZV9rID0gZmxvb3Ioc3VtIC8gMS40NDI2OTUy ICsgMC41KTsKKyAgICAgICAgaWYgKHJpY2VfayA8IDEpCisgICAgICAgICAgICByaWNlX2sgPSAx OworICAgIH0KKworICAgIHJldHVybiByaWNlX2s7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBnZXRf dXJpY2UoR2V0Qml0Q29udGV4dCAqZ2IsIGludCBrKQoreworICAgIHVpbnQzMl90IHosIHgsIGI7 CisKKyAgICB4ID0gZ2V0X3VuYXJ5KGdiLCAxLCA1MTIpOworICAgIGIgPSBnZXRfYml0c19sb25n KGdiLCBrKTsKKyAgICB6ID0gYiB8IHggPDwgazsKKworICAgIHJldHVybiB6OworfQorCitzdGF0 aWMgaW50MzJfdCBnZXRfc3JpY2UoR2V0Qml0Q29udGV4dCAqZ2IsIGludCB4KQoreworICAgIGlu dDMyX3QgeSA9IGdldF91cmljZShnYiwgeCk7CisgICAgcmV0dXJuIGdldF9iaXRzMShnYikgPyAt eSA6IHk7Cit9CisKK3N0YXRpYyBpbnQgb3NxX2NoYW5uZWxfcGFyYW1ldGVycyhBVkNvZGVjQ29u dGV4dCAqYXZjdHgsIGludCBjaCkKK3sKKyAgICBPU1FDb250ZXh0ICpzID0gYXZjdHgtPnByaXZf ZGF0YTsKKyAgICBPU1FDaGFubmVsICpjYiA9ICZzLT5jaFtjaF07CisgICAgR2V0Qml0Q29udGV4 dCAqZ2IgPSAmcy0+Z2I7CisKKyAgICBjYi0+cHJldiA9IDA7CisgICAgY2ItPnByZWRpY3Rpb24g PSBnZXRfdXJpY2UoZ2IsIDUpOworICAgIGNiLT5jb2RpbmdfbW9kZSA9IGdldF91cmljZShnYiwg Myk7CisgICAgaWYgKGNiLT5wcmVkaWN0aW9uID49IDE1KQorICAgICAgICByZXR1cm4gQVZFUlJP Ul9JTlZBTElEREFUQTsKKyAgICBpZiAoY2ItPmNvZGluZ19tb2RlID4gMCAmJiBjYi0+Y29kaW5n X21vZGUgPCAzKSB7CisgICAgICAgIGNiLT5yZXNpZHVlX3BhcmFtZXRlciA9IGdldF91cmljZShn YiwgNCk7CisgICAgICAgIGlmICghY2ItPnJlc2lkdWVfcGFyYW1ldGVyIHx8IGNiLT5yZXNpZHVl X3BhcmFtZXRlciA+PSAzMSkKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRB OworICAgIH0gZWxzZSBpZiAoY2ItPmNvZGluZ19tb2RlID09IDMpIHsKKyAgICAgICAgY2ItPnJl c2lkdWVfYml0cyA9IGdldF91cmljZShnYiwgNCk7CisgICAgICAgIGlmICghY2ItPnJlc2lkdWVf Yml0cyB8fCBjYi0+cmVzaWR1ZV9iaXRzID49IDMxKQorICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1JfSU5WQUxJRERBVEE7CisgICAgfSBlbHNlIGlmIChjYi0+Y29kaW5nX21vZGUpIHsKKyAgICAg ICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgfQorCisgICAgaWYgKGNiLT5jb2Rp bmdfbW9kZSA9PSAyKQorICAgICAgICByZXNldF9zdGF0cyhjYik7CisKKyAgICByZXR1cm4gMDsK K30KKworI2RlZmluZSBBICgtMSkKKyNkZWZpbmUgQiAoLTIpCisjZGVmaW5lIEMgKC0zKQorI2Rl ZmluZSBEICgtNCkKKyNkZWZpbmUgRSAoLTUpCisjZGVmaW5lIFAyICgoZHN0W0FdICsgZHN0W0Fd KSAtIGRzdFtCXSkKKyNkZWZpbmUgUDMgKChkc3RbQV0gLSBkc3RbQl0pICogMyArIGRzdFtDXSkK Kworc3RhdGljIGludCBkb19kZWNvZGUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpm cmFtZSwgaW50IGRlY29ycmVsYXRlLCBpbnQgZG93bnNhbXBsZSkKK3sKKyAgICBPU1FDb250ZXh0 ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKKyAgICBjb25zdCBpbnQgbmJfY2hhbm5lbHMgPSBhdmN0 eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOworICAgIGNvbnN0IGludCBuYl9zYW1wbGVzID0gZnJh bWUtPm5iX3NhbXBsZXM7CisgICAgR2V0Qml0Q29udGV4dCAqZ2IgPSAmcy0+Z2I7CisKKyAgICBm b3IgKGludCBuID0gMDsgbiA8IG5iX3NhbXBsZXM7IG4rKykgeworICAgICAgICBmb3IgKGludCBj aCA9IDA7IGNoIDwgbmJfY2hhbm5lbHM7IGNoKyspIHsKKyAgICAgICAgICAgIE9TUUNoYW5uZWwg KmNiID0gJnMtPmNoW2NoXTsKKyAgICAgICAgICAgIGludDMyX3QgKmRzdCA9IHMtPmRlY29kZV9i dWZmZXJbY2hdICsgT0ZGU0VUOworICAgICAgICAgICAgaW50MzJfdCBwLCBwcmV2ID0gY2ItPnBy ZXY7CisKKyAgICAgICAgICAgIGlmIChuYl9jaGFubmVscyA9PSAyICYmIGNoID09IDEgJiYgZGVj b3JyZWxhdGUgIT0gcy0+ZGVjb3JyZWxhdGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWRlY29y cmVsYXRlKSB7CisgICAgICAgICAgICAgICAgICAgIHMtPmRlY29kZV9idWZmZXJbMV1bT0ZGU0VU K0FdICs9IHMtPmRlY29kZV9idWZmZXJbMF1bT0ZGU0VUK0JdOworICAgICAgICAgICAgICAgICAg ICBzLT5kZWNvZGVfYnVmZmVyWzFdW09GRlNFVCtCXSArPSBzLT5kZWNvZGVfYnVmZmVyWzBdW09G RlNFVCtDXTsKKyAgICAgICAgICAgICAgICAgICAgcy0+ZGVjb2RlX2J1ZmZlclsxXVtPRkZTRVQr Q10gKz0gcy0+ZGVjb2RlX2J1ZmZlclswXVtPRkZTRVQrRF07CisgICAgICAgICAgICAgICAgICAg IHMtPmRlY29kZV9idWZmZXJbMV1bT0ZGU0VUK0RdICs9IHMtPmRlY29kZV9idWZmZXJbMF1bT0ZG U0VUK0VdOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHMt PmRlY29kZV9idWZmZXJbMV1bT0ZGU0VUK0FdIC09IHMtPmRlY29kZV9idWZmZXJbMF1bT0ZGU0VU K0JdOworICAgICAgICAgICAgICAgICAgICBzLT5kZWNvZGVfYnVmZmVyWzFdW09GRlNFVCtCXSAt PSBzLT5kZWNvZGVfYnVmZmVyWzBdW09GRlNFVCtDXTsKKyAgICAgICAgICAgICAgICAgICAgcy0+ ZGVjb2RlX2J1ZmZlclsxXVtPRkZTRVQrQ10gLT0gcy0+ZGVjb2RlX2J1ZmZlclswXVtPRkZTRVQr RF07CisgICAgICAgICAgICAgICAgICAgIHMtPmRlY29kZV9idWZmZXJbMV1bT0ZGU0VUK0RdIC09 IHMtPmRlY29kZV9idWZmZXJbMF1bT0ZGU0VUK0VdOworICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICBzLT5kZWNvcnJlbGF0ZSA9IGRlY29ycmVsYXRlOworICAgICAgICAgICAgfQor CisgICAgICAgICAgICBpZiAoIWNiLT5jb2RpbmdfbW9kZSkgeworICAgICAgICAgICAgICAgIGRz dFtuXSA9IDA7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNiLT5jb2RpbmdfbW9kZSA9PSAzKSB7 CisgICAgICAgICAgICAgICAgZHN0W25dID0gZ2V0X3NiaXRzX2xvbmcoZ2IsIGNiLT5yZXNpZHVl X2JpdHMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkc3Rbbl0gPSBn ZXRfc3JpY2UoZ2IsIGNiLT5yZXNpZHVlX3BhcmFtZXRlcik7CisgICAgICAgICAgICB9CisKKyAg ICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDApIHsKKyAgICAgICAgICAgICAgICBh dl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIm92ZXJyZWFkIVxuIik7CisgICAgICAgICAgICAg ICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg ICAgIHAgPSBwcmV2IC8gMjsKKyAgICAgICAgICAgIHByZXYgPSBkc3Rbbl07CisKKyAgICAgICAg ICAgIHN3aXRjaCAoY2ItPnByZWRpY3Rpb24pIHsKKyAgICAgICAgICAgIGNhc2UgMDoKKyAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICBk c3Rbbl0gKz0gZHN0W0FdOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz ZSAyOgorICAgICAgICAgICAgICAgIGRzdFtuXSArPSBkc3RbQV0gKyBwOworICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgIGRzdFtuXSAr PSBQMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNDoKKyAgICAg ICAgICAgICAgICBkc3Rbbl0gKz0gUDIgKyBwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgICAgIGRzdFtuXSArPSBQMzsKKyAgICAgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICAgICAgICBkc3Rb bl0gKz0gUDMgKyBwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSA3 OgorICAgICAgICAgICAgICAgIGRzdFtuXSArPSAoUDIgKyBQMykgLyAyICsgcDsKKyAgICAgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgODoKKyAgICAgICAgICAgICAgICBkc3Rb bl0gKz0gKFAyICsgUDMpIC8gMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg IGNhc2UgOToKKyAgICAgICAgICAgICAgICBkc3Rbbl0gKz0gKFAyICogMiArIFAzKSAvIDMgKyBw OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMDoKKyAgICAgICAg ICAgICAgICBkc3Rbbl0gKz0gKFAyICsgUDMgKiAyKSAvIDMgKyBwOworICAgICAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMToKKyAgICAgICAgICAgICAgICBkc3Rbbl0gKz0g KGRzdFtBXSArIGRzdFtCXSkgLyAyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg ICAgY2FzZSAxMjoKKyAgICAgICAgICAgICAgICBkc3Rbbl0gKz0gZHN0W0JdOworICAgICAgICAg ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMzoKKyAgICAgICAgICAgICAgICBkc3Rb bl0gKz0gKGRzdFtEXSArIGRzdFtCXSkgLyAyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgICAgY2FzZSAxNDoKKyAgICAgICAgICAgICAgICBkc3Rbbl0gKz0gKFAyICsgZHN0W0Fd KSAvIDIgKyBwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK KyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgICAg IH0KKworICAgICAgICAgICAgY2ItPnByZXYgPSBwcmV2OworCisgICAgICAgICAgICBpZiAoZG93 bnNhbXBsZSkKKyAgICAgICAgICAgICAgICBkc3Rbbl0gKj0gMjU2OworCisgICAgICAgICAgICBk c3RbRV0gPSBkc3RbRF07CisgICAgICAgICAgICBkc3RbRF0gPSBkc3RbQ107CisgICAgICAgICAg ICBkc3RbQ10gPSBkc3RbQl07CisgICAgICAgICAgICBkc3RbQl0gPSBkc3RbQV07CisgICAgICAg ICAgICBkc3RbQV0gPSBkc3Rbbl07CisKKyAgICAgICAgICAgIGlmIChjYi0+Y29kaW5nX21vZGUg PT0gMikgeworICAgICAgICAgICAgICAgIHVwZGF0ZV9zdGF0cyhjYiwgZHN0W25dKTsKKyAgICAg ICAgICAgICAgICBjYi0+cmVzaWR1ZV9wYXJhbWV0ZXIgPSB1cGRhdGVfcmVzaWR1ZV9wYXJhbWV0 ZXIoY2IpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobmJfY2hhbm5lbHMgPT0g MiAmJiBjaCA9PSAxKSB7CisgICAgICAgICAgICAgICAgaWYgKGRlY29ycmVsYXRlKQorICAgICAg ICAgICAgICAgICAgICBkc3Rbbl0gKz0gcy0+ZGVjb2RlX2J1ZmZlclswXVtPRkZTRVQrbl07Cisg ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChkb3duc2FtcGxlKQorICAgICAgICAgICAg ICAgIGRzdFtBXSAvPSAyNTY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBvc3FfZGVjb2RlX2Jsb2NrKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZG cmFtZSAqZnJhbWUpCit7CisgICAgY29uc3QgaW50IG5iX2NoYW5uZWxzID0gYXZjdHgtPmNoX2xh eW91dC5uYl9jaGFubmVsczsKKyAgICBPU1FDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsK KyAgICBpbnQgcmV0LCBkZWNvcnJlbGF0ZSwgZG93bnNhbXBsZTsKKyAgICBHZXRCaXRDb250ZXh0 ICpnYiA9ICZzLT5nYjsKKworICAgIHNraXBfYml0czEoZ2IpOworICAgIGRlY29ycmVsYXRlID0g Z2V0X2JpdHMxKGdiKTsKKyAgICBkb3duc2FtcGxlID0gZ2V0X2JpdHMxKGdiKTsKKworICAgIGZv ciAoaW50IGNoID0gMDsgY2ggPCBuYl9jaGFubmVsczsgY2grKykgeworICAgICAgICBpZiAoKHJl dCA9IG9zcV9jaGFubmVsX3BhcmFtZXRlcnMoYXZjdHgsIGNoKSkgPCAwKSB7CisgICAgICAgICAg ICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgImludmFsaWQgY2hhbm5lbCBwYXJhbWV0ZXJz XG4iKTsKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp ZiAoKHJldCA9IGRvX2RlY29kZShhdmN0eCwgZnJhbWUsIGRlY29ycmVsYXRlLCBkb3duc2FtcGxl KSkgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgYWxpZ25fZ2V0X2JpdHMoZ2IpOwor CisgICAgc3dpdGNoIChhdmN0eC0+c2FtcGxlX2ZtdCkgeworICAgIGNhc2UgQVZfU0FNUExFX0ZN VF9VOFA6CisgICAgICAgIGZvciAoaW50IGNoID0gMDsgY2ggPCBuYl9jaGFubmVsczsgY2grKykg eworICAgICAgICAgICAgdWludDhfdCAqZHN0ID0gKHVpbnQ4X3QgKilmcmFtZS0+ZXh0ZW5kZWRf ZGF0YVtjaF07CisgICAgICAgICAgICBpbnQzMl90ICpzcmMgPSBzLT5kZWNvZGVfYnVmZmVyW2No XSArIE9GRlNFVDsKKworICAgICAgICAgICAgZm9yIChpbnQgbiA9IDA7IG4gPCBmcmFtZS0+bmJf c2FtcGxlczsgbisrKQorICAgICAgICAgICAgICAgIGRzdFtuXSA9IGF2X2NsaXBfdWludDgoc3Jj W25dICsgMHg4MCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBVl9TQU1Q TEVfRk1UX1MxNlA6CisgICAgICAgIGZvciAoaW50IGNoID0gMDsgY2ggPCBuYl9jaGFubmVsczsg Y2grKykgeworICAgICAgICAgICAgaW50MTZfdCAqZHN0ID0gKGludDE2X3QgKilmcmFtZS0+ZXh0 ZW5kZWRfZGF0YVtjaF07CisgICAgICAgICAgICBpbnQzMl90ICpzcmMgPSBzLT5kZWNvZGVfYnVm ZmVyW2NoXSArIE9GRlNFVDsKKworICAgICAgICAgICAgZm9yIChpbnQgbiA9IDA7IG4gPCBmcmFt ZS0+bmJfc2FtcGxlczsgbisrKQorICAgICAgICAgICAgICAgIGRzdFtuXSA9IChpbnQxNl90KXNy Y1tuXTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFWX1NBTVBMRV9GTVRf UzMyUDoKKyAgICAgICAgZm9yIChpbnQgY2ggPSAwOyBjaCA8IG5iX2NoYW5uZWxzOyBjaCsrKSB7 CisgICAgICAgICAgICBpbnQzMl90ICpkc3QgPSAoaW50MzJfdCAqKWZyYW1lLT5leHRlbmRlZF9k YXRhW2NoXTsKKyAgICAgICAgICAgIGludDMyX3QgKnNyYyA9IHMtPmRlY29kZV9idWZmZXJbY2hd ICsgT0ZGU0VUOworCisgICAgICAgICAgICBmb3IgKGludCBuID0gMDsgbiA8IGZyYW1lLT5uYl9z YW1wbGVzOyBuKyspCisgICAgICAgICAgICAgICAgZHN0W25dID0gc3JjW25dOworICAgICAgICB9 CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBBVkVSUk9SX0JV RzsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBvc3FfcmVjZWl2ZV9m cmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lKQoreworICAgIE9TUUNv bnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOworICAgIEdldEJpdENvbnRleHQgKmdiID0gJnMt PmdiOworICAgIGludCByZXQsIG47CisKKyAgICB3aGlsZSAocy0+Yml0c3RyZWFtX3NpemUgPCBz LT5tYXhfZnJhbWVzaXplKSB7CisgICAgICAgIGludCBzaXplOworCisgICAgICAgIGlmICghcy0+ cGt0LT5kYXRhKSB7CisgICAgICAgICAgICByZXQgPSBmZl9kZWNvZGVfZ2V0X3BhY2tldChhdmN0 eCwgcy0+cGt0KTsKKyAgICAgICAgICAgIGlmIChyZXQgPT0gQVZFUlJPUl9FT0YgJiYgcy0+Yml0 c3RyZWFtX3NpemUgPiAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYg KHJldCA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorCisgICAg ICAgIHNpemUgPSBGRk1JTihzLT5wa3QtPnNpemUgLSBzLT5wa3Rfb2Zmc2V0LCBzLT5tYXhfZnJh bWVzaXplIC0gcy0+Yml0c3RyZWFtX3NpemUpOworICAgICAgICBtZW1jcHkocy0+Yml0c3RyZWFt ICsgcy0+Yml0c3RyZWFtX3NpemUsIHMtPnBrdC0+ZGF0YSArIHMtPnBrdF9vZmZzZXQsIHNpemUp OworICAgICAgICBzLT5iaXRzdHJlYW1fc2l6ZSArPSBzaXplOworICAgICAgICBzLT5wa3Rfb2Zm c2V0ICs9IHNpemU7CisKKyAgICAgICAgaWYgKHMtPnBrdF9vZmZzZXQgPT0gcy0+cGt0LT5zaXpl KSB7CisgICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYocy0+cGt0KTsKKyAgICAgICAgICAgIHMt PnBrdF9vZmZzZXQgPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgZnJhbWUtPm5iX3NhbXBs ZXMgPSBGRk1JTihzLT5mcmFtZV9zYW1wbGVzLCBzLT5uYl9zYW1wbGVzKTsKKyAgICBpZiAoZnJh bWUtPm5iX3NhbXBsZXMgPD0gMCkKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfRU9GOworCisgICAg aWYgKChyZXQgPSBmZl9nZXRfYnVmZmVyKGF2Y3R4LCBmcmFtZSwgMCkpIDwgMCkKKyAgICAgICAg Z290byBmYWlsOworCisgICAgaWYgKChyZXQgPSBpbml0X2dldF9iaXRzOChnYiwgcy0+Yml0c3Ry ZWFtLCBzLT5iaXRzdHJlYW1fc2l6ZSkpIDwgMCkKKyAgICAgICAgZ290byBmYWlsOworCisgICAg aWYgKChyZXQgPSBvc3FfZGVjb2RlX2Jsb2NrKGF2Y3R4LCBmcmFtZSkpIDwgMCkKKyAgICAgICAg Z290byBmYWlsOworCisgICAgcy0+bmJfc2FtcGxlcyAtPSBmcmFtZS0+bmJfc2FtcGxlczsKKwor ICAgIG4gPSBnZXRfYml0c19jb3VudChnYikgLyA4OworICAgIGlmIChuID4gcy0+Yml0c3RyZWFt X3NpemUpIHsKKyAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgZ290 byBmYWlsOworICAgIH0KKworICAgIG1lbW1vdmUocy0+Yml0c3RyZWFtLCAmcy0+Yml0c3RyZWFt W25dLCBzLT5iaXRzdHJlYW1fc2l6ZSAtIG4pOworICAgIHMtPmJpdHN0cmVhbV9zaXplIC09IG47 CisKKyAgICByZXR1cm4gMDsKKworZmFpbDoKKyAgICBzLT5iaXRzdHJlYW1fc2l6ZSA9IDA7Cisg ICAgcy0+cGt0X29mZnNldCA9IDA7CisgICAgYXZfcGFja2V0X3VucmVmKHMtPnBrdCk7CisKKyAg ICByZXR1cm4gcmV0OworfQorCitjb25zdCBGRkNvZGVjIGZmX29zcV9kZWNvZGVyID0geworICAg IC5wLm5hbWUgICAgICAgICAgID0gIm9zcSIsCisgICAgQ09ERUNfTE9OR19OQU1FKCJPU1EgKE9y aWdpbmFsIFNvdW5kIFF1YWxpdHkpIiksCisgICAgLnAudHlwZSAgICAgICAgICAgPSBBVk1FRElB X1RZUEVfQVVESU8sCisgICAgLnAuaWQgICAgICAgICAgICAgPSBBVl9DT0RFQ19JRF9PU1EsCisg ICAgLnByaXZfZGF0YV9zaXplICAgPSBzaXplb2YoT1NRQ29udGV4dCksCisgICAgLmluaXQgICAg ICAgICAgICAgPSBvc3FfaW5pdCwKKyAgICBGRl9DT0RFQ19SRUNFSVZFX0ZSQU1FX0NCKG9zcV9y ZWNlaXZlX2ZyYW1lKSwKKyAgICAuY2xvc2UgICAgICAgICAgICA9IG9zcV9jbG9zZSwKKyAgICAu cC5jYXBhYmlsaXRpZXMgICA9IEFWX0NPREVDX0NBUF9DSEFOTkVMX0NPTkYgfAorICAgICAgICAg ICAgICAgICAgICAgICAgQVZfQ09ERUNfQ0FQX0RSMSwKKyAgICAuY2Fwc19pbnRlcm5hbCAgICA9 IEZGX0NPREVDX0NBUF9JTklUX0NMRUFOVVAsCisgICAgLnAuc2FtcGxlX2ZtdHMgICAgPSAoY29u c3QgZW51bSBBVlNhbXBsZUZvcm1hdFtdKSB7IEFWX1NBTVBMRV9GTVRfVThQLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVl9TQU1QTEVf Rk1UX1MxNlAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFWX1NBTVBMRV9GTVRfUzMyUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfU0FNUExFX0ZNVF9OT05FIH0sCit9Owot LSAKMi4zOS4xCgo= --0000000000004b40b106041659f1 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". --0000000000004b40b106041659f1--