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:
parent
9dd098f09b
commit
7626d9a547
@ -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:
|
||||||
|
@ -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) {
|
||||||
|
@ -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: */
|
||||||
|
@ -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: */
|
||||||
|
Loading…
Reference in New Issue
Block a user