Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(233)

Side by Side Diff: media/audio/virtual_audio_input_stream.cc

Issue 1897953003: Unmute Tab Audio For Desktop Share (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Resolving Comments Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/audio/virtual_audio_input_stream.h" 5 #include "media/audio/virtual_audio_input_stream.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 fake_worker_.Start(base::Bind( 58 fake_worker_.Start(base::Bind(
59 &VirtualAudioInputStream::PumpAudio, base::Unretained(this))); 59 &VirtualAudioInputStream::PumpAudio, base::Unretained(this)));
60 } 60 }
61 61
62 void VirtualAudioInputStream::Stop() { 62 void VirtualAudioInputStream::Stop() {
63 DCHECK(thread_checker_.CalledOnValidThread()); 63 DCHECK(thread_checker_.CalledOnValidThread());
64 fake_worker_.Stop(); 64 fake_worker_.Stop();
65 callback_ = NULL; 65 callback_ = NULL;
66 } 66 }
67 67
68 void VirtualAudioInputStream::AddOutputStream( 68 void VirtualAudioInputStream::AddInputProvider(
69 VirtualAudioOutputStream* stream, const AudioParameters& output_params) { 69 AudioConverter::InputCallback* input,
70 const AudioParameters& params) {
70 DCHECK(thread_checker_.CalledOnValidThread()); 71 DCHECK(thread_checker_.CalledOnValidThread());
71 72
72 base::AutoLock scoped_lock(converter_network_lock_); 73 base::AutoLock scoped_lock(converter_network_lock_);
73 74
74 AudioConvertersMap::iterator converter = converters_.find(output_params); 75 AudioConvertersMap::iterator converter = converters_.find(params);
75 if (converter == converters_.end()) { 76 if (converter == converters_.end()) {
76 std::pair<AudioConvertersMap::iterator, bool> result = converters_.insert( 77 std::pair<AudioConvertersMap::iterator, bool> result =
77 std::make_pair(output_params, new LoopbackAudioConverter( 78 converters_.insert(std::make_pair(
78 output_params, params_, false))); 79 params, new LoopbackAudioConverter(params, params_, false)));
79 converter = result.first; 80 converter = result.first;
80 81
81 // Add to main mixer if we just added a new AudioTransform. 82 // Add to main mixer if we just added a new AudioTransform.
82 mixer_.AddInput(converter->second); 83 mixer_.AddInput(converter->second);
83 } 84 }
84 converter->second->AddInput(stream); 85 converter->second->AddInput(input);
85 ++num_attached_output_streams_; 86 ++num_attached_output_streams_;
86 } 87 }
87 88
88 void VirtualAudioInputStream::RemoveOutputStream( 89 void VirtualAudioInputStream::RemoveInputProvider(
89 VirtualAudioOutputStream* stream, const AudioParameters& output_params) { 90 AudioConverter::InputCallback* input,
91 const AudioParameters& params) {
90 DCHECK(thread_checker_.CalledOnValidThread()); 92 DCHECK(thread_checker_.CalledOnValidThread());
91 93
92 base::AutoLock scoped_lock(converter_network_lock_); 94 base::AutoLock scoped_lock(converter_network_lock_);
93 95
94 DCHECK(converters_.find(output_params) != converters_.end()); 96 DCHECK(converters_.find(params) != converters_.end());
95 converters_[output_params]->RemoveInput(stream); 97 converters_[params]->RemoveInput(input);
96 98
97 --num_attached_output_streams_; 99 --num_attached_output_streams_;
98 DCHECK_LE(0, num_attached_output_streams_); 100 DCHECK_LE(0, num_attached_output_streams_);
99 } 101 }
100 102
103 scoped_refptr<base::SingleThreadTaskRunner>
104 VirtualAudioInputStream::GetTaskRunner() const {
105 return worker_task_runner_;
106 }
107
101 void VirtualAudioInputStream::PumpAudio() { 108 void VirtualAudioInputStream::PumpAudio() {
102 DCHECK(worker_task_runner_->BelongsToCurrentThread()); 109 DCHECK(worker_task_runner_->BelongsToCurrentThread());
103 110
104 { 111 {
105 base::AutoLock scoped_lock(converter_network_lock_); 112 base::AutoLock scoped_lock(converter_network_lock_);
106 // Because the audio is being looped-back, the delay until it will be played 113 // Because the audio is being looped-back, the delay until it will be played
107 // out is zero. 114 // out is zero.
108 mixer_.ConvertWithDelay(base::TimeDelta(), audio_bus_.get()); 115 mixer_.ConvertWithDelay(base::TimeDelta(), audio_bus_.get());
109 } 116 }
110 // Because the audio is being looped-back, the delay since since it was 117 // Because the audio is being looped-back, the delay since since it was
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 150
144 bool VirtualAudioInputStream::GetAutomaticGainControl() { 151 bool VirtualAudioInputStream::GetAutomaticGainControl() {
145 return false; 152 return false;
146 } 153 }
147 154
148 bool VirtualAudioInputStream::IsMuted() { 155 bool VirtualAudioInputStream::IsMuted() {
149 return false; 156 return false;
150 } 157 }
151 158
152 } // namespace media 159 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698