Chromium Code Reviews| Index: media/ozone/media_ozone_platform.cc |
| diff --git a/media/ozone/media_ozone_platform.cc b/media/ozone/media_ozone_platform.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..e7c75df609a38ad7962b77b62c6626e520d1e528 |
| --- /dev/null |
| +++ b/media/ozone/media_ozone_platform.cc |
| @@ -0,0 +1,83 @@ |
| +// 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. |
| + |
| +#include "media/ozone/media_ozone_platform.h" |
| + |
| +#include "base/debug/trace_event.h" |
| +#include "base/logging.h" |
| +#include "ui/ozone/platform_object.h" |
| +#include "ui/ozone/platform_selection.h" |
| + |
| +namespace media { |
| + |
| +namespace { |
| + |
| +class MediaOzonePlatformStub : public MediaOzonePlatform { |
| + public: |
| + MediaOzonePlatformStub() {} |
| + |
| + virtual ~MediaOzonePlatformStub() {} |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(MediaOzonePlatformStub); |
| +}; |
| + |
| +} // namespace |
| + |
| +// the following are just convenient stubs and need to be removed once the |
| +// internal platforms decide to actually implement their media specifics |
| +MediaOzonePlatform* CreateMediaOzonePlatformDri() { |
| + return new MediaOzonePlatformStub; |
| +} |
| + |
| +MediaOzonePlatform* CreateMediaOzonePlatformEgltest() { |
| + return new MediaOzonePlatformStub; |
| +} |
| + |
| +MediaOzonePlatform* CreateMediaOzonePlatformTest() { |
| + return new MediaOzonePlatformStub; |
| +} |
|
spang
2014/06/09 20:53:57
Two more that are off by default:
Gbm
Caca
|
| + |
| +MediaOzonePlatform::MediaOzonePlatform() { |
| + CHECK(!instance_) << "There should only be a single MediaOzonePlatform."; |
| + instance_ = this; |
| +} |
| + |
| +MediaOzonePlatform::~MediaOzonePlatform() { |
| + CHECK_EQ(instance_, this); |
| + instance_ = NULL; |
| +} |
| + |
| +// static |
| +MediaOzonePlatform* MediaOzonePlatform::GetInstance() { |
| + if (!instance_) |
| + CreateInstance(); |
| + return instance_; |
| +} |
| + |
| +VideoDecodeAccelerator* MediaOzonePlatform::CreateVideoDecodeAccelerator( |
| + const base::Callback<bool(void)>& make_context_current) { |
| + NOTIMPLEMENTED(); |
| + return NULL; |
| +} |
| + |
| +// static |
| +void MediaOzonePlatform::CreateInstance() { |
| + if (!instance_) { |
| + TRACE_EVENT1("ozone", |
| + "MediaOzonePlatform::Initialize", |
| + "platform", |
| + ui::GetOzonePlatformName()); |
| + scoped_ptr<MediaOzonePlatform> platform = |
| + ui::PlatformObject<MediaOzonePlatform>::Create(); |
| + |
| + // TODO(spang): Currently need to leak this object. |
| + CHECK_EQ(instance_, platform.release()); |
| + } |
| +} |
| + |
| +// static |
| +MediaOzonePlatform* MediaOzonePlatform::instance_; |
| + |
| +} // namespace media |