// 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.

#include "media/renderers/video_overlay_factory.h"

#include "base/logging.h"
#include "base/time/time.h"
#include "media/base/video_frame.h"
#include "ui/gfx/geometry/size.h"

namespace media {

VideoOverlayFactory::VideoOverlayFactory()
    : overlay_plane_id_(base::UnguessableToken::Create()) {}

VideoOverlayFactory::~VideoOverlayFactory() = default;

scoped_refptr<VideoFrame> VideoOverlayFactory::CreateFrame(
    const gfx::Size& size) {
  // Frame size empty => video has one dimension = 0.
  // Dimension 0 case triggers a DCHECK later on if we push through the overlay
  // path.
  if (size.IsEmpty()) {
    DVLOG(1) << "Create black frame " << size.width() << "x" << size.height();
    return VideoFrame::CreateBlackFrame(gfx::Size(1, 1));
  }

  DVLOG(2) << "Create video overlay frame: " << size.ToString();
  scoped_refptr<VideoFrame> frame =
      VideoFrame::CreateVideoHoleFrame(overlay_plane_id_,
                                       size,                // natural size
                                       base::TimeDelta());  // timestamp
  DCHECK(frame);
  return frame;
}

}  // namespace media
