there!
This commit is contained in:
parent
78f29f784c
commit
2bfdd07d6c
|
@ -62,39 +62,38 @@ AudioThread (void *arg)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Is the device ready?
|
// Is the device ready?
|
||||||
if (current_audio && (!current_audio->paused))
|
if (!current_audio || current_audio->paused)
|
||||||
{
|
{
|
||||||
// Is conversion required?
|
memset(dma_buffers[whichab], 0, sizeof(dma_buffers[0]));
|
||||||
if (current_audio->convert.needed)
|
}
|
||||||
{
|
else if (current_audio->convert.needed) // Is conversion required?
|
||||||
SDL_mutexP(current_audio->mixer_lock);
|
{
|
||||||
// Get the client to produce audio
|
SDL_mutexP(current_audio->mixer_lock);
|
||||||
current_audio->spec.callback(
|
// Get the client to produce audio
|
||||||
current_audio->spec.userdata,
|
current_audio->spec.callback(
|
||||||
current_audio->convert.buf,
|
current_audio->spec.userdata,
|
||||||
current_audio->convert.len);
|
current_audio->convert.buf,
|
||||||
SDL_mutexV(current_audio->mixer_lock);
|
current_audio->convert.len);
|
||||||
|
SDL_mutexV(current_audio->mixer_lock);
|
||||||
|
|
||||||
// Convert the audio
|
// Convert the audio
|
||||||
SDL_ConvertAudio(¤t_audio->convert);
|
SDL_ConvertAudio(¤t_audio->convert);
|
||||||
|
|
||||||
// Copy from SDL buffer to DMA buffer
|
// Copy from SDL buffer to DMA buffer
|
||||||
memset(dma_buffers[whichab], 0, sizeof(dma_buffers[0]));
|
memcpy(dma_buffers[whichab], current_audio->convert.buf, current_audio->convert.len_cvt);
|
||||||
memcpy(dma_buffers[whichab], current_audio->convert.buf, current_audio->convert.len_cvt);
|
DCFlushRange(dma_buffers[whichab], current_audio->convert.len_cvt);
|
||||||
DCFlushRange(dma_buffers[whichab], current_audio->convert.len_cvt);
|
dma_buffers_size[whichab] = current_audio->convert.len_cvt;
|
||||||
dma_buffers_size[whichab] = current_audio->convert.len_cvt;
|
}
|
||||||
}
|
else
|
||||||
else
|
{
|
||||||
{
|
SDL_mutexP(current_audio->mixer_lock);
|
||||||
SDL_mutexP(current_audio->mixer_lock);
|
current_audio->spec.callback(
|
||||||
current_audio->spec.callback(
|
current_audio->spec.userdata,
|
||||||
current_audio->spec.userdata,
|
(Uint8 *)dma_buffers[whichab],
|
||||||
(Uint8 *)dma_buffers[whichab],
|
SAMPLES_PER_DMA_BUFFER*4);
|
||||||
SAMPLES_PER_DMA_BUFFER*4);
|
DCFlushRange(dma_buffers[whichab], SAMPLES_PER_DMA_BUFFER*4);
|
||||||
DCFlushRange(dma_buffers[whichab], SAMPLES_PER_DMA_BUFFER*4);
|
dma_buffers_size[whichab] = SAMPLES_PER_DMA_BUFFER*4;
|
||||||
dma_buffers_size[whichab] = SAMPLES_PER_DMA_BUFFER*4;
|
SDL_mutexV(current_audio->mixer_lock);
|
||||||
SDL_mutexV(current_audio->mixer_lock);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
LWP_ThreadSleep (audioqueue);
|
LWP_ThreadSleep (audioqueue);
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue