Commit Graph

59 Commits

Author SHA1 Message Date
Joey Parrish fe206c54b7 docs: Fix missing details on TextDisplayer in upgrade docs (#10116) 2026-05-21 11:17:05 -07:00
Joey Parrish fe615d5287 docs: Clean up upgrade doc (#10095)
- Remove duplicate entry in the 5.0 list
- Rename the 5.1 list as 6.0 (named for the version in which something
is removed, with a note about the deprecation version)
 - Reindent the set of related config changes

Noticed while preparing CAF for 5.0 compatibility
2026-05-16 09:36:58 +02:00
Álvaro Velad Galván b8cfc1e311 docs: Copy tutorial content referenced in upgrade guide from older branches into the repo (#10072)
Issue: https://github.com/shaka-project/shaka-player/issues/9984
2026-05-13 07:47:45 +02:00
Andy(김규회) c7368024ae feat: Select default track by a list of preferences (#9542)
I went ahead and implemented the full structured preference system that
was discussed in
https://github.com/shaka-project/shaka-player/issues/1591.
Instead of just expanding languages to arrays, I replaced all 14
individual preference fields with 3 structured arrays:

```tsx
  preferredAudio (language, role, label, channelCount, codec, spatialAudio)
  preferredText (language, role, format, forced)
  preferredVideo (label, role, codec, hdrLevel, layout)
```

Each array entry works as an AND filter - so you can say things like "I
want Korean with 5.1 surround, but if not available, English is fine
too":

```tsx
player.configure('preferredAudio', [
  {language: 'ko', channelCount: 6},
  {language: 'ko'},
  {language: 'en'},
]);
```

<img width="1728" height="965" alt="image"
src="https://github.com/user-attachments/assets/7b088150-139b-475e-bdba-5bc77dd4e524"
/>

**Config** - Replaced the 14 individual fields with 3 arrays of typed
preference objects (AudioPreference, TextPreference, VideoPreference).
The old fields still work at runtime with a deprecation warning, so
existing apps won't break immediately.

**Demo** - The demo config UI now shows inline expandable preference
lists instead of flat text inputs. You can add/remove entries and
configure each field per entry. URL hash serialization was updated to
use JSON format, with legacy param fallbacks preserved.
2026-02-20 10:12:08 +01:00
Álvaro Velad Galván 706171b5ed docs: Fix v5 on upgrade.md (#9703) 2026-02-12 15:30:47 +01:00
Álvaro Velad Galván a10287e3f0 feat!: Require apps to call updateStartTime instead of setting media element currentTime directly during startup (#9668)
This change is feat! because it no longer allows modifying the
`currentTime` of the mediaElement in the streaming event. With this
change, only `updateStartTime` can be called to update the time, and the
user should always use the `canupdatestarttime` event instead of
`streaming` event when they need it.

Fixes https://github.com/shaka-project/shaka-player/issues/9661
2026-02-05 20:26:33 +01:00
Matthias Van Parijs 2db6038e74 feat!: Remove setTextTrackVisibility from the public API (#9664)
We previously deprecated setTextTrackVisibility, this PR removes it from
the public API.

This'll allow us to further strip down the distinction between selecting
a text track and toggling its visibility internally. Atleast we'll no
longer have users rely on this API from v5 onwards.

---------

Co-authored-by: Álvaro Velad Galván <ladvan91@hotmail.com>
2026-02-05 15:39:50 +01:00
Theodore Abshire f84b6f0505 docs: Clean up / standardize wording of v5.0 upgrade guide (#9662) 2026-02-04 13:56:19 -08:00
Álvaro Velad Galván 514246c8de feat(UI)!: Remove airplay button (#9654)
`airplay` button uses WebKit's proprietary API. In newer versions, this
has been replaced by the RemotePlayback API, which is available in
`remote` button.

More info: https://caniuse.com/mdn-api_remoteplayback

---------

Co-authored-by: Theodore Abshire <TheodoreAbshire@Gmail.com>
2026-02-04 11:28:17 +01:00
Álvaro Velad Galván 3fd73ce941 feat(UI)!: Add bigButtons config and remove addBigPlayButton config (#9636)
- The following buttons are registered: play_pause, mute, fullscreen,
rewind, fast_forward, picture_in_picture, remote, loop, skip_next,
skip_previous
- SmallPlayButton and BigPlayButton are removed
- The following buttons are used by default on mobile: skip_previous,
play_pause, skip_next
2026-02-02 09:56:43 +01:00
Álvaro Velad Galván 0c0c2ffe29 feat(UI)!: Enable customContextMenu by default on desktop browsers (#9635)
statistics and ad_statistics are added by default to context menu only
on debug builds
2026-01-30 12:03:26 +01:00
Álvaro Velad Galván 023111f6e3 feat(UI)!: Add documentPictureInPicture config (#9634)
- Remove preferDocumentPictureInPicture config
- Add two new configs: disallowReturnToOpener and
preferInitialWindowPlacement
2026-01-29 20:38:36 +01:00
Wojciech Tyczyński 5c05132772 feat!: Use shared logic for MediaError details (#9594) 2026-01-22 20:50:32 +01:00
Álvaro Velad Galván 6e23b401ed feat(UI): Enable doubleClickForFullscreen for mobile (#9566)
Close https://github.com/shaka-project/shaka-player/issues/9555
2026-01-16 12:00:42 +01:00
Álvaro Velad Galván 86bfea08aa feat!: Move speech to text to the accessibility section in config (#9507) 2025-12-16 12:37:44 +01:00
Álvaro Velad Galván 687f0ee26e feat(ABR): Remove abr.removeLatencyFromFirstPacketTime config (#9496)
Close https://github.com/shaka-project/shaka-player/issues/9475
2025-12-12 10:30:17 +01:00
Matthias Van Parijs 73ee27bf17 feat!: Remove autoShowText and simplify initial text track selection (#9435)
This is the first step in a series of efforts to simplify how we handle
text tracks internally.

The purpose of `autoShowText` has always felt a bit unclear. It was
originally added because Shaka wasn't flexible enough when choosing an
initial text track. I don't think we should try to handle every possible
scenario for initial text track selection. Instead, we should respect
`config.preferredTextLanguage` and let the application decide if it
needs more granular control. Apps can already do this easily with
`getTextTracks()` and `selectTextTrack(track)`.

Ultimately, I'd like to move toward a simpler API where either a text
track is selected or none is. If nothing is selected, we shouldn't
stream any text at all.

See https://github.com/shaka-project/shaka-player/issues/9301 for extra
context.
2025-12-12 09:41:15 +01:00
Álvaro Velad Galván 643e2c8b62 feat!: Simplify shaka.ads.AdManager interface (#9357) 2025-11-06 13:29:42 +01:00
Álvaro Velad Galván 8e0e0d85c1 feat!: Remove setSequenceMode from TextParser plugins (#9326) 2025-10-31 16:14:52 +01:00
Álvaro Velad Galván 7f662a15b9 feat!: Remove enableTextDisplayer from TextDisplayer plugins (#9311)
This is no longer necessary since we have removed
shaka.text.SimpleTextDisplayer
2025-10-29 16:43:06 +01:00
Álvaro Velad Galván 570fec9d31 feat: Support videoRole in AdaptationSetCriteria (#8945)
Add preferredVideoRole config
`preferredVariantRole` has been renamed to `preferredAudioRole`

Related to https://github.com/shaka-project/shaka-player/issues/8943
2025-07-31 14:38:09 +02:00
Álvaro Velad Galván 93117d2ace feat: Add enableAudioGroups config (#8792)
Close https://github.com/shaka-project/shaka-player/issues/8684
2025-06-25 12:46:38 +02:00
Álvaro Velad Galván ba56bae473 feat: Add getChaptersAsync method (#8541)
This allows the segmentIndex to be created if it is not already created
and also allows operation with CastProxy.
2025-05-06 07:55:53 +02:00
Álvaro Velad Galván 36db472d93 feat(net): Add networking config (#8306) 2025-03-21 10:20:38 +01:00
Álvaro Velad Galván c2ce68fba8 feat: Move shaka.util.FairPlayUtils to shaka.drm.FairPlay (#8217) 2025-03-06 12:43:49 +01:00
Álvaro Velad Galván f778713e13 feat: Create a new simple API for Audio (#8005)
Close https://github.com/shaka-project/shaka-player/issues/3544

---------

Co-authored-by: Wojciech Tyczyński <tykus160@gmail.com>
2025-02-05 12:16:25 +01:00
Gary Katsevman 88472b3076 feat: add support for multiple robustness levels in drm (#7753)
This changes the `drm.advanced.videoRobustness` and `audioRobustness`
config options from a string to an array of strings. Internally, in the
drm engine, this gets expanded into an array of `DrmInfos` which have
those values as strings.

Best way to review this change is with whitespace turned off in the diff
options.

---------

Co-authored-by: Wojciech Tyczyński <tykus160@gmail.com>
2024-12-23 10:20:24 +01:00
Álvaro Velad Galván fc4893d538 feat: Remove streaming.parsePrftBox config (#7358)
The site code is changed to use a parser that is always used and thus we
avoid having a configuration that is not necessary.
2024-09-24 20:30:32 +02:00
Álvaro Velad Galván aaeafa451c feat(HLS): Deprecate useSafariBehaviorForLive config (#6978) 2024-07-08 09:56:48 +02:00
Gary Katsevman da0bc4da4e feat: move live sync options into their own object (#6845) 2024-06-18 10:13:47 +02:00
Gary Katsevman 277afbf894 feat: add liveSyncTargetLatency option and deprecate liveSyncMinLatency and liveSyncMaxLatency options (#6822)
Follow-up from https://github.com/shaka-project/shaka-player/pull/6683
to add a target latency config and deprecate the existing min/max
options.
2024-06-17 10:55:48 +02:00
Álvaro Velad Galván de2a2d885f feat: Add TextDisplayer config (#6477) 2024-04-24 18:15:44 +02:00
Álvaro Velad Galván 9ad9c94291 chore: Add backwards compatibility for "Remove DOM Parser" (#6453)
Backwards compatibility for https://github.com/shaka-project/shaka-player/pull/6063
2024-04-18 09:03:26 -07:00
Wojciech Tyczyński d0aa69724b feat: add mediaSource.addExtraFeaturesToSourceBuffer (#6362)
Closes #6358
2024-03-26 07:28:14 +01:00
Dave Nicholas 67cd2dd29d fix(tXml): html unescape node attributes with urls (#6267)
To provide feature parity with the `DOMParser.getAttribute` API which
would unescape html entities for free this PR unescapes url strings
which come from node attributes.

In a similar vain to
https://github.com/shaka-project/shaka-player/pull/6198 which unescapes
child strings.
2024-02-23 08:55:07 -08:00
Álvaro Velad Galván fc38aeebe3 feat!: Prefer MSE HLS over native HLS in Apple platform when not encrypted (#6188)
Our HLS implementation is stable and robust enough that we can enable it
by default.
2024-02-01 09:45:16 +01:00
Dave Nicholas 7116a34ec2 feat!: Remove DOM Parser (#6063)
## Background: 
The native DOM Parser can perform poorly on some older devices, this
approach is faster on newer devices but is considerably better on older
devices.
This PR replaces the usage of the DOM Parser for DASH, MSS, VTT and
TTML.

The draw back of this approach that it does not include any validation
at the cost of better performance.
2024-01-22 08:39:06 +01:00
Álvaro Velad Galván 9bb2a214b1 docs: Update docs for v4.6 release (#5885) 2023-11-16 09:58:00 +01: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
Á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
Joey Parrish 5a76a8351d docs: Update roadmap, maintained branches, and upgrade guide for v4.3 (#4674) 2022-11-09 16:07:40 -08:00
Álvaro Velad Galván 8623a5d030 feat: Add AAC transmuxer (#4632) 2022-10-28 15:43:02 -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 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 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 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
Joey Parrish bfece76f10 docs: Update upgrade guides
This drops the v2.4 guide (no longer maintained), and adds a specific
guide for v3 changes (which are minimal).

Closes #3487

Change-Id: Id2e6d3ce92114ca5685787994cac7a5ed36a86e9
2021-07-08 20:56:45 +00:00
Joey Parrish 200a0e2b95 Update the upgrade guides for v2.6
Change-Id: Ie024e7048b44f2f78b7fe359c083196f52747323
2020-05-11 09:56:40 -07:00
Joey Parrish 94fd088199 Update upgrade guides for v2.5
This also drops the oldest upgrade guides for v1 - v2.2, because they
were far too difficult to maintain.

Change-Id: I9552891376d34f48e6424e862bd980f8ecc274c7
2019-05-07 22:19:13 +00:00