//
// 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) {
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;
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
#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)
}
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();
};
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
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";
}
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";
}
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) {
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
uint32_t serial);
void CommitFeedbackFinish(uint32_t serial);
+ bool RenderFrame(FrameInfo* frame_info);
+
ui::OutputSurface::Plane plane_;
wl_display* display_;