Submitter: Oliver Woodman
This issue is spun out of a discussion here: google/ExoPlayer#3457
The paragraph under discussion in the DASH-IF guidelines is:
"In order to make the MPD joining friendly and to remove data that is available in the past, any segments that have fallen out of the time shift buffer may no longer be announced in the MPD. In this case, the Period start may be moved by changing one or both, MPD@availabilityStartTime and Period@start. However, this requires that the @startNumber, @presentationTimeOffset and S values need to be updated such that the Segment Information accorging to section 4.3.2.2.6 is not modified over an MPD update."
There appear to be a few issues:
-
As noted in the issue ref'd above, allowing @availabilityStartTime to change appears to directly contradict 23009-1 which states: "When the MPD is updated, the value of MPD@availabilityStartTime shall be the same in the original and the updated MPD"
-
Given Period@id is optional in the DASH spec, fixed Period@start values are a convenient way for DASH clients to match periods in the updated manifest to those in a previous manifest. Allowing Period@start values to change makes matching periods more difficult.
-
I cannot think of a reason why it would be necessary, or a good idea, to adjust Period@start in the way described. I don't think such adjustments are ever required to remove segments that are no longer available in the period. Making the adjustment appears to require changing other variables (e.g. @presentationTimeOffset also has to change) in a way so that the end result is the changes cancel one another out. This is more complicated than not changing any of them, and is more difficult for clients to handle (e.g. see point above).
Unless this type of manifest adjustment is genuinely necessary, it seems preferable that the DASH-IF guidelines should instead require Period@start and MPD@availabilityStartTime to remain unchanged across manifest updates.
Submitter: Oliver Woodman
This issue is spun out of a discussion here: google/ExoPlayer#3457
The paragraph under discussion in the DASH-IF guidelines is:
"In order to make the MPD joining friendly and to remove data that is available in the past, any segments that have fallen out of the time shift buffer may no longer be announced in the MPD. In this case, the Period start may be moved by changing one or both, MPD@availabilityStartTime and Period@start. However, this requires that the @startNumber, @presentationTimeOffset and S values need to be updated such that the Segment Information accorging to section 4.3.2.2.6 is not modified over an MPD update."
There appear to be a few issues:
As noted in the issue ref'd above, allowing @availabilityStartTime to change appears to directly contradict 23009-1 which states: "When the MPD is updated, the value of MPD@availabilityStartTime shall be the same in the original and the updated MPD"
Given Period@id is optional in the DASH spec, fixed Period@start values are a convenient way for DASH clients to match periods in the updated manifest to those in a previous manifest. Allowing Period@start values to change makes matching periods more difficult.
I cannot think of a reason why it would be necessary, or a good idea, to adjust Period@start in the way described. I don't think such adjustments are ever required to remove segments that are no longer available in the period. Making the adjustment appears to require changing other variables (e.g. @presentationTimeOffset also has to change) in a way so that the end result is the changes cancel one another out. This is more complicated than not changing any of them, and is more difficult for clients to handle (e.g. see point above).
Unless this type of manifest adjustment is genuinely necessary, it seems preferable that the DASH-IF guidelines should instead require Period@start and MPD@availabilityStartTime to remain unchanged across manifest updates.