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

Side by Side Diff: content/renderer/media/webrtc/processed_local_audio_track.cc

Issue 1834323002: MediaStream audio: Refactor 3 separate "glue" implementations into one. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments from PS2: AudioInputDevice --> AudioCapturerSource, and refptr foo in WebRtcMedi… Created 4 years, 8 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 "base/supports_user_data.h" 5 #include "content/renderer/media/webrtc/processed_local_audio_track.h"
6 6
7 namespace base { 7 #include "content/renderer/media/webrtc/webrtc_local_audio_track_adapter.h"
8 8
9 SupportsUserData::SupportsUserData() { 9 namespace content {
10 // Harmless to construct on a different thread to subsequent usage. 10
11 thread_checker_.DetachFromThread(); 11 namespace {
12 // Used as an identifier for ProcessedLocalAudioTrack::From().
13 void* const kClassIdentifier = const_cast<void**>(&kClassIdentifier);
14 } // namespace
15
16 ProcessedLocalAudioTrack::ProcessedLocalAudioTrack(
17 scoped_refptr<WebRtcLocalAudioTrackAdapter> adapter)
18 : MediaStreamAudioTrack(true), adapter_(std::move(adapter)) {
19 DCHECK(adapter_);
20 adapter_->SetMediaStreamAudioTrack(MediaStreamAudioTrack::GetWeakPtr());
21
22 DVLOG(1) << "ProcessedLocalAudioTrack::ProcessedLocalAudioTrack()";
12 } 23 }
13 24
14 SupportsUserData::Data* SupportsUserData::GetUserData(const void* key) const { 25 ProcessedLocalAudioTrack::~ProcessedLocalAudioTrack() {
15 DCHECK(thread_checker_.CalledOnValidThread()); 26 DCHECK(thread_checker_.CalledOnValidThread());
16 DataMap::const_iterator found = user_data_.find(key); 27 DVLOG(1) << "ProcessedLocalAudioTrack::~ProcessedLocalAudioTrack()";
17 if (found != user_data_.end()) 28 // Ensure the track is stopped.
18 return found->second.get(); 29 MediaStreamAudioTrack::Stop();
19 return NULL;
20 } 30 }
21 31
22 void SupportsUserData::SetUserData(const void* key, Data* data) { 32 // static
23 DCHECK(thread_checker_.CalledOnValidThread()); 33 ProcessedLocalAudioTrack* ProcessedLocalAudioTrack::From(
24 user_data_[key] = make_scoped_ptr(data); 34 MediaStreamAudioTrack* track) {
35 if (track && track->GetClassIdentifier() == kClassIdentifier)
36 return static_cast<ProcessedLocalAudioTrack*>(track);
37 return nullptr;
25 } 38 }
26 39
27 void SupportsUserData::RemoveUserData(const void* key) { 40 void* ProcessedLocalAudioTrack::GetClassIdentifier() const {
28 DCHECK(thread_checker_.CalledOnValidThread()); 41 return kClassIdentifier;
29 user_data_.erase(key);
30 } 42 }
31 43
32 void SupportsUserData::DetachUserDataThread() { 44 void ProcessedLocalAudioTrack::SetLevel(
33 thread_checker_.DetachFromThread(); 45 scoped_refptr<MediaStreamAudioLevelCalculator::Level> level) {
46 adapter_->SetLevel(std::move(level));
34 } 47 }
35 48
36 SupportsUserData::~SupportsUserData() { 49 void ProcessedLocalAudioTrack::SetAudioProcessor(
37 DCHECK(thread_checker_.CalledOnValidThread() || user_data_.empty()); 50 scoped_refptr<MediaStreamAudioProcessor> processor) {
38 DataMap local_user_data; 51 adapter_->SetAudioProcessor(std::move(processor));
39 user_data_.swap(local_user_data);
40 // Now this->user_data_ is empty, and any destructors called transitively from
41 // the destruction of |local_user_data| will see it that way instead of
42 // examining a being-destroyed object.
43 } 52 }
44 53
45 } // namespace base 54 void ProcessedLocalAudioTrack::SetEnabled(bool enabled) {
55 DCHECK(thread_checker_.CalledOnValidThread());
56 MediaStreamAudioTrack::SetEnabled(enabled);
57 if (adapter_.get())
58 adapter_->set_enabled(enabled);
59 }
60
61 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698