[FFmpeg-devel] [PATCH v2 1/2] libavcodec: Added DFPWM1a codec

Jack Bruienne jackbruienne at gmail.com
Sat Feb 26 02:54:41 EET 2022


Sorry, I forgot to run make fate on the split patches, and I used the 
wrong capabilities for the decoder. I have attached a modified patch 
that removes AV_CODEC_CAP_VARIABLE_FRAME_SIZE from the decoder 
capabilities. Let me know if you'd like a full v3 patch email instead.

On 2/25/22 18:43, Jack Bruienne wrote:
>
> 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 <file.dfpwm>" 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 <jackbruienne at gmail.com>
> ---
>  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
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v2-0001-libavcodec-Added-DFPWM1a-codec.patch
Type: text/x-patch
Size: 12544 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20220225/ed78429b/attachment.bin>


More information about the ffmpeg-devel mailing list