// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MEDIA_OZONE_MEDIA_OZONE_PLATFORM_H_ #define MEDIA_OZONE_MEDIA_OZONE_PLATFORM_H_ #include "base/callback.h" #include "media/base/media_export.h" namespace media { class VideoDecodeAccelerator; // Class for Ozone platform media implementations. Note that the base class for // Ozone platform is at ui/ozone. // // Ozone platforms must override this class and implement the virtual // GetFooFactoryOzone() methods to provide implementations of the // various ozone interfaces. class MEDIA_EXPORT MediaOzonePlatform { public: MediaOzonePlatform(); virtual ~MediaOzonePlatform(); // Besides get the global instance, initializes the subsystems/resources // necessary for media also. static MediaOzonePlatform* GetInstance(); // Factory getters to override in subclasses. The returned objects will be // injected into the appropriate layer at startup. Subclasses should not // inject these objects themselves. Ownership is retained by // MediaOzonePlatform. virtual VideoDecodeAccelerator* CreateVideoDecodeAccelerator( const base::Callback<bool(void)>& make_context_current); private: static void CreateInstance(); static MediaOzonePlatform* instance_; DISALLOW_COPY_AND_ASSIGN(MediaOzonePlatform); }; } // namespace media #endif // MEDIA_OZONE_MEDIA_OZONE_PLATFORM_H_