From: Gilbok Lee Date: Tue, 25 Jul 2023 05:57:18 +0000 (+0900) Subject: Add Requested First Render Frame event type X-Git-Tag: accepted/tizen/7.0/unified/20230814.122349^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F02%2F296302%2F7;p=platform%2Fcore%2Fmultimedia%2Ftrackrenderer.git Add Requested First Render Frame event type [Version] 0.0.28 [Issue Type] Add features Change-Id: I270524ccb0058ed639330b5eb16572c42ee1ccc9 --- diff --git a/include/trackrenderer_capi/trackrenderer_capi.h b/include/trackrenderer_capi/trackrenderer_capi.h index d806c34..4de1414 100644 --- a/include/trackrenderer_capi/trackrenderer_capi.h +++ b/include/trackrenderer_capi/trackrenderer_capi.h @@ -64,6 +64,7 @@ typedef struct { enum TrackRendererEventType { kTrackRendererEventTypeNone, kTrackRendererEventTypeResolutionChanged, + kTrackrendererEventTypeRequestedFirstRenderFrame, }; typedef void* TrackRendererHandle; diff --git a/packaging/libtrackrenderer.spec b/packaging/libtrackrenderer.spec index ca79237..224d4ce 100644 --- a/packaging/libtrackrenderer.spec +++ b/packaging/libtrackrenderer.spec @@ -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 diff --git a/src/include_internal/trackrenderer/core/event.h b/src/include_internal/trackrenderer/core/event.h index 275eca4..dc07b13 100644 --- a/src/include_internal/trackrenderer/core/event.h +++ b/src/include_internal/trackrenderer/core/event.h @@ -1,59 +1,60 @@ -/** - * @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, -}; - -} // namespace trackrenderer - -} // namespace plusplayer - -#endif // __PLUSPLAYER_TRACKRENDERER_CORE_EVENT_H__ +/** + * @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__ diff --git a/src/trackrenderer.cpp b/src/trackrenderer.cpp index 0806c61..0c85e5e 100644 --- a/src/trackrenderer.cpp +++ b/src/trackrenderer.cpp @@ -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: { diff --git a/src/trackrenderer_capi_utils.cpp b/src/trackrenderer_capi_utils.cpp index a4e5669..ac341d4 100644 --- a/src/trackrenderer_capi_utils.cpp +++ b/src/trackrenderer_capi_utils.cpp @@ -536,6 +536,9 @@ TrackRendererEventType ConvertToTrackRendererEventType(const EventType& event){ case EventType::kResolutionChanged:{ return kTrackRendererEventTypeResolutionChanged; } + case EventType::kRequestedFirstRenderFrame: { + return kTrackrendererEventTypeRequestedFirstRenderFrame; + } default: return kTrackRendererEventTypeNone; }