Add preroll-handoff signal 34/292334/1 accepted/tizen/unified/20230505.134417
authorGilbok Lee <gilbok.lee@samsung.com>
Thu, 4 May 2023 06:04:49 +0000 (15:04 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Thu, 4 May 2023 06:04:51 +0000 (15:04 +0900)
- 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
src/include_internal/trackrenderer/trackrenderer.h
src/trackrenderer.cpp

index c47b75c..7fc6963 100644 (file)
@@ -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
index 817cdb2..e921da8 100644 (file)
@@ -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);
index 32c42e2..a558d71 100644 (file)
@@ -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,