Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(DASH): Add MPD Patch support #5247

Merged
merged 63 commits into from
May 29, 2024
Merged

Conversation

dave-nicholas
Copy link
Contributor

@dave-nicholas dave-nicholas commented May 25, 2023

Closes #2228

@github-actions
Copy link
Contributor

github-actions bot commented May 25, 2023

Incremental code coverage: 87.44%

@joeyparrish
Copy link
Member

Thank you for contributing!

I don't understand the patch adapter, though. I worry that it will not be representative of actual patch streams. I also see it being applied in the demo to a VOD manifest, which should have no need of patching. Patching is only useful for updates to live streams, correct?

@dave-nicholas
Copy link
Contributor Author

Thank you for contributing!

I don't understand the patch adapter, though. I worry that it will not be representative of actual patch streams. I also see it being applied in the demo to a VOD manifest, which should have no need of patching. Patching is only useful for updates to live streams, correct?

Hi @joeyparrish

I agree with you that patch manifest adapter is not ideal, but I wanted to give the ability to test the feature in the demo app as open patch compliant streams are not easy to come by (at least I haven't seen any 😆 ). The reason I chose the ad enabled VOD is because of its behaviour of presenting new segments and periods regularly like a live stream.

I can remove remove the manifest adapter if you wish.

@dave-nicholas
Copy link
Contributor Author

Hi @joeyparrish I have removed the patch adapter.
Please let me know if there any concerns or changes in approach that you would like me to make.
We will be taking this change into production shortly.

@avelad avelad added type: enhancement New feature or request component: DASH The issue involves the MPEG DASH manifest format priority: P3 Useful but not urgent labels Aug 28, 2023
@Iragne
Copy link
Contributor

Iragne commented Sep 29, 2023

Happy to support in this kink of new feature.
Let me know if you need help

Copy link
Member

@joeyparrish joeyparrish left a comment

Choose a reason for hiding this comment

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

Overall, I would be comfortable with an "experimental" flag to enable this, but I want to ensure that the existing flow isn't broken. I'm most concerned about extra calls to combinePeriods (which can be expensive) and missing calls to set up caption streams.

lib/dash/dash_parser.js Outdated Show resolved Hide resolved
lib/dash/dash_parser.js Show resolved Hide resolved
lib/dash/dash_parser.js Outdated Show resolved Hide resolved
lib/dash/dash_parser.js Show resolved Hide resolved
lib/dash/dash_parser.js Show resolved Hide resolved
lib/dash/dash_parser.js Show resolved Hide resolved
lib/dash/dash_parser.js Show resolved Hide resolved
lib/dash/dash_parser.js Show resolved Hide resolved
lib/dash/dash_parser.js Show resolved Hide resolved
@tykus160
Copy link
Contributor

tykus160 commented May 23, 2024

Hi! This PR now supports DASH IF test streams, though there are few gotchas @tobbee

I'm gonna focus on adjusting unit tests now.

@avelad avelad self-requested a review May 23, 2024 10:20
@avelad avelad changed the title feat: Add MPD Patch support feat(DASH): Add MPD Patch support May 23, 2024
@avelad avelad requested a review from theodab May 27, 2024 09:30
@avelad
Copy link
Collaborator

avelad commented May 27, 2024

@shaka-bot test

@shaka-bot
Copy link
Collaborator

@avelad: Lab tests started with arguments:

  • pr=5247

@tobbee
Copy link

tobbee commented May 28, 2024

@tykus160 The patch issues in livesim2 should be fixed now including the multiperiod case for SegmentTimeline.

Regarding the publishTime for SegmentTemplate with $Number$ it changes every time the MPD changes, which is every minute for one-minute period, but never if there are no periods. The reason behind that is that it the publishTime is an "id" of the manifest so it shouldn't change every segment if there is no change.

In general, I think that MPD Patch and SegmentTemplate with Number is a bad match, so one should rather focus on SegmentTimeline, which is also the case with long MPDs. I think that your choice of regular updates is the most reasonable in that case.

As far as I understood from Daniel Silhavy, dash.js fallbacks to normal MPD requests if there is no update of MPD patch.

@avelad avelad merged commit d38aabf into shaka-project:main May 29, 2024
15 checks passed
@tykus160 tykus160 deleted the mpd-patch branch May 29, 2024 06:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component: DASH The issue involves the MPEG DASH manifest format priority: P3 Useful but not urgent type: enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add support for DASH patch manifests (<PatchLocation>)
7 participants