shaka-player 4.4.1 → 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 (84) hide show
  1. package/.github/workflows/deflake.yaml +8 -5
  2. package/.github/workflows/release-please.yaml +47 -7
  3. package/.github/workflows/shaka-bot-commands/command-test.sh +1 -1
  4. package/CHANGELOG.md +43 -0
  5. package/CONTRIBUTORS +1 -0
  6. package/demo/common/asset.js +5 -0
  7. package/demo/common/assets.js +20 -5
  8. package/demo/common/message_ids.js +1 -1
  9. package/demo/custom.js +5 -5
  10. package/demo/locales/en.json +2 -1
  11. package/demo/locales/source.json +5 -1
  12. package/demo/main.js +1 -1
  13. package/demo/search.js +3 -3
  14. package/dist/demo.compiled.debug.js +75 -73
  15. package/dist/demo.compiled.debug.map +3 -3
  16. package/dist/demo.compiled.js +75 -73
  17. package/dist/demo.compiled.map +3 -3
  18. package/dist/deps.js +2 -2
  19. package/dist/locales.js +31 -31
  20. package/dist/receiver.compiled.debug.js +38 -36
  21. package/dist/receiver.compiled.debug.map +3 -3
  22. package/dist/receiver.compiled.js +38 -36
  23. package/dist/receiver.compiled.map +3 -3
  24. package/dist/shaka-player.compiled.d.ts +533 -296
  25. package/dist/shaka-player.compiled.debug.d.ts +533 -296
  26. package/dist/shaka-player.compiled.debug.externs.js +308 -1
  27. package/dist/shaka-player.compiled.debug.js +280 -265
  28. package/dist/shaka-player.compiled.debug.map +3 -3
  29. package/dist/shaka-player.compiled.externs.js +308 -1
  30. package/dist/shaka-player.compiled.js +1037 -1027
  31. package/dist/shaka-player.compiled.map +4 -4
  32. package/dist/shaka-player.ui.d.ts +577 -340
  33. package/dist/shaka-player.ui.debug.d.ts +577 -340
  34. package/dist/shaka-player.ui.debug.externs.js +308 -1
  35. package/dist/shaka-player.ui.debug.js +341 -326
  36. package/dist/shaka-player.ui.debug.map +3 -3
  37. package/dist/shaka-player.ui.externs.js +308 -1
  38. package/dist/shaka-player.ui.js +1149 -1141
  39. package/dist/shaka-player.ui.map +4 -4
  40. package/docs/tutorials/fairplay.md +8 -0
  41. package/docs/tutorials/faq.md +1 -1
  42. package/docs/tutorials/offline.md +1 -1
  43. package/externs/shaka/text.js +7 -0
  44. package/lib/dash/dash_parser.js +4 -1
  45. package/lib/dash/segment_template.js +3 -0
  46. package/lib/hls/hls_parser.js +68 -28
  47. package/lib/media/media_source_engine.js +1 -1
  48. package/lib/media/segment_index.js +4 -4
  49. package/lib/media/segment_reference.js +6 -1
  50. package/lib/media/streaming_engine.js +14 -24
  51. package/lib/player.js +8 -57
  52. package/lib/text/cue.js +47 -47
  53. package/lib/text/lrc_text_parser.js +8 -0
  54. package/lib/text/mp4_ttml_parser.js +8 -0
  55. package/lib/text/mp4_vtt_parser.js +8 -0
  56. package/lib/text/sbv_text_parser.js +8 -0
  57. package/lib/text/srt_text_parser.js +8 -0
  58. package/lib/text/ssa_text_parser.js +8 -0
  59. package/lib/text/text_engine.js +8 -1
  60. package/lib/text/ttml_text_parser.js +10 -1
  61. package/lib/text/ui_text_displayer.js +49 -3
  62. package/lib/text/vtt_text_parser.js +19 -3
  63. package/lib/transmuxer/ts_transmuxer.js +44 -43
  64. package/lib/util/cmcd_manager.js +6 -1
  65. package/lib/util/error.js +16 -10
  66. package/lib/util/manifest_parser_utils.js +10 -4
  67. package/lib/util/platform.js +14 -0
  68. package/lib/util/player_configuration.js +2 -2
  69. package/lib/util/stream_utils.js +13 -11
  70. package/lib/util/ts_parser.js +73 -16
  71. package/package.json +2 -2
  72. package/test/dash/dash_parser_manifest_unit.js +5 -0
  73. package/test/dash/dash_parser_segment_base_unit.js +5 -0
  74. package/test/dash/dash_parser_segment_list_unit.js +21 -17
  75. package/test/dash/dash_parser_segment_template_unit.js +47 -0
  76. package/test/hls/hls_live_unit.js +33 -0
  77. package/test/hls/hls_parser_unit.js +2 -57
  78. package/test/test/util/dash_parser_util.js +16 -7
  79. package/test/text/text_engine_unit.js +4 -2
  80. package/test/text/ttml_text_parser_unit.js +3 -4
  81. package/test/text/web_vtt_layout_integration.js +0 -1
  82. package/test/transmuxer/transmuxer_integration.js +4 -4
  83. package/test/util/ts_parser_unit.js +1 -1
  84. package/ui/language_utils.js +0 -15
@@ -1,16 +1,19 @@
1
1
  name: Deflake Tests
2
2
 
3
- # Runs when the Selenum nightly test workflow completes. This will run with
4
- # full privileges, even if the other workflow doesn't. That allows us to
5
- # trigger re-runs if we think the results might be flaky.
3
+ # Runs when the Selenum lab test or PR test workflows complete. This will run
4
+ # with full privileges, even if the other workflow doesn't. That allows us to
5
+ # trigger re-runs if we think the results might be flaky. A test run will be
6
+ # given up to 3 runs to succeed.
6
7
  on:
7
8
  workflow_run:
8
- workflows: [Selenium Lab Tests]
9
+ workflows:
10
+ - Selenium Lab Tests
11
+ - Build and Test PR
9
12
  types: [completed]
10
13
 
11
14
  jobs:
12
15
  deflake:
13
- if: ${{ github.event.workflow_run.event == 'schedule' && github.event.workflow_run.conclusion == 'failure' }}
16
+ if: ${{ github.event.workflow_run.conclusion == 'failure' }}
14
17
  runs-on: ubuntu-latest
15
18
 
16
19
  steps:
@@ -29,8 +29,6 @@ jobs:
29
29
  - uses: actions/checkout@v3
30
30
  if: steps.release.outputs.release_created == false
31
31
  with:
32
- # Checkout the fork, where the PR is generated from.
33
- repository: shaka-bot/${{ github.event.repository.name }}
34
32
  # Use a special shaka-bot access token for releases.
35
33
  token: ${{ secrets.RELEASE_PLEASE_TOKEN }}
36
34
  - name: Custom update Player version
@@ -63,8 +61,7 @@ jobs:
63
61
  steps:
64
62
  - uses: actions/checkout@v3
65
63
  with:
66
- # Check out the origin repo, not the fork, and do it at main, not the
67
- # PR branch.
64
+ # Check out the origin repo, and do it at main, not the PR branch.
68
65
  ref: main
69
66
  # Use a special shaka-bot access token for releases.
70
67
  token: ${{ secrets.RELEASE_PLEASE_TOKEN }}
@@ -93,10 +90,52 @@ jobs:
93
90
  node-version: 16
94
91
  registry-url: 'https://registry.npmjs.org'
95
92
 
93
+ - name: Compute NPM tags
94
+ run: |
95
+ # NPM publish always sets a tag. If you don't provide an explicit
96
+ # tag, you get the "latest" tag by default, but we want "latest" to
97
+ # always point to the highest version number. So we set an explicit
98
+ # tag on every "publish" command, then follow up with a command to
99
+ # set "latest" only if this release was the highest version yet.
100
+
101
+ # The explicit tag is based on the branch. If the git tag is v4.4.1,
102
+ # the branch was v4.4.x, and the explicit NPM tag should be
103
+ # v4.4-latest.
104
+ GIT_TAG_NAME=${{ needs.release.outputs.tag_name }}
105
+ NPM_TAG=$(echo "$GIT_TAG_NAME" | cut -f 1-2 -d .)-latest
106
+ echo "NPM_TAG=$NPM_TAG" >> $GITHUB_ENV
107
+
108
+ # We only tag the NPM package as "latest" if this release is the
109
+ # highest version to date.
110
+ RELEASE_TAGS=$(git tag | grep ^v[0-9] | grep -Ev -- '-(master|main)')
111
+ LATEST_RELEASE=$(echo "$RELEASE_TAGS" | sort --version-sort | tail -1)
112
+
113
+ if [[ "$GIT_TAG_NAME" == "$LATEST_RELEASE" ]]; then
114
+ NPM_LATEST=true
115
+ else
116
+ NPM_LATEST=false
117
+ fi
118
+ echo NPM_LATEST=$NPM_LATEST >> $GITHUB_ENV
119
+
120
+ # Debug the decisions made here.
121
+ echo "Latest release: $LATEST_RELEASE"
122
+ echo "This release: $GIT_TAG_NAME"
123
+ echo "NPM tag: $NPM_TAG"
124
+ echo "NPM latest: $NPM_LATEST"
125
+
96
126
  - run: npm ci
97
- - run: npm publish
127
+ - name: Publish
98
128
  env:
99
129
  NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
130
+ run: |
131
+ # Publish with an explicit tag.
132
+ npm publish --tag "$NPM_TAG"
133
+
134
+ # Add the "latest" tag if needed.
135
+ if [[ "$NPM_LATEST" == "true" ]]; then
136
+ NPM_VERSION=$(npm version --json | jq -r '."shaka-player"')
137
+ npm dist-tag add "shaka-player@$NPM_VERSION" latest
138
+ fi
100
139
 
101
140
  - run: npm pack
102
141
  - uses: svenstaro/upload-release-action@483c1e56f95e88835747b1c7c60581215016cbf2
@@ -137,10 +176,11 @@ jobs:
137
176
  TAG_NAME=${{ needs.release.outputs.tag_name }}
138
177
 
139
178
  if [[ "$TAG_NAME" == "$LATEST_RELEASE" ]]; then
140
- echo APPSPOT_PROMOTE=true >> $GITHUB_ENV
179
+ APPSPOT_PROMOTE=true
141
180
  else
142
- echo APPSPOT_PROMOTE=false >> $GITHUB_ENV
181
+ APPSPOT_PROMOTE=false
143
182
  fi
183
+ APPSPOT_PROMOTE=$APPSPOT_PROMOTE >> $GITHUB_ENV
144
184
 
145
185
  # Debug the decisions made here.
146
186
  echo "Subdomain: $APPSPOT_SUBDOMAIN"
@@ -25,7 +25,7 @@ WORKFLOW_ARGS=( "pr=$PR_NUMBER" )
25
25
 
26
26
  case "${SHAKA_BOT_ARGUMENTS[0]}" in
27
27
  # CE devices only.
28
- ce) WORKFLOW_ARGS+=( "browser_filter=Tizen Chromecast ChromeAndroid" ) ;;
28
+ ce) WORKFLOW_ARGS+=( "browser_filter=Tizen ChromecastUltra ChromecastGTV ChromeAndroid" ) ;;
29
29
 
30
30
  # No command argument, no extra workflow arguments.
31
31
  "") ;;
package/CHANGELOG.md CHANGED
@@ -1,5 +1,48 @@
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
+
26
+ ## [4.4.2](https://github.com/shaka-project/shaka-player/compare/v4.4.1...v4.4.2) (2023-09-13)
27
+
28
+
29
+ ### Bug Fixes
30
+
31
+ * com.apple.fps should work with the default initDataTransform when using legacy Apple Media Keys ([#5603](https://github.com/shaka-project/shaka-player/issues/5603)) ([1a6fcf7](https://github.com/shaka-project/shaka-player/commit/1a6fcf71bc27b37ca44dc2dabdf5e4608a12dea4))
32
+ * Compute correctly the positionAlign in UITextDisplayer ([#5630](https://github.com/shaka-project/shaka-player/issues/5630)) ([b19c5e7](https://github.com/shaka-project/shaka-player/commit/b19c5e720882dd9211f9455f12dff0485b121175))
33
+ * **DASH:** Fix race condition error while switching audio tracks ([#5619](https://github.com/shaka-project/shaka-player/issues/5619)) ([c140ea3](https://github.com/shaka-project/shaka-player/commit/c140ea3d3e5550e1e89e7e0ad8fc50d637c0ed57))
34
+ * **Demo:** Allow com.apple.fps.1_0 in the custom DRM System field ([#5600](https://github.com/shaka-project/shaka-player/issues/5600)) ([30597ed](https://github.com/shaka-project/shaka-player/commit/30597ed5d9f64c5ea56fc70043b46a8f8fdd774d))
35
+ * Fix compiled-mode error formatting ([#5623](https://github.com/shaka-project/shaka-player/issues/5623)) ([838cb16](https://github.com/shaka-project/shaka-player/commit/838cb160653692c378afda9ec77b8fbc996cfd56))
36
+ * fix preferred track selection on Safari ([#5601](https://github.com/shaka-project/shaka-player/issues/5601)) ([0e4a021](https://github.com/shaka-project/shaka-player/commit/0e4a02154ee4588c88e7526eac841aca46902c4f))
37
+ * Fix transmuxed audio timestamps ([#5595](https://github.com/shaka-project/shaka-player/issues/5595)) ([258a91f](https://github.com/shaka-project/shaka-player/commit/258a91f2b70da7267067800e5e571a48f5c17be2))
38
+ * **HLS:** Get the correct video codec for TS segments ([#5598](https://github.com/shaka-project/shaka-player/issues/5598)) ([0020afe](https://github.com/shaka-project/shaka-player/commit/0020afe02ef961581cfdcefbc412d7ae454a8128))
39
+ * **HLS:** Show WebVTT subtitles with X-TIMESTAMP-MAP in segments mode ([#5643](https://github.com/shaka-project/shaka-player/issues/5643)) ([58298e2](https://github.com/shaka-project/shaka-player/commit/58298e24758c27a1fa409246098e3c186a0ab1e4))
40
+ * Improve TsParse to avoid parsing errors ([#5615](https://github.com/shaka-project/shaka-player/issues/5615)) ([c57bb6f](https://github.com/shaka-project/shaka-player/commit/c57bb6f89081c0492dbc75a9b7c1ae7580caf0a7))
41
+ * **TTML:** Fix wrong writing-mode in nested cues ([#5646](https://github.com/shaka-project/shaka-player/issues/5646)) ([521c239](https://github.com/shaka-project/shaka-player/commit/521c2398f2503b04be9f79ed62fb17ecb8d000d1))
42
+ * **UI:** Fix broken language names on Google TV ([#5613](https://github.com/shaka-project/shaka-player/issues/5613)) ([4a84d8e](https://github.com/shaka-project/shaka-player/commit/4a84d8e25250871c3e4cda967b13ee80fe371913))
43
+ * **WebVTT:** Fix support for line:0 vertical alignment ([#5632](https://github.com/shaka-project/shaka-player/issues/5632)) ([14cdc11](https://github.com/shaka-project/shaka-player/commit/14cdc11968e0e7782a9924a9a9be84882a031806))
44
+ * **WebVTT:** Fix wrong writing-mode in nested cues ([#5641](https://github.com/shaka-project/shaka-player/issues/5641)) ([8a7e32e](https://github.com/shaka-project/shaka-player/commit/8a7e32e111fbab76e5989a7df8ea8efc00955eb3))
45
+
3
46
  ## [4.4.1](https://github.com/shaka-project/shaka-player/compare/v4.4.0...v4.4.1) (2023-09-02)
4
47
 
5
48
 
package/CONTRIBUTORS CHANGED
@@ -80,6 +80,7 @@ Jun Hong Chong <chongjunhong@gmail.com>
80
80
  Jürgen Kartnaller <kartnaller@lovelysystems.com>
81
81
  Konstantin Grushetsky <github@grushetsky.net>
82
82
  Leandro Ribeiro Moreira <leandro.ribeiro.moreira@gmail.com>
83
+ Loïc Raux <loicraux@gmail.com>
83
84
  Lucas Gabriel Sánchez <unkiwii@gmail.com>
84
85
  Martin Stark <martin.stark@eyevinn.se>
85
86
  Matias Russitto <russitto@gmail.com>
@@ -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',
package/demo/custom.js CHANGED
@@ -407,14 +407,14 @@ shakaDemo.Custom = class {
407
407
  const licenseServerURL = licenseServerUrlInput.value;
408
408
  const customDRMSystem = customDrmSystemInput.value;
409
409
  if (licenseServerURL) {
410
- // Make a license server entry for every common DRM plugin.
411
410
  assetInProgress.licenseServers.clear();
412
- for (const drmSystem of shakaDemo.Main.commonDrmSystems) {
413
- assetInProgress.licenseServers.set(drmSystem, licenseServerURL);
414
- }
415
411
  if (customDRMSystem) {
416
- // Make a custom entry too.
417
412
  assetInProgress.licenseServers.set(customDRMSystem, licenseServerURL);
413
+ } else {
414
+ // Make a license server entry for every common DRM plugin.
415
+ for (const drmSystem of shakaDemo.Main.commonDrmSystems) {
416
+ assetInProgress.licenseServers.set(drmSystem, licenseServerURL);
417
+ }
418
418
  }
419
419
  } else {
420
420
  assetInProgress.licenseServers.clear();
@@ -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
  }