RDKEMW-19686 [Develop]Bringing RKDEMW-19683 , RDKEMW-19684, RDKEMW-19685 to middleware-player-interface#170
Merged
Merged
Conversation
…rash & LLAMA freeze issue Reason for change : Addressing the above changes in middleware-player-interface Test Steps : E2E testing to check regression . Signed-off by: Deepikasri Natarajan
12 tasks
Contributor
There was a problem hiding this comment.
Pull request overview
This PR backports multiple middleware behavior fixes into middleware-player-interface (develop), focusing on preventing unintended PLAYING transitions during seek-with-keepPaused flows, improving video-mute handling for Rialto sinks, and making SoC capability initialization safer.
Changes:
- Introduces
seekPausedStatein the player context to guard state transitions (e.g., buffering timeout, fragment caching completion, clock-lost recovery) from forcing PLAYING during keepPaused seeks. - Adds early
show-video-window=FALSEapplication (and reinforcement) whenvideoMutedis set, to prevent a brief visible frame during pipeline startup/reconfigure. - Reworks
SocUtilsto support explicit/eager initialization (SocUtils::Init) and lazy creation of the SoC interface; adds/updates unit tests for the new behaviors.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
InterfacePlayerRDK.cpp |
Adds keepPaused seek protection (seekPausedState) across buffering, fragment caching completion, clock-lost handling, and playback-rate resume; reinforces video-mute sink property; adds a retry path in Pause. |
InterfacePlayerPriv.h |
Adds seekPausedState to GstPlayerPriv for guarding PLAYING transitions during keepPaused seeks. |
SocUtils.cpp |
Changes SoC interface creation to lazy initialization via a helper and implements SocUtils::Init(). |
SocUtils.h |
Declares SocUtils::Init() with documentation. |
test/utests/fakes/FakeSocUtils.cpp |
Adds a no-op SocUtils::Init() stub for unit tests. |
test/utests/tests/InterfacePlayerTests/InterfacePlayerFunctionTests.cpp |
Updates Pause test mocking and adds new tests for NotifyFragmentCachingComplete deferral and SetPlayBackRate resume behavior under seekPausedState. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+524
to
+529
| // buffering_timeout will handle the PLAYING transition, so seekPausedState must not block it. | ||
| if (interfacePlayerPriv->gstPrivateContext->seekPausedState) | ||
| { | ||
| MW_LOG_WARN("ConfigurePipeline: clearing seekPausedState — buffering will drive PLAYING transition"); | ||
| interfacePlayerPriv->gstPrivateContext->seekPausedState = false; | ||
| } |
Comment on lines
+4834
to
+4846
| /* Do not set PLAYING if a seek-with-keepPaused is in progress. | ||
| * The buffering_timeout timer may fire after ConfigurePipeline restarts buffering | ||
| * but BEFORE the Pause(1) from keepPaused logic arrives — causing a race. */ | ||
| if (privatePlayer->gstPrivateContext->seekPausedState) | ||
| { | ||
| MW_LOG_WARN("buffering_timeout: skipping PLAYING — seekPausedState active (cnt %u, frames %d)", privatePlayer->gstPrivateContext->buffering_timeout_cnt, frames); | ||
| if (privatePlayer->gstPrivateContext->buffering_timeout_cnt == 0) | ||
| { | ||
| MW_LOG_ERR("buffering_timeout: seekPausedState still active after timeout exhausted — clearing to unblock"); | ||
| privatePlayer->gstPrivateContext->seekPausedState = false; | ||
| } | ||
| return privatePlayer->gstPrivateContext->buffering_in_progress; | ||
| } |
Comment on lines
+4702
to
+4707
| { | ||
| interfacePlayerPriv->gstPrivateContext->seekPausedState = false; | ||
| interfacePlayerPriv->gstPrivateContext->pendingPlayState = false; | ||
| /* After explicit resume we consider operation successful */ | ||
| ret = true; | ||
| } |
| gboolean buffering_in_progress; /**< buffering is in progress */ | ||
| guint buffering_timeout_cnt; /**< make sure buffering_timeout doesn't get stuck */ | ||
| GstState buffering_target_state; /**< the target state after buffering */ | ||
| bool seekPausedState; /** < true when seek with keepPaused is active — guards buffering_timeout from setting PLAYING */ |
added 2 commits
June 11, 2026 19:44
Comment on lines
4709
to
4710
| else if (frames == -1 || frames >= pInterfacePlayerRDK->m_gstConfigParam->framesToQueue || privatePlayer->gstPrivateContext->buffering_timeout_cnt-- == 0) | ||
| { |
Comment on lines
+501
to
+506
| // buffering_timeout will handle the PLAYING transition, so seekPausedState must not block it. | ||
| if (interfacePlayerPriv->gstPrivateContext->seekPausedState) | ||
| { | ||
| MW_LOG_WARN("ConfigurePipeline: clearing seekPausedState — buffering will drive PLAYING transition"); | ||
| interfacePlayerPriv->gstPrivateContext->seekPausedState = false; | ||
| } |
sankarimuthu
approved these changes
Jun 11, 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.
Need to bring parental pin/ vipa container crash update and LLAMA VOD content freeze update to middleware-player-interface component for develop branch