diff options
author | Tommi <tommi@webrtc.org> | 2015-12-12 01:37:01 +0100 |
---|---|---|
committer | Tommi <tommi@webrtc.org> | 2015-12-12 00:37:14 +0000 |
commit | f888bb58da04c5095759b5ec7ce2e1fa2cd414fd (patch) | |
tree | 2cd9d8f7b8d734c018d5886b18ba82ade2fa339a /talk/app/webrtc/remoteaudiotrack.cc | |
parent | f67c548576ad957a1e9c3196e11d45f41e320424 (diff) | |
download | webrtc-f888bb58da04c5095759b5ec7ce2e1fa2cd414fd.tar.gz |
Support for unmixed remote audio into tracks.
BUG=chromium:121673
R=solenberg@webrtc.org
Review URL: https://codereview.webrtc.org/1505253004 .
Cr-Commit-Position: refs/heads/master@{#10995}
Diffstat (limited to 'talk/app/webrtc/remoteaudiotrack.cc')
-rw-r--r-- | talk/app/webrtc/remoteaudiotrack.cc | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/talk/app/webrtc/remoteaudiotrack.cc b/talk/app/webrtc/remoteaudiotrack.cc index df27f05e48..2c4481c80d 100644 --- a/talk/app/webrtc/remoteaudiotrack.cc +++ b/talk/app/webrtc/remoteaudiotrack.cc @@ -26,3 +26,70 @@ */ #include "talk/app/webrtc/remoteaudiotrack.h" + +#include "talk/app/webrtc/remoteaudiosource.h" + +using rtc::scoped_refptr; + +namespace webrtc { + +// static +scoped_refptr<RemoteAudioTrack> RemoteAudioTrack::Create( + const std::string& id, + const scoped_refptr<RemoteAudioSource>& source) { + return new rtc::RefCountedObject<RemoteAudioTrack>(id, source); +} + +RemoteAudioTrack::RemoteAudioTrack( + const std::string& label, + const scoped_refptr<RemoteAudioSource>& source) + : MediaStreamTrack<AudioTrackInterface>(label), audio_source_(source) { + audio_source_->RegisterObserver(this); + TrackState new_state = kInitializing; + switch (audio_source_->state()) { + case MediaSourceInterface::kLive: + case MediaSourceInterface::kMuted: + new_state = kLive; + break; + case MediaSourceInterface::kEnded: + new_state = kEnded; + break; + case MediaSourceInterface::kInitializing: + default: + // kInitializing; + break; + } + set_state(new_state); +} + +RemoteAudioTrack::~RemoteAudioTrack() { + set_state(MediaStreamTrackInterface::kEnded); + audio_source_->UnregisterObserver(this); +} + +std::string RemoteAudioTrack::kind() const { + return MediaStreamTrackInterface::kAudioKind; +} + +AudioSourceInterface* RemoteAudioTrack::GetSource() const { + return audio_source_.get(); +} + +void RemoteAudioTrack::AddSink(AudioTrackSinkInterface* sink) { + audio_source_->AddSink(sink); +} + +void RemoteAudioTrack::RemoveSink(AudioTrackSinkInterface* sink) { + audio_source_->RemoveSink(sink); +} + +bool RemoteAudioTrack::GetSignalLevel(int* level) { + return false; +} + +void RemoteAudioTrack::OnChanged() { + if (audio_source_->state() == MediaSourceInterface::kEnded) + set_state(MediaStreamTrackInterface::kEnded); +} + +} // namespace webrtc |