Skip to content

VPAAMP-795: [Timeshift DAI] Stream for HOT CDVR -> COLD CDVR transition - #1801

Closed
srikanthreddybijjam-comcast wants to merge 1 commit into
dev_sprint_25_2from
feature/VPAAMP-795
Closed

srikanthreddybijjam-comcast wants to merge 1 commit into
dev_sprint_25_2from
feature/VPAAMP-795

Conversation

@srikanthreddybijjam-comcast

Copy link
Copy Markdown
Contributor

Reason for change: Added a pts adjustment from HOT CDVR -> COLD CDVR transition
Test Procedure: Refer jira ticket VPAAMP-795
Priority: P1

@srikanthreddybijjam-comcast
srikanthreddybijjam-comcast requested a review from a team as a code owner July 29, 2026 19:52
@srikanthreddybijjam-comcast
srikanthreddybijjam-comcast force-pushed the feature/VPAAMP-795 branch 2 times, most recently from da762a3 to 78bcb27 Compare July 30, 2026 06:00
Comment thread fragmentcollector_mpd.cpp Outdated
@srikanthreddybijjam-comcast
srikanthreddybijjam-comcast force-pushed the feature/VPAAMP-795 branch 2 times, most recently from db41a7f to bd720d9 Compare August 3, 2026 11:03

@nu641001 nu641001 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.

Changes looks good to me @srikanthreddybijjam-comcast

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

This PR updates DASH/MPD timeshift handling in StreamAbstractionAAMP_MPD to better support HOT CDVR → COLD CDVR (dynamic → static) transitions, where the “cold” MPD may omit availabilityStartTime and use relative segment/period timing.

Changes:

  • Suppress a spurious multi-period discontinuity during HOT→COLD CDVR transitions when the MPD has no AST.
  • Re-anchor mStartTimeOfFirstPTS when transitioning to a no-AST (relative-time) cold MPD so the first-PTS timeline remains aligned.
Suppressed comments (1)

fragmentcollector_mpd.cpp:10191

  • The new Hot→Cold CDVR suppression runs before the discontinuity check and will bypass all discontinuity handling in this block, including codec/ES-change discontinuities (GetESChangeStatus()) and forced multi-period discontinuity. That can prevent required pipeline reconfiguration if an ES change coincides with the manifest transition.
				if (!mIsLiveManifest && mIsLiveStream && mMPDParseHelper->GetAvailabilityStartTime() == 0)
				{
					AAMPLOG_WARN("StreamAbstractionAAMP_MPD: Suppressing spurious discontinuity on Hot→Cold CDVR "
					             "manifest transition (nextSegTime=%" PRIu64 " segStartTime=%" PRIu64 ")",
					             nextSegmentTime, segmentStartTime);

Comment thread fragmentcollector_mpd.cpp
Comment thread fragmentcollector_mpd.cpp
Comment thread fragmentcollector_mpd.cpp Outdated
@rdkcmf-jenkins

Copy link
Copy Markdown

b'## Copyright scan failure
Commit: ae0c7d2
Report detail: https://gist.github.com/rdkcmf-jenkins/fa60f9ecff5a0501a4247962aab21c5d'

@srikanthreddybijjam-comcast
srikanthreddybijjam-comcast force-pushed the feature/VPAAMP-795 branch 4 times, most recently from 17fbf00 to 0e88fc9 Compare August 28, 2026 06:18
Reason for change: Added a fix for UpdateStartTimeOfFirstPTS from HOT CDVR -> COLD CDVR transition
Test Procedure: Refer jira ticket VPAAMP-795
Priority: P1

Signed-off-by: srikanthreddybijjam-comcast <srikanthreddybijjam.2000@gmail.com>

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

Comment thread fragmentcollector_mpd.cpp
Comment on lines +10296 to +10300
// Hot→Cold CDVR: Cold manifest has no AST so segment times are relative; suppress false discontinuity.
if (!mIsLiveManifest && mIsLiveStream && mMPDParseHelper->GetAvailabilityStartTime() == 0 && nextSegmentTime != segmentStartTime)
{
AAMPLOG_WARN("StreamAbstractionAAMP_MPD: Suppressing spurious discontinuity on Hot→Cold CDVR "
"manifest transition (nextSegTime=%" PRIu64 " segStartTime=%" PRIu64 ")",
Comment thread priv_aamp.cpp
Comment on lines +8268 to +8269
AAMPLOG_WARN("previousPosition = %lld is already absolute, seek_pos_seconds = %f", previousPosition, seek_pos_seconds_copy);
return previousPosition;
Comment thread priv_aamp.cpp
Comment on lines +8278 to 8279
AAMPLOG_WARN("GetPositionMilliseconds = %lld", GetPositionMilliseconds());
return GetPositionMilliseconds();
Comment thread fragmentcollector_mpd.cpp
Comment on lines +10385 to +10389
AAMPLOG_INFO("ismCdaiObject= %s, mAdState= %d, mCurAdIdx= %d, mCurPlayingBreakId= %s",
mCdaiObject ? "true" : "false",
mCdaiObject ? static_cast<int>(mCdaiObject->mAdState) : -1,
mCdaiObject ? mCdaiObject->mCurAdIdx : -1,
mCdaiObject && !mCdaiObject->mCurPlayingBreakId.empty() ? mCdaiObject->mCurPlayingBreakId.c_str() : "empty");
Comment thread AampMPDParseHelper.h
Comment on lines 250 to +252
double GetAvailabilityStartTime() { return mAvailabilityStartTime;}
double GetTimelineAvailabilityStartTime() { return mTimelineAvailabilityStartTime;}
void SetTimelineAvailabilityStartTime(double availabilityStartTime) { mTimelineAvailabilityStartTime = availabilityStartTime; }
Comment thread AampMPDParseHelper.h
Comment on lines 536 to 539
/* storage for Availability Start Time */
double mAvailabilityStartTime;
double mTimelineAvailabilityStartTime;
/* storage for Publish Time in seconds*/
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.

5 participants