When constructing the MediaDecodingConfigurations to query media capabilities in `stream_utils.js`, the spelling of "fLaC" should not change to "flac" on Safari. This is because on Safari the query will return `supported: false` for "flac" but `supported: true` for "fLaC".
This change allows manifests with "fLaC" codecs to work properly on Safari when using MSE / Managed Media Source.
Fixes#6249
The `constructSegmentUris` util already returns an array, so the call to `makeRequest` was being made with an array of arrays. This wasn't causing errors for requests that use the `fetch` plugin, since `fetch` will stringify the first argument if it's an array. But the data URI plugin expects to receive a string and calls `.split()` on it, so keys using data URIs throw an error if the URI is wrapped in an array.
Thanks to https://github.com/shaka-project/shaka-player/pull/6243 and @andrew0
This method should be called after the load is successful, not if the
load fails.
This also adds a new test that ensures that onKeyStatus_ messages work
correctly, as a regression test.
This was exposed by the test failures, but was not the cause of them.
Issue #6225
This updated version of karma-local-wd-launcher incorporates
https://github.com/shaka-project/karma-local-wd-launcher/pull/65 to
supply a path to the Edge binary on all platforms. This fixes local
testing and GitHub CI testing of Edge.
Though the tests run once more, there are still some test failures that
need to be dealt with.
shaka-lab-hub reports:
```
/wd/hub/session java.io.IOException:
org.openqa.grid.common.exception.GridException:
Cannot extract a capabilities from the request:
```
Generally, there should be a request object after this, but here it is
blank. It's not clear why or how this could be. There are no errors from
shaka-lab-node on Windows.
Adds a new player method, preload. This asynchronous method creates a PreloadManager object, which
will preload data for the given manifest, and which can be passed to the load method (in place of an asset URI)
in order to apply that preloaded data. This will allow for lower load latency; if you can predict what asset will
be loaded ahead of time (say, by preloading things the user is hovering their mouse over in a menu),
you can load the manifest before the user presses the load button.
Note that PreloadManagers are only meant to be used by the player instance that created them.
Closes#880
Co-authored-by: Álvaro Velad Galván <ladvan91@hotmail.com>
This PR introduces a live sync panic mode
(`streaming.liveSyncPanicMode`) which sets the player into the
`streaming.liveSyncMinPlaybackRate` while we're within the
`streaming.liveSyncPanicThreshold`. This should help reduce the change
of subsequent rebuffering events by moving further away from the live
edge.
Related to #6131.