• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
12 namespace media {
13 
14 namespace {
15 
16 class MediaOzonePlatformStub : public MediaOzonePlatform {
17  public:
MediaOzonePlatformStub()18   MediaOzonePlatformStub() {}
19 
~MediaOzonePlatformStub()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.
CreateMediaOzonePlatformCaca()31 MediaOzonePlatform* CreateMediaOzonePlatformCaca() {
32   return new MediaOzonePlatformStub;
33 }
34 
CreateMediaOzonePlatformDri()35 MediaOzonePlatform* CreateMediaOzonePlatformDri() {
36   return new MediaOzonePlatformStub;
37 }
38 
CreateMediaOzonePlatformEgltest()39 MediaOzonePlatform* CreateMediaOzonePlatformEgltest() {
40   return new MediaOzonePlatformStub;
41 }
42 
CreateMediaOzonePlatformGbm()43 MediaOzonePlatform* CreateMediaOzonePlatformGbm() {
44   return new MediaOzonePlatformStub;
45 }
46 
CreateMediaOzonePlatformTest()47 MediaOzonePlatform* CreateMediaOzonePlatformTest() {
48   return new MediaOzonePlatformStub;
49 }
50 
MediaOzonePlatform()51 MediaOzonePlatform::MediaOzonePlatform() {
52   CHECK(!instance_) << "There should only be a single MediaOzonePlatform.";
53   instance_ = this;
54 }
55 
~MediaOzonePlatform()56 MediaOzonePlatform::~MediaOzonePlatform() {
57   CHECK_EQ(instance_, this);
58   instance_ = NULL;
59 }
60 
61 // static
GetInstance()62 MediaOzonePlatform* MediaOzonePlatform::GetInstance() {
63   if (!instance_)
64     CreateInstance();
65   return instance_;
66 }
67 
CreateVideoDecodeAccelerator(const base::Callback<bool (void)> & make_context_current)68 VideoDecodeAccelerator* MediaOzonePlatform::CreateVideoDecodeAccelerator(
69     const base::Callback<bool(void)>& make_context_current) {
70   NOTIMPLEMENTED();
71   return NULL;
72 }
73 
74 // static
CreateInstance()75 void 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
91 MediaOzonePlatform* MediaOzonePlatform::instance_;
92 
93 }  // namespace media
94