shaka-player 4.4.2 → 4.5.0

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 (202) hide show
  1. package/.github/workflows/release-please.yaml +2 -27
  2. package/CHANGELOG.md +67 -25
  3. package/README.md +16 -10
  4. package/demo/asset_card.js +18 -21
  5. package/demo/cast_receiver/index.html +0 -1
  6. package/demo/close_button.js +0 -3
  7. package/demo/common/asset.js +27 -5
  8. package/demo/common/assets.js +150 -52
  9. package/demo/config.js +192 -253
  10. package/demo/custom.js +39 -98
  11. package/demo/front.js +7 -10
  12. package/demo/index.html +19 -22
  13. package/demo/input.js +6 -11
  14. package/demo/input_container.js +8 -9
  15. package/demo/main.js +52 -124
  16. package/demo/search.js +23 -35
  17. package/demo/service_worker.js +0 -3
  18. package/demo/tooltip.js +3 -5
  19. package/demo/visualizer.js +3 -5
  20. package/demo/visualizer_button.js +1 -20
  21. package/dist/demo.compiled.debug.js +187 -211
  22. package/dist/demo.compiled.debug.map +4 -4
  23. package/dist/demo.compiled.js +187 -211
  24. package/dist/demo.compiled.map +4 -4
  25. package/dist/deps.js +27 -24
  26. package/dist/locales.js +31 -31
  27. package/dist/receiver.compiled.debug.js +42 -61
  28. package/dist/receiver.compiled.debug.map +4 -4
  29. package/dist/receiver.compiled.js +42 -61
  30. package/dist/receiver.compiled.map +4 -4
  31. package/dist/shaka-player.compiled.d.ts +728 -365
  32. package/dist/shaka-player.compiled.debug.d.ts +728 -365
  33. package/dist/shaka-player.compiled.debug.externs.js +475 -51
  34. package/dist/shaka-player.compiled.debug.js +576 -480
  35. package/dist/shaka-player.compiled.debug.map +4 -4
  36. package/dist/shaka-player.compiled.externs.js +475 -51
  37. package/dist/shaka-player.compiled.js +1117 -1056
  38. package/dist/shaka-player.compiled.map +4 -4
  39. package/dist/shaka-player.ui.d.ts +783 -410
  40. package/dist/shaka-player.ui.debug.d.ts +783 -410
  41. package/dist/shaka-player.ui.debug.externs.js +496 -51
  42. package/dist/shaka-player.ui.debug.js +647 -542
  43. package/dist/shaka-player.ui.debug.map +4 -4
  44. package/dist/shaka-player.ui.externs.js +496 -51
  45. package/dist/shaka-player.ui.js +1260 -1194
  46. package/dist/shaka-player.ui.map +4 -4
  47. package/docs/design/lcevc-integration.md +14 -14
  48. package/docs/tutorials/faq.md +27 -55
  49. package/docs/tutorials/index.json +2 -1
  50. package/docs/tutorials/lcevc.md +118 -0
  51. package/docs/tutorials/offline.md +1 -1
  52. package/docs/tutorials/ui-customization.md +4 -0
  53. package/externs/css_style_declaration.js +19 -0
  54. package/externs/lcevc.js +37 -13
  55. package/externs/media_remote.js +68 -0
  56. package/externs/mediatailor.js +193 -0
  57. package/externs/pictureinpicture.js +11 -0
  58. package/externs/shaka/ads.js +27 -0
  59. package/externs/shaka/manifest.js +10 -5
  60. package/externs/shaka/manifest_parser.js +7 -1
  61. package/externs/shaka/offline.js +4 -0
  62. package/externs/shaka/player.js +12 -1
  63. package/karma.conf.js +7 -3
  64. package/lib/abr/simple_abr_manager.js +43 -3
  65. package/lib/ads/ad_manager.js +104 -50
  66. package/lib/ads/media_tailor_ad.js +297 -0
  67. package/lib/ads/media_tailor_ad_manager.js +828 -0
  68. package/lib/cea/ts_cea_parser.js +15 -2
  69. package/lib/config/codec_switching_strategy.js +24 -0
  70. package/lib/dash/content_protection.js +120 -2
  71. package/lib/dash/dash_parser.js +79 -13
  72. package/lib/dash/mpd_utils.js +10 -6
  73. package/lib/dash/segment_base.js +13 -5
  74. package/lib/dash/segment_list.js +13 -5
  75. package/lib/dash/segment_template.js +43 -85
  76. package/lib/dependencies/all.js +8 -7
  77. package/lib/hls/hls_parser.js +101 -37
  78. package/lib/lcevc/lcevc_dec.js +220 -0
  79. package/lib/media/adaptation_set.js +22 -11
  80. package/lib/media/adaptation_set_criteria.js +25 -7
  81. package/lib/media/media_source_engine.js +215 -27
  82. package/lib/media/segment_index.js +5 -5
  83. package/lib/media/segment_reference.js +10 -5
  84. package/lib/media/streaming_engine.js +44 -39
  85. package/lib/mss/mss_parser.js +1 -0
  86. package/lib/net/networking_engine.js +1 -0
  87. package/lib/offline/indexeddb/v1_storage_cell.js +1 -0
  88. package/lib/offline/indexeddb/v2_storage_cell.js +1 -0
  89. package/lib/offline/manifest_converter.js +1 -0
  90. package/lib/offline/storage.js +3 -0
  91. package/lib/player.js +142 -72
  92. package/lib/routing/payload.js +5 -1
  93. package/lib/text/cue.js +62 -47
  94. package/lib/text/ttml_text_parser.js +17 -0
  95. package/lib/text/ui_text_displayer.js +4 -0
  96. package/lib/text/vtt_text_parser.js +35 -22
  97. package/lib/transmuxer/h265.js +862 -0
  98. package/lib/transmuxer/mpeg_ts_transmuxer.js +3 -2
  99. package/lib/transmuxer/ts_transmuxer.js +160 -15
  100. package/lib/util/cmcd_manager.js +6 -1
  101. package/lib/util/error.js +28 -9
  102. package/lib/util/exp_golomb.js +30 -2
  103. package/lib/util/fake_event.js +3 -0
  104. package/lib/util/manifest_parser_utils.js +10 -4
  105. package/lib/util/mp4_generator.js +4 -4
  106. package/lib/util/periods.js +2 -0
  107. package/lib/util/platform.js +54 -0
  108. package/lib/util/player_configuration.js +8 -0
  109. package/lib/util/state_history.js +6 -2
  110. package/lib/util/stream_utils.js +133 -217
  111. package/lib/util/ts_parser.js +229 -43
  112. package/maintained-branches.md +3 -2
  113. package/package.json +4 -6
  114. package/roadmap.md +15 -5
  115. package/shaka-player.uncompiled.js +2 -1
  116. package/support.html +0 -1
  117. package/test/cast/cast_receiver_integration.js +47 -0
  118. package/test/codec_switching/codec_switching_integration.js +181 -0
  119. package/test/dash/dash_parser_content_protection_unit.js +2 -0
  120. package/test/dash/dash_parser_integration.js +73 -0
  121. package/test/dash/dash_parser_live_unit.js +2 -0
  122. package/test/dash/dash_parser_manifest_unit.js +47 -0
  123. package/test/dash/dash_parser_segment_base_unit.js +7 -0
  124. package/test/dash/dash_parser_segment_list_unit.js +23 -17
  125. package/test/dash/dash_parser_segment_template_unit.js +49 -0
  126. package/test/demo/demo_unit.js +0 -16
  127. package/test/hls/hls_live_unit.js +35 -0
  128. package/test/hls/hls_parser_unit.js +8 -61
  129. package/test/media/adaptation_set_criteria_unit.js +118 -0
  130. package/test/media/adaptation_set_unit.js +1 -0
  131. package/test/media/media_source_engine_unit.js +165 -1
  132. package/test/media/segment_index_unit.js +4 -4
  133. package/test/media/segment_prefetch_unit.js +1 -1
  134. package/test/media/streaming_engine_unit.js +17 -17
  135. package/test/mss/mss_parser_unit.js +2 -0
  136. package/test/offline/manifest_convert_unit.js +5 -0
  137. package/test/offline/storage_integration.js +1 -4
  138. package/test/player_unit.js +102 -131
  139. package/test/routing/walker_unit.js +1 -0
  140. package/test/test/assets/dash-aes-128/Fragments(video=0,format=mpd-time-csf) +0 -0
  141. package/test/test/assets/dash-aes-128/Fragments(video=20000000,format=mpd-time-csf) +0 -0
  142. package/test/test/assets/dash-aes-128/Fragments(video=40000000,format=mpd-time-csf) +0 -0
  143. package/test/test/assets/dash-aes-128/Fragments(video=60000000,format=mpd-time-csf) +0 -0
  144. package/test/test/assets/dash-aes-128/Fragments(video=i,format=mpd-time-csf) +0 -0
  145. package/test/test/assets/dash-aes-128/dash.mpd +18 -0
  146. package/test/test/assets/dash-aes-128/license +1 -0
  147. package/test/test/assets/dash-multi-codec/audio_en_2c_128k_aac.mp4 +0 -0
  148. package/test/test/assets/dash-multi-codec/audio_es_2c_64k_opus.webm +0 -0
  149. package/test/test/assets/dash-multi-codec/dash.mpd +32 -0
  150. package/test/test/assets/dash-multi-codec/video_144p_108k_h264.mp4 +0 -0
  151. package/test/test/assets/hls-ts-h265/0.ts +0 -0
  152. package/test/test/assets/hls-ts-h265/hevc.m3u8 +6 -0
  153. package/test/test/assets/hls-ts-h265/index.m3u8 +7 -0
  154. package/test/test/assets/hls-ts-muxed-aac-h265/0.ts +0 -0
  155. package/test/test/assets/hls-ts-muxed-aac-h265/1.ts +0 -0
  156. package/test/test/assets/hls-ts-muxed-aac-h265/media.m3u8 +9 -0
  157. package/test/test/assets/hls-ts-muxed-ac3-h264/media.m3u8 +24 -0
  158. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00000.ts +0 -0
  159. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00001.ts +0 -0
  160. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00002.ts +0 -0
  161. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00003.ts +0 -0
  162. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00004.ts +0 -0
  163. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00005.ts +0 -0
  164. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0000.ts +0 -0
  165. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0001.ts +0 -0
  166. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0002.ts +0 -0
  167. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0003.ts +0 -0
  168. package/test/test/assets/hls-ts-muxed-ec3-h264/prog_index.m3u8 +14 -0
  169. package/test/test/assets/hls-ts-muxed-mp3-h264/index.m3u8 +23 -0
  170. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-1-v1-a1.ts +0 -0
  171. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-2-v1-a1.ts +0 -0
  172. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-3-v1-a1.ts +0 -0
  173. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-4-v1-a1.ts +0 -0
  174. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-5-v1-a1.ts +0 -0
  175. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-6-v1-a1.ts +0 -0
  176. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-7-v1-a1.ts +0 -0
  177. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-8-v1-a1.ts +0 -0
  178. package/test/test/util/dash_parser_util.js +20 -7
  179. package/test/test/util/fake_ad_manager.js +20 -0
  180. package/test/test/util/fake_media_source_engine.js +8 -2
  181. package/test/test/util/manifest_generator.js +7 -3
  182. package/test/test/util/mss_parser_util.js +4 -0
  183. package/test/test/util/offline_utils.js +1 -0
  184. package/test/test/util/streaming_engine_util.js +7 -4
  185. package/test/text/ttml_text_parser_unit.js +52 -0
  186. package/test/text/vtt_text_parser_unit.js +105 -48
  187. package/test/transmuxer/transmuxer_integration.js +121 -4
  188. package/test/ui/ui_unit.js +3 -10
  189. package/test/util/stream_utils_unit.js +208 -74
  190. package/test/util/ts_parser_unit.js +1 -1
  191. package/ui/controls.js +125 -0
  192. package/ui/externs/ui.js +8 -1
  193. package/ui/pip_button.js +22 -120
  194. package/ui/remote_button.js +201 -0
  195. package/ui/ui.js +5 -2
  196. package/demo/common/message_ids.js +0 -309
  197. package/demo/locales/en.json +0 -287
  198. package/demo/locales/source.json +0 -1142
  199. package/externs/mux.js +0 -69
  200. package/lib/lcevc/lcevc_dil.js +0 -152
  201. package/lib/transmuxer/muxjs_transmuxer.js +0 -242
  202. package/test/transmuxer/muxjs_transmuxer_integration.js +0 -177
@@ -23,33 +23,8 @@ jobs:
23
23
  default-branch: ${{ github.ref_name }}
24
24
  # Use a special shaka-bot access token for releases.
25
25
  token: ${{ secrets.RELEASE_PLEASE_TOKEN }}
26
-
27
- # If we didn't create a release, we may have created or updated a PR.
28
- # Check out the code, then update the Player version in the PR.
29
- - uses: actions/checkout@v3
30
- if: steps.release.outputs.release_created == false
31
- with:
32
- # Use a special shaka-bot access token for releases.
33
- token: ${{ secrets.RELEASE_PLEASE_TOKEN }}
34
- - name: Custom update Player version
35
- if: steps.release.outputs.release_created == false
36
- run: |
37
- # Check out the branch that release-please created.
38
- # If it does not exist, FAIL!
39
- git fetch
40
- git checkout release-please--branches--${{ github.ref_name }}--components--shaka-player || exit 1
41
- # If it does exist, update lib/player.js in the PR branch, so that the
42
- # -uncompiled tag remains in the player version in that context.
43
- VERSION="v$(jq -r .version package.json)-uncompiled"
44
- sed -e "s/^\\(shaka.Player.version =\\).*/\\1 '$VERSION';/" \
45
- -i lib/player.js
46
- git add lib/player.js
47
- # Set missing git config for the commit.
48
- git config user.name "shaka-bot"
49
- git config user.email "shaka-bot@users.noreply.github.com"
50
- # Update the PR.
51
- git commit --amend --no-edit
52
- git push -f
26
+ # Update these additional files containing version numbers.
27
+ extra-files: lib/player.js
53
28
 
54
29
  # The jobs below are all conditional on a release having been created by
55
30
  # someone merging the release PR. They all run in parallel.
package/CHANGELOG.md CHANGED
@@ -1,37 +1,79 @@
1
1
  # Changelog
2
2
 
3
- ## [4.4.2](https://github.com/shaka-project/shaka-player/compare/v4.4.1...v4.4.2) (2023-09-13)
3
+ ## [4.5.0](https://github.com/shaka-project/shaka-player/compare/v4.4.0...v4.5.0) (2023-10-04)
4
4
 
5
5
 
6
- ### Bug Fixes
7
-
8
- * 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))
9
- * 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))
10
- * **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))
11
- * **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))
12
- * 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))
13
- * 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))
14
- * Fix transmuxed audio timestamps ([#5595](https://github.com/shaka-project/shaka-player/issues/5595)) ([258a91f](https://github.com/shaka-project/shaka-player/commit/258a91f2b70da7267067800e5e571a48f5c17be2))
15
- * **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))
16
- * **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))
17
- * 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))
18
- * **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))
19
- * **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))
20
- * **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))
21
- * **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))
6
+ ### Features
22
7
 
23
- ## [4.4.1](https://github.com/shaka-project/shaka-player/compare/v4.4.0...v4.4.1) (2023-09-02)
8
+ * **ABR:** Allow some downscale when use restrictToElementSize or restrictToScreenSize ([#5631](https://github.com/shaka-project/shaka-player/issues/5631)) ([cad1ac8](https://github.com/shaka-project/shaka-player/commit/cad1ac82837123282248a0766147390d5c21bcb9))
9
+ * Add getBandwidthEstimate to the player interface for custom manifest parser ([#5714](https://github.com/shaka-project/shaka-player/issues/5714)) ([1271a18](https://github.com/shaka-project/shaka-player/commit/1271a18fec65551508a734615c9c1619ebd87e04))
10
+ * Add H.265 TS transmuxer ([#5611](https://github.com/shaka-project/shaka-player/issues/5611)) ([3c2c095](https://github.com/shaka-project/shaka-player/commit/3c2c0955cbd230f2360e2fb9d82e59cb19dab591))
11
+ * Add KeyStatusChanged and UpdateState events ([#5695](https://github.com/shaka-project/shaka-player/issues/5695)) ([2f97fa7](https://github.com/shaka-project/shaka-player/commit/2f97fa7ee3497261af038046f1de14095c6d4481))
12
+ * Add manifestupdated event ([#5602](https://github.com/shaka-project/shaka-player/issues/5602)) ([b16d2f0](https://github.com/shaka-project/shaka-player/commit/b16d2f0bf3691ef7cc2de4eea095df21814a2027))
13
+ * Add TS transmuxer for muxed content ([#5571](https://github.com/shaka-project/shaka-player/issues/5571)) ([7df3321](https://github.com/shaka-project/shaka-player/commit/7df33212726d0040ba5d5a4cc0c049f174a06c83))
14
+ * **Ads:** Add support for AWS Elemental MediaTailor ([#5679](https://github.com/shaka-project/shaka-player/issues/5679)) ([cf5a72b](https://github.com/shaka-project/shaka-player/commit/cf5a72bb513ff74e5b0f8ca7fd334313cd78370d))
15
+ * **CEA:** Parse CEA from TS with H.265 ([#5610](https://github.com/shaka-project/shaka-player/issues/5610)) ([54eaf63](https://github.com/shaka-project/shaka-player/commit/54eaf6371aeb2fb8b860d52b75a0c27555aaaaca))
16
+ * **DASH:** Add new config to prevent mixing of audio representations from different adaptation sets ([#5620](https://github.com/shaka-project/shaka-player/issues/5620)) ([0bbb470](https://github.com/shaka-project/shaka-player/commit/0bbb47025e347d321a9d764666a355b2d2a485a5))
17
+ * **DASH:** Add support for AES-128 ([#5656](https://github.com/shaka-project/shaka-player/issues/5656)) ([96ae7f2](https://github.com/shaka-project/shaka-player/commit/96ae7f2fe614402d1ee410591eb86a2868796c38))
18
+ * **DASH:** Allow the playback of DASH with $time$ and large timescale value ([#5621](https://github.com/shaka-project/shaka-player/issues/5621)) ([4a1c96e](https://github.com/shaka-project/shaka-player/commit/4a1c96e630de1ee259ed3a5ee582dddd0f844e04))
19
+ * **demo:** Added icons for new demo assets ([#5691](https://github.com/shaka-project/shaka-player/issues/5691)) ([12400b1](https://github.com/shaka-project/shaka-player/commit/12400b160b51c7ea87ecb9e8bb77ae481bb707d7))
20
+ * Enable codec switching ([#5470](https://github.com/shaka-project/shaka-player/issues/5470)) ([0078137](https://github.com/shaka-project/shaka-player/commit/0078137d1bd6bd471b5e1405e27d7fc76b5668ac))
21
+ * **HLS:** Get the correct video info for TS segments with H.265 ([#5616](https://github.com/shaka-project/shaka-player/issues/5616)) ([e191c75](https://github.com/shaka-project/shaka-player/commit/e191c755167abd8658e9e3aae35cd99d07d15ee6))
22
+ * **HLS:** Take into account the parsing time for manifest schedule update ([#5678](https://github.com/shaka-project/shaka-player/issues/5678)) ([f7e33a3](https://github.com/shaka-project/shaka-player/commit/f7e33a3ba529e13052bfaa8762b78379bb8c8e03))
23
+ * Migration of LCEVC DIL (Decoder Integration Layer) to LCEVC Dec (Decoder) ([#5459](https://github.com/shaka-project/shaka-player/issues/5459)) ([c1e18d3](https://github.com/shaka-project/shaka-player/commit/c1e18d358361392332372760b90c724047cf1310))
24
+ * **TTML:** Add support to tts:ruby ([#5645](https://github.com/shaka-project/shaka-player/issues/5645)) ([9fd220e](https://github.com/shaka-project/shaka-player/commit/9fd220e73f7ef0e9b5774717347b2d3fa7590e99))
25
+ * **TTML:** Add support to tts:textCombine ([#5644](https://github.com/shaka-project/shaka-player/issues/5644)) ([73a3bd9](https://github.com/shaka-project/shaka-player/commit/73a3bd931ebc7c9690f3d0aefb0639f2230fa594))
26
+ * **UI:** Add config to preferDocumentPictureInPicture ([#5690](https://github.com/shaka-project/shaka-player/issues/5690)) ([025502a](https://github.com/shaka-project/shaka-player/commit/025502a70c885216b9bbc063025ae80a72780fe6))
27
+ * **UI:** Add PiP function to controls ([#5629](https://github.com/shaka-project/shaka-player/issues/5629)) ([b422847](https://github.com/shaka-project/shaka-player/commit/b4228479dae3469e5a3a1e8190bef9c4e3e1a843))
28
+ * **UI:** Add remote button with RemotePlayback API ([#5650](https://github.com/shaka-project/shaka-player/issues/5650)) ([1ef5ae0](https://github.com/shaka-project/shaka-player/commit/1ef5ae0615a14baa26ff9ffa9fa5e083bfa19c7e))
29
+ * **WebVTT:** Add support to ruby, rt, rp html tags ([#5642](https://github.com/shaka-project/shaka-player/issues/5642)) ([76ffd38](https://github.com/shaka-project/shaka-player/commit/76ffd38c1d78042acac220df202a9abdd77489e9))
30
+ * **WebVTT:** Add support to text-combine-upright ([#5633](https://github.com/shaka-project/shaka-player/issues/5633)) ([a2f253f](https://github.com/shaka-project/shaka-player/commit/a2f253f8d619d2959c0195a8e1260657b5d34a3a))
24
31
 
25
32
 
26
33
  ### Bug Fixes
27
34
 
28
- * Fix MediaSourceEngine reset operation ([#5576](https://github.com/shaka-project/shaka-player/issues/5576)) ([8c66b7a](https://github.com/shaka-project/shaka-player/commit/8c66b7a061b044b1e1569fbcf18c094465b94466))
29
- * Fix Mp4Generator ([#5566](https://github.com/shaka-project/shaka-player/issues/5566)) ([a20f1db](https://github.com/shaka-project/shaka-player/commit/a20f1db194539d43e6851f54f28378c33f98d1d5))
30
- * Fix PES parsing ([#5559](https://github.com/shaka-project/shaka-player/issues/5559)) ([58e6627](https://github.com/shaka-project/shaka-player/commit/58e6627c5c56057d186823f07f364805d3c26b20))
31
- * Fix TS transmuxer when the main content is muxed ([#5575](https://github.com/shaka-project/shaka-player/issues/5575)) ([0831b97](https://github.com/shaka-project/shaka-player/commit/0831b979f076b773f8eecb42e72c45bdabbf878b))
32
- * **HLS:** Allow audio groups on audio-only content ([#5578](https://github.com/shaka-project/shaka-player/issues/5578)) ([17e4ef2](https://github.com/shaka-project/shaka-player/commit/17e4ef25c0f069002c6777e77569cbf90d538449))
33
- * Prevent codecs override in the transmuxer ([#5568](https://github.com/shaka-project/shaka-player/issues/5568)) ([1286fec](https://github.com/shaka-project/shaka-player/commit/1286fec03da968d71b8f0590421c0d0a39e98d06))
34
- * Remove debugging code on Simple Text ([#5582](https://github.com/shaka-project/shaka-player/issues/5582)) ([19be642](https://github.com/shaka-project/shaka-player/commit/19be6423ea5366b887d0cf89900d92bfbd573ce5))
35
+ * Allow PID change in TsParser ([#5681](https://github.com/shaka-project/shaka-player/issues/5681)) ([d9b49d9](https://github.com/shaka-project/shaka-player/commit/d9b49d992f533bf7664932d547253b860064ea03))
36
+ * **CMCD:** Fix CMCD for some mimetypes in src= ([#5699](https://github.com/shaka-project/shaka-player/issues/5699)) ([e2c32c5](https://github.com/shaka-project/shaka-player/commit/e2c32c52f0ae347083bcc6b4b7dceca903b5546b))
37
+ * 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)) ([76fdda6](https://github.com/shaka-project/shaka-player/commit/76fdda65231905c945db6a5eedeece65f8d7711e))
38
+ * Compute correctly the positionAlign in UITextDisplayer ([#5630](https://github.com/shaka-project/shaka-player/issues/5630)) ([3a2dbc3](https://github.com/shaka-project/shaka-player/commit/3a2dbc3deaf1e1ee5384eed41c6c9e79817a8a09))
39
+ * **DASH:** Fix bigint implementation ([#5707](https://github.com/shaka-project/shaka-player/issues/5707)) ([45009d2](https://github.com/shaka-project/shaka-player/commit/45009d2c0cbbb203ecb864bc4b742ed4ad9a0d9a))
40
+ * **DASH:** Fix race condition error while switching audio tracks ([#5619](https://github.com/shaka-project/shaka-player/issues/5619)) ([29d9a10](https://github.com/shaka-project/shaka-player/commit/29d9a107054fff16ec2abe2cbdbb8fa0c0cfd882))
41
+ * **Demo:** Allow com.apple.fps.1_0 in the custom DRM System field ([#5600](https://github.com/shaka-project/shaka-player/issues/5600)) ([ab86000](https://github.com/shaka-project/shaka-player/commit/ab86000dc75a352505875fe6dbc37fe0bdd2857a))
42
+ * **Demo:** Fix url of "Low Latency HLS Live" asset ([#5708](https://github.com/shaka-project/shaka-player/issues/5708)) ([146d3ec](https://github.com/shaka-project/shaka-player/commit/146d3ecd280b8b985e1fae6fc9262fa04dcf6126))
43
+ * Fix compiled-mode error formatting ([#5623](https://github.com/shaka-project/shaka-player/issues/5623)) ([a19912e](https://github.com/shaka-project/shaka-player/commit/a19912e5bf9ec5425a366b07745d5bac631a9dd2))
44
+ * 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)) ([0a8b519](https://github.com/shaka-project/shaka-player/commit/0a8b5193f2de0b83ddd24aacda09523926b1cdb9))
45
+ * Fix MediaSourceEngine reset operation ([#5576](https://github.com/shaka-project/shaka-player/issues/5576)) ([9f5e91f](https://github.com/shaka-project/shaka-player/commit/9f5e91f4a37a8e504adcf1dd756fac9c777c2051))
46
+ * Fix Mp4Generator ([#5566](https://github.com/shaka-project/shaka-player/issues/5566)) ([effafbc](https://github.com/shaka-project/shaka-player/commit/effafbc849cc83c732fe113f5da479513b884f9f))
47
+ * Fix NALU parsing in some HLS muxed live streams ([#5688](https://github.com/shaka-project/shaka-player/issues/5688)) ([756a576](https://github.com/shaka-project/shaka-player/commit/756a57658608b3d8e674ae810afc692a25dc85cf))
48
+ * Fix PES parsing ([#5559](https://github.com/shaka-project/shaka-player/issues/5559)) ([5c6ab9e](https://github.com/shaka-project/shaka-player/commit/5c6ab9e0c8ba1236710209b36ea08d7a44fb1bf3))
49
+ * fix preferred track selection on Safari ([#5601](https://github.com/shaka-project/shaka-player/issues/5601)) ([d021d6f](https://github.com/shaka-project/shaka-player/commit/d021d6f932b3a64d826b919b5a7b252599e2ecd5))
50
+ * Fix some properties on the shaka.text.Cue that are mangled ([#5673](https://github.com/shaka-project/shaka-player/issues/5673)) ([d2b7cb2](https://github.com/shaka-project/shaka-player/commit/d2b7cb28212d5fc82b70169c77826333e0fc081f))
51
+ * Fix transmuxed audio timestamps ([#5595](https://github.com/shaka-project/shaka-player/issues/5595)) ([0260aef](https://github.com/shaka-project/shaka-player/commit/0260aefcdbdda2184ea32d3d8678a04491cc6fd3))
52
+ * Fix transmuxing of muxed content ([#5686](https://github.com/shaka-project/shaka-player/issues/5686)) ([f20d50a](https://github.com/shaka-project/shaka-player/commit/f20d50a37b8629d5429b22e2fa0ced4729335af3))
53
+ * Fix TS transmuxer when the main content is muxed ([#5575](https://github.com/shaka-project/shaka-player/issues/5575)) ([65b3037](https://github.com/shaka-project/shaka-player/commit/65b3037181b30274b1cedf52283f5726cf7df0b9))
54
+ * Fix unreleased stack overflow on statechanged ([#5712](https://github.com/shaka-project/shaka-player/issues/5712)) ([ebacf32](https://github.com/shaka-project/shaka-player/commit/ebacf32127dfc7b8b5227d66f7d53d3eee54fdd3))
55
+ * **HLS:** Allow audio groups on audio-only content ([#5578](https://github.com/shaka-project/shaka-player/issues/5578)) ([3cbc444](https://github.com/shaka-project/shaka-player/commit/3cbc444c95ab2e8c124d2caaaac6ce7bc5fdf02f))
56
+ * **HLS:** Fix audio and video out of sync ([#5658](https://github.com/shaka-project/shaka-player/issues/5658)) ([4cc4143](https://github.com/shaka-project/shaka-player/commit/4cc4143d5f3d78fc5839d6e61d7464ac62479253))
57
+ * **HLS:** Fix display CEA-708 in HLS ([#5694](https://github.com/shaka-project/shaka-player/issues/5694)) ([2097193](https://github.com/shaka-project/shaka-player/commit/2097193c1d16b2fc7478959257e45dd0d8233ffa))
58
+ * **HLS:** Fix presentation delay for small live playlists (eg: 3-4 segments) ([#5687](https://github.com/shaka-project/shaka-player/issues/5687)) ([caef5a4](https://github.com/shaka-project/shaka-player/commit/caef5a41edb3b7ac09d58249990bc2fa14ac5adb))
59
+ * **HLS:** Get the correct video codec for TS segments ([#5598](https://github.com/shaka-project/shaka-player/issues/5598)) ([1135115](https://github.com/shaka-project/shaka-player/commit/11351150694814813cb1cfeab4dc78fdefcce6fa))
60
+ * **HLS:** Show WebVTT subtitles with X-TIMESTAMP-MAP in segments mode ([#5643](https://github.com/shaka-project/shaka-player/issues/5643)) ([bd636d4](https://github.com/shaka-project/shaka-player/commit/bd636d4edffed3e845c79666547dc5af91af4055))
61
+ * **HLS:** Skip segments without duration and without partial segments ([#5705](https://github.com/shaka-project/shaka-player/issues/5705)) ([f53d50d](https://github.com/shaka-project/shaka-player/commit/f53d50dc3620736add47f4db2f4e71b4d8eea526))
62
+ * **HLS:** Support AES-128 in init segment according the RFC ([#5677](https://github.com/shaka-project/shaka-player/issues/5677)) ([806d91a](https://github.com/shaka-project/shaka-player/commit/806d91af4da9e71f9e11af406ffebf14232c5e9f))
63
+ * Improve TsParse to avoid parsing errors ([#5615](https://github.com/shaka-project/shaka-player/issues/5615)) ([5fa8b42](https://github.com/shaka-project/shaka-player/commit/5fa8b42118103ee8bb32394feb3aeb57b6d47553))
64
+ * Prevent codecs override in the transmuxer ([#5568](https://github.com/shaka-project/shaka-player/issues/5568)) ([66c625f](https://github.com/shaka-project/shaka-player/commit/66c625f55ab00989ff74419e8f85ca7619446dd0))
65
+ * Remove debugging code on Simple Text ([#5582](https://github.com/shaka-project/shaka-player/issues/5582)) ([991130a](https://github.com/shaka-project/shaka-player/commit/991130a6d875fd41ff585254563c5a879057603a))
66
+ * seeking in segment timeline returns incorrect index ([#5716](https://github.com/shaka-project/shaka-player/issues/5716)) ([c02ccee](https://github.com/shaka-project/shaka-player/commit/c02cceeeca0590a9b9b3161783142d89ba4948d4)), closes [#5664](https://github.com/shaka-project/shaka-player/issues/5664)
67
+ * **TTML:** Fix wrong writing-mode in nested cues ([#5646](https://github.com/shaka-project/shaka-player/issues/5646)) ([3a4f108](https://github.com/shaka-project/shaka-player/commit/3a4f10878a91c7d30f71862f2cec780b0f5e1bac))
68
+ * **UI:** Fix broken language names on Google TV ([#5613](https://github.com/shaka-project/shaka-player/issues/5613)) ([fc93292](https://github.com/shaka-project/shaka-player/commit/fc93292d9e4f8d38561dea8320cbcd5fd25f2c75))
69
+ * **WebVTT:** Fix support for line:0 vertical alignment ([#5632](https://github.com/shaka-project/shaka-player/issues/5632)) ([eed393f](https://github.com/shaka-project/shaka-player/commit/eed393f1bf777f00f1e7242c96bf9124ad3dec30))
70
+ * **WebVTT:** Fix text displayed out of picture and with overlapping lines ([#5662](https://github.com/shaka-project/shaka-player/issues/5662)) ([6975be9](https://github.com/shaka-project/shaka-player/commit/6975be92d47fd5368492e861a6ea63e627a4846c)), closes [#5661](https://github.com/shaka-project/shaka-player/issues/5661)
71
+ * **WebVTT:** Fix wrong writing-mode in nested cues ([#5641](https://github.com/shaka-project/shaka-player/issues/5641)) ([56a4cea](https://github.com/shaka-project/shaka-player/commit/56a4cea5789f15b5e78c9a5d8d0cb97eb542bafc))
72
+
73
+
74
+ ### Performance Improvements
75
+
76
+ * Optimization to resolve uris ([#5657](https://github.com/shaka-project/shaka-player/issues/5657)) ([bd17c2b](https://github.com/shaka-project/shaka-player/commit/bd17c2bfd077c596d77a2a3fdd865041ed08012c))
35
77
 
36
78
  ## [4.4.0](https://github.com/shaka-project/shaka-player/compare/v4.4.0...v4.4.0) (2023-08-30)
37
79
 
package/README.md CHANGED
@@ -115,7 +115,6 @@ DASH features **not** supported:
115
115
  - Xlink with actuate=onRequest
116
116
  - Manifests without any segment info:
117
117
  https://github.com/shaka-project/shaka-player/issues/1088
118
- - Changing codecs during a presentation (unsupported by MSE)
119
118
  - Multiple trick mode tracks for the same resolution at varying framerates or
120
119
  bitrates
121
120
  - Timescales so large that timestamps cannot be represented as integers in
@@ -132,8 +131,7 @@ HLS features supported:
132
131
  blocking playlist reload
133
132
  - Discontinuity
134
133
  - ISO-BMFF / MP4 / CMAF support
135
- - MPEG-2 TS support (transmuxing provided by [mux.js][] v6.2.0+, must be
136
- separately included)
134
+ - MPEG-2 TS support
137
135
  - WebVTT and TTML
138
136
  - CEA-608/708 captions
139
137
  - Encrypted content with PlayReady and Widevine
@@ -144,20 +142,19 @@ HLS features supported:
144
142
  HLS features **not** supported:
145
143
  - I-frame-only playlists: https://github.com/shaka-project/shaka-player/issues/742
146
144
 
147
- [mux.js]: https://github.com/videojs/mux.js/releases
148
145
 
149
146
  ## MPEG-5 Part2 LCEVC Support
150
147
 
151
148
  **Only supported on browsers with Media Source Extensions SourceBuffer support**
152
149
 
153
- - MPEG-5 Part2 LCEVC decoding support (decoding provided by [lcevc_dil.js][], must be
150
+ - MPEG-5 Part2 LCEVC decoding support (decoding provided by [lcevc_dec.js][], must be
154
151
  separately included)
155
152
 
156
153
  - Integration documentation : [docs](docs/design/lcevc-integration.md)
157
154
 
158
155
  - More on [MPEG-5 Part2 LCEVC][]
159
156
 
160
- [lcevc_dil.js]: https://www.npmjs.com/package/lcevc_dil.js
157
+ [lcevc_dec.js]: https://www.npmjs.com/package/lcevc_dec.js
161
158
  [MPEG-5 Part2 LCEVC]: https://www.lcevc.org
162
159
 
163
160
 
@@ -235,8 +232,7 @@ Shaka Player supports:
235
232
  SegmentTemplate@index
236
233
  - Not supported in HLS
237
234
  - MPEG-2 TS
238
- - With help from [mux.js][] v6.2.0+, can be played on any browser which
239
- supports MP4
235
+ - Can be played on any browser which supports MP4
240
236
  - Can find and parse timestamps to find segment start time in HLS
241
237
  - WebVTT
242
238
  - Supported in both text form and embedded in MP4
@@ -289,8 +285,8 @@ Shaka Player supports:
289
285
  - MP3 in MPEG-2 TS to MP3 in MP4
290
286
  - MP3 in MPEG-2 TS to raw MP3
291
287
  - H.264 in MPEG-2 TS to H.264 in MP4
292
- - Muxed AAC and H.264 in MPEG-2 TS to AAC and H.264 in MP4,
293
- with help from [mux.js][] v6.2.0+
288
+ - H.265 in MPEG-2 TS to H.265 in MP4
289
+ - Muxed content in MPEG-2 TS with the previous codecs
294
290
 
295
291
 
296
292
  ## Thumbnails support
@@ -301,6 +297,16 @@ Shaka Player supports:
301
297
  - External WebVTT with images/sprites (only for VoD)
302
298
 
303
299
 
300
+ ## Monetization with Ads
301
+
302
+ Shaka Player supports:
303
+ - IMA SDK for Client-Side Ad Insertion
304
+ - IMA DAI SDK for Server-Side Ad Insertion
305
+ - AWS MediaTailor for Client-Side
306
+ - AWS MediaTailor for Server-Side
307
+ - AWS MediaTailor overlays
308
+
309
+
304
310
  ## Documentation & Important Links ##
305
311
 
306
312
  * [Demo](https://shaka-player-demo.appspot.com)([sources](demo/))
@@ -8,7 +8,6 @@ goog.provide('shakaDemo.AssetCard');
8
8
 
9
9
  goog.require('goog.asserts');
10
10
  goog.require('shakaAssets');
11
- goog.require('shakaDemo.MessageIds');
12
11
  goog.require('shakaDemo.Tooltips');
13
12
  goog.requireType('ShakaDemoAssetInfo');
14
13
 
@@ -134,7 +133,7 @@ shakaDemo.AssetCard = class {
134
133
 
135
134
  /**
136
135
  * @param {string} icon
137
- * @param {!shakaDemo.MessageIds} title
136
+ * @param {string} title
138
137
  * @private
139
138
  */
140
139
  addFeatureIcon_(icon, title) {
@@ -190,18 +189,17 @@ shakaDemo.AssetCard = class {
190
189
 
191
190
  /**
192
191
  * Modify an asset to make it clear that it is unsupported.
193
- * @param {!shakaDemo.MessageIds} unsupportedReason
192
+ * @param {string} unsupportedReason
194
193
  */
195
194
  markAsUnsupported(unsupportedReason) {
196
195
  this.card_.classList.add('asset-card-unsupported');
197
- this.makeUnsupportedButton_(
198
- shakaDemo.MessageIds.UNSUPPORTED, unsupportedReason);
196
+ this.makeUnsupportedButton_('Not Available', unsupportedReason);
199
197
  }
200
198
 
201
199
  /**
202
200
  * Make a button that represents the lack of a working button.
203
- * @param {?shakaDemo.MessageIds} buttonName
204
- * @param {!shakaDemo.MessageIds} unsupportedReason
201
+ * @param {?string} buttonName
202
+ * @param {string} unsupportedReason
205
203
  * @return {!Element}
206
204
  * @private
207
205
  */
@@ -306,16 +304,15 @@ shakaDemo.AssetCard = class {
306
304
  return;
307
305
  }
308
306
 
309
- this.makeYesNoDialogue_(parentDiv,
310
- shakaDemo.MessageIds.DELETE_STORED_PROMPT, async () => {
311
- deleteButton.disabled = true;
312
- await this.asset_.unstoreCallback();
313
- });
307
+ this.makeYesNoDialogue_(parentDiv, 'Delete the offline copy?', async () => {
308
+ deleteButton.disabled = true;
309
+ await this.asset_.unstoreCallback();
310
+ });
314
311
  }
315
312
 
316
313
  /**
317
314
  * @param {!Element} parentDiv
318
- * @param {!shakaDemo.MessageIds} text
315
+ * @param {string} text
319
316
  * @param {function():Promise} callback
320
317
  * @private
321
318
  */
@@ -330,14 +327,14 @@ shakaDemo.AssetCard = class {
330
327
 
331
328
  const textElement = document.createElement('h2');
332
329
  textElement.classList.add('mdl-typography--title');
333
- textElement.textContent = shakaDemoMain.getLocalizedString(text);
330
+ textElement.textContent = text;
334
331
  dialog.appendChild(textElement);
335
332
 
336
333
  const buttonsDiv = document.createElement('div');
337
334
  dialog.appendChild(buttonsDiv);
338
- const makeButton = (textId, fn) => {
335
+ const makeButton = (text, fn) => {
339
336
  const button = document.createElement('button');
340
- button.textContent = shakaDemoMain.getLocalizedString(textId);
337
+ button.textContent = text;
341
338
  button.classList.add('mdl-button');
342
339
  button.classList.add('mdl-button--colored');
343
340
  button.classList.add('mdl-js-button');
@@ -348,12 +345,12 @@ shakaDemo.AssetCard = class {
348
345
  buttonsDiv.appendChild(button);
349
346
  button.blur();
350
347
  };
351
- makeButton(shakaDemo.MessageIds.PROMPT_YES, async () => {
348
+ makeButton('Yes', async () => {
352
349
  dialog.close();
353
350
  await callback();
354
351
  this.remakeButtons();
355
352
  });
356
- makeButton(shakaDemo.MessageIds.PROMPT_NO, () => {
353
+ makeButton('No', () => {
357
354
  dialog.close();
358
355
  });
359
356
 
@@ -385,9 +382,9 @@ shakaDemo.AssetCard = class {
385
382
  /**
386
383
  * Adds a button to the bottom of the card that will call |onClick| when
387
384
  * clicked. For example, a play or delete button.
388
- * @param {?shakaDemo.MessageIds} name
385
+ * @param {?string} name
389
386
  * @param {function()} onclick
390
- * @param {shakaDemo.MessageIds=} yesNoDialogText
387
+ * @param {string=} yesNoDialogText
391
388
  * @return {!HTMLButtonElement}
392
389
  */
393
390
  addButton(name, onclick, yesNoDialogText) {
@@ -397,7 +394,7 @@ shakaDemo.AssetCard = class {
397
394
  button.classList.add('mdl-button--colored');
398
395
  button.classList.add('mdl-js-button');
399
396
  button.classList.add('mdl-js-ripple-effect');
400
- button.textContent = name ? shakaDemoMain.getLocalizedString(name) : '';
397
+ button.textContent = name || '';
401
398
  button.addEventListener('click', () => {
402
399
  if (!button.hasAttribute('disabled')) {
403
400
  if (yesNoDialogText) {
@@ -52,7 +52,6 @@ UNCOMPILED_JS = [
52
52
  // This file contains goog.require calls for all exported library classes.
53
53
  '../../shaka-player.uncompiled.js',
54
54
  // These are the individual parts of the receiver app.
55
- '../common/message_ids.js',
56
55
  '../common/asset.js',
57
56
  '../common/assets.js',
58
57
  'receiver_app.js',
@@ -41,9 +41,6 @@ shakaDemo.CloseButton = class extends shaka.ui.Element {
41
41
  });
42
42
  });
43
43
  }
44
-
45
- // TODO: Make sure that the screenreader description of this control is
46
- // localized!
47
44
  }
48
45
  };
49
46
 
@@ -12,8 +12,6 @@
12
12
 
13
13
  goog.provide('ShakaDemoAssetInfo');
14
14
 
15
- goog.require('shakaDemo.MessageIds');
16
-
17
15
 
18
16
  /**
19
17
  * An object that contains information about an asset.
@@ -80,6 +78,10 @@ const ShakaDemoAssetInfo = class {
80
78
  /** @type {?string} */
81
79
  this.imaManifestType = null;
82
80
  /** @type {?string} */
81
+ this.mediaTailorUrl = null;
82
+ /** @type {?Object} */
83
+ this.mediaTailorAdsParams = null;
84
+ /** @type {?string} */
83
85
  this.mimeType = null;
84
86
  /** @type {?string} */
85
87
  this.mediaPlaylistFullMimeType = null;
@@ -115,9 +117,9 @@ const ShakaDemoAssetInfo = class {
115
117
  }
116
118
 
117
119
  /**
118
- * A sort comparator for comparing two message Ids, ignoring case.
119
- * @param {shakaDemo.MessageIds} a
120
- * @param {shakaDemo.MessageIds} b
120
+ * A sort comparator for comparing two messages, ignoring case.
121
+ * @param {string} a
122
+ * @param {string} b
121
123
  * @return {number}
122
124
  * @private
123
125
  */
@@ -167,6 +169,11 @@ const ShakaDemoAssetInfo = class {
167
169
  return this.drm.length == 1 && this.drm[0] == shakaAssets.KeySystem.CLEAR;
168
170
  }
169
171
 
172
+ /** @return {boolean} */
173
+ isAes128() {
174
+ return this.drm.length == 1 && this.drm[0] == shakaAssets.KeySystem.AES128;
175
+ }
176
+
170
177
  /**
171
178
  * @param {string} mediaPlaylistFullMimeType
172
179
  * @return {!ShakaDemoAssetInfo}
@@ -284,6 +291,21 @@ const ShakaDemoAssetInfo = class {
284
291
  return this;
285
292
  }
286
293
 
294
+ /**
295
+ * @param {string} url
296
+ * @param {?Object=} adsParams
297
+ * @return {!ShakaDemoAssetInfo}
298
+ */
299
+ setMediaTailor(url, adsParams=null) {
300
+ this.mediaTailorUrl = url;
301
+ this.mediaTailorAdsParams = adsParams;
302
+ if (!this.features.includes(shakaAssets.Feature.ADS)) {
303
+ this.addFeature(shakaAssets.Feature.ADS);
304
+ }
305
+
306
+ return this;
307
+ }
308
+
287
309
  /**
288
310
  * @param {string} headerName
289
311
  * @param {string} headerValue