RDKEMW-21922: [RDKEMW] [BCM Rogers Monarch IUI V2] Linear trick play (FF/RW/Seek) leads to blank screen, device hang, followed by automatic reboot. Multiple critical processes (gmem, WPENetworkProce, WorkerPoolType: etc.) crash were observed#207
Merged
Conversation
…(FF/RW/Seek) leads to blank screen, device hang, followed by automatic reboot. Multiple critical processes (gmem, WPENetworkProce, WorkerPoolType: etc.) crash were observed.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR addresses stability and playback issues observed during linear trick-play (FF/RW/Seek), with changes spanning DRM handling, caps negotiation, subtitle timestamp alignment, and build/link improvements (notably on Darwin).
Changes:
- Add caps-negotiation synchronization in the CDMI decryptor to avoid decrypt paths running with missing sink caps.
- Add subtitle PTS offset plumbing (no-op base API + WebVTT/Subtec implementation) to align subtitle timing with HLS PTS restamping.
- Apply a broad set of correctness/safety and efficiency updates across DRM/session code paths, plus Darwin CMake linking adjustments.
Reviewed changes
Copilot reviewed 39 out of 42 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| vendor/realtek/RealtekSocInterface.cpp | Remove redundant playback-flag assignment; keep soft-volume enabled. |
| vendor/amlogic/AmlogicSocInterface.cpp | Remove redundant playback-flag assignment; keep soft-volume enabled. |
| test/utests/tests/DrmAes/DrmTestsAes.cpp | Update AES wait tests; add thread-based key-acquired simulation and private-member access hack for testing. |
| subtitle/subtitleParser.h | Add setPtsOffset(double) virtual hook for subtitle parsers (default no-op). |
| subtec/subtecparser/WebVttSubtecParser.hpp | Add setPtsOffset override; allow negative time offset by switching to signed type. |
| subtec/subtecparser/WebVttSubtecParser.cpp | Forward per-fragment time offset to Subtec; implement PTS offset conversion. |
| subtec/libsubtec/SubtecPacket.hpp | Adjust packet accessor return types (and touched packet type accessor). |
| PlayerUtils.cpp | Include <utility> and use std::move in trim() assignment. |
| InterfacePlayerRDK.cpp | Harden videoRectangle parsing; move-assign player name. |
| InterfacePlayerPriv.h | Move CallbackData name in ctor to reduce copies. |
| gst-plugins/gst_subtec/CMakeLists.txt | Fix Darwin include paths; switch to _LINK_LIBRARIES to avoid Xcode link path warnings. |
| gst-plugins/drm/gst/gstcdmidecryptor.h | Add sinkCapsCond condition variable for caps negotiation synchronization. |
| gst-plugins/drm/gst/gstcdmidecryptor.cpp | Initialize/clear/signal sinkCapsCond; wait briefly for sink caps before decrypt to avoid NULL caps usage. |
| gst-plugins/CMakeLists.txt | Darwin: avoid link_directories warnings; use UUID + _LINK_LIBRARIES where applicable. |
| externals/rdk/PlayerThunderAccess.cpp | Apply std::move to reduce copies in JSON-RPC results, callbacks, and event registration. |
| externals/PlayerThunderAccessBase.h | Include <utility>; move strings in PlayerAudioData / PlayerTextData constructors. |
| externals/contentsecuritymanager/ThunderAccessPlayer.cpp | Move plugin callsign; move-assign JSON-RPC result. |
| externals/contentsecuritymanager/SecManagerThunder.cpp | Fix hash inputs to use std::string buffers; move handlers into SubscribeEvent. |
| externals/contentsecuritymanager/IFirebolt/ContentProtectionFirebolt.cpp | Use unique_lock and release mutex before retry sleeps to reduce lock contention. |
| externals/CMakeLists.txt | Darwin: rely on pkg-config _LINK_LIBRARIES (Homebrew dylibs) instead of GStreamer.framework flags. |
| drm/PlayerHlsDrmSessionInterfaceBase.h | Include <utility>; move-assign registered callback. |
| drm/PlayerHlsDrmSessionInterface.h | Add destructor; adjust callback registration signature (pass by value). |
| drm/PlayerHlsDrmSessionInterface.cpp | Delete session manager in destructor (non-OpenCDM-adapter builds); move callback into base. |
| drm/ocdm/opencdmsessionadapter.h | Use predicate waits to handle spurious wakeups; simplify timeout handling. |
| drm/ocdm/opencdmsessionadapter.cpp | Move DrmHelperPtr; avoid using moved-from parameter; move challenge/key vectors to reduce copies. |
| drm/ocdm/OcdmGstSessionAdapter.h | Include <utility>; move DrmHelperPtr into base ctor. |
| drm/ocdm/OcdmGstSessionAdapter.cpp | Guard caps usage with caps != nullptr before GST_IS_CAPS/gst_caps_is_empty. |
| drm/ocdm/OcdmBasicSessionAdapter.h | Include <utility>; move DrmHelperPtr into base ctor. |
| drm/helper/WidevineDrmHelper.cpp | Improve default KID selection; support UUID-string KID matching; map-safe slot lookup; better logs. |
| drm/helper/DrmHelper.h | Avoid copying DrmInfo by passing it as const&. |
| drm/helper/ClearKeyHelper.cpp | Move-assign generated license URL into request struct. |
| drm/DrmSessionManager.h | Add move ctor/assignment to DrmSessionContext. |
| drm/DrmSessionManager.cpp | Move watermark callback into member; move cached key-id vector into storage. |
| drm/DrmSessionFactory.cpp | Move DrmHelperPtr into created session adapters. |
| drm/ClearKeyDrmSession.cpp | Add cJSON item-add failure handling; improve cleanup paths when building key request JSON. |
| drm/aes/Aes.h | Include <utility>; move-assign various registered callbacks. |
| drm/aes/Aes.cpp | Switch AES key-wait to predicate wait; adjust err handling for timeout/other states. |
| CMakeLists.txt | Darwin: keep OpenSSL include dir; adjust link strategy to prefer _LINK_LIBRARIES variables. |
| closedcaptions/subtec/SubtecConnector.cpp | Ensure strncpy destination is null-terminated. |
| closedcaptions/subtec/CCDataController.h | Widen attribute “type” parameter to uint32_t. |
| closedcaptions/subtec/CCDataController.cpp | Propagate uint32_t type into packet send call without redundant casts. |
| .gitignore | Ignore build_aamp/ directory. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
dp0000
approved these changes
Jul 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.