1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// found in the LICENSE file. 4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#ifndef MEDIA_OZONE_MEDIA_OZONE_PLATFORM_H_ 6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define MEDIA_OZONE_MEDIA_OZONE_PLATFORM_H_ 7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/callback.h" 9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "media/base/media_export.h" 10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace media { 12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class VideoDecodeAccelerator; 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Class for Ozone platform media implementations. Note that the base class for 16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Ozone platform is at ui/ozone. 17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// 18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Ozone platforms must override this class and implement the virtual 19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// GetFooFactoryOzone() methods to provide implementations of the 20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// various ozone interfaces. 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class MEDIA_EXPORT MediaOzonePlatform { 22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public: 23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) MediaOzonePlatform(); 24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual ~MediaOzonePlatform(); 25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Besides get the global instance, initializes the subsystems/resources 27f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // necessary for media also. 28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) static MediaOzonePlatform* GetInstance(); 29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Factory getters to override in subclasses. The returned objects will be 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // injected into the appropriate layer at startup. Subclasses should not 32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // inject these objects themselves. Ownership is retained by 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // MediaOzonePlatform. 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual VideoDecodeAccelerator* CreateVideoDecodeAccelerator( 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const base::Callback<bool(void)>& make_context_current); 36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) private: 38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) static void CreateInstance(); 39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) static MediaOzonePlatform* instance_; 41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(MediaOzonePlatform); 43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}; 44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} // namespace media 46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif // MEDIA_OZONE_MEDIA_OZONE_PLATFORM_H_ 48