1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "media/ozone/media_ozone_platform.h" 6 7#include "base/debug/trace_event.h" 8#include "base/logging.h" 9#include "ui/ozone/platform_object.h" 10#include "ui/ozone/platform_selection.h" 11 12namespace media { 13 14namespace { 15 16class MediaOzonePlatformStub : public MediaOzonePlatform { 17 public: 18 MediaOzonePlatformStub() {} 19 20 virtual ~MediaOzonePlatformStub() {} 21 22 private: 23 DISALLOW_COPY_AND_ASSIGN(MediaOzonePlatformStub); 24}; 25 26} // namespace 27 28// The following statics are just convenient stubs, declared by the 29// generate_constructor_list.py script. They should be removed once the 30// internal Ozone platforms decide to actually implement their media specifics. 31MediaOzonePlatform* CreateMediaOzonePlatformCaca() { 32 return new MediaOzonePlatformStub; 33} 34 35MediaOzonePlatform* CreateMediaOzonePlatformDri() { 36 return new MediaOzonePlatformStub; 37} 38 39MediaOzonePlatform* CreateMediaOzonePlatformEgltest() { 40 return new MediaOzonePlatformStub; 41} 42 43MediaOzonePlatform* CreateMediaOzonePlatformGbm() { 44 return new MediaOzonePlatformStub; 45} 46 47MediaOzonePlatform* CreateMediaOzonePlatformTest() { 48 return new MediaOzonePlatformStub; 49} 50 51MediaOzonePlatform::MediaOzonePlatform() { 52 CHECK(!instance_) << "There should only be a single MediaOzonePlatform."; 53 instance_ = this; 54} 55 56MediaOzonePlatform::~MediaOzonePlatform() { 57 CHECK_EQ(instance_, this); 58 instance_ = NULL; 59} 60 61// static 62MediaOzonePlatform* MediaOzonePlatform::GetInstance() { 63 if (!instance_) 64 CreateInstance(); 65 return instance_; 66} 67 68VideoDecodeAccelerator* MediaOzonePlatform::CreateVideoDecodeAccelerator( 69 const base::Callback<bool(void)>& make_context_current) { 70 NOTIMPLEMENTED(); 71 return NULL; 72} 73 74// static 75void MediaOzonePlatform::CreateInstance() { 76 if (instance_) 77 return; 78 79 TRACE_EVENT1("ozone", 80 "MediaOzonePlatform::Initialize", 81 "platform", 82 ui::GetOzonePlatformName()); 83 scoped_ptr<MediaOzonePlatform> platform = 84 ui::PlatformObject<MediaOzonePlatform>::Create(); 85 86 // TODO(spang): Currently need to leak this object. 87 CHECK_EQ(instance_, platform.release()); 88} 89 90// static 91MediaOzonePlatform* MediaOzonePlatform::instance_; 92 93} // namespace media 94