// Copyright 2015 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_RENDERERS_VIDEO_OVERLAY_FACTORY_H_
#define MEDIA_RENDERERS_VIDEO_OVERLAY_FACTORY_H_

#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "base/unguessable_token.h"
#include "media/base/media_export.h"

namespace gfx {
class Size;
}  // namespace gfx

namespace media {

class VideoFrame;

// Creates video overlay frames - native textures that get turned into
// transparent holes in the browser compositor using overlay system.
class MEDIA_EXPORT VideoOverlayFactory {
 public:
  VideoOverlayFactory();

  VideoOverlayFactory(const VideoOverlayFactory&) = delete;
  VideoOverlayFactory& operator=(const VideoOverlayFactory&) = delete;

  ~VideoOverlayFactory();

  scoped_refptr<::media::VideoFrame> CreateFrame(const gfx::Size& size);
  const base::UnguessableToken& overlay_plane_id() const {
    return overlay_plane_id_;
  }

 private:
  // |overlay_plane_id_| identifies the instances of VideoOverlayFactory.
  const base::UnguessableToken overlay_plane_id_;
};

}  // namespace media

#endif  // MEDIA_RENDERERS_VIDEO_OVERLAY_FACTORY_H_