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

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: Self review. Created 6 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 unified diff | Download patch | Annotate | Revision Log
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/video_frame_provider.h" 16 #include "content/renderer/media/video_frame_provider.h"
17 #include "content/renderer/media/webmediaplayer_delegate.h" 17 #include "content/renderer/media/webmediaplayer_delegate.h"
18 #include "content/renderer/media/webmediaplayer_util.h" 18 #include "content/renderer/media/webmediaplayer_util.h"
19 #include "content/renderer/render_frame_impl.h" 19 #include "content/renderer/render_frame_impl.h"
20 #include "media/base/media_log.h" 20 #include "media/base/media_log.h"
21 #include "media/base/video_frame.h" 21 #include "media/base/video_frame.h"
22 #include "media/base/video_util.h" 22 #include "media/base/video_util.h"
23 #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h" 23 #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h"
24 #include "third_party/WebKit/public/platform/WebRect.h" 24 #include "third_party/WebKit/public/platform/WebRect.h"
25 #include "third_party/WebKit/public/platform/WebSize.h" 25 #include "third_party/WebKit/public/platform/WebSize.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 } 73 }
74 74
75 } // anonymous namespace 75 } // anonymous namespace
76 76
77 namespace content { 77 namespace content {
78 78
79 WebMediaPlayerMS::WebMediaPlayerMS( 79 WebMediaPlayerMS::WebMediaPlayerMS(
80 blink::WebFrame* frame, 80 blink::WebFrame* frame,
81 blink::WebMediaPlayerClient* client, 81 blink::WebMediaPlayerClient* client,
82 base::WeakPtr<WebMediaPlayerDelegate> delegate, 82 base::WeakPtr<WebMediaPlayerDelegate> delegate,
83 MediaStreamClient* media_stream_client, 83 media::MediaLog* media_log,
84 media::MediaLog* media_log) 84 scoped_ptr<MediaStreamRendererFactory> factory)
85 : frame_(frame), 85 : frame_(frame),
86 network_state_(WebMediaPlayer::NetworkStateEmpty), 86 network_state_(WebMediaPlayer::NetworkStateEmpty),
87 ready_state_(WebMediaPlayer::ReadyStateHaveNothing), 87 ready_state_(WebMediaPlayer::ReadyStateHaveNothing),
88 buffered_(static_cast<size_t>(1)), 88 buffered_(static_cast<size_t>(1)),
89 client_(client), 89 client_(client),
90 delegate_(delegate), 90 delegate_(delegate),
91 media_stream_client_(media_stream_client),
92 paused_(true), 91 paused_(true),
93 current_frame_used_(false), 92 current_frame_used_(false),
94 pending_repaint_(false), 93 pending_repaint_(false),
95 video_frame_provider_client_(NULL), 94 video_frame_provider_client_(NULL),
96 received_first_frame_(false), 95 received_first_frame_(false),
97 sequence_started_(false), 96 sequence_started_(false),
98 total_frame_count_(0), 97 total_frame_count_(0),
99 dropped_frame_count_(0), 98 dropped_frame_count_(0),
100 media_log_(media_log) { 99 media_log_(media_log),
100 renderer_factory_(factory.Pass()) {
101 DVLOG(1) << "WebMediaPlayerMS::ctor"; 101 DVLOG(1) << "WebMediaPlayerMS::ctor";
102 DCHECK(media_stream_client);
103 media_log_->AddEvent( 102 media_log_->AddEvent(
104 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); 103 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED));
105 } 104 }
106 105
107 WebMediaPlayerMS::~WebMediaPlayerMS() { 106 WebMediaPlayerMS::~WebMediaPlayerMS() {
108 DVLOG(1) << "WebMediaPlayerMS::dtor"; 107 DVLOG(1) << "WebMediaPlayerMS::dtor";
109 DCHECK(thread_checker_.CalledOnValidThread()); 108 DCHECK(thread_checker_.CalledOnValidThread());
110 109
111 SetVideoFrameProviderClient(NULL); 110 SetVideoFrameProviderClient(NULL);
112 GetClient()->setWebLayer(NULL); 111 GetClient()->setWebLayer(NULL);
(...skipping 21 matching lines...) Expand all
134 // LoadTypeMediaStream) once Blink-side changes land. 133 // LoadTypeMediaStream) once Blink-side changes land.
135 DCHECK_NE(load_type, LoadTypeMediaSource); 134 DCHECK_NE(load_type, LoadTypeMediaSource);
136 135
137 GURL gurl(url); 136 GURL gurl(url);
138 137
139 setVolume(GetClient()->volume()); 138 setVolume(GetClient()->volume());
140 SetNetworkState(WebMediaPlayer::NetworkStateLoading); 139 SetNetworkState(WebMediaPlayer::NetworkStateLoading);
141 SetReadyState(WebMediaPlayer::ReadyStateHaveNothing); 140 SetReadyState(WebMediaPlayer::ReadyStateHaveNothing);
142 media_log_->AddEvent(media_log_->CreateLoadEvent(url.spec())); 141 media_log_->AddEvent(media_log_->CreateLoadEvent(url.spec()));
143 142
144 // Check if this url is media stream. 143 video_frame_provider_ = renderer_factory_->GetVideoFrameProvider(
145 video_frame_provider_ = media_stream_client_->GetVideoFrameProvider(
146 url, 144 url,
147 base::Bind(&WebMediaPlayerMS::OnSourceError, AsWeakPtr()), 145 base::Bind(&WebMediaPlayerMS::OnSourceError, AsWeakPtr()),
148 base::Bind(&WebMediaPlayerMS::OnFrameAvailable, AsWeakPtr())); 146 base::Bind(&WebMediaPlayerMS::OnFrameAvailable, AsWeakPtr()));
149 147
150 audio_renderer_ = media_stream_client_->GetAudioRenderer( 148 RenderFrame* frame = RenderFrame::FromWebFrame(frame_);
149 audio_renderer_ = renderer_factory_->GetAudioRenderer(
151 url, 150 url,
152 RenderFrame::FromWebFrame(frame_)->GetRoutingID()); 151 frame->GetRenderView()->GetRoutingID(),
152 frame->GetRoutingID());
153 153
154 if (video_frame_provider_.get() || audio_renderer_.get()) { 154 if (video_frame_provider_.get() || audio_renderer_.get()) {
155 if (audio_renderer_.get()) 155 if (audio_renderer_.get())
156 audio_renderer_->Start(); 156 audio_renderer_->Start();
157 157
158 if (video_frame_provider_.get()) { 158 if (video_frame_provider_.get()) {
159 video_frame_provider_->Start(); 159 video_frame_provider_->Start();
160 } else { 160 } else {
161 // This is audio-only mode. 161 // This is audio-only mode.
162 DCHECK(audio_renderer_.get()); 162 DCHECK(audio_renderer_.get());
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 GetClient()->readyStateChanged(); 479 GetClient()->readyStateChanged();
480 } 480 }
481 481
482 blink::WebMediaPlayerClient* WebMediaPlayerMS::GetClient() { 482 blink::WebMediaPlayerClient* WebMediaPlayerMS::GetClient() {
483 DCHECK(thread_checker_.CalledOnValidThread()); 483 DCHECK(thread_checker_.CalledOnValidThread());
484 DCHECK(client_); 484 DCHECK(client_);
485 return client_; 485 return client_;
486 } 486 }
487 487
488 } // namespace content 488 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698