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 C21CB405F8 for ; Fri, 25 Feb 2022 23:43:27 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EE62B68A76A; Sat, 26 Feb 2022 01:43:25 +0200 (EET) Received: from mail-il1-f180.google.com (mail-il1-f180.google.com [209.85.166.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D500E68A70F for ; Sat, 26 Feb 2022 01:43:19 +0200 (EET) Received: by mail-il1-f180.google.com with SMTP id w4so5551981ilj.5 for ; Fri, 25 Feb 2022 15:43: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=F4Cywb8dpwLoFjgNlAAnIfuOwzDwiutamq1m6NatK00=; b=b+iFBjGJ764CpmL2+VSCIgALg914XmwoGO96DcfRFa/0si6bOvIcrbtMcbTmRKdSGr 4IroN6s7nGuAK+d4HvqT1iu9VOAROmHA2bZWUR/VBzMGorWJpjj4t/QFXD8yZVQtZrnK mkeVgS1LvujJl3fX5TwCiAOIOehuoDpy7qQxZX8GoKj07FWTihBcyTlS157yyyXZCfd2 +Uvqk5Wb46nvKEbmna74yJXvgYSgyz39D7FMMHLMAi9OYlxSqj4kHw8WHpah/freFuVE GKDchag6WxqbkHnDGwt9RR8KaZWPWKaNlWFXp0txcNFSwzTR5wGsH9h8HniNghxENtrb PJKA== 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=F4Cywb8dpwLoFjgNlAAnIfuOwzDwiutamq1m6NatK00=; b=dCn6CVfICbwMMzyUUaKxPHYBaRGb+O7BXwawWxTwYCXiAR2jUTnz0XEWSV7W7PyApl WlJQhPS/EkTF+UKqi0MdhdVatMz2zS3hlkdstsFVyWbno3e1iDdOCp3SiXwTKwFSN3me SbJrzSqKs3kr4GObmalgeVqp+cYa+bb3LilytBP6+2E0YBUbjVjHeepk2lKJ7iyAZRgS Ay8FizwW+sH5VS24wSsc3wtnb06lQnYCAP24kLDy7Wk6jDLp+NMGWenP6kNGSR+UtVE/ MtIr4jU9o6vesnhYZplkif5UNQCicSskn/t/wbc6AfcU6gTXElfYYGqcjCj3Wl0jlMrw 88kQ== X-Gm-Message-State: AOAM533p/RcHZCkTy/MEADx8jn7lcg/QK+9JL1E2lRXBg2F4sNrddz9q O/EKMc7Df4wBgBt0TVN0inZUsnqTW23T5Q== X-Google-Smtp-Source: ABdhPJwZgK57u70TyGW8oi6YhniYzOHCeiB/Wr96SK8J3AUPVuSHKeQp+D1BiKOfSzgxgj+bv2ZASQ== X-Received: by 2002:a92:7d0e:0:b0:2be:c4db:12d2 with SMTP id y14-20020a927d0e000000b002bec4db12d2mr8374324ilc.61.1645832598159; Fri, 25 Feb 2022 15:43:18 -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 b24-20020a5d8d98000000b006409ad493fbsm2217457ioj.21.2022.02.25.15.43.17 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 25 Feb 2022 15:43:17 -0800 (PST) Content-Type: multipart/mixed; boundary="------------THEPtjCEK0OxWFlrC6VU7MZR" Message-ID: Date: Fri, 25 Feb 2022 18:43:16 -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 v2 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. --------------THEPtjCEK0OxWFlrC6VU7MZR 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. 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 --------------THEPtjCEK0OxWFlrC6VU7MZR Content-Type: text/x-patch; charset=UTF-8; name="v2-0001-libavcodec-Added-DFPWM1a-codec.patch" Content-Disposition: attachment; filename="v2-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 ZGVjL2RmcHdtZGVjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNk NDUzOAotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvZGZwd21kZWMuYwpAQCAtMCww 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 IGlmKG5xID09IHN0YXRlLT5xICYmIG5xICE9IHQpCisgICAgICAgICAgICAgICAgc3RhdGUt PnEgKz0gKHQgPT0gMTI3ID8gMSA6IC0xKTsKKyAgICAgICAgICAgIGxxID0gc3RhdGUtPnE7 CisgICAgICAgICAgICBzdGF0ZS0+cSA9IG5xOworCisgICAgICAgICAgICAvLyBhZGp1c3Qg c3RyZW5ndGgKKyAgICAgICAgICAgIHN0ID0gKHQgIT0gc3RhdGUtPmx0ID8gMCA6ICgxPDxD T05TVF9QUkVDKS0xKTsKKyAgICAgICAgICAgIG5zID0gc3RhdGUtPnM7CisgICAgICAgICAg ICBpZihucyAhPSBzdCkKKyAgICAgICAgICAgICAgICBucyArPSAoc3QgIT0gMCA/IDEgOiAt MSk7CisjaWYgQ09OU1RfUFJFQyA+IDgKKyAgICAgICAgICAgIGlmKG5zIDwgMSsoMTw8KENP TlNUX1BSRUMtOCkpKSBucyA9IDErKDE8PChDT05TVF9QUkVDLTgpKTsKKyNlbmRpZgorICAg ICAgICAgICAgc3RhdGUtPnMgPSBuczsKKworICAgICAgICAgICAgLy8gRklMVEVSOiBwZXJm b3JtIGFudGlqZXJrCisgICAgICAgICAgICBvdiA9ICh0ICE9IHN0YXRlLT5sdCA/IChucSts cSk+PjEgOiBucSk7CisKKyAgICAgICAgICAgIC8vIEZJTFRFUjogcGVyZm9ybSBMUEYKKyAg ICAgICAgICAgIHN0YXRlLT5mcSArPSAoKGZzKihvdi1zdGF0ZS0+ZnEpICsgMHg4MCk+Pjgp OworICAgICAgICAgICAgb3YgPSBzdGF0ZS0+ZnE7CisKKyAgICAgICAgICAgIC8vIG91dHB1 dCBzYW1wbGUKKyAgICAgICAgICAgICoob3V0YnVmKyspID0gb3YgKyAxMjg7CisKKyAgICAg ICAgICAgIHN0YXRlLT5sdCA9IHQ7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyBh dl9jb2xkIGludCBkZnB3bV9kZWNfaW5pdChzdHJ1Y3QgQVZDb2RlY0NvbnRleHQgKmN0eCkK K3sKKyAgICBERlBXTVN0YXRlICpzdGF0ZSA9IGN0eC0+cHJpdl9kYXRhOworCisgICAgc3Rh dGUtPmZxID0gMDsKKyAgICBzdGF0ZS0+cSA9IDA7CisgICAgc3RhdGUtPnMgPSAwOworICAg IHN0YXRlLT5sdCA9IC0xMjg7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBk ZnB3bV9kZWNfZnJhbWUoc3RydWN0IEFWQ29kZWNDb250ZXh0ICpjdHgsIHZvaWQgKmRhdGEs CisgICAgaW50ICpnb3RfZnJhbWUsIHN0cnVjdCBBVlBhY2tldCAqcGFja2V0KQoreworICAg IERGUFdNU3RhdGUgKnN0YXRlID0gY3R4LT5wcml2X2RhdGE7CisgICAgQVZGcmFtZSAqZnJh bWUgPSBkYXRhOworCisgICAgZnJhbWUtPmZvcm1hdCA9IEFWX1NBTVBMRV9GTVRfVTg7Cisg ICAgZnJhbWUtPm5iX3NhbXBsZXMgPSBwYWNrZXQtPnNpemUgKiA4OworICAgIGZyYW1lLT5j aGFubmVsX2xheW91dCA9IEFWX0NIX0xBWU9VVF9NT05POworCisgICAgZmZfZ2V0X2J1ZmZl cihjdHgsIGZyYW1lLCAwKTsKKworICAgIGF1X2RlY29tcHJlc3Moc3RhdGUsIDEwMCwgcGFj a2V0LT5zaXplLCBmcmFtZS0+ZGF0YVswXSwgcGFja2V0LT5kYXRhKTsKKworICAgIGlmIChn b3RfZnJhbWUpICpnb3RfZnJhbWUgPSAxOworICAgIHJldHVybiBwYWNrZXQtPnNpemU7Cit9 CisKK2NvbnN0IEFWQ29kZWMgZmZfZGZwd21fZGVjb2RlciA9IHsKKyAgICAubmFtZSAgICAg ICAgICAgPSAiZGZwd20iLAorICAgIC5sb25nX25hbWUgICAgICA9IE5VTExfSUZfQ09ORklH X1NNQUxMKCJERlBXTTFhIGF1ZGlvIiksCisgICAgLnR5cGUgICAgICAgICAgID0gQVZNRURJ QV9UWVBFX0FVRElPLAorICAgIC5pZCAgICAgICAgICAgICA9IEFWX0NPREVDX0lEX0RGUFdN LAorICAgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihERlBXTVN0YXRlKSwKKyAgICAuaW5p dCAgICAgICAgICAgPSBkZnB3bV9kZWNfaW5pdCwKKyAgICAuZGVjb2RlICAgICAgICAgPSBk ZnB3bV9kZWNfZnJhbWUsCisgICAgLmNhcGFiaWxpdGllcyAgID0gQVZfQ09ERUNfQ0FQX1ZB UklBQkxFX0ZSQU1FX1NJWkUgfCBBVl9DT0RFQ19DQVBfRFIxLAorICAgIC5jYXBzX2ludGVy bmFsICA9IEZGX0NPREVDX0NBUF9JTklUX1RIUkVBRFNBRkUsCit9OwpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZGZwd21lbmMuYyBiL2xp YmF2Y29kZWMvZGZwd21lbmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li41ZmNjMGMxCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy9kZnB3bWVuYy5jCkBA IC0wLDAgKzEsMTIzIEBACisvKgorICogREZQV00gZW5jb2RlcgorICogQ29weXJpZ2h0IChj KSAyMDIyIEphY2sgQnJ1aWVubmUKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgMjAxNiBCZW4g IkdyZWFzZU1vbmtleSIgUnVzc2VsbAorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZG bXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor ICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisvKioK KyAqIEBmaWxlCisgKiBERlBXTTFhIGVuY29kZXIKKyAqLworCisjaW5jbHVkZSAibGliYXZ1 dGlsL2ludGVybmFsLmgiCisjaW5jbHVkZSAiYXZjb2RlYy5oIgorI2luY2x1ZGUgImNvZGVj X2lkLmgiCisjaW5jbHVkZSAiaW50ZXJuYWwuaCIKKwordHlwZWRlZiBzdHJ1Y3QgeworICAg IGludCBmcSwgcSwgcywgbHQ7Cit9IERGUFdNU3RhdGU7CisKKy8vIERGUFdNIGNvZGVjIGZy b20gaHR0cHM6Ly9naXRodWIuY29tL0NoZW5UaHJlYWQvZGZwd20vYmxvYi9tYXN0ZXIvMWEv CisvLyBMaWNlbnNlZCBpbiB0aGUgcHVibGljIGRvbWFpbgorCisjaWZuZGVmIENPTlNUX1BS RUMKKyNkZWZpbmUgQ09OU1RfUFJFQyAxMAorI2VuZGlmCisKKy8vIG5vdGUsIGxlbiBkZW5v dGVzIGhvdyBtYW55IGNvbXByZXNzZWQgYnl0ZXMgdGhlcmUgYXJlICh1bmNvbXByZXNzZWQg Ynl0ZXMgLyA4KS4KK3N0YXRpYyB2b2lkIGF1X2NvbXByZXNzKERGUFdNU3RhdGUgKnN0YXRl LCBpbnQgbGVuLCB1aW50OF90ICpvdXRidWYsIHVpbnQ4X3QgKmluYnVmKQoreworICAgIGlu dCBpLCBqOworICAgIHVpbnQ4X3QgZCA9IDA7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsg aSsrKSB7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCA4OyBqKyspIHsKKyAgICAgICAgICAg IGludCBucSwgc3QsIG5zOworICAgICAgICAgICAgLy8gZ2V0IHNhbXBsZQorICAgICAgICAg ICAgaW50IHYgPSAqKGluYnVmKyspIC0gMTI4OworICAgICAgICAgICAgLy8gc2V0IGJpdCAv IHRhcmdldAorICAgICAgICAgICAgaW50IHQgPSAodiA8IHN0YXRlLT5xIHx8IHYgPT0gLTEy OCA/IC0xMjggOiAxMjcpOworICAgICAgICAgICAgZCA+Pj0gMTsKKyAgICAgICAgICAgIGlm KHQgPiAwKQorICAgICAgICAgICAgICAgIGQgfD0gMHg4MDsKKworICAgICAgICAgICAgLy8g YWRqdXN0IGNoYXJnZQorICAgICAgICAgICAgbnEgPSBzdGF0ZS0+cSArICgoc3RhdGUtPnMg KiAodC1zdGF0ZS0+cSkgKyAoMTw8KENPTlNUX1BSRUMtMSkpKT4+Q09OU1RfUFJFQyk7Cisg ICAgICAgICAgICBpZihucSA9PSBzdGF0ZS0+cSAmJiBucSAhPSB0KQorICAgICAgICAgICAg ICAgIG5xICs9ICh0ID09IDEyNyA/IDEgOiAtMSk7CisgICAgICAgICAgICBzdGF0ZS0+cSA9 IG5xOworCisgICAgICAgICAgICAvLyBhZGp1c3Qgc3RyZW5ndGgKKyAgICAgICAgICAgIHN0 ID0gKHQgIT0gc3RhdGUtPmx0ID8gMCA6ICgxPDxDT05TVF9QUkVDKS0xKTsKKyAgICAgICAg ICAgIG5zID0gc3RhdGUtPnM7CisgICAgICAgICAgICBpZihucyAhPSBzdCkKKyAgICAgICAg ICAgICAgICBucyArPSAoc3QgIT0gMCA/IDEgOiAtMSk7CisjaWYgQ09OU1RfUFJFQyA+IDgK KyAgICAgICAgICAgIGlmKG5zIDwgMSsoMTw8KENPTlNUX1BSRUMtOCkpKSBucyA9IDErKDE8 PChDT05TVF9QUkVDLTgpKTsKKyNlbmRpZgorICAgICAgICAgICAgc3RhdGUtPnMgPSBuczsK KworICAgICAgICAgICAgc3RhdGUtPmx0ID0gdDsKKyAgICAgICAgfQorCisgICAgICAgIC8v IG91dHB1dCBiaXRzCisgICAgICAgICoob3V0YnVmKyspID0gZDsKKyAgICB9Cit9CisKK3N0 YXRpYyBhdl9jb2xkIGludCBkZnB3bV9lbmNfaW5pdChzdHJ1Y3QgQVZDb2RlY0NvbnRleHQg KmN0eCkKK3sKKyAgICBERlBXTVN0YXRlICpzdGF0ZSA9IGN0eC0+cHJpdl9kYXRhOworCisg ICAgc3RhdGUtPmZxID0gMDsKKyAgICBzdGF0ZS0+cSA9IDA7CisgICAgc3RhdGUtPnMgPSAw OworICAgIHN0YXRlLT5sdCA9IC0xMjg7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGlj IGludCBkZnB3bV9lbmNfZnJhbWUoc3RydWN0IEFWQ29kZWNDb250ZXh0ICpjdHgsIHN0cnVj dCBBVlBhY2tldCAqcGFja2V0LAorICAgIGNvbnN0IHN0cnVjdCBBVkZyYW1lICpmcmFtZSwg aW50ICpnb3RfcGFja2V0KQoreworICAgIERGUFdNU3RhdGUgKnN0YXRlID0gY3R4LT5wcml2 X2RhdGE7CisgICAgaW50IHNpemUgPSBmcmFtZS0+bmJfc2FtcGxlcyAvIDggKyAoZnJhbWUt Pm5iX3NhbXBsZXMgJSA4ID4gMCA/IDEgOiAwKTsKKworICAgIGlmIChwYWNrZXQtPnNpemUg PCBzaXplKSBhdl9ncm93X3BhY2tldChwYWNrZXQsIHNpemUgLSBwYWNrZXQtPnNpemUpOwor ICAgIGVsc2UgaWYgKHBhY2tldC0+c2l6ZSA+IHNpemUpIGF2X3Nocmlua19wYWNrZXQocGFj a2V0LCBzaXplKTsKKworICAgIGF1X2NvbXByZXNzKHN0YXRlLCBzaXplLCBwYWNrZXQtPmRh dGEsIGZyYW1lLT5kYXRhWzBdKTsKKworICAgIGlmIChnb3RfcGFja2V0KSAqZ290X3BhY2tl dCA9IDE7CisgICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IEFWQ29kZWMgZmZfZGZwd21fZW5j b2RlciA9IHsKKyAgICAubmFtZSAgICAgICAgICAgID0gImRmcHdtIiwKKyAgICAubG9uZ19u YW1lICAgICAgID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIkRGUFdNMWEgYXVkaW8iKSwKKyAg ICAudHlwZSAgICAgICAgICAgID0gQVZNRURJQV9UWVBFX0FVRElPLAorICAgIC5pZCAgICAg ICAgICAgICAgPSBBVl9DT0RFQ19JRF9ERlBXTSwKKyAgICAucHJpdl9kYXRhX3NpemUgID0g c2l6ZW9mKERGUFdNU3RhdGUpLAorICAgIC5pbml0ICAgICAgICAgICAgPSBkZnB3bV9lbmNf aW5pdCwKKyAgICAuZW5jb2RlMiAgICAgICAgID0gZGZwd21fZW5jX2ZyYW1lLAorICAgIC5z YW1wbGVfZm10cyAgICAgPSAoY29uc3QgZW51bSBBVlNhbXBsZUZvcm1hdFtdKXtBVl9TQU1Q TEVfRk1UX1U4LCBBVl9TQU1QTEVfRk1UX05PTkV9LAorICAgIC5jaGFubmVsX2xheW91dHMg PSAoY29uc3QgdWludDY0X3RbXSl7QVZfQ0hfTEFZT1VUX01PTk8sIDB9LAorICAgIC5jYXBh YmlsaXRpZXMgICAgPSBBVl9DT0RFQ19DQVBfVkFSSUFCTEVfRlJBTUVfU0laRSwKKyAgICAu Y2Fwc19pbnRlcm5hbCAgID0gRkZfQ09ERUNfQ0FQX0lOSVRfVEhSRUFEU0FGRSwKK307CmRp ZmYgLS1naXQgYS9saWJhdmNvZGVjL3V0aWxzLmMgYi9saWJhdmNvZGVjL3V0aWxzLmMKaW5k ZXggNmY5ZDkwYS4uMDY2ZGE3NiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy91dGlscy5jCisr KyBiL2xpYmF2Y29kZWMvdXRpbHMuYwpAQCAtNTc3LDYgKzU3Nyw4IEBAIGVudW0gQVZDb2Rl Y0lEIGF2X2dldF9wY21fY29kZWMoZW51bSBBVlNhbXBsZUZvcm1hdCBmbXQsIGludCBiZSkK IGludCBhdl9nZXRfYml0c19wZXJfc2FtcGxlKGVudW0gQVZDb2RlY0lEIGNvZGVjX2lkKQog ewogICAgIHN3aXRjaCAoY29kZWNfaWQpIHsKKyAgICBjYXNlIEFWX0NPREVDX0lEX0RGUFdN OgorICAgICAgICByZXR1cm4gMTsKICAgICBjYXNlIEFWX0NPREVDX0lEX0FEUENNX1NCUFJP XzI6CiAgICAgICAgIHJldHVybiAyOwogICAgIGNhc2UgQVZfQ09ERUNfSURfQURQQ01fU0JQ Uk9fMzoKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmVyc2lvbi5oIGIvbGliYXZjb2RlYy92 ZXJzaW9uLmgKaW5kZXggZDkwMDUwMy4uODRmMzk3OSAxMDA2NDQKLS0tIGEvbGliYXZjb2Rl Yy92ZXJzaW9uLmgKKysrIGIvbGliYXZjb2RlYy92ZXJzaW9uLmgKQEAgLTI4LDcgKzI4LDcg QEAKICNpbmNsdWRlICJsaWJhdnV0aWwvdmVyc2lvbi5oIgogCiAjZGVmaW5lIExJQkFWQ09E RUNfVkVSU0lPTl9NQUpPUiAgNTkKLSNkZWZpbmUgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9S ICAyMQorI2RlZmluZSBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1IgIDIyCiAjZGVmaW5lIExJ QkFWQ09ERUNfVkVSU0lPTl9NSUNSTyAxMDAKIAogI2RlZmluZSBMSUJBVkNPREVDX1ZFUlNJ T05fSU5UICBBVl9WRVJTSU9OX0lOVChMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IsIFwKCg== --------------THEPtjCEK0OxWFlrC6VU7MZR 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". --------------THEPtjCEK0OxWFlrC6VU7MZR--