From de7345f8ae94aad28933e5d5015f330c321c8707 Mon Sep 17 00:00:00 2001 From: Gilbok Lee Date: Thu, 4 May 2023 15:04:49 +0900 Subject: [PATCH] Add preroll-handoff signal - There is a problem that the first screen is not visible in the prepared done state [Version] 0.0.26 Change-Id: Id444c63885564732460f057e24b8c41d270fa53d --- packaging/libtrackrenderer.spec | 2 +- src/include_internal/trackrenderer/trackrenderer.h | 3 +++ src/trackrenderer.cpp | 13 ++++++++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packaging/libtrackrenderer.spec b/packaging/libtrackrenderer.spec index c47b75c..7fc6963 100644 --- a/packaging/libtrackrenderer.spec +++ b/packaging/libtrackrenderer.spec @@ -1,6 +1,6 @@ Name: libtrackrenderer Summary: new multimedia streaming player trackrenderer -Version: 0.0.25 +Version: 0.0.26 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/include_internal/trackrenderer/trackrenderer.h b/src/include_internal/trackrenderer/trackrenderer.h index 817cdb2..e921da8 100644 --- a/src/include_internal/trackrenderer/trackrenderer.h +++ b/src/include_internal/trackrenderer/trackrenderer.h @@ -268,6 +268,9 @@ class TrackRenderer : public ResourceConflictListener, static gboolean GstAudioDrmInitDataCb_(int* drmhandle, unsigned int len, unsigned char* psshdata, void* userdata); + static void GstPrerollDecodedVideoBufferCb_(GstElement* element, + GstBuffer* buffer, GstPad* pad, + void* userdata); static void GstDecodedVideoBufferCb_(GstElement* element, GstBuffer* buffer, GstPad* pad, void* userdata); diff --git a/src/trackrenderer.cpp b/src/trackrenderer.cpp index 32c42e2..a558d71 100644 --- a/src/trackrenderer.cpp +++ b/src/trackrenderer.cpp @@ -1077,9 +1077,12 @@ bool TrackRenderer::CreateVideoPipeline_(const Track* track) { } if (videosink_name && - (strstr(videosink_name, "fakesink") || strstr(videosink_name, "tizenwlsink"))) + (strstr(videosink_name, "fakesink") || strstr(videosink_name, "tizenwlsink"))) { + pipeline_->SignalConnect(Elements::kSinkVideo, "preroll-handoff", + G_CALLBACK(GstPrerollDecodedVideoBufferCb_), this); pipeline_->SignalConnect(Elements::kSinkVideo, "handoff", G_CALLBACK(GstDecodedVideoBufferCb_), this); + } if (internal::IsVideoDecodedBufferNeeded(decoded_buffer_type_)) { CreateTbmBufferManager_(track); @@ -1777,6 +1780,14 @@ void TrackRenderer::GstElementCreatedCb_(Elements element) { } } +void TrackRenderer::GstPrerollDecodedVideoBufferCb_(GstElement* element, + GstBuffer* buffer, + GstPad* pad, + void* userdata) { + TRACKRENDERER_DEBUG("Preroll decoded buffer"); + GstDecodedVideoBufferCb_(element, buffer, pad, userdata); +} + void TrackRenderer::GstDecodedVideoBufferCb_(GstElement* element, GstBuffer* buffer, GstPad* pad, -- 2.7.4