| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 
| 3  * | 3  * | 
| 4  *  Use of this source code is governed by a BSD-style license | 4  *  Use of this source code is governed by a BSD-style license | 
| 5  *  that can be found in the LICENSE file in the root of the source | 5  *  that can be found in the LICENSE file in the root of the source | 
| 6  *  tree. An additional intellectual property rights grant can be found | 6  *  tree. An additional intellectual property rights grant can be found | 
| 7  *  in the file PATENTS.  All contributing project authors may | 7  *  in the file PATENTS.  All contributing project authors may | 
| 8  *  be found in the AUTHORS file in the root of the source tree. | 8  *  be found in the AUTHORS file in the root of the source tree. | 
| 9  */ | 9  */ | 
| 10 | 10 | 
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 185 | 185 | 
| 186     for (AudioPacketList::iterator iter = _audioList.begin(); | 186     for (AudioPacketList::iterator iter = _audioList.begin(); | 
| 187          iter != _audioList.end(); ++iter) { | 187          iter != _audioList.end(); ++iter) { | 
| 188             delete *iter; | 188             delete *iter; | 
| 189     } | 189     } | 
| 190     _audioList.clear(); | 190     _audioList.clear(); | 
| 191 } | 191 } | 
| 192 | 192 | 
| 193 int32_t AudioTransportImpl::RecordedDataIsAvailable( | 193 int32_t AudioTransportImpl::RecordedDataIsAvailable( | 
| 194     const void* audioSamples, | 194     const void* audioSamples, | 
| 195     const uint32_t nSamples, | 195     const size_t nSamples, | 
| 196     const uint8_t nBytesPerSample, | 196     const size_t nBytesPerSample, | 
| 197     const uint8_t nChannels, | 197     const uint8_t nChannels, | 
| 198     const uint32_t samplesPerSec, | 198     const uint32_t samplesPerSec, | 
| 199     const uint32_t totalDelayMS, | 199     const uint32_t totalDelayMS, | 
| 200     const int32_t clockDrift, | 200     const int32_t clockDrift, | 
| 201     const uint32_t currentMicLevel, | 201     const uint32_t currentMicLevel, | 
| 202     const bool keyPressed, | 202     const bool keyPressed, | 
| 203     uint32_t& newMicLevel) | 203     uint32_t& newMicLevel) | 
| 204 { | 204 { | 
| 205     if (_fullDuplex && _audioList.size() < 15) | 205     if (_fullDuplex && _audioList.size() < 15) | 
| 206     { | 206     { | 
| 207         AudioPacket* packet = new AudioPacket(); | 207         AudioPacket* packet = new AudioPacket(); | 
| 208         memcpy(packet->dataBuffer, audioSamples, nSamples * nBytesPerSample); | 208         memcpy(packet->dataBuffer, audioSamples, nSamples * nBytesPerSample); | 
| 209         packet->nSamples = (uint16_t) nSamples; | 209         packet->nSamples = nSamples; | 
| 210         packet->nBytesPerSample = nBytesPerSample; | 210         packet->nBytesPerSample = nBytesPerSample; | 
| 211         packet->nChannels = nChannels; | 211         packet->nChannels = nChannels; | 
| 212         packet->samplesPerSec = samplesPerSec; | 212         packet->samplesPerSec = samplesPerSec; | 
| 213         _audioList.push_back(packet); | 213         _audioList.push_back(packet); | 
| 214     } | 214     } | 
| 215 | 215 | 
| 216     _recCount++; | 216     _recCount++; | 
| 217     if (_recCount % 100 == 0) | 217     if (_recCount % 100 == 0) | 
| 218     { | 218     { | 
| 219         bool addMarker(true); | 219         bool addMarker(true); | 
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 330         { | 330         { | 
| 331             // TEST_LOG("=> emulated mono (one channel exctracted from stereo in
      put)\n"); | 331             // TEST_LOG("=> emulated mono (one channel exctracted from stereo in
      put)\n"); | 
| 332         } | 332         } | 
| 333     } | 333     } | 
| 334 | 334 | 
| 335     return 0; | 335     return 0; | 
| 336 } | 336 } | 
| 337 | 337 | 
| 338 | 338 | 
| 339 int32_t AudioTransportImpl::NeedMorePlayData( | 339 int32_t AudioTransportImpl::NeedMorePlayData( | 
| 340     const uint32_t nSamples, | 340     const size_t nSamples, | 
| 341     const uint8_t nBytesPerSample, | 341     const size_t nBytesPerSample, | 
| 342     const uint8_t nChannels, | 342     const uint8_t nChannels, | 
| 343     const uint32_t samplesPerSec, | 343     const uint32_t samplesPerSec, | 
| 344     void* audioSamples, | 344     void* audioSamples, | 
| 345     uint32_t& nSamplesOut, | 345     size_t& nSamplesOut, | 
| 346     int64_t* elapsed_time_ms, | 346     int64_t* elapsed_time_ms, | 
| 347     int64_t* ntp_time_ms) | 347     int64_t* ntp_time_ms) | 
| 348 { | 348 { | 
| 349     if (_fullDuplex) | 349     if (_fullDuplex) | 
| 350     { | 350     { | 
| 351         if (_audioList.empty()) | 351         if (_audioList.empty()) | 
| 352         { | 352         { | 
| 353             // use zero stuffing when not enough data | 353             // use zero stuffing when not enough data | 
| 354             memset(audioSamples, 0, nBytesPerSample * nSamples); | 354             memset(audioSamples, 0, nBytesPerSample * nSamples); | 
| 355         } else | 355         } else | 
| 356         { | 356         { | 
| 357             AudioPacket* packet = _audioList.front(); | 357             AudioPacket* packet = _audioList.front(); | 
| 358             _audioList.pop_front(); | 358             _audioList.pop_front(); | 
| 359             if (packet) | 359             if (packet) | 
| 360             { | 360             { | 
| 361                 int ret(0); | 361                 int ret(0); | 
| 362                 int lenOut(0); | 362                 size_t lenOut(0); | 
| 363                 int16_t tmpBuf_96kHz[80 * 12]; | 363                 int16_t tmpBuf_96kHz[80 * 12]; | 
| 364                 int16_t* ptr16In = NULL; | 364                 int16_t* ptr16In = NULL; | 
| 365                 int16_t* ptr16Out = NULL; | 365                 int16_t* ptr16Out = NULL; | 
| 366 | 366 | 
| 367                 const uint16_t nSamplesIn = packet->nSamples; | 367                 const size_t nSamplesIn = packet->nSamples; | 
| 368                 const uint8_t nChannelsIn = packet->nChannels; | 368                 const uint8_t nChannelsIn = packet->nChannels; | 
| 369                 const uint32_t samplesPerSecIn = packet->samplesPerSec; | 369                 const uint32_t samplesPerSecIn = packet->samplesPerSec; | 
| 370                 const uint16_t nBytesPerSampleIn = packet->nBytesPerSample; | 370                 const size_t nBytesPerSampleIn = packet->nBytesPerSample; | 
| 371 | 371 | 
| 372                 int32_t fsInHz(samplesPerSecIn); | 372                 int32_t fsInHz(samplesPerSecIn); | 
| 373                 int32_t fsOutHz(samplesPerSec); | 373                 int32_t fsOutHz(samplesPerSec); | 
| 374 | 374 | 
| 375                 if (fsInHz == 44100) | 375                 if (fsInHz == 44100) | 
| 376                     fsInHz = 44000; | 376                     fsInHz = 44000; | 
| 377 | 377 | 
| 378                 if (fsOutHz == 44100) | 378                 if (fsOutHz == 44100) | 
| 379                     fsOutHz = 44000; | 379                     fsOutHz = 44000; | 
| 380 | 380 | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
| 394                         { | 394                         { | 
| 395                             _resampler.Push( | 395                             _resampler.Push( | 
| 396                                 (const int16_t*) packet->dataBuffer, | 396                                 (const int16_t*) packet->dataBuffer, | 
| 397                                 2 * nSamplesIn, tmpBuf_96kHz, 2 * nSamples, | 397                                 2 * nSamplesIn, tmpBuf_96kHz, 2 * nSamples, | 
| 398                                 lenOut); | 398                                 lenOut); | 
| 399 | 399 | 
| 400                             ptr16In = &tmpBuf_96kHz[0]; | 400                             ptr16In = &tmpBuf_96kHz[0]; | 
| 401                             ptr16Out = (int16_t*) audioSamples; | 401                             ptr16Out = (int16_t*) audioSamples; | 
| 402 | 402 | 
| 403                             // do stereo -> mono | 403                             // do stereo -> mono | 
| 404                             for (unsigned int i = 0; i < nSamples; i++) | 404                             for (size_t i = 0; i < nSamples; i++) | 
| 405                             { | 405                             { | 
| 406                                 *ptr16Out = *ptr16In; // use left channel | 406                                 *ptr16Out = *ptr16In; // use left channel | 
| 407                                 ptr16Out++; | 407                                 ptr16Out++; | 
| 408                                 ptr16In++; | 408                                 ptr16In++; | 
| 409                                 ptr16In++; | 409                                 ptr16In++; | 
| 410                             } | 410                             } | 
| 411                         } | 411                         } | 
| 412                         assert(2*nSamples == (uint32_t)lenOut); | 412                         assert(2*nSamples == lenOut); | 
| 413                     } else | 413                     } else | 
| 414                     { | 414                     { | 
| 415                         if (_playCount % 100 == 0) | 415                         if (_playCount % 100 == 0) | 
| 416                             TEST_LOG( | 416                             TEST_LOG( | 
| 417                                      "ERROR: unable to resample from %d to %d\n"
      , | 417                                      "ERROR: unable to resample from %d to %d\n"
      , | 
| 418                                      samplesPerSecIn, samplesPerSec); | 418                                      samplesPerSecIn, samplesPerSec); | 
| 419                     } | 419                     } | 
| 420                 } else | 420                 } else | 
| 421                 { | 421                 { | 
| 422                     // input is mono (can be "reduced from stereo" as well) => | 422                     // input is mono (can be "reduced from stereo" as well) => | 
| 423                     // we will resample in mono | 423                     // we will resample in mono | 
| 424                     ret = _resampler.ResetIfNeeded(fsInHz, fsOutHz, 1); | 424                     ret = _resampler.ResetIfNeeded(fsInHz, fsOutHz, 1); | 
| 425                     if (ret == 0) | 425                     if (ret == 0) | 
| 426                     { | 426                     { | 
| 427                         if (nChannels == 1) | 427                         if (nChannels == 1) | 
| 428                         { | 428                         { | 
| 429                             _resampler.Push( | 429                             _resampler.Push( | 
| 430                                 (const int16_t*) packet->dataBuffer, nSamplesIn, | 430                                 (const int16_t*) packet->dataBuffer, nSamplesIn, | 
| 431                                 (int16_t*) audioSamples, nSamples, lenOut); | 431                                 (int16_t*) audioSamples, nSamples, lenOut); | 
| 432                         } else | 432                         } else | 
| 433                         { | 433                         { | 
| 434                             _resampler.Push( | 434                             _resampler.Push( | 
| 435                                 (const int16_t*) packet->dataBuffer, nSamplesIn, | 435                                 (const int16_t*) packet->dataBuffer, nSamplesIn, | 
| 436                                 tmpBuf_96kHz, nSamples, lenOut); | 436                                 tmpBuf_96kHz, nSamples, lenOut); | 
| 437 | 437 | 
| 438                             ptr16In = &tmpBuf_96kHz[0]; | 438                             ptr16In = &tmpBuf_96kHz[0]; | 
| 439                             ptr16Out = (int16_t*) audioSamples; | 439                             ptr16Out = (int16_t*) audioSamples; | 
| 440 | 440 | 
| 441                             // do mono -> stereo | 441                             // do mono -> stereo | 
| 442                             for (unsigned int i = 0; i < nSamples; i++) | 442                             for (size_t i = 0; i < nSamples; i++) | 
| 443                             { | 443                             { | 
| 444                                 *ptr16Out = *ptr16In; // left | 444                                 *ptr16Out = *ptr16In; // left | 
| 445                                 ptr16Out++; | 445                                 ptr16Out++; | 
| 446                                 *ptr16Out = *ptr16In; // right (same as left sam
      ple) | 446                                 *ptr16Out = *ptr16In; // right (same as left sam
      ple) | 
| 447                                 ptr16Out++; | 447                                 ptr16Out++; | 
| 448                                 ptr16In++; | 448                                 ptr16In++; | 
| 449                             } | 449                             } | 
| 450                         } | 450                         } | 
| 451                         assert(nSamples == (uint32_t)lenOut); | 451                         assert(nSamples == lenOut); | 
| 452                     } else | 452                     } else | 
| 453                     { | 453                     { | 
| 454                         if (_playCount % 100 == 0) | 454                         if (_playCount % 100 == 0) | 
| 455                             TEST_LOG("ERROR: unable to resample from %d to %d\n"
      , | 455                             TEST_LOG("ERROR: unable to resample from %d to %d\n"
      , | 
| 456                                      samplesPerSecIn, samplesPerSec); | 456                                      samplesPerSecIn, samplesPerSec); | 
| 457                     } | 457                     } | 
| 458                 } | 458                 } | 
| 459                 nSamplesOut = nSamples; | 459                 nSamplesOut = nSamples; | 
| 460                 delete packet; | 460                 delete packet; | 
| 461             } | 461             } | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
| 476 | 476 | 
| 477         // convert to stero if required | 477         // convert to stero if required | 
| 478         if (nChannels == 1) | 478         if (nChannels == 1) | 
| 479         { | 479         { | 
| 480             memcpy(audioSamples, fileBuf, 2 * nSamples); | 480             memcpy(audioSamples, fileBuf, 2 * nSamples); | 
| 481         } else | 481         } else | 
| 482         { | 482         { | 
| 483             // mono sample from file is duplicated and sent to left and right | 483             // mono sample from file is duplicated and sent to left and right | 
| 484             // channels | 484             // channels | 
| 485             int16_t* audio16 = (int16_t*) audioSamples; | 485             int16_t* audio16 = (int16_t*) audioSamples; | 
| 486             for (unsigned int i = 0; i < nSamples; i++) | 486             for (size_t i = 0; i < nSamples; i++) | 
| 487             { | 487             { | 
| 488                 (*audio16) = fileBuf[i]; // left | 488                 (*audio16) = fileBuf[i]; // left | 
| 489                 audio16++; | 489                 audio16++; | 
| 490                 (*audio16) = fileBuf[i]; // right | 490                 (*audio16) = fileBuf[i]; // right | 
| 491                 audio16++; | 491                 audio16++; | 
| 492             } | 492             } | 
| 493         } | 493         } | 
| 494     }  // if (_playFromFile && _playFile.Open()) | 494     }  // if (_playFromFile && _playFile.Open()) | 
| 495 | 495 | 
| 496     _playCount++; | 496     _playCount++; | 
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 571     nSamplesOut = nSamples; | 571     nSamplesOut = nSamples; | 
| 572 | 572 | 
| 573     return 0; | 573     return 0; | 
| 574 } | 574 } | 
| 575 | 575 | 
| 576 int AudioTransportImpl::OnDataAvailable(const int voe_channels[], | 576 int AudioTransportImpl::OnDataAvailable(const int voe_channels[], | 
| 577                                         int number_of_voe_channels, | 577                                         int number_of_voe_channels, | 
| 578                                         const int16_t* audio_data, | 578                                         const int16_t* audio_data, | 
| 579                                         int sample_rate, | 579                                         int sample_rate, | 
| 580                                         int number_of_channels, | 580                                         int number_of_channels, | 
| 581                                         int number_of_frames, | 581                                         size_t number_of_frames, | 
| 582                                         int audio_delay_milliseconds, | 582                                         int audio_delay_milliseconds, | 
| 583                                         int current_volume, | 583                                         int current_volume, | 
| 584                                         bool key_pressed, | 584                                         bool key_pressed, | 
| 585                                         bool need_audio_processing) { | 585                                         bool need_audio_processing) { | 
| 586   return 0; | 586   return 0; | 
| 587 } | 587 } | 
| 588 | 588 | 
| 589 void AudioTransportImpl::PushCaptureData(int voe_channel, | 589 void AudioTransportImpl::PushCaptureData(int voe_channel, | 
| 590                                          const void* audio_data, | 590                                          const void* audio_data, | 
| 591                                          int bits_per_sample, int sample_rate, | 591                                          int bits_per_sample, int sample_rate, | 
| 592                                          int number_of_channels, | 592                                          int number_of_channels, | 
| 593                                          int number_of_frames) {} | 593                                          size_t number_of_frames) {} | 
| 594 | 594 | 
| 595 void AudioTransportImpl::PullRenderData(int bits_per_sample, int sample_rate, | 595 void AudioTransportImpl::PullRenderData(int bits_per_sample, int sample_rate, | 
| 596                                         int number_of_channels, | 596                                         int number_of_channels, | 
| 597                                         int number_of_frames, | 597                                         size_t number_of_frames, | 
| 598                                         void* audio_data, | 598                                         void* audio_data, | 
| 599                                         int64_t* elapsed_time_ms, | 599                                         int64_t* elapsed_time_ms, | 
| 600                                         int64_t* ntp_time_ms) {} | 600                                         int64_t* ntp_time_ms) {} | 
| 601 | 601 | 
| 602 FuncTestManager::FuncTestManager() : | 602 FuncTestManager::FuncTestManager() : | 
| 603     _audioDevice(NULL), | 603     _audioDevice(NULL), | 
| 604     _audioEventObserver(NULL), | 604     _audioEventObserver(NULL), | 
| 605     _audioTransport(NULL) | 605     _audioTransport(NULL) | 
| 606 { | 606 { | 
| 607   _playoutFile48 = webrtc::test::ResourcePath("audio_device\\audio_short48", | 607   _playoutFile48 = webrtc::test::ResourcePath("audio_device\\audio_short48", | 
| (...skipping 2154 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2762 | 2762 | 
| 2763     TEST_LOG("\n"); | 2763     TEST_LOG("\n"); | 
| 2764     PRINT_TEST_RESULTS; | 2764     PRINT_TEST_RESULTS; | 
| 2765 | 2765 | 
| 2766     return 0; | 2766     return 0; | 
| 2767 } | 2767 } | 
| 2768 | 2768 | 
| 2769 }  // namespace webrtc | 2769 }  // namespace webrtc | 
| 2770 | 2770 | 
| 2771 // EOF | 2771 // EOF | 
| OLD | NEW | 
|---|