Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
d8f6b7c
Merge pull request #52 from rdkcentral/feature/RDKEMW-9809
balasaraswathy-n Dec 13, 2025
c90d369
sync
Dec 15, 2025
e3e2442
Merge pull request #58 from rdkcentral/main
narenr94 Dec 15, 2025
13a00f1
2.11.0 sync
Dec 16, 2025
d6192cf
vendor fix
Dec 16, 2025
d230abe
vendor fix 02
Dec 16, 2025
18c73ec
sync
Dec 17, 2025
773a18e
sync
Dec 17, 2025
beeb932
run.sh update
Dec 18, 2025
32dac80
remove gstreamer-video-1.0
Dec 23, 2025
69f23c9
revert remove gstreamer-video-1.0
Dec 23, 2025
11e2321
RDKEMW-11877 : Metrics Collection for Player Interface Public APIs
Nejuma28 Jan 7, 2026
c564720
Adding necessary headers
Nejuma28 Jan 7, 2026
d257d45
Adding option for conditional compilation
Nejuma28 Jan 7, 2026
650f5bf
Fixing compilation issues
Nejuma28 Jan 8, 2026
8f0792a
Add taglib compatibility header
rekhap2kandhavelan Jan 8, 2026
e579971
Adding profiling function to public APIs
Nejuma28 Jan 12, 2026
03052c7
Add include path for taglib compatibility header and resolve sssl pac…
rekhap2kandhavelan Jan 8, 2026
19b30cd
Update FakeGStreamer.cpp
rekhap2kandhavelan Jan 21, 2026
8b48ce8
Update scripts/install_gstreamer.sh
rekhap2kandhavelan Jan 21, 2026
71b8104
Update test/utests/tests/GstPlayer/CMakeLists.txt
rekhap2kandhavelan Jan 21, 2026
d2589b1
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 22, 2026
d1e5351
Update scripts/taglib_compat.h
rekhap2kandhavelan Jan 22, 2026
226ed3f
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 22, 2026
42fd35f
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 22, 2026
e8bd8c0
Update test/utests/tests/GstPlayer/CMakeLists.txt
rekhap2kandhavelan Jan 22, 2026
85ec78a
Update scripts/taglib_compat.h
rekhap2kandhavelan Jan 22, 2026
ca743e0
resolve conflict
rkandh015 Jan 22, 2026
6328160
Update CMakeLists.txt
rekhap2kandhavelan Jan 22, 2026
99b156d
Update test/utests/tests/PluginsTests/CMakeLists.txt
rekhap2kandhavelan Jan 22, 2026
025076e
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
1a7bf29
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
c6de14e
Update scripts/install_gstreamer.sh
rekhap2kandhavelan Jan 23, 2026
225061f
Update scripts/taglib_compat.h
rekhap2kandhavelan Jan 23, 2026
6a4b3b1
Update scripts/install_subtec.sh
rekhap2kandhavelan Jan 23, 2026
d2d123b
Update scripts/install_subtec.sh
rekhap2kandhavelan Jan 23, 2026
cc7ce25
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
3942ded
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
6045701
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
abe935b
Update test/utests/mocks/MockGstUtils.h
rekhap2kandhavelan Jan 23, 2026
6c7d6ad
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
95b6cc7
Addressed copilot review
rekhap2kandhavelan Jan 23, 2026
e044d63
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
a606813
Update scripts/install_gstreamer.sh
rekhap2kandhavelan Jan 23, 2026
a0d1955
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
f5926b2
Update CMakeLists.txt
rekhap2kandhavelan Jan 23, 2026
a356d1c
Update CMakeLists.txt
rekhap2kandhavelan Jan 23, 2026
3d04d8c
Update install_gstreamer.sh
rekhap2kandhavelan Jan 23, 2026
a14be93
Update install_subtec.sh
rekhap2kandhavelan Jan 23, 2026
8133c5f
Update test/utests/tests/PluginsTests/CMakeLists.txt
rekhap2kandhavelan Jan 23, 2026
a248a60
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
344ec4a
Update test/utests/tests/GstPlayer/CMakeLists.txt
rekhap2kandhavelan Jan 23, 2026
004c310
Update test/utests/tests/GstPlayer/CMakeLists.txt
rekhap2kandhavelan Jan 23, 2026
119dcf0
Update test/utests/tests/PluginsTests/CMakeLists.txt
rekhap2kandhavelan Jan 23, 2026
0565c4c
Update scripts/taglib_compat.h
rekhap2kandhavelan Jan 23, 2026
b613a33
Update test/utests/tests/PluginsTests/CMakeLists.txt
rekhap2kandhavelan Jan 23, 2026
2832cdd
Update scripts/install_subtec.sh
rekhap2kandhavelan Jan 23, 2026
2e288b7
Update test/utests/mocks/MockGStreamer.h
rekhap2kandhavelan Jan 23, 2026
6d327d1
Update test/utests/fakes/FakeGstUtils.cpp
rekhap2kandhavelan Jan 23, 2026
ba53f3e
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
fe65678
Update FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
9f61afd
Update ClearKeyDrmSessionTests.cpp
rekhap2kandhavelan Jan 23, 2026
bab8db1
Merge branch 'main' into feature/RDKEMW-11881
pstroffolino Jan 27, 2026
1c8bb91
rebase with feature/RDKEMW-11881 branch
rkandh015 Jan 28, 2026
f6487b3
rebase with feature/RDKEMW-11881 branch
rkandh015 Jan 28, 2026
e8e0448
Merge branch 'feature/RDKEMW-11934_TagAamp' of https://github.com/rdk…
rkandh015 Jan 28, 2026
534d480
Update CMakeLists.txt
rekhap2kandhavelan Jan 29, 2026
047319d
Update CMakeLists.txt
rekhap2kandhavelan Jan 29, 2026
6cef0de
aamp 11881 sync
Jan 29, 2026
c3310d2
auto generate pc files
Jan 29, 2026
2618f4d
Update PlayerExternalsInterface.cpp to include PerfProfiler.h
nejuma1 Jan 29, 2026
7161fc8
Update ContentSecurityManager.cpp to include PerfProfiler.h
nejuma1 Jan 29, 2026
f96a7c3
pc files name fix
Jan 29, 2026
ac1c8ef
pc files req fix
Jan 29, 2026
f9e53b4
log to indicate lib externally built for player
Jan 29, 2026
dd75ba1
Merge pull request #70 from rdkcentral/feature/RDKEMW-11881_pc
narenr94 Jan 29, 2026
e46d94c
Merge pull request #69 from rdkcentral/feature/RDKEMW-11934_TagAamp
narenr94 Feb 4, 2026
d9627b3
Merge branch 'feature/RDKEMW-11881' into feature/RDKEMW-11877
nejuma1 Feb 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 63 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,12 @@
# limitations under the License.

cmake_minimum_required(VERSION 3.5)
project(Playergstinterface)
project(Playergstinterface VERSION 0.1.0)

# Set default install prefix
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "Default install prefix" FORCE)
endif()
set(CMAKE_CXX_STANDARD 17)
find_package(OpenSSL REQUIRED)
option(DISABLE_SECURITY_TOKEN "Disable security token" OFF)
Expand All @@ -26,6 +31,12 @@ if(DISABLE_SECURITY_TOKEN)
add_definitions(-DDISABLE_SECURITY_TOKEN)
endif()

option(ENABLE_MW_PROFILING "Enable middleware profiling" ON)

if(ENABLE_MW_PROFILING)
add_definitions(-DENABLE_MW_PROFILING)
endif()

# Option for building pi-cli
option(BUILD_PICLI "Build the pi-cli test project" OFF)

Expand Down Expand Up @@ -160,7 +171,11 @@ set(LIBPLAYERGSTINTERFACE_HEADERS
vendor/default/DefaultSocInterface.h
subtitle/vttCue.h
ProcessHandler.h
PerfProfiler.h
)
if(ENABLE_MW_PROFILING)
list(APPEND LIBPLAYERGSTINTERFACE_HEADERS PerfProfiler.h)
endif()
Comment on lines +176 to +178
Copy link

Copilot AI Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is redundant logic in the CMakeLists.txt file. Lines 171-173 check ENABLE_MW_PROFILING and append PerfProfiler.h to LIBPLAYERGSTINTERFACE_HEADERS, but PerfProfiler.h is already added unconditionally at line 169. The conditional block is unnecessary since the header is already in the list. Remove either the unconditional addition at line 169 or the conditional block at lines 171-173.

Suggested change
if(ENABLE_MW_PROFILING)
list(APPEND LIBPLAYERGSTINTERFACE_HEADERS PerfProfiler.h)
endif()

Copilot uses AI. Check for mistakes.

install(FILES closedcaptions/CCTrackInfo.h
PlayerScheduler.h
Expand Down Expand Up @@ -197,7 +212,11 @@ install(FILES closedcaptions/CCTrackInfo.h
subtec/libsubtec/SubtecPacket.hpp
playerisobmff/playerisobmffbuffer.h
playerisobmff/playerisobmffbox.h
PerfProfiler.h
DESTINATION include)
if(ENABLE_MW_PROFILING)
install(FILES PerfProfiler.h DESTINATION include)
endif()
Comment on lines +215 to +219
Copy link

Copilot AI Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is redundant logic in the install section. Line 210 installs PerfProfiler.h unconditionally, but lines 212-214 check ENABLE_MW_PROFILING and install PerfProfiler.h again. The conditional block is unnecessary since the file is already installed at line 210. Remove either the unconditional installation at line 210 or the conditional block at lines 212-214.

Copilot uses AI. Check for mistakes.

set(SOURCES
InterfacePlayerRDK.cpp
Expand All @@ -211,7 +230,11 @@ set(SOURCES
vendor/default/DefaultSocInterface.cpp
drm/processProtectionHls.cpp
ProcessHandler.cpp
PerfProfiler.cpp
)
if(ENABLE_MW_PROFILING)
list(APPEND SOURCES PerfProfiler.cpp)
endif()
Comment on lines +235 to +237
Copy link

Copilot AI Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is redundant logic in the SOURCES list. Line 228 adds PerfProfiler.cpp unconditionally, but lines 230-232 check ENABLE_MW_PROFILING and append PerfProfiler.cpp again. The conditional block is unnecessary since the file is already in the list at line 228. Remove either the unconditional addition at line 228 or the conditional block at lines 230-232.

Suggested change
if(ENABLE_MW_PROFILING)
list(APPEND SOURCES PerfProfiler.cpp)
endif()

Copilot uses AI. Check for mistakes.

if(NOT (CMAKE_PLATFORM_UBUNTU OR CMAKE_SYSTEM_NAME STREQUAL "Darwin"))
list(APPEND SOURCES
Expand Down Expand Up @@ -343,6 +366,18 @@ install (TARGETS subtec
PUBLIC_HEADER DESTINATION include
)

# Configure pkg-config file for subtec
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/libsubtec.pc.in"
"${CMAKE_CURRENT_BINARY_DIR}/libsubtec.pc"
@ONLY
)

# Install pkg-config file for subtec
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libsubtec.pc"
DESTINATION lib/pkgconfig
)

if (CMAKE_GST_SUBTEC_ENABLED)
set(CMAKE_SUBTITLE_SUPPORT TRUE)
message("CMAKE_GST_SUBTEC_ENABLED set")
Expand All @@ -369,6 +404,19 @@ if (CMAKE_SUBTITLE_SUPPORT)
target_link_libraries(subtec_connector playerlogmanager)
install(TARGETS subtec_connector DESTINATION lib)

# Configure pkg-config file for subtec_connector
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/libsubtec_connector.pc.in"
"${CMAKE_CURRENT_BINARY_DIR}/libsubtec_connector.pc"
@ONLY
)

# Install pkg-config file for subtec_connector
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libsubtec_connector.pc"
DESTINATION lib/pkgconfig
)


set(LIBPLAYERGSTINTERFACE_SOURCES ${LIBPLAYERGSTINTERFACE_SOURCES} closedcaptions/subtec/PlayerSubtecCCManager.cpp closedcaptions/rialto/PlayerRialtoCCManager.cpp)
endif()
add_library(playergstinterface SHARED ${SOURCES} ${LIBPLAYERGSTINTERFACE_HEADERS} ${LIBPLAYERGSTINTERFACE_SOURCES} ${LIBPLAYERGSTINTERFACE_DRM_SOURCES} ${LIBPLAYERGSTINTERFACE_HELP_SOURCES})
Expand Down Expand Up @@ -405,10 +453,24 @@ target_link_libraries(playergstinterface ${GSTVIDEO_LIBRARIES} ${LIBPLAYERGSTINT

set_target_properties(playergstinterface PROPERTIES COMPILE_FLAGS "${LIBPLAYERGSTINTERFACE_DEFINES} ${OS_CXX_FLAGS}")

# Configure pkg-config file
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/libplayergstinterface.pc.in"
"${CMAKE_CURRENT_BINARY_DIR}/libplayergstinterface.pc"
@ONLY
)


install(TARGETS playergstinterface
LIBRARY DESTINATION lib
PUBLIC_HEADER DESTINATION lib/include
)

# Install pkg-config file
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libplayergstinterface.pc"
DESTINATION lib/pkgconfig
)

target_link_libraries(subtec playerlogmanager)
target_link_libraries(playergstinterface ${GSTVIDEO_LIBRARIES} ${LIBPLAYERGSTINTERFACE_DEPENDS})
target_link_libraries(playergstinterface subtec)
Expand Down
8 changes: 4 additions & 4 deletions GstUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
* @enum GstMediaType
* @brief Media types
*
* @note Please maintain the order video, audio and subtitle in future.
* @note Please maintain the order video, audio, subtitle, and aux_audio in future.
* This order is to be maintained across fragment, init, and playlist media types.
* These enums are used in a lot of calculations in AAMP code and breaking the order will bring a lot of issues.
* This order is also followed in other enums like AampCurlInstance and TrackType.
Expand All @@ -36,18 +36,18 @@ enum GstMediaType
eGST_MEDIATYPE_VIDEO, /**< Type video */
eGST_MEDIATYPE_AUDIO, /**< Type audio */
eGST_MEDIATYPE_SUBTITLE, /**< Type subtitle */
eGST_MEDIATYPE_RESERVED, /**< Reserved for future */
eGST_MEDIATYPE_AUX_AUDIO, /**< Type auxiliary audio */
eGST_MEDIATYPE_MANIFEST, /**< Type manifest */
eGST_MEDIATYPE_LICENCE, /**< Type license */
eGST_MEDIATYPE_IFRAME, /**< Type iframe */
eGST_MEDIATYPE_INIT_VIDEO, /**< Type video init fragment */
eGST_MEDIATYPE_INIT_AUDIO, /**< Type audio init fragment */
eGST_MEDIATYPE_INIT_SUBTITLE, /**< Type subtitle init fragment */
eGST_MEDIATYPE_INIT_RESERVED, /**< Reserved for future */
eGST_MEDIATYPE_INIT_AUX_AUDIO, /**< Type auxiliary audio init fragment */
eGST_MEDIATYPE_PLAYLIST_VIDEO, /**< Type video playlist */
eGST_MEDIATYPE_PLAYLIST_AUDIO, /**< Type audio playlist */
eGST_MEDIATYPE_PLAYLIST_SUBTITLE, /**< Type subtitle playlist */
eGST_MEDIATYPE_PLAYLIST_RESERVED, /**< Reserved for future */
eGST_MEDIATYPE_PLAYLIST_AUX_AUDIO, /**< Type auxiliary audio playlist */
eGST_MEDIATYPE_PLAYLIST_IFRAME, /**< Type Iframe playlist */
eGST_MEDIATYPE_INIT_IFRAME, /**< Type IFRAME init fragment */
eGST_MEDIATYPE_DSM_CC, /**< Type digital storage media command and control (DSM-CC) */
Expand Down
15 changes: 10 additions & 5 deletions InterfacePlayerPriv.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
#include "GstUtils.h"

#define GST_ELEMENT_GET_STATE_RETRY_CNT_MAX 5
#define GST_TRACK_COUNT 3 /**< internal use - audio+video+sub track */
#define GST_TRACK_COUNT 4 /**< internal use - audio+video+sub+aux track */
#define VIDEO_COORDINATES_SIZE 32
#define GST_TASK_ID_INVALID 0
#define GST_NORMAL_PLAY_RATE 1
Expand Down Expand Up @@ -120,10 +120,6 @@ typedef enum
eGST_STATE_BLOCKED /**< 14 - Player has blocked and cant play content*/
} GstPrivPlayerState;

/**
* @struct gst_media_stream
* @brief Holds information about each media stream
*/
struct gst_media_stream
{
GstElement *sinkbin; /**< Sink element to consume data */
Expand Down Expand Up @@ -225,6 +221,7 @@ struct GstPlayerPriv
int decodeErrorCBCount; /**< Total decode error cb received within threshold time */
bool progressiveBufferingEnabled;
bool progressiveBufferingStatus;
bool forwardAudioBuffers; /**< flag denotes if audio buffers to be forwarded to aux pipeline */
bool enableSEITimeCode; /**< Enables SEI Time Code handling */
bool firstVideoFrameReceived; /**< flag that denotes if first video frame was notified. */
bool firstAudioFrameReceived; /**< flag that denotes if first audio frame was notified */
Expand Down Expand Up @@ -305,5 +302,13 @@ class InterfacePlayerPriv
* @ret TRUE if override is enabled, FALSE otherwise
*/
gboolean SendQtDemuxOverrideEvent(int mediaType, GstClockTime pts, bool enablePTSReStamp, int vodTrickModeFPS, const void *ptr = nullptr, size_t len = 0);

/**
* @fn ForwardBuffersToAuxPipeline
*
* @param[in] buffer - input buffer to be forwarded
*/
void ForwardBuffersToAuxPipeline(GstBuffer *buffer, bool pauseInjector, void *user_data);

};
#endif
Loading
Loading