fixup!^2 [TTVD] Use PPI headers for DP/renderer 19/318519/4
authorJakub Gajownik <j.gajownik2@samsung.com>
Fri, 27 Sep 2024 08:46:41 +0000 (10:46 +0200)
committerBot Blink <blinkbot@samsung.com>
Tue, 1 Oct 2024 21:18:33 +0000 (21:18 +0000)
Some places were omitted in previous change. Additionally
new structure is now deprecated - VideoSink_DecInfo and
shouldn't also be used on newer platforms.

Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-580
Change-Id: I3bb2bf53712db8c2435c7ee0148187208dabc175
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
tizen_src/chromium_impl/ui/ozone/platform/efl/video_rendering_direct.cc
tizen_src/chromium_impl/ui/ozone/platform/efl/video_rendering_direct.h
tizen_src/chromium_impl/ui/ozone/platform/efl/video_rendering_software.cc
tizen_src/chromium_impl/ui/ozone/platform/efl/video_rendering_software.h
tizen_src/chromium_impl/ui/ozone/platform/efl/video_surface.cc
tizen_src/chromium_impl/ui/ozone/platform/efl/video_surface.h

index 09f8bff5246dee18d50d17ac7890e362a9d3cef9..d3dff30a3444babb130a48d75d40ab7e4fbd2103 100644 (file)
@@ -28,7 +28,10 @@ gfx::TbmBOType VideoRenderingDirect::PreparePlane(
   //
   // Here, we don't care about the exact content of video metadata structure,
   // we just need proper |reserved| to be set.
-#if TIZEN_VERSION_AT_LEAST(7, 0, 0)
+#if TIZEN_VERSION_AT_LEAST(9, 0, 0) && !BUILDFLAG(IS_RISCV64_TV)
+  // |v4l2_info_| is not used with new PPI, so no need to obtain buffer
+  // metadata at all.
+#elif TIZEN_VERSION_AT_LEAST(7, 0, 0)
   VideoSink_DecInfo dec_info{};
   if (videoRenderCtrl_getBufferMetaData(video_sink, &dec_info,
                                         v4l2_info_.data()) != 0) {
@@ -53,21 +56,17 @@ void VideoRenderingDirect::PrepareForRenderingFrame(
     FrameInfo* frame_info,
     const gfx::OverlayRenderData& render_data) {
 #if TIZEN_VERSION_AT_LEAST(9, 0, 0) && !BUILDFLAG(IS_RISCV64_TV)
-  using VideoBufMetadata = ppi_renderer_video_buf_meta_data_s;
+  frame_info->dmabuf_fd = render_data.plane_id;
 #else
-  using VideoBufMetadata = IVideoRenderer::VideoBufMetaData;
-#endif  // TIZEN_VERSION_AT_LEAST(9, 0, 0)
-
-  auto* video_metadata = reinterpret_cast<VideoBufMetadata*>(v4l2_info_.data());
+  auto* video_metadata =
+      reinterpret_cast<IVideoRenderer::VideoBufMetaData*>(v4l2_info_.data());
   video_metadata->plane = render_data.plane_id;
-
-#if TIZEN_VERSION_AT_LEAST(9, 0, 0) && !BUILDFLAG(IS_RISCV64_TV)
-  frame_info->dmabuf_fd = render_data.plane_id;
-#elif TIZEN_VERSION_AT_LEAST(8, 0, 0)
+#if TIZEN_VERSION_AT_LEAST(8, 0, 0)
   frame_info->v4l2_ptr = v4l2_info_.data();
 #else
   frame_info->metadata = video_metadata;
-#endif
+#endif  // TIZEN_VERSION_AT_LEAST(8, 0, 0)
+#endif  // TIZEN_VERSION_AT_LEAST(9, 0, 0) && !BUILDFLAG(IS_RISCV64_TV)
 
   // Do not set seamless resolution for now.
   frame_info->max_hres = -1;
index 51a93a61a5ac474f0744820b62bdf9be682fe3b3..0abf30b2cde2bdbc5907384ec6dd858477b67792 100644 (file)
@@ -35,7 +35,11 @@ class VideoRenderingDirect : public VideoRendering {
       const gfx::OverlayRenderData& render_data) override;
 
  private:
+#if TIZEN_VERSION_AT_LEAST(9, 0, 0) && !BUILDFLAG(IS_RISCV64_TV)
+  // Since API has changed there is no need for |dec_info_| right now.
+#else
   std::array<uint8_t, kMetaBufferSize> v4l2_info_;
+#endif  // TIZEN_VERSION_AT_LEAST(9, 0, 0) && !BUILDFLAG(IS_RISCV64_TV)
 };
 
 }  // namespace ui
index a0aeb9da0b4efb4e8ef806887fe9b8cdfc8ff065..ba1e187646ef7750aec649eef5761271dc6e2497 100644 (file)
@@ -14,6 +14,7 @@
 
 #if TIZEN_VERSION_AT_LEAST(9, 0, 0) && !BUILDFLAG(IS_RISCV64_TV)
 #include <ppi-video-dp-control.h>
+#include <ppi-video-renderer.h>
 #else
 #include <ivideo-dp-control.hpp>
 #endif  // TIZEN_VERSION_AT_LEAST(9, 0, 0)
@@ -129,7 +130,21 @@ gfx::TbmBOType VideoRenderingSoftware::PreparePlane(
   }
 
   constexpr const uint32_t kInvalidDisplayIndex = 0xffffffff;
-#if TIZEN_VERSION_AT_LEAST(7, 0, 0)
+#if TIZEN_VERSION_AT_LEAST(9, 0, 0) && !BUILDFLAG(IS_RISCV64_TV)
+  ppi_renderer_video_frame_info_s video_frame_info{};
+  video_frame_info.width = render_data.picture_size.width();
+  video_frame_info.height = render_data.picture_size.height();
+  video_frame_info.framerate = kDefaultFramerate;
+  video_frame_info.color_format = PPI_VID_CTRL_COLOR_FORMAT_YUV420;
+  video_frame_info.scan_type = kProgressiveScanType;
+  video_frame_info.display_index = kInvalidDisplayIndex;
+  if (ppi_video_renderer_get_sw_dec_data(PlaneToScalerIndex(plane_),
+                                         &video_frame_info, tbm_bo->Memory(),
+                                         kMetaBufferSize) != 0) {
+    TIZEN_MEDIA_LOG(ERROR) << "Error when setting SW renderer metadata";
+    return nullptr;
+  }
+#elif TIZEN_VERSION_AT_LEAST(7, 0, 0)
   VideoSink_DecInfo dec_info{};
   dec_info.width = render_data.picture_size.width();
   dec_info.height = render_data.picture_size.height();
index 4ce9c41fe1d118c2cd89f737d5ad669a6a5497cf..573463914cac83b236c82fbc41eabe0f966b788b 100644 (file)
@@ -44,11 +44,13 @@ class VideoRenderingSoftware : public VideoRendering {
   };
   std::vector<DisplayBuffers> display_buffers_;
 
-#if TIZEN_VERSION_AT_LEAST(8, 0, 0)
+#if TIZEN_VERSION_AT_LEAST(9, 0, 0) && !BUILDFLAG(IS_RISCV64_TV)
+  // Since API has changed there is no need for |dec_info_| right now.
+#elif TIZEN_VERSION_AT_LEAST(8, 0, 0)
   VideoCtrlDecInfo_s dec_info_;
 #else
   IVideoSWDec::DecInfo dec_info_;
-#endif  // TIZEN_VERSION_AT_LEAST(8, 0, 0)
+#endif  // TIZEN_VERSION_AT_LEAST(9, 0, 0) && !BUILDFLAG(IS_RISCV64_TV)
 };
 
 }  // namespace ui
index cc2d4f1fa3d23ca3c0da5ed55649de877d3d6e87..f94f39860e1ba2f89e9ca9c08b6a102e88c9cb36 100644 (file)
@@ -108,7 +108,8 @@ VideoSurface::~VideoSurface() {
   if (last_plane_id_.has_value() && video_sink_ != nullptr) {
     // Ensure that we're clearing plane pinned to video surface, to ensure
     // that next created surface will be rendered properly.
-    if (videoRenderCtrl_renderFrame(video_sink_.get(), nullptr) != 0) {
+
+    if (!RenderFrame(nullptr)) {
       TIZEN_MEDIA_LOG(ERROR)
           << "Error when reseting video surface for same plane";
     }
@@ -519,10 +520,11 @@ void VideoSurface::PreparePlane(const gfx::OverlayRenderData& render_data,
   full_commit_pending_ = true;
 
   // In case of same |plane_id| used, we need to ensure that framebuffer is
-  // recreated correctly. To do that, use nullptr as data for |renderFrame|.
+  // recreated correctly. To do that, use nullptr as data for |RenderFrame|.
   if (last_plane_id_ == render_data.plane_id) {
     TIZEN_MEDIA_LOG(INFO) << "Reset video surface for same plane";
-    if (videoRenderCtrl_renderFrame(video_sink_.get(), nullptr) != 0) {
+
+    if (!RenderFrame(nullptr)) {
       TIZEN_MEDIA_LOG(ERROR)
           << "Error when reseting video surface for same plane";
     }
@@ -565,12 +567,7 @@ bool VideoSurface::RenderPlane(const gfx::OverlayRenderData& render_data,
 
   FrameInfo frame_info{};
   renderer->PrepareForRenderingFrame(&frame_info, render_data);
-
-#if TIZEN_VERSION_AT_LEAST(9, 0, 0) && !BUILDFLAG(IS_RISCV64_TV)
-  return videoRenderCtrl_frameRender(video_sink_.get(), &frame_info) == 0;
-#else
-  return videoRenderCtrl_renderFrame(video_sink_.get(), &frame_info) == 0;
-#endif  // TIZEN_VERSION_AT_LEAST(9, 0, 0)
+  return RenderFrame(&frame_info);
 }
 
 bool VideoSurface::SetPreResolution(const avoc_tpt_resolution_s& data) {
@@ -686,4 +683,12 @@ gfx::Size VideoSurface::GraphicsPlaneSize() {
   return gfx::Size{kDefaultGraphicsWidth, kDefaultGraphicsHeight};
 }
 
+bool VideoSurface::RenderFrame(FrameInfo* frame_info) {
+#if TIZEN_VERSION_AT_LEAST(9, 0, 0) && !BUILDFLAG(IS_RISCV64_TV)
+  return videoRenderCtrl_frameRender(video_sink_.get(), frame_info) == 0;
+#else
+  return videoRenderCtrl_renderFrame(video_sink_.get(), frame_info) == 0;
+#endif  // TIZEN_VERSION_AT_LEAST(9, 0, 0)
+}
+
 }  // namespace ui
index 0538c1eb121a32a4fde9bab32e8886ce33203e97..8ea93c2e7df4073bb34ebc36c5117acd7f2ce3db 100644 (file)
@@ -100,6 +100,8 @@ class VideoSurface {
       uint32_t serial);
   void CommitFeedbackFinish(uint32_t serial);
 
+  bool RenderFrame(FrameInfo* frame_info);
+
   ui::OutputSurface::Plane plane_;
 
   wl_display* display_;