| 60 | |
| 61 | |
| 62 | static void alsaThread(void *aParam) |
| 63 | { |
| 64 | |
| 65 | ALSAData *data = static_cast<ALSAData*>(aParam); |
| 66 | while (!data->audioProcessingDone) |
| 67 | { |
| 68 | data->soloud->mix(data->buffer, data->samples); |
| 69 | for (int i=0;i<data->samples*data->channels;++i) |
| 70 | { |
| 71 | data->sampleBuffer[i] = static_cast<short>(floor(data->buffer[i] |
| 72 | * static_cast<float>(0x7fff))); |
| 73 | } |
| 74 | if (snd_pcm_writei(data->alsaDeviceHandle, data->sampleBuffer, data->samples) == -EPIPE) |
| 75 | snd_pcm_prepare(data->alsaDeviceHandle); |
| 76 | |
| 77 | } |
| 78 | |
| 79 | } |
| 80 | |
| 81 | static void alsaCleanup(Soloud *aSoloud) |
| 82 | { |