shaka-player 4.4.2 → 4.4.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 (57) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/demo/common/asset.js +5 -0
  3. package/demo/common/assets.js +20 -5
  4. package/demo/common/message_ids.js +1 -1
  5. package/demo/locales/en.json +2 -1
  6. package/demo/locales/source.json +5 -1
  7. package/demo/main.js +1 -1
  8. package/demo/search.js +3 -3
  9. package/dist/demo.compiled.debug.js +72 -70
  10. package/dist/demo.compiled.debug.map +3 -3
  11. package/dist/demo.compiled.js +72 -70
  12. package/dist/demo.compiled.map +3 -3
  13. package/dist/locales.js +30 -30
  14. package/dist/receiver.compiled.debug.js +38 -36
  15. package/dist/receiver.compiled.debug.map +3 -3
  16. package/dist/receiver.compiled.js +38 -36
  17. package/dist/receiver.compiled.map +3 -3
  18. package/dist/shaka-player.compiled.d.ts +222 -1
  19. package/dist/shaka-player.compiled.debug.d.ts +222 -1
  20. package/dist/shaka-player.compiled.debug.externs.js +271 -1
  21. package/dist/shaka-player.compiled.debug.js +233 -228
  22. package/dist/shaka-player.compiled.debug.map +3 -3
  23. package/dist/shaka-player.compiled.externs.js +271 -1
  24. package/dist/shaka-player.compiled.js +1035 -1028
  25. package/dist/shaka-player.compiled.map +3 -3
  26. package/dist/shaka-player.ui.d.ts +222 -1
  27. package/dist/shaka-player.ui.debug.d.ts +222 -1
  28. package/dist/shaka-player.ui.debug.externs.js +271 -1
  29. package/dist/shaka-player.ui.debug.js +256 -251
  30. package/dist/shaka-player.ui.debug.map +3 -3
  31. package/dist/shaka-player.ui.externs.js +271 -1
  32. package/dist/shaka-player.ui.js +1162 -1155
  33. package/dist/shaka-player.ui.map +3 -3
  34. package/docs/tutorials/offline.md +1 -1
  35. package/lib/dash/dash_parser.js +4 -1
  36. package/lib/hls/hls_parser.js +60 -24
  37. package/lib/media/segment_index.js +4 -4
  38. package/lib/media/segment_reference.js +6 -1
  39. package/lib/media/streaming_engine.js +14 -24
  40. package/lib/player.js +1 -1
  41. package/lib/text/cue.js +47 -47
  42. package/lib/text/vtt_text_parser.js +2 -2
  43. package/lib/util/cmcd_manager.js +6 -1
  44. package/lib/util/manifest_parser_utils.js +10 -4
  45. package/lib/util/platform.js +14 -0
  46. package/lib/util/ts_parser.js +3 -3
  47. package/package.json +1 -1
  48. package/test/dash/dash_parser_manifest_unit.js +5 -0
  49. package/test/dash/dash_parser_segment_base_unit.js +5 -0
  50. package/test/dash/dash_parser_segment_list_unit.js +21 -17
  51. package/test/dash/dash_parser_segment_template_unit.js +47 -0
  52. package/test/hls/hls_live_unit.js +33 -0
  53. package/test/hls/hls_parser_unit.js +2 -57
  54. package/test/test/util/dash_parser_util.js +16 -7
  55. package/test/text/vtt_text_parser_unit.js +2 -17
  56. package/test/transmuxer/transmuxer_integration.js +4 -4
  57. package/test/util/ts_parser_unit.js +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.4.3](https://github.com/shaka-project/shaka-player/compare/v4.4.2...v4.4.3) (2023-10-04)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * Allow PID change in TsParser ([#5681](https://github.com/shaka-project/shaka-player/issues/5681)) ([ac8bb85](https://github.com/shaka-project/shaka-player/commit/ac8bb85bd8b02d0654af9fc7749cae7071c7abc5))
9
+ * **CMCD:** Fix CMCD for some mimetypes in src= ([#5699](https://github.com/shaka-project/shaka-player/issues/5699)) ([8829e1e](https://github.com/shaka-project/shaka-player/commit/8829e1eb21f66479a16bcf85df915be9dc0d8241))
10
+ * **Demo:** Fix url of "Low Latency HLS Live" asset ([#5708](https://github.com/shaka-project/shaka-player/issues/5708)) ([d0dbed3](https://github.com/shaka-project/shaka-player/commit/d0dbed330ee00f33bfb0c6b077bddad1a104c0ec))
11
+ * Fix creation of new Stream object for each manifest request in DASH Live when using CEA ([#5674](https://github.com/shaka-project/shaka-player/issues/5674)) ([fdc1e9f](https://github.com/shaka-project/shaka-player/commit/fdc1e9fe99cdf336fb3dc411b7174eba48acf5bb))
12
+ * Fix some properties on the shaka.text.Cue that are mangled ([#5673](https://github.com/shaka-project/shaka-player/issues/5673)) ([c69e50f](https://github.com/shaka-project/shaka-player/commit/c69e50f508ffeb5108133e39acd60c36b45c788d))
13
+ * **HLS:** Fix audio and video out of sync ([#5658](https://github.com/shaka-project/shaka-player/issues/5658)) ([7df352d](https://github.com/shaka-project/shaka-player/commit/7df352db25c3dc2c14315bb65fd0159b3c195528))
14
+ * **HLS:** Fix display CEA-708 in HLS ([#5694](https://github.com/shaka-project/shaka-player/issues/5694)) ([ed1d954](https://github.com/shaka-project/shaka-player/commit/ed1d95433b21049c6daf0b24d6ded13f46130e94))
15
+ * **HLS:** Fix presentation delay for small live playlists (eg: 3-4 segments) ([#5687](https://github.com/shaka-project/shaka-player/issues/5687)) ([10b03e7](https://github.com/shaka-project/shaka-player/commit/10b03e7b2c026fc2393a7244946feca5b7bebd1b))
16
+ * **HLS:** Skip segments without duration and without partial segments ([#5705](https://github.com/shaka-project/shaka-player/issues/5705)) ([eedad19](https://github.com/shaka-project/shaka-player/commit/eedad19b3e121d117e6748cbf965d58f30db49ca))
17
+ * **HLS:** Support AES-128 in init segment according the RFC ([#5677](https://github.com/shaka-project/shaka-player/issues/5677)) ([9d50f01](https://github.com/shaka-project/shaka-player/commit/9d50f01fbb4d958e347f623450438d526a338c2f))
18
+ * seeking in segment timeline returns incorrect index ([#5716](https://github.com/shaka-project/shaka-player/issues/5716)) ([15b8da0](https://github.com/shaka-project/shaka-player/commit/15b8da05aa70ae73957c68d00c78528a0ec7deb9)), closes [#5664](https://github.com/shaka-project/shaka-player/issues/5664)
19
+ * **WebVTT:** Fix text displayed out of picture and with overlapping lines ([#5662](https://github.com/shaka-project/shaka-player/issues/5662)) ([580b3f7](https://github.com/shaka-project/shaka-player/commit/580b3f7229cb033437d2f4285dfb108358f13afb)), closes [#5661](https://github.com/shaka-project/shaka-player/issues/5661)
20
+
21
+
22
+ ### Performance Improvements
23
+
24
+ * Optimization to resolve uris ([#5657](https://github.com/shaka-project/shaka-player/issues/5657)) ([971b2a0](https://github.com/shaka-project/shaka-player/commit/971b2a0074ada35f1891d956d6ec9601ad1ece39))
25
+
3
26
  ## [4.4.2](https://github.com/shaka-project/shaka-player/compare/v4.4.1...v4.4.2) (2023-09-13)
4
27
 
5
28
 
@@ -167,6 +167,11 @@ const ShakaDemoAssetInfo = class {
167
167
  return this.drm.length == 1 && this.drm[0] == shakaAssets.KeySystem.CLEAR;
168
168
  }
169
169
 
170
+ /** @return {boolean} */
171
+ isAes128() {
172
+ return this.drm.length == 1 && this.drm[0] == shakaAssets.KeySystem.AES128;
173
+ }
174
+
170
175
  /**
171
176
  * @param {string} mediaPlaylistFullMimeType
172
177
  * @return {!ShakaDemoAssetInfo}
@@ -50,6 +50,7 @@ shakaAssets.KeySystem = {
50
50
  FAIRPLAY: shakaDemo.MessageIds.FAIRPLAY,
51
51
  PLAYREADY: shakaDemo.MessageIds.PLAYREADY,
52
52
  WIDEVINE: shakaDemo.MessageIds.WIDEVINE,
53
+ AES128: shakaDemo.MessageIds.AES128,
53
54
  CLEAR: shakaDemo.MessageIds.CLEAR,
54
55
  };
55
56
 
@@ -88,6 +89,7 @@ shakaAssets.identifierForKeySystem = (keySystem) => {
88
89
  case KeySystem.FAIRPLAY: return 'com.apple.fps';
89
90
  case KeySystem.PLAYREADY: return 'com.microsoft.playready';
90
91
  case KeySystem.WIDEVINE: return 'com.widevine.alpha';
92
+ case KeySystem.AES128: return 'aes128';
91
93
  default: return 'no drm protection';
92
94
  }
93
95
  };
@@ -151,7 +153,7 @@ shakaAssets.Feature = {
151
153
  LCEVC: shakaDemo.MessageIds.LCEVC,
152
154
 
153
155
  // Set if the asset has Low Latency mode.
154
- LOW_LATENCY_STREAM: shakaDemo.MessageIds.LOW_LATENCY_STREAM,
156
+ LOW_LATENCY: shakaDemo.MessageIds.LOW_LATENCY,
155
157
  };
156
158
 
157
159
 
@@ -360,6 +362,7 @@ shakaAssets.testAssets = [
360
362
  /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/sintel.png',
361
363
  /* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/sintel-ts-aes-key-rotation/master.m3u8',
362
364
  /* source= */ shakaAssets.Source.SHAKA)
365
+ .addKeySystem(shakaAssets.KeySystem.AES128)
363
366
  .addFeature(shakaAssets.Feature.HLS)
364
367
  .addFeature(shakaAssets.Feature.MP2TS)
365
368
  .addFeature(shakaAssets.Feature.OFFLINE),
@@ -368,6 +371,7 @@ shakaAssets.testAssets = [
368
371
  /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/sintel.png',
369
372
  /* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/sintel-fmp4-aes/master.m3u8',
370
373
  /* source= */ shakaAssets.Source.SHAKA)
374
+ .addKeySystem(shakaAssets.KeySystem.AES128)
371
375
  .addFeature(shakaAssets.Feature.HLS)
372
376
  .addFeature(shakaAssets.Feature.MP4)
373
377
  .addFeature(shakaAssets.Feature.OFFLINE),
@@ -833,7 +837,7 @@ shakaAssets.testAssets = [
833
837
  .addFeature(shakaAssets.Feature.DASH)
834
838
  .addFeature(shakaAssets.Feature.LIVE)
835
839
  .addFeature(shakaAssets.Feature.MP4)
836
- .addFeature(shakaAssets.Feature.LOW_LATENCY_STREAM)
840
+ .addFeature(shakaAssets.Feature.LOW_LATENCY)
837
841
  .setExtraConfig({
838
842
  streaming: {
839
843
  lowLatencyMode: true,
@@ -864,7 +868,7 @@ shakaAssets.testAssets = [
864
868
  .addFeature(shakaAssets.Feature.DASH)
865
869
  .addFeature(shakaAssets.Feature.LIVE)
866
870
  .addFeature(shakaAssets.Feature.MP4)
867
- .addFeature(shakaAssets.Feature.LOW_LATENCY_STREAM)
871
+ .addFeature(shakaAssets.Feature.LOW_LATENCY)
868
872
  .setExtraConfig({
869
873
  streaming: {
870
874
  lowLatencyMode: true,
@@ -948,6 +952,7 @@ shakaAssets.testAssets = [
948
952
  /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/art_of_motion.png',
949
953
  /* manifestUri= */ 'https://bitmovin-a.akamaihd.net/content/art-of-motion_drm/m3u8s/11331.m3u8',
950
954
  /* source= */ shakaAssets.Source.BITCODIN)
955
+ .addKeySystem(shakaAssets.KeySystem.AES128)
951
956
  .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
952
957
  .addFeature(shakaAssets.Feature.HLS)
953
958
  .addFeature(shakaAssets.Feature.MP2TS)
@@ -1087,6 +1092,16 @@ shakaAssets.testAssets = [
1087
1092
  kind: 'subtitle',
1088
1093
  mime: 'text/vtt',
1089
1094
  }),
1095
+ new ShakaDemoAssetInfo(
1096
+ /* name= */ 'Sintel (DASH, AES-128)',
1097
+ /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/sintel.png',
1098
+ /* manifestUri= */ 'https://amssamples.streaming.mediaservices.windows.net/49b57c87-f5f3-48b3-ba22-c55cfdffa9cb/Sintel.ism/manifest(format=mpd-time-csf)',
1099
+ /* source= */ shakaAssets.Source.AZURE_MEDIA_SERVICES)
1100
+ .addKeySystem(shakaAssets.KeySystem.AES128)
1101
+ .addFeature(shakaAssets.Feature.DASH)
1102
+ .addFeature(shakaAssets.Feature.MP4)
1103
+ .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
1104
+ .addFeature(shakaAssets.Feature.OFFLINE),
1090
1105
  // End Azure Media Services assets }}}
1091
1106
 
1092
1107
  // GPAC assets {{{
@@ -1254,12 +1269,12 @@ shakaAssets.testAssets = [
1254
1269
  new ShakaDemoAssetInfo(
1255
1270
  /* name= */ 'Low Latency HLS Live',
1256
1271
  /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/apple_test_pattern.png',
1257
- /* manifestUri= */ 'https://ll-hls-test.apple.com/cmaf/master.m3u8',
1272
+ /* manifestUri= */ 'https://ll-hls-test.cdn-apple.com/llhls4/ll-hls-test-04/multi.m3u8',
1258
1273
  /* source= */ shakaAssets.Source.APPLE)
1259
1274
  .addFeature(shakaAssets.Feature.HLS)
1260
1275
  .addFeature(shakaAssets.Feature.LIVE)
1261
1276
  .addFeature(shakaAssets.Feature.MP4)
1262
- .addFeature(shakaAssets.Feature.LOW_LATENCY_STREAM)
1277
+ .addFeature(shakaAssets.Feature.LOW_LATENCY)
1263
1278
  .setExtraConfig({
1264
1279
  streaming: {
1265
1280
  lowLatencyMode: true,
@@ -33,8 +33,8 @@ shakaDemo.MessageIds = {
33
33
  VOD: 'DEMO_VOD',
34
34
  WEBM: 'DEMO_WEBM',
35
35
  XLINK: 'DEMO_XLINK',
36
- LOW_LATENCY_STREAM: 'DEMO_LOW_LATENCY_STREAM',
37
36
  /* Key systems. */
37
+ AES128: 'DEMO_AES128',
38
38
  CLEAR: 'DEMO_CLEAR',
39
39
  CLEAR_KEY: 'DEMO_CLEAR_KEY',
40
40
  FAIRPLAY: 'DEMO_FAIRPLAY',
@@ -6,6 +6,7 @@
6
6
  "DEMO_AD_TAG_URL": "Ad Tag URL",
7
7
  "DEMO_ADS_TAB": "Ads",
8
8
  "DEMO_ADS_SECTION_HEADER": "Ads",
9
+ "DEMO_AES128": "AES-128 protection",
9
10
  "DEMO_ALL_CONTENT": "ALL CONTENT",
10
11
  "DEMO_ALWAYS_STREAM_TEXT": "Always Stream Text",
11
12
  "DEMO_ALWAYS_STREAM_TEXT_WARNING": "Text must always be streamed while native controls are enabled, for captions to work.",
@@ -135,7 +136,7 @@
135
136
  "DEMO_LCEVC_DYNAMIC_PERFORMANCE_SCALING": "LCEVC Dynamic Performance scaling",
136
137
  "DEMO_LCEVC_LOG_LEVEL": "LCEVC Log Level",
137
138
  "DEMO_LCEVC_SECTION_HEADER": "MPEG-5 Part-2 LCEVC",
138
- "DEMO_LOW_LATENCY_STREAM": "Low Latency Streams",
139
+ "DEMO_LOW_LATENCY": "Low Latency Stream",
139
140
  "DEMO_LIBRARIES": "Google Hosted Libraries",
140
141
  "DEMO_LICENSE": "Apache License",
141
142
  "DEMO_LICENSE_CERTIFICATE_URL": "Custom License Certificate URL",
@@ -27,6 +27,10 @@
27
27
  "description": "The label on a field that allows users to provide a Ad Tag URL for a custom asset.",
28
28
  "message": "Ad Tag URL"
29
29
  },
30
+ "DEMO_AES128": {
31
+ "description": "Text that describes an asset that is not protected with any Digital Rights Management system but it is protected with AES-128.",
32
+ "message": "[JARGON:AES-128] protection"
33
+ },
30
34
  "DEMO_ALL_CONTENT": {
31
35
  "description": "A link in the header, that switches to a page for browsing or searching through the entire content library.",
32
36
  "message": "ALL CONTENT"
@@ -1135,7 +1139,7 @@
1135
1139
  "description": "Max number of segments to be prefetched ahead of current time position.",
1136
1140
  "message": "Segment Prefetch Limit."
1137
1141
  },
1138
- "DEMO_LOW_LATENCY_STREAM": {
1142
+ "DEMO_LOW_LATENCY": {
1139
1143
  "description": "A tag that marks an asset as low latency.",
1140
1144
  "message": "Low Latency stream"
1141
1145
  }
package/demo/main.js CHANGED
@@ -743,7 +743,7 @@ shakaDemo.Main = class {
743
743
  return shakaDemo.MessageIds.UNSUPPORTED_NO_DOWNLOAD;
744
744
  }
745
745
 
746
- if (!asset.isClear()) {
746
+ if (!asset.isClear() && !asset.isAes128()) {
747
747
  const hasSupportedDRM = asset.drm.some((drm) => {
748
748
  return this.support_.drm[shakaAssets.identifierForKeySystem(drm)];
749
749
  });
package/demo/search.js CHANGED
@@ -374,7 +374,7 @@ shakaDemo.Search = class {
374
374
  }), SOURCE);
375
375
  this.makeSelectInput_(coreContainer,
376
376
  shakaDemo.MessageIds.LIVE_SEARCH,
377
- [Feature.LIVE, Feature.VOD], FEATURE);
377
+ [Feature.LOW_LATENCY, Feature.LIVE, Feature.VOD], FEATURE);
378
378
 
379
379
  // Special terms.
380
380
  const containerStyle = shakaDemo.InputContainer.Style.FLEX;
@@ -403,8 +403,8 @@ shakaDemo.Search = class {
403
403
  shakaDemo.MessageIds.THUMBNAILS);
404
404
  this.makeBooleanInput_(specialContainer, Feature.LCEVC, FEATURE,
405
405
  shakaDemo.MessageIds.LCEVC);
406
- this.makeBooleanInput_(specialContainer, Feature.LOW_LATENCY_STREAM,
407
- FEATURE, shakaDemo.MessageIds.LOW_LATENCY_STREAM);
406
+ this.makeBooleanInput_(specialContainer, Feature.LOW_LATENCY,
407
+ FEATURE, shakaDemo.MessageIds.LOW_LATENCY);
408
408
 
409
409
  container.appendChild(this.resultsDiv_);
410
410
  }