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

Side by Side Diff: media/renderers/media_player_renderer_host.cc

Issue 2161083004: [DO NOT COMMIT] MediaPlayerRenderer using StreamTextures. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "media/renderers/media_player_renderer_host.h"
6
7 namespace media {
8
9 MediaPlayerRendererHost::MediaPlayerRendererHost(
10 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
11 MojoRenderer* mojo_renderer,
12 StreamTextureWrapper* stream_texture_wrapper,
13 VideoRendererSink* sink)
14 : mojo_renderer_(mojo_renderer),
15 stream_texture_wrapper_(stream_texture_wrapper),
16 frame_ready_(false),
17 client_(NULL),
18 sink_(sink),
19 task_runner_(media_task_runner) {}
20
21 MediaPlayerRendererHost::~MediaPlayerRendererHost() {
22 sink_->Stop();
23 }
24
25 void MediaPlayerRendererHost::Initialize(
26 DemuxerStreamProvider* demuxer_stream_provider,
27 RendererClient* client,
28 const PipelineStatusCB& init_cb) {
29 client_ = client;
30
31 // TODO(tguilbert): Update the base::Unretained.
32 stream_texture_wrapper_->Initialize(
33 this, gfx::Size(1, 1), task_runner_,
34 base::Bind(&MojoRenderer::Initialize,
35 base::Unretained(mojo_renderer_.get()),
36 demuxer_stream_provider, this,
37 base::Bind(&MediaPlayerRendererHost::CompleteInitialization,
38 base::Unretained(this), init_cb)));
39 }
40
41 void MediaPlayerRendererHost::CompleteInitialization(
42 const PipelineStatusCB& init_cb,
43 PipelineStatus status) {
44 // TODO(tguilbert): Handle failure.
45
46 sink_->Start(this);
47
48 init_cb.Run(status);
49 }
50
51 void MediaPlayerRendererHost::SetCdm(CdmContext* cdm_context,
52 const CdmAttachedCB& cdm_attached_cb) {
53 NOTREACHED();
54 }
55
56 void MediaPlayerRendererHost::Flush(const base::Closure& flush_cb) {
57 mojo_renderer_->Flush(flush_cb);
58 }
59
60 void MediaPlayerRendererHost::StartPlayingFrom(base::TimeDelta time) {
61 mojo_renderer_->StartPlayingFrom(time);
62 }
63
64 void MediaPlayerRendererHost::SetPlaybackRate(double playback_rate) {
65 mojo_renderer_->SetPlaybackRate(playback_rate);
66 }
67
68 void MediaPlayerRendererHost::SetVolume(float volume) {
69 mojo_renderer_->SetVolume(volume);
70 }
71
72 base::TimeDelta MediaPlayerRendererHost::GetMediaTime() {
73 return mojo_renderer_->GetMediaTime();
74 }
75
76 bool MediaPlayerRendererHost::HasAudio() {
77 return true;
78 }
79
80 bool MediaPlayerRendererHost::HasVideo() {
81 return true;
82 }
83
84 // cc::VideoFrameProvider::Client implementation.
85 void MediaPlayerRendererHost::StopUsingProvider() {
86 NOTREACHED();
87 }
88
89 void MediaPlayerRendererHost::StartRendering() {
90 NOTREACHED();
91 }
92
93 void MediaPlayerRendererHost::StopRendering() {
94 NOTREACHED();
95 }
96
97 void MediaPlayerRendererHost::DidReceiveFrame() {
98 frame_ready_ = true;
99 }
100
101 // VideoRenderSink::RenderCallback
102 scoped_refptr<VideoFrame> MediaPlayerRendererHost::Render(
103 base::TimeTicks deadline_min,
104 base::TimeTicks deadline_max,
105 bool background_rendering) {
106 if (frame_ready_) {
107 return stream_texture_wrapper_->GetCurrentFrame();
108 } else {
109 return NULL;
110 }
111 }
112
113 void MediaPlayerRendererHost::OnFrameDropped() {}
114
115 void MediaPlayerRendererHost::OnError(PipelineStatus status) {
116 client_->OnError(status);
117 }
118
119 void MediaPlayerRendererHost::OnEnded() {
120 client_->OnEnded();
121 }
122
123 void MediaPlayerRendererHost::OnStatisticsUpdate(
124 const PipelineStatistics& stats) {
125 client_->OnStatisticsUpdate(stats);
126 }
127
128 void MediaPlayerRendererHost::OnBufferingStateChange(BufferingState state) {
129 client_->OnBufferingStateChange(state);
130 }
131
132 void MediaPlayerRendererHost::OnWaitingForDecryptionKey() {
133 client_->OnWaitingForDecryptionKey();
134 }
135
136 void MediaPlayerRendererHost::OnVideoNaturalSizeChange(const gfx::Size& size) {
137 stream_texture_wrapper_->UpdateTextureSize(size);
138 client_->OnVideoNaturalSizeChange(size);
139 }
140
141 void MediaPlayerRendererHost::OnVideoOpacityChange(bool opaque) {
142 client_->OnVideoOpacityChange(opaque);
143 }
144
145 void MediaPlayerRendererHost::OnDurationChange(base::TimeDelta duration) {
146 client_->OnDurationChange(duration);
147 }
148
149 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698