author | Paul Adenot <paul@paul.cx> |
Fri, 29 Apr 2016 15:16:46 +0200 | |
changeset 334448 | a2df8487be0583ad13cbcb1b023dbb951c361f3f |
parent 334447 | 6315f7c5f4953df67515a7a25c1a05a0e22b86ac |
child 334449 | 57e54fef9cf2ebe21eb7d928ed6d5e1d2d180a79 |
push id | 6249 |
push user | jlund@mozilla.com |
push date | Mon, 01 Aug 2016 13:59:36 +0000 |
treeherder | mozilla-beta@bad9d4f5bf7e [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | jesup |
bugs | 1268861 |
milestone | 49.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/media/GraphDriver.cpp +++ b/dom/media/GraphDriver.cpp @@ -838,16 +838,25 @@ AudioCallbackDriver::DataCallback(const // duration so there is some damping against sudden changes. if (!mIterationDurationMS) { mIterationDurationMS = durationMS; } else { mIterationDurationMS = (mIterationDurationMS*3) + durationMS; mIterationDurationMS /= 4; } + // Process mic data if any/needed + if (aInputBuffer) { + if (mAudioInput) { // for this specific input-only or full-duplex stream + mAudioInput->NotifyInputData(mGraphImpl, aInputBuffer, + static_cast<size_t>(aFrames), + mSampleRate, mInputChannels); + } + } + mBuffer.SetBuffer(aOutputBuffer, aFrames); // fill part or all with leftover data from last iteration (since we // align to Audio blocks) mScratchBuffer.Empty(mBuffer); // if we totally filled the buffer (and mScratchBuffer isn't empty), // we don't need to run an iteration and if we do so we may overflow. if (mBuffer.Available()) { @@ -894,25 +903,16 @@ AudioCallbackDriver::DataCallback(const // Callback any observers for the AEC speaker data. Note that one // (maybe) of these will be full-duplex, the others will get their input // data off separate cubeb callbacks. Take care with how stuff is // removed/added to this list and TSAN issues, but input and output will // use separate callback methods. mGraphImpl->NotifyOutputData(aOutputBuffer, static_cast<size_t>(aFrames), mSampleRate, ChannelCount); - // Process mic data if any/needed -- after inserting far-end data for AEC! - if (aInputBuffer) { - if (mAudioInput) { // for this specific input-only or full-duplex stream - mAudioInput->NotifyInputData(mGraphImpl, aInputBuffer, - static_cast<size_t>(aFrames), - mSampleRate, mInputChannels); - } - } - bool switching = false; { MonitorAutoLock mon(mGraphImpl->GetMonitor()); switching = !!NextDriver(); } if (switching && stillProcessing) { // If the audio stream has not been started by the previous driver or