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 3B94840665 for ; Sat, 26 Feb 2022 23:26:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EC95268AF00; Sun, 27 Feb 2022 01:26:44 +0200 (EET) Received: from mail-io1-f41.google.com (mail-io1-f41.google.com [209.85.166.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B5F3A68A380 for ; Sun, 27 Feb 2022 01:26:38 +0200 (EET) Received: by mail-io1-f41.google.com with SMTP id c14so10796111ioa.12 for ; Sat, 26 Feb 2022 15:26:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:date:mime-version:user-agent:from:subject:to :content-language; bh=KUvoKh2HgOthR4cciRKAdF9GKJjrFA2llp/azk231qA=; b=ah0niZsRfcRctdAMGjOGDnJCHpG7O/rl1S+NxhjhtOPBKc+zDcqmgNXiotD1zyAE64 69uyd+sGGE8ir9Yu7Ns/NX3mhnOanLwnScIk0a6aG0OpE2xN/Tfin8L95nnUrIYCIUQq GL7LxZQQ+K04ThldfM9cWLbvot9/tR5D26jIwkdsm5dgYVuCcK+SLJvhlp2EzdWBn1z6 41gr7gmZVT63s13N1M73dU/SscVeUJeksKwHQwVQXtJVHbeDc10ZihbtgSmMBwn3weq+ 3zWG52jmCS3o+RaOAim0qVBxJb7uP4rvwNfLuuKySk8/nEOyiJVx/JMRGYPKrrP3ynqg xHdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:from :subject:to:content-language; bh=KUvoKh2HgOthR4cciRKAdF9GKJjrFA2llp/azk231qA=; b=WdZbY2UHeoUvfcVMnhHO9kKcqz8iqUcxLF/PcwpuO4ZkKVfmBXK/69Egw1d8rrVwh5 G8S+hgO5DPmC1iXksYG2Ad4H2DFbwx7/zVHgDxtWlKrvcHf+b7G2kHAAqN2lBxeIJomc bCJ+YZLJeGkkQYwD/nALzc0v/jTcPT5ATgo3tozrk3HoLUyOTZ+ybg7/chKqtRiojulU pjcw7pTxNhgLF9SPEqNHRupb7rGTAD5xB1TQpx20c/lafT6aDymcwmHjiY9e9LDTWmYp OAJV+U+b0xk7f7Opy6ZBZLpgLdsAY7Az5KavXYgHf8dmEzuNZrxB8NU70WYNvuCVAktp XRpA== X-Gm-Message-State: AOAM531jL2aIuR8RC+8U4ySstRmbdxLvflZ4ZwtDcue+mSQbv9ytfEYr AByH7gVP1DcQWqk1SxMzwk61UWXamzJmjA== X-Google-Smtp-Source: ABdhPJxr6sAjJfQCc5VHx8osLVfxHa1fo2ZKKoaLnl+eC51wjDwC5knQClBNsmcrqET0gGirb4fChQ== X-Received: by 2002:a02:6a60:0:b0:315:4758:1be1 with SMTP id m32-20020a026a60000000b0031547581be1mr9582409jaf.316.1645917996535; Sat, 26 Feb 2022 15:26:36 -0800 (PST) Received: from [192.168.7.86] (c-68-40-205-18.hsd1.mi.comcast.net. [68.40.205.18]) by smtp.gmail.com with ESMTPSA id a13-20020a056e02180d00b002c25b51d5ecsm3843371ilv.55.2022.02.26.15.26.35 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 26 Feb 2022 15:26:35 -0800 (PST) Content-Type: multipart/mixed; boundary="------------Mfdxj3GwecM3VUTEG5sH1Vzw" Message-ID: <925e5a3e-2a24-a6f3-f927-a666ef6e656f@gmail.com> Date: Sat, 26 Feb 2022 18:26:34 -0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 From: Jack Bruienne To: ffmpeg-devel@ffmpeg.org Content-Language: en-US Subject: [FFmpeg-devel] [PATCH v3 1/2] libavcodec: Added DFPWM1a codec 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. --------------Mfdxj3GwecM3VUTEG5sH1Vzw Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit From the wiki page (https://wiki.vexatos.com/dfpwm): > DFPWM (Dynamic Filter Pulse Width Modulation) is an audio codec > created by Ben “GreaseMonkey” Russell in 2012, originally to be used > as a voice codec for asiekierka's pixmess, a C remake of 64pixels. > It is a 1-bit-per-sample codec which uses a dynamic-strength one-pole > low-pass filter as a predictor. Due to the fact that a raw DPFWM decoding > creates a high-pitched whine, it is often followed by some post-processing > filters to make the stream more listenable. It has recently gained popularity through the ComputerCraft mod for Minecraft, which added support for audio through this codec, as well as the Computronics expansion which preceeded the official support. These both implement the slightly adjusted 1a version of the codec, which is the version I have chosen for this patch. This patch adds a new codec (with encoding and decoding) for DFPWM1a. The codec sources are pretty simple: they use the reference codec with a basic wrapper to connect it to the FFmpeg AVCodec system. This patch will be highly useful to ComputerCraft developers who are working with audio, as it is the standard format for audio, and there are few user-friendly encoders out there. It will streamline the process for importing audio, replacing the need to write code or use tools that require very specific input formats. You may use the CraftOS-PC program (https://www.craftos-pc.cc) to test out DFPWM playback. To use it, run the program and type this command: "attach left speaker" Then run "speaker play " for each file. The app runs in a sandbox, so files have to be transferred in first; the easiest way to do this is to simply drag the file on the window. (Or copy files to the folder at https://www.craftos-pc.cc/docs/saves.) Sample DFPWM files can be generated with an online tool at https://music.madefor.cc. This is the current best way to encode DFPWM files. Simply drag an audio file onto the page, and it will encode it, giving a download link on the page. I've made sure to update all of the docs as per Developer§7, and I've tested it as per section 8. Test files encoded to DFPWM play correctly in ComputerCraft, and other files that work in CC are correctly decoded. I have also verified that corrupt files do not crash the decoder - this should theoretically not be an issue as the result size is constant with respect to the input size. Changes since the prior v2 patch: I've found that the reference encoder has a few errors, and sounds worse than the Java-based implementation that is used most often. I got in contact with someone who knows DFPWM much better than I do, and I worked with them to make a few adjustments that should improve the audio quality. I also made sure that the output matches the Java codec exactly, so it should have the exact same quality as other codecs. Signed-off-by: Jack Bruienne --- Changelog | 1 + MAINTAINERS | 1 + doc/general_contents.texi | 1 + libavcodec/Makefile | 2 + libavcodec/allcodecs.c | 2 + libavcodec/codec_desc.c | 7 +++ libavcodec/codec_id.h | 1 + libavcodec/dfpwmdec.c | 129 ++++++++++++++++++++++++++++++++++++++ libavcodec/dfpwmenc.c | 123 ++++++++++++++++++++++++++++++++++++ libavcodec/utils.c | 2 + libavcodec/version.h | 2 +- 11 files changed, 270 insertions(+), 1 deletion(-) create mode 100644 libavcodec/dfpwmdec.c create mode 100644 libavcodec/dfpwmenc.c --------------Mfdxj3GwecM3VUTEG5sH1Vzw Content-Type: text/x-patch; charset=UTF-8; name="v3-0001-libavcodec-Added-DFPWM1a-codec.patch" Content-Disposition: attachment; filename="v3-0001-libavcodec-Added-DFPWM1a-codec.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL0NoYW5nZWxvZyBiL0NoYW5nZWxvZwppbmRleCA1YWQyY2VmLi41MTcw YTZhIDEwMDY0NAotLS0gYS9DaGFuZ2Vsb2cKKysrIGIvQ2hhbmdlbG9nCkBAIC00LDYgKzQs NyBAQCByZWxlYXNlcyBhcmUgc29ydGVkIGZyb20geW91bmdlc3QgdG8gb2xkZXN0LgogdmVy c2lvbiA1LjE6CiAtIGRpYWxvZ3VlIGVuaGFuY2UgYXVkaW8gZmlsdGVyCiAtIGRyb3BwZWQg b2Jzb2xldGUgWHZNQyBod2FjY2VsCistIERGUFdNIGF1ZGlvIGVuY29kZXIvZGVjb2Rlcgog CiAKIHZlcnNpb24gNS4wOgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVS UwppbmRleCBmMzNjY2JkLi41N2I2ZjMzIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysg Yi9NQUlOVEFJTkVSUwpAQCAtMTYxLDYgKzE2MSw3IEBAIENvZGVjczoKICAgY3NjZC5jICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWltYXIgRG9lZmZpbmdlcgogICBjdXZp ZGRlYy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbW8gUm90aGVucGllbGVyCiAg IGRjYSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vODYKKyAgZGZwd20q ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKYWNrIEJydWllbm5lCiAgIGRpcmFj KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9zdGlzbGF2IFBlaGxpdmFub3YK ICAgZG54aGQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXB0aXN0ZSBDb3Vk dXJpZXIKICAgZG9sYnlfZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb284Ngpk aWZmIC0tZ2l0IGEvZG9jL2dlbmVyYWxfY29udGVudHMudGV4aSBiL2RvYy9nZW5lcmFsX2Nv bnRlbnRzLnRleGkKaW5kZXggZGYxNjkyYy4uMTRhZWFlZCAxMDA2NDQKLS0tIGEvZG9jL2dl bmVyYWxfY29udGVudHMudGV4aQorKysgYi9kb2MvZ2VuZXJhbF9jb250ZW50cy50ZXhpCkBA IC0xMTk0LDYgKzExOTQsNyBAQCBmb2xsb3dpbmcgaW1hZ2UgZm9ybWF0cyBhcmUgc3VwcG9y dGVkOgogQGl0ZW0gQ1JJIEhDQSAgICAgICAgICAgICAgICBAdGFiICAgICBAdGFiIFgKIEBp dGVtIERlbHBoaW5lIFNvZnR3YXJlIEludGVybmF0aW9uYWwgQ0lOIGF1ZGlvICBAdGFiICAg ICBAdGFiICBYCiAgICAgQHRhYiBDb2RlYyB1c2VkIGluIERlbHBoaW5lIFNvZnR3YXJlIElu dGVybmF0aW9uYWwgZ2FtZXMuCitAaXRlbSBERlBXTSAgICAgICAgICAgICAgICAgIEB0YWIg IFggIEB0YWIgIFgKIEBpdGVtIERpZ2l0YWwgU3BlZWNoIFN0YW5kYXJkIC0gU3RhbmRhcmQg UGxheSBtb2RlIChEU1MgU1ApIEB0YWIgICAgIEB0YWIgIFgKIEBpdGVtIERpc2N3b3JsZCBJ SSBCTVYgQXVkaW8gQHRhYiAgICAgQHRhYiAgWAogQGl0ZW0gQ09PSyAgICAgICAgICAgICAg ICAgICBAdGFiICAgICBAdGFiICBYCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL01ha2VmaWxl IGIvbGliYXZjb2RlYy9NYWtlZmlsZQppbmRleCA2MDc2YjRhLi43NDc0MjIwIDEwMDY0NAot LS0gYS9saWJhdmNvZGVjL01ha2VmaWxlCisrKyBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKQEAg LTI4OSw2ICsyODksOCBAQCBPQkpTLSQoQ09ORklHX0RFUkZfRFBDTV9ERUNPREVSKSAgICAg ICArPSBkcGNtLm8KIE9CSlMtJChDT05GSUdfRElSQUNfREVDT0RFUikgICAgICAgICAgICs9 IGRpcmFjZGVjLm8gZGlyYWMubyBkaXJhY2RzcC5vIGRpcmFjdGFiLm8gXAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyYWNfYXJpdGgubyBkaXJhY19k d3QubyBkaXJhY192bGMubwogT0JKUy0kKENPTkZJR19ERkFfREVDT0RFUikgICAgICAgICAg ICAgKz0gZGZhLm8KK09CSlMtJChDT05GSUdfREZQV01fREVDT0RFUikgICAgICAgICAgICs9 IGRmcHdtZGVjLm8KK09CSlMtJChDT05GSUdfREZQV01fRU5DT0RFUikgICAgICAgICAgICs9 IGRmcHdtZW5jLm8KIE9CSlMtJChDT05GSUdfRE5YSERfREVDT0RFUikgICAgICAgICAgICs9 IGRueGhkZGVjLm8gZG54aGRkYXRhLm8KIE9CSlMtJChDT05GSUdfRE5YSERfRU5DT0RFUikg ICAgICAgICAgICs9IGRueGhkZW5jLm8gZG54aGRkYXRhLm8KIE9CSlMtJChDT05GSUdfRE9M QllfRV9ERUNPREVSKSAgICAgICAgICs9IGRvbGJ5X2UubyBkb2xieV9lX3BhcnNlLm8ga2Jk d2luLm8KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMgYi9saWJhdmNvZGVj L2FsbGNvZGVjcy5jCmluZGV4IGQxZTEwMTkuLmMzYTBjMjYgMTAwNjQ0Ci0tLSBhL2xpYmF2 Y29kZWMvYWxsY29kZWNzLmMKKysrIGIvbGliYXZjb2RlYy9hbGxjb2RlY3MuYwpAQCAtNDM3 LDYgKzQzNyw4IEBAIGV4dGVybiBjb25zdCBBVkNvZGVjIGZmX2Jtdl9hdWRpb19kZWNvZGVy OwogZXh0ZXJuIGNvbnN0IEFWQ29kZWMgZmZfY29va19kZWNvZGVyOwogZXh0ZXJuIGNvbnN0 IEFWQ29kZWMgZmZfZGNhX2VuY29kZXI7CiBleHRlcm4gY29uc3QgQVZDb2RlYyBmZl9kY2Ff ZGVjb2RlcjsKK2V4dGVybiBjb25zdCBBVkNvZGVjIGZmX2RmcHdtX2VuY29kZXI7CitleHRl cm4gY29uc3QgQVZDb2RlYyBmZl9kZnB3bV9kZWNvZGVyOwogZXh0ZXJuIGNvbnN0IEFWQ29k ZWMgZmZfZG9sYnlfZV9kZWNvZGVyOwogZXh0ZXJuIGNvbnN0IEFWQ29kZWMgZmZfZHNkX2xz YmZfZGVjb2RlcjsKIGV4dGVybiBjb25zdCBBVkNvZGVjIGZmX2RzZF9tc2JmX2RlY29kZXI7 CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2NvZGVjX2Rlc2MuYyBiL2xpYmF2Y29kZWMvY29k ZWNfZGVzYy5jCmluZGV4IDcyNWM2ODcuLjgxZjNiM2MgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29k ZWMvY29kZWNfZGVzYy5jCisrKyBiL2xpYmF2Y29kZWMvY29kZWNfZGVzYy5jCkBAIC0zMjM3 LDYgKzMyMzcsMTMgQEAgc3RhdGljIGNvbnN0IEFWQ29kZWNEZXNjcmlwdG9yIGNvZGVjX2Rl c2NyaXB0b3JzW10gPSB7CiAgICAgICAgIC5sb25nX25hbWUgPSBOVUxMX0lGX0NPTkZJR19T TUFMTCgiTVNOIFNpcmVuIiksCiAgICAgICAgIC5wcm9wcyAgICAgPSBBVl9DT0RFQ19QUk9Q X0lOVFJBX09OTFkgfCBBVl9DT0RFQ19QUk9QX0xPU1NZLAogICAgIH0sCisgICAgeworICAg ICAgICAuaWQgICAgICAgID0gQVZfQ09ERUNfSURfREZQV00sCisgICAgICAgIC50eXBlICAg ICAgPSBBVk1FRElBX1RZUEVfQVVESU8sCisgICAgICAgIC5uYW1lICAgICAgPSAiZGZwd20i LAorICAgICAgICAubG9uZ19uYW1lID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIkRGUFdNIChE eW5hbWljIEZpbHRlciBQdWxzZSBXaWR0aCBNb2R1bGF0aW9uKSIpLAorICAgICAgICAucHJv cHMgICAgID0gQVZfQ09ERUNfUFJPUF9MT1NTWSwKKyAgICB9LAogCiAgICAgLyogc3VidGl0 bGUgY29kZWNzICovCiAgICAgewpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9jb2RlY19pZC5o IGIvbGliYXZjb2RlYy9jb2RlY19pZC5oCmluZGV4IGFiMjY1ZWMuLjNmZmI5YmQgMTAwNjQ0 Ci0tLSBhL2xpYmF2Y29kZWMvY29kZWNfaWQuaAorKysgYi9saWJhdmNvZGVjL2NvZGVjX2lk LmgKQEAgLTUxNiw2ICs1MTYsNyBAQCBlbnVtIEFWQ29kZWNJRCB7CiAgICAgQVZfQ09ERUNf SURfSENBLAogICAgIEFWX0NPREVDX0lEX0ZBU1RBVURJTywKICAgICBBVl9DT0RFQ19JRF9N U05TSVJFTiwKKyAgICBBVl9DT0RFQ19JRF9ERlBXTSwKIAogICAgIC8qIHN1YnRpdGxlIGNv ZGVjcyAqLwogICAgIEFWX0NPREVDX0lEX0ZJUlNUX1NVQlRJVExFID0gMHgxNzAwMCwgICAg ICAgICAgLy8vPCBBIGR1bW15IElEIHBvaW50aW5nIGF0IHRoZSBzdGFydCBvZiBzdWJ0aXRs ZSBjb2RlY3MuCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2RmcHdtZGVjLmMgYi9saWJhdmNv ZGVjL2RmcHdtZGVjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc4 M2FhZAotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvZGZwd21kZWMuYwpAQCAtMCww ICsxLDEyOSBAQAorLyoKKyAqIERGUFdNIGRlY29kZXIKKyAqIENvcHlyaWdodCAoYykgMjAy MiBKYWNrIEJydWllbm5lCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIDIwMTYgQmVuICJHcmVh c2VNb25rZXkiIFJ1c3NlbGwKKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcu CisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUg TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg KiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg KiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp ZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworLyoqCisgKiBA ZmlsZQorICogREZQV00xYSBkZWNvZGVyCisgKi8KKworI2luY2x1ZGUgImxpYmF2dXRpbC9p bnRlcm5hbC5oIgorI2luY2x1ZGUgImF2Y29kZWMuaCIKKyNpbmNsdWRlICJjb2RlY19pZC5o IgorI2luY2x1ZGUgImludGVybmFsLmgiCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBpbnQg ZnEsIHEsIHMsIGx0OworfSBERlBXTVN0YXRlOworCisvLyBERlBXTSBjb2RlYyBmcm9tIGh0 dHBzOi8vZ2l0aHViLmNvbS9DaGVuVGhyZWFkL2RmcHdtL2Jsb2IvbWFzdGVyLzFhLworLy8g TGljZW5zZWQgaW4gdGhlIHB1YmxpYyBkb21haW4KKworI2lmbmRlZiBDT05TVF9QUkVDCisj ZGVmaW5lIENPTlNUX1BSRUMgMTAKKyNlbmRpZgorCitzdGF0aWMgdm9pZCBhdV9kZWNvbXBy ZXNzKERGUFdNU3RhdGUgKnN0YXRlLCBpbnQgZnMsIGludCBsZW4sIHVpbnQ4X3QgKm91dGJ1 ZiwgdWludDhfdCAqaW5idWYpCit7CisgICAgaW50IGksIGo7CisgICAgdWludDhfdCBkOwor ICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAvLyBnZXQgYml0cwor ICAgICAgICBkID0gKihpbmJ1ZisrKTsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IDg7IGor KykgeworICAgICAgICAgICAgaW50IG5xLCBscSwgc3QsIG5zLCBvdjsKKyAgICAgICAgICAg IC8vIHNldCB0YXJnZXQKKyAgICAgICAgICAgIGludCB0ID0gKChkJjEpID8gMTI3IDogLTEy OCk7CisgICAgICAgICAgICBkID4+PSAxOworCisgICAgICAgICAgICAvLyBhZGp1c3QgY2hh cmdlCisgICAgICAgICAgICBucSA9IHN0YXRlLT5xICsgKChzdGF0ZS0+cyAqICh0LXN0YXRl LT5xKSArICgxPDwoQ09OU1RfUFJFQy0xKSkpPj5DT05TVF9QUkVDKTsKKyAgICAgICAgICAg IGlmKG5xID09IHN0YXRlLT5xICYmIG5xICE9IHQpCisgICAgICAgICAgICAgICAgbnEgKz0g KHQgPT0gMTI3ID8gMSA6IC0xKTsKKyAgICAgICAgICAgIGxxID0gc3RhdGUtPnE7CisgICAg ICAgICAgICBzdGF0ZS0+cSA9IG5xOworCisgICAgICAgICAgICAvLyBhZGp1c3Qgc3RyZW5n dGgKKyAgICAgICAgICAgIHN0ID0gKHQgIT0gc3RhdGUtPmx0ID8gMCA6ICgxPDxDT05TVF9Q UkVDKS0xKTsKKyAgICAgICAgICAgIG5zID0gc3RhdGUtPnM7CisgICAgICAgICAgICBpZihu cyAhPSBzdCkKKyAgICAgICAgICAgICAgICBucyArPSAoc3QgIT0gMCA/IDEgOiAtMSk7Cisj aWYgQ09OU1RfUFJFQyA+IDgKKyAgICAgICAgICAgIGlmKG5zIDwgKDI8PChDT05TVF9QUkVD LTgpKSkgbnMgPSAoMjw8KENPTlNUX1BSRUMtOCkpOworI2VuZGlmCisgICAgICAgICAgICBz dGF0ZS0+cyA9IG5zOworCisgICAgICAgICAgICAvLyBGSUxURVI6IHBlcmZvcm0gYW50aWpl cmsKKyAgICAgICAgICAgIG92ID0gKHQgIT0gc3RhdGUtPmx0ID8gKG5xK2xxKzEpPj4xIDog bnEpOworCisgICAgICAgICAgICAvLyBGSUxURVI6IHBlcmZvcm0gTFBGCisgICAgICAgICAg ICBzdGF0ZS0+ZnEgKz0gKChmcyoob3Ytc3RhdGUtPmZxKSArIDB4ODApPj44KTsKKyAgICAg ICAgICAgIG92ID0gc3RhdGUtPmZxOworCisgICAgICAgICAgICAvLyBvdXRwdXQgc2FtcGxl CisgICAgICAgICAgICAqKG91dGJ1ZisrKSA9IG92ICsgMTI4OworCisgICAgICAgICAgICBz dGF0ZS0+bHQgPSB0OworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgYXZfY29sZCBp bnQgZGZwd21fZGVjX2luaXQoc3RydWN0IEFWQ29kZWNDb250ZXh0ICpjdHgpCit7CisgICAg REZQV01TdGF0ZSAqc3RhdGUgPSBjdHgtPnByaXZfZGF0YTsKKworICAgIHN0YXRlLT5mcSA9 IDA7CisgICAgc3RhdGUtPnEgPSAwOworICAgIHN0YXRlLT5zID0gMDsKKyAgICBzdGF0ZS0+ bHQgPSAtMTI4OworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZGZwd21fZGVj X2ZyYW1lKHN0cnVjdCBBVkNvZGVjQ29udGV4dCAqY3R4LCB2b2lkICpkYXRhLAorICAgIGlu dCAqZ290X2ZyYW1lLCBzdHJ1Y3QgQVZQYWNrZXQgKnBhY2tldCkKK3sKKyAgICBERlBXTVN0 YXRlICpzdGF0ZSA9IGN0eC0+cHJpdl9kYXRhOworICAgIEFWRnJhbWUgKmZyYW1lID0gZGF0 YTsKKworICAgIGZyYW1lLT5mb3JtYXQgPSBBVl9TQU1QTEVfRk1UX1U4OworICAgIGZyYW1l LT5uYl9zYW1wbGVzID0gcGFja2V0LT5zaXplICogODsKKyAgICBmcmFtZS0+Y2hhbm5lbF9s YXlvdXQgPSBBVl9DSF9MQVlPVVRfTU9OTzsKKworICAgIGZmX2dldF9idWZmZXIoY3R4LCBm cmFtZSwgMCk7CisKKyAgICBhdV9kZWNvbXByZXNzKHN0YXRlLCAxNDAsIHBhY2tldC0+c2l6 ZSwgZnJhbWUtPmRhdGFbMF0sIHBhY2tldC0+ZGF0YSk7CisKKyAgICBpZiAoZ290X2ZyYW1l KSAqZ290X2ZyYW1lID0gMTsKKyAgICByZXR1cm4gcGFja2V0LT5zaXplOworfQorCitjb25z dCBBVkNvZGVjIGZmX2RmcHdtX2RlY29kZXIgPSB7CisgICAgLm5hbWUgICAgICAgICAgID0g ImRmcHdtIiwKKyAgICAubG9uZ19uYW1lICAgICAgPSBOVUxMX0lGX0NPTkZJR19TTUFMTCgi REZQV00xYSBhdWRpbyIpLAorICAgIC50eXBlICAgICAgICAgICA9IEFWTUVESUFfVFlQRV9B VURJTywKKyAgICAuaWQgICAgICAgICAgICAgPSBBVl9DT0RFQ19JRF9ERlBXTSwKKyAgICAu cHJpdl9kYXRhX3NpemUgPSBzaXplb2YoREZQV01TdGF0ZSksCisgICAgLmluaXQgICAgICAg ICAgID0gZGZwd21fZGVjX2luaXQsCisgICAgLmRlY29kZSAgICAgICAgID0gZGZwd21fZGVj X2ZyYW1lLAorICAgIC5jYXBhYmlsaXRpZXMgICA9IEFWX0NPREVDX0NBUF9EUjEsCisgICAg LmNhcHNfaW50ZXJuYWwgID0gRkZfQ09ERUNfQ0FQX0lOSVRfVEhSRUFEU0FGRSwKK307Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9kZnB3 bWVuYy5jIGIvbGliYXZjb2RlYy9kZnB3bWVuYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmM5NzNjYzgKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmNvZGVjL2Rm cHdtZW5jLmMKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBERlBXTSBlbmNvZGVyCisgKiBD b3B5cmlnaHQgKGMpIDIwMjIgSmFjayBCcnVpZW5uZQorICogQ29weXJpZ2h0IChjKSAyMDEy LCAyMDE2IEJlbiAiR3JlYXNlTW9ua2V5IiBSdXNzZWxsCisgKgorICogVGhpcyBmaWxlIGlz IHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQor ICovCisKKy8qKgorICogQGZpbGUKKyAqIERGUFdNMWEgZW5jb2RlcgorICovCisKKyNpbmNs dWRlICJsaWJhdnV0aWwvaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJhdmNvZGVjLmgiCisjaW5j bHVkZSAiY29kZWNfaWQuaCIKKyNpbmNsdWRlICJpbnRlcm5hbC5oIgorCit0eXBlZGVmIHN0 cnVjdCB7CisgICAgaW50IGZxLCBxLCBzLCBsdDsKK30gREZQV01TdGF0ZTsKKworLy8gREZQ V00gY29kZWMgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vQ2hlblRocmVhZC9kZnB3bS9ibG9i L21hc3Rlci8xYS8KKy8vIExpY2Vuc2VkIGluIHRoZSBwdWJsaWMgZG9tYWluCisKKyNpZm5k ZWYgQ09OU1RfUFJFQworI2RlZmluZSBDT05TVF9QUkVDIDEwCisjZW5kaWYKKworLy8gbm90 ZSwgbGVuIGRlbm90ZXMgaG93IG1hbnkgY29tcHJlc3NlZCBieXRlcyB0aGVyZSBhcmUgKHVu Y29tcHJlc3NlZCBieXRlcyAvIDgpLgorc3RhdGljIHZvaWQgYXVfY29tcHJlc3MoREZQV01T dGF0ZSAqc3RhdGUsIGludCBsZW4sIHVpbnQ4X3QgKm91dGJ1ZiwgdWludDhfdCAqaW5idWYp Cit7CisgICAgaW50IGksIGo7CisgICAgdWludDhfdCBkID0gMDsKKyAgICBmb3IgKGkgPSAw OyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IDg7IGorKykgewor ICAgICAgICAgICAgaW50IG5xLCBzdCwgbnM7CisgICAgICAgICAgICAvLyBnZXQgc2FtcGxl CisgICAgICAgICAgICBpbnQgdiA9ICooaW5idWYrKykgLSAxMjg7CisgICAgICAgICAgICAv LyBzZXQgYml0IC8gdGFyZ2V0CisgICAgICAgICAgICBpbnQgdCA9ICh2ID4gc3RhdGUtPnEg fHwgKHYgPT0gc3RhdGUtPnEgJiYgdiA9PSAxMjcpID8gMTI3IDogLTEyOCk7CisgICAgICAg ICAgICBkID4+PSAxOworICAgICAgICAgICAgaWYodCA+IDApCisgICAgICAgICAgICAgICAg ZCB8PSAweDgwOworCisgICAgICAgICAgICAvLyBhZGp1c3QgY2hhcmdlCisgICAgICAgICAg ICBucSA9IHN0YXRlLT5xICsgKChzdGF0ZS0+cyAqICh0LXN0YXRlLT5xKSArICgxPDwoQ09O U1RfUFJFQy0xKSkpPj5DT05TVF9QUkVDKTsKKyAgICAgICAgICAgIGlmKG5xID09IHN0YXRl LT5xICYmIG5xICE9IHQpCisgICAgICAgICAgICAgICAgbnEgKz0gKHQgPT0gMTI3ID8gMSA6 IC0xKTsKKyAgICAgICAgICAgIHN0YXRlLT5xID0gbnE7CisKKyAgICAgICAgICAgIC8vIGFk anVzdCBzdHJlbmd0aAorICAgICAgICAgICAgc3QgPSAodCAhPSBzdGF0ZS0+bHQgPyAwIDog KDE8PENPTlNUX1BSRUMpLTEpOworICAgICAgICAgICAgbnMgPSBzdGF0ZS0+czsKKyAgICAg ICAgICAgIGlmKG5zICE9IHN0KQorICAgICAgICAgICAgICAgIG5zICs9IChzdCAhPSAwID8g MSA6IC0xKTsKKyNpZiBDT05TVF9QUkVDID4gOAorICAgICAgICAgICAgaWYobnMgPCAoMjw8 KENPTlNUX1BSRUMtOCkpKSBucyA9ICgyPDwoQ09OU1RfUFJFQy04KSk7CisjZW5kaWYKKyAg ICAgICAgICAgIHN0YXRlLT5zID0gbnM7CisKKyAgICAgICAgICAgIHN0YXRlLT5sdCA9IHQ7 CisgICAgICAgIH0KKworICAgICAgICAvLyBvdXRwdXQgYml0cworICAgICAgICAqKG91dGJ1 ZisrKSA9IGQ7CisgICAgfQorfQorCitzdGF0aWMgYXZfY29sZCBpbnQgZGZwd21fZW5jX2lu aXQoc3RydWN0IEFWQ29kZWNDb250ZXh0ICpjdHgpCit7CisgICAgREZQV01TdGF0ZSAqc3Rh dGUgPSBjdHgtPnByaXZfZGF0YTsKKworICAgIHN0YXRlLT5mcSA9IDA7CisgICAgc3RhdGUt PnEgPSAwOworICAgIHN0YXRlLT5zID0gMDsKKyAgICBzdGF0ZS0+bHQgPSAtMTI4OworCisg ICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZGZwd21fZW5jX2ZyYW1lKHN0cnVjdCBB VkNvZGVjQ29udGV4dCAqY3R4LCBzdHJ1Y3QgQVZQYWNrZXQgKnBhY2tldCwKKyAgICBjb25z dCBzdHJ1Y3QgQVZGcmFtZSAqZnJhbWUsIGludCAqZ290X3BhY2tldCkKK3sKKyAgICBERlBX TVN0YXRlICpzdGF0ZSA9IGN0eC0+cHJpdl9kYXRhOworICAgIGludCBzaXplID0gZnJhbWUt Pm5iX3NhbXBsZXMgLyA4ICsgKGZyYW1lLT5uYl9zYW1wbGVzICUgOCA+IDAgPyAxIDogMCk7 CisKKyAgICBpZiAocGFja2V0LT5zaXplIDwgc2l6ZSkgYXZfZ3Jvd19wYWNrZXQocGFja2V0 LCBzaXplIC0gcGFja2V0LT5zaXplKTsKKyAgICBlbHNlIGlmIChwYWNrZXQtPnNpemUgPiBz aXplKSBhdl9zaHJpbmtfcGFja2V0KHBhY2tldCwgc2l6ZSk7CisKKyAgICBhdV9jb21wcmVz cyhzdGF0ZSwgc2l6ZSwgcGFja2V0LT5kYXRhLCBmcmFtZS0+ZGF0YVswXSk7CisKKyAgICBp ZiAoZ290X3BhY2tldCkgKmdvdF9wYWNrZXQgPSAxOworICAgIHJldHVybiAwOworfQorCitj b25zdCBBVkNvZGVjIGZmX2RmcHdtX2VuY29kZXIgPSB7CisgICAgLm5hbWUgICAgICAgICAg ICA9ICJkZnB3bSIsCisgICAgLmxvbmdfbmFtZSAgICAgICA9IE5VTExfSUZfQ09ORklHX1NN QUxMKCJERlBXTTFhIGF1ZGlvIiksCisgICAgLnR5cGUgICAgICAgICAgICA9IEFWTUVESUFf VFlQRV9BVURJTywKKyAgICAuaWQgICAgICAgICAgICAgID0gQVZfQ09ERUNfSURfREZQV00s CisgICAgLnByaXZfZGF0YV9zaXplICA9IHNpemVvZihERlBXTVN0YXRlKSwKKyAgICAuaW5p dCAgICAgICAgICAgID0gZGZwd21fZW5jX2luaXQsCisgICAgLmVuY29kZTIgICAgICAgICA9 IGRmcHdtX2VuY19mcmFtZSwKKyAgICAuc2FtcGxlX2ZtdHMgICAgID0gKGNvbnN0IGVudW0g QVZTYW1wbGVGb3JtYXRbXSl7QVZfU0FNUExFX0ZNVF9VOCwgQVZfU0FNUExFX0ZNVF9OT05F fSwKKyAgICAuY2hhbm5lbF9sYXlvdXRzID0gKGNvbnN0IHVpbnQ2NF90W10pe0FWX0NIX0xB WU9VVF9NT05PLCAwfSwKKyAgICAuY2FwYWJpbGl0aWVzICAgID0gQVZfQ09ERUNfQ0FQX1ZB UklBQkxFX0ZSQU1FX1NJWkUsCisgICAgLmNhcHNfaW50ZXJuYWwgICA9IEZGX0NPREVDX0NB UF9JTklUX1RIUkVBRFNBRkUsCit9OwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy91dGlscy5j IGIvbGliYXZjb2RlYy91dGlscy5jCmluZGV4IDZmOWQ5MGEuLjA2NmRhNzYgMTAwNjQ0Ci0t LSBhL2xpYmF2Y29kZWMvdXRpbHMuYworKysgYi9saWJhdmNvZGVjL3V0aWxzLmMKQEAgLTU3 Nyw2ICs1NzcsOCBAQCBlbnVtIEFWQ29kZWNJRCBhdl9nZXRfcGNtX2NvZGVjKGVudW0gQVZT YW1wbGVGb3JtYXQgZm10LCBpbnQgYmUpCiBpbnQgYXZfZ2V0X2JpdHNfcGVyX3NhbXBsZShl bnVtIEFWQ29kZWNJRCBjb2RlY19pZCkKIHsKICAgICBzd2l0Y2ggKGNvZGVjX2lkKSB7Cisg ICAgY2FzZSBBVl9DT0RFQ19JRF9ERlBXTToKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgY2Fz ZSBBVl9DT0RFQ19JRF9BRFBDTV9TQlBST18yOgogICAgICAgICByZXR1cm4gMjsKICAgICBj YXNlIEFWX0NPREVDX0lEX0FEUENNX1NCUFJPXzM6CmRpZmYgLS1naXQgYS9saWJhdmNvZGVj L3ZlcnNpb24uaCBiL2xpYmF2Y29kZWMvdmVyc2lvbi5oCmluZGV4IGQ5MDA1MDMuLjg0ZjM5 NzkgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvdmVyc2lvbi5oCisrKyBiL2xpYmF2Y29kZWMv dmVyc2lvbi5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAibGliYXZ1dGlsL3ZlcnNp b24uaCIKIAogI2RlZmluZSBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgIDU5Ci0jZGVmaW5l IExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiAgMjEKKyNkZWZpbmUgTElCQVZDT0RFQ19WRVJT SU9OX01JTk9SICAyMgogI2RlZmluZSBMSUJBVkNPREVDX1ZFUlNJT05fTUlDUk8gMTAwCiAK ICNkZWZpbmUgTElCQVZDT0RFQ19WRVJTSU9OX0lOVCAgQVZfVkVSU0lPTl9JTlQoTElCQVZD T0RFQ19WRVJTSU9OX01BSk9SLCBcCgo= --------------Mfdxj3GwecM3VUTEG5sH1Vzw 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". --------------Mfdxj3GwecM3VUTEG5sH1Vzw--