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 07F9440681 for ; Sun, 27 Feb 2022 08:55:28 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D159368AF8D; Sun, 27 Feb 2022 10:55:25 +0200 (EET) Received: from mail-il1-f174.google.com (mail-il1-f174.google.com [209.85.166.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8304568A306 for ; Sun, 27 Feb 2022 10:55:19 +0200 (EET) Received: by mail-il1-f174.google.com with SMTP id j5so7801660ila.2 for ; Sun, 27 Feb 2022 00:55:19 -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=fByziLkEp4gyoPwxkLBOoewekmYxXlHYa0tLBiVMLxo=; b=hMavaOi+8SoiwrOidZrA/9YRUVwKgGKDyj600pX9vPLmUP5eYTR8zOrkPy5Cb9gWBC c0N/HZ6PXQVwEIjZ8MZWJyIS96PkjcvLIvQOROUM97xEwhehqa15hW/j/9l/EwY/MWCs UCY6M76FUtxr2fBm4HITj6t5EjtZw5dZI2RUanRnjWvzuhGx19wkNuUpZHQbiOc3LFcL 5ZmWVkolt240LAipPEvTFSEvqfpRZOIflDM70H+9k+GB/LZ1aZnfqPGyDfwTth0RPkWh fck8IOG7LC8jxdtuP5vacBSTc/Hj58N6E7IydpFyu5V2W30m6kzjXVbeY5YJc7C3on7d ymCQ== 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=fByziLkEp4gyoPwxkLBOoewekmYxXlHYa0tLBiVMLxo=; b=SYkKD2fFVGodn8ZUwqOUJK5ONXPCgHZmq4yjRGlm+hOYem0OncYnWbL+Svj1h9z4Gp WpHsJm6OMdkmwlp/zgFGYTFn2FCzqeV5ZzZRCfw+nCkNoCRvtv3f7Aeh5HsqVkeulwLE lqofVSrxR03F09aAlNxWcQ9jr+PW3rmVUEj9zWmNmdLFKz7IvmQ2bUgLSxafzRCcddsx pIbwbQ57+SIq8Z/dG++C2PoFNjWntGtxDnv5dMsTqLzJCYe/Ml9oPAJX11FcCDFjcpr6 9RaSxChkTAsXAmKcWEWgmIyDMOwhECocNOJYcmDJBrIMcu8ahP5abCUSds6VXVraFMHD dHkw== X-Gm-Message-State: AOAM533Wl/zfIf+4h6ZdOXciPJ+9LMCXXp5crcsq90ikudXz8i7bbh+I re5OumTJk33f/IdV7mqJhTqecckf3LRV3A== X-Google-Smtp-Source: ABdhPJy0cNlnYkE8qev2IJJaihf9UhK3xAac5Y1ZFlQfsFdLbaDhUEh+rce9oV0tlojVEK6kh6Fl7Q== X-Received: by 2002:a05:6e02:178b:b0:2c2:c38e:7d7a with SMTP id y11-20020a056e02178b00b002c2c38e7d7amr5596029ilu.74.1645952117417; Sun, 27 Feb 2022 00:55:17 -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 l16-20020a92d8d0000000b002b8b4d0c29fsm4403252ilo.87.2022.02.27.00.55.16 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 27 Feb 2022 00:55:16 -0800 (PST) Content-Type: multipart/mixed; boundary="------------oIbfZKGLVCA7H2eUI0GJcBWW" Message-ID: <63a183b7-98e4-314a-9444-a6197edf18e5@gmail.com> Date: Sun, 27 Feb 2022 03:55:15 -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 v4 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. --------------oIbfZKGLVCA7H2eUI0GJcBWW 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. To clarify, the codec does not have a specific sample rate - it is provided by the container (or user), which is typically 48000, but has also been known to be 32768. The codec does not specify channel info either, and it's pretty much always used with one mono channel. However, since it appears that libavcodec expects both sample rate and channel count to be handled by either the codec or container, I have made the decision to allow multiple channels interleaved, which as far as I know has never been used, but it works fine here nevertheless. The accompanying raw format has a channels option to set this. (I expect most users of this will not use multiple channels, but it remains an option just in case.) 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, and even fewer decoders. It will streamline the process for importing and listening to 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 v3: Added support for multiple interleaved channels, and cleaned up the code a bunch. Changes since v2: 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 | 127 ++++++++++++++++++++++++++++++++++++++ libavcodec/dfpwmenc.c | 121 ++++++++++++++++++++++++++++++++++++ libavcodec/utils.c | 2 + libavcodec/version.h | 2 +- 11 files changed, 266 insertions(+), 1 deletion(-) create mode 100644 libavcodec/dfpwmdec.c create mode 100644 libavcodec/dfpwmenc.c --------------oIbfZKGLVCA7H2eUI0GJcBWW Content-Type: text/x-patch; charset=UTF-8; name="v4-0001-libavcodec-Added-DFPWM1a-codec.patch" Content-Disposition: attachment; filename="v4-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 ZGVjL2RmcHdtZGVjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM3 YzI3MwotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvZGZwd21kZWMuYwpAQCAtMCww ICsxLDEyNyBAQAorLyoKKyAqIERGUFdNIGRlY29kZXIKKyAqIENvcHlyaWdodCAoYykgMjAy MiBKYWNrIEJydWllbm5lCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIDIwMTYgQmVuICJHcmVh c2VNb25rZXkiIFJ1c3NlbGwKKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcu CisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUg TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg KiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg KiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp ZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworLyoqCisgKiBA ZmlsZQorICogREZQV00xYSBkZWNvZGVyCisgKi8KKworI2luY2x1ZGUgImxpYmF2dXRpbC9p bnRlcm5hbC5oIgorI2luY2x1ZGUgImF2Y29kZWMuaCIKKyNpbmNsdWRlICJjb2RlY19pZC5o IgorI2luY2x1ZGUgImludGVybmFsLmgiCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBpbnQg ZnEsIHEsIHMsIGx0OworfSBERlBXTVN0YXRlOworCisvLyBERlBXTSBjb2RlYyBmcm9tIGh0 dHBzOi8vZ2l0aHViLmNvbS9DaGVuVGhyZWFkL2RmcHdtL2Jsb2IvbWFzdGVyLzFhLworLy8g TGljZW5zZWQgaW4gdGhlIHB1YmxpYyBkb21haW4KKworc3RhdGljIHZvaWQgYXVfZGVjb21w cmVzcyhERlBXTVN0YXRlICpzdGF0ZSwgaW50IGZzLCBpbnQgbGVuLCB1aW50OF90ICpvdXRi dWYsIHVpbnQ4X3QgKmluYnVmKQoreworICAgIHVuc2lnbmVkIGQ7CisgICAgZm9yIChpbnQg aSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAvLyBnZXQgYml0cworICAgICAgICBk ID0gKihpbmJ1ZisrKTsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCA4OyBqKyspIHsK KyAgICAgICAgICAgIGludCBucSwgbHEsIHN0LCBucywgb3Y7CisgICAgICAgICAgICAvLyBz ZXQgdGFyZ2V0CisgICAgICAgICAgICBpbnQgdCA9ICgoZCYxKSA/IDEyNyA6IC0xMjgpOwor ICAgICAgICAgICAgZCA+Pj0gMTsKKworICAgICAgICAgICAgLy8gYWRqdXN0IGNoYXJnZQor ICAgICAgICAgICAgbnEgPSBzdGF0ZS0+cSArICgoc3RhdGUtPnMgKiAodC1zdGF0ZS0+cSkg KyA1MTIpPj4xMCk7CisgICAgICAgICAgICBpZihucSA9PSBzdGF0ZS0+cSAmJiBucSAhPSB0 KQorICAgICAgICAgICAgICAgIG5xICs9ICh0ID09IDEyNyA/IDEgOiAtMSk7CisgICAgICAg ICAgICBscSA9IHN0YXRlLT5xOworICAgICAgICAgICAgc3RhdGUtPnEgPSBucTsKKworICAg ICAgICAgICAgLy8gYWRqdXN0IHN0cmVuZ3RoCisgICAgICAgICAgICBzdCA9ICh0ICE9IHN0 YXRlLT5sdCA/IDAgOiAxMDIzKTsKKyAgICAgICAgICAgIG5zID0gc3RhdGUtPnM7CisgICAg ICAgICAgICBpZihucyAhPSBzdCkKKyAgICAgICAgICAgICAgICBucyArPSAoc3QgIT0gMCA/ IDEgOiAtMSk7CisgICAgICAgICAgICBpZihucyA8IDgpIG5zID0gODsKKyAgICAgICAgICAg IHN0YXRlLT5zID0gbnM7CisKKyAgICAgICAgICAgIC8vIEZJTFRFUjogcGVyZm9ybSBhbnRp amVyaworICAgICAgICAgICAgb3YgPSAodCAhPSBzdGF0ZS0+bHQgPyAobnErbHErMSk+PjEg OiBucSk7CisKKyAgICAgICAgICAgIC8vIEZJTFRFUjogcGVyZm9ybSBMUEYKKyAgICAgICAg ICAgIHN0YXRlLT5mcSArPSAoKGZzKihvdi1zdGF0ZS0+ZnEpICsgMHg4MCk+PjgpOworICAg ICAgICAgICAgb3YgPSBzdGF0ZS0+ZnE7CisKKyAgICAgICAgICAgIC8vIG91dHB1dCBzYW1w bGUKKyAgICAgICAgICAgICoob3V0YnVmKyspID0gb3YgKyAxMjg7CisKKyAgICAgICAgICAg IHN0YXRlLT5sdCA9IHQ7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyBhdl9jb2xk IGludCBkZnB3bV9kZWNfaW5pdChzdHJ1Y3QgQVZDb2RlY0NvbnRleHQgKmN0eCkKK3sKKyAg ICBERlBXTVN0YXRlICpzdGF0ZSA9IGN0eC0+cHJpdl9kYXRhOworCisgICAgc3RhdGUtPmZx ID0gMDsKKyAgICBzdGF0ZS0+cSA9IDA7CisgICAgc3RhdGUtPnMgPSAwOworICAgIHN0YXRl LT5sdCA9IC0xMjg7CisKKyAgICBjdHgtPnNhbXBsZV9mbXQgPSBBVl9TQU1QTEVfRk1UX1U4 OworICAgIGN0eC0+Yml0c19wZXJfcmF3X3NhbXBsZSA9IDg7CisKKyAgICByZXR1cm4gMDsK K30KKworc3RhdGljIGludCBkZnB3bV9kZWNfZnJhbWUoc3RydWN0IEFWQ29kZWNDb250ZXh0 ICpjdHgsIHZvaWQgKmRhdGEsCisgICAgaW50ICpnb3RfZnJhbWUsIHN0cnVjdCBBVlBhY2tl dCAqcGFja2V0KQoreworICAgIERGUFdNU3RhdGUgKnN0YXRlID0gY3R4LT5wcml2X2RhdGE7 CisgICAgQVZGcmFtZSAqZnJhbWUgPSBkYXRhOworICAgIGludCByZXQ7CisgICAgCisgICAg ZnJhbWUtPm5iX3NhbXBsZXMgPSBwYWNrZXQtPnNpemUgKiA4IC8gY3R4LT5jaGFubmVsczsK KyAgICByZXQgPSBmZl9nZXRfYnVmZmVyKGN0eCwgZnJhbWUsIDApOworICAgIGlmIChyZXQp IHsKKyAgICAgICAgKmdvdF9mcmFtZSA9IDA7CisgICAgICAgIHJldHVybiByZXQ7CisgICAg fQorCisgICAgYXVfZGVjb21wcmVzcyhzdGF0ZSwgMTQwLCBwYWNrZXQtPnNpemUsIGZyYW1l LT5kYXRhWzBdLCBwYWNrZXQtPmRhdGEpOworCisgICAgKmdvdF9mcmFtZSA9IDE7CisgICAg cmV0dXJuIHBhY2tldC0+c2l6ZTsKK30KKworY29uc3QgQVZDb2RlYyBmZl9kZnB3bV9kZWNv ZGVyID0geworICAgIC5uYW1lICAgICAgICAgICA9ICJkZnB3bSIsCisgICAgLmxvbmdfbmFt ZSAgICAgID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIkRGUFdNMWEgYXVkaW8iKSwKKyAgICAu dHlwZSAgICAgICAgICAgPSBBVk1FRElBX1RZUEVfQVVESU8sCisgICAgLmlkICAgICAgICAg ICAgID0gQVZfQ09ERUNfSURfREZQV00sCisgICAgLnByaXZfZGF0YV9zaXplID0gc2l6ZW9m KERGUFdNU3RhdGUpLAorICAgIC5pbml0ICAgICAgICAgICA9IGRmcHdtX2RlY19pbml0LAor ICAgIC5kZWNvZGUgICAgICAgICA9IGRmcHdtX2RlY19mcmFtZSwKKyAgICAuY2FwYWJpbGl0 aWVzICAgPSBBVl9DT0RFQ19DQVBfRFIxLAorICAgIC5jYXBzX2ludGVybmFsICA9IEZGX0NP REVDX0NBUF9JTklUX1RIUkVBRFNBRkUsCit9OwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9k ZnB3bWVuYy5jIGIvbGliYXZjb2RlYy9kZnB3bWVuYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjAyZjJlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmNvZGVj L2RmcHdtZW5jLmMKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBERlBXTSBlbmNvZGVyCisg KiBDb3B5cmlnaHQgKGMpIDIwMjIgSmFjayBCcnVpZW5uZQorICogQ29weXJpZ2h0IChjKSAy MDEyLCAyMDE2IEJlbiAiR3JlYXNlTW9ua2V5IiBSdXNzZWxsCisgKgorICogVGhpcyBmaWxl IGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog dmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90 LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEg RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVT QQorICovCisKKy8qKgorICogQGZpbGUKKyAqIERGUFdNMWEgZW5jb2RlcgorICovCisKKyNp bmNsdWRlICJsaWJhdnV0aWwvaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJhdmNvZGVjLmgiCisj aW5jbHVkZSAiY29kZWNfaWQuaCIKKyNpbmNsdWRlICJlbmNvZGUuaCIKKyNpbmNsdWRlICJp bnRlcm5hbC5oIgorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50IGZxLCBxLCBzLCBsdDsK K30gREZQV01TdGF0ZTsKKworLy8gREZQV00gY29kZWMgZnJvbSBodHRwczovL2dpdGh1Yi5j b20vQ2hlblRocmVhZC9kZnB3bS9ibG9iL21hc3Rlci8xYS8KKy8vIExpY2Vuc2VkIGluIHRo ZSBwdWJsaWMgZG9tYWluCisKKy8vIG5vdGUsIGxlbiBkZW5vdGVzIGhvdyBtYW55IGNvbXBy ZXNzZWQgYnl0ZXMgdGhlcmUgYXJlICh1bmNvbXByZXNzZWQgYnl0ZXMgLyA4KS4KK3N0YXRp YyB2b2lkIGF1X2NvbXByZXNzKERGUFdNU3RhdGUgKnN0YXRlLCBpbnQgbGVuLCB1aW50OF90 ICpvdXRidWYsIHVpbnQ4X3QgKmluYnVmKQoreworICAgIHVuc2lnbmVkIGQgPSAwOworICAg IGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgZm9yIChpbnQgaiA9 IDA7IGogPCA4OyBqKyspIHsKKyAgICAgICAgICAgIGludCBucSwgc3QsIG5zOworICAgICAg ICAgICAgLy8gZ2V0IHNhbXBsZQorICAgICAgICAgICAgaW50IHYgPSAqKGluYnVmKyspIC0g MTI4OworICAgICAgICAgICAgLy8gc2V0IGJpdCAvIHRhcmdldAorICAgICAgICAgICAgaW50 IHQgPSAodiA+IHN0YXRlLT5xIHx8ICh2ID09IHN0YXRlLT5xICYmIHYgPT0gMTI3KSA/IDEy NyA6IC0xMjgpOworICAgICAgICAgICAgZCA+Pj0gMTsKKyAgICAgICAgICAgIGlmKHQgPiAw KQorICAgICAgICAgICAgICAgIGQgfD0gMHg4MDsKKworICAgICAgICAgICAgLy8gYWRqdXN0 IGNoYXJnZQorICAgICAgICAgICAgbnEgPSBzdGF0ZS0+cSArICgoc3RhdGUtPnMgKiAodC1z dGF0ZS0+cSkgKyA1MTIpPj4xMCk7CisgICAgICAgICAgICBpZihucSA9PSBzdGF0ZS0+cSAm JiBucSAhPSB0KQorICAgICAgICAgICAgICAgIG5xICs9ICh0ID09IDEyNyA/IDEgOiAtMSk7 CisgICAgICAgICAgICBzdGF0ZS0+cSA9IG5xOworCisgICAgICAgICAgICAvLyBhZGp1c3Qg c3RyZW5ndGgKKyAgICAgICAgICAgIHN0ID0gKHQgIT0gc3RhdGUtPmx0ID8gMCA6IDEwMjMp OworICAgICAgICAgICAgbnMgPSBzdGF0ZS0+czsKKyAgICAgICAgICAgIGlmKG5zICE9IHN0 KQorICAgICAgICAgICAgICAgIG5zICs9IChzdCAhPSAwID8gMSA6IC0xKTsKKyAgICAgICAg ICAgIGlmKG5zIDwgOCkgbnMgPSA4OworICAgICAgICAgICAgc3RhdGUtPnMgPSBuczsKKwor ICAgICAgICAgICAgc3RhdGUtPmx0ID0gdDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIG91 dHB1dCBiaXRzCisgICAgICAgICoob3V0YnVmKyspID0gZDsKKyAgICB9Cit9CisKK3N0YXRp YyBhdl9jb2xkIGludCBkZnB3bV9lbmNfaW5pdChzdHJ1Y3QgQVZDb2RlY0NvbnRleHQgKmN0 eCkKK3sKKyAgICBERlBXTVN0YXRlICpzdGF0ZSA9IGN0eC0+cHJpdl9kYXRhOworCisgICAg c3RhdGUtPmZxID0gMDsKKyAgICBzdGF0ZS0+cSA9IDA7CisgICAgc3RhdGUtPnMgPSAwOwor ICAgIHN0YXRlLT5sdCA9IC0xMjg7CisKKyAgICBjdHgtPmJpdHNfcGVyX2NvZGVkX3NhbXBs ZSA9IDE7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkZnB3bV9lbmNfZnJh bWUoc3RydWN0IEFWQ29kZWNDb250ZXh0ICpjdHgsIHN0cnVjdCBBVlBhY2tldCAqcGFja2V0 LAorICAgIGNvbnN0IHN0cnVjdCBBVkZyYW1lICpmcmFtZSwgaW50ICpnb3RfcGFja2V0KQor eworICAgIERGUFdNU3RhdGUgKnN0YXRlID0gY3R4LT5wcml2X2RhdGE7CisgICAgaW50IHNp emUgPSBmcmFtZS0+bmJfc2FtcGxlcyAqIGZyYW1lLT5jaGFubmVscyAvIDggKyAoZnJhbWUt Pm5iX3NhbXBsZXMgJSA4ID4gMCA/IDEgOiAwKTsKKyAgICBpbnQgcmV0ID0gZmZfZ2V0X2Vu Y29kZV9idWZmZXIoY3R4LCBwYWNrZXQsIHNpemUsIDApOworCisgICAgaWYgKHJldCkgewor ICAgICAgICAqZ290X3BhY2tldCA9IDA7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQor CisgICAgYXVfY29tcHJlc3Moc3RhdGUsIHNpemUsIHBhY2tldC0+ZGF0YSwgZnJhbWUtPmRh dGFbMF0pOworCisgICAgKmdvdF9wYWNrZXQgPSAxOworICAgIHJldHVybiAwOworfQorCitj b25zdCBBVkNvZGVjIGZmX2RmcHdtX2VuY29kZXIgPSB7CisgICAgLm5hbWUgICAgICAgICAg ICA9ICJkZnB3bSIsCisgICAgLmxvbmdfbmFtZSAgICAgICA9IE5VTExfSUZfQ09ORklHX1NN QUxMKCJERlBXTTFhIGF1ZGlvIiksCisgICAgLnR5cGUgICAgICAgICAgICA9IEFWTUVESUFf VFlQRV9BVURJTywKKyAgICAuaWQgICAgICAgICAgICAgID0gQVZfQ09ERUNfSURfREZQV00s CisgICAgLnByaXZfZGF0YV9zaXplICA9IHNpemVvZihERlBXTVN0YXRlKSwKKyAgICAuaW5p dCAgICAgICAgICAgID0gZGZwd21fZW5jX2luaXQsCisgICAgLmVuY29kZTIgICAgICAgICA9 IGRmcHdtX2VuY19mcmFtZSwKKyAgICAuc2FtcGxlX2ZtdHMgICAgID0gKGNvbnN0IGVudW0g QVZTYW1wbGVGb3JtYXRbXSl7QVZfU0FNUExFX0ZNVF9VOCwgQVZfU0FNUExFX0ZNVF9OT05F fSwKKyAgICAuY2FwYWJpbGl0aWVzICAgID0gQVZfQ09ERUNfQ0FQX0RSMSB8IEFWX0NPREVD X0NBUF9WQVJJQUJMRV9GUkFNRV9TSVpFLAorICAgIC5jYXBzX2ludGVybmFsICAgPSBGRl9D T0RFQ19DQVBfSU5JVF9USFJFQURTQUZFLAorfTsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMv dXRpbHMuYyBiL2xpYmF2Y29kZWMvdXRpbHMuYwppbmRleCA2ZjlkOTBhLi4wNjZkYTc2IDEw MDY0NAotLS0gYS9saWJhdmNvZGVjL3V0aWxzLmMKKysrIGIvbGliYXZjb2RlYy91dGlscy5j CkBAIC01NzcsNiArNTc3LDggQEAgZW51bSBBVkNvZGVjSUQgYXZfZ2V0X3BjbV9jb2RlYyhl bnVtIEFWU2FtcGxlRm9ybWF0IGZtdCwgaW50IGJlKQogaW50IGF2X2dldF9iaXRzX3Blcl9z YW1wbGUoZW51bSBBVkNvZGVjSUQgY29kZWNfaWQpCiB7CiAgICAgc3dpdGNoIChjb2RlY19p ZCkgeworICAgIGNhc2UgQVZfQ09ERUNfSURfREZQV006CisgICAgICAgIHJldHVybiAxOwog ICAgIGNhc2UgQVZfQ09ERUNfSURfQURQQ01fU0JQUk9fMjoKICAgICAgICAgcmV0dXJuIDI7 CiAgICAgY2FzZSBBVl9DT0RFQ19JRF9BRFBDTV9TQlBST18zOgpkaWZmIC0tZ2l0IGEvbGli YXZjb2RlYy92ZXJzaW9uLmggYi9saWJhdmNvZGVjL3ZlcnNpb24uaAppbmRleCBkOTAwNTAz Li44NGYzOTc5IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL3ZlcnNpb24uaAorKysgYi9saWJh dmNvZGVjL3ZlcnNpb24uaApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgImxpYmF2dXRp bC92ZXJzaW9uLmgiCiAKICNkZWZpbmUgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SICA1OQot I2RlZmluZSBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1IgIDIxCisjZGVmaW5lIExJQkFWQ09E RUNfVkVSU0lPTl9NSU5PUiAgMjIKICNkZWZpbmUgTElCQVZDT0RFQ19WRVJTSU9OX01JQ1JP IDEwMAogCiAjZGVmaW5lIExJQkFWQ09ERUNfVkVSU0lPTl9JTlQgIEFWX1ZFUlNJT05fSU5U KExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiwgXAoK --------------oIbfZKGLVCA7H2eUI0GJcBWW 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". --------------oIbfZKGLVCA7H2eUI0GJcBWW--