Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
f0ed519
include subtecparser test cases all get passed
rekhap2kandhavelan Sep 15, 2025
63a5ec1
Added test cases for base64
rekhap2kandhavelan Sep 16, 2025
4c4f670
Include Drm MOdule test cases without resolving failed test cases 46f…
rekhap2kandhavelan Sep 18, 2025
cc708db
Include ClosedCaptions test cases
rkandh015 Sep 19, 2025
b67a94f
Added external and isobmff test cases
rkandh015 Sep 24, 2025
8eb98fb
resolved hang
rkandh015 Sep 24, 2025
8fed58d
include contentsecuritymanager test cases
rkandh015 Sep 24, 2025
b98e616
Integerate Middleware-player-interface common files and subittile
rkandh015 Sep 25, 2025
6b8fbee
Include vendor pluging common test cases
rkandh015 Sep 27, 2025
207c60d
Added GTEST_SKIP api functions in all test cases which are failed
rkandh015 Sep 29, 2025
3e8d3bc
Merge branch 'develop' into feature/RDK-58324
rkandh015 Sep 30, 2025
d3c8ec3
Refactor base64_Decode for parameter validation
rekhap2kandhavelan Oct 31, 2025
d9ffbca
Refactor waitForDone method for clarity
rekhap2kandhavelan Oct 31, 2025
2fe5afe
Improve base64_Encode error handling
rekhap2kandhavelan Oct 31, 2025
67aa20c
Refactor HLS DRM session callback handling
rekhap2kandhavelan Oct 31, 2025
af0ea42
resolve build error
rkandh015 Oct 31, 2025
e671a0a
Merge branch 'feature/RDK-58324' of https://github.com/rdkcentral/mid…
rkandh015 Oct 31, 2025
f13b39f
Add UpdateBufferData function to handle buffer updates
rekhap2kandhavelan Oct 31, 2025
48135ae
Fix return statement for base64 decoding
rekhap2kandhavelan Oct 31, 2025
af02d4f
Refactor init and processData methods for clarity
rekhap2kandhavelan Oct 31, 2025
6029e54
Update FakePlayerJsonObject.cpp
rekhap2kandhavelan Oct 31, 2025
aa4c51c
Merge branch 'develop' into feature/RDK-58324
rekhap2kandhavelan Oct 31, 2025
c90e958
handling empty string test case
rkandh015 Oct 31, 2025
d58781b
Merge branch 'feature/RDK-58324' of https://github.com/rdkcentral/mid…
rkandh015 Oct 31, 2025
aba2476
Added new L1 test cases
rkandh015 Nov 27, 2025
86bf733
RDK-58324 Added L1 test suites for updated headers documented with Do…
Nov 27, 2025
d8f6b7c
Merge pull request #52 from rdkcentral/feature/RDKEMW-9809
balasaraswathy-n Dec 13, 2025
c1af6c1
rebase with main branch
rkandh015 Dec 16, 2025
13a00f1
2.11.0 sync
Dec 16, 2025
d6192cf
vendor fix
Dec 16, 2025
d230abe
vendor fix 02
Dec 16, 2025
d8a08c0
Integerate DrmOcdm DrmHelper Test cases
rkandh015 Dec 16, 2025
3eb0c7d
Include HlsOcdmBridgeInterface testcases
rkandh015 Dec 16, 2025
92d807f
Integerate subtec cc l1 test cases
rkandh015 Dec 16, 2025
e0ba8ce
Merge branch 'develop' into feature/RDK-58324
rekhap2kandhavelan Dec 17, 2025
773a18e
sync
Dec 17, 2025
56b048a
Include subtecTests L1 test cases
rkandh015 Dec 17, 2025
c080586
Merge branch 'feature/RDK-58324' of https://github.com/rdkcentral/mid…
rkandh015 Dec 17, 2025
c8764fb
Update InterfacePlayerRDK.cpp
rekhap2kandhavelan Dec 17, 2025
43bac77
Update PlayerUtils.cpp
rekhap2kandhavelan Dec 17, 2025
15cd9f3
Update InterfacePlayerRDK.cpp
rekhap2kandhavelan Dec 17, 2025
ffd6b19
Update InterfacePlayerRDK.cpp
rekhap2kandhavelan 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
bab8db1
Merge branch 'main' into feature/RDKEMW-11881
pstroffolino Jan 27, 2026
6cef0de
aamp 11881 sync
Jan 29, 2026
c3310d2
auto generate pc files
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
5594324
rebased with 11881
Feb 1, 2026
e51e139
added static fix for 12402 & 12403
Feb 2, 2026
602f61d
added static fix for 12403 part2
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
46 changes: 45 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 Down Expand Up @@ -343,6 +348,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 +386,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 +435,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
7 changes: 6 additions & 1 deletion GstHandlerControl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,11 @@ GstHandlerControl::ScopeHelper GstHandlerControl::getScopeHelper()

bool GstHandlerControl::waitForDone(int MaximumDelayMilliseconds, std::string name)
{
if (MaximumDelayMilliseconds < 0)
{
MW_LOG_ERR("Invalid MaximumDelayMilliseconds: %d", MaximumDelayMilliseconds);
return false;
}
const std::chrono::steady_clock::time_point end =
std::chrono::milliseconds{MaximumDelayMilliseconds} + std::chrono::steady_clock::now();

Expand All @@ -74,7 +79,7 @@ bool GstHandlerControl::waitForDone(int MaximumDelayMilliseconds, std::string na
if(mInstanceCount)
{
MW_LOG_ERR("GstPlayer: %d instance%s of %s running",
mInstanceCount, mInstanceCount?"s":"", name.c_str());
mInstanceCount, mInstanceCount > 1 ?"s":"", name.c_str());
return false;
}
else
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