Changeset 8817
- Timestamp:
- 02/27/09 15:35:28 (4 years ago)
- Location:
- ossiedev/branches/0.7.x/platform/AudioDevice/src
- Files:
-
- 2 modified
-
AudioDevice.cpp (modified) (9 diffs)
-
AudioDevice.h (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
ossiedev/branches/0.7.x/platform/AudioDevice/src/AudioDevice.cpp
r8808 r8817 30 30 31 31 #define AUDIODEVICE_NUMCHANNELS (2) 32 #define AUDIODEVICE_SAMPLEFORMAT (pa Int16)32 #define AUDIODEVICE_SAMPLEFORMAT (paFloat32) // paInt16 33 33 34 34 // Initializing constructor … … 41 41 42 42 // set configured flags to false 43 // All properties must be configured before the stream is opened, 44 // after which any change in properties will be ignored 43 45 configured = false; 44 46 configured_prop_samplerate_record = false; … … 47 49 configured_prop_buffersize_playback = false; 48 50 51 buffer_playback = NULL; 52 buffer_record = NULL; 53 49 54 // Create Port for output sound 50 55 dataOut = new standardInterfaces_i::complexShort_u("complexShortOut"); 56 dataIn = new standardInterfaces_i::complexShort_p("complexShortIn"); 51 57 // TODO: create port for input sound 52 58 … … 70 76 AudioDevice_i::~AudioDevice_i() 71 77 { 78 if (buffer_playback) 79 delete [] buffer_playback; 80 if (buffer_record) 81 delete [] buffer_record; 82 72 83 PaError err = Pa_Terminate(); 73 84 if (err != paNoError) { … … 144 155 << props.length() 145 156 ) 157 158 if (configured) { 159 std::cout << "warning: AudioDevice_i::configure(), " 160 << "cannot reconfigure once all properties are set" 161 << std::endl; 162 return; 163 } 146 164 147 165 // read properties from .prf … … 201 219 return; 202 220 203 if (isRunning) { 204 stop(); 205 // ... 206 start(); 207 } else { 208 // ... 209 } 210 221 // configure streams 222 ConfigureStreams(); 223 224 // initialize buffers 225 buffer_playback = new float[2*buffersize_playback]; 226 buffer_record = new float[2*buffersize_record]; 211 227 } 212 228 … … 370 386 } 371 387 388 void AudioDevice_i::SetRecordData(float * _data) 389 { 390 // copy data to buffer 391 for (unsigned int i=0; i<buffersize_record; i++) { 392 record_data_L[i] = buffer_record[2*i+0]; 393 record_data_R[i] = buffer_record[2*i+1]; 394 } 395 396 // push data 397 dataOut->pushPacket(record_data_L, record_data_R); 398 } 399 400 void AudioDevice_i::GetPlaybackData(float ** _data) 401 { 402 // wait for data 403 dataIn->getData(playback_data_L, playback_data_R); 404 405 // copy to buffer 406 for (unsigned int i=0; i<buffersize_playback; i++) { 407 buffer_playback[2*i+0] = (*playback_data_L)[i]; 408 buffer_playback[2*i+1] = (*playback_data_R)[i]; 409 } 410 411 // release input buffer 412 dataIn->bufferEmptied(); 413 414 // return pointer to playback buffer 415 _data = &buffer_playback; 416 } 417 372 418 int portaudio_callback_record( 373 419 const void *inputBuffer, … … 378 424 void *userData ) 379 425 { 380 AudioDevice_i * device = (AudioDevice_i*)userData; 381 short int * in = (short int*)inputBuffer; 426 //short int * in = (short int*)inputBuffer; 382 427 383 428 // prevent unused variable warnings … … 403 448 { 404 449 AudioDevice_i * device = (AudioDevice_i*)userData; 405 short int * out = (short int*)outputBuffer; 450 //short int * out = (short int*)outputBuffer; 451 // wait for data 452 float *data; 453 device->GetPlaybackData(&data); 406 454 407 455 // prevent unused variable warnings -
ossiedev/branches/0.7.x/platform/AudioDevice/src/AudioDevice.h
r8807 r8817 34 34 #include "standardinterfaces/complexShort.h" 35 35 #include "standardinterfaces/complexShort_u.h" 36 #include "standardinterfaces/complexShort_p.h" 36 37 37 38 #include "portaudio.h" … … 52 53 PaStreamCallbackFlags statusFlags, 53 54 void *userData ); 55 54 56 55 57 /// Main sound card device (capture) definition … … 72 74 /// static function for omni thread: playback_sound() 73 75 static void run_playback( void * data ); 74 75 /// Sets isRunning to False (pause) 76 /// Sets isRunning to False (pause) 77 78 // 79 void SetRecordData(float * _data); 80 void GetPlaybackData(float ** _data); 81 76 82 void stop() 77 83 throw (CF::Resource::StopError, CORBA::SystemException); … … 127 133 /// Port: output sound samples 128 134 standardInterfaces_i::complexShort_u *dataOut; 135 standardInterfaces_i::complexShort_p *dataIn; 129 136 130 137 // properties configured flags … … 156 163 unsigned int buffersize_playback; 157 164 158 PortTypes::ShortSequence playback_data_L;159 PortTypes::ShortSequence playback_data_R;165 PortTypes::ShortSequence *playback_data_L; 166 PortTypes::ShortSequence *playback_data_R; 160 167 161 168 PortTypes::ShortSequence record_data_L; 162 169 PortTypes::ShortSequence record_data_R; 170 171 float * buffer_playback; 172 float * buffer_record; 163 173 164 174 };