// 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_