- 17 Jan, 2009 1 commit
-
-
Max Kellermann authored
Removed yet another superfluous buffer layer: return the PCM buffer from pcm_convert() instead of copying PCM data into the caller-supplied buffer.
-
- 15 Jan, 2009 2 commits
-
-
Max Kellermann authored
gcc doesn't know that g_error() never returns. Work around the gcc warning.
-
Max Kellermann authored
dest_size is only used in an assertion. Remove its declaration and move the formula into the assertion.
-
- 07 Jan, 2009 11 commits
-
-
Max Kellermann authored
Return a temporary buffer from pcm_resample_*() and pcm_convert().
-
Max Kellermann authored
Replace a "static" buffer with the PCM buffer library.
-
Max Kellermann authored
Replace a "static" buffer with the PCM buffer library.
-
Max Kellermann authored
Free memory allocated by libsamplerate when the output or the decoder is closed.
-
Max Kellermann authored
In generic PCM functions allowing all sample formats, pass a void pointer instead of a char pointer.
-
Max Kellermann authored
All what's left in pcm_utils.h is the pcm_range() utility function, which is only used internally by pcm_volume and pcm_mix.
-
Max Kellermann authored
The function does not need the full pcm_convert_state struct.
-
Max Kellermann authored
Moved all code which converts the sample format to a separate library.
-
Max Kellermann authored
Moved the software mixing code (used by crossfading) to a separate library.
-
Max Kellermann authored
Moved the software volume code to a separate library.
-
Max Kellermann authored
We are going to split the pcm_utils.c library, and pcm_range() will be useful for several sub libraries.
-
- 03 Jan, 2009 2 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
Don't use libc's rand() function, because it is slow. Our own trivial linear congruential generator is good enough for dithering.
-
- 29 Dec, 2008 1 commit
-
-
Max Kellermann authored
-
- 24 Dec, 2008 1 commit
-
-
Max Kellermann authored
It is illegal to pass an empty audio buffer around. pcm_resample() sometimes seems to result in 0 samples, maybe related to libsamplerate. To work around that problem, add special checks after both pcm_convert() invocations. Removed the pcm_resample()==0 checks from pcm_convert().
-
- 08 Dec, 2008 1 commit
-
-
Max Kellermann authored
libsamplerate produces cracks in the sound output when the destination buffer is too small. This is the case when pcm_convert_size() rounds down. Use ceil(x) instead of floor(0.5+x) there to prevent a buffer overrun.
-
- 02 Dec, 2008 1 commit
-
-
Thomas Jansen authored
We want to remove gcc.h eventually. This takes care of all the G_LIKELY/G_UNLIKELY macros.
-
- 11 Nov, 2008 2 commits
-
-
Max Kellermann authored
Allow pcm_volume() to increase volume.
-
Max Kellermann authored
It may be desirable to change the range of integer volume levels (e.g. to 1024, which may utilize shifts instead of expensive integer divisions). Introduce the constant PCM_VOLUME_1 which describes the integer value for "100% volume". This is currently 1000.
-
- 23 Oct, 2008 7 commits
-
-
Max Kellermann authored
24 bit output is as important as 16 bit output. Provide a pcm_convert() implementation which can convert to 24 bit with as little quality loss as possible.
-
Max Kellermann authored
The old pcm_convert_size() ignored most of the destination format, e.g. it did not check its sample size, and assumed it is 16 bit. Simplify and universalize it by using audio_format_frame_size().
-
Max Kellermann authored
pcm_convert() converted only to 16 bit. To be able to support other sample sizes, move that 16 bit specific code to a separate function.
-
Max Kellermann authored
Separate code from pcm_utils.c to keep it small and simple.
-
Max Kellermann authored
Separate the resampling code from the rest of pcm_utils.c. Create two sub-libraries: pcm_resample_libsamplerate.c and pcm_resample_fallback.c.
-
Max Kellermann authored
Copied and adapted code from the mp3 decoder plugin. This library now replaces the old and low-quality function pcm_convert_24_to_16().
-
Max Kellermann authored
Splitting a frame between two buffer chunks causes distortion in the output. MPD used to assume that the chunk size 1020 would never cause splitted frames, but that isn't the case for 24 bit stereo (127.5 frames), and even less for files with even more channels.
-
- 21 Oct, 2008 3 commits
-
-
Max Kellermann authored
Instead of manually calling memset(0) on the pcm_convert_state struct, client code should use a library function from pcm_utils.c. This way, we can change the semantics of the struct easily.
-
Max Kellermann authored
Renamed all functions which were still in CamelCase.
-
Max Kellermann authored
No CamelCase, and a struct instead of a typedef.
-
- 12 Oct, 2008 5 commits
-
-
Max Kellermann authored
When calculating the conversion buffer size, don't hard-code the formulas for only mono<->stereo.
-
Max Kellermann authored
Convert any number of channels to stereo. In fact, this isn't really stereo, it's rater mono blown up to stereo. This patch should only make it possible to play 5.1 files at all; "real" conversion to stereo should be implemented, but for now, this is better than nothing.
-
Max Kellermann authored
In order to be able to deal with non-trivial conversions, pcm_convertChannels() needs to know both the input and the output channel count. Simplify buffer allocation in that function.
-
Max Kellermann authored
Moved code from pcm_convertChannels() to pcm_convert_channels_1_to_2() and pcm_convert_channels_2_to_1(). Improved the quality of pcm_convert_channels_2_to_1() by calculating the arithmetic mean value of both samples.
-
Max Kellermann authored
Pass int16_t pointers instead of char pointers to functions which can deal with 16 bit audio only.
-
- 10 Oct, 2008 2 commits
-
-
Max Kellermann authored
The last bit of CamelCase in audio_format.h. Additionally, rename a bunch of local variables.
-
Max Kellermann authored
"bits" and "channels" cannot be negative.
-
- 09 Oct, 2008 1 commit
-
-
Max Kellermann authored
In the libsamplerate fallback code, a "const" attribute was missing.
-