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
@@ -282,11 +282,13 @@ shaka.util.Error.Code = {
282
282
  'HLS_MSE_ENCRYPTED_MP2T_NOT_SUPPORTED': 4040,
283
283
  'HLS_MSE_ENCRYPTED_LEGACY_APPLE_MEDIA_KEYS_NOT_SUPPORTED': 4041,
284
284
  'NO_WEB_CRYPTO_API': 4042,
285
- 'HLS_AES_128_INVALID_IV_LENGTH': 4043,
286
- 'HLS_AES_128_INVALID_KEY_LENGTH': 4044,
287
285
  'CANNOT_ADD_EXTERNAL_THUMBNAILS_TO_LIVE_STREAM': 4045,
288
286
  'MSS_INVALID_XML': 4046,
289
287
  'MSS_LIVE_CONTENT_NOT_SUPPORTED': 4047,
288
+ 'AES_128_INVALID_IV_LENGTH': 4048,
289
+ 'AES_128_INVALID_KEY_LENGTH': 4049,
290
+ 'DASH_CONFLICTING_AES_128': 4050,
291
+ 'DASH_UNSUPPORTED_AES_128': 4051,
290
292
  'STREAMING_ENGINE_STARTUP_INVALID_STATE': 5006,
291
293
  'NO_RECOGNIZED_KEY_SYSTEMS': 6000,
292
294
  'REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE': 6001,
@@ -337,7 +339,8 @@ shaka.util.Error.Code = {
337
339
  'CS_AD_MANAGER_NOT_INITIALIZED': 10001,
338
340
  'SS_IMA_SDK_MISSING': 10002,
339
341
  'SS_AD_MANAGER_NOT_INITIALIZED': 10003,
340
- 'CURRENT_DAI_REQUEST_NOT_FINISHED': 10004
342
+ 'CURRENT_DAI_REQUEST_NOT_FINISHED': 10004,
343
+ 'MT_AD_MANAGER_NOT_INITIALIZED': 10005
341
344
  };
342
345
  /**
343
346
  * @summary A set of language utility functions.
@@ -587,6 +590,13 @@ shaka.ui.Localization.LOCALE_CHANGED;
587
590
  * @const {string}
588
591
  */
589
592
  shaka.ui.Localization.LOCALE_UPDATED;
593
+ /**
594
+ * @enum {string}
595
+ */
596
+ shaka.config.CodecSwitchingStrategy = {
597
+ RELOAD: 'reload',
598
+ SMOOTH: 'smooth'
599
+ };
590
600
  /**
591
601
  * @summary A set of BufferSource utility functions.
592
602
  */
@@ -700,6 +710,223 @@ shaka.text.Cue = class {
700
710
  */
701
711
  static equal(cue1, cue2) {}
702
712
  };
713
+ /**
714
+ * The start time of the cue in seconds, relative to the start of the
715
+ * presentation.
716
+ * @type {number}
717
+ */
718
+ shaka.text.Cue.prototype.startTime;
719
+ /**
720
+ * The end time of the cue in seconds, relative to the start of the
721
+ * presentation.
722
+ * @type {number}
723
+ */
724
+ shaka.text.Cue.prototype.endTime;
725
+ /**
726
+ * The text payload of the cue. If nestedCues is non-empty, this should be
727
+ * empty. Top-level block containers should have no payload of their own.
728
+ * @type {string}
729
+ */
730
+ shaka.text.Cue.prototype.payload;
731
+ /**
732
+ * The region to render the cue into. Only supported on top-level cues,
733
+ * because nested cues are inline elements.
734
+ * @type {shaka.text.CueRegion}
735
+ */
736
+ shaka.text.Cue.prototype.region;
737
+ /**
738
+ * The indent (in percent) of the cue box in the direction defined by the
739
+ * writing direction.
740
+ * @type {?number}
741
+ */
742
+ shaka.text.Cue.prototype.position;
743
+ /**
744
+ * Position alignment of the cue.
745
+ * @type {shaka.text.Cue.positionAlign}
746
+ */
747
+ shaka.text.Cue.prototype.positionAlign;
748
+ /**
749
+ * Size of the cue box (in percents), where 0 means "auto".
750
+ * @type {number}
751
+ */
752
+ shaka.text.Cue.prototype.size;
753
+ /**
754
+ * Alignment of the text inside the cue box.
755
+ * @type {shaka.text.Cue.textAlign}
756
+ */
757
+ shaka.text.Cue.prototype.textAlign;
758
+ /**
759
+ * Text direction of the cue.
760
+ * @type {shaka.text.Cue.direction}
761
+ */
762
+ shaka.text.Cue.prototype.direction;
763
+ /**
764
+ * Text writing mode of the cue.
765
+ * @type {shaka.text.Cue.writingMode}
766
+ */
767
+ shaka.text.Cue.prototype.writingMode;
768
+ /**
769
+ * The way to interpret line field. (Either as an integer line number or
770
+ * percentage from the display box).
771
+ * @type {shaka.text.Cue.lineInterpretation}
772
+ */
773
+ shaka.text.Cue.prototype.lineInterpretation;
774
+ /**
775
+ * The offset from the display box in either number of lines or
776
+ * percentage depending on the value of lineInterpretation.
777
+ * @type {?number}
778
+ */
779
+ shaka.text.Cue.prototype.line;
780
+ /**
781
+ * Separation between line areas inside the cue box in px or em
782
+ * (e.g. '100px'/'100em'). If not specified, this should be no less than
783
+ * the largest font size applied to the text in the cue.
784
+ * @type {string}.
785
+ */
786
+ shaka.text.Cue.prototype.lineHeight;
787
+ /**
788
+ * Line alignment of the cue box.
789
+ * Start alignment means the cue box’s top side (for horizontal cues), left
790
+ * side (for vertical growing right), or right side (for vertical growing
791
+ * left) is aligned at the line.
792
+ * Center alignment means the cue box is centered at the line.
793
+ * End alignment The cue box’s bottom side (for horizontal cues), right side
794
+ * (for vertical growing right), or left side (for vertical growing left) is
795
+ * aligned at the line.
796
+ * @type {shaka.text.Cue.lineAlign}
797
+ */
798
+ shaka.text.Cue.prototype.lineAlign;
799
+ /**
800
+ * Vertical alignments of the cues within their extents.
801
+ * 'BEFORE' means displaying the captions at the top of the text display
802
+ * container box, 'CENTER' means in the middle, 'AFTER' means at the bottom.
803
+ * @type {shaka.text.Cue.displayAlign}
804
+ */
805
+ shaka.text.Cue.prototype.displayAlign;
806
+ /**
807
+ * Text color as a CSS color, e.g. "#FFFFFF" or "white".
808
+ * @type {string}
809
+ */
810
+ shaka.text.Cue.prototype.color;
811
+ /**
812
+ * Text background color as a CSS color, e.g. "#FFFFFF" or "white".
813
+ * @type {string}
814
+ */
815
+ shaka.text.Cue.prototype.backgroundColor;
816
+ /**
817
+ * The URL of the background image, e.g. "data:[mime type];base64,[data]".
818
+ * @type {string}
819
+ */
820
+ shaka.text.Cue.prototype.backgroundImage;
821
+ /**
822
+ * The border around this cue as a CSS border.
823
+ * @type {string}
824
+ */
825
+ shaka.text.Cue.prototype.border;
826
+ /**
827
+ * Text font size in px or em (e.g. '100px'/'100em').
828
+ * @type {string}
829
+ */
830
+ shaka.text.Cue.prototype.fontSize;
831
+ /**
832
+ * Text font weight. Either normal or bold.
833
+ * @type {shaka.text.Cue.fontWeight}
834
+ */
835
+ shaka.text.Cue.prototype.fontWeight;
836
+ /**
837
+ * Text font style. Normal, italic or oblique.
838
+ * @type {shaka.text.Cue.fontStyle}
839
+ */
840
+ shaka.text.Cue.prototype.fontStyle;
841
+ /**
842
+ * Text font family.
843
+ * @type {string}
844
+ */
845
+ shaka.text.Cue.prototype.fontFamily;
846
+ /**
847
+ * Text letter spacing as a CSS letter-spacing value.
848
+ * @type {string}
849
+ */
850
+ shaka.text.Cue.prototype.letterSpacing;
851
+ /**
852
+ * Text line padding as a CSS line-padding value.
853
+ * @type {string}
854
+ */
855
+ shaka.text.Cue.prototype.linePadding;
856
+ /**
857
+ * Opacity of the cue element, from 0-1.
858
+ * @type {number}
859
+ */
860
+ shaka.text.Cue.prototype.opacity;
861
+ /**
862
+ * Text combine upright as a CSS text-combine-upright value.
863
+ * @type {string}
864
+ */
865
+ shaka.text.Cue.prototype.textCombineUpright;
866
+ /**
867
+ * Text decoration. A combination of underline, overline
868
+ * and line through. Empty array means no decoration.
869
+ * @type {!Array.<!shaka.text.Cue.textDecoration>}
870
+ */
871
+ shaka.text.Cue.prototype.textDecoration;
872
+ /**
873
+ * Text shadow color as a CSS text-shadow value.
874
+ * @type {string}
875
+ */
876
+ shaka.text.Cue.prototype.textShadow;
877
+ /**
878
+ * Text stroke color as a CSS color, e.g. "#FFFFFF" or "white".
879
+ * @type {string}
880
+ */
881
+ shaka.text.Cue.prototype.textStrokeColor;
882
+ /**
883
+ * Text stroke width as a CSS stroke-width value.
884
+ * @type {string}
885
+ */
886
+ shaka.text.Cue.prototype.textStrokeWidth;
887
+ /**
888
+ * Whether or not line wrapping should be applied to the cue.
889
+ * @type {boolean}
890
+ */
891
+ shaka.text.Cue.prototype.wrapLine;
892
+ /**
893
+ * Id of the cue.
894
+ * @type {string}
895
+ */
896
+ shaka.text.Cue.prototype.id;
897
+ /**
898
+ * Nested cues, which should be laid out horizontally in one block.
899
+ * Top-level cues are blocks, and nested cues are inline elements.
900
+ * Cues can be nested arbitrarily deeply.
901
+ * @type {!Array.<!shaka.text.Cue>}
902
+ */
903
+ shaka.text.Cue.prototype.nestedCues;
904
+ /**
905
+ * If true, this represents a container element that is "above" the main
906
+ * cues. For example, the <body> and <div> tags that contain the <p> tags
907
+ * in a TTML file. This controls the flow of the final cues; any nested cues
908
+ * within an "isContainer" cue will be laid out as separate lines.
909
+ * @type {boolean}
910
+ */
911
+ shaka.text.Cue.prototype.isContainer;
912
+ /**
913
+ * Whether or not the cue only acts as a line break between two nested cues.
914
+ * Should only appear in nested cues.
915
+ * @type {boolean}
916
+ */
917
+ shaka.text.Cue.prototype.lineBreak;
918
+ /**
919
+ * Used to indicate the type of ruby tag that should be used when rendering
920
+ * the cue. Valid values: ruby, rp, rt.
921
+ * @type {?string}
922
+ */
923
+ shaka.text.Cue.prototype.rubyTag;
924
+ /**
925
+ * The number of horizontal and vertical cells into which the Root Container
926
+ * Region area is divided.
927
+ * @type {{ columns: number, rows: number }}
928
+ */
929
+ shaka.text.Cue.prototype.cellResolution;
703
930
  /**
704
931
  * @enum {string}
705
932
  */
@@ -821,6 +1048,68 @@ shaka.text.CueRegion = class {
821
1048
  /** */
822
1049
  constructor() {}
823
1050
  };
1051
+ /**
1052
+ * Region identifier.
1053
+ * @type {string}
1054
+ */
1055
+ shaka.text.CueRegion.prototype.id;
1056
+ /**
1057
+ * The X offset to start the rendering area in viewportAnchorUnits of the
1058
+ * video width.
1059
+ * @type {number}
1060
+ */
1061
+ shaka.text.CueRegion.prototype.viewportAnchorX;
1062
+ /**
1063
+ * The X offset to start the rendering area in viewportAnchorUnits of the
1064
+ * video height.
1065
+ * @type {number}
1066
+ */
1067
+ shaka.text.CueRegion.prototype.viewportAnchorY;
1068
+ /**
1069
+ * The X offset to start the rendering area in percentage (0-100) of this
1070
+ * region width.
1071
+ * @type {number}
1072
+ */
1073
+ shaka.text.CueRegion.prototype.regionAnchorX;
1074
+ /**
1075
+ * The Y offset to start the rendering area in percentage (0-100) of the
1076
+ * region height.
1077
+ * @type {number}
1078
+ */
1079
+ shaka.text.CueRegion.prototype.regionAnchorY;
1080
+ /**
1081
+ * The width of the rendering area in widthUnits.
1082
+ * @type {number}
1083
+ */
1084
+ shaka.text.CueRegion.prototype.width;
1085
+ /**
1086
+ * The width of the rendering area in heightUnits.
1087
+ * @type {number}
1088
+ */
1089
+ shaka.text.CueRegion.prototype.height;
1090
+ /**
1091
+ * The units (percentage, pixels or lines) the region height is in.
1092
+ * @type {shaka.text.CueRegion.units}
1093
+ */
1094
+ shaka.text.CueRegion.prototype.heightUnits;
1095
+ /**
1096
+ * The units (percentage or pixels) the region width is in.
1097
+ * @type {shaka.text.CueRegion.units}
1098
+ */
1099
+ shaka.text.CueRegion.prototype.widthUnits;
1100
+ /**
1101
+ * The units (percentage or pixels) the region viewportAnchors are in.
1102
+ * @type {shaka.text.CueRegion.units}
1103
+ */
1104
+ shaka.text.CueRegion.prototype.viewportAnchorUnits;
1105
+ /**
1106
+ * If scroll=UP, it means that cues in the region will be added to the
1107
+ * bottom of the region and will push any already displayed cues in the
1108
+ * region up. Otherwise (scroll=NONE) cues will stay fixed at the location
1109
+ * they were first painted in.
1110
+ * @type {shaka.text.CueRegion.scrollMode}
1111
+ */
1112
+ shaka.text.CueRegion.prototype.scroll;
824
1113
  /**
825
1114
  * @enum {number}
826
1115
  */
@@ -1300,7 +1589,8 @@ shaka.net.NetworkingEngine.RequestType = {
1300
1589
  'APP': 3,
1301
1590
  'TIMING': 4,
1302
1591
  'SERVER_CERTIFICATE': 5,
1303
- 'KEY': 6
1592
+ 'KEY': 6,
1593
+ 'ADS': 7
1304
1594
  };
1305
1595
  /**
1306
1596
  * A more advanced form of the RequestType structure, meant to describe
@@ -1732,8 +2022,10 @@ shaka.media.InitSegmentReference = class {
1732
2022
  * the quality of the media associated with this init segment.
1733
2023
  * @param {(null|number)=} timescale
1734
2024
  * @param {(null|BufferSource)=} segmentData
2025
+ * @param {?shaka.extern.aes128Key=} aes128Key
2026
+ * The segment's AES-128-CBC full segment encryption key and iv.
1735
2027
  */
1736
- constructor(uris, startByte, endByte, mediaQuality, timescale, segmentData) {}
2028
+ constructor(uris, startByte, endByte, mediaQuality, timescale, segmentData, aes128Key) {}
1737
2029
  /**
1738
2030
  * Returns the offset from the start of the resource to the
1739
2031
  * start of the segment.
@@ -1806,10 +2098,10 @@ shaka.media.SegmentReference = class {
1806
2098
  * @param {shaka.media.SegmentReference.Status=} status
1807
2099
  * The segment status is used to indicate that a segment does not exist or is
1808
2100
  * not available.
1809
- * @param {?shaka.extern.HlsAes128Key=} hlsAes128Key
2101
+ * @param {?shaka.extern.aes128Key=} aes128Key
1810
2102
  * The segment's AES-128-CBC full segment encryption key and iv.
1811
2103
  */
1812
- constructor(startTime, endTime, uris, startByte, endByte, initSegmentReference, timestampOffset, appendWindowStart, appendWindowEnd, partialReferences, tilesLayout, tileDuration, syncTime, status, hlsAes128Key) {}
2104
+ constructor(startTime, endTime, uris, startByte, endByte, initSegmentReference, timestampOffset, appendWindowStart, appendWindowEnd, partialReferences, tilesLayout, tileDuration, syncTime, status, aes128Key) {}
1813
2105
  /**
1814
2106
  * Creates and returns the URIs of the resource containing the segment.
1815
2107
  * @return {!Array.<string>}
@@ -1965,8 +2257,9 @@ shaka.util.Id3Utils = class {
1965
2257
  shaka.util.ExpGolomb = class {
1966
2258
  /**
1967
2259
  * @param {!Uint8Array} data
2260
+ * @param {boolean=} convertEbsp2rbsp
1968
2261
  */
1969
- constructor(data) {}
2262
+ constructor(data, convertEbsp2rbsp) {}
1970
2263
  };
1971
2264
  /**
1972
2265
  * @see https://en.wikipedia.org/wiki/MPEG_transport_stream
@@ -1993,6 +2286,16 @@ shaka.util.TsParser = class {
1993
2286
  * @return {!Array.<shaka.extern.VideoNalu>}
1994
2287
  */
1995
2288
  parseAvcNalus(pes, nextPes) {}
2289
+ /**
2290
+ * Parse AVC and HVC Nalus
2291
+ * The code is based on hls.js
2292
+ * Credit to https://github.com/video-dev/hls.js/blob/master/src/demux/tsdemuxer.ts
2293
+ * @param {shaka.extern.MPEG_PES} pes
2294
+ * @param {?shaka.extern.MPEG_PES=} nextPes
2295
+ * @param {?shaka.extern.VideoNalu=} lastNalu
2296
+ * @return {!Array.<shaka.extern.VideoNalu>}
2297
+ */
2298
+ parseNalus(pes, nextPes, lastNalu) {}
1996
2299
  /**
1997
2300
  * Return the ID3 metadata
1998
2301
  * @return {!Array.<shaka.extern.ID3Metadata>}
@@ -2052,23 +2355,23 @@ shaka.util.TsParser = class {
2052
2355
  shaka.util.TsParser.Timescale;
2053
2356
  /**
2054
2357
  * @summary
2055
- * lcevcDil - (MPEG-5 Part 2 LCEVC - Decoder Integration Layer) provides
2358
+ * lcevcDec - (MPEG-5 Part 2 LCEVC - Decoder) provides
2056
2359
  * all the operations related to the enhancement and rendering
2057
2360
  * of LCEVC enabled streams and on to a canvas.
2058
2361
  * @implements {shaka.util.IReleasable}
2059
2362
  */
2060
- shaka.lcevc.Dil = class {
2363
+ shaka.lcevc.Dec = class {
2061
2364
  /**
2062
2365
  * @param {HTMLVideoElement} media The video element that will be attached to
2063
- * LCEVC Dil for input.
2366
+ * LCEVC Decoder for input.
2064
2367
  * @param {HTMLCanvasElement} canvas The canvas element that will be attached
2065
- * to LCEVC Dil to render the enhanced frames.
2066
- * @param {shaka.extern.LcevcConfiguration} dilConfig The LCEVC DIL
2067
- * config object to initialize the LCEVC DIL.
2368
+ * to LCEVC Decoder to render the enhanced frames.
2369
+ * @param {shaka.extern.LcevcConfiguration} lcevcConfig LCEVC configuration
2370
+ * object to initialize the LCEVC Decoder.
2068
2371
  */
2069
- constructor(media, canvas, dilConfig) {}
2372
+ constructor(media, canvas, lcevcConfig) {}
2070
2373
  /**
2071
- * Close LCEVC Dil.
2374
+ * Close LCEVC Decoder.
2072
2375
  * @override
2073
2376
  */
2074
2377
  release() {}
@@ -2792,9 +3095,10 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
2792
3095
  * <code>load</code> but cannot interrupt calls to <code>attach</code>,
2793
3096
  * <code>detach</code>, or <code>unload</code>.
2794
3097
  * @param {boolean=} initializeMediaSource
3098
+ * @param {boolean=} keepAdManager
2795
3099
  * @return {!Promise}
2796
3100
  */
2797
- unload(initializeMediaSource) {}
3101
+ unload(initializeMediaSource, keepAdManager) {}
2798
3102
  /**
2799
3103
  * Provides a way to update the stream start position during the media loading
2800
3104
  * process. Can for example be called from the <code>manifestparsed</code>
@@ -3397,6 +3701,138 @@ shaka.ads.ClientSideAd = class {
3397
3701
  */
3398
3702
  release() {}
3399
3703
  };
3704
+ /**
3705
+ * @implements {shaka.extern.IAd}
3706
+ */
3707
+ shaka.ads.MediaTailorAd = class {
3708
+ /**
3709
+ * @param {mediaTailor.Ad} mediaTailorAd
3710
+ * @param {number} adPosition
3711
+ * @param {number} totalAds
3712
+ * @param {HTMLMediaElement} video
3713
+ */
3714
+ constructor(mediaTailorAd, adPosition, totalAds, isLinear, video) {}
3715
+ /**
3716
+ * @override
3717
+ */
3718
+ getDuration() {}
3719
+ /**
3720
+ * @override
3721
+ */
3722
+ getMinSuggestedDuration() {}
3723
+ /**
3724
+ * @override
3725
+ */
3726
+ getRemainingTime() {}
3727
+ /**
3728
+ * @override
3729
+ */
3730
+ isPaused() {}
3731
+ /**
3732
+ * @override
3733
+ */
3734
+ isSkippable() {}
3735
+ /**
3736
+ * @override
3737
+ */
3738
+ getTimeUntilSkippable() {}
3739
+ /**
3740
+ * @override
3741
+ */
3742
+ canSkipNow() {}
3743
+ /**
3744
+ * @override
3745
+ */
3746
+ skip() {}
3747
+ /**
3748
+ * @override
3749
+ */
3750
+ pause() {}
3751
+ /**
3752
+ * @override
3753
+ */
3754
+ play() {}
3755
+ /**
3756
+ * @override
3757
+ */
3758
+ getVolume() {}
3759
+ /**
3760
+ * @override
3761
+ */
3762
+ setVolume(volume) {}
3763
+ /**
3764
+ * @override
3765
+ */
3766
+ isMuted() {}
3767
+ /**
3768
+ * @override
3769
+ */
3770
+ isLinear() {}
3771
+ /**
3772
+ * @override
3773
+ */
3774
+ resize(width, height) {}
3775
+ /**
3776
+ * @override
3777
+ */
3778
+ setMuted(muted) {}
3779
+ /**
3780
+ * @override
3781
+ */
3782
+ getSequenceLength() {}
3783
+ /**
3784
+ * @override
3785
+ */
3786
+ getPositionInSequence() {}
3787
+ /**
3788
+ * @override
3789
+ */
3790
+ getTitle() {}
3791
+ /**
3792
+ * @override
3793
+ */
3794
+ getDescription() {}
3795
+ /**
3796
+ * @override
3797
+ */
3798
+ getVastMediaBitrate() {}
3799
+ /**
3800
+ * @override
3801
+ */
3802
+ getVastMediaHeight() {}
3803
+ /**
3804
+ * @override
3805
+ */
3806
+ getVastMediaWidth() {}
3807
+ /**
3808
+ * @override
3809
+ */
3810
+ getAdId() {}
3811
+ /**
3812
+ * @override
3813
+ */
3814
+ getCreativeAdId() {}
3815
+ /**
3816
+ * @override
3817
+ */
3818
+ getAdvertiserName() {}
3819
+ /**
3820
+ * @override
3821
+ */
3822
+ getMediaUrl() {}
3823
+ /**
3824
+ * @override
3825
+ */
3826
+ getTimeOffset() {}
3827
+ /**
3828
+ * @override
3829
+ */
3830
+ getPodIndex() {}
3831
+ /**
3832
+ * @override
3833
+ */
3834
+ release() {}
3835
+ };
3400
3836
  /**
3401
3837
  * @implements {shaka.extern.IAd}
3402
3838
  */
@@ -3563,6 +3999,18 @@ shaka.ads.AdManager = class extends shaka.util.FakeEventTarget {
3563
3999
  * @override
3564
4000
  */
3565
4001
  updateClientSideAdsRenderingSettings(adsRenderingSettings) {}
4002
+ /**
4003
+ * @override
4004
+ */
4005
+ initMediaTailor(adContainer, networkingEngine, video) {}
4006
+ /**
4007
+ * @param {string} url
4008
+ * @param {Object} adsParams
4009
+ * @param {string=} backupUrl
4010
+ * @return {!Promise.<string>}
4011
+ * @override
4012
+ */
4013
+ requestMediaTailorStream(url, adsParams, backupUrl) {}
3566
4014
  /**
3567
4015
  * @override
3568
4016
  */
@@ -3583,11 +4031,20 @@ shaka.ads.AdManager = class extends shaka.util.FakeEventTarget {
3583
4031
  * @override
3584
4032
  */
3585
4033
  getServerSideCuePoints() {}
4034
+ /**
4035
+ * @return {!Array.<!shaka.extern.AdCuePoint>}
4036
+ * @override
4037
+ */
4038
+ getCuePoints() {}
3586
4039
  /**
3587
4040
  * @return {shaka.extern.AdsStats}
3588
4041
  * @override
3589
4042
  */
3590
4043
  getStats() {}
4044
+ /**
4045
+ * @override
4046
+ */
4047
+ onManifestUpdated(isLive) {}
3591
4048
  /**
3592
4049
  * @override
3593
4050
  */
@@ -4863,7 +5320,7 @@ shaka.transmuxer.MpegTsTransmuxer = class {
4863
5320
  /**
4864
5321
  * @override
4865
5322
  */
4866
- transmux(data) {}
5323
+ transmux(data, stream, reference, duration, contentType) {}
4867
5324
  };
4868
5325
  /**
4869
5326
  * @implements {shaka.extern.Transmuxer}
@@ -4898,39 +5355,6 @@ shaka.transmuxer.MssTransmuxer = class {
4898
5355
  */
4899
5356
  transmux(data, stream, reference) {}
4900
5357
  };
4901
- /**
4902
- * @implements {shaka.extern.Transmuxer}
4903
- */
4904
- shaka.transmuxer.MuxjsTransmuxer = class {
4905
- /**
4906
- * @param {string} mimeType
4907
- */
4908
- constructor(mimeType) {}
4909
- /**
4910
- * @override
4911
- */
4912
- destroy() {}
4913
- /**
4914
- * Check if the mime type and the content type is supported.
4915
- * @param {string} mimeType
4916
- * @param {string=} contentType
4917
- * @return {boolean}
4918
- * @override
4919
- */
4920
- isSupported(mimeType, contentType) {}
4921
- /**
4922
- * @override
4923
- */
4924
- convertCodecs(contentType, mimeType) {}
4925
- /**
4926
- * @override
4927
- */
4928
- getOrginalMimeType() {}
4929
- /**
4930
- * @override
4931
- */
4932
- transmux(data) {}
4933
- };
4934
5358
  /**
4935
5359
  * @implements {shaka.extern.Transmuxer}
4936
5360
  */
@@ -5278,6 +5702,16 @@ shaka.ui.Controls = class extends shaka.util.FakeEventTarget {
5278
5702
  isFullScreenEnabled() {}
5279
5703
  /** */
5280
5704
  toggleFullScreen() {}
5705
+ /**
5706
+ * @return {boolean}
5707
+ */
5708
+ isPiPAllowed() {}
5709
+ /**
5710
+ * @return {boolean}
5711
+ */
5712
+ isPiPEnabled() {}
5713
+ /** */
5714
+ togglePiP() {}
5281
5715
  /** */
5282
5716
  showAdUI() {}
5283
5717
  /** */
@@ -5486,6 +5920,17 @@ shaka.ui.PresentationTimeTracker = class extends shaka.ui.Element {
5486
5920
  */
5487
5921
  constructor(parent, controls) {}
5488
5922
  };
5923
+ /**
5924
+ * @extends {shaka.ui.Element}
5925
+ * @final
5926
+ */
5927
+ shaka.ui.RemoteButton = class extends shaka.ui.Element {
5928
+ /**
5929
+ * @param {!HTMLElement} parent
5930
+ * @param {!shaka.ui.Controls} controls
5931
+ */
5932
+ constructor(parent, controls) {}
5933
+ };
5489
5934
  /**
5490
5935
  * @extends {shaka.ui.SettingsMenu}
5491
5936
  * @final