Skip to content

RDKEMW-19892: [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.#206

Merged
2 commits merged into
developfrom
feature/RDKEMW-19892_develop
Jul 20, 2026

Conversation

@ALSAMEEMA

Copy link
Copy Markdown

No description provided.

…(FF/RW/Seek) leads to blank screen, device hang, followed by automatic reboot. Multiple critical processes (gmem, WPENetworkProce, WorkerPoolType: etc.) crash were observed.
Copilot AI review requested due to automatic review settings July 20, 2026 07:18
@ALSAMEEMA
ALSAMEEMA requested a review from a team as a code owner July 20, 2026 07:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Improves Widevine DRM key selection logic to better handle multi-key streams and avoid crashes/hangs during playback operations (e.g., trick-play) by correctly resolving the “default” key ID across differing key ID encodings.

Changes:

  • Adds UUID-string (with/without dashes) to 16-byte binary conversion to match PSSH v1 binary KIDs in setDefaultKeyID().
  • Makes getKey() safe for std::map<int, ...> slot lookup by using find() and falling back to the first map entry instead of assuming slot 0.
  • Adds clearer logging around mismatch/fallback scenarios.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +188 to +195
mDefaultKeySlot = -1;
std::vector<uint8_t> defaultKeyID(cencData.begin(), cencData.end());
// Also convert UUID string (e.g. "f3dff538-b8c9-58e4-e8cd-96cf811d32dc") to 16-byte binary
// for comparison against binary keyIDs parsed from PSSH
std::vector<uint8_t> defaultKeyIDBinary;
std::string uuidHex;
uuidHex.reserve(cencData.size());
for (char c : cencData)
Copilot AI review requested due to automatic review settings July 20, 2026 07:22

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (1)

drm/helper/WidevineDrmHelper.cpp:194

  • New UUID-string-to-16-byte parsing logic in setDefaultKeyID isn’t covered by unit tests. Adding tests for (1) UUID with hyphens, (2) UUID without hyphens, and (3) invalid hex (should not match) would help prevent regressions in key selection.
	// Also convert UUID string (e.g. "f3dff538-b8c9-58e4-e8cd-96cf811d32dc") to 16-byte binary
	// for comparison against binary keyIDs parsed from PSSH
	std::vector<uint8_t> defaultKeyIDBinary;
	std::string uuidHex;
	uuidHex.reserve(cencData.size());

Comment on lines 264 to 267
else
{
MW_LOG_ERR("No key");
MW_LOG_ERR("No key available - mKeyIDs is empty");
}
@dp0000 dp0000 closed this pull request by merging all changes into develop in ba041c8 Jul 20, 2026
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 20, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants