Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 CONTENT_COMMON_GPU_MEDIA_ANDROID_VIDEO_DECODE_ACCELERATOR_H_ | 5 #ifndef CONTENT_COMMON_GPU_MEDIA_ANDROID_VIDEO_DECODE_ACCELERATOR_H_ |
| 6 #define CONTENT_COMMON_GPU_MEDIA_ANDROID_VIDEO_DECODE_ACCELERATOR_H_ | 6 #define CONTENT_COMMON_GPU_MEDIA_ANDROID_VIDEO_DECODE_ACCELERATOR_H_ |
| 7 | 7 |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <list> | 10 #include <list> |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 69 // Return the GL texture target that the PictureBuffer textures use. | 69 // Return the GL texture target that the PictureBuffer textures use. |
| 70 virtual uint32_t GetTextureTarget() const = 0; | 70 virtual uint32_t GetTextureTarget() const = 0; |
| 71 | 71 |
| 72 // Return the size to use when requesting picture buffers. | 72 // Return the size to use when requesting picture buffers. |
| 73 virtual gfx::Size GetPictureBufferSize() const = 0; | 73 virtual gfx::Size GetPictureBufferSize() const = 0; |
| 74 | 74 |
| 75 // Make the provided PictureBuffer draw the image that is represented by | 75 // Make the provided PictureBuffer draw the image that is represented by |
| 76 // the decoded output buffer at codec_buffer_index. | 76 // the decoded output buffer at codec_buffer_index. |
| 77 virtual void UseCodecBufferForPictureBuffer( | 77 virtual void UseCodecBufferForPictureBuffer( |
| 78 int32_t codec_buffer_index, | 78 int32_t codec_buffer_index, |
| 79 const media::PictureBuffer& picture_buffer) = 0; | 79 const media::PictureBuffer& picture_buffer, |
| 80 const std::vector<int32_t>& pictures_out_for_display) = 0; | |
|
liberato (no reviews please)
2016/04/22 00:51:05
couldn't pictures_out_for_display be an implementa
DaleCurtis
2016/04/22 01:33:58
Great suggestion. Done.
| |
| 80 | 81 |
| 81 // Notify strategy that a picture buffer has been assigned. | 82 // Notify strategy that a picture buffer has been assigned. |
| 82 virtual void AssignOnePictureBuffer( | 83 virtual void AssignOnePictureBuffer( |
| 83 const media::PictureBuffer& picture_buffer, | 84 const media::PictureBuffer& picture_buffer, |
| 84 bool have_context) {} | 85 bool have_context) {} |
| 85 | 86 |
| 86 // Notify strategy that a picture buffer has been reused. | 87 // Notify strategy that a picture buffer has been reused. |
| 87 virtual void ReuseOnePictureBuffer( | 88 virtual void ReuseOnePictureBuffer( |
| 88 const media::PictureBuffer& picture_buffer) {} | 89 const media::PictureBuffer& picture_buffer, |
| 90 const std::vector<int32_t>& pictures_out_for_display) {} | |
| 91 | |
| 92 // Attempts to free up codec output buffers by rendering early. | |
| 93 virtual void MaybeRenderEarly( | |
| 94 const std::vector<int32_t>& pictures_out_for_display) {} | |
| 89 | 95 |
| 90 // Notify strategy that we have a new android MediaCodec instance. This | 96 // Notify strategy that we have a new android MediaCodec instance. This |
| 91 // happens when we're starting up or re-configuring mid-stream. Any | 97 // happens when we're starting up or re-configuring mid-stream. Any |
| 92 // previously provided codec should no longer be referenced. | 98 // previously provided codec should no longer be referenced. |
| 93 virtual void CodecChanged(media::VideoCodecBridge* codec) = 0; | 99 virtual void CodecChanged(media::VideoCodecBridge* codec) = 0; |
| 94 | 100 |
| 95 // Notify the strategy that a frame is available. This callback can happen | 101 // Notify the strategy that a frame is available. This callback can happen |
| 96 // on any thread at any time. | 102 // on any thread at any time. |
| 97 virtual void OnFrameAvailable() = 0; | 103 virtual void OnFrameAvailable() = 0; |
| 98 | 104 |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 310 State state_; | 316 State state_; |
| 311 | 317 |
| 312 // This map maintains the picture buffers passed to the client for decoding. | 318 // This map maintains the picture buffers passed to the client for decoding. |
| 313 // The key is the picture buffer id. | 319 // The key is the picture buffer id. |
| 314 OutputBufferMap output_picture_buffers_; | 320 OutputBufferMap output_picture_buffers_; |
| 315 | 321 |
| 316 // This keeps the free picture buffer ids which can be used for sending | 322 // This keeps the free picture buffer ids which can be used for sending |
| 317 // decoded frames to the client. | 323 // decoded frames to the client. |
| 318 std::queue<int32_t> free_picture_ids_; | 324 std::queue<int32_t> free_picture_ids_; |
| 319 | 325 |
| 326 // Picture buffer IDs that are out for display. Stored in order of frames as | |
| 327 // they are returned from the decoder. | |
| 328 std::vector<int32_t> pictures_out_for_display_; | |
| 329 | |
| 320 // The low-level decoder which Android SDK provides. | 330 // The low-level decoder which Android SDK provides. |
| 321 std::unique_ptr<media::VideoCodecBridge> media_codec_; | 331 std::unique_ptr<media::VideoCodecBridge> media_codec_; |
| 322 | 332 |
| 323 // Set to true after requesting picture buffers to the client. | 333 // Set to true after requesting picture buffers to the client. |
| 324 bool picturebuffers_requested_; | 334 bool picturebuffers_requested_; |
| 325 | 335 |
| 326 // The resolution of the stream. | 336 // The resolution of the stream. |
| 327 gfx::Size size_; | 337 gfx::Size size_; |
| 328 | 338 |
| 329 // Encoded bitstream buffers to be passed to media codec, queued until an | 339 // Encoded bitstream buffers to be passed to media codec, queued until an |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 382 | 392 |
| 383 // WeakPtrFactory for posting tasks back to |this|. | 393 // WeakPtrFactory for posting tasks back to |this|. |
| 384 base::WeakPtrFactory<AndroidVideoDecodeAccelerator> weak_this_factory_; | 394 base::WeakPtrFactory<AndroidVideoDecodeAccelerator> weak_this_factory_; |
| 385 | 395 |
| 386 friend class AndroidVideoDecodeAcceleratorTest; | 396 friend class AndroidVideoDecodeAcceleratorTest; |
| 387 }; | 397 }; |
| 388 | 398 |
| 389 } // namespace content | 399 } // namespace content |
| 390 | 400 |
| 391 #endif // CONTENT_COMMON_GPU_MEDIA_ANDROID_VIDEO_DECODE_ACCELERATOR_H_ | 401 #endif // CONTENT_COMMON_GPU_MEDIA_ANDROID_VIDEO_DECODE_ACCELERATOR_H_ |
| OLD | NEW |