Commit Graph

366 Commits

Author SHA1 Message Date
Álvaro Velad Galván 2260aa9cf6 feat: Update usage of minBufferTime according to the DASH spec (#7616)
Related to
https://github.com/shaka-project/shaka-player/issues/7602#issuecomment-2479518970

From 23009-1:

The value of the minimum buffer time does not provide any instructions
to the client on how long
to buffer the media. The value however describes how much buffer a
client should have under
ideal network conditions. As such, MBT is not describing the burstiness
or jitter in the network,
it is describing the burstiness or jitter in the content encoding.
Together with the BW value, it is
a property of the content. Using the "leaky bucket" model, it is the
size of the bucket that makes
    BW true, given the way the content is encoded
2024-11-19 10:47:18 +01:00
Álvaro Velad Galván d8a14b0a45 fix(DASH): Fix playback after DASH period eviction (#7603)
Fixes https://github.com/shaka-project/shaka-player/issues/7516 in a
simpler way

Reverts
https://github.com/shaka-project/shaka-player/commit/5eff0384d04e22a971336c90aae0a83db2a451d5
Reverts
https://github.com/shaka-project/shaka-player/commit/037193c2d601e02c8611a4527dcb04d32adbbd27
2024-11-15 13:23:40 +01:00
ncocaign 5eff0384d0 fix(DASH): Fix playback after DASH period eviction (#7519)
With this change, closeSegmentIndex() of all streams of a removed period
are defered in StreamingEngine.onUpdate_()

Fixes #7516
2024-11-13 19:14:15 +01:00
Álvaro Velad Galván 597e129bd6 feat: Add preferredTextFormats config (#7523)
Close https://github.com/shaka-project/shaka-player/issues/4650
2024-10-31 08:53:55 +01:00
Álvaro Velad Galván e2413ed5f2 feat(HLS): Make dummy streams for tags representing muxed audio (#7343)
Close https://github.com/shaka-project/shaka-player/issues/5836
2024-09-20 23:58:56 +02:00
Álvaro Velad Galván e28a07eaae fix(offline): Text segments are downloaded before audio&video (#7336)
Support for using the old parallel download mechanism is also added.

Fixes: https://github.com/shaka-project/shaka-player/issues/4878
2024-09-18 13:04:29 +02:00
Álvaro Velad Galván 346cf48a5e feat(Offline): Allow store external text (#7328)
Close https://github.com/shaka-project/shaka-player/issues/2016
2024-09-17 13:35:36 +02:00
Álvaro Velad Galván 013b3c7f22 feat(Offline): Allow store external thumbnails (#7322)
Related to https://github.com/shaka-project/shaka-player/issues/2016
2024-09-17 09:44:53 +02:00
Álvaro Velad Galván 1434426f2c feat(Cast): Enable storage in Android Cast devices (#7292)
Related to https://github.com/shaka-project/shaka-player/issues/7253
2024-09-13 09:39:31 +02:00
Álvaro Velad Galván 789101cbba feat(DASH): Add DVB Font downloads (#6971) 2024-07-02 20:52:29 +02:00
Álvaro Velad Galván d63df145aa feat(HLS): Add support for EXT-X-START (#6938) 2024-07-02 08:54:17 +02:00
Álvaro Velad Galván 0ea31b46e6 feat: Add option to disable continue loading live stream manifest when paused (#6916)
Close https://github.com/shaka-project/shaka-player/issues/3781
2024-06-26 17:17:28 +02:00
Álvaro Velad Galván e0208148cb feat: Add isLowLatency to shaka.extern.Manifest (#6842) 2024-06-18 18:48:11 +02:00
Wojciech Tyczyński 8a678f374d feat(Stats): Add manifestGapCount to stats (#6804)
Resolves #6789
2024-06-13 09:41:57 +02:00
Álvaro Velad Galván c866d7b467 feat(HLS): Allow disable streams when the media playlist fails (#6807) 2024-06-13 09:32:09 +02:00
Wojciech Tyczyński 65b0b8dd21 feat(Stats): Add manifestPeriodCount to stats (#6798)
Resolves #6788
2024-06-12 08:37:01 +02:00
Álvaro Velad Galván 2ec64442e2 feat(HLS): Add support for EXT-X-DATERANGE (#6718)
Closes https://github.com/shaka-project/shaka-player/issues/3523
2024-06-03 10:10:39 +02:00
Álvaro Velad Galván 329d42ad56 feat: Parse colorGamut and use it in MCap (#6663) 2024-05-24 08:59:06 +02:00
Álvaro Velad Galván 82c5149375 feat(DASH): Add MPD Chaining support (#6641)
Close https://github.com/shaka-project/shaka-player/issues/3926
2024-05-21 09:57:16 +02:00
Wojciech Tyczyński c9b61fe351 perf(DRM): pass preferredKeySystems to filterManifest() (#6468)
Follow up to #5391
Always use `preferredKeySystems` during manifest filtering, not only via
DRM Engine.
2024-04-23 14:27:36 -07:00
theodab 1da5da9790 fix(DASH): Fix support for multi-mimeType variants (#6348)
A previous PR, #5950, added support for variants that contain multiple
different codecs.
It was supposed to also add support for variants with multiple
mimeTypes, but that part didn't work correctly. This reworks a lot of
#5950 and #6047, to change how they handle such complicated variants.

This has the side-effect of allowing the stream utils to differentiate
between content that has multiple codecs because of type changes, and
content that has multiple codecs because of being muxed video+audio.

Fixes #6010

---------

Co-authored-by: Álvaro Velad Galván <ladvan91@hotmail.com>
2024-04-10 02:48:57 -07:00
Álvaro Velad Galván 47602c6f5e feat!: Remove com.adobe.primetime keysystem (#6189)
`com.adobe.primetime` is not implemented in any browser and no one has
reported any problems in the 8 years of Shaka Player.
2024-01-30 20:02:44 +01:00
Álvaro Velad Galván 5acc773364 fix(offline): Fix store persistent licenses with drm info in the pssh (#6143)
Fixes https://github.com/shaka-project/shaka-player/issues/6141
2024-01-24 07:38:50 +01:00
Álvaro Velad Galván e1eb003256 fix(offline): Fix server certificate error when trying to delete stored content (#6080)
Fixes https://github.com/shaka-project/shaka-player/issues/6079
2024-01-10 17:45:41 +01:00
Álvaro Velad Galván 42f491f782 feat(DASH): Add support for Content Steering (#5710)
Related to https://github.com/shaka-project/shaka-player/issues/5704
2023-11-09 08:34:09 +01:00
Álvaro Velad Galván 51edeaefa0 fix: Fix variant filtering by preferredAudioChannelCount (#5859)
Fixes https://github.com/shaka-project/shaka-player/issues/5858
2023-11-06 11:49:20 +01:00
Álvaro Velad Galván 508e5cfbba feat(DASH): Add initial support for "urn:mpeg:dash:ssr:2023" (#5762) 2023-11-03 14:57:15 +01:00
Álvaro Velad Galván f4a35f2c3f fix(offline): Fix server certificate error when trying to store content (#5848)
Fixes https://github.com/shaka-project/shaka-player/issues/5132
2023-11-02 18:35:35 +01:00
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 5aa3597074 fix: Fix incompatible codec is selected in Windows Edge for Widevine (#5831)
Fixes https://github.com/shaka-project/shaka-player/issues/4242
2023-10-30 16:23:13 +01:00
Álvaro Velad Galván 81fc82b6b2 feat(HLS): Add support for REQ-VIDEO-LAYOUT (#5809)
Also add preferredVideoLayout config
2023-10-26 09:25:45 +02:00
Álvaro Velad Galván 8b7141f923 fix(DASH): Fix manifest update time for LL-DASH (#5736) 2023-10-11 11:34:15 +02:00
Álvaro Velad Galván 1271a18fec feat: Add getBandwidthEstimate to the player interface for custom manifest parser (#5714) 2023-10-03 17:23:34 +02:00
Álvaro Velad Galván 0bbb47025e feat(DASH): Add new config to prevent mixing of audio representations from different adaptation sets (#5620)
Closes https://github.com/shaka-project/shaka-player/issues/5461
2023-09-13 22:38:00 +02:00
Álvaro Velad Galván b16d2f0bf3 feat: Add manifestupdated event (#5602) 2023-09-05 08:15:18 -07:00
Álvaro Velad Galván de19884dd1 fix(HLS): Fix external subtitles out of sync in HLS (#5491)
Fixes https://github.com/shaka-project/shaka-player/issues/5458
Fixes https://github.com/shaka-project/shaka-player/issues/5443
2023-08-21 09:00:07 -07:00
Wojciech Tyczyński f53349fc93 feat: Add originalLanguage to the Track structure (#5409)
Shaka in most of places normalizes tracks' language code to be compliant with ISO 639-1 when possible. However, it does not do that all the time (i.e. normalization is missing in MSS parser) and there is no way to get value that has been explicitly set in a manifest. Moreover, documentation is misleading, as it claims that value is taken directly from a manifest.
Normalization should take place, specifically to easify PeriodCombiner algorithm and also to not break existing applications.
However, original value can be desired for some implementations.
This PR introduces new field to get original language value from the manifest.
2023-07-18 02:09:17 -07:00
Adrián Gómez Llorente 693abd5081 feat(DASH): Add support for service descriptions (#5394) 2023-07-05 14:43:15 +02:00
theodab 654a0281d9 feat(DASH): Expose accessibility purpose in track (#5216)
Closes #5211
2023-05-08 17:13:06 -07:00
Ashwin Bhat 4d487e46e1 feat(HLS): Add HLS config to ignore manifest timestamps when in segments mode (#5103) 2023-03-23 14:57:18 +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
Álvaro Velad Galván ea290ab958 fix: Increase IndexedDB timeout (#4984)
Related to https://github.com/shaka-project/shaka-player/issues/4625
2023-02-09 10:25:30 +01:00
Álvaro Velad Galván 2b50b88030 feat(HLS): Add HLS support for non-sequence mode (#4623) 2023-01-30 21:22:30 +01:00
Joey Parrish a7f0be726d fix: Fix HLS lazy-loading with DRM (#4646)
Now that DRM info is only parsed after playback has begun, the manifest
parser needs to communicate back to the other components that new DRM
info is available after lazy-loading a playlist.

Closes #4622
2022-11-04 08:31:52 -07:00
theodab d4d37407c8 fix(offline): Add storage muxer init timeout (#4566)
In some cases, indexedDB.open() can end up calling neither callback.
When this does happen, according to my initial testing, it happens
consistently when reloading the page, so it's not a one-off fluke but
presumably some sort of implementation or browser install problem. If
that does happen, the init promise of the storage muxer hangs forever,
potentially blocking other operations from happening. This adds a
timeout to the invocation of indexedDB.open(), after which the operation
fails with a new error.
2022-10-13 15:35:55 -07:00
Joey Parrish a16b1ac8a4 fix: Fix HLS dynamic to static transition (#4483)
fix: Fix HLS dynamic to static transition

 - Keep maxSegmentEndTime_ updated in PresentationTimeline by calling
   notifySegments on each HLS playlist update, so that the seek range
   doesn't revert to the original playlist size when it becomes
   static.
 - Wait to change the presentation type to VOD until after _all_
   active playlists have an ENDLIST tag, to avoid missing the final
   segments in one type or the other.
 - Stop updating the playlists after transition to VOD.
 - Update the MSE duration at exactly the same time as we transition
   to VOD, to avoid a loophole where the UI knows it's VOD, but
   doesn't have any way to get the correct duration.  Previously, this
   state would persist until the final segments were appended.

Closes #4431
2022-09-13 13:44:44 -07:00
Joey Parrish 87e91874ee test: Disable offline for Xbox One (#4232)
Xbox One tests have been failing often for some time now, so it went
unnoticed that offline was not working.  It seems that IndexedDB is
not working properly on Xbox, and the platform throws `UnknownError`.

This restricts offline so that it is not triggered on Xbox One, and
this also fixes the filtering of our offline tests to respect the
offline storage muxer's support method.
2022-05-17 11:18:59 -07:00
Albert Daurell b57279d39c feat: Temporarily disable the active variant from NETWORK HTTP_ERROR (#4189)
When a `NETWORK HTTP_ERROR` is thrown, we'll temporarily disable the variant for `shaka.extern.Restrictions.maxDisabledTime` seconds (default will be 30 seconds).

Closes #4121
Closes #1542
2022-05-05 09:02:32 -07:00
Joey Parrish c07447f00e fix(offline): Clean up orphaned segments on abort (#4177)
If a storage operation is aborted (via API, not via closing the page),
this will now be cleaned up from the database.  More work is needed to
find and remove orphaned segments in the database.

Related to #4166 and follow-up to PR #4176.
2022-04-29 20:11:31 -07:00
Joey Parrish c1c9613512 fix(offline): Speed up offline storage by ~87% (#4176)
By waiting for all segment data to be written to the database before updating the manifest, we can speed up offline storage in the foreground by ~87%.

Closes #4166
2022-04-29 16:34:23 -07:00