Index: content/common/gpu/media/gpu_video_decode_accelerator.h |
diff --git a/content/common/gpu/media/gpu_video_decode_accelerator.h b/content/common/gpu/media/gpu_video_decode_accelerator.h |
index e59a76fb5c35169dd4b0fab8cb448e9bc02a46b3..bd8caf74afecc8dee72013a5753aba96d53f47d5 100644 |
--- a/content/common/gpu/media/gpu_video_decode_accelerator.h |
+++ b/content/common/gpu/media/gpu_video_decode_accelerator.h |
@@ -59,14 +59,29 @@ class GpuVideoDecodeAccelerator |
// Function to delegate sending to actual sender. |
bool Send(IPC::Message* message) override; |
- // Initialize the accelerator with the given profile and send the |
- // |init_done_msg| when done. |
+ // Initialize VDAs from the set of VDAs supported for current platform until |
+ // one of them succeeds for given |profile|. Send the |init_done_msg| when |
+ // done. filter_ is passed to GpuCommandBufferStub channel only if the chosen |
+ // VDA can decode on IO thread. |
void Initialize(const media::VideoCodecProfile profile, |
IPC::Message* init_done_msg); |
private: |
+ typedef scoped_ptr<media::VideoDecodeAccelerator>( |
+ GpuVideoDecodeAccelerator::*CreateVDAFp)(); |
+ |
class MessageFilter; |
+ // Return a set of VDA Create function pointers applicable to the current |
+ // platform. |
+ std::vector<CreateVDAFp> CreateVDAFps(); |
+ scoped_ptr<media::VideoDecodeAccelerator> CreateDXVAVDA(); |
+ scoped_ptr<media::VideoDecodeAccelerator> CreateV4L2VDA(); |
+ scoped_ptr<media::VideoDecodeAccelerator> CreateVaapiVDA(); |
+ scoped_ptr<media::VideoDecodeAccelerator> CreateVTVDA(); |
+ scoped_ptr<media::VideoDecodeAccelerator> CreateOzoneVDA(); |
+ scoped_ptr<media::VideoDecodeAccelerator> CreateAndroidVDA(); |
+ |
// We only allow self-delete, from OnWillDestroyStub(), after cleanup there. |
~GpuVideoDecodeAccelerator() override; |