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

Unified Diff: content/renderer/media/media_stream_impl.cc

Issue 11270012: Adding audio support to the new webmediaplyer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: added a lock to protect the |renderer_| Created 8 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/media_stream_impl.cc
diff --git a/content/renderer/media/media_stream_impl.cc b/content/renderer/media/media_stream_impl.cc
index 95ad1a5d486784ee05c322a92a11afd47f4a4837..2e293644952804f1786b85d30a6864e9d9838cdb 100644
--- a/content/renderer/media/media_stream_impl.cc
+++ b/content/renderer/media/media_stream_impl.cc
@@ -20,7 +20,9 @@
#include "content/renderer/media/rtc_video_renderer.h"
#include "content/renderer/media/video_capture_impl_manager.h"
#include "content/renderer/media/webrtc_uma_histograms.h"
+#include "content/renderer/media/webrtc_audio_renderer.h"
#include "media/base/message_loop_factory.h"
+#include "media/base/rtc_audio_renderer.h"
#include "third_party/WebKit/Source/Platform/chromium/public/WebMediaConstraints.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
@@ -262,6 +264,36 @@ scoped_refptr<media::VideoDecoder> MediaStreamImpl::GetVideoDecoder(
return NULL;
}
+scoped_refptr<media::RtcAudioRenderer> MediaStreamImpl::GetAudioRenderer(
+ const GURL& url) {
+ DCHECK(CalledOnValidThread());
+ WebKit::WebMediaStreamDescriptor descriptor(GetMediaStream(url));
+
+ if (descriptor.isNull() || !descriptor.extraData())
+ return NULL; // This is not a valid stream.
+
+ DVLOG(1) << "MediaStreamImpl::GetAudioRenderer stream:"
+ << UTF16ToUTF8(descriptor.label());
+
+ MediaStreamExtraData* extra_data =
+ static_cast<MediaStreamExtraData*>(descriptor.extraData());
+ if (extra_data->remote_stream()) {
+ scoped_refptr<content::WebRtcAudioRenderer> renderer =
wjia(left Chromium) 2012/10/24 22:05:15 nit: no need content::
no longer working on chromium 2012/10/25 10:19:41 Done.
+ CreateRemoteAudioRenderer(extra_data->remote_stream());
+
+ dependency_factory_->GetWebRtcAudioDevice()->SetRenderer(renderer);
+ return renderer;
+ }
+
+ if (extra_data->local_stream()) {
+ // TODO(xians): Implement a WebRtcAudioFIFO to handle the local loopback.
+ return NULL;
+ }
+
+ NOTREACHED();
+ return NULL;
+}
+
// Callback from MediaStreamDispatcher.
// The requested stream have been generated.
void MediaStreamImpl::OnStreamGenerated(
@@ -472,6 +504,18 @@ scoped_refptr<media::VideoDecoder> MediaStreamImpl::CreateRemoteVideoDecoder(
stream->video_tracks()->at(0));
}
+scoped_refptr<content::WebRtcAudioRenderer>
wjia(left Chromium) 2012/10/24 22:05:15 nit: no need content::
no longer working on chromium 2012/10/25 10:19:41 Done.
+MediaStreamImpl::CreateRemoteAudioRenderer(
+ webrtc::MediaStreamInterface* stream) {
+ if (!stream->audio_tracks() || stream->audio_tracks()->count() == 0)
+ return NULL;
+
+ DVLOG(1) << "MediaStreamImpl::CreateRemoteAudioRenderer label:"
+ << stream->label();
+
+ return new content::WebRtcAudioRenderer();
wjia(left Chromium) 2012/10/24 22:05:15 ditto.
no longer working on chromium 2012/10/25 10:19:41 Done.
+}
+
MediaStreamExtraData::MediaStreamExtraData(
webrtc::MediaStreamInterface* remote_stream)
: remote_stream_(remote_stream) {

Powered by Google App Engine
This is Rietveld 408576698