35 |
DEBUG(("rdpsnd_dsp_softvol_set: left: %u, right: %u\n", left, right)); |
DEBUG(("rdpsnd_dsp_softvol_set: left: %u, right: %u\n", left, right)); |
36 |
} |
} |
37 |
|
|
38 |
inline void |
void |
39 |
rdpsnd_dsp_softvol(unsigned char *buffer, unsigned int size, WAVEFORMATEX * format) |
rdpsnd_dsp_softvol(unsigned char *buffer, unsigned int size, WAVEFORMATEX * format) |
40 |
{ |
{ |
41 |
unsigned int factor_left, factor_right; |
unsigned int factor_left, factor_right; |
96 |
format->wBitsPerSample, format->nChannels)); |
format->wBitsPerSample, format->nChannels)); |
97 |
} |
} |
98 |
|
|
99 |
|
void |
100 |
|
rdpsnd_dsp_swapbytes(unsigned char *buffer, unsigned int size, WAVEFORMATEX * format) |
101 |
|
{ |
102 |
|
int i; |
103 |
|
uint8 swap; |
104 |
|
|
105 |
|
if (format->wBitsPerSample == 8) |
106 |
|
return; |
107 |
|
|
108 |
|
for (i = 0; i < size; i += 2) |
109 |
|
{ |
110 |
|
swap = *(buffer + i); |
111 |
|
*(buffer + i) = *(buffer + i + 1); |
112 |
|
*(buffer + i + 1) = swap; |
113 |
|
} |
114 |
|
} |
115 |
|
|
116 |
unsigned char * |
unsigned char * |
117 |
rdpsnd_dsp_process(unsigned char *inbuffer, unsigned int size, struct audio_driver *current_driver, |
rdpsnd_dsp_process(unsigned char *inbuffer, unsigned int size, struct audio_driver *current_driver, |
118 |
WAVEFORMATEX * format) |
WAVEFORMATEX * format) |
125 |
|
|
126 |
/* Software volume control */ |
/* Software volume control */ |
127 |
if (current_driver->wave_out_volume == rdpsnd_dsp_softvol_set) |
if (current_driver->wave_out_volume == rdpsnd_dsp_softvol_set) |
|
{ |
|
128 |
rdpsnd_dsp_softvol(outbuffer, size, format); |
rdpsnd_dsp_softvol(outbuffer, size, format); |
129 |
} |
|
130 |
|
#ifdef B_ENDIAN |
131 |
|
if (current_driver->need_byteswap_on_be) |
132 |
|
rdpsnd_dsp_swapbytes(outbuffer, size, format); |
133 |
|
#endif |
134 |
|
|
135 |
return outbuffer; |
return outbuffer; |
136 |
} |
} |