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
This commit is contained in:
Warren Dukes 2004-05-10 14:06:23 +00:00
parent 9dd098f09b
commit 7626d9a547
4 changed files with 47 additions and 8 deletions

View File

@ -167,7 +167,6 @@ void initAudioConfig() {
} }
switch(audio_configFormat->bits) { switch(audio_configFormat->bits) {
case 8:
case 16: case 16:
break; break;
default: default:
@ -184,7 +183,6 @@ void initAudioConfig() {
} }
switch(audio_configFormat->channels) { switch(audio_configFormat->channels) {
case 1:
case 2: case 2:
break; break;
default: default:

View File

@ -38,10 +38,32 @@ void flushOutputBuffer(OutputBuffer * cb) {
} }
int sendDataToOutputBuffer(OutputBuffer * cb, DecoderControl * dc, 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 dataToSend;
mpd_uint16 chunkLeft; 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) { while(datalen) {
if(currentChunk != cb->end) { if(currentChunk != cb->end) {

View File

@ -136,4 +136,21 @@ void pcm_mix(char * buffer1, char * buffer2, size_t bufferSize1,
pcm_add(buffer1,buffer2,bufferSize1,bufferSize2,vol1,1000-vol1,format); 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: */

View File

@ -33,8 +33,10 @@ void pcm_volumeChange(char * buffer, int bufferSize, AudioFormat * format,
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 pmc_convertAudioFormat(AudioFormat * inFormat, char * inBuffer, size_t void pcm_convertAudioFormat(AudioFormat * inFormat, char * inBuffer, size_t
inSize, size_t * inLeft, AudioFormat * outFormat, inSize, AudioFormat * outFormat, char * outBuffer);
char * outBuffer, size_t outSize, size_t * outLeft);
size_t pcm_sizeOfOutputBufferForAudioFormatConversion(AudioFormat * inFormat,
char * inBuffer, size_t inSize, AudioFormat * outFormat);
#endif #endif
/* vim:set shiftwidth=4 tabstop=8 expandtab: */ /* vim:set shiftwidth=8 tabstop=8 expandtab: */