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

Unified Diff: talk/app/webrtc/remoteaudiotrack.cc

Issue 1505253004: Support for remote audio into tracks (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Address comments Created 5 years 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 side-by-side diff with in-line comments
Download patch
Index: talk/app/webrtc/remoteaudiotrack.cc
diff --git a/talk/app/webrtc/remoteaudiotrack.cc b/talk/app/webrtc/remoteaudiotrack.cc
index df27f05e4859b2f423a950485aef50915501dd41..2c4481c80d71b8c9f6b5eeef0bbbef03bf3f848a 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

Powered by Google App Engine
This is Rietveld 408576698