From: Gilbok Lee Date: Thu, 4 May 2023 06:04:49 +0000 (+0900) Subject: Add preroll-handoff signal X-Git-Tag: accepted/tizen/unified/20230505.134417^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F34%2F292334%2F1;p=platform%2Fcore%2Fmultimedia%2Ftrackrenderer.git 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 --- 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,