-
Notifications
You must be signed in to change notification settings - Fork 421
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 support for dash manifests describing sidx boxes #303
Conversation
Things to do still: All representations(specifically audio) can also have a SegmentBase and also need their sidx to be requested via DashPlaylistLoader. The current idea is to modify this to include audio groups as well. Currently, the video representation is being returned correctly and the resulting video playlist is being requested correctly. |
Appears to be working on at least one source. More testing next week. |
One last bug to figure out: looks like both audio playlists are being requested and overwriting each other, potentially due to the state of the master playlist changing while sidx boxes for each playlist are being requested and parsed. Still debugging |
As an update: I discovered some issues with DashSegmentLoader that needs to be addressed before this PR can proceed. |
e1fddfe
to
093fbac
Compare
Now depends on #386 being merged first |
Here are the things that are left to do:
|
797006d
to
c622fd3
Compare
- start DashPlaylistLoader in HAVE_NOTHING state - enter HAVE_METADATA in media() method - set media automatically only for child playlist loader as masterPlaylistLoader is set from masterPlaylistController update tests with desired behavior ensure loadedmetadata is triggered after loadedplaylist remove unnecessary media playlist selection for master loader
…urns and once when the initial media is selected
- delay triggering selectedinitialmedia event until the active audio playlist loader is finished setting media - ensure that HLS playlists without alternate audio are not affected
- moving haveMetadata to a class-level method, more comments. - remove setTimeouts as they were not performing a necessary function. XHR requests can return in any amount of time and HLS PlaylistLoader handles any requests within a callback, or returns if a request need not be made. DASH should do the same - cleanup the minimumUpdatePeriod setup - remove unnecessary clock.ticks from tests
- have parseMasterXml use previously downloaded sidxes when refreshing media
- haveMaster - parseMasterXml - handleSidxResponse_ - requestSidx_
cdfd948
to
e2b8754
Compare
Tests are failing because no mpd-parser update. We should review and test and get it in. |
Replaced by #455 |
Description
Attempt to fix #162.
Requires videojs/mpd-parser#41
Specific Changes proposed
Dash playlist loader requests the sidx after parsing the master manifest once for the sidx byte range information. Then, the master playlist is mutated.
Current Status
Sources:
Known Issues
there appears to be a bug where the
ended
event is not fired sometimes. This may be an existing issues with DASH.Repro by using https://dash.akamaized.net/dash264/TestCases/10a/1/iis_forest_short_poem_multi_lang_480p_single_adapt_aaclc_sidx.mpd, seeking to > 25s, changing audio selection, seeking near the end.
The skipped playback test
DASH sidx with alt audio should end
should also reproduce the issueif sidx ranges change in between Periods in a live stream, we do not clean up sidxMapping.
This will not be handled at this point as there is further multiperiod work that is required to be able to detect a period change. There is a TODO in the code for this, but no Github issues yet
Requirements Checklist