Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
87a5f4e
Update SocInterface.cpp
varatharajan568 Feb 23, 2026
a762d55
Update install_dependencies.sh
varatharajan568 Feb 24, 2026
7da2bda
VPAAMP-867 DirectRialto - Changes required
jfagunde Aug 3, 2026
b911139
Add IDirectRialtoCC.h to install files
jfagunde Aug 3, 2026
2799529
Restore DrmSession.cpp
jfagunde Aug 4, 2026
b83aeab
VPAAMP-867 Restore DrmSession.cpp
jfagunde Aug 4, 2026
14edcaa
Fix race in IsKeyIdProcessed() causing false-positive DRM session status
anshephe Aug 4, 2026
0df1f3e
Revert "Fix race in IsKeyIdProcessed() causing false-positive DRM ses…
anshephe Aug 5, 2026
19f7eb0
Added mNaluLengthPrefixed to MediaCodecInfo
anshephe Aug 5, 2026
660d877
Add InvalidateHandle() to decouple CC handle lifetime from refcount
anshephe Aug 7, 2026
11ae870
Merge tag '1.0.4' into develop
Deepikasri1234 Sep 13, 2026
b2d4713
Merge branch 'develop' into feature/VPLAY-12250
anshephe Sep 17, 2026
086994f
VPLAY-12250: Fix use-after-free race in CC manager handle invalidation
anshephe Sep 21, 2026
f10d565
VPLAY-12250: Propagate setKeyId() and SetTrack() failures for non-Ope…
anshephe Sep 22, 2026
492abad
VPLAY-12250: Fix ABI breaks and CC manager retry/cache race
anshephe Sep 22, 2026
17ad4bb
Fix ResetState deadlock and drop unsafe DrmSessionManager overload
anshephe Sep 22, 2026
2d60866
Fix CC manager vtable/cache/race bugs; add DRM creator test
anshephe Sep 22, 2026
516a593
Simplify SetRialto() to a default parameter, not an overload
anshephe Sep 22, 2026
7e5976e
Fix Initialize()/SetTrack() race in CC managers, propagate err on mis…
anshephe Sep 22, 2026
710d93b
Merge pull request #220 from rdkcentral/feature/VPLAY-12250
rekhap2kandhavelan Sep 23, 2026
1f593ab
VPAAMP-959:[MP4DEMUX]Use codec info from the manifest rather than laz…
varshnie Aug 25, 2026
e407622
VPAAMP-959:[MP4DEMUX]Use codec info from the manifest rather than laz…
varshnie Sep 9, 2026
86a62b1
Make ConfigurePipeline backward compatible, rename to StreamCodecInfo…
Vinish100 Sep 11, 2026
ffe16c9
Merge pull request #228 from rdkcentral/feature/VPAAMP-959_PI
rekhap2kandhavelan Sep 30, 2026
b64fb7b
Fix MP4 demux unknown-format stream setup
pstroffolino Oct 3, 2026
3b531f2
Optimize L1 for MP4 demux unknown-format stream setup
Vinish100 Oct 8, 2026
3c8cee9
Merge pull request #274 from rdkcentral/feature/vpaamp-1341
rekhap2kandhavelan Oct 9, 2026
661984f
RDKEMW-27111 : [PLI][Develop] [RTK Rogers IUI V2] Audio Loss (#301)
rekhap2kandhavelan Oct 21, 2026
7251177
Merge branch 'develop' into feature/XRE-19922
varatharajan568 Oct 27, 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
4 changes: 3 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,7 @@ install(FILES closedcaptions/CCTrackInfo.h
subtec/libsubtec/SubtecPacket.hpp
playerisobmff/playerisobmffbuffer.h
playerisobmff/playerisobmffbox.h
closedcaptions/direct-rialto/IDirectRialtoCC.h
DESTINATION include)

# Install the generated version header
Expand Down Expand Up @@ -476,7 +477,7 @@ if (CMAKE_SUBTITLE_SUPPORT)
)


set(LIBPLAYERGSTINTERFACE_SOURCES ${LIBPLAYERGSTINTERFACE_SOURCES} closedcaptions/subtec/PlayerSubtecCCManager.cpp closedcaptions/rialto/PlayerRialtoCCManager.cpp)
set(LIBPLAYERGSTINTERFACE_SOURCES ${LIBPLAYERGSTINTERFACE_SOURCES} closedcaptions/subtec/PlayerSubtecCCManager.cpp closedcaptions/rialto/PlayerRialtoCCManager.cpp closedcaptions/direct-rialto/PlayerDirectRialtoCCManager.cpp)
endif()
add_library(playergstinterface SHARED ${SOURCES} ${LIBPLAYERGSTINTERFACE_HEADERS} ${LIBPLAYERGSTINTERFACE_SOURCES} ${LIBPLAYERGSTINTERFACE_DRM_SOURCES} ${LIBPLAYERGSTINTERFACE_HELP_SOURCES})

Expand All @@ -490,6 +491,7 @@ target_include_directories(playergstinterface PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/playerjsonobject
${CMAKE_CURRENT_SOURCE_DIR}/closedcaptions
${CMAKE_CURRENT_SOURCE_DIR}/closedcaptions/subtec
${CMAKE_CURRENT_SOURCE_DIR}/closedcaptions/direct-rialto
${CMAKE_CURRENT_SOURCE_DIR}/vendor)

if (CMAKE_SUBTITLE_SUPPORT)
Expand Down
22 changes: 20 additions & 2 deletions DemuxDataTypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,11 @@ struct MediaCodecInfo
GstStreamOutputFormat mCodecFormat; // GST_FORMAT_VIDEO_ES_H264, etc
std::vector<uint8_t> mCodecData; // codec private data, e.g. avcC box
bool mIsEncrypted;
// True when NAL units are length-prefixed (AVCC/HVCC, e.g. avcC/hvcC
// sample entries per ISO/IEC 14496-15); false for Annex-B (start-code
// delimited) bitstreams such as HLS-TS ES output. Meaningless for
// non-NAL-unit codecs (audio/subtitle), where it stays false.
bool mNaluLengthPrefixed;
union
{
struct
Expand All @@ -116,7 +121,7 @@ struct MediaCodecInfo
* Uniform initialization is preferred for C++ types as it's type-safe, clearer in intent,
* and works correctly with all C++ types including those with constructors.
*/
MediaCodecInfo() : mCodecFormat(GST_FORMAT_INVALID), mIsEncrypted(false), mCodecData(), mInfo{0}
MediaCodecInfo() : mCodecFormat(GST_FORMAT_INVALID), mIsEncrypted(false), mNaluLengthPrefixed(false), mCodecData(), mInfo{0}
{
}

Expand All @@ -128,7 +133,7 @@ struct MediaCodecInfo
* Uniform initialization is preferred for C++ types as it's type-safe, clearer in intent,
* and works correctly with all C++ types including those with constructors.
*/
MediaCodecInfo(GstStreamOutputFormat format) : mCodecFormat(format), mIsEncrypted(false), mCodecData(), mInfo{0}
MediaCodecInfo(GstStreamOutputFormat format) : mCodecFormat(format), mIsEncrypted(false), mNaluLengthPrefixed(false), mCodecData(), mInfo{0}
{
}

Expand All @@ -144,6 +149,7 @@ struct MediaCodecInfo
: mCodecFormat(exchange(other.mCodecFormat, GST_FORMAT_INVALID))
, mCodecData(exchange(other.mCodecData, {}))
, mIsEncrypted(exchange(other.mIsEncrypted, false))
, mNaluLengthPrefixed(exchange(other.mNaluLengthPrefixed, false))
, mInfo(exchange(other.mInfo, {})) // POD union - exchange with zero-initialized union
{
}
Expand All @@ -160,12 +166,24 @@ struct MediaCodecInfo
mCodecFormat = exchange(other.mCodecFormat, GST_FORMAT_INVALID);
mCodecData = exchange(other.mCodecData, {});
mIsEncrypted = exchange(other.mIsEncrypted, false);
mNaluLengthPrefixed = exchange(other.mNaluLengthPrefixed, false);
mInfo = exchange(other.mInfo, {}); // POD union - exchange with zero-initialized union
}
return *this;
}
};

/*
* @struct StreamCodecInfo
* @brief Codec information for all tracks in a stream
*/
struct StreamCodecInfo
{
MediaCodecInfo video;
MediaCodecInfo audio;
MediaCodecInfo subtitle;
};

/*
* @struct MediaDrmMetadata
* @brief DRM metadata for encrypted samples
Expand Down
3 changes: 2 additions & 1 deletion InterfacePlayerPriv.h
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ struct gst_media_stream
GstElement *sinkbin; /**< Sink element to consume data */
GstElement *source; /**< to provide data to the pipeline */
GstStreamOutputFormat format; /**< Stream output format for this stream */
MediaCodecInfo codecInfo; /**< Codec and encryption information for this stream */
bool pendingSeek; /**< Flag denotes if a seek event has to be sent to the source */
bool resetPosition; /**< To indicate that the position of the stream is reset */
bool bufferUnderrun;
Expand All @@ -137,7 +138,7 @@ struct gst_media_stream
GstPad *demuxPad; /**< Demux src pad >*/
gulong demuxProbeId; /**< Demux pad probe ID >*/

gst_media_stream() : sinkbin(NULL), source(NULL), format(GST_FORMAT_INVALID),
gst_media_stream() : sinkbin(NULL), source(NULL), format(GST_FORMAT_INVALID), codecInfo(),
pendingSeek(false), resetPosition(false),
bufferUnderrun(false), eosReached(false), sourceConfigured(false), sourceLock(PTHREAD_MUTEX_INITIALIZER), timeScale(1), trackId(-1), firstBufferProcessed(false), demuxPad(NULL), demuxProbeId(0)
{
Expand Down
Loading
Loading