Commit 407497c4 authored by J. Alexander Treuman's avatar J. Alexander Treuman

Split pcm_convertAudioFormat into separate functions for bitrate, channel,

and samplerate conversion. This makes the code much easier to read, and fixes a few bugs that were previously there. git-svn-id: https://svn.musicpd.org/mpd/trunk@6224 09075e82-0dd4-0310-85a5-a0d7c8717e4f
parent e6d7663b
...@@ -194,11 +194,9 @@ int openAudioOutput(AudioOutput * audioOutput, AudioFormat * audioFormat) ...@@ -194,11 +194,9 @@ int openAudioOutput(AudioOutput * audioOutput, AudioFormat * audioFormat)
static void convertAudioFormat(AudioOutput * audioOutput, char **chunkArgPtr, static void convertAudioFormat(AudioOutput * audioOutput, char **chunkArgPtr,
int *sizeArgPtr) int *sizeArgPtr)
{ {
int size = int size = pcm_sizeOfConvBuffer(&(audioOutput->inAudioFormat),
pcm_sizeOfOutputBufferForAudioFormatConversion( *sizeArgPtr,
&(audioOutput->inAudioFormat), &(audioOutput->outAudioFormat));
*sizeArgPtr,
&(audioOutput->outAudioFormat));
if (size > audioOutput->convBufferLen) { if (size > audioOutput->convBufferLen) {
audioOutput->convBuffer = audioOutput->convBuffer =
......
...@@ -82,13 +82,8 @@ int sendDataToOutputBuffer(OutputBuffer * cb, InputStream * inStream, ...@@ -82,13 +82,8 @@ int sendDataToOutputBuffer(OutputBuffer * cb, InputStream * inStream,
data = dataIn; data = dataIn;
datalen = dataInLen; datalen = dataInLen;
} else { } else {
datalen = datalen = pcm_sizeOfConvBuffer(&(dc->audioFormat), dataInLen,
pcm_sizeOfOutputBufferForAudioFormatConversion(& &(cb->audioFormat));
(dc->
audioFormat),
dataInLen,
&(cb->
audioFormat));
if (datalen > convBufferLen) { if (datalen > convBufferLen) {
convBuffer = xrealloc(convBuffer, datalen); convBuffer = xrealloc(convBuffer, datalen);
convBufferLen = datalen; convBufferLen = datalen;
......
...@@ -26,15 +26,14 @@ ...@@ -26,15 +26,14 @@
#include <stdlib.h> #include <stdlib.h>
void pcm_volumeChange(char *buffer, int bufferSize, AudioFormat * format, void pcm_volumeChange(char *buffer, int bufferSize, AudioFormat * format,
int volume); int volume);
void pcm_mix(char *buffer1, char *buffer2, size_t bufferSize1, void pcm_mix(char *buffer1, char *buffer2, size_t bufferSize1,
size_t bufferSize2, AudioFormat * format, float portion1); size_t bufferSize2, AudioFormat * format, float portion1);
void pcm_convertAudioFormat(AudioFormat * inFormat, char *inBuffer, size_t void pcm_convertAudioFormat(AudioFormat * inFormat, char *inBuffer, size_t
inSize, AudioFormat * outFormat, char *outBuffer); inSize, AudioFormat * outFormat, char *outBuffer);
size_t pcm_sizeOfOutputBufferForAudioFormatConversion(AudioFormat * inFormat, size_t pcm_sizeOfConvBuffer(AudioFormat * inFormat, size_t inSize,
size_t inSize, AudioFormat * outFormat);
AudioFormat * outFormat);
#endif #endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment