DSP

WebRTC audio解码后播放

2019-07-13 16:57发布

AudioDeviceLinuxPulse::PlayThreadProcess AudioDeviceBuffer::RequestPlayoutData 因为 将  AudioDeviceBuffer注册了audioCallback WebRtc_Word32 AudioDeviceBuffer::RegisterAudioCallback(AudioTransport* audioCallback)
{
    CriticalSectionScoped lock(&_critSectCb);
    _ptrCbAudioTransport audioCallback;


    return 0;
}
VoEBaseImpl::NeedMorePlayData   // Register the AudioTransport implementation
    if (_shared->audio_device()->RegisterAudioCallback(this) != 0)  {
      _shared->SetLastError(VE_AUDIO_DEVICE_MODULE_ERROR, kTraceWarning,
          "Init() failed to register audio callback for the ADM");
    } 所以_ptrCbAudioTransport->NeedMorePlayData会调用到VoEBaseImpl::NeedMorePlayData
 res = _ptrCbAudioTransport->NeedMorePlayData(_playSamples,                                                      playBytesPerSample,
                                                     playChannels,
                                                     playSampleRate,
                                                     &_playBuffer[0],
                                                     nSamplesOut,
                                                     &elapsed_time_ms,
                                                     &ntp_time_ms);


VoEBaseImpl::NeedMorePlayData OutputMixer::MixActiveChannels AudioConferenceMixerImpl::Process AudioConferenceMixerImpl::UpdateToMix Channel::GetAudioFrame AudioCodingModuleImpl::PlayoutData10Ms ACMNetEQ::RecOut WebRtcNetEQ_RecOut WebRtcNetEQ_RecOutInternal WebRtcNetEQ_DSP2MCUinterrupt WebRtcNetEQ_SignalMcu WebRtcNetEQ_PacketBufferExtract WebRtcNetEQ_BufstatsDecision WebRtcNetEQ_DSPInit FuncDecode OutputMixer::DoOperationsOnCombinedSignal AudioProcessingImpl::AnalyzeReverseStream OutputMixer::GetMixedAudio RemixAndResample AudioDeviceBuffer::GetPlayoutData AudioDeviceLinuxPulse::EnableWriteCallback AudioDeviceLinuxPulse::PaStreamWriteCallbackHandler     LATE(pa_stream_peek)(_recStream, &sampleData, &sampleDataSize)   if (LATE(pa_stream_write)( _playStream,(void *) &_playBuffer[_playbackBufferUnused],write, NULL, (int64_t) 0,PA_SEEK_RELATIVE) != PA_OK)