[M120 Migration][MM][WebRTC] Base implementation for webrtc video hole stream
[platform/framework/web/chromium-efl.git] / cc / layers / video_layer_impl.h
index 4b3646b..237fc8c 100644 (file)
@@ -1,17 +1,24 @@
-// Copyright 2012 The Chromium Authors. All rights reserved.
+// Copyright 2012 The Chromium Authors
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
 #ifndef CC_LAYERS_VIDEO_LAYER_IMPL_H_
 #define CC_LAYERS_VIDEO_LAYER_IMPL_H_
 
+#include <memory>
 #include <vector>
 
-#include "base/macros.h"
 #include "cc/cc_export.h"
 #include "cc/layers/layer_impl.h"
 #include "components/viz/common/resources/release_callback.h"
-#include "media/base/video_rotation.h"
+#include "media/base/video_transformation.h"
+
+#if defined(TIZEN_TBM_SUPPORT)
+#include "components/viz/common/gpu/context_provider.h"
+#endif
+#if defined(TIZEN_VIDEO_HOLE)
+#include "ui/gfx/geometry/rect.h"
+#endif
 
 namespace media {
 class VideoFrame;
@@ -30,41 +37,86 @@ class CC_EXPORT VideoLayerImpl : public LayerImpl {
       LayerTreeImpl* tree_impl,
       int id,
       VideoFrameProvider* provider,
-      media::VideoRotation video_rotation);
+      const media::VideoTransformation& video_transform
+#if defined(TIZEN_VIDEO_HOLE) && BUILDFLAG(IS_TIZEN_TV)
+      ,
+      absl::optional<int> player_id
+#endif
+  );
+  VideoLayerImpl(const VideoLayerImpl&) = delete;
   ~VideoLayerImpl() override;
 
+  VideoLayerImpl& operator=(const VideoLayerImpl&) = delete;
+
   // LayerImpl implementation.
-  std::unique_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) override;
+  std::unique_ptr<LayerImpl> CreateLayerImpl(
+      LayerTreeImpl* tree_impl) const override;
   bool WillDraw(DrawMode draw_mode,
                 viz::ClientResourceProvider* resource_provider) override;
-  void AppendQuads(viz::RenderPass* render_pass,
+  void AppendQuads(viz::CompositorRenderPass* render_pass,
                    AppendQuadsData* append_quads_data) override;
   void DidDraw(viz::ClientResourceProvider* resource_provider) override;
   SimpleEnclosedRegion VisibleOpaqueRegion() const override;
   void DidBecomeActive() override;
   void ReleaseResources() override;
+  gfx::ContentColorUsage GetContentColorUsage() const override;
+#if defined(TIZEN_VIDEO_HOLE)
+  int render_target_effect_tree_index() const override;
+#if BUILDFLAG(IS_TIZEN_TV)
+  absl::optional<int> GetVideoId() const override;
+#endif  //  BUILDFLAG(IS_TIZEN_TV)
+#endif
 
   void SetNeedsRedraw();
-  media::VideoRotation video_rotation() const { return video_rotation_; }
+
+  media::VideoTransformation video_transform_for_testing() const {
+    return video_transform_;
+  }
+
+#if BUILDFLAG(IS_EFL)
+  LayerType GetLayerType() const override { return LAYER_TYPE_VIDEO; }
+#endif
 
  private:
   VideoLayerImpl(
       LayerTreeImpl* tree_impl,
       int id,
       scoped_refptr<VideoFrameProviderClientImpl> provider_client_impl,
-      media::VideoRotation video_rotation);
+      const media::VideoTransformation& video_transform
+#if defined(TIZEN_VIDEO_HOLE) && BUILDFLAG(IS_TIZEN_TV)
+      ,
+      absl::optional<int> player_id
+#endif
+  );
 
   const char* LayerTypeAsString() const override;
 
+#if defined(TIZEN_TBM_SUPPORT)
+  void OnVideoCompositingFinished(
+      const scoped_refptr<media::VideoFrame> video_frame,
+      const gpu::SyncToken& sync_token,
+      bool lost_resource);
+#endif
+#if defined(TIZEN_VIDEO_HOLE)
+  gfx::Rect previous_visible_rect_;
+#endif
+
   scoped_refptr<VideoFrameProviderClientImpl> provider_client_impl_;
 
   scoped_refptr<media::VideoFrame> frame_;
 
-  media::VideoRotation video_rotation_;
+  media::VideoTransformation video_transform_;
 
-  std::unique_ptr<media::VideoResourceUpdater> updater_;
+#if defined(TIZEN_VIDEO_HOLE) && BUILDFLAG(IS_TIZEN_TV)
+  absl::optional<int> player_id_;
+#endif
 
-  DISALLOW_COPY_AND_ASSIGN(VideoLayerImpl);
+#if defined(TIZEN_TBM_SUPPORT)
+  scoped_refptr<viz::ContextProvider> context_provider_;
+  viz::ResourceId resource_id_;
+#endif
+
+  std::unique_ptr<media::VideoResourceUpdater> updater_;
 };
 
 }  // namespace cc