Commit Graph

260 Commits

Author SHA1 Message Date
theodab 4425dca283 chore: Remove state engine (#5752)
The state engine mechanism, designed for the player class, was
over-engineered. The structure of the class makes debugging player
errors unnecessarily annoying, by obfuscating the code-path the error
followed, and in general
has created a significant amount of technical debt.
This changes the player to use an async-await setup for the top-level
operations, laying things out much more cleanly
and linearly.

---------

Co-authored-by: Álvaro Velad Galván <ladvan91@hotmail.com>
2023-10-30 23:59:08 -07:00
Álvaro Velad Galván 04fce27779 docs(Ads): Add AWS Elemental MediaTailor tutorial (#5803) 2023-10-25 10:06:30 +02:00
Álvaro Velad Galván de17603974 docs: Add missing text and manifest parsers (#5750)
Closes https://github.com/shaka-project/shaka-player/issues/5741
2023-10-09 09:59:20 +02:00
Joey Parrish b8b53992df docs: Update FAQ for v4.5 release (#5725) 2023-10-04 13:48:07 -07:00
Vinod Balakrishnan c1e18d3583 feat: Migration of LCEVC DIL (Decoder Integration Layer) to LCEVC Dec (Decoder) (#5459) 2023-10-03 09:00:26 +02:00
Álvaro Velad Galván 985e57cfd9 docs: Fix offline tutorial (#5706)
Fixes https://github.com/shaka-project/shaka-player/issues/5703
2023-10-02 10:09:44 +02:00
Álvaro Velad Galván 1ef5ae0615 feat(UI): Add remote button with RemotePlayback API (#5650)
API: https://developer.mozilla.org/en-US/docs/Web/API/RemotePlayback

Chrome Status: https://chromestatus.com/feature/5778318691401728

Examples: https://avayvod.github.io/remote-playback/test.html and
https://beaufortfrancois.github.io/sandbox/media/remote-playback.html

Tested in Safari (iOS and macOS) and Chrome in Android

About desktop support:
https://bugs.chromium.org/p/chromium/issues/detail?id=728609
2023-09-14 18:17:32 +02:00
Álvaro Velad Galván cabb1398b1 docs: Add Nagra to FairPlay tutorial (#5647) 2023-09-13 09:07:23 +02:00
loicraux df2739ea1d docs: Fix registerScheme snippet (#5635)
Fixes #5634

Co-authored-by: Loïc Raux <loicraux@gmail.com>
2023-09-11 11:24:28 -07:00
Álvaro Velad Galván 7df3321272 feat: Add TS transmuxer for muxed content (#5571) 2023-09-07 18:20:03 +02:00
Álvaro Velad Galván d37143e060 feat(Ads): Add control AdsRenderingSettings (#5536)
Closes https://github.com/shaka-project/shaka-player/issues/5011
2023-08-25 12:40:58 +02:00
Joey Parrish ace3e37241 ci: Refactor and update Shaka lab definitions (#5449)
- In karma.conf.js, give ourselves the ability to merge Selenium configs together without clobbering argument lists, for better deduplication in shaka-lab.yaml.  This is based on https://github.com/shaka-project/karma-local-wd-launcher/pull/50
 - Refactor shaka-lab.yaml to take advantage of this new ability.  This removes a bunch of duplicate command line arguments for various versions of Chrome.
 - Remove a TODO about a bug that Chrome decided they would never fix.
 - Sort the list of devices and platforms, with comments to mark out the sections.
 - Remove IE11, which we are well past supporting or testing.

This should be cherry-picked to all active branches.
2023-07-31 11:02:23 -07:00
Ivan 5487236668 fix(docs): fix player configuration code in drm config tutorial (#5359)
This PR updates the DRM configuration tutorial.

The configuration code example is incorrect, and also it suggests you
can change the mapping, which is not true, you are only able to
overwrite parts of it.

Co-authored-by: Ivan Kohut <ivan.kohut@lamin.ar>
2023-06-26 12:04:24 -07:00
Álvaro Velad Galván 62f24d2249 feat: Set segmentPrefetchLimit to 2 by default for low latency streaming (#5275) 2023-06-12 18:13:30 +02:00
Álvaro Velad Galván 82e905b540 feat: Add MP3 transmuxer (#5208)
This transmuxer is used in Firefox due the lack of support for
`audio/mpeg`
2023-05-12 21:36:58 +02:00
Joey Parrish 18f5809e01 docs: Update Java download link (#5207)
Closes #5077
2023-05-02 12:35:27 -07:00
/zɒ̃ge/ 19b7f9310c docs: update config.drm.initDataTransform documentation (#5170) 2023-04-25 15:30:33 -07:00
Vincent Valot cc97da167f feat: allow reuse of persistent license sessions (#4461)
Add capability to re-use persistent license sessions across sessions.

DrmEngine will now always:
- try to start stored persistent sessions before trying to fetch a
license, as-to be able to check if all needed keys are already loaded.
- ask for a new license when the persistent session doesn't have the
needed keys for playback,

Given the flag `persistentSessionOnlinePlayback` is true, DrmEngine:
- won't remove the persistent session from the device at the end of the
playback,
- won't throw an error when the persistent session isn't found on the
device,

For now, it needs Shaka's users to persist session information by
themselves (localStorage, IndexDB, ...) before giving it back for the
next session. Still, it lays foundation to develop the feature to fully
handling it on Shaka's side.

Related to #1956
2023-04-19 15:18:34 -07:00
Álvaro Velad Galván f80bf208b1 feat(MSS): Add support for Microsoft Smooth Streaming (VOD only) (#5002)
Closes https://github.com/shaka-project/shaka-player/issues/703

---------

Co-authored-by: Joey Parrish <joeyparrish@google.com>
2023-03-24 07:47:33 +01:00
Casey Occhialini fe38e45f4d fix: Adds missing CMCD params to some http requests (#5072)
Fixes #5067
Fixes #5094

Co-authored-by: Dan Sparacio <daniel.sparacio@cbsinteractive.com>
2023-03-15 02:13:16 -07:00
theodab d0bb1babaa docs: Remove next links from tutorials (#5082)
The links to the next tutorial were out of date, and they no longer prescribed the actual order of tutorials. This just removes those links entirely.

Fixes #5078
2023-03-10 00:58:11 -08:00
Joey Parrish 472bcbbcff docs: Add Widevine Service Certificate tutorial (#5018)
Also fixes a related typo in the FairPlay tutorial and adds a missing
entry to the tutorial index.
2023-02-23 11:56:39 -08:00
theodab fbce38af1c feat(net): Added advanced type to filters (#5006)
This adds an optional parameter to request and response filters, of a
new enum called AdvancedRequestType.
This enum describes request types that are subtypes of the basic types.
For example, INIT_SEGMENT is a type of SEGMENT.
This gives users more information about the type of the request, while
maintaining backwards compatibility.

Closes #4966
2023-02-23 11:56:23 -08:00
Martin Stark ac963a9d1a docs: Add error handling tutorial (#4983)
Shaka error handling is getting increasingly more complex in order to "catch them all".
This new tutorial describes both the basic method of error handling, as well as showing a few
more advanced ways to handle specific errors.

Closes #4484
2023-02-14 00:30:36 -08:00
François Beaufort 3828fd6849 feat: Add support for Document Picture-in-Picture (#4969)
This PR adds _experimental_ support for the Document Picture-in-Picture
API in the Shaka Player.

Closes https://github.com/shaka-project/shaka-player/issues/4964

Co-authored-by: Alvaro Velad Galvan <ladvan91@hotmail.com>
Co-authored-by: Joey Parrish <joeyparrish@google.com>
2023-02-10 08:39:57 -08:00
Tian Shao de6abde06f feat: Support Parallel Segment Fetching (#4784)
closes https://github.com/shaka-project/shaka-player/issues/4658.

This solution is inspired by abandoned PR
https://github.com/shaka-project/shaka-player/pull/2809, which
implements segment prefetching ahead of current play head.


![image](https://user-images.githubusercontent.com/3315733/205465795-75c605d2-c2e3-4d03-90f5-46a72a7189d2.png)
2023-01-31 20:08:29 +01:00
Álvaro Velad Galván 7fa40fdb48 feat: Add ExpressPlay FairPlay util (#4926) 2023-01-24 07:11:43 +01:00
Joey Parrish 68f10a1969 docs: Update docs about dev dependencies (#4794)
We require node v14+ and Java v11+ now.

Closes #4721 
Closes #4737
2022-12-06 09:31:22 -08:00
Tian Shao aadecd6401 feat: Add preferredAudioLabel to PlayerConfiguration (#4763)
Closes
[#4762](https://github.com/shaka-project/shaka-player/issues/4762).

The change is to add PreferredAudioLabel to player configuration so that
host apps can decide the default variant label to choose at very
beginning.
2022-11-29 10:30:40 +01:00
Joey Parrish 0db6070dcd chore: Set receiver app ID for main (#4675) (#4686)
This reverts commit ea2eaaf210.

Now that v4.3 is out, this sets the receiver app ID for main to refer to
the nightly version of the receiver app again.
2022-11-11 07:08:08 -08:00
Joey Parrish ea2eaaf210 chore: Set receiver app ID for v4.3 (#4675)
This will be reverted in the main branch after the launch/branch of
v4.3, so that main continues refers to the nightly version of the
receiver app.
2022-11-09 16:17:58 -08:00
Joey Parrish 5a76a8351d docs: Update roadmap, maintained branches, and upgrade guide for v4.3 (#4674) 2022-11-09 16:07:40 -08:00
Joey Parrish 6c6cc9dc4b docs: Fix receiver app ID in UI tutorial (#4673)
In the main branch, since the code there is a pre-release, these should
generally all point to the nightly demo receiver.
2022-11-09 16:05:17 -08:00
Joey Parrish 7772099029 build: Fix Docker-based builds (#4633)
This removes the overly-complex docker-compose system and rewrites the
Dockerfile. It also changes the docker commands to those that specify a
user ID, so that build outputs are written as the current user.

Closes #4387 (failed docker build not detected in CI)
Issue #4619 (failed to build w/ docker)
2022-10-28 15:43:16 -07:00
Álvaro Velad Galván 8623a5d030 feat: Add AAC transmuxer (#4632) 2022-10-28 15:43:02 -07:00
Martin Stark 7166f0c1d0 feat: enable uninstalling PatchedMediaKeysApple (#4471)
Close #4469
2022-09-23 09:52:42 +02:00
Joey Parrish 46b27f19e0 fix: Update main branch Cast receiver ID (#4364)
This ID points to the nightly build, and so is appropriate for the
main branch.
2022-07-19 11:59:29 -07:00
Álvaro Velad Galván 5b18069430 feat: Add fallback to TextDecoder and TextEncoder (#4324)
Related to https://github.com/shaka-project/shaka-player/commit/a72a1e91023a33c777a6001a64f818ea2e469914
2022-07-11 10:24:11 -07:00
Álvaro Velad Galván 5441f932fd feat: Add support for Modern EME and legacy Apple Media Keys for FairPlay (#4309) 2022-06-29 07:13:53 +02:00
Joey Parrish 80d1072e7c docs: Deprecate the mailing list for releases (#4323)
Releases will no longer be announced on the mailing list.  Instead,
users can subscribe directly through GitHub.
2022-06-28 09:46:14 -07:00
Álvaro Velad Galván 5e107d584f feat: Add keySystemsMapping to drm config (#4254)
This allows, for example, users to use com.microsoft.playready.recommendation
instead of com.microsoft.playready.

Closes #4243
2022-05-31 15:41:00 -07:00
Álvaro Velad Galván ff310e91e5 fix(fairplay): Re-add initDataTransform config (#4231)
Some FairPlay providers still need this part, so we should never have removed it.

The default is to do no transformation.

Co-authored-by: Joey Parrish <joeyparrish@google.com>
2022-05-17 11:53:52 -07:00
Joey Parrish 87b6b1d519 docs: Add note to upgrade guide about manifest.hls.useFullSegmentsForStartTime (#4213)
This was removed in the release, but we failed to note this in the
upgrade guide.

Closes #4210
2022-05-11 10:54:22 -07:00
Álvaro Velad Galván dbba571c6b feat(cast): Add Android receiver support (#4183)
Closes https://github.com/shaka-project/shaka-player/pull/3773 
Closes https://github.com/shaka-project/shaka-player/issues/3772
2022-05-05 09:18:47 -07:00
Joey Parrish a392c02e0e chore: Drop GSOC ideas list (#4182)
This is very outdated and should not appear in our docs
2022-05-02 20:01:03 -07:00
Álvaro Velad Galván 0fd19997dd feat!: Remove small/large gap config, always jump gaps (#4125)
We get rid of the "small/large" gap concept, to always jump gaps by default

Related to issue https://github.com/shaka-project/shaka-player/issues/3188#issuecomment-788173036
2022-04-13 11:00:47 -07:00
Joey Parrish ead344fe1f chore: Drop MS EME polyfill (#4123)
The MS EME polyfill has been unused since v3.1 and removal of IE support, and isn't needed for Edge or Xbox One support.

Closes #4113
2022-04-12 21:15:14 -07:00
Joey Parrish d8b3341720 test: Run tests on a custom Selenium grid (#4117)
Includes a YAML config file for our lab, and documentation on how to
create a custom config for another Selenium grid.

A workflow will run tests nightly in the Shaka lab, using a
self-hosted runner with access to our private grid.

The workflow can also be triggered manually by maintainers to test a
PR in the lab.  This will report status back to the PR.
2022-04-12 11:32:59 -07:00
Joey Parrish ac5acc80cb feat!: Remove deprecated features, update upgrade guides (#4089)
Below are the changelog entries for each deprecated feature removed by this commit.

-----

feat(config)!: `manifest.dash.defaultPresentationDelay` has been replaced by `manifest.defaultPresentationDelay` (deprecated in v3.0.0)

feat(config)!: Configuration of factories should be plain factory functions, not constructors; these will not be invoked with `new` (deprecated in v3.1.0)

feat(player)!: `shaka.Player.prototype.addTextTrack()` has been replaced by `addTextTrackAsync()`, which returns a `Promise` (deprecated in v3.1.0)

feat(ui)!: `shaka.ui.TrackLabelFormat` has been renamed to `shaka.ui.Overlay.TrackLabelFormat` (deprecated in v3.1.0)

feat(ui)!: `shaka.ui.FailReasonCode` has been renamed to `shaka.ui.Overlay.FailReasonCode` (deprecated in v3.1.0)

feat(offline)!: `shaka.offline.Storage.prototype.store()` returns `AbortableOperation` instead of `Promise` (deprecated in v3.0.0)

feat(offline)!: `shaka.offline.Storage.prototype.getStoreInProgress()` has been removed; concurrent operations are supported, so callers don't need to check this (deprecated in v3.0.0)

feat!: `shaka.util.Uint8ArrayUtils.equal` has been replaced by `shaka.util.BufferUtils.equal`, which can handle multiple types of buffers (deprecated in v3.0.0)

feat(manifest)!: `shaka.media.SegmentIndex.prototype.destroy()` has been replaced by `release()`, which is synchronous (deprecated in v3.0.0)

feat(manifest)!: `shaka.media.SegmentIterator.prototype.seek()`, which mutates the iterator, has been replaced by `shaka.media.SegmentIndex.getIteratorForTime()` (deprecated in v3.1.0)

feat(manifest)!: `shaka.media.SegmentIndex.prototype.merge()` has become private; use `mergeAndEvict()` instead (deprecated in v3.2.0)

feat(plugin)!: `AbrManager` plugins must implement the `playbackRateChanged()` method (deprecated in v3.0.0)

feat(plugin)!: `shaka.extern.Cue.prototype.spacer` has been replaced by the more clearly-named `lineBreak` (deprecated in v3.1.0)

feat(plugin)!: `IUIElement` plugins must have a `release()` method (not `destroy()`) (deprecated in v3.0.0)
2022-04-11 17:11:40 -07:00
Álvaro Velad Galván 8bb70449d3 feat!: Remove support for Safari 12 and iOS 12 (#4112)
1. Remove support for Safari 12
2. Support modern EME in Safari 13
3. Remove EME Apple polyfill
4. Update documentation
2022-04-11 16:17:51 -07:00