shaka-player 4.3.1 → 4.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/.github/workflows/build-and-test.yaml +13 -0
  2. package/AUTHORS +1 -0
  3. package/CHANGELOG.md +31 -0
  4. package/CONTRIBUTORS +1 -0
  5. package/README.md +1 -1
  6. package/dist/deps.js +1 -1
  7. package/dist/locales.js +30 -30
  8. package/dist/shaka-player.compiled.d.ts +10 -0
  9. package/dist/shaka-player.compiled.debug.d.ts +10 -0
  10. package/dist/shaka-player.compiled.debug.externs.js +12 -0
  11. package/dist/shaka-player.compiled.debug.js +248 -244
  12. package/dist/shaka-player.compiled.debug.map +3 -3
  13. package/dist/shaka-player.compiled.externs.js +12 -0
  14. package/dist/shaka-player.compiled.js +730 -727
  15. package/dist/shaka-player.compiled.map +3 -3
  16. package/dist/shaka-player.ui.d.ts +10 -0
  17. package/dist/shaka-player.ui.debug.d.ts +10 -0
  18. package/dist/shaka-player.ui.debug.externs.js +12 -0
  19. package/dist/shaka-player.ui.debug.js +252 -248
  20. package/dist/shaka-player.ui.debug.map +3 -3
  21. package/dist/shaka-player.ui.externs.js +12 -0
  22. package/dist/shaka-player.ui.js +862 -859
  23. package/dist/shaka-player.ui.map +3 -3
  24. package/lib/ads/ad_manager.js +2 -2
  25. package/lib/hls/hls_parser.js +50 -18
  26. package/lib/media/media_source_engine.js +49 -3
  27. package/lib/media/segment_index.js +5 -10
  28. package/lib/media/segment_reference.js +42 -0
  29. package/lib/media/streaming_engine.js +47 -12
  30. package/lib/player.js +12 -2
  31. package/lib/text/ui_text_displayer.js +24 -4
  32. package/lib/text/web_vtt_generator.js +21 -9
  33. package/lib/util/dom_utils.js +3 -1
  34. package/lib/util/stream_utils.js +6 -0
  35. package/lib/util/timer.js +17 -0
  36. package/package.json +1 -1
  37. package/test/hls/hls_live_unit.js +8 -30
  38. package/test/hls/hls_parser_unit.js +30 -0
  39. package/test/media/segment_index_unit.js +28 -0
  40. package/test/media/streaming_engine_unit.js +91 -119
  41. package/test/player_integration.js +37 -3
  42. package/test/player_unit.js +4 -2
  43. package/test/test/boot.js +29 -11
  44. package/test/test/util/manifest_parser_util.js +4 -3
  45. package/test/test/util/test_scheme.js +2 -2
  46. package/test/text/ui_text_displayer_unit.js +70 -0
  47. package/ui/controls.js +5 -1
@@ -87,6 +87,19 @@ jobs:
87
87
  if: matrix.os == 'ubuntu-latest' && matrix.browser == 'Firefox'
88
88
  run: sudo apt -y update && sudo apt -y install ffmpeg
89
89
 
90
+ # Edge 107 fails DRM tests due to an outdated Widevine CDM. Force Edge
91
+ # to update to 108+.
92
+ - name: Upgrade Edge
93
+ if: matrix.os == 'ubuntu-latest' && matrix.browser == 'Edge'
94
+ run: |
95
+ # If it's Edge 107, update it. Otherwise, don't. This way, we don't
96
+ # break something later when Edge 108+ is available by default in
97
+ # GitHub Actions.
98
+ if apt show microsoft-edge-stable | grep -q '^Version: 107'; then
99
+ wget https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_108.0.1462.46-1_amd64.deb
100
+ sudo dpkg -i microsoft-edge-stable_108.0.1462.46-1_amd64.deb
101
+ fi
102
+
90
103
  - name: Checkout code
91
104
  uses: actions/checkout@v3
92
105
  with:
package/AUTHORS CHANGED
@@ -66,6 +66,7 @@ Prakash <duggaraju@gmail.com>
66
66
  Robert Colantuoni <rgc@colantuoni.com>
67
67
  Robert Galluccio <robertnw5@gmail.com>
68
68
  Rodolphe Breton <robloche@gmail.com>
69
+ Rohan Gupta <rohangupta1528@gmail.com>
69
70
  Roi Lipman <roilipman@gmail.com>
70
71
  Roksolana Ivanyshyn <roksolana.ivanyshyn.pub@gmail.com>
71
72
  Rostislav Hejduk <Ross-cz@users.noreply.github.com>
package/CHANGELOG.md CHANGED
@@ -1,5 +1,36 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.3.3](https://github.com/shaka-project/shaka-player/compare/v4.3.2...v4.3.3) (2023-01-13)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * Fix exception enabling captions on HLS ([#4894](https://github.com/shaka-project/shaka-player/issues/4894)) ([1d0ad52](https://github.com/shaka-project/shaka-player/commit/1d0ad529e7e38be07df2ed08fb14a2b88098b7fc)), closes [#4889](https://github.com/shaka-project/shaka-player/issues/4889)
9
+ * Fix flattenedCues in WebVttGenerator ([#4867](https://github.com/shaka-project/shaka-player/issues/4867)) ([e062175](https://github.com/shaka-project/shaka-player/commit/e0621753a5b1342df34a87db462cc4dd18657c3b))
10
+ * Fix legacy codec support by rewriting codec metadata ([#4858](https://github.com/shaka-project/shaka-player/issues/4858)) ([92abfbc](https://github.com/shaka-project/shaka-player/commit/92abfbcca3e0288c4d2a31ef0771a4c0ed2d4405))
11
+ * Fix media source duration when using sequence mode ([#4848](https://github.com/shaka-project/shaka-player/issues/4848)) ([c9db2a0](https://github.com/shaka-project/shaka-player/commit/c9db2a073c096a7a97afc99fb10301aedbc96a87))
12
+ * Fix parsing error on Chromecast when resyncing HLS ([#4869](https://github.com/shaka-project/shaka-player/issues/4869)) ([6dfa6d7](https://github.com/shaka-project/shaka-player/commit/6dfa6d7abbc98c1d1bc18cf70cb6cf1ad80a83f4)), closes [#4589](https://github.com/shaka-project/shaka-player/issues/4589)
13
+ * Fix potential AV sync issues after seek or adaptation ([#4886](https://github.com/shaka-project/shaka-player/issues/4886)) ([72396b0](https://github.com/shaka-project/shaka-player/commit/72396b019dfe69a50526361be7bc5273786424c0)), closes [#4589](https://github.com/shaka-project/shaka-player/issues/4589)
14
+ * Fix potential duplicate segments, AV sync issues ([#4884](https://github.com/shaka-project/shaka-player/issues/4884)) ([0ac5d7e](https://github.com/shaka-project/shaka-player/commit/0ac5d7ef2ad50bbd61d183566888227e4a1dca78)), closes [#4589](https://github.com/shaka-project/shaka-player/issues/4589)
15
+ * **HLS:** Fix discontinuity tracking ([#4881](https://github.com/shaka-project/shaka-player/issues/4881)) ([2a0ab01](https://github.com/shaka-project/shaka-player/commit/2a0ab012ee11778b9e666014afd92dda2343a780)), closes [#4589](https://github.com/shaka-project/shaka-player/issues/4589)
16
+ * **HLS:** Fix support for mixed AES-128/NONE decryption ([#4847](https://github.com/shaka-project/shaka-player/issues/4847)) ([d495255](https://github.com/shaka-project/shaka-player/commit/d495255523aef39b3f6abd1aa3e5196e976c338f))
17
+ * Make encoding problem detection more robust ([#4885](https://github.com/shaka-project/shaka-player/issues/4885)) ([b1f5c9a](https://github.com/shaka-project/shaka-player/commit/b1f5c9af69dba7ba7eac352e444bd75a0d4f2ae6)), closes [#4589](https://github.com/shaka-project/shaka-player/issues/4589)
18
+ * Release region timeline when unloading ([#4871](https://github.com/shaka-project/shaka-player/issues/4871)) ([8795a66](https://github.com/shaka-project/shaka-player/commit/8795a66edaa5b9c26b687cb28dc194db56e63a9f)), closes [#4850](https://github.com/shaka-project/shaka-player/issues/4850)
19
+ * Sync each segment against EXT-X-PROGRAM-DATE-TIME ([#4870](https://github.com/shaka-project/shaka-player/issues/4870)) ([8f9162f](https://github.com/shaka-project/shaka-player/commit/8f9162f154cd63404bbe95667396a9b12fe73ca6)), closes [#4589](https://github.com/shaka-project/shaka-player/issues/4589)
20
+ * Treat regions uniquely ([#4841](https://github.com/shaka-project/shaka-player/issues/4841)) ([36a3a44](https://github.com/shaka-project/shaka-player/commit/36a3a442cffd2067a48759ad03d05d76efc5accf)), closes [#4839](https://github.com/shaka-project/shaka-player/issues/4839)
21
+ * **ui:** Avoid submitting form if player is inside form ([#4866](https://github.com/shaka-project/shaka-player/issues/4866)) ([fc98e1d](https://github.com/shaka-project/shaka-player/commit/fc98e1d90643ead45632e8a0fb43e5c18aa0a267)), closes [#4861](https://github.com/shaka-project/shaka-player/issues/4861)
22
+
23
+ ## [4.3.2](https://github.com/shaka-project/shaka-player/compare/v4.3.1...v4.3.2) (2022-12-14)
24
+
25
+
26
+ ### Bug Fixes
27
+
28
+ * **chapters:** removed duplicate chapters by id ([#4810](https://github.com/shaka-project/shaka-player/issues/4810)) ([3588d37](https://github.com/shaka-project/shaka-player/commit/3588d3749d1fc3fe65a4428c774b1b5ed8f51652))
29
+ * Fix duplicate updates in StreamingEngine ([#4840](https://github.com/shaka-project/shaka-player/issues/4840)) ([65e188a](https://github.com/shaka-project/shaka-player/commit/65e188aef1f9edc642b563d343aca5de4ddc5caf)), closes [#4831](https://github.com/shaka-project/shaka-player/issues/4831)
30
+ * Fix rare exception after StreamingEngine teardown ([#4830](https://github.com/shaka-project/shaka-player/issues/4830)) ([a0fcb2e](https://github.com/shaka-project/shaka-player/commit/a0fcb2ec671ddc8f7ba5380312898068456d9b1c)), closes [#4813](https://github.com/shaka-project/shaka-player/issues/4813)
31
+ * **HLS:** Fix AV sync over ad boundaries ([#4824](https://github.com/shaka-project/shaka-player/issues/4824)) ([dab9ece](https://github.com/shaka-project/shaka-player/commit/dab9ece2be19e7674b56180413ec00f36500d1dc)), closes [#4589](https://github.com/shaka-project/shaka-player/issues/4589)
32
+ * **UI:** Suppress error log from fullscreen button on desktop ([#4823](https://github.com/shaka-project/shaka-player/issues/4823)) ([656d938](https://github.com/shaka-project/shaka-player/commit/656d938d190699511c3bd600749ce4e6167059d2)), closes [#4822](https://github.com/shaka-project/shaka-player/issues/4822)
33
+
3
34
  ## [4.3.1](https://github.com/shaka-project/shaka-player/compare/v4.3.0...v4.3.1) (2022-12-08)
4
35
 
5
36
 
package/CONTRIBUTORS CHANGED
@@ -98,6 +98,7 @@ Robert Colantuoni <rgc@colantuoni.com>
98
98
  Robert Galluccio <robertnw5@gmail.com>
99
99
  Rodolphe Breton <robloche@gmail.com>
100
100
  Rohit Makasana <rohitbm@google.com>
101
+ Rohan Gupta <rohangupta1528@gmail.com>
101
102
  Roi Lipman <roilipman@gmail.com>
102
103
  Roksolana Ivanyshyn <roksolana.ivanyshyn.pub@gmail.com>
103
104
  Rostislav Hejduk <Ross-cz@users.noreply.github.com>
package/README.md CHANGED
@@ -135,10 +135,10 @@ HLS features supported:
135
135
  - CEA-608/708 captions
136
136
  - Encrypted content with PlayReady and Widevine
137
137
  - Encrypted content with FairPlay (Safari on macOS and iOS 13+ only)
138
+ - Key rotation
138
139
  - Raw AAC, MP3, etc (without an MP4 container)
139
140
 
140
141
  HLS features **not** supported:
141
- - Key rotation: https://github.com/shaka-project/shaka-player/issues/917
142
142
  - I-frame-only playlists: https://github.com/shaka-project/shaka-player/issues/742
143
143
  - Low-latency streaming with blocking playlist reload
144
144
 
package/dist/deps.js CHANGED
@@ -81,7 +81,7 @@ goog.addDependency('../../../../lib/media/quality_observer.js', ['shaka.media.Qu
81
81
  goog.addDependency('../../../../lib/media/region_observer.js', ['shaka.media.RegionObserver'], ['shaka.media.IPlayheadObserver', 'shaka.media.RegionTimeline', 'shaka.util.EventManager', 'shaka.util.FakeEvent', 'shaka.util.FakeEventTarget'], {'lang': 'es6'});
82
82
  goog.addDependency('../../../../lib/media/region_timeline.js', ['shaka.media.RegionTimeline'], ['shaka.util.FakeEvent', 'shaka.util.FakeEventTarget', 'shaka.util.IReleasable', 'shaka.util.Timer'], {'lang': 'es6'});
83
83
  goog.addDependency('../../../../lib/media/segment_index.js', ['shaka.media.MetaSegmentIndex', 'shaka.media.SegmentIndex', 'shaka.media.SegmentIterator'], ['goog.asserts', 'shaka.media.SegmentReference', 'shaka.util.IReleasable', 'shaka.util.Timer'], {'lang': 'es8'});
84
- goog.addDependency('../../../../lib/media/segment_reference.js', ['shaka.media.InitSegmentReference', 'shaka.media.SegmentReference'], ['goog.asserts', 'shaka.util.ArrayUtils'], {'lang': 'es6'});
84
+ goog.addDependency('../../../../lib/media/segment_reference.js', ['shaka.media.InitSegmentReference', 'shaka.media.SegmentReference'], ['goog.asserts', 'shaka.log', 'shaka.util.ArrayUtils'], {'lang': 'es6'});
85
85
  goog.addDependency('../../../../lib/media/stall_detector.js', ['shaka.media.StallDetector', 'shaka.media.StallDetector.Implementation', 'shaka.media.StallDetector.MediaElementImplementation'], ['shaka.media.TimeRangesUtils', 'shaka.util.FakeEvent', 'shaka.util.IReleasable'], {'lang': 'es6'});
86
86
  goog.addDependency('../../../../lib/media/streaming_engine.js', ['shaka.media.StreamingEngine'], ['goog.asserts', 'shaka.log', 'shaka.media.InitSegmentReference', 'shaka.media.MediaSourceEngine', 'shaka.media.SegmentIterator', 'shaka.media.SegmentReference', 'shaka.net.Backoff', 'shaka.net.NetworkingEngine', 'shaka.util.DelayedTick', 'shaka.util.Destroyer', 'shaka.util.Error', 'shaka.util.FakeEvent', 'shaka.util.IDestroyable', 'shaka.util.Id3Utils', 'shaka.util.ManifestParserUtils', 'shaka.util.MimeUtils', 'shaka.util.Mp4Parser', 'shaka.util.Networking'], {'lang': 'es8'});
87
87
  goog.addDependency('../../../../lib/media/time_ranges_utils.js', ['shaka.media.TimeRangesUtils'], [], {'lang': 'es6'});
package/dist/locales.js CHANGED
@@ -721,45 +721,45 @@ shaka.ui.Locales.addTo = function(localization) {
721
721
  * @const
722
722
  */
723
723
  shaka.ui.Locales.Ids = {
724
- OFF: 'OFF',
725
- REWIND: 'REWIND',
726
- AD_DURATION: 'AD_DURATION',
727
- FULL_SCREEN: 'FULL_SCREEN',
724
+ SKIP_TO_LIVE: 'SKIP_TO_LIVE',
725
+ LIVE: 'LIVE',
728
726
  AD_TIME: 'AD_TIME',
729
- MORE_SETTINGS: 'MORE_SETTINGS',
730
- NOT_APPLICABLE: 'NOT_APPLICABLE',
731
- RESOLUTION: 'RESOLUTION',
732
- PAUSE: 'PAUSE',
733
727
  UNRECOGNIZED_LANGUAGE: 'UNRECOGNIZED_LANGUAGE',
734
- CAST: 'CAST',
735
- SEEK: 'SEEK',
728
+ OFF: 'OFF',
729
+ EXIT_FULL_SCREEN: 'EXIT_FULL_SCREEN',
730
+ CAPTIONS: 'CAPTIONS',
731
+ SUBTITLE_FORCED: 'SUBTITLE_FORCED',
732
+ ENTER_LOOP_MODE: 'ENTER_LOOP_MODE',
733
+ PAUSE: 'PAUSE',
734
+ ON: 'ON',
735
+ FAST_FORWARD: 'FAST_FORWARD',
736
+ RESOLUTION: 'RESOLUTION',
736
737
  BACK: 'BACK',
738
+ PLAYBACK_RATE: 'PLAYBACK_RATE',
739
+ LOOP: 'LOOP',
740
+ MULTIPLE_LANGUAGES: 'MULTIPLE_LANGUAGES',
741
+ EXIT_PICTURE_IN_PICTURE: 'EXIT_PICTURE_IN_PICTURE',
742
+ PICTURE_IN_PICTURE: 'PICTURE_IN_PICTURE',
743
+ STATISTICS: 'STATISTICS',
737
744
  ENTER_PICTURE_IN_PICTURE: 'ENTER_PICTURE_IN_PICTURE',
738
- UNMUTE: 'UNMUTE',
745
+ MUTE: 'MUTE',
739
746
  AD_PROGRESS: 'AD_PROGRESS',
740
- FAST_FORWARD: 'FAST_FORWARD',
741
- EXIT_LOOP_MODE: 'EXIT_LOOP_MODE',
742
- PLAY: 'PLAY',
743
- SUBTITLE_FORCED: 'SUBTITLE_FORCED',
744
- AUTO_QUALITY: 'AUTO_QUALITY',
745
747
  AIRPLAY: 'AIRPLAY',
746
- LIVE: 'LIVE',
747
- SKIP_TO_LIVE: 'SKIP_TO_LIVE',
748
+ CAST: 'CAST',
749
+ UNMUTE: 'UNMUTE',
750
+ AUTO_QUALITY: 'AUTO_QUALITY',
751
+ NOT_APPLICABLE: 'NOT_APPLICABLE',
752
+ PLAY: 'PLAY',
748
753
  UNDETERMINED_LANGUAGE: 'UNDETERMINED_LANGUAGE',
749
- PLAYBACK_RATE: 'PLAYBACK_RATE',
750
- CAPTIONS: 'CAPTIONS',
751
- PICTURE_IN_PICTURE: 'PICTURE_IN_PICTURE',
752
- EXIT_PICTURE_IN_PICTURE: 'EXIT_PICTURE_IN_PICTURE',
753
- ON: 'ON',
754
+ SEEK: 'SEEK',
755
+ AD_DURATION: 'AD_DURATION',
756
+ SKIP_AD: 'SKIP_AD',
754
757
  VOLUME: 'VOLUME',
755
- ENTER_LOOP_MODE: 'ENTER_LOOP_MODE',
758
+ REWIND: 'REWIND',
756
759
  LANGUAGE: 'LANGUAGE',
757
- SKIP_AD: 'SKIP_AD',
758
- MULTIPLE_LANGUAGES: 'MULTIPLE_LANGUAGES',
760
+ MORE_SETTINGS: 'MORE_SETTINGS',
759
761
  REPLAY: 'REPLAY',
760
- MUTE: 'MUTE',
761
762
  QUALITY: 'QUALITY',
762
- LOOP: 'LOOP',
763
- STATISTICS: 'STATISTICS',
764
- EXIT_FULL_SCREEN: 'EXIT_FULL_SCREEN',
763
+ FULL_SCREEN: 'FULL_SCREEN',
764
+ EXIT_LOOP_MODE: 'EXIT_LOOP_MODE',
765
765
  };
@@ -1202,10 +1202,20 @@ declare namespace shaka.media {
1202
1202
  * Mark the reference as unavailable.
1203
1203
  */
1204
1204
  markAsUnavailable ( ) : any ;
1205
+ /**
1206
+ * Offset the segment reference by a fixed amount.
1207
+ * @param offset The amount to add to the segment's start and end times.
1208
+ */
1209
+ offset (offset : number ) : any ;
1205
1210
  /**
1206
1211
  * Set the segment's thumbnail sprite.
1207
1212
  */
1208
1213
  setThumbnailSprite (thumbnailSprite : shaka.media.SegmentReference.ThumbnailSprite ) : any ;
1214
+ /**
1215
+ * Sync this segment against a particular sync time that will serve as "0" in
1216
+ * the presentation timeline.
1217
+ */
1218
+ syncAgainst (lowestSyncTime : number ) : any ;
1209
1219
  }
1210
1220
  }
1211
1221
  // Generated from /home/runner/work/shaka-player/shaka-player/dist/shaka-player.compiled.externs.js
@@ -1202,10 +1202,20 @@ declare namespace shaka.media {
1202
1202
  * Mark the reference as unavailable.
1203
1203
  */
1204
1204
  markAsUnavailable ( ) : any ;
1205
+ /**
1206
+ * Offset the segment reference by a fixed amount.
1207
+ * @param offset The amount to add to the segment's start and end times.
1208
+ */
1209
+ offset (offset : number ) : any ;
1205
1210
  /**
1206
1211
  * Set the segment's thumbnail sprite.
1207
1212
  */
1208
1213
  setThumbnailSprite (thumbnailSprite : shaka.media.SegmentReference.ThumbnailSprite ) : any ;
1214
+ /**
1215
+ * Sync this segment against a particular sync time that will serve as "0" in
1216
+ * the presentation timeline.
1217
+ */
1218
+ syncAgainst (lowestSyncTime : number ) : any ;
1209
1219
  }
1210
1220
  }
1211
1221
  // Generated from /home/runner/work/shaka-player/shaka-player/dist/shaka-player.compiled.debug.externs.js
@@ -1797,6 +1797,18 @@ shaka.media.SegmentReference = class {
1797
1797
  * @return {?shaka.media.SegmentReference.ThumbnailSprite}
1798
1798
  */
1799
1799
  getThumbnailSprite() {}
1800
+ /**
1801
+ * Offset the segment reference by a fixed amount.
1802
+ * @param {number} offset The amount to add to the segment's start and end
1803
+ * times.
1804
+ */
1805
+ offset(offset) {}
1806
+ /**
1807
+ * Sync this segment against a particular sync time that will serve as "0" in
1808
+ * the presentation timeline.
1809
+ * @param {number} lowestSyncTime
1810
+ */
1811
+ syncAgainst(lowestSyncTime) {}
1800
1812
  };
1801
1813
  /**
1802
1814
  * Rather than using booleans to communicate what the state of the reference,