dbry / adpcm-xq Goto Github PK
View Code? Open in Web Editor NEWXtreme Quality IMA-ADPCM Encoder / Decoder
License: BSD 3-Clause "New" or "Revised" License
Xtreme Quality IMA-ADPCM Encoder / Decoder
License: BSD 3-Clause "New" or "Revised" License
I can use the code to decode and encode audio file but when I use that to decode an RTP payload as a block, the result audio has some noise!
How to modify code to remove or reduce the noise?
Hello!
Cool work, many thanks for sharing it! Quality is really good, I cannot distinguish it really.
Why is not possible to set -b to a number smaller than 8? I tried it and I do see weird things going on. Could you mention the main points that would need to be reworked to support, say 128 or 64 byte blocks? I'd like to give it a try with 32 bytes :D
Also does the standard support something bigger than 4 bits per sample? I'd like to compress 16bit/stereo/44.1kHz audio just a bit, say half the bandwidth for instance. Is ADPCM still useful?
Thanks!
From usage:
Operation: conversion is performed based on the type of the infile
(either encode 16-bit PCM to 4-bit IMA-ADPCM or decode back)
If a folder has a mix of PCM and ADPCM files, it would be useful if adpcm-xq could be set to leave existing ADPCM files as they are.
Currently it's needed to detect whether a wav is encoded in ADPCM or not for scripting purposes of batch encoding whole directories.
(The reverse could also be true if you want PCM only for target as well.)
Hello! I have a question about your library:
If i use adpcm_decode_block(...) function for data encoded by adpcm_encode_block(...) function, i have decoded data buffer a 7 samples shotrer then input buffer for encoding (the block size doesnt matter).
I'm not good at acoustic science, but i think it is not right, isn't it?
I have noticed that:
struct adpcm_context {
struct adpcm_channel channels [2];
int num_channels, lookahead, noise_shaping;
};
and piece of code in adpcm_converter
:
if (WaveHeader.NumChannels < 1 || WaveHeader.NumChannels > 2)
supported = 0;
Is it possible to support channels = {4, 6, 8}
as input?
compiled with: clang -Og -ggdb -fsanitize=address *.c -o adpcm-xq
=================================================================
==8789==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 32 byte(s) in 1 object(s) allocated from:
#0 0x493a3d in malloc (adpcm-xq+0x493a3d)
#1 0x4c5aae in main adpcm-xq.c:121:27
Direct leak of 26 byte(s) in 1 object(s) allocated from:
#0 0x493a3d in malloc (adpcm-xq+0x493a3d)
#1 0x4c5ae0 in main adpcm-xq.c:117:26
SUMMARY: AddressSanitizer: 58 byte(s) leaked in 2 allocation(s).
Hi David, first of all sorry about my english.
I am a student who is working with your code for a project.
I need to know where the temporary weight is in the code. I think that it is in static double minimum_error
but i am not really sure.
I have to execute the program in a board with a low performance processor and coding a small .wav file takes almost 2 hours. Why could this be?
Thanks.
Gonzalo
I have multiple wav files that it would take a very long time to copy each file name in and convert them manually. Is there a command or shortcut to convert multiple?
I recently integrated the encoder into the Moddable SDK. We use IMA ADPCM to reduce the flash storage requirements for audio on embedded products. Switching over to the API was straightforward and the encoder works very nicely. Thank you for the great work.
On macOS X, I ran into the smallest issue - the following warning when compiling:
# tools debug : cc adpcm-lib.c
/Users/hoddie/Projects/moddable/tools/adpcm-lib.c:340:19: warning: comparison of integers of different signs: 'size_t' (aka 'unsigned long') and 'int' [-Wsign-compare]
if (inbufsize < channels * 4)
~~~~~~~~~ ^ ~~~~~~~~~~~~
I added a cast to quiet that. Since channels
is always positive, it might make sense instead to declare it as unsigned?
hello , sorry if im overlooking something really obvious or using this incorrectly , but i cant seem to be able to be able to use this , my first guess was a simple drag and drop onto the .exe after it didnt run when opened but that doesnt seem to be do anything either , and there arent any other files shipped along with the .exe , so ive come to the conclusion that im missing something . sorry again if im overlooking something obvious but i tested a bunch and read the github page and just really cant figure out how to use this . any help would be super appreciated
Hi dbry,
I am using Linux Mint 18.2 KDE based on Ubuntu 16.04.
I downloaded your source code file. ran the "gcc" command in the readme which seems to have created an executable "adpcm-xq", but it does not seem to work, or I do not know how to use it?
I help out on the Linux Mint forum, and someone was asking how to play MTH files which apparently use the adpcm codec?
Linux Mint Forums
https://forums.linuxmint.com/viewtopic.php?f=90&t=261483
Regards,
Phil
phd21
My sample file: https://yadi.sk/d/BvmozCv5A73q6Q
ADPCM
Codec ID : 2
Duration : 3 min 42 s
Bit rate mode : Constant
Bit rate : 352.8 kb/s
Channel(s) : 2 channels
Sampling rate : 44.1 kHz
Bit depth : 4 bits
Stream size : 9.40 MiB (100%)
Some other files I saw were indeed IMA-ADPCM so probably it's different variant.
The program gives error:
"Music_Choice.wav" is not a valid .WAV file!
Hi!
Thanks for your work on adpcm-xq! It's greatly appreciated :)
If anything, it'd be nice to have some test data corpus that would accompany the utility, along with some SnR measurements. Not strictly necessary, but desirable :)
Regards,
Victor
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.