| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | 
							- #include "PortAudioSink.h"
 
- PortAudioSink::PortAudioSink() {
 
-   Pa_Initialize();
 
-   this->setParams(44100, 2, 16);
 
- }
 
- bool PortAudioSink::setParams(uint32_t sampleRate, uint8_t channelCount,
 
-                               uint8_t bitDepth) {
 
-   if (stream) {
 
-     Pa_StopStream(stream);
 
-   }
 
-   PaStreamParameters outputParameters;
 
-   outputParameters.device = Pa_GetDefaultOutputDevice();
 
-   if (outputParameters.device == paNoDevice) {
 
-     printf("PortAudio: Default audio device not found!\n");
 
-     // exit(0);
 
-   }
 
-   printf("PortAudio: Default audio device not found!\n");
 
-   outputParameters.channelCount = channelCount;
 
-   switch (bitDepth) {
 
-     case 32:
 
-       outputParameters.sampleFormat = paInt32;
 
-       break;
 
-     case 24:
 
-       outputParameters.sampleFormat = paInt24;
 
-       break;
 
-     case 16:
 
-       outputParameters.sampleFormat = paInt16;
 
-       break;
 
-     case 8:
 
-       outputParameters.sampleFormat = paInt8;
 
-       break;
 
-     default:
 
-       outputParameters.sampleFormat = paInt16;
 
-       break;
 
-   }
 
-   outputParameters.suggestedLatency = 0.050;
 
-   outputParameters.hostApiSpecificStreamInfo = NULL;
 
-   PaError err = Pa_OpenStream(&stream, NULL, &outputParameters, sampleRate,
 
-                               4096 / (channelCount * bitDepth / 8), paClipOff,
 
-                               NULL,  // blocking api
 
-                               NULL);
 
-   Pa_StartStream(stream);
 
-   return !err;
 
- }
 
- PortAudioSink::~PortAudioSink() {
 
-   Pa_StopStream(stream);
 
-   Pa_Terminate();
 
- }
 
- void PortAudioSink::feedPCMFrames(const uint8_t* buffer, size_t bytes) {
 
-   Pa_WriteStream(stream, buffer, bytes / 4);
 
- }
 
 
  |