Add Requested First Render Frame event type 02/296302/7
authorGilbok Lee <gilbok.lee@samsung.com>
Tue, 25 Jul 2023 05:57:18 +0000 (14:57 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Wed, 9 Aug 2023 08:31:37 +0000 (17:31 +0900)
[Version] 0.0.28
[Issue Type] Add features

Change-Id: I270524ccb0058ed639330b5eb16572c42ee1ccc9

include/trackrenderer_capi/trackrenderer_capi.h
packaging/libtrackrenderer.spec
src/include_internal/trackrenderer/core/event.h
src/trackrenderer.cpp
src/trackrenderer_capi_utils.cpp

index d806c3439ea68f9cbbb77e94cb1c7068a0117c8d..4de14144770967e89dd6e2cdcb4bf5ed71f5d949 100644 (file)
@@ -64,6 +64,7 @@ typedef struct {
 enum TrackRendererEventType {
   kTrackRendererEventTypeNone,
   kTrackRendererEventTypeResolutionChanged,
+  kTrackrendererEventTypeRequestedFirstRenderFrame,
 };
 
 typedef void* TrackRendererHandle;
index ca79237a609a8b7de772a0dde54d4b83c8d3690a..224d4ce66448d3faf2ad382e590f0493db1fe8a6 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libtrackrenderer
 Summary:    new multimedia streaming player trackrenderer
-Version:    0.0.27
+Version:    0.0.28
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 275eca4d84858e0f71eafc645e250f7c2e89fcb3..dc07b1397f23827af5c65c42f439b400d82e285a 100644 (file)
@@ -1,59 +1,60 @@
-/**\r
- * @file\r
- * @brief          The event for playback.\r
- * @interfacetype  Module\r
- * @privlevel      None-privilege\r
- * @privilege      None\r
- * @product        TV, AV, B2B\r
- * @version        1.0\r
- * @SDK_Support    N\r
- * @remark         This is a group of C style event related enum and structure.\r
- * @see            N/A\r
- *\r
- * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved\r
- * PROPRIETARY/CONFIDENTIAL\r
- * This software is the confidential and proprietary\r
- * information of SAMSUNG ELECTRONICS ("Confidential Information"). You shall\r
- * not disclose such Confidential Information and shall use it only in\r
- * accordance with the terms of the license agreement you entered into with\r
- * SAMSUNG ELECTRONICS. SAMSUNG make no representations or warranties about the\r
- * suitability of the software, either express or implied, including but not\r
- * limited to the implied warranties of merchantability, fitness for a\r
- * particular purpose, or non-infringement. SAMSUNG shall not be liable for any\r
- * damages suffered by licensee as a result of using, modifying or distributing\r
- * this software or its derivatives.\r
- */\r
-\r
-#ifndef __PLUSPLAYER_TRACKRENDERER_CORE_EVENT_H__\r
-#define __PLUSPLAYER_TRACKRENDERER_CORE_EVENT_H__\r
-\r
-namespace plusplayer {\r
-\r
-namespace trackrenderer {\r
-/**\r
- * @brief\r
- */\r
-typedef struct {\r
-  /**\r
-   * @description\r
-   */\r
-  std::string data;\r
-  /**\r
-   * @description\r
-   */\r
-  uint64_t len;\r
-} EventMsg;\r
-\r
-/**\r
- * @brief\r
- */\r
-enum class EventType {\r
-  kNone,\r
-  kResolutionChanged,\r
-};\r
-\r
-}  // namespace trackrenderer\r
-\r
-}  // namespace plusplayer\r
-\r
-#endif  // __PLUSPLAYER_TRACKRENDERER_CORE_EVENT_H__\r
+/**
+ * @file
+ * @brief          The event for playback.
+ * @interfacetype  Module
+ * @privlevel      None-privilege
+ * @privilege      None
+ * @product        TV, AV, B2B
+ * @version        1.0
+ * @SDK_Support    N
+ * @remark         This is a group of C style event related enum and structure.
+ * @see            N/A
+ *
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
+ * PROPRIETARY/CONFIDENTIAL
+ * This software is the confidential and proprietary
+ * information of SAMSUNG ELECTRONICS ("Confidential Information"). You shall
+ * not disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license agreement you entered into with
+ * SAMSUNG ELECTRONICS. SAMSUNG make no representations or warranties about the
+ * suitability of the software, either express or implied, including but not
+ * limited to the implied warranties of merchantability, fitness for a
+ * particular purpose, or non-infringement. SAMSUNG shall not be liable for any
+ * damages suffered by licensee as a result of using, modifying or distributing
+ * this software or its derivatives.
+ */
+
+#ifndef __PLUSPLAYER_TRACKRENDERER_CORE_EVENT_H__
+#define __PLUSPLAYER_TRACKRENDERER_CORE_EVENT_H__
+
+namespace plusplayer {
+
+namespace trackrenderer {
+/**
+ * @brief
+ */
+typedef struct {
+  /**
+   * @description
+   */
+  std::string data;
+  /**
+   * @description
+   */
+  uint64_t len;
+} EventMsg;
+
+/**
+ * @brief
+ */
+enum class EventType {
+  kNone,
+  kResolutionChanged,
+  kRequestedFirstRenderFrame,
+};
+
+}  // namespace trackrenderer
+
+}  // namespace plusplayer
+
+#endif  // __PLUSPLAYER_TRACKRENDERER_CORE_EVENT_H__
index 0806c6136a48be694d83744f8d3ce6a2186ccbe8..0c85e5e7314cecd916e0fb5cd9b8eef3bfc27150 100644 (file)
@@ -1627,6 +1627,19 @@ GstBusSyncReply TrackRenderer::GstBusSyncHandlerCb_(GstBus* bus,
     }  // case GST_MESSAGE_STATE_CHANGED
     case GST_MESSAGE_ELEMENT: {
       TRACKRENDERER_INFO("GST_MESSAGE_ELEMENT");
+      std::string struct_name =
+          gst_structure_get_name(gst_message_get_structure(message));
+      if (struct_name == "requested_first_render_frame") {
+        TRACKRENDERER_DEBUG("got first render frame event");
+        if (trackrenderer->low_latency_mode_ & kLowLatencyModeDisableAVSync ||
+            trackrenderer->low_latency_mode_ & kLowLatencyModeDisablePreroll) {
+          EventMsg event_msg;
+          event_msg.data = "requested first render frame";
+          event_msg.len = event_msg.data.length();
+          trackrenderer->eventlistener_->OnEvent(
+              EventType::kRequestedFirstRenderFrame, event_msg);
+        }
+      }
       break;
     }  // case GST_MESSAGE_ELEMENT
     case GST_MESSAGE_ASYNC_DONE: {
index a4e56690cd40c1149fb3e80da9c649434731ca92..ac341d4c22f2b9db91ada019311b3170a2b18632 100644 (file)
@@ -536,6 +536,9 @@ TrackRendererEventType ConvertToTrackRendererEventType(const EventType& event){
     case EventType::kResolutionChanged:{
       return kTrackRendererEventTypeResolutionChanged;
     }
+    case EventType::kRequestedFirstRenderFrame: {
+      return kTrackrendererEventTypeRequestedFirstRenderFrame;
+    }
     default:
       return kTrackRendererEventTypeNone;
   }