-
Notifications
You must be signed in to change notification settings - Fork 38
4th Edition AMD1 MPD Patch Update Implementation #92
base: develop
Are you sure you want to change the base?
4th Edition AMD1 MPD Patch Update Implementation #92
Conversation
This introduces a new parameter "patching" which can be set to "/patching_1" in the url which will enable patch playout mode for the dynamic MPD. During patch playout mode the MPD will contain a PatchLocation element that points back to the server with an additional "/patch_<time>/" reference to signify the last information given to the client. When the client follows the PatchLocation URI it will receive a Patch response that is applied to the existing in-memory MPD to create the full form MPD at the original location. Current pieces needing further investigation: - Segment update consistency, unclear if we have overlap - Empty segment timeline on join, periods with an empty segment timeline should be omitted and included on the next update
…atch first instance
There is no specification restriction that would prevent the combined usage of patching and these options, however their implementation in the simulator would require significant work in order to enable. To avoid the options being used and getting invalid responses they are explicitly detected with patching and an exception is raised. Issues can be filed on github to ask for enablement of a scenario. Minor fix for location production without fixed start/end times
Thanks for this Zack! I'm quite far on translating everything to Python3, so I'll leave this until that is done. Some unit tests should be fine of course. What about player support? |
Sounds good, I can rebase it on top of the python 3 work as well. They currently work together, but need further robustness testing. |
Sorry for the long delay, but the code is now moved to Python3 and slightly reorganised to to integrate the low-latency mode. Could you look into rebasing and adapting this PR to that code base and make a unit test that checks that this mode is working? |
Yeah I'll take the task of rebasing, there are minor changes in the final AMD as well so the delay ended up net positive :) |
This is an initial pass at bringing in support for the MPD Patching mechanism as outlined in the 4th Edition AMD1 text. This defines a new boolean parameter
patching
which when provided causes the generated MPD to contain the appropriatePatchLocation
element and have subsequent updates from thePatchLocation
provided as valid MPD Patch responses.To accomplish the actual patch responses a second parameter is introduced,
patch
, which is set to the base time of the patch that will be produced. This parameter is set as part of the URI provided in thePatchLocation
element and is not expected to be set manually.Looking for feedback on approach, I still need to update with new unit test cases