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

Unified Diff: content/renderer/render_view_impl.cc

Issue 14247018: Implement WebRTC in Chrome for TV (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: combined KeyHandlingDemxuer w/ KeyHandlingChunkDemuxer Created 7 years, 7 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/render_view_impl.cc
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 2150615712c5b68892e97d3da0c3f07602118cb5..7325feb256347cdd24703933bd48d4319789edda 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -226,6 +226,11 @@
#include "ui/gfx/rect_f.h"
#include "webkit/media/android/webmediaplayer_android.h"
#include "webkit/media/android/webmediaplayer_manager_android.h"
+
+#if defined(GOOGLE_TV)
+#include "content/renderer/media/rtc_video_decoder_bridge_tv.h"
+#endif
+
#elif defined(OS_WIN)
// TODO(port): these files are currently Windows only because they concern:
// * theming
@@ -2688,7 +2693,7 @@ WebMediaPlayer* RenderViewImpl::createMediaPlayer(
RenderViewObserver, observers_, WillCreateMediaPlayer(frame, client));
const CommandLine* cmd_line = CommandLine::ForCurrentProcess();
-#if defined(ENABLE_WEBRTC)
+#if defined(ENABLE_WEBRTC) && !defined(GOOGLE_TV)
Ami GONE FROM CHROMIUM 2013/05/08 20:26:44 The conditional compile & runtime behavior in this
wonsik 2013/05/13 14:03:48 Well, I can't see a good way to improve this.
if (MediaStreamImpl::CheckMediaStream(url)) {
#if defined(OS_ANDROID) && defined(ARCH_CPU_ARMEL)
bool found_neon =
@@ -2721,15 +2726,44 @@ WebMediaPlayer* RenderViewImpl::createMediaPlayer(
media_player_proxy_ = new WebMediaPlayerProxyImplAndroid(
this, media_player_manager_.get());
}
- return new webkit_media::WebMediaPlayerAndroid(
- frame,
- client,
- media_player_manager_.get(),
- media_player_proxy_,
- new StreamTextureFactoryImpl(
- context_provider->Context3d(), gpu_channel_host, routing_id_),
- new RenderMediaLog());
-#endif
+ MediaStreamImpl* media_stream_impl = NULL;
+ media::Demuxer* demuxer = NULL;
+#if defined(ENABLE_WEBRTC)
+ if (MediaStreamImpl::CheckMediaStream(url)) {
+ EnsureMediaStreamImpl();
+ demuxer = RTCVideoDecoderBridgeTv::Get()->CreateDemuxer(
+ RenderThreadImpl::current()->GetMediaStreamDependencyFactory(),
+ base::MessageLoopProxy::current());
+ if (demuxer) {
+ media_stream_impl = media_stream_impl_;
+ } else {
+ LOG(ERROR) << "Multiple MediaStream not supported yet.";
+ return NULL;
+ }
+ }
+#endif // defined(ENABLE_WEBRTC)
+ webkit_media::WebMediaPlayerAndroid* web_media_player_android =
+ new webkit_media::WebMediaPlayerAndroid(
+ frame,
+ client,
+ media_player_manager_.get(),
+ media_player_proxy_,
+ new StreamTextureFactoryImpl(
+ context_provider->Context3d(), gpu_channel_host, routing_id_),
+ new RenderMediaLog(),
+ media_stream_impl,
+ demuxer);
+#if defined(GOOGLE_TV)
Ami GONE FROM CHROMIUM 2013/05/08 20:26:44 shouldn't this be checking for WEBRTC?
wonsik 2013/05/13 14:03:48 Done.
+ if (media_stream_impl) {
+ // RTCVideoDecoderBridgeTv::Get() outlives web_media_player_android since
+ // it's a singleton, thus base::Unretained is safe here.
+ web_media_player_android->SetDestroyDemuxerCB(
+ base::Bind(&RTCVideoDecoderBridgeTv::DestroyDemuxer,
+ base::Unretained(RTCVideoDecoderBridgeTv::Get())));
+ }
+#endif // defined(GOOGLE_TV)
+ return web_media_player_android;
+#endif // defined(OS_ANDROID)
scoped_refptr<media::AudioRendererSink> sink;
if (!cmd_line->HasSwitch(switches::kDisableAudio)) {

Powered by Google App Engine
This is Rietveld 408576698