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

Side by Side Diff: media/filters/gpu_video_decoder.h

Issue 2461073002: Use MediaCodec.setOutputSurface() for fullscreen transitions on M. (Closed)
Patch Set: Address comments. Created 4 years, 1 month 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
« no previous file with comments | « media/blink/webmediaplayer_impl.cc ('k') | media/filters/gpu_video_decoder.cc » ('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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_FILTERS_GPU_VIDEO_DECODER_H_ 5 #ifndef MEDIA_FILTERS_GPU_VIDEO_DECODER_H_
6 #define MEDIA_FILTERS_GPU_VIDEO_DECODER_H_ 6 #define MEDIA_FILTERS_GPU_VIDEO_DECODER_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 const RequestSurfaceCB& request_surface_cb, 51 const RequestSurfaceCB& request_surface_cb,
52 scoped_refptr<MediaLog> media_log); 52 scoped_refptr<MediaLog> media_log);
53 53
54 // VideoDecoder implementation. 54 // VideoDecoder implementation.
55 std::string GetDisplayName() const override; 55 std::string GetDisplayName() const override;
56 void Initialize(const VideoDecoderConfig& config, 56 void Initialize(const VideoDecoderConfig& config,
57 bool low_delay, 57 bool low_delay,
58 CdmContext* cdm_context, 58 CdmContext* cdm_context,
59 const InitCB& init_cb, 59 const InitCB& init_cb,
60 const OutputCB& output_cb) override; 60 const OutputCB& output_cb) override;
61 void CompleteInitialization(int cdm_id, int surface_id);
62 void Decode(const scoped_refptr<DecoderBuffer>& buffer, 61 void Decode(const scoped_refptr<DecoderBuffer>& buffer,
63 const DecodeCB& decode_cb) override; 62 const DecodeCB& decode_cb) override;
64 void Reset(const base::Closure& closure) override; 63 void Reset(const base::Closure& closure) override;
65 bool NeedsBitstreamConversion() const override; 64 bool NeedsBitstreamConversion() const override;
66 bool CanReadWithoutStalling() const override; 65 bool CanReadWithoutStalling() const override;
67 int GetMaxDecodeRequests() const override; 66 int GetMaxDecodeRequests() const override;
68 67
69 // VideoDecodeAccelerator::Client implementation. 68 // VideoDecodeAccelerator::Client implementation.
70 void NotifyInitializationComplete(bool success) override; 69 void NotifyInitializationComplete(bool success) override;
71 void ProvidePictureBuffers(uint32_t count, 70 void ProvidePictureBuffers(uint32_t count,
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 // |profile|, |coded_size|, and |is_encrypted|. 148 // |profile|, |coded_size|, and |is_encrypted|.
150 bool IsProfileSupported( 149 bool IsProfileSupported(
151 const VideoDecodeAccelerator::Capabilities& capabilities, 150 const VideoDecodeAccelerator::Capabilities& capabilities,
152 VideoCodecProfile profile, 151 VideoCodecProfile profile,
153 const gfx::Size& coded_size, 152 const gfx::Size& coded_size,
154 bool is_encrypted); 153 bool is_encrypted);
155 154
156 // Assert the contract that this class is operated on the right thread. 155 // Assert the contract that this class is operated on the right thread.
157 void DCheckGpuVideoAcceleratorFactoriesTaskRunnerIsCurrent() const; 156 void DCheckGpuVideoAcceleratorFactoriesTaskRunnerIsCurrent() const;
158 157
158 // Provided to the |request_surface_cb_| callback given during construction;
159 // sets or changes the output surface.
160 void OnSurfaceAvailable(int surface_id);
161
162 // If the VDA supports external surfaces, we must wait for the surface before
163 // completing initialization. This will be called by OnSurfaceAvailable() once
164 // the surface is known or immediately by Initialize() if external surfaces
165 // are unsupported.
166 void CompleteInitialization();
167
159 bool needs_bitstream_conversion_; 168 bool needs_bitstream_conversion_;
160 169
161 GpuVideoAcceleratorFactories* factories_; 170 GpuVideoAcceleratorFactories* factories_;
162 171
163 // For requesting a suface to render to. If this is null the VDA will return 172 // For requesting a suface to render to. If this is null the VDA will return
164 // normal video frames and not render them to a surface. 173 // normal video frames and not render them to a surface.
165 RequestSurfaceCB request_surface_cb_; 174 RequestSurfaceCB request_surface_cb_;
166 175
167 scoped_refptr<MediaLog> media_log_; 176 scoped_refptr<MediaLog> media_log_;
168 177
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 bool needs_all_picture_buffers_to_decode_; 245 bool needs_all_picture_buffers_to_decode_;
237 246
238 // If true, then the VDA supports deferred initialization via 247 // If true, then the VDA supports deferred initialization via
239 // NotifyInitializationComplete. Otherwise, it will return initialization 248 // NotifyInitializationComplete. Otherwise, it will return initialization
240 // status synchronously from VDA::Initialize. 249 // status synchronously from VDA::Initialize.
241 bool supports_deferred_initialization_; 250 bool supports_deferred_initialization_;
242 251
243 // This flag translates to COPY_REQUIRED flag for each frame. 252 // This flag translates to COPY_REQUIRED flag for each frame.
244 bool requires_texture_copy_; 253 bool requires_texture_copy_;
245 254
255 // Set during Initialize(); given to the VDA for purposes for handling
256 // encrypted content.
257 int cdm_id_;
258
246 // Bound to factories_->GetMessageLoop(). 259 // Bound to factories_->GetMessageLoop().
247 // NOTE: Weak pointers must be invalidated before all other member variables. 260 // NOTE: Weak pointers must be invalidated before all other member variables.
248 base::WeakPtrFactory<GpuVideoDecoder> weak_factory_; 261 base::WeakPtrFactory<GpuVideoDecoder> weak_factory_;
249 262
250 DISALLOW_COPY_AND_ASSIGN(GpuVideoDecoder); 263 DISALLOW_COPY_AND_ASSIGN(GpuVideoDecoder);
251 }; 264 };
252 265
253 } // namespace media 266 } // namespace media
254 267
255 #endif // MEDIA_FILTERS_GPU_VIDEO_DECODER_H_ 268 #endif // MEDIA_FILTERS_GPU_VIDEO_DECODER_H_
OLDNEW
« no previous file with comments | « media/blink/webmediaplayer_impl.cc ('k') | media/filters/gpu_video_decoder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698