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

Side by Side Diff: media/renderers/video_renderer_impl.h

Issue 1955843002: Move Renderer permanent callbacks into RendererClient interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 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
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 #ifndef MEDIA_RENDERERS_VIDEO_RENDERER_IMPL_H_ 5 #ifndef MEDIA_RENDERERS_VIDEO_RENDERER_IMPL_H_
6 #define MEDIA_RENDERERS_VIDEO_RENDERER_IMPL_H_ 6 #define MEDIA_RENDERERS_VIDEO_RENDERER_IMPL_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, 56 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
57 const scoped_refptr<base::TaskRunner>& worker_task_runner, 57 const scoped_refptr<base::TaskRunner>& worker_task_runner,
58 VideoRendererSink* sink, 58 VideoRendererSink* sink,
59 ScopedVector<VideoDecoder> decoders, 59 ScopedVector<VideoDecoder> decoders,
60 bool drop_frames, 60 bool drop_frames,
61 GpuVideoAcceleratorFactories* gpu_factories, 61 GpuVideoAcceleratorFactories* gpu_factories,
62 const scoped_refptr<MediaLog>& media_log); 62 const scoped_refptr<MediaLog>& media_log);
63 ~VideoRendererImpl() override; 63 ~VideoRendererImpl() override;
64 64
65 // VideoRenderer implementation. 65 // VideoRenderer implementation.
66 void Initialize(DemuxerStream* stream, 66 void Initialize(RendererClient* client,
67 const PipelineStatusCB& init_cb, 67 DemuxerStream* stream,
68 CdmContext* cdm_context, 68 CdmContext* cdm_context,
69 const StatisticsCB& statistics_cb,
70 const BufferingStateCB& buffering_state_cb,
71 const base::Closure& ended_cb,
72 const PipelineStatusCB& error_cb,
73 const TimeSource::WallClockTimeCB& wall_clock_time_cb, 69 const TimeSource::WallClockTimeCB& wall_clock_time_cb,
74 const base::Closure& waiting_for_decryption_key_cb) override; 70 const PipelineStatusCB& init_cb) override;
75 void Flush(const base::Closure& callback) override; 71 void Flush(const base::Closure& callback) override;
76 void StartPlayingFrom(base::TimeDelta timestamp) override; 72 void StartPlayingFrom(base::TimeDelta timestamp) override;
77 void OnTimeStateChanged(bool time_progressing) override; 73 void OnTimeStateChanged(bool time_progressing) override;
78 74
79 void SetTickClockForTesting(std::unique_ptr<base::TickClock> tick_clock); 75 void SetTickClockForTesting(std::unique_ptr<base::TickClock> tick_clock);
80 void SetGpuMemoryBufferVideoForTesting( 76 void SetGpuMemoryBufferVideoForTesting(
81 std::unique_ptr<GpuMemoryBufferVideoFramePool> gpu_memory_buffer_pool); 77 std::unique_ptr<GpuMemoryBufferVideoFramePool> gpu_memory_buffer_pool);
82 size_t frames_queued_for_testing() const { 78 size_t frames_queued_for_testing() const {
83 return algorithm_->frames_queued(); 79 return algorithm_->frames_queued();
84 } 80 }
85 81
86 // VideoRendererSink::RenderCallback implementation. 82 // VideoRendererSink::RenderCallback implementation.
87 scoped_refptr<VideoFrame> Render(base::TimeTicks deadline_min, 83 scoped_refptr<VideoFrame> Render(base::TimeTicks deadline_min,
88 base::TimeTicks deadline_max, 84 base::TimeTicks deadline_max,
89 bool background_rendering) override; 85 bool background_rendering) override;
90 void OnFrameDropped() override; 86 void OnFrameDropped() override;
91 87
92 private: 88 private:
93 // Callback for |video_frame_stream_| initialization. 89 // Callback for |video_frame_stream_| initialization.
94 void OnVideoFrameStreamInitialized(bool success); 90 void OnVideoFrameStreamInitialized(bool success);
xhwang 2016/05/09 18:13:23 empty line here
alokp 2016/05/09 21:31:44 Done.
91 // Functions to notify certain events to the RendererClient.
92 void OnPlaybackEnded();
93 void OnStatisticsUpdate(const PipelineStatistics& stats);
94 void OnWaitingForDecryptionKey();
95 95
96 // Callback for |video_frame_stream_| to deliver decoded video frames and 96 // Callback for |video_frame_stream_| to deliver decoded video frames and
97 // report video decoding status. If a frame is available the planes will be 97 // report video decoding status. If a frame is available the planes will be
98 // copied asynchronously and FrameReady will be called once finished copying. 98 // copied asynchronously and FrameReady will be called once finished copying.
99 void FrameReadyForCopyingToGpuMemoryBuffers( 99 void FrameReadyForCopyingToGpuMemoryBuffers(
100 VideoFrameStream::Status status, 100 VideoFrameStream::Status status,
101 const scoped_refptr<VideoFrame>& frame); 101 const scoped_refptr<VideoFrame>& frame);
102 102
103 // Callback for |video_frame_stream_| to deliver decoded video frames and 103 // Callback for |video_frame_stream_| to deliver decoded video frames and
104 // report video decoding status. 104 // report video decoding status.
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 // not call any methods on the sink while |lock_| is held or the two threads 180 // not call any methods on the sink while |lock_| is held or the two threads
181 // might deadlock. Do not call Start() or Stop() on the sink directly, use 181 // might deadlock. Do not call Start() or Stop() on the sink directly, use
182 // StartSink() and StopSink() to ensure background rendering is started. Only 182 // StartSink() and StopSink() to ensure background rendering is started. Only
183 // access these values on |task_runner_|. 183 // access these values on |task_runner_|.
184 VideoRendererSink* const sink_; 184 VideoRendererSink* const sink_;
185 bool sink_started_; 185 bool sink_started_;
186 186
187 // Used for accessing data members. 187 // Used for accessing data members.
188 base::Lock lock_; 188 base::Lock lock_;
189 189
190 RendererClient* client_;
191
190 // Provides video frames to VideoRendererImpl. 192 // Provides video frames to VideoRendererImpl.
191 std::unique_ptr<VideoFrameStream> video_frame_stream_; 193 std::unique_ptr<VideoFrameStream> video_frame_stream_;
192 194
193 // Pool of GpuMemoryBuffers and resources used to create hardware frames. 195 // Pool of GpuMemoryBuffers and resources used to create hardware frames.
194 std::unique_ptr<GpuMemoryBufferVideoFramePool> gpu_memory_buffer_pool_; 196 std::unique_ptr<GpuMemoryBufferVideoFramePool> gpu_memory_buffer_pool_;
195 197
196 scoped_refptr<MediaLog> media_log_; 198 scoped_refptr<MediaLog> media_log_;
197 199
198 // Flag indicating low-delay mode. 200 // Flag indicating low-delay mode.
199 bool low_delay_; 201 bool low_delay_;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 239
238 // Keep track of the outstanding read on the VideoFrameStream. Flushing can 240 // Keep track of the outstanding read on the VideoFrameStream. Flushing can
239 // only complete once the read has completed. 241 // only complete once the read has completed.
240 bool pending_read_; 242 bool pending_read_;
241 243
242 bool drop_frames_; 244 bool drop_frames_;
243 245
244 BufferingState buffering_state_; 246 BufferingState buffering_state_;
245 247
246 // Playback operation callbacks. 248 // Playback operation callbacks.
249 PipelineStatusCB init_cb_;
247 base::Closure flush_cb_; 250 base::Closure flush_cb_;
248
249 // Event callbacks.
250 PipelineStatusCB init_cb_;
251 StatisticsCB statistics_cb_;
252 BufferingStateCB buffering_state_cb_;
253 base::Closure ended_cb_;
254 PipelineStatusCB error_cb_;
255 TimeSource::WallClockTimeCB wall_clock_time_cb_; 251 TimeSource::WallClockTimeCB wall_clock_time_cb_;
256 252
257 base::TimeDelta start_timestamp_; 253 base::TimeDelta start_timestamp_;
258 254
259 // Keeps track of the number of frames decoded and dropped since the 255 // Keeps track of the number of frames decoded and dropped since the
260 // last call to |statistics_cb_|. These must be accessed under lock. 256 // last call to |statistics_cb_|. These must be accessed under lock.
261 int frames_decoded_; 257 int frames_decoded_;
262 int frames_dropped_; 258 int frames_dropped_;
263 259
264 std::unique_ptr<base::TickClock> tick_clock_; 260 std::unique_ptr<base::TickClock> tick_clock_;
(...skipping 23 matching lines...) Expand all
288 284
289 // NOTE: Weak pointers must be invalidated before all other member variables. 285 // NOTE: Weak pointers must be invalidated before all other member variables.
290 base::WeakPtrFactory<VideoRendererImpl> weak_factory_; 286 base::WeakPtrFactory<VideoRendererImpl> weak_factory_;
291 287
292 DISALLOW_COPY_AND_ASSIGN(VideoRendererImpl); 288 DISALLOW_COPY_AND_ASSIGN(VideoRendererImpl);
293 }; 289 };
294 290
295 } // namespace media 291 } // namespace media
296 292
297 #endif // MEDIA_RENDERERS_VIDEO_RENDERER_IMPL_H_ 293 #endif // MEDIA_RENDERERS_VIDEO_RENDERER_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698