diff options
author | Warren Dukes <warren.dukes@gmail.com> | 2004-05-10 14:06:23 +0000 |
---|---|---|
committer | Warren Dukes <warren.dukes@gmail.com> | 2004-05-10 14:06:23 +0000 |
commit | 7626d9a547e9a8dfadbcf0dc148fcef4e61bb2cd (patch) | |
tree | 99abd91a2aee35d924476a8188c6b3628f72008e /src | |
parent | 9dd098f09b84fadce60a779a2f2daa0e904e94d2 (diff) | |
download | mpd-7626d9a547e9a8dfadbcf0dc148fcef4e61bb2cd.tar.gz mpd-7626d9a547e9a8dfadbcf0dc148fcef4e61bb2cd.tar.xz mpd-7626d9a547e9a8dfadbcf0dc148fcef4e61bb2cd.zip |
more little bits of code in prep for resample/audioFormat conversion,
now to just write the actual audioFormat conversion code!
git-svn-id: https://svn.musicpd.org/mpd/trunk@970 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to 'src')
-rw-r--r-- | src/audio.c | 2 | ||||
-rw-r--r-- | src/outputBuffer.c | 24 | ||||
-rw-r--r-- | src/pcm_utils.c | 19 | ||||
-rw-r--r-- | src/pcm_utils.h | 10 |
4 files changed, 47 insertions, 8 deletions
diff --git a/src/audio.c b/src/audio.c index 9e80c6762..de5296f2e 100644 --- a/src/audio.c +++ b/src/audio.c @@ -167,7 +167,6 @@ void initAudioConfig() { } switch(audio_configFormat->bits) { - case 8: case 16: break; default: @@ -184,7 +183,6 @@ void initAudioConfig() { } switch(audio_configFormat->channels) { - case 1: case 2: break; default: diff --git a/src/outputBuffer.c b/src/outputBuffer.c index 1861fe45a..615139231 100644 --- a/src/outputBuffer.c +++ b/src/outputBuffer.c @@ -38,10 +38,32 @@ void flushOutputBuffer(OutputBuffer * cb) { } int sendDataToOutputBuffer(OutputBuffer * cb, DecoderControl * dc, - char * data, long datalen, float time, mpd_uint16 bitRate) + char * dataIn, long dataInLen, float time, mpd_uint16 bitRate) { mpd_uint16 dataToSend; mpd_uint16 chunkLeft; + char * data; + size_t datalen; + static char * convBuffer = NULL; + static long convBufferLen = 0; + + if(memcmp(&(cb->audioFormat),&(dc->audioFormat),sizeof(AudioFormat))==0) + { + data = dataIn; + datalen = dataInLen; + } + else { + datalen = pcm_sizeOfOutputBufferForAudioFormatConversion( + &(dc->audioFormat), dataIn, dataInLen, + &(cb->audioFormat)); + if(datalen > convBufferLen) { + convBuffer = realloc(convBuffer,datalen); + convBufferLen = datalen; + } + data = convBuffer; + pcm_convertAudioFormat(&(dc->audioFormat), dataIn, dataInLen, + &(cb->audioFormat),data); + } while(datalen) { if(currentChunk != cb->end) { diff --git a/src/pcm_utils.c b/src/pcm_utils.c index 3d39b20e3..741cb3d7b 100644 --- a/src/pcm_utils.c +++ b/src/pcm_utils.c @@ -136,4 +136,21 @@ void pcm_mix(char * buffer1, char * buffer2, size_t bufferSize1, pcm_add(buffer1,buffer2,bufferSize1,bufferSize2,vol1,1000-vol1,format); } -/* vim:set shiftwidth=4 tabstop=8 expandtab: */ + +void pcm_convertAudioFormat(AudioFormat * inFormat, char * inBuffer, size_t + inSize, AudioFormat * outFormat, char * outBuffer) +{ + abort(); + + return; +} + +size_t pcm_sizeOfOutputBufferForAudioFormatConversion(AudioFormat * inFormat, + char * inBuffer, size_t inSize, AudioFormat * outFormat) +{ + abort(); + + return 0; +} + +/* vim:set shiftwidth=8 tabstop=8 expandtab: */ diff --git a/src/pcm_utils.h b/src/pcm_utils.h index 839005ccf..bf1e68799 100644 --- a/src/pcm_utils.h +++ b/src/pcm_utils.h @@ -33,8 +33,10 @@ void pcm_volumeChange(char * buffer, int bufferSize, AudioFormat * format, void pcm_mix(char * buffer1, char * buffer2, size_t bufferSize1, size_t bufferSize2, AudioFormat * format, float portion1); -void pmc_convertAudioFormat(AudioFormat * inFormat, char * inBuffer, size_t - inSize, size_t * inLeft, AudioFormat * outFormat, - char * outBuffer, size_t outSize, size_t * outLeft); +void pcm_convertAudioFormat(AudioFormat * inFormat, char * inBuffer, size_t + inSize, AudioFormat * outFormat, char * outBuffer); + +size_t pcm_sizeOfOutputBufferForAudioFormatConversion(AudioFormat * inFormat, + char * inBuffer, size_t inSize, AudioFormat * outFormat); #endif -/* vim:set shiftwidth=4 tabstop=8 expandtab: */ +/* vim:set shiftwidth=8 tabstop=8 expandtab: */ |