aboutsummaryrefslogtreecommitdiff
path: root/talk/app/webrtc/remoteaudiotrack.cc
diff options
context:
space:
mode:
authorTommi <tommi@webrtc.org>2015-12-12 01:37:01 +0100
committerTommi <tommi@webrtc.org>2015-12-12 00:37:14 +0000
commitf888bb58da04c5095759b5ec7ce2e1fa2cd414fd (patch)
tree2cd9d8f7b8d734c018d5886b18ba82ade2fa339a /talk/app/webrtc/remoteaudiotrack.cc
parentf67c548576ad957a1e9c3196e11d45f41e320424 (diff)
downloadwebrtc-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.cc67
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