blob: c6de496dd52d3f52eca0133251774f5b734bb124 [file] [log] [blame]
// Copyright 2016 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 COBALT_MEDIA_BASE_SURFACE_MANAGER_H_
#define COBALT_MEDIA_BASE_SURFACE_MANAGER_H_
#include "base/basictypes.h"
#include "base/callback.h"
#include "cobalt/media/base/media_export.h"
#include "ui/gfx/size.h"
namespace cobalt {
namespace media {
using SurfaceCreatedCB = base::Callback<void(int)>;
using RequestSurfaceCB = base::Callback<void(const SurfaceCreatedCB&)>;
class MEDIA_EXPORT SurfaceManager {
public:
enum { kNoSurfaceID = -1 };
SurfaceManager() {}
virtual ~SurfaceManager() {}
// Create a fullscreen surface. The id will be returned with
// |surface_created_cb|. If this is called more than once before the first
// |surface_created_cb| is called, the surface will be delivered to the last
// caller. If this is called after the fullscreen surface is created, the
// existing surface will be returned. The client should ensure that the
// previous consumer is no longer using the surface.
virtual void CreateFullscreenSurface(
const gfx::Size& video_natural_size,
const SurfaceCreatedCB& surface_created_cb) = 0;
// Call this when the natural size of the fullscreen video changes. The
// surface will be resized to match the aspect ratio.
virtual void NaturalSizeChanged(const gfx::Size& size) = 0;
private:
DISALLOW_COPY_AND_ASSIGN(SurfaceManager);
};
} // namespace media
} // namespace cobalt
#endif // COBALT_MEDIA_BASE_SURFACE_MANAGER_H_