Upload upstream chromium 120.0.6099.5
[platform/framework/web/chromium-efl.git] / media / renderers / video_overlay_factory.cc
1 // Copyright 2015 The Chromium Authors
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/renderers/video_overlay_factory.h"
6
7 #include "base/logging.h"
8 #include "base/time/time.h"
9 #include "media/base/video_frame.h"
10 #include "ui/gfx/geometry/size.h"
11
12 namespace media {
13
14 VideoOverlayFactory::VideoOverlayFactory()
15     : overlay_plane_id_(base::UnguessableToken::Create()) {}
16
17 VideoOverlayFactory::~VideoOverlayFactory() = default;
18
19 scoped_refptr<VideoFrame> VideoOverlayFactory::CreateFrame(
20     const gfx::Size& size) {
21   // Frame size empty => video has one dimension = 0.
22   // Dimension 0 case triggers a DCHECK later on if we push through the overlay
23   // path.
24   if (size.IsEmpty()) {
25     DVLOG(1) << "Create black frame " << size.width() << "x" << size.height();
26     return VideoFrame::CreateBlackFrame(gfx::Size(1, 1));
27   }
28
29   DVLOG(2) << "Create video overlay frame: " << size.ToString();
30   scoped_refptr<VideoFrame> frame =
31       VideoFrame::CreateVideoHoleFrame(overlay_plane_id_,
32                                        size,                // natural size
33                                        base::TimeDelta());  // timestamp
34   DCHECK(frame);
35   return frame;
36 }
37
38 }  // namespace media