27 |
#include <ao/ao.h> |
#include <ao/ao.h> |
28 |
|
|
29 |
#define MAX_QUEUE 10 |
#define MAX_QUEUE 10 |
30 |
|
#define WAVEOUTBUF 32 |
31 |
|
|
32 |
int g_dsp_fd; |
int g_dsp_fd; |
33 |
ao_device *o_device = NULL; |
ao_device *o_device = NULL; |
165 |
{ |
{ |
166 |
struct audio_packet *packet; |
struct audio_packet *packet; |
167 |
STREAM out; |
STREAM out; |
168 |
unsigned char expanded[16]; |
unsigned char expanded[WAVEOUTBUF]; |
169 |
int offset,len,i; |
int offset,len,i; |
170 |
|
|
171 |
if (queue_lo == queue_hi) |
if (queue_lo == queue_hi) |
182 |
if (g_samplerate == 22050 ) |
if (g_samplerate == 22050 ) |
183 |
{ |
{ |
184 |
/* Resample to 44100 */ |
/* Resample to 44100 */ |
185 |
for(i=0; (i<(2*(3-g_samplewidth))) && (out->p < out->end); i++) |
for(i=0; (i<((WAVEOUTBUF/8)*(3-g_samplewidth))) && (out->p < out->end); i++) |
186 |
{ |
{ |
187 |
offset=i*4*g_samplewidth; |
offset=i*4*g_samplewidth; |
188 |
memcpy(&expanded[0*g_samplewidth+offset],out->p,g_samplewidth); |
memcpy(&expanded[0*g_samplewidth+offset],out->p,g_samplewidth); |
197 |
} |
} |
198 |
else |
else |
199 |
{ |
{ |
200 |
len = (16 > (out->end - out->p)) ? (out->end - out->p) : 16; |
len = (WAVEOUTBUF > (out->end - out->p)) ? (out->end - out->p) : WAVEOUTBUF; |
201 |
memcpy(expanded,out->p,len); |
memcpy(expanded,out->p,len); |
202 |
out->p += len; |
out->p += len; |
203 |
} |
} |