diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2018-04-19 12:08:25 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-04-19 12:08:25 +0200 |
commit | d7df65954a585e97ccee21fa9cb50cb116efddcc (patch) | |
tree | 9ed9a1f46f5d2e8373dcab553bad55b54bb8103b /dom/media | |
parent | ba71cc45fef6dfaecef8f5edf65ce1f1ff457624 (diff) | |
parent | 9135a11e8c8f0837738fd976b28d36a53fd1de27 (diff) | |
download | UXP-d7df65954a585e97ccee21fa9cb50cb116efddcc.tar UXP-d7df65954a585e97ccee21fa9cb50cb116efddcc.tar.gz UXP-d7df65954a585e97ccee21fa9cb50cb116efddcc.tar.lz UXP-d7df65954a585e97ccee21fa9cb50cb116efddcc.tar.xz UXP-d7df65954a585e97ccee21fa9cb50cb116efddcc.zip |
Merge branch 'ported-upstream'
Diffstat (limited to 'dom/media')
-rw-r--r-- | dom/media/AudioConverter.cpp | 8 | ||||
-rw-r--r-- | dom/media/MediaStreamGraph.cpp | 4 |
2 files changed, 7 insertions, 5 deletions
diff --git a/dom/media/AudioConverter.cpp b/dom/media/AudioConverter.cpp index 77ad46ec6..25b981f43 100644 --- a/dom/media/AudioConverter.cpp +++ b/dom/media/AudioConverter.cpp @@ -362,15 +362,13 @@ size_t AudioConverter::ResampleRecipientFrames(size_t aFrames) const { if (!aFrames && mIn.Rate() != mOut.Rate()) { - // The resampler will be drained, account for frames currently buffered - // in the resampler. if (!mResampler) { return 0; } - return speex_resampler_get_output_latency(mResampler); - } else { - return (uint64_t)aFrames * mOut.Rate() / mIn.Rate() + 1; + // We drain by pushing in get_input_latency() samples of 0 + aFrames = speex_resampler_get_input_latency(mResampler); } + return (uint64_t)aFrames * mOut.Rate() / mIn.Rate() + 1; } size_t diff --git a/dom/media/MediaStreamGraph.cpp b/dom/media/MediaStreamGraph.cpp index 94cafa029..e2934cbb2 100644 --- a/dom/media/MediaStreamGraph.cpp +++ b/dom/media/MediaStreamGraph.cpp @@ -1715,6 +1715,10 @@ MediaStreamGraphImpl::RunInStableState(bool aSourceIsMSG) RefPtr<GraphDriver> driver = CurrentDriver(); MonitorAutoUnlock unlock(mMonitor); driver->Start(); + // It's not safe to Shutdown() a thread from StableState, and + // releasing this may shutdown a SystemClockDriver thread. + // Proxy the release to outside of StableState. + NS_ReleaseOnMainThread(driver.forget(), true); // always proxy } } |