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: Add MPD Patch support #5247

Open
wants to merge 40 commits into
base: main
Choose a base branch
from

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: 92.32%

@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 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
@avelad
Copy link
Collaborator

avelad commented Apr 15, 2024

@dave-nicholas @tykus160 Please add a Demo streams. You can use Dash-Industry-Forum/dash.js#4452 . With a reference stream in the Demo I will be able to review the change and test it for myself. Thanks!

@tobbee
Copy link

tobbee commented Apr 16, 2024

When running towards dash.js, some issues were fond in the ongoing development of MPD patch in livesim2. I think things should be good now, but if you find any issues, please report them to Dash-Industry-Forum/livesim2#174 or open a new issue if the PR is closed.

@tobbee
Copy link

tobbee commented Apr 23, 2024

The MPD Patch support is now on the public DASH-IF livesim2 server. Here is a possible test URL:

https://livesim2.dashif.org/livesim2/patch_60/segtimeline_1/testpic_2s/Manifest.mpd

@tykus160 tykus160 mentioned this pull request Apr 24, 2024
avelad pushed a commit that referenced this pull request Apr 24, 2024
Required by #5247 

Simple XPath parser for tXml utils. Not used for now, but needed for MPD
Patch support.
@avelad
Copy link
Collaborator

avelad commented Apr 24, 2024

The MPD Patch support is now on the public DASH-IF livesim2 server. Here is a possible test URL:

https://livesim2.dashif.org/livesim2/patch_60/segtimeline_1/testpic_2s/Manifest.mpd

@tobbee Your URL uses SegmentTimeline, is there any URL that uses SegmentList or SegmentBase?

@tykus160
Copy link
Contributor

tykus160 commented Apr 24, 2024

Added demo asset, thanks @tobbee. This PR still needs some love though, as initial scope of work is not sufficient to properly play DASH-IF asset. Me and @dave-nicholas will continue work on that.

@tobbee
Copy link

tobbee commented Apr 24, 2024

@avelad The output is "live" streams and available in three different formats:

SegmentList is not a format recommended by DASH-IF so it is not supported.
SegmentBase is only useful for VoD content in DASH OnDemand profile as far as I know, so it is irrelevant to live output.

I hope you can make these variants work (the first one has very little updates since no Segments are mentioned).

Once they work, one can also test with multiperiod variants by adding /periods_60 before testpic_2s in any of the above URLs like

https://livesim2.dashif.org/livesim2/patch_60/segtimeline_1/periods_60/testpic_2s/Manifest.mpd

@avelad avelad added this to the v4.9 milestone Apr 26, 2024
@avelad avelad changed the title feat: MPD Patch phase 1 feat: Add MPD Patch support May 7, 2024
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>)
6 participants