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

Side by Side Diff: media/gpu/android_video_decode_accelerator.h

Issue 1993833002: Serialize usage of SurfaceView between AVDA instances. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cl feedback. 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
« no previous file with comments | « no previous file | media/gpu/android_video_decode_accelerator.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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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_GPU_ANDROID_VIDEO_DECODE_ACCELERATOR_H_ 5 #ifndef MEDIA_GPU_ANDROID_VIDEO_DECODE_ACCELERATOR_H_
6 #define MEDIA_GPU_ANDROID_VIDEO_DECODE_ACCELERATOR_H_ 6 #define MEDIA_GPU_ANDROID_VIDEO_DECODE_ACCELERATOR_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <list> 10 #include <list>
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 gfx::Size initial_expected_coded_size_; 203 gfx::Size initial_expected_coded_size_;
204 204
205 protected: 205 protected:
206 friend class base::RefCountedThreadSafe<CodecConfig>; 206 friend class base::RefCountedThreadSafe<CodecConfig>;
207 virtual ~CodecConfig(); 207 virtual ~CodecConfig();
208 208
209 private: 209 private:
210 DISALLOW_COPY_AND_ASSIGN(CodecConfig); 210 DISALLOW_COPY_AND_ASSIGN(CodecConfig);
211 }; 211 };
212 212
213 // Callback that is called when the SurfaceView becomes available, if it's
214 // not during Initialize. |success| is true if it is now available, false
215 // if initialization should stop.
216 void OnSurfaceAvailable(bool success);
217
218 // Finish initialization of the strategy. This is to be called when the
219 // SurfaceView in |surface_id_|, if any, is no longer busy. It will return
220 // false on failure, and true if initialization was successful. This includes
221 // synchronous and asynchronous init; the AVDA might not yet have a codec on
222 // success, but async init will at least be in progress.
223 bool InitializeStrategy();
224
213 // A part of destruction process that is sometimes postponed after the drain. 225 // A part of destruction process that is sometimes postponed after the drain.
214 void ActualDestroy(); 226 void ActualDestroy();
215 227
216 // Configures |media_codec_| with the given codec parameters from the client. 228 // Configures |media_codec_| with the given codec parameters from the client.
217 // This configuration will (probably) not be complete before this call 229 // This configuration will (probably) not be complete before this call
218 // returns. Multiple calls before completion will be ignored. |state_| 230 // returns. Multiple calls before completion will be ignored. |state_|
219 // must be NO_ERROR or WAITING_FOR_CODEC. Note that, once you call this, 231 // must be NO_ERROR or WAITING_FOR_CODEC. Note that, once you call this,
220 // you should be careful to avoid modifying members of |codec_config_| until 232 // you should be careful to avoid modifying members of |codec_config_| until
221 // |state_| is no longer WAITING_FOR_CODEC. 233 // |state_| is no longer WAITING_FOR_CODEC.
222 void ConfigureMediaCodecAsynchronously(); 234 void ConfigureMediaCodecAsynchronously();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 bool DequeueOutput(); 268 bool DequeueOutput();
257 269
258 // Requests picture buffers from the client. 270 // Requests picture buffers from the client.
259 void RequestPictureBuffers(); 271 void RequestPictureBuffers();
260 272
261 // Decode the content in the |bitstream_buffer|. Note that a 273 // Decode the content in the |bitstream_buffer|. Note that a
262 // |bitstream_buffer| of id as -1 indicates a flush command. 274 // |bitstream_buffer| of id as -1 indicates a flush command.
263 void DecodeBuffer(const media::BitstreamBuffer& bitstream_buffer); 275 void DecodeBuffer(const media::BitstreamBuffer& bitstream_buffer);
264 276
265 // Called during Initialize() for encrypted streams to set up the CDM. 277 // Called during Initialize() for encrypted streams to set up the CDM.
266 void InitializeCdm(int cdm_id); 278 void InitializeCdm();
267 279
268 // Called after the CDM obtains a MediaCrypto object. 280 // Called after the CDM obtains a MediaCrypto object.
269 void OnMediaCryptoReady( 281 void OnMediaCryptoReady(
270 media::MediaDrmBridgeCdmContext::JavaObjectPtr media_crypto, 282 media::MediaDrmBridgeCdmContext::JavaObjectPtr media_crypto,
271 bool needs_protected_surface); 283 bool needs_protected_surface);
272 284
273 // Called when a new key is added to the CDM. 285 // Called when a new key is added to the CDM.
274 void OnKeyAdded(); 286 void OnKeyAdded();
275 287
276 // Notifies the client of the result of deferred initialization. 288 // Notifies the client of the result of deferred initialization.
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 350
339 // To expose client callbacks from VideoDecodeAccelerator. 351 // To expose client callbacks from VideoDecodeAccelerator.
340 Client* client_; 352 Client* client_;
341 353
342 // Callback to set the correct gl context. 354 // Callback to set the correct gl context.
343 MakeGLContextCurrentCallback make_context_current_cb_; 355 MakeGLContextCurrentCallback make_context_current_cb_;
344 356
345 // Callback to get the GLES2Decoder instance. 357 // Callback to get the GLES2Decoder instance.
346 GetGLES2DecoderCallback get_gles2_decoder_cb_; 358 GetGLES2DecoderCallback get_gles2_decoder_cb_;
347 359
348 // Whether the stream is encrypted.
349 bool is_encrypted_;
350
351 // The current state of this class. For now, this is used only for setting 360 // The current state of this class. For now, this is used only for setting
352 // error state. 361 // error state.
353 State state_; 362 State state_;
354 363
355 // This map maintains the picture buffers passed to the client for decoding. 364 // This map maintains the picture buffers passed to the client for decoding.
356 // The key is the picture buffer id. 365 // The key is the picture buffer id.
357 OutputBufferMap output_picture_buffers_; 366 OutputBufferMap output_picture_buffers_;
358 367
359 // This keeps the free picture buffer ids which can be used for sending 368 // This keeps the free picture buffer ids which can be used for sending
360 // decoded frames to the client. 369 // decoded frames to the client.
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 // from being sent after a reset. 427 // from being sent after a reset.
419 int error_sequence_token_; 428 int error_sequence_token_;
420 429
421 // PostError will defer sending an error if and only if this is true. 430 // PostError will defer sending an error if and only if this is true.
422 bool defer_errors_; 431 bool defer_errors_;
423 432
424 // True if and only if VDA initialization is deferred, and we have not yet 433 // True if and only if VDA initialization is deferred, and we have not yet
425 // called NotifyInitializationComplete. 434 // called NotifyInitializationComplete.
426 bool deferred_initialization_pending_; 435 bool deferred_initialization_pending_;
427 436
428 int surface_id_; 437 // Copy of the VDA::Config we were given.
438 Config config_;
429 439
430 OnDestroyingSurfaceCallback on_destroying_surface_cb_; 440 OnDestroyingSurfaceCallback on_destroying_surface_cb_;
431 441
432 // WeakPtrFactory for posting tasks back to |this|. 442 // WeakPtrFactory for posting tasks back to |this|.
433 base::WeakPtrFactory<AndroidVideoDecodeAccelerator> weak_this_factory_; 443 base::WeakPtrFactory<AndroidVideoDecodeAccelerator> weak_this_factory_;
434 444
435 friend class AndroidVideoDecodeAcceleratorTest; 445 friend class AndroidVideoDecodeAcceleratorTest;
436 }; 446 };
437 447
438 } // namespace media 448 } // namespace media
439 449
440 #endif // MEDIA_GPU_ANDROID_VIDEO_DECODE_ACCELERATOR_H_ 450 #endif // MEDIA_GPU_ANDROID_VIDEO_DECODE_ACCELERATOR_H_
OLDNEW
« no previous file with comments | « no previous file | media/gpu/android_video_decode_accelerator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698