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 115054690D for ; Thu, 24 Aug 2023 09:45:36 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EF62968C622; Thu, 24 Aug 2023 12:45:32 +0300 (EEST) Received: from mail-vk1-f174.google.com (mail-vk1-f174.google.com [209.85.221.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9E22868C5E1 for ; Thu, 24 Aug 2023 12:45:26 +0300 (EEST) Received: by mail-vk1-f174.google.com with SMTP id 71dfb90a1353d-48d0dbf4ec5so1508638e0c.2 for ; Thu, 24 Aug 2023 02:45:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692870325; x=1693475125; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=YlRisQeE3IQ9hjc2TdMbipFUQx12rOpqUjzE78shBSM=; b=gwTBCRnhatf3vQ+TPuxo20rr47jcQmDcTRKZwYkn93o6WCnLQhxUvaiOAOIYhYhdEr KDd4QjV5WsLBJFvxALPu0SwFELdwdXvStPJY9mceYJgU2fT5NkpD7okbToSgJgPy/GxM cEmY56e+5hwJrdW/6TvsSoUhH+LtgDGFI54z/2MDxgOw+52VjAGbRWPZUqm8V8SUfoDP yPNec0YqiWz5xvVuzEFEnIeLD1hRuGFEtn0izWLFvOO+/auLd3UCuW53pEYf0jTyPkF5 j4TofUfnD+euhPmNQ316hCLTtRGe8tjw9zpYVt0lPVHRsPzksDyU4x/340JGaS8PFnKx UYrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692870325; x=1693475125; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=YlRisQeE3IQ9hjc2TdMbipFUQx12rOpqUjzE78shBSM=; b=PT0Ft5dAZdsont3Cz7uu43oeQ87DgJe00SoqA7uz8Hf2FBe0NLujFReJo3+/l+EBKZ wXiRUCxH6h87pQg+6MFhSeuayznYxnKVRuA6O5BsoV8eu+VO7RT5z5h+40tJTY98AmiF 3hYPQqFYIutVakBbxDMTTirgs0FFRXeHD7DYphLKJ90DpyEfH03lVU8WKRxbzp/lhgBw YfUDTI24VLWl/6VOsVAlRAEcl1dalfa1/Ur/jtsx8SWB7Ey82Z2RrM1h5bE1m6npbJ55 oqcq64Cic9xVnrTksrysoeUF2qihGoC6wyfh6aGvkOt/RV6YQXCRDgRuH6pUeU6+5YBT 49Hw== X-Gm-Message-State: AOJu0Yx2a4AB+8wKjnR62F890i1d/t4NYz/YAkDcLxhWXjvJ2LshcOif 4aufoCgqDkpiBV2GcnugR1JXu9tIy197FGoyWSyd4Pbp X-Google-Smtp-Source: AGHT+IF8jiRi8cBQRB7KoGOg3RklTazMhX67ljjWjEkmqJI9f6WzS/WBUD/F7mtAqwqaikiMh/ZpnNYQrbMXmeZMs8s= X-Received: by 2002:a1f:c886:0:b0:48f:c2d6:6311 with SMTP id y128-20020a1fc886000000b0048fc2d66311mr2960673vkf.0.1692870324994; Thu, 24 Aug 2023 02:45:24 -0700 (PDT) MIME-Version: 1.0 From: Paul B Mahol Date: Thu, 24 Aug 2023 11:52:45 +0200 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="0000000000005f5b5d0603a81687" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [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: --0000000000005f5b5d0603a81687 Content-Type: text/plain; charset="UTF-8" Patches attached. Stereo decoding have some issues with some predictors so not yet bitexact. Please comment. --0000000000005f5b5d0603a81687 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_llozhxtv0 RnJvbSBhOTBiNGZiZDQxNzhkNGVmNDM0ZTEyNTVlZDIwZGRkZWJkZTBkZGI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMjcgSnVuIDIwMjMgMTk6NTE6NTQgKzAyMDAKU3ViamVjdDogW1BBVENIIDIvMl0gYXZm b3JtYXQ6IGFkZCBPU1EgZGVtdXhlcgoKU2lnbmVkLW9mZi1ieTogUGF1bCBCIE1haG9sIDxvbmVt ZGFAZ21haWwuY29tPgotLS0KIGxpYmF2Zm9ybWF0L01ha2VmaWxlICAgICB8ICAgMSArCiBsaWJh dmZvcm1hdC9hbGxmb3JtYXRzLmMgfCAgIDEgKwogbGliYXZmb3JtYXQvb3NxLmMgICAgICAgIHwg MTE3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFu Z2VkLCAxMTkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Zm9ybWF0L29z cS5jCgpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtl ZmlsZQppbmRleCBiZDc4YzIwNmI5Li4xYzhjOTY1YTc0IDEwMDY0NAotLS0gYS9saWJhdmZvcm1h dC9NYWtlZmlsZQorKysgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQpAQCAtNDMzLDYgKzQzMyw3IEBA IE9CSlMtJChDT05GSUdfT01BX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gb21hZGVjLm8gcGNt Lm8gb21hLm8KIE9CSlMtJChDT05GSUdfT01BX01VWEVSKSAgICAgICAgICAgICAgICAgKz0gb21h ZW5jLm8gcmF3ZW5jLm8gb21hLm8gaWQzdjJlbmMubwogT0JKUy0kKENPTkZJR19PUFVTX01VWEVS KSAgICAgICAgICAgICAgICArPSBvZ2dlbmMubyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZvcmJpc2NvbW1lbnQubworT0JKUy0kKENPTkZJR19PU1FfREVN VVhFUikgICAgICAgICAgICAgICArPSBvc3EubyByYXdkZWMubwogT0JKUy0kKENPTkZJR19QQUZf REVNVVhFUikgICAgICAgICAgICAgICArPSBwYWYubwogT0JKUy0kKENPTkZJR19QQ01fQUxBV19E RU1VWEVSKSAgICAgICAgICArPSBwY21kZWMubyBwY20ubwogT0JKUy0kKENPTkZJR19QQ01fQUxB V19NVVhFUikgICAgICAgICAgICArPSBwY21lbmMubyByYXdlbmMubwpkaWZmIC0tZ2l0IGEvbGli YXZmb3JtYXQvYWxsZm9ybWF0cy5jIGIvbGliYXZmb3JtYXQvYWxsZm9ybWF0cy5jCmluZGV4IDYz MjQ5NTJiZDIuLmY0MjEwZTQ5MzIgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMu YworKysgYi9saWJhdmZvcm1hdC9hbGxmb3JtYXRzLmMKQEAgLTMzMSw2ICszMzEsNyBAQCBleHRl cm4gY29uc3QgRkZPdXRwdXRGb3JtYXQgZmZfb2d2X211eGVyOwogZXh0ZXJuIGNvbnN0IEFWSW5w dXRGb3JtYXQgIGZmX29tYV9kZW11eGVyOwogZXh0ZXJuIGNvbnN0IEZGT3V0cHV0Rm9ybWF0IGZm X29tYV9tdXhlcjsKIGV4dGVybiBjb25zdCBGRk91dHB1dEZvcm1hdCBmZl9vcHVzX211eGVyOwor ZXh0ZXJuIGNvbnN0IEFWSW5wdXRGb3JtYXQgIGZmX29zcV9kZW11eGVyOwogZXh0ZXJuIGNvbnN0 IEFWSW5wdXRGb3JtYXQgIGZmX3BhZl9kZW11eGVyOwogZXh0ZXJuIGNvbnN0IEFWSW5wdXRGb3Jt YXQgIGZmX3BjbV9hbGF3X2RlbXV4ZXI7CiBleHRlcm4gY29uc3QgRkZPdXRwdXRGb3JtYXQgZmZf cGNtX2FsYXdfbXV4ZXI7CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9vc3EuYyBiL2xpYmF2Zm9y bWF0L29zcS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjM2Y2UyNTMx M2YKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmZvcm1hdC9vc3EuYwpAQCAtMCwwICsxLDExNyBA QAorLyoKKyAqIE9TUSBkZW11eGVyCisgKiBDb3B5cmlnaHQgKGMpIDIwMjMgUGF1bCBCIE1haG9s CisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl cgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0 aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRlICJsaWJh dnV0aWwvaW50cmVhZHdyaXRlLmgiCisjaW5jbHVkZSAiYXZpb19pbnRlcm5hbC5oIgorI2luY2x1 ZGUgImF2Zm9ybWF0LmgiCisjaW5jbHVkZSAiZGVtdXguaCIKKyNpbmNsdWRlICJpbnRlcm5hbC5o IgorI2luY2x1ZGUgInJhd2RlYy5oIgorCitzdGF0aWMgaW50IG9zcV9wcm9iZShjb25zdCBBVlBy b2JlRGF0YSAqcCkKK3sKKyAgICBpZiAoQVZfUkwzMihwLT5idWYpICE9IE1LVEFHKCdPJywnUycs J1EnLCcgJykpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChBVl9STDMyKHAtPmJ1ZiArIDQp ICE9IDQ4KQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoQVZfUkwxNihwLT5idWYgKyA4KSAh PSAxKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIXAtPmJ1ZlsxMF0pCisgICAgICAgIHJl dHVybiAwOworICAgIGlmICghcC0+YnVmWzExXSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYg KEFWX1JMMzIocC0+YnVmICsgMTIpID09IDApCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChB Vl9STDE2KHAtPmJ1ZiArIDE2KSA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVy biBBVlBST0JFX1NDT1JFX01BWDsKK30KKworc3RhdGljIGludCBvc3FfcmVhZF9oZWFkZXIoQVZG b3JtYXRDb250ZXh0ICpzKQoreworICAgIHVpbnQzMl90IHQsIHNpemU7CisgICAgQVZTdHJlYW0g KnN0OworICAgIGludCByZXQ7CisKKyAgICB0ID0gYXZpb19ybDMyKHMtPnBiKTsKKyAgICBpZiAo dCAhPSBNS1RBRygnTycsJ1MnLCdRJywnICcpKQorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZB TElEREFUQTsKKworICAgIHNpemUgPSBhdmlvX3JsMzIocy0+cGIpOworICAgIGlmIChzaXplICE9 IDQ4KQorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgIHN0ID0gYXZm b3JtYXRfbmV3X3N0cmVhbShzLCBOVUxMKTsKKyAgICBpZiAoIXN0KQorICAgICAgICByZXR1cm4g QVZFUlJPUihFTk9NRU0pOworICAgIGlmICgocmV0ID0gZmZfZ2V0X2V4dHJhZGF0YShzLCBzdC0+ Y29kZWNwYXIsIHMtPnBiLCBzaXplKSkgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAg dCA9IGF2aW9fcmwzMihzLT5wYik7CisgICAgaWYgKHQgIT0gTUtUQUcoJ1InLCdJJywnRicsJ0Yn KSkKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgYXZpb19za2lwKHMt PnBiLCA4KTsKKworICAgIHQgPSBhdmlvX3JsMzIocy0+cGIpOworICAgIGlmICh0ICE9IE1LVEFH KCdmJywnbScsJ3QnLCcgJykpCisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwor ICAgIHNpemUgPSBhdmlvX3JsMzIocy0+cGIpOworICAgIGF2aW9fc2tpcChzLT5wYiwgc2l6ZSk7 CisKKyAgICB0ID0gYXZpb19ybDMyKHMtPnBiKTsKKyAgICBzaXplID0gYXZpb19ybDMyKHMtPnBi KTsKKyAgICB3aGlsZSAodCAhPSBNS1RBRygnZCcsJ2EnLCd0JywnYScpKSB7CisgICAgICAgIGF2 aW9fc2tpcChzLT5wYiwgc2l6ZSk7CisKKyAgICAgICAgdCA9IGF2aW9fcmwzMihzLT5wYik7Cisg ICAgICAgIHNpemUgPSBhdmlvX3JsMzIocy0+cGIpOworICAgICAgICBpZiAoYXZpb19mZW9mKHMt PnBiKSkKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgIH0KKwor ICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfdHlwZSAgPSBBVk1FRElBX1RZUEVfQVVESU87CisgICAg c3QtPmNvZGVjcGFyLT5jb2RlY19pZCAgICA9IEFWX0NPREVDX0lEX09TUTsKKyAgICBzdC0+Y29k ZWNwYXItPnNhbXBsZV9yYXRlID0gQVZfUkwzMihzdC0+Y29kZWNwYXItPmV4dHJhZGF0YSArIDQp OworICAgIGlmIChzdC0+Y29kZWNwYXItPnNhbXBsZV9yYXRlID09IDApCisgICAgICAgIHJldHVy biBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgIHN0LT5jb2RlY3Bhci0+Y2hfbGF5b3V0Lm5iX2No YW5uZWxzID0gc3QtPmNvZGVjcGFyLT5leHRyYWRhdGFbM107CisgICAgaWYgKHN0LT5jb2RlY3Bh ci0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzID09IDApCisgICAgICAgIHJldHVybiBBVkVSUk9SX0lO VkFMSUREQVRBOworICAgIHN0LT5zdGFydF90aW1lID0gMDsKKyAgICBzdC0+ZHVyYXRpb24gPSBB Vl9STDMyKHN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhICsgMTYpOworICAgIGF2cHJpdl9zZXRfcHRz X2luZm8oc3QsIDY0LCAxLCBzdC0+Y29kZWNwYXItPnNhbXBsZV9yYXRlKTsKKworICAgIHJldHVy biAwOworfQorCitjb25zdCBBVklucHV0Rm9ybWF0IGZmX29zcV9kZW11eGVyID0geworICAgIC5u YW1lICAgICAgICAgICA9ICJvc3EiLAorICAgIC5sb25nX25hbWUgICAgICA9IE5VTExfSUZfQ09O RklHX1NNQUxMKCJyYXcgT1NRIiksCisgICAgLnJlYWRfcHJvYmUgICAgID0gb3NxX3Byb2JlLAor ICAgIC5yZWFkX2hlYWRlciAgICA9IG9zcV9yZWFkX2hlYWRlciwKKyAgICAucmVhZF9wYWNrZXQg ICAgPSBmZl9yYXdfcmVhZF9wYXJ0aWFsX3BhY2tldCwKKyAgICAuZXh0ZW5zaW9ucyAgICAgPSAi b3NxIiwKKyAgICAuZmxhZ3MgICAgICAgICAgPSBBVkZNVF9OT0JJTlNFQVJDSCB8IEFWRk1UX05P R0VOU0VBUkNIIHwgQVZGTVRfTk9fQllURV9TRUVLIHwgQVZGTVRfTk9USU1FU1RBTVBTLAorICAg IC5yYXdfY29kZWNfaWQgICA9IEFWX0NPREVDX0lEX09TUSwKKyAgICAucHJpdl9kYXRhX3NpemUg PSBzaXplb2YoRkZSYXdEZW11eGVyQ29udGV4dCksCisgICAgLnByaXZfY2xhc3MgICAgID0gJmZm X3Jhd19kZW11eGVyX2NsYXNzLAorfTsKLS0gCjIuMzkuMQoK --0000000000005f5b5d0603a81687 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_llozhxzz1 RnJvbSA5ODhhZTZjODhmMGU1ZTlmMjY1Njg4MjVjOGRhYTgyYTE3NmJiMmUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMjcgSnVuIDIwMjMgMTk6NTQ6MjUgKzAyMDAKU3ViamVjdDogW1BBVENIIDEvMl0gYXZj b2RlYzogYWRkIE9TUSBhdWRpbyBkZWNvZGVyCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIEIgTWFob2wg PG9uZW1kYUBnbWFpbC5jb20+Ci0tLQogbGliYXZjb2RlYy9NYWtlZmlsZSAgICAgfCAgIDEgKwog bGliYXZjb2RlYy9hbGxjb2RlY3MuYyAgfCAgIDEgKwogbGliYXZjb2RlYy9jb2RlY19kZXNjLmMg fCAgIDcgKwogbGliYXZjb2RlYy9jb2RlY19pZC5oICAgfCAgIDEgKwogbGliYXZjb2RlYy9vc3Eu YyAgICAgICAgfCA0MzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog NSBmaWxlcyBjaGFuZ2VkLCA0NDUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxp 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 MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYjZkYzVjMWJiNAotLS0gL2Rldi9udWxsCisrKyBiL2xp YmF2Y29kZWMvb3NxLmMKQEAgLTAsMCArMSw0MzUgQEAKKy8qCisgKiBPU1EgYXVkaW8gZGVjb2Rl cgorICogQ29weXJpZ2h0IChjKSAyMDIzIFBhdWwgQiBNYWhvbAorICoKKyAqIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK KyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcg d2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5k YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg MDIxMTAtMTMwMSBVU0EKKyAqLworCisjZGVmaW5lIEFTU0VSVF9MRVZFTCA1CisjaW5jbHVkZSAi bGliYXZ1dGlsL2F2YXNzZXJ0LmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL2ludGVybmFsLmgiCisj aW5jbHVkZSAibGliYXZ1dGlsL2ludHJlYWR3cml0ZS5oIgorI2luY2x1ZGUgImF2Y29kZWMuaCIK KyNpbmNsdWRlICJjb2RlY19pbnRlcm5hbC5oIgorI2luY2x1ZGUgImRlY29kZS5oIgorI2luY2x1 ZGUgImludGVybmFsLmgiCisjZGVmaW5lIEJJVFNUUkVBTV9SRUFERVJfTEUKKyNpbmNsdWRlICJn ZXRfYml0cy5oIgorI2luY2x1ZGUgInVuYXJ5LmgiCisKK3R5cGVkZWYgc3RydWN0IE9TUUNoYW5u ZWwgeworICAgIGludCBwcmVkaWN0aW9uOworICAgIGludCBjb2RpbmdfbW9kZTsKKyAgICBpbnQg cmVzaWR1ZV9wYXJhbWV0ZXI7CisgICAgaW50IHJlc2lkdWVfYml0czsKK30gT1NRQ2hhbm5lbDsK KwordHlwZWRlZiBzdHJ1Y3QgT1NRQ29udGV4dCB7CisgICAgR2V0Qml0Q29udGV4dCBnYjsKKyAg ICBPU1FDaGFubmVsIGNoWzJdOworCisgICAgdWludDhfdCAqYml0c3RyZWFtOworICAgIGludDY0 X3QgbWF4X2ZyYW1lc2l6ZTsKKyAgICBpbnQgYml0c3RyZWFtX3NpemU7CisKKyAgICBpbnQgZnJh bWVfc2FtcGxlczsKKyAgICBpbnQ2NF90IG5iX3NhbXBsZXM7CisKKyAgICBpbnQzMl90ICpkZWNv ZGVfYnVmZmVyWzJdOworCisgICAgQVZQYWNrZXQgKnBrdDsKKyAgICBpbnQgcGt0X29mZnNldDsK K30gT1NRQ29udGV4dDsKKworc3RhdGljIGF2X2NvbGQgaW50IG9zcV9jbG9zZShBVkNvZGVjQ29u dGV4dCAqYXZjdHgpCit7CisgICAgT1NRQ29udGV4dCAqcyA9IGF2Y3R4LT5wcml2X2RhdGE7CisK KyAgICBhdl9mcmVlcCgmcy0+Yml0c3RyZWFtKTsKKyAgICBzLT5iaXRzdHJlYW1fc2l6ZSA9IDA7 CisKKyAgICBmb3IgKGludCBjaCA9IDA7IGNoIDwgYXZjdHgtPmNoX2xheW91dC5uYl9jaGFubmVs czsgY2grKykKKyAgICAgICAgYXZfZnJlZXAoJnMtPmRlY29kZV9idWZmZXJbY2hdKTsKKworICAg IHJldHVybiAwOworfQorCitzdGF0aWMgYXZfY29sZCBpbnQgb3NxX2luaXQoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4KQoreworICAgIE9TUUNvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOworCisg ICAgaWYgKGF2Y3R4LT5leHRyYWRhdGFfc2l6ZSA8IDQ4KQorICAgICAgICByZXR1cm4gQVZFUlJP UihFSU5WQUwpOworCisgICAgaWYgKGF2Y3R4LT5leHRyYWRhdGFbMF0gIT0gMSkgeworICAgICAg ICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIlVuc3VwcG9ydGVkIHZlcnNpb24uXG4iKTsK KyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgfQorCisgICAgYXZjdHgt PnNhbXBsZV9yYXRlID0gQVZfUkwzMihhdmN0eC0+ZXh0cmFkYXRhICsgNCk7CisgICAgaWYgKGF2 Y3R4LT5zYW1wbGVfcmF0ZSA8IDEpCisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRB OworCisgICAgYXZjdHgtPmNoX2xheW91dC5uYl9jaGFubmVscyA9IGF2Y3R4LT5leHRyYWRhdGFb M107CisgICAgaWYgKGF2Y3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHMgPCAxKQorICAgICAgICBy ZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgIHN3aXRjaCAoYXZjdHgtPmV4dHJhZGF0 YVsyXSkgeworICAgIGNhc2UgIDg6IGF2Y3R4LT5zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9V OFA7IGJyZWFrOworICAgIGNhc2UgMTY6IGF2Y3R4LT5zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZN VF9TMTZQOyBicmVhazsKKyAgICBjYXNlIDIwOgorICAgIGNhc2UgMjQ6CisgICAgY2FzZSAyODoK KyAgICBjYXNlIDMyOiBhdmN0eC0+c2FtcGxlX2ZtdCA9IEFWX1NBTVBMRV9GTVRfUzMyUDsgYnJl YWs7CisgICAgZGVmYXVsdDogcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgfQorCisg ICAgcy0+bmJfc2FtcGxlcyA9IEFWX1JMNjQoYXZjdHgtPmV4dHJhZGF0YSArIDE2KTsKKyAgICBz LT5mcmFtZV9zYW1wbGVzID0gQVZfUkwxNihhdmN0eC0+ZXh0cmFkYXRhICsgOCk7CisgICAgcy0+ bWF4X2ZyYW1lc2l6ZSA9IChzLT5mcmFtZV9zYW1wbGVzICogMTYgKyAxMDI0KSAqIGF2Y3R4LT5j aF9sYXlvdXQubmJfY2hhbm5lbHM7CisKKyAgICBzLT5iaXRzdHJlYW0gPSBhdl9jYWxsb2Mocy0+ bWF4X2ZyYW1lc2l6ZSArIEFWX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUsIHNpemVvZigqcy0+ Yml0c3RyZWFtKSk7CisgICAgaWYgKCFzLT5iaXRzdHJlYW0pCisgICAgICAgIHJldHVybiBBVkVS Uk9SKEVOT01FTSk7CisKKyAgICBmb3IgKGludCBjaCA9IDA7IGNoIDwgYXZjdHgtPmNoX2xheW91 dC5uYl9jaGFubmVsczsgY2grKykgeworICAgICAgICBzLT5kZWNvZGVfYnVmZmVyW2NoXSA9IGF2 X2NhbGxvYyhzLT5mcmFtZV9zYW1wbGVzICsgNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mKCpzLT5kZWNvZGVfYnVmZmVyW2NoXSkpOworICAgICAgICBp ZiAoIXMtPmRlY29kZV9idWZmZXJbY2hdKQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5P TUVNKTsKKyAgICB9CisKKyAgICBzLT5wa3QgPSBhdmN0eC0+aW50ZXJuYWwtPmluX3BrdDsKKwor ICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdWludDMyX3QgZ2V0X3VyaWNlKEdldEJpdENvbnRl eHQgKmdiLCBpbnQgaykKK3sKKyAgICB1aW50MzJfdCB6LCB4LCBiOworCisgICAgeCA9IGdldF91 bmFyeShnYiwgMSwgNTEyKTsKKyAgICBiID0gZ2V0X2JpdHNfbG9uZyhnYiwgayAmIDMxKTsKKyAg ICB6ID0gYiB8IHggPDwgKGsgJiAzMSk7CisKKyAgICByZXR1cm4gejsKK30KKworc3RhdGljIGlu dDMyX3QgZ2V0X3NyaWNlKEdldEJpdENvbnRleHQgKmdiLCBpbnQgeCkKK3sKKyAgICBpbnQzMl90 IHkgPSBnZXRfdXJpY2UoZ2IsIHgpOworICAgIHJldHVybiBnZXRfYml0czEoZ2IpID8gLXkgOiB5 OworfQorCitzdGF0aWMgaW50IG9zcV9jaGFubmVsX3BhcmFtZXRlcnMoQVZDb2RlY0NvbnRleHQg KmF2Y3R4LCBpbnQgY2gpCit7CisgICAgT1NRQ29udGV4dCAqcyA9IGF2Y3R4LT5wcml2X2RhdGE7 CisgICAgT1NRQ2hhbm5lbCAqY2IgPSAmcy0+Y2hbY2hdOworICAgIEdldEJpdENvbnRleHQgKmdi ID0gJnMtPmdiOworCisgICAgY2ItPnByZWRpY3Rpb24gPSBnZXRfdXJpY2UoZ2IsIDUpOworICAg IGNiLT5jb2RpbmdfbW9kZSA9IGdldF91cmljZShnYiwgMyk7CisgICAgaWYgKGNiLT5wcmVkaWN0 aW9uID49IDE1KQorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICBpZiAo Y2ItPmNvZGluZ19tb2RlID4gMCAmJiBjYi0+Y29kaW5nX21vZGUgPCAzKSB7CisgICAgICAgIGNi LT5yZXNpZHVlX3BhcmFtZXRlciA9IGdldF91cmljZShnYiwgNCk7CisgICAgICAgIGlmICghY2It PnJlc2lkdWVfcGFyYW1ldGVyIHx8IGNiLT5yZXNpZHVlX3BhcmFtZXRlciA+PSAzMSkKKyAgICAg ICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgIH0gZWxzZSBpZiAoY2ItPmNv ZGluZ19tb2RlID09IDMpIHsKKyAgICAgICAgY2ItPnJlc2lkdWVfYml0cyA9IGdldF91cmljZShn YiwgNCk7CisgICAgICAgIGlmICghY2ItPnJlc2lkdWVfYml0cyB8fCBjYi0+cmVzaWR1ZV9iaXRz ID49IDMxKQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgfSBl bHNlIGlmIChjYi0+Y29kaW5nX21vZGUpIHsKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJ RERBVEE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgb3NxX2RlY29k ZV9ibG9jayhBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lKQoreworICAgIE9T UUNvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOworICAgIGludCByZXQsIGRlY29ycmVsYXRl LCBkb3duc2FtcGxlOworICAgIEdldEJpdENvbnRleHQgKmdiID0gJnMtPmdiOworCisgICAgc2tp cF9iaXRzMShnYik7CisgICAgZGVjb3JyZWxhdGUgPSBnZXRfYml0czEoZ2IpOworICAgIGRvd25z YW1wbGUgPSBnZXRfYml0czEoZ2IpOworCisgICAgZm9yIChpbnQgY2ggPSAwOyBjaCA8IGF2Y3R4 LT5jaF9sYXlvdXQubmJfY2hhbm5lbHM7IGNoKyspIHsKKyAgICAgICAgaWYgKChyZXQgPSBvc3Ff Y2hhbm5lbF9wYXJhbWV0ZXJzKGF2Y3R4LCBjaCkpIDwgMCkgeworICAgICAgICAgICAgYXZfbG9n KGF2Y3R4LCBBVl9MT0dfRVJST1IsICJpbnZhbGlkIGNoYW5uZWwgcGFyYW1ldGVyc1xuIik7Cisg ICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChpbnQg biA9IDA7IG4gPCBmcmFtZS0+bmJfc2FtcGxlczsgbisrKSB7CisgICAgICAgIGZvciAoaW50IGNo ID0gMDsgY2ggPCBhdmN0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOyBjaCsrKSB7CisgICAgICAg ICAgICBPU1FDaGFubmVsICpjYiA9ICZzLT5jaFtjaF07CisgICAgICAgICAgICBpbnQzMl90ICpk c3QgPSBzLT5kZWNvZGVfYnVmZmVyW2NoXSArIDQ7CisKKyAgICAgICAgICAgIGlmICghY2ItPmNv ZGluZ19tb2RlKSB7CisgICAgICAgICAgICAgICAgZHN0W25dID0gMDsKKyAgICAgICAgICAgIH0g ZWxzZSBpZiAoY2ItPmNvZGluZ19tb2RlID09IDMpIHsKKyAgICAgICAgICAgICAgICBkc3Rbbl0g PSBnZXRfc2JpdHNfbG9uZyhnYiwgY2ItPnJlc2lkdWVfYml0cyk7CisgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICAgIGRzdFtuXSA9IGdldF9zcmljZShnYiwgY2ItPnJlc2lkdWVf cGFyYW1ldGVyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGdldF9iaXRzX2xl ZnQoZ2IpIDwgMCkgeworICAgICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9S LCAib3ZlcnJlYWQhXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGFsaWduX2dldF9i aXRzKGdiKTsKKworI2RlZmluZSBBIChuLTEpCisjZGVmaW5lIEIgKG4tMikKKyNkZWZpbmUgQyAo bi0zKQorI2RlZmluZSBEIChuLTQpCisjZGVmaW5lIFAyIChkc3RbQV0gKiAyTEwgLSBkc3RbQl0p CisjZGVmaW5lIFAzICgoZHN0W0FdICogMUxMIC0gZHN0W0JdKSAqIDNMTCArIGRzdFtDXSkKKwor ICAgIGZvciAoaW50IGNoID0gMDsgY2ggPCBhdmN0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOyBj aCsrKSB7CisgICAgICAgIGludDMyX3QgcHJlZCA9IDAsICpkc3QgPSBzLT5kZWNvZGVfYnVmZmVy W2NoXSArIDQ7CisgICAgICAgIGNvbnN0IGludCBuYl9zYW1wbGVzID0gZnJhbWUtPm5iX3NhbXBs ZXM7CisgICAgICAgIE9TUUNoYW5uZWwgKmNiID0gJnMtPmNoW2NoXTsKKworICAgICAgICBhdl9s b2coYXZjdHgsIEFWX0xPR19ERUJVRywgInByZWRpY3Rpb246ICVkXG4iLCBjYi0+cHJlZGljdGlv bik7CisgICAgICAgIHN3aXRjaCAoY2ItPnByZWRpY3Rpb24pIHsKKyAgICAgICAgY2FzZSAwOgor ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGZvciAoaW50 IG4gPSAwOyBuIDwgbmJfc2FtcGxlczsgbisrKQorICAgICAgICAgICAgICAgIGRzdFtuXSArPSBk c3RbQV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAg Zm9yIChpbnQgbiA9IDA7IG4gPCBuYl9zYW1wbGVzOyBuKyspIHsKKyAgICAgICAgICAgICAgICBp bnQzMl90IHAgPSBwcmVkOworICAgICAgICAgICAgICAgIHByZWQgPSBkc3Rbbl0gLyAyOworICAg ICAgICAgICAgICAgIGRzdFtuXSArPSBkc3RbQV0gKyBwOworICAgICAgICAgICAgfQorICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIGZvciAoaW50IG4gPSAw OyBuIDwgbmJfc2FtcGxlczsgbisrKQorICAgICAgICAgICAgICAgIGRzdFtuXSArPSBQMjsKKyAg ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICBmb3IgKGludCBu ID0gMDsgbiA8IG5iX3NhbXBsZXM7IG4rKykgeworICAgICAgICAgICAgICAgIGludDMyX3QgcCA9 IHByZWQ7CisgICAgICAgICAgICAgICAgcHJlZCA9IGRzdFtuXSAvIDI7CisgICAgICAgICAgICAg ICAgZHN0W25dICs9IFAyICsgcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICBmb3IgKGludCBuID0gMDsgbiA8IG5iX3NhbXBs ZXM7IG4rKykKKyAgICAgICAgICAgICAgICBkc3Rbbl0gKz0gUDM7CisgICAgICAgICAgICBicmVh azsKKyAgICAgICAgY2FzZSA2OgorICAgICAgICAgICAgZm9yIChpbnQgbiA9IDA7IG4gPCBuYl9z YW1wbGVzOyBuKyspIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHAgPSBwcmVkOworICAgICAg ICAgICAgICAgIHByZWQgPSBkc3Rbbl0gLyAyOworICAgICAgICAgICAgICAgIGRzdFtuXSArPSBQ MyArIHA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA3 OgorICAgICAgICAgICAgZm9yIChpbnQgbiA9IDA7IG4gPCBuYl9zYW1wbGVzOyBuKyspIHsKKyAg ICAgICAgICAgICAgICBpbnQzMl90IHAgPSBwcmVkOworICAgICAgICAgICAgICAgIHByZWQgPSBk c3Rbbl0gLyAyOworICAgICAgICAgICAgICAgIGRzdFtuXSArPSAoUDIgKyBQMykgLyAyICsgcDsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDg6CisgICAg ICAgICAgICBmb3IgKGludCBuID0gMDsgbiA8IG5iX3NhbXBsZXM7IG4rKykKKyAgICAgICAgICAg ICAgICBkc3Rbbl0gKz0gKFAyICogMUxMICsgUDMpIC8gMjsKKyAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICBjYXNlIDk6CisgICAgICAgICAgICBmb3IgKGludCBuID0gMDsgbiA8IG5iX3NhbXBs ZXM7IG4rKykgeworICAgICAgICAgICAgICAgIGludDMyX3QgcCA9IHByZWQ7CisgICAgICAgICAg ICAgICAgcHJlZCA9IGRzdFtuXSAvIDI7CisgICAgICAgICAgICAgICAgZHN0W25dICs9IChQMiAq IDIgKyBQMykgLyAzICsgcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAg ICAgICBjYXNlIDEwOgorICAgICAgICAgICAgZm9yIChpbnQgbiA9IDA7IG4gPCBuYl9zYW1wbGVz OyBuKyspIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHAgPSBwcmVkOworICAgICAgICAgICAg ICAgIHByZWQgPSBkc3Rbbl0gLyAyOworICAgICAgICAgICAgICAgIGRzdFtuXSArPSAoUDIgKyBQ MyAqIDIpIC8gMyArIHA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgY2FzZSAxMToKKyAgICAgICAgICAgIGZvciAoaW50IG4gPSAwOyBuIDwgbmJfc2FtcGxlczsg bisrKQorICAgICAgICAgICAgICAgIGRzdFtuXSArPSAoZHN0W0FdICogMUxMICsgZHN0W0JdKSAv IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMjoKKyAgICAgICAgICAgIGZv ciAoaW50IG4gPSAwOyBuIDwgbmJfc2FtcGxlczsgbisrKQorICAgICAgICAgICAgICAgIGRzdFtu XSArPSBkc3RbQl07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMzoKKyAgICAg ICAgICAgIGZvciAoaW50IG4gPSAwOyBuIDwgbmJfc2FtcGxlczsgbisrKQorICAgICAgICAgICAg ICAgIGRzdFtuXSArPSAoZHN0W0RdICogMUxMICsgZHN0W0JdKSAvIDI7CisgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgY2FzZSAxNDoKKyAgICAgICAgICAgIGZvciAoaW50IG4gPSAwOyBuIDwg bmJfc2FtcGxlczsgbisrKSB7CisgICAgICAgICAgICAgICAgaW50MzJfdCBwID0gcHJlZDsKKyAg ICAgICAgICAgICAgICBwcmVkID0gZHN0W25dIC8gMjsKKyAgICAgICAgICAgICAgICBkc3Rbbl0g Kz0gKFAyICsgZHN0W0FdKSAvIDIgKyBwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKKyAgICAgICAgfQorCisgICAgICAgIG1lbWNweShzLT5kZWNvZGVfYnVmZmVyW2NoXSwg cy0+ZGVjb2RlX2J1ZmZlcltjaF0gKyBmcmFtZS0+bmJfc2FtcGxlcywgNCAqIHNpemVvZigqcy0+ ZGVjb2RlX2J1ZmZlclswXSkpOworCisgICAgICAgIGlmIChkb3duc2FtcGxlKSB7CisgICAgICAg ICAgICBpbnQzMl90ICpkc3QgPSBzLT5kZWNvZGVfYnVmZmVyW2NoXTsKKworICAgICAgICAgICAg Zm9yIChpbnQgbiA9IDA7IG4gPCBmcmFtZS0+bmJfc2FtcGxlcyArIDQ7IG4rKykKKyAgICAgICAg ICAgICAgICBkc3Rbbl0gPSAoZHN0W25dIC8gMjU2KSAqIDI1NjsKKyAgICAgICAgfQorICAgIH0K KworICAgIGlmIChkZWNvcnJlbGF0ZSAmJiBhdmN0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzID09 IDIpIHsKKyAgICAgICAgaW50MzJfdCAqbCA9IHMtPmRlY29kZV9idWZmZXJbMF0gKyA0OworICAg ICAgICBpbnQzMl90ICpyID0gcy0+ZGVjb2RlX2J1ZmZlclsxXSArIDQ7CisKKyAgICAgICAgZm9y IChpbnQgbiA9IDA7IG4gPCBmcmFtZS0+bmJfc2FtcGxlczsgbisrKSB7CisgICAgICAgICAgICBp bnQ2NF90IEwgPSBsW25dOworICAgICAgICAgICAgaW50NjRfdCBSID0gcltuXTsKKworICAgICAg ICAgICAgbFtuXSA9IEwgLSBSOworICAgICAgICAgICAgcltuXSA9IEwgKyBSOworICAgICAgICB9 CisgICAgfQorCisgICAgc3dpdGNoIChhdmN0eC0+c2FtcGxlX2ZtdCkgeworICAgIGNhc2UgQVZf U0FNUExFX0ZNVF9VOFA6CisgICAgICAgIGZvciAoaW50IGNoID0gMDsgY2ggPCBhdmN0eC0+Y2hf bGF5b3V0Lm5iX2NoYW5uZWxzOyBjaCsrKSB7CisgICAgICAgICAgICB1aW50OF90ICpkc3QgPSAo dWludDhfdCAqKWZyYW1lLT5leHRlbmRlZF9kYXRhW2NoXTsKKyAgICAgICAgICAgIGludDMyX3Qg KnNyYyA9IHMtPmRlY29kZV9idWZmZXJbY2hdICsgNDsKKworICAgICAgICAgICAgZm9yIChpbnQg biA9IDA7IG4gPCBmcmFtZS0+bmJfc2FtcGxlczsgbisrKQorICAgICAgICAgICAgICAgIGRzdFtu XSA9IGF2X2NsaXBfdWludDgoc3JjW25dICsgMHg4MCk7CisgICAgICAgIH0KKyAgICAgICAgYnJl YWs7CisgICAgY2FzZSBBVl9TQU1QTEVfRk1UX1MxNlA6CisgICAgICAgIGZvciAoaW50IGNoID0g MDsgY2ggPCBhdmN0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOyBjaCsrKSB7CisgICAgICAgICAg ICBpbnQxNl90ICpkc3QgPSAoaW50MTZfdCAqKWZyYW1lLT5leHRlbmRlZF9kYXRhW2NoXTsKKyAg ICAgICAgICAgIGludDMyX3QgKnNyYyA9IHMtPmRlY29kZV9idWZmZXJbY2hdICsgNDsKKworICAg ICAgICAgICAgZm9yIChpbnQgbiA9IDA7IG4gPCBmcmFtZS0+bmJfc2FtcGxlczsgbisrKQorICAg ICAgICAgICAgICAgIGRzdFtuXSA9IGF2X2NsaXBfaW50MTYoc3JjW25dKTsKKyAgICAgICAgfQor ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFWX1NBTVBMRV9GTVRfUzMyUDoKKyAgICAgICAgZm9y IChpbnQgY2ggPSAwOyBjaCA8IGF2Y3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHM7IGNoKyspIHsK KyAgICAgICAgICAgIGludDMyX3QgKmRzdCA9IChpbnQzMl90ICopZnJhbWUtPmV4dGVuZGVkX2Rh dGFbY2hdOworICAgICAgICAgICAgaW50MzJfdCAqc3JjID0gcy0+ZGVjb2RlX2J1ZmZlcltjaF0g KyA0OworCisgICAgICAgICAgICBmb3IgKGludCBuID0gMDsgbiA8IGZyYW1lLT5uYl9zYW1wbGVz OyBuKyspCisgICAgICAgICAgICAgICAgZHN0W25dID0gc3JjW25dOworICAgICAgICB9CisgICAg ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBBVkVSUk9SX0JVRzsKKyAg ICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBvc3FfcmVjZWl2ZV9mcmFtZShB VkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lKQoreworICAgIE9TUUNvbnRleHQg KnMgPSBhdmN0eC0+cHJpdl9kYXRhOworICAgIEdldEJpdENvbnRleHQgKmdiID0gJnMtPmdiOwor ICAgIGludCByZXQsIG47CisKKyAgICB3aGlsZSAocy0+Yml0c3RyZWFtX3NpemUgPCBzLT5tYXhf ZnJhbWVzaXplKSB7CisgICAgICAgIGludCBzaXplOworCisgICAgICAgIGlmICghcy0+cGt0LT5k YXRhKSB7CisgICAgICAgICAgICByZXQgPSBmZl9kZWNvZGVfZ2V0X3BhY2tldChhdmN0eCwgcy0+ cGt0KTsKKyAgICAgICAgICAgIGlmIChyZXQgPT0gQVZFUlJPUl9FT0YgJiYgcy0+Yml0c3RyZWFt X3NpemUgPiAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKHJldCA8 IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorCisgICAgICAgIHNp emUgPSBGRk1JTihzLT5wa3QtPnNpemUgLSBzLT5wa3Rfb2Zmc2V0LCBzLT5tYXhfZnJhbWVzaXpl IC0gcy0+Yml0c3RyZWFtX3NpemUpOworICAgICAgICBtZW1jcHkocy0+Yml0c3RyZWFtICsgcy0+ Yml0c3RyZWFtX3NpemUsIHMtPnBrdC0+ZGF0YSArIHMtPnBrdF9vZmZzZXQsIHNpemUpOworICAg ICAgICBzLT5iaXRzdHJlYW1fc2l6ZSArPSBzaXplOworICAgICAgICBzLT5wa3Rfb2Zmc2V0ICs9 IHNpemU7CisKKyAgICAgICAgaWYgKHMtPnBrdF9vZmZzZXQgPT0gcy0+cGt0LT5zaXplKSB7Cisg ICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYocy0+cGt0KTsKKyAgICAgICAgICAgIHMtPnBrdF9v ZmZzZXQgPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgZnJhbWUtPm5iX3NhbXBsZXMgPSBG Rk1JTihzLT5mcmFtZV9zYW1wbGVzLCBzLT5uYl9zYW1wbGVzKTsKKyAgICBpZiAoZnJhbWUtPm5i X3NhbXBsZXMgPD0gMCkKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfRU9GOworCisgICAgaWYgKChy ZXQgPSBmZl9nZXRfYnVmZmVyKGF2Y3R4LCBmcmFtZSwgMCkpIDwgMCkKKyAgICAgICAgZ290byBm YWlsOworCisgICAgaWYgKChyZXQgPSBpbml0X2dldF9iaXRzOChnYiwgcy0+Yml0c3RyZWFtLCBz LT5iaXRzdHJlYW1fc2l6ZSkpIDwgMCkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgaWYgKChy ZXQgPSBvc3FfZGVjb2RlX2Jsb2NrKGF2Y3R4LCBmcmFtZSkpIDwgMCkKKyAgICAgICAgZ290byBm YWlsOworCisgICAgcy0+bmJfc2FtcGxlcyAtPSBmcmFtZS0+bmJfc2FtcGxlczsKKworICAgIG4g PSBnZXRfYml0c19jb3VudChnYikgLyA4OworICAgIGlmIChuID4gcy0+Yml0c3RyZWFtX3NpemUp IHsKKyAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgZ290byBmYWls OworICAgIH0KKworICAgIG1lbW1vdmUocy0+Yml0c3RyZWFtLCAmcy0+Yml0c3RyZWFtW25dLCBz LT5iaXRzdHJlYW1fc2l6ZSAtIG4pOworICAgIHMtPmJpdHN0cmVhbV9zaXplIC09IG47CisKKyAg ICByZXR1cm4gMDsKKworZmFpbDoKKyAgICBzLT5iaXRzdHJlYW1fc2l6ZSA9IDA7CisgICAgcy0+ cGt0X29mZnNldCA9IDA7CisgICAgYXZfcGFja2V0X3VucmVmKHMtPnBrdCk7CisKKyAgICByZXR1 cm4gcmV0OworfQorCitjb25zdCBGRkNvZGVjIGZmX29zcV9kZWNvZGVyID0geworICAgIC5wLm5h bWUgICAgICAgICAgID0gIm9zcSIsCisgICAgQ09ERUNfTE9OR19OQU1FKCJPU1EgKE9yaWdpbmFs IFNvdW5kIFF1YWxpdHkpIiksCisgICAgLnAudHlwZSAgICAgICAgICAgPSBBVk1FRElBX1RZUEVf QVVESU8sCisgICAgLnAuaWQgICAgICAgICAgICAgPSBBVl9DT0RFQ19JRF9PU1EsCisgICAgLnBy aXZfZGF0YV9zaXplICAgPSBzaXplb2YoT1NRQ29udGV4dCksCisgICAgLmluaXQgICAgICAgICAg ICAgPSBvc3FfaW5pdCwKKyAgICBGRl9DT0RFQ19SRUNFSVZFX0ZSQU1FX0NCKG9zcV9yZWNlaXZl X2ZyYW1lKSwKKyAgICAuY2xvc2UgICAgICAgICAgICA9IG9zcV9jbG9zZSwKKyAgICAucC5jYXBh YmlsaXRpZXMgICA9IEFWX0NPREVDX0NBUF9DSEFOTkVMX0NPTkYgfAorICAgICAgICAgICAgICAg ICAgICAgICAgQVZfQ09ERUNfQ0FQX0RSMSwKKyAgICAuY2Fwc19pbnRlcm5hbCAgICA9IEZGX0NP REVDX0NBUF9JTklUX0NMRUFOVVAsCisgICAgLnAuc2FtcGxlX2ZtdHMgICAgPSAoY29uc3QgZW51 bSBBVlNhbXBsZUZvcm1hdFtdKSB7IEFWX1NBTVBMRV9GTVRfVThQLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVl9TQU1QTEVfRk1UX1Mx NlAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEFWX1NBTVBMRV9GTVRfUzMyUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQVZfU0FNUExFX0ZNVF9OT05FIH0sCit9OwotLSAKMi4z OS4xCgo= --0000000000005f5b5d0603a81687 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". --0000000000005f5b5d0603a81687--