Skip to content

RDKEMW-18059 : Player Failure observed with a "technical fault" OSM on performing HDMI unplug/replug#1410

Open
varatharajan568 wants to merge 23 commits into
dev_sprint_25_2from
feature/RDKEMW-18059
Open

RDKEMW-18059 : Player Failure observed with a "technical fault" OSM on performing HDMI unplug/replug#1410
varatharajan568 wants to merge 23 commits into
dev_sprint_25_2from
feature/RDKEMW-18059

Conversation

@varatharajan568
Copy link
Copy Markdown
Contributor

Reason for Change:

  • During HDMI unplug, the Rialto pipeline emits generic GStreamer decryption errors, which the player fails to recognize as decryption-related and does not send the correct error event to the application.
  • AAMP forwards this generic error, triggering repeated media retries and re-tunes, and after seven retries, a media failure is raised along with a Technical Fault OSM.
    Changes:
  • The player interface notifies AAMP when a key status change is HDCP-related, AAMP needs to handle error reporting to the application and performs a re-tune once the key status transitions back to a usable state.

Test Guidance: Refer ticket

@varatharajan568 varatharajan568 requested a review from a team as a code owner May 5, 2026 08:58
@Vinish100 Vinish100 requested a review from Copilot May 7, 2026 03:20
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a new DRM callback path to surface OCDM key-status changes (notably HDCP/output-restriction related statuses) up into the player layer so AAMP can react appropriately during HDMI unplug/replug scenarios.

Changes:

  • Introduces PlayerKeyStatus and a new DrmCallbacks::NotifyKeyStatus() callback.
  • Maps OCDM KeyStatusPlayerKeyStatus in OCDMSessionAdapter and invokes the callback for selected statuses.
  • Adds stub implementations in unit-test fakes/mocks and a (currently logging-only) implementation in PrivateInstanceAAMP.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
middleware/drm/DrmSession.h Adds PlayerKeyStatus enum to represent key status independent of OCDM.
middleware/drm/DrmCallbacks.h Extends DRM callback interface with NotifyKeyStatus(PlayerKeyStatus).
middleware/drm/ocdm/opencdmsessionadapter.cpp Converts OCDM key status to player key status and notifies the callback on updates.
priv_aamp.h Declares PrivateInstanceAAMP::NotifyKeyStatus() override.
priv_aamp.cpp Implements NotifyKeyStatus() (currently just logs).
test/utests/fakes/FakePrivateInstanceAAMP.cpp Adds fake stub for NotifyKeyStatus() (currently unused parameter).
test/utests/drm/mocks/aampMocks.cpp Adds mock stub for NotifyKeyStatus() (marks parameter unused).

Comment thread test/utests/fakes/FakePrivateInstanceAAMP.cpp
Comment thread middleware/drm/DrmCallbacks.h
Comment thread middleware/drm/ocdm/opencdmsessionadapter.cpp
Comment thread middleware/drm/ocdm/opencdmsessionadapter.cpp Outdated
Comment thread priv_aamp.cpp
Comment on lines +11461 to +11464
void PrivateInstanceAAMP::NotifyKeyStatus(PlayerKeyStatus keyStatus)
{
AAMPLOG_WARN("NotifyKeyStatus: keyStatus=%d", static_cast<int>(keyStatus));
}
varatharajan568 and others added 13 commits May 7, 2026 11:03
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Varatharajan_Narayanan <Varatharajan_Narayanan@comcast.com>
Signed-off-by: Varatharajan_Narayanan <Varatharajan_Narayanan@comcast.com>
Signed-off-by: Varatharajan_Narayanan <Varatharajan_Narayanan@comcast.com>
Signed-off-by: Varatharajan_Narayanan <Varatharajan_Narayanan@comcast.com>
Copy link
Copy Markdown
Contributor

@Vinish100 Vinish100 left a comment

Choose a reason for hiding this comment

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

Looks good to me 👍

Comment thread middleware/drm/DrmSession.h
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

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 8 out of 8 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (2)

middleware/drm/ocdm/opencdmsessionadapter.cpp:82

  • ShouldNotifyKeyStatus() currently triggers notifications only for OutputRestricted and Usable, but the PR description says the notification is for HDCP-related status changes. In this codebase OutputRestrictedHDCP22 is also treated as an HDCP failure (see processDRMKey() handling in this file), so it likely needs to be included in the notification set as well.
bool ShouldNotifyKeyStatus(KeyStatus status)
{
    switch (status)
    {
        case OutputRestricted:
        case Usable:
            return true;
        default:
            return false;
    }
}

middleware/drm/ocdm/opencdmsessionadapter.cpp:82

  • ShouldNotifyKeyStatus() has external linkage but is only used within this translation unit. Mark it static (or put it in an anonymous namespace) to avoid exporting a generic symbol name that could collide with other translation units.
bool ShouldNotifyKeyStatus(KeyStatus status)
{
    switch (status)
    {
        case OutputRestricted:
        case Usable:
            return true;
        default:
            return false;
    }
}

Comment thread middleware/drm/ocdm/opencdmsessionadapter.cpp Outdated
Comment thread middleware/drm/DrmSession.h
Comment thread middleware/drm/DrmCallbacks.h
Comment thread priv_aamp.cpp
Comment on lines +11465 to +11471
/**
* @brief DRM key status notification callback
*/
void PrivateInstanceAAMP::NotifyKeyStatus(PlayerKeyStatus keyStatus)
{
AAMPLOG_WARN("NotifyKeyStatus: keyStatus=%d", static_cast<int>(keyStatus));
}
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants