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

Side by Side Diff: content/renderer/media/webmediaplayer_ms.cc

Issue 294043015: Move creation of MediaStream renders from MediaStreamImpl to MediaStreamRenderFactory (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed commments. Fixed build when enable_webrtc = 0 Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/renderer/media/webmediaplayer_ms.h ('k') | content/renderer/render_frame_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/media/webmediaplayer_ms.h" 5 #include "content/renderer/media/webmediaplayer_ms.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "base/message_loop/message_loop.h" 11 #include "base/message_loop/message_loop.h"
12 #include "base/metrics/histogram.h" 12 #include "base/metrics/histogram.h"
13 #include "cc/layers/video_layer.h" 13 #include "cc/layers/video_layer.h"
14 #include "content/public/renderer/render_view.h"
14 #include "content/renderer/media/media_stream_audio_renderer.h" 15 #include "content/renderer/media/media_stream_audio_renderer.h"
15 #include "content/renderer/media/media_stream_client.h" 16 #include "content/renderer/media/media_stream_renderer_factory.h"
16 #include "content/renderer/media/video_frame_provider.h" 17 #include "content/renderer/media/video_frame_provider.h"
17 #include "content/renderer/media/webmediaplayer_delegate.h" 18 #include "content/renderer/media/webmediaplayer_delegate.h"
18 #include "content/renderer/media/webmediaplayer_util.h" 19 #include "content/renderer/media/webmediaplayer_util.h"
19 #include "content/renderer/render_frame_impl.h" 20 #include "content/renderer/render_frame_impl.h"
20 #include "media/base/media_log.h" 21 #include "media/base/media_log.h"
21 #include "media/base/video_frame.h" 22 #include "media/base/video_frame.h"
22 #include "media/base/video_util.h" 23 #include "media/base/video_util.h"
23 #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h" 24 #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h"
24 #include "third_party/WebKit/public/platform/WebRect.h" 25 #include "third_party/WebKit/public/platform/WebRect.h"
25 #include "third_party/WebKit/public/platform/WebSize.h" 26 #include "third_party/WebKit/public/platform/WebSize.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 } 74 }
74 75
75 } // anonymous namespace 76 } // anonymous namespace
76 77
77 namespace content { 78 namespace content {
78 79
79 WebMediaPlayerMS::WebMediaPlayerMS( 80 WebMediaPlayerMS::WebMediaPlayerMS(
80 blink::WebFrame* frame, 81 blink::WebFrame* frame,
81 blink::WebMediaPlayerClient* client, 82 blink::WebMediaPlayerClient* client,
82 base::WeakPtr<WebMediaPlayerDelegate> delegate, 83 base::WeakPtr<WebMediaPlayerDelegate> delegate,
83 MediaStreamClient* media_stream_client, 84 media::MediaLog* media_log,
84 media::MediaLog* media_log) 85 scoped_ptr<MediaStreamRendererFactory> factory)
85 : frame_(frame), 86 : frame_(frame),
86 network_state_(WebMediaPlayer::NetworkStateEmpty), 87 network_state_(WebMediaPlayer::NetworkStateEmpty),
87 ready_state_(WebMediaPlayer::ReadyStateHaveNothing), 88 ready_state_(WebMediaPlayer::ReadyStateHaveNothing),
88 buffered_(static_cast<size_t>(1)), 89 buffered_(static_cast<size_t>(1)),
89 client_(client), 90 client_(client),
90 delegate_(delegate), 91 delegate_(delegate),
91 media_stream_client_(media_stream_client),
92 paused_(true), 92 paused_(true),
93 current_frame_used_(false), 93 current_frame_used_(false),
94 pending_repaint_(false), 94 pending_repaint_(false),
95 video_frame_provider_client_(NULL), 95 video_frame_provider_client_(NULL),
96 received_first_frame_(false), 96 received_first_frame_(false),
97 sequence_started_(false), 97 sequence_started_(false),
98 total_frame_count_(0), 98 total_frame_count_(0),
99 dropped_frame_count_(0), 99 dropped_frame_count_(0),
100 media_log_(media_log) { 100 media_log_(media_log),
101 renderer_factory_(factory.Pass()) {
101 DVLOG(1) << "WebMediaPlayerMS::ctor"; 102 DVLOG(1) << "WebMediaPlayerMS::ctor";
102 DCHECK(media_stream_client);
103 media_log_->AddEvent( 103 media_log_->AddEvent(
104 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); 104 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED));
105 } 105 }
106 106
107 WebMediaPlayerMS::~WebMediaPlayerMS() { 107 WebMediaPlayerMS::~WebMediaPlayerMS() {
108 DVLOG(1) << "WebMediaPlayerMS::dtor"; 108 DVLOG(1) << "WebMediaPlayerMS::dtor";
109 DCHECK(thread_checker_.CalledOnValidThread()); 109 DCHECK(thread_checker_.CalledOnValidThread());
110 110
111 SetVideoFrameProviderClient(NULL); 111 SetVideoFrameProviderClient(NULL);
112 GetClient()->setWebLayer(NULL); 112 GetClient()->setWebLayer(NULL);
(...skipping 21 matching lines...) Expand all
134 // LoadTypeMediaStream) once Blink-side changes land. 134 // LoadTypeMediaStream) once Blink-side changes land.
135 DCHECK_NE(load_type, LoadTypeMediaSource); 135 DCHECK_NE(load_type, LoadTypeMediaSource);
136 136
137 GURL gurl(url); 137 GURL gurl(url);
138 138
139 setVolume(GetClient()->volume()); 139 setVolume(GetClient()->volume());
140 SetNetworkState(WebMediaPlayer::NetworkStateLoading); 140 SetNetworkState(WebMediaPlayer::NetworkStateLoading);
141 SetReadyState(WebMediaPlayer::ReadyStateHaveNothing); 141 SetReadyState(WebMediaPlayer::ReadyStateHaveNothing);
142 media_log_->AddEvent(media_log_->CreateLoadEvent(url.spec())); 142 media_log_->AddEvent(media_log_->CreateLoadEvent(url.spec()));
143 143
144 // Check if this url is media stream. 144 video_frame_provider_ = renderer_factory_->GetVideoFrameProvider(
145 video_frame_provider_ = media_stream_client_->GetVideoFrameProvider(
146 url, 145 url,
147 base::Bind(&WebMediaPlayerMS::OnSourceError, AsWeakPtr()), 146 base::Bind(&WebMediaPlayerMS::OnSourceError, AsWeakPtr()),
148 base::Bind(&WebMediaPlayerMS::OnFrameAvailable, AsWeakPtr())); 147 base::Bind(&WebMediaPlayerMS::OnFrameAvailable, AsWeakPtr()));
149 148
150 audio_renderer_ = media_stream_client_->GetAudioRenderer( 149 RenderFrame* frame = RenderFrame::FromWebFrame(frame_);
150 audio_renderer_ = renderer_factory_->GetAudioRenderer(
151 url, 151 url,
152 RenderFrame::FromWebFrame(frame_)->GetRoutingID()); 152 frame->GetRenderView()->GetRoutingID(),
153 frame->GetRoutingID());
153 154
154 if (video_frame_provider_.get() || audio_renderer_.get()) { 155 if (video_frame_provider_.get() || audio_renderer_.get()) {
155 if (audio_renderer_.get()) 156 if (audio_renderer_.get())
156 audio_renderer_->Start(); 157 audio_renderer_->Start();
157 158
158 if (video_frame_provider_.get()) { 159 if (video_frame_provider_.get()) {
159 video_frame_provider_->Start(); 160 video_frame_provider_->Start();
160 } else { 161 } else {
161 // This is audio-only mode. 162 // This is audio-only mode.
162 DCHECK(audio_renderer_.get()); 163 DCHECK(audio_renderer_.get());
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 GetClient()->readyStateChanged(); 480 GetClient()->readyStateChanged();
480 } 481 }
481 482
482 blink::WebMediaPlayerClient* WebMediaPlayerMS::GetClient() { 483 blink::WebMediaPlayerClient* WebMediaPlayerMS::GetClient() {
483 DCHECK(thread_checker_.CalledOnValidThread()); 484 DCHECK(thread_checker_.CalledOnValidThread());
484 DCHECK(client_); 485 DCHECK(client_);
485 return client_; 486 return client_;
486 } 487 }
487 488
488 } // namespace content 489 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/webmediaplayer_ms.h ('k') | content/renderer/render_frame_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698