shaka-player 3.2.0 → 3.2.4

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 (162) hide show
  1. package/.github/workflows/build_and_test.yaml +73 -0
  2. package/.github/workflows/release.yaml +53 -0
  3. package/AUTHORS +3 -0
  4. package/CHANGELOG.md +182 -1
  5. package/CONTRIBUTORS +3 -0
  6. package/README.md +4 -4
  7. package/build/checkversion.py +1 -1
  8. package/build/generateExterns.js +1 -1
  9. package/build/misspellings.txt +1 -0
  10. package/build/shakaBuildHelpers.py +6 -5
  11. package/build/subprocessWindowsPatch.py +103 -0
  12. package/build/test.py +6 -0
  13. package/demo/common/assets.js +1 -1
  14. package/demo/index.html +1 -1
  15. package/dist/controls.css +2 -2
  16. package/dist/controls.css.map +1 -1
  17. package/dist/demo.compiled.debug.js +1 -1
  18. package/dist/demo.compiled.js +1 -1
  19. package/dist/deps.js +8 -8
  20. package/dist/locales.js +37 -37
  21. package/dist/receiver.compiled.debug.js +1 -1
  22. package/dist/receiver.compiled.js +1 -1
  23. package/dist/shaka-player.compiled.d.ts +195 -5
  24. package/dist/shaka-player.compiled.debug.d.ts +195 -5
  25. package/dist/shaka-player.compiled.debug.externs.js +226 -14
  26. package/dist/shaka-player.compiled.debug.js +424 -399
  27. package/dist/shaka-player.compiled.debug.map +4 -4
  28. package/dist/shaka-player.compiled.externs.js +226 -14
  29. package/dist/shaka-player.compiled.js +826 -812
  30. package/dist/shaka-player.compiled.map +4 -4
  31. package/dist/shaka-player.ui.d.ts +197 -16
  32. package/dist/shaka-player.ui.debug.d.ts +197 -16
  33. package/dist/shaka-player.ui.debug.externs.js +230 -27
  34. package/dist/shaka-player.ui.debug.js +466 -442
  35. package/dist/shaka-player.ui.debug.map +4 -4
  36. package/dist/shaka-player.ui.externs.js +230 -27
  37. package/dist/shaka-player.ui.js +946 -932
  38. package/dist/shaka-player.ui.map +4 -4
  39. package/docs/tutorials/fairplay.md +1 -1
  40. package/docs/tutorials/faq.md +14 -0
  41. package/docs/tutorials/ui.md +5 -5
  42. package/externs/ima.js +4 -0
  43. package/externs/shaka/ads.js +25 -0
  44. package/externs/shaka/player.js +8 -0
  45. package/externs/shaka/text.js +10 -0
  46. package/karma.conf.js +20 -15
  47. package/lib/ads/ad_manager.js +46 -26
  48. package/lib/ads/client_side_ad_manager.js +82 -88
  49. package/lib/ads/server_side_ad_manager.js +45 -13
  50. package/lib/cast/cast_proxy.js +6 -2
  51. package/lib/cast/cast_receiver.js +5 -1
  52. package/lib/cast/cast_sender.js +2 -2
  53. package/lib/cea/sei_processor.js +24 -17
  54. package/lib/dash/dash_parser.js +131 -24
  55. package/lib/dash/segment_list.js +1 -1
  56. package/lib/dash/segment_template.js +1 -1
  57. package/lib/hls/hls_parser.js +74 -17
  58. package/lib/hls/manifest_text_parser.js +1 -0
  59. package/lib/media/closed_caption_parser.js +3 -1
  60. package/lib/media/content_workarounds.js +12 -0
  61. package/lib/media/drm_engine.js +20 -1
  62. package/lib/media/gap_jumping_controller.js +8 -4
  63. package/lib/media/media_source_engine.js +1 -2
  64. package/lib/media/playhead.js +1 -1
  65. package/lib/media/region_observer.js +39 -33
  66. package/lib/media/region_timeline.js +17 -19
  67. package/lib/media/segment_index.js +2 -1
  68. package/lib/media/segment_reference.js +19 -1
  69. package/lib/media/streaming_engine.js +8 -4
  70. package/lib/net/networking_engine.js +6 -1
  71. package/lib/offline/download_manager.js +1 -2
  72. package/lib/offline/storage.js +8 -9
  73. package/lib/player.js +129 -59
  74. package/lib/polyfill/aria.js +12 -2
  75. package/lib/polyfill/encryption_scheme.js +2 -0
  76. package/lib/polyfill/fullscreen.js +2 -0
  77. package/lib/polyfill/mathround.js +2 -0
  78. package/lib/polyfill/media_capabilities.js +73 -21
  79. package/lib/polyfill/mediasource.js +8 -0
  80. package/lib/polyfill/orientation.js +3 -1
  81. package/lib/polyfill/patchedmediakeys_apple.js +6 -4
  82. package/lib/polyfill/patchedmediakeys_ms.js +6 -4
  83. package/lib/polyfill/patchedmediakeys_nop.js +2 -0
  84. package/lib/polyfill/patchedmediakeys_webkit.js +6 -4
  85. package/lib/polyfill/pip_webkit.js +2 -0
  86. package/lib/polyfill/storage_estimate.js +2 -0
  87. package/lib/polyfill/video_play_promise.js +2 -0
  88. package/lib/polyfill/videoplaybackquality.js +2 -0
  89. package/lib/polyfill/vttcue.js +2 -0
  90. package/lib/text/cue.js +6 -0
  91. package/lib/text/mp4_ttml_parser.js +3 -0
  92. package/lib/text/text_engine.js +14 -2
  93. package/lib/text/ttml_text_parser.js +135 -87
  94. package/lib/text/ui_text_displayer.js +213 -80
  95. package/lib/text/vtt_text_parser.js +4 -2
  96. package/lib/text/web_vtt_generator.js +21 -12
  97. package/lib/util/fake_event.js +53 -7
  98. package/lib/util/fake_event_target.js +21 -1
  99. package/lib/util/mp4_box_parsers.js +1 -1
  100. package/lib/util/periods.js +4 -1
  101. package/lib/util/platform.js +13 -1
  102. package/lib/util/stream_utils.js +105 -13
  103. package/lib/util/xml_utils.js +50 -12
  104. package/package.json +3 -6
  105. package/roadmap.md +24 -22
  106. package/test/cast/cast_proxy_unit.js +12 -6
  107. package/test/cast/cast_receiver_integration.js +1 -1
  108. package/test/cast/cast_utils_unit.js +1 -1
  109. package/test/cea/mp4_cea_parser_unit.js +26 -0
  110. package/test/dash/dash_parser_live_unit.js +43 -0
  111. package/test/dash/dash_parser_manifest_unit.js +222 -3
  112. package/test/hls/hls_parser_unit.js +79 -1
  113. package/test/media/closed_caption_parser_unit.js +20 -0
  114. package/test/media/drm_engine_integration.js +86 -2
  115. package/test/media/drm_engine_unit.js +57 -0
  116. package/test/media/playhead_unit.js +27 -1
  117. package/test/media/region_observer_unit.js +40 -5
  118. package/test/media/region_timeline_unit.js +40 -22
  119. package/test/media/streaming_engine_integration.js +2 -1
  120. package/test/media/streaming_engine_unit.js +145 -0
  121. package/test/player_integration.js +79 -8
  122. package/test/player_src_equals_integration.js +41 -8
  123. package/test/player_unit.js +14 -4
  124. package/test/test/assets/3675/chunk-stream0-00001.m4s +0 -0
  125. package/test/test/assets/3675/chunk-stream0-00002.m4s +0 -0
  126. package/test/test/assets/3675/chunk-stream0-00003.m4s +0 -0
  127. package/test/test/assets/3675/chunk-stream0-00004.m4s +0 -0
  128. package/test/test/assets/3675/chunk-stream0-00005.m4s +0 -0
  129. package/test/test/assets/3675/chunk-stream0-00006.m4s +0 -0
  130. package/test/test/assets/3675/chunk-stream0-00007.m4s +0 -0
  131. package/test/test/assets/3675/dash_0.mpd +30 -0
  132. package/test/test/assets/3675/dash_1.mpd +30 -0
  133. package/test/test/assets/3675/dash_2.mpd +30 -0
  134. package/test/test/assets/3675/dash_3.mpd +30 -0
  135. package/test/test/assets/3675/dash_4.mpd +30 -0
  136. package/test/test/assets/3675/dash_5.mpd +26 -0
  137. package/test/test/assets/3675/init-stream0.m4s +0 -0
  138. package/test/test/assets/chapters.vtt +2 -2
  139. package/test/test/assets/chapters2.vtt +10 -0
  140. package/test/test/assets/empty_caption_video_init.mp4 +0 -0
  141. package/test/test/assets/empty_caption_video_segment.mp4 +0 -0
  142. package/test/test/util/fake_ad_manager.js +11 -1
  143. package/test/test/util/ttml_utils.js +81 -0
  144. package/test/test/util/util.js +10 -7
  145. package/test/text/mp4_ttml_parser_unit.js +11 -18
  146. package/test/text/ttml_text_parser_unit.js +542 -220
  147. package/test/text/ui_text_displayer_unit.js +93 -20
  148. package/test/text/vtt_text_parser_unit.js +17 -1
  149. package/test/text/web_vtt_generator_unit.js +58 -3
  150. package/test/ui/localization_unit.js +15 -14
  151. package/test/ui/text_displayer_layout_unit.js +21 -8
  152. package/test/util/mp4_box_parsers_unit.js +28 -0
  153. package/test/util/stream_utils_unit.js +60 -3
  154. package/ui/cast_button.js +2 -3
  155. package/ui/controls.js +11 -6
  156. package/ui/less/buttons.less +0 -4
  157. package/ui/less/containers.less +6 -7
  158. package/ui/locales/ru.json +6 -6
  159. package/ui/localization.js +40 -87
  160. package/ui/pip_button.js +2 -3
  161. package/ui/seek_bar.js +1 -2
  162. package/ui/text_selection.js +1 -0
@@ -0,0 +1,73 @@
1
+ name: Build and Test PR
2
+
3
+ on:
4
+ pull_request: # Trigger for pull requests.
5
+ types: [opened, synchronize, reopened, edited, ready_for_review]
6
+ branches:
7
+ - master
8
+ - v[0-9]*
9
+ workflow_dispatch: # Allows for manual triggering.
10
+ inputs:
11
+ ref:
12
+ description: "The ref to build and test."
13
+ required: False
14
+
15
+ jobs:
16
+ lint:
17
+ name: Lint
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - name: Checkout code
21
+ uses: actions/checkout@v2
22
+ with:
23
+ ref: ${{ github.event.inputs.ref || github.ref }}
24
+
25
+ - name: Lint
26
+ run: python build/check.py
27
+
28
+ build_and_test:
29
+ # Don't waste time doing a full matrix of test runs when there was an
30
+ # obvious linter error.
31
+ needs: lint
32
+ strategy:
33
+ matrix:
34
+ os: ["ubuntu-latest", "macos-latest", "windows-latest"]
35
+ browser: ["Chrome", "Firefox", "Edge", "Safari"]
36
+ exclude:
37
+ - os: ubuntu-latest
38
+ browser: Edge
39
+ - os: windows-latest
40
+ browser: Safari
41
+ - os: ubuntu-latest
42
+ browser: Safari
43
+ include:
44
+ # Run Linux browsers with xvfb, so they're in a headless X session.
45
+ - os: ubuntu-latest
46
+ extra_flags: "--use-xvfb"
47
+ # Disable fail-fast so that one matrix-job failing doesn't make the other
48
+ # ones end early.
49
+ fail-fast: false
50
+
51
+ name: Build and test ${{ matrix.os }} ${{ matrix.browser }}
52
+ runs-on: ${{ matrix.os }}
53
+
54
+ steps:
55
+ # Firefox on Ubuntu appears to not have the right things installed in
56
+ # the environment used by GitHub actions, so make sure that ffmpeg is
57
+ # installed. Otherwise, the browser might not support some codecs that the
58
+ # tests assume will be supported.
59
+ - name: Install FFmpeg
60
+ if: matrix.os == 'ubuntu-latest' && matrix.browser == 'Firefox'
61
+ run: sudo apt -y update && sudo apt -y install ffmpeg
62
+
63
+ - name: Checkout code
64
+ uses: actions/checkout@v2
65
+ with:
66
+ ref: ${{ github.event.inputs.ref || github.ref }}
67
+
68
+ - name: Build Player
69
+ run: python build/all.py
70
+
71
+ - name: Test Player
72
+ run: |
73
+ python build/test.py --browsers ${{ matrix.browser }} --reporters spec --spec-hide-passed --drm ${{ matrix.extra_flags }}
@@ -0,0 +1,53 @@
1
+ on:
2
+ push:
3
+ branches:
4
+ - master
5
+ - v[0-9]*
6
+
7
+ name: Release
8
+
9
+ jobs:
10
+ release:
11
+ runs-on: ubuntu-latest
12
+ outputs:
13
+ release_created: ${{ steps.release.outputs.release_created }}
14
+ tag_name: ${{ steps.release.outputs.tag_name }}
15
+ steps:
16
+ # Create/update release PR
17
+ - uses: google-github-actions/release-please-action@v3
18
+ id: release
19
+ with:
20
+ # Required input to specify the release type (node package).
21
+ release-type: node
22
+ # Make sure the player version gets updated.
23
+ extra-files: lib/player.js
24
+ # Make sure we create the PR against the correct branch.
25
+ default-branch: ${{ github.ref_name }}
26
+
27
+ # The jobs below are all conditional on a release having been created by
28
+ # someone merging the release PR. They all run in parallel.
29
+
30
+ npm:
31
+ runs-on: ubuntu-latest
32
+ needs: release
33
+ if: ${{ needs.release.outputs.release_created }}
34
+ steps:
35
+ - uses: actions/checkout@v2
36
+ - uses: actions/setup-node@v1
37
+ with:
38
+ node-version: 12
39
+ registry-url: 'https://registry.npmjs.org'
40
+ - run: npm ci
41
+ - run: npm publish
42
+ env:
43
+ NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
44
+ - run: npm pack
45
+ - uses: svenstaro/upload-release-action@483c1e56f95e88835747b1c7c60581215016cbf2
46
+ with:
47
+ repo_token: ${{ secrets.GITHUB_TOKEN }}
48
+ tag: ${{ needs.release.outputs.tag_name }}
49
+ file: shaka-player-*.tgz
50
+ file_glob: true
51
+ overwrite: true
52
+
53
+ # TODO: Publish to appspot
package/AUTHORS CHANGED
@@ -27,6 +27,8 @@ Code It <*@code-it.fr>
27
27
  Charter Communications Inc <*@charter.com>
28
28
  Damien Deis <developer.deis@gmail.com>
29
29
  Dany L'Hébreux <danylhebreux@gmail.com>
30
+ Dl Dador <dldador@gmail.com>
31
+ Enson Choy <enson.choy@harmonicinc.com>
30
32
  Esteban Dosztal <edosztal@gmail.com>
31
33
  Fadomire <fadomire@gmail.com>
32
34
  Google Inc. <*@google.com>
@@ -55,6 +57,7 @@ Peter Nycander <peter.nycander@gmail.com>
55
57
  Philo Inc. <*@philo.com>
56
58
  Prakash <duggaraju@gmail.com>
57
59
  Robert Colantuoni <rgc@colantuoni.com>
60
+ Robert Galluccio <robertnw5@gmail.com>
58
61
  Roi Lipman <roilipman@gmail.com>
59
62
  Roksolana Ivanyshyn <roksolana.ivanyshyn.pub@gmail.com>
60
63
  Rostislav Hejduk <Ross-cz@users.noreply.github.com>
package/CHANGELOG.md CHANGED
@@ -1,3 +1,185 @@
1
+ # Changelog
2
+
3
+ ## [3.2.4](https://github.com/google/shaka-player/compare/v3.2.3...v3.2.4) (2022-02-17)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * Add explicit release() for FakeEventTarget ([#3950](https://github.com/google/shaka-player/issues/3950)) ([6242622](https://github.com/google/shaka-player/commit/62426223272d0955e130e6f67145e3203504379c))
9
+ * Fix download of some HLS assets ([#3934](https://github.com/google/shaka-player/issues/3934)) ([61c0c09](https://github.com/google/shaka-player/commit/61c0c09de96a50133d28a22df632b48b89eb1d13))
10
+ * Fix exception in StreamingEngine for EMSG with HLS ([#3887](https://github.com/google/shaka-player/issues/3887)) ([0c4a79f](https://github.com/google/shaka-player/commit/0c4a79f4354f38dc09957fa89a80a11ec0abc88e)), closes [#3886](https://github.com/google/shaka-player/issues/3886)
11
+ * Fix memory leak in DASH live streams with inband EventStream ([#3957](https://github.com/google/shaka-player/issues/3957)) ([7891a85](https://github.com/google/shaka-player/commit/7891a85485ab05d5de72a496637f3b91653b2c60))
12
+ * **HLS:** skip whitespace in attributes ([#3884](https://github.com/google/shaka-player/issues/3884)) ([4bfc92e](https://github.com/google/shaka-player/commit/4bfc92ee536a57ea2a1e2aa1addfe1d9a1731c88))
13
+
14
+ ## 3.2.3 (2022-01-28)
15
+
16
+ Bugfixes:
17
+ - Fix support for TTAF1 namespace (old version of TTML)
18
+ - https://github.com/google/shaka-player/issues/3009
19
+ - https://github.com/google/shaka-player/pull/3864
20
+ - https://github.com/google/shaka-player/pull/3906
21
+ - Fix misdetection of HEVC support on MS Edge
22
+ - https://github.com/google/shaka-player/pull/3897
23
+ - Fix caption overlap
24
+ - https://github.com/google/shaka-player/issues/3850
25
+ - https://github.com/google/shaka-player/issues/3741
26
+ - Support multiple chapter tracks with same language
27
+ - https://github.com/google/shaka-player/issues/3597
28
+ - https://github.com/google/shaka-player/pull/3868
29
+ - Fix text UI not updating when text is disabled
30
+ - https://github.com/google/shaka-player/issues/3728
31
+ - https://github.com/google/shaka-player/pull/3867
32
+ - Clear buffer on seek if mediaState is updating
33
+ - https://github.com/google/shaka-player/issues/3299
34
+ - https://github.com/google/shaka-player/pull/3795
35
+ - Fix thumbnails issues
36
+ - https://github.com/google/shaka-player/pull/3858
37
+ - Made nested cues inherit region
38
+ - https://github.com/google/shaka-player/issues/3743
39
+ - https://github.com/google/shaka-player/pull/3837
40
+ - Fix MediaCapabilities polyfill on Safari
41
+ - https://github.com/google/shaka-player/issues/3696
42
+ - https://github.com/google/shaka-player/issues/3530
43
+ - Fix usage of Shaka without polyfills
44
+ - https://github.com/google/shaka-player/issues/3843
45
+ - Fix playback failure due to rounding errors
46
+ - https://github.com/google/shaka-player/issues/3717
47
+ - Fix HLS image track issues
48
+ - https://github.com/google/shaka-player/issues/3840
49
+ - Remove caption wrapper bgColor
50
+ - https://github.com/google/shaka-player/issues/3745
51
+ - https://github.com/google/shaka-player/pull/3838
52
+ - Support "forced-subtitle" role
53
+ - https://github.com/google/shaka-player/issues/3767
54
+ - https://github.com/google/shaka-player/pull/3807
55
+ - Fix time element height on Safari
56
+ - https://github.com/google/shaka-player/issues/3739
57
+ - https://github.com/google/shaka-player/pull/3809
58
+
59
+
60
+ ## 3.2.2 (2022-01-06)
61
+
62
+ Bugfixes:
63
+ - Allow comments in the TTML parser
64
+ - https://github.com/google/shaka-player/issues/3766
65
+ - https://github.com/google/shaka-player/pull/3827
66
+ - Fix HDR signalling via essential or supplemental property
67
+ - https://github.com/google/shaka-player/issues/3726
68
+ - https://github.com/google/shaka-player/pull/3727
69
+ - Fix MediaCapabilities polyfill on Playstation 5
70
+ - https://github.com/google/shaka-player/issues/3582
71
+ - https://github.com/google/shaka-player/pull/3808
72
+ - Add DASH MIME type mapping for src= playback
73
+ - https://github.com/google/shaka-player/pull/3805
74
+ - Fix captions not working after a period transition on live DASH streams
75
+ - https://github.com/google/shaka-player/issues/3783
76
+ - https://github.com/google/shaka-player/pull/3801
77
+ - Fix timestamp offset of CEA-608 cues
78
+ - https://github.com/google/shaka-player/issues/3782
79
+ - Force caption update when removing cues
80
+ - Fixes parsing of HLS 'DEFAULT' attribute
81
+ - https://github.com/google/shaka-player/issues/3769
82
+ - https://github.com/google/shaka-player/pull/3771
83
+ - support stpp.ttml codec in Mp4TtmlParser
84
+ - https://github.com/google/shaka-player/pull/3754
85
+ - Fix Russian translation
86
+ - https://github.com/google/shaka-player/pull/3751
87
+ - Fix HLS VOD duration
88
+ - https://github.com/google/shaka-player/issues/3733
89
+ - Query HDR transfer function
90
+ - https://github.com/google/shaka-player/issues/3729
91
+ - https://github.com/google/shaka-player/pull/3730
92
+ - Fix styling of UI text cues
93
+ - https://github.com/google/shaka-player/issues/3521
94
+ - https://github.com/google/shaka-player/issues/3600
95
+ - https://github.com/google/shaka-player/issues/3713
96
+ - Fix seek range issues on transition from live to VOD
97
+ - https://github.com/google/shaka-player/issues/3675
98
+ - Enforce string-format of event data keys
99
+ - https://github.com/google/shaka-player/issues/3710
100
+ - Fix vp09 playback on webOS
101
+ - https://github.com/google/shaka-player/pull/3566
102
+ - Dedupe DRM init data
103
+ - https://github.com/google/shaka-player/pull/3695
104
+ - Failover in geo-redundant streams
105
+ - https://github.com/google/shaka-player/pull/3587
106
+ - Update Cast receiver ID for v3.2
107
+
108
+ Demo App:
109
+ - Fix 'Tears of Steel (live, DASH, Server Side ads)'
110
+ - https://github.com/google/shaka-player/pull/3758
111
+
112
+ Docs:
113
+ - Fix typo in Fairplay tutorial
114
+ - https://github.com/google/shaka-player/pull/3714
115
+
116
+
117
+ ## 3.2.1 (2021-10-13)
118
+
119
+ Bugfixes:
120
+ - Work around override of MediaCapabilities polyfill in Apple browsers
121
+ - https://github.com/google/shaka-player/issues/3530
122
+ - https://github.com/google/shaka-player/pull/3668
123
+ - Fix video poster when autoplay is disabled
124
+ - https://github.com/google/shaka-player/pull/3645
125
+ - Fix tracking of active variant track in live streams
126
+ - Fixes updating of nested cues
127
+ - https://github.com/google/shaka-player/issues/3524
128
+ - https://github.com/google/shaka-player/issues/3643
129
+ - Fix ttml erroneously dismissing cues
130
+ - https://github.com/google/shaka-player/issues/3643
131
+ - Fix control panel alignment in UI
132
+ - https://github.com/google/shaka-player/pull/3650
133
+ - Export missing polyfill install methods
134
+ - https://github.com/google/shaka-player/pull/3660
135
+ - Dispose of ad manager on player detach
136
+ - https://github.com/google/shaka-player/pull/3665
137
+ - Add ResizeObserver to CS ad manager
138
+ - https://github.com/google/shaka-player/pull/3652
139
+ - Avoid seeking on src when start time is 0
140
+ - https://github.com/google/shaka-player/issues/3518
141
+ - https://github.com/google/shaka-player/pull/3644
142
+ - Tolerate misaligned TS files
143
+ - https://github.com/google/shaka-player/issues/3580
144
+ - Account for server-side ad cue points in external text tracks
145
+ - https://github.com/google/shaka-player/pull/3617
146
+ - Fix stopping of Server Side Ad manager
147
+ - https://github.com/google/shaka-player/pull/3611
148
+ - Fix DRM workaround for Tizen and Xbox with ac-3 boxes
149
+ - https://github.com/google/shaka-player/issues/3589
150
+ - https://github.com/google/shaka-player/pull/3631
151
+ - Fix DRM workaround for Tizen and Xbox with avc3 boxes
152
+ - https://github.com/google/shaka-player/pull/3625
153
+ - Fix `BUFFER_READ_OUT_OF_BOUNDS` error when CEA caption packets are empty
154
+ - https://github.com/google/shaka-player/issues/3608
155
+ - https://github.com/google/shaka-player/pull/3609
156
+ - Fix error when un-storing DRM asset
157
+ - https://github.com/google/shaka-player/issues/3534
158
+ - Fix CC parsing of EPB and v1 TKHD boxes
159
+ - https://github.com/google/shaka-player/issues/3502
160
+ - https://github.com/google/shaka-player/pull/3610
161
+ - Always polyfill MediaCapabilities for Apple browsers
162
+ - https://github.com/google/shaka-player/pull/3588
163
+ - Add Support to iOS 12 in MediaCapabilities polyfill
164
+ - https://github.com/google/shaka-player/pull/3573
165
+ - Add support to file type in MediaCapabilities implementation
166
+ - https://github.com/google/shaka-player/pull/3570
167
+ - Display captions with forward slashes
168
+ - https://github.com/google/shaka-player/issues/3555
169
+ - https://github.com/google/shaka-player/pull/3556
170
+ - Add support to file type in MediaCapabilities polyfill
171
+ - https://github.com/google/shaka-player/pull/3569
172
+ - Use "undetermined" for missing CC language
173
+ - Fix FairPlay playback
174
+ - https://github.com/google/shaka-player/pull/3531
175
+ - Exit PiP when destroying UI
176
+ - https://github.com/google/shaka-player/issues/3553
177
+
178
+ Docs:
179
+ - Add FAQ entry for common Vue problem
180
+ - https://github.com/google/shaka-player/issues/3155
181
+
182
+
1
183
  ## 3.2.0 (2021-07-14)
2
184
 
3
185
  New Features:
@@ -4452,4 +4634,3 @@ Broken Compatibility:
4452
4634
  ## 0.1b (2014-11-21)
4453
4635
 
4454
4636
  Private beta release.
4455
-
package/CONTRIBUTORS CHANGED
@@ -41,8 +41,10 @@ Chris Fillmore <fillmore.chris@gmail.com>
41
41
  Costel Madalin Grecu <madalin.grecu@adswizz.com>
42
42
  Damien Deis <developer.deis@gmail.com>
43
43
  Dany L'Hébreux <danylhebreux@gmail.com>
44
+ Dl Dador <dldador@gmail.com>
44
45
  Donato Borrello <donato@jwplayer.com>
45
46
  Duc Pham <duc.pham@edgeware.tv>
47
+ Enson Choy <enson.choy@harmonicinc.com>
46
48
  Esteban Dosztal <edosztal@gmail.com>
47
49
  Fadomire <fadomire@gmail.com>
48
50
  François Beaufort <fbeaufort@google.com>
@@ -82,6 +84,7 @@ Percy Tse <percy.tse@gmail.com>
82
84
  Peter Nycander <peter.nycander@gmail.com>
83
85
  Prakash Duggaraju <duggaraju@gmail.com>
84
86
  Robert Colantuoni <rgc@colantuoni.com>
87
+ Robert Galluccio <robertnw5@gmail.com>
85
88
  Rohit Makasana <rohitbm@google.com>
86
89
  Roi Lipman <roilipman@gmail.com>
87
90
  Roksolana Ivanyshyn <roksolana.ivanyshyn.pub@gmail.com>
package/README.md CHANGED
@@ -60,10 +60,10 @@ So we are dependent on the browser supporting the manifests.
60
60
 
61
61
  ### Shaka Player Embedded (for native iOS)
62
62
 
63
- We have another project called [Shaka Player Embedded][] that offers the same
64
- features and similar APIs for native apps on iOS. This project uses its own
63
+ We have another project called [Shaka Player Embedded][] which offers the same
64
+ features and similar APIs for native apps on iOS. This project uses its own
65
65
  media stack, which allows it to play content that would otherwise not be
66
- supported. This supports both DASH and HLS manifests.
66
+ supported. This supports both DASH and HLS manifests.
67
67
 
68
68
  [Shaka Player Embedded]: https://github.com/google/shaka-player-embedded
69
69
 
@@ -210,7 +210,7 @@ Shaka Player supports:
210
210
  - SubViewer (SBV)
211
211
  - UTF-8 encoding only
212
212
 
213
- Subtitles are rendered by the browser by default. Applications can create a
213
+ Subtitles are rendered by the browser by default. Applications can create a
214
214
  [text display plugin][] for customer rendering to go beyond browser-supported
215
215
  attributes.
216
216
 
@@ -37,7 +37,7 @@ def changelog_version():
37
37
  """Gets the version of the library from the CHANGELOG."""
38
38
  path = os.path.join(shakaBuildHelpers.get_source_base(), 'CHANGELOG.md')
39
39
  with shakaBuildHelpers.open_file(path, 'r') as f:
40
- match = re.search(r'## (.*) \(', f.read())
40
+ match = re.search(r'^###? \[(.*?)\]\(', f.read(), re.MULTILINE)
41
41
  return match.group(1) if match else ''
42
42
 
43
43
 
@@ -818,7 +818,7 @@ function main(args) {
818
818
  // foo.bar.baz, foo and foo.bar will both need to be declared first.
819
819
  const namespaces = new Set();
820
820
  const namespaceDeclarations = [];
821
- for (const name of names) {
821
+ for (const name of Array.from(names).sort()) {
822
822
  // Add the full name "foo.bar.baz" and its prototype ahead of time. We
823
823
  // should never generate these as namespaces.
824
824
  namespaces.add(name);
@@ -34,4 +34,5 @@
34
34
  r'(?i)@returns': '@return',
35
35
  r'(?i)varint': 'variant',
36
36
  r'(?i)asynchronus': 'asynchronous',
37
+ r'(?i)deafult': 'default',
37
38
  }
@@ -32,6 +32,9 @@ import subprocess
32
32
  import sys
33
33
  import time
34
34
 
35
+ import subprocessWindowsPatch
36
+
37
+
35
38
  # Python 3 no longer has a separate unicode type. For type-checking done in
36
39
  # get_node_binary, create an alias to the str type.
37
40
  if sys.version_info[0] == 3:
@@ -212,8 +215,7 @@ def npm_version(is_dirty=False):
212
215
  """Gets the version of the library from NPM."""
213
216
  try:
214
217
  base = cygwin_safe_path(get_source_base())
215
- cmd = 'npm.cmd' if is_windows() else 'npm'
216
- cmd_line = [cmd, '--prefix', base, 'ls', 'shaka-player']
218
+ cmd_line = ['npm', '--prefix', base, 'ls', 'shaka-player']
217
219
  text = execute_get_output(cmd_line).decode('utf8')
218
220
  except subprocess.CalledProcessError as e:
219
221
  text = e.output.decode('utf8')
@@ -335,10 +337,9 @@ def update_node_modules():
335
337
  return True
336
338
 
337
339
  base = cygwin_safe_path(get_source_base())
338
- cmd = 'npm.cmd' if is_windows() else 'npm'
339
340
 
340
341
  # Check the version of npm.
341
- version = execute_get_output([cmd, '-v']).decode('utf8')
342
+ version = execute_get_output(['npm', '-v']).decode('utf8')
342
343
 
343
344
  if _parse_version(version) < _parse_version('5.0.0'):
344
345
  logging.error('npm version is too old, please upgrade. e.g.:')
@@ -351,7 +352,7 @@ def update_node_modules():
351
352
  with InDir(base):
352
353
  # npm update seems to be the wrong thing in npm v5, so use install.
353
354
  # See google/shaka-player#854 for more details.
354
- execute_get_output([cmd, 'install'])
355
+ execute_get_output(['npm', 'install'])
355
356
 
356
357
  # Update the timestamp of the file that tracks when we last updated.
357
358
  open(_node_modules_last_update_path(), 'wb').close()
@@ -0,0 +1,103 @@
1
+ # Copyright 2021 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ """Monkeypatch subprocess on Windows to find .CMD scripts.
16
+
17
+ Without this patch, subprocess fails to find .CMD scripts on Windows, even
18
+ though these are executables and should be treated as such according to the
19
+ PATHEXT environment variable.
20
+
21
+ Many people "work around" this issue on Windows with subprocess's shell=True
22
+ argument, but this comes with a risk of shell injection vulnerabilities.
23
+
24
+ Another solution is to explicitly add ".CMD" to the end of some commands on
25
+ Windows, but this breaks portability and requires "if windows" to be scattered
26
+ around a codebase.
27
+
28
+ This monkeypatch allows the caller of subprocess to stop worrying about Windows
29
+ nuances and to go back to the security best practice of shell=False. Any .CMD
30
+ script that would be found by the Windows shell will now be found by
31
+ subprocess. And because we're using the standard Windows PATHEXT environment
32
+ variable, this can be extended to other types of executable scripts, as well.
33
+ """
34
+
35
+ import os
36
+ import subprocess
37
+ import sys
38
+
39
+
40
+ # NOTE: All of the higher-level methods eventually delegate to Popen, so we
41
+ # only patch that one method.
42
+ # run => Popen
43
+ # call => Popen
44
+ # check_call => call => Popen
45
+ # check_output => run => Popen
46
+
47
+ # These environment variables should almost certainly exist, but these are
48
+ # defaults in case they are missing.
49
+ DEFAULT_PATHEXT = '.COM;.EXE;.BAT;.CMD'
50
+ DEFAULT_PATH = r'C:\WINDOWS\system32;C:\WINDOWS'
51
+
52
+
53
+ def resolve(exe):
54
+ """Resolve a command name into a full path to the executable."""
55
+
56
+ if '/' in exe or '\\' in exe or ':' in exe:
57
+ # This is a path, so don't modify it.
58
+ return exe
59
+
60
+ if '.' in exe:
61
+ # This has an extension already. Don't search for an extension.
62
+ exe_names = [exe]
63
+ else:
64
+ # This is a command name without an extension, so check for every extension
65
+ # in PATHEXT.
66
+ extensions = os.environ.get('PATHEXT', DEFAULT_PATHEXT).split(';')
67
+ exe_names = [exe + ext for ext in extensions]
68
+
69
+ exe_paths = os.environ.get('PATH', DEFAULT_PATH).split(';')
70
+
71
+ for path in exe_paths:
72
+ for name in exe_names:
73
+ candidate = os.path.join(path, name)
74
+ if os.access(candidate, os.X_OK): # If executable
75
+ return candidate
76
+
77
+ # Failed to resolve, so return the original name and let Popen fail with a
78
+ # natural-looking error complaining that this command cannot be found.
79
+ return exe
80
+
81
+
82
+ real_Popen = subprocess.Popen
83
+
84
+
85
+ def Popen(args, *more_args, **kwargs):
86
+ """A patch to install over subprocess.Popen."""
87
+
88
+ # If the first argument is a list, resolve the command name, which is the
89
+ # first item in the list.
90
+ if isinstance(args, list):
91
+ args[0] = resolve(args[0])
92
+
93
+ # Delegate to the real Popen implementation.
94
+ return real_Popen(args, *more_args, **kwargs)
95
+
96
+
97
+ # Only patch win32, but not cygwin. Cygwin works correctly already.
98
+ if sys.platform == 'win32':
99
+ # Patch over Popen.
100
+ subprocess.Popen = Popen
101
+ # Copy the docstring from the real Popen into the patch, so that
102
+ # help(subprocess.Popen) is still relatively sane with this patch installed.
103
+ Popen.__doc__ = real_Popen.__doc__
package/build/test.py CHANGED
@@ -229,6 +229,11 @@ class Launcher:
229
229
  default=None,
230
230
  const=2,
231
231
  nargs='?')
232
+ running_commands.add_argument(
233
+ '--spec-hide-passed',
234
+ help='If provided, configure the spec reporter to hide passing tests.',
235
+ action='store_true',
236
+ default=False)
232
237
  running_commands.add_argument(
233
238
  '--test-custom-asset',
234
239
  help='Run asset playback tests on a custom manifest URI.',
@@ -358,6 +363,7 @@ class Launcher:
358
363
  'single_run',
359
364
  'uncompiled',
360
365
  'delay_tests',
366
+ 'spec_hide_passed',
361
367
  'test_custom_asset',
362
368
  'test_custom_license_server',
363
369
  'test_timeout',
@@ -499,7 +499,7 @@ shakaAssets.testAssets = [
499
499
  .addFeature(shakaAssets.Feature.MP4)
500
500
  .addFeature(shakaAssets.Feature.SUBTITLES)
501
501
  .addFeature(shakaAssets.Feature.LIVE)
502
- .setIMAAssetKey('_lDu24IaSYaYAMEfixipNQ'),
502
+ .setIMAAssetKey('PSzZMzAkSXCmlJOWDmRj8Q'),
503
503
  new ShakaDemoAssetInfo(
504
504
  /* name= */ 'Tears of Steel (multicodec, surround + stereo)',
505
505
  /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
package/demo/index.html CHANGED
@@ -128,7 +128,7 @@ UNCOMPILED_JS = [
128
128
  </div>
129
129
  <main class="mdl-layout__content" id="main-div">
130
130
  <div id="video-bar" class="hidden">
131
- <div data-shaka-player-container data-shaka-player-cast-receiver-id="1BA79154" class="video-container">
131
+ <div data-shaka-player-container data-shaka-player-cast-receiver-id="E7271BEC" class="video-container">
132
132
  <video data-shaka-player autoplay playsinline id="video"></video>
133
133
  </div>
134
134
  </div>
package/dist/controls.css CHANGED
@@ -3,7 +3,7 @@
3
3
  * Copyright 2016 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- .shaka-hidden{display:none!important}.shaka-video-container{position:relative;top:0;left:0;display:flex}.shaka-video-container .material-icons-round{font-family:'Material Icons Round';font-size:24px}.shaka-video-container *{font-family:Roboto-Regular,Roboto,sans-serif}.shaka-video-container:fullscreen{width:100%;height:100%;background-color:#000}.shaka-video-container:fullscreen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-webkit-full-screen{width:100%;height:100%;background-color:#000}.shaka-video-container:-webkit-full-screen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-moz-full-screen{width:100%;height:100%;background-color:#000}.shaka-video-container:-moz-full-screen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-ms-fullscreen{width:100%;height:100%;background-color:#000}.shaka-video-container:-ms-fullscreen .shaka-text-container{font-size:4.4vmin}.shaka-controls-container{position:absolute;top:0;left:0;right:0;bottom:0;margin:0;padding:0;width:100%;height:100%;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;z-index:1}.shaka-video-container:not([shaka-controls=true]) .shaka-controls-container{display:none}.shaka-controls-container *{flex-shrink:0}.shaka-controls-container[casting=true] .shaka-fullscreen-button{display:none}.shaka-bottom-controls{width:96%;padding:0;padding-bottom:2.5%;z-index:1}.shaka-controls-button-panel{padding:0;margin:0;display:flex;flex-direction:row;justify-content:flex-end;align-items:center;overflow:hidden;min-width:48px;font-size:12px;font-weight:400;font-style:normal;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s}.shaka-controls-container[casting=true] .shaka-controls-button-panel,.shaka-controls-container[shown=true] .shaka-controls-button-panel{opacity:1}.shaka-controls-button-panel>*{color:#fff;height:32px;margin:1px 6px;padding:0;background:0 0;border:0;cursor:pointer}.shaka-controls-button-panel .shaka-overflow-menu-only{display:none}.shaka-play-button-container{margin:0;width:100%;height:100%;flex-shrink:1;position:absolute;left:0;right:0;top:0;bottom:0;display:flex;justify-content:center;align-items:center}.shaka-scrim-container{margin:0;width:100%;height:100%;flex-shrink:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s;background:linear-gradient(to top,#000 0,rgba(0,0,0,0) 15%)}.shaka-controls-container[casting=true] .shaka-scrim-container,.shaka-controls-container[shown=true] .shaka-scrim-container{opacity:1}.shaka-text-container{position:absolute;left:0;right:0;top:0;bottom:0;pointer-events:none;bottom:0;width:100%;min-width:48px;transition:bottom cubic-bezier(.4,0,.6,1) .1s;transition-delay:.5s}.shaka-text-container span:not(.shaka-text-wrapper){display:inline;font-size:20px;line-height:1.4;background-color:rgba(0,0,0,.8);color:#fff}.shaka-text-container span.shaka-text-wrapper{display:inline;background:0 0}.shaka-controls-container[shown=true]~.shaka-text-container{bottom:15%;transition-delay:0s}.shaka-spinner-container{position:absolute;left:0;right:0;top:0;bottom:0;width:100%;height:100%;flex-shrink:1;display:flex;justify-content:center;align-items:center}.shaka-video-container:not([shaka-controls=true]) .shaka-spinner-container{display:none}.shaka-spinner{position:relative;top:0;left:0;margin:0;box-sizing:border-box;padding:7.8%;width:0;height:0;filter:drop-shadow(0 0 2px rgba(255, 255, 255, .5))}.shaka-play-button{box-sizing:border-box;padding:7.5%;width:0;height:0;margin:0;border-radius:50%;box-shadow:rgba(0,0,0,.1) 0 0 20px 0;border:none;background-size:50%;background-repeat:no-repeat;background-position:center center;background-color:rgba(255,255,255,.9);opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s}.shaka-controls-container[casting=true] .shaka-play-button,.shaka-controls-container[shown=true] .shaka-play-button{opacity:1}.shaka-play-button[icon=play]{background-image:url(data:image/svg+xml,%3Csvg%20fill%3D%22%23000000%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20width%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M8%205v14l11-7z%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%0A%3C%2Fsvg%3E)}.shaka-play-button[icon=pause]{background-image:url(data:image/svg+xml,%3Csvg%20fill%3D%22%23000000%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20width%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M6%2019h4V5H6v14zm8-14v14h4V5h-4z%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%0A%3C%2Fsvg%3E)}.shaka-current-time{font-size:14px;color:#fff;height:auto;cursor:pointer}.shaka-current-time[disabled]{background-color:transparent;color:#fff;cursor:default}.shaka-controls-container button:focus,.shaka-controls-container input:focus{outline:1px solid Highlight}.shaka-controls-container button:-moz-focus-inner,.shaka-controls-container input:-moz-focus-outer{outline:0;border:0}.shaka-controls-container:not(.shaka-keyboard-navigation) button:focus,.shaka-controls-container:not(.shaka-keyboard-navigation) input:focus{outline:0}.shaka-range-container{position:relative;top:0;left:0;margin:4px 6px;height:4px;border-radius:4px;background:#fff}.shaka-volume-bar-container{width:100px}.shaka-range-element{-webkit-appearance:none;background:0 0;position:absolute;top:0;left:0;right:0;bottom:0;margin:0;padding:0;width:100%;height:100%;height:12px;top:-4px;z-index:1}.shaka-range-element::-webkit-slider-runnable-track{width:100%;height:12px;background:0 0;color:transparent;border:none}.shaka-range-element::-webkit-slider-thumb{-webkit-appearance:none;border:none;border-radius:12px;height:12px;width:12px;background:#fff}.shaka-range-element::-moz-range-track{width:100%;height:12px;background:0 0;color:transparent;border:none}.shaka-range-element::-moz-range-thumb{-webkit-appearance:none;border:none;border-radius:12px;height:12px;width:12px;background:#fff}.shaka-seek-bar-container{opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s}.shaka-controls-container[casting=true] .shaka-seek-bar-container,.shaka-controls-container[shown=true] .shaka-seek-bar-container{opacity:1}.shaka-ad-markers{position:absolute;top:0;left:0;right:0;bottom:0;margin:0;padding:0;width:100%;height:100%}/*!
6
+ .shaka-hidden{display:none!important}.shaka-video-container{position:relative;top:0;left:0;display:flex}.shaka-video-container .material-icons-round{font-family:'Material Icons Round';font-size:24px}.shaka-video-container *{font-family:Roboto-Regular,Roboto,sans-serif}.shaka-video-container:fullscreen{width:100%;height:100%;background-color:#000}.shaka-video-container:fullscreen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-webkit-full-screen{width:100%;height:100%;background-color:#000}.shaka-video-container:-webkit-full-screen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-moz-full-screen{width:100%;height:100%;background-color:#000}.shaka-video-container:-moz-full-screen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-ms-fullscreen{width:100%;height:100%;background-color:#000}.shaka-video-container:-ms-fullscreen .shaka-text-container{font-size:4.4vmin}.shaka-controls-container{position:absolute;top:0;left:0;right:0;bottom:0;margin:0;padding:0;width:100%;height:100%;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;z-index:1}.shaka-video-container:not([shaka-controls=true]) .shaka-controls-container{display:none}.shaka-controls-container *{flex-shrink:0}.shaka-controls-container[casting=true] .shaka-fullscreen-button{display:none}.shaka-bottom-controls{width:96%;padding:0;padding-bottom:2.5%;z-index:1}.shaka-controls-button-panel{padding:0;margin:0;display:flex;flex-direction:row;justify-content:flex-end;align-items:center;overflow:hidden;min-width:48px;font-size:12px;font-weight:400;font-style:normal;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s}.shaka-controls-container[casting=true] .shaka-controls-button-panel,.shaka-controls-container[shown=true] .shaka-controls-button-panel{opacity:1}.shaka-controls-button-panel>*{color:#fff;height:32px;line-height:.5;margin:1px 6px;padding:0;background:0 0;border:0;cursor:pointer}.shaka-controls-button-panel .shaka-overflow-menu-only{display:none}.shaka-play-button-container{margin:0;width:100%;height:100%;flex-shrink:1;position:absolute;left:0;right:0;top:0;bottom:0;display:flex;justify-content:center;align-items:center}.shaka-scrim-container{margin:0;width:100%;height:100%;flex-shrink:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s;background:linear-gradient(to top,#000 0,rgba(0,0,0,0) 15%)}.shaka-controls-container[casting=true] .shaka-scrim-container,.shaka-controls-container[shown=true] .shaka-scrim-container{opacity:1}.shaka-text-container{position:absolute;left:0;right:0;top:0;bottom:0;pointer-events:none;bottom:0;width:100%;min-width:48px;transition:bottom cubic-bezier(.4,0,.6,1) .1s;transition-delay:.5s;font-size:20px;line-height:1.4;color:#fff}.shaka-text-container span.shaka-text-wrapper{display:inline;background:0 0}.shaka-controls-container[shown=true]~.shaka-text-container{bottom:15%;transition-delay:0s}.shaka-spinner-container{position:absolute;left:0;right:0;top:0;bottom:0;width:100%;height:100%;flex-shrink:1;display:flex;justify-content:center;align-items:center}.shaka-video-container:not([shaka-controls=true]) .shaka-spinner-container{display:none}.shaka-spinner{position:relative;top:0;left:0;margin:0;box-sizing:border-box;padding:7.8%;width:0;height:0;filter:drop-shadow(0 0 2px rgba(255, 255, 255, .5))}.shaka-play-button{box-sizing:border-box;padding:7.5%;width:0;height:0;margin:0;border-radius:50%;box-shadow:rgba(0,0,0,.1) 0 0 20px 0;border:none;background-size:50%;background-repeat:no-repeat;background-position:center center;background-color:rgba(255,255,255,.9);opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s}.shaka-controls-container[casting=true] .shaka-play-button,.shaka-controls-container[shown=true] .shaka-play-button{opacity:1}.shaka-play-button[icon=play]{background-image:url(data:image/svg+xml,%3Csvg%20fill%3D%22%23000000%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20width%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M8%205v14l11-7z%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%0A%3C%2Fsvg%3E)}.shaka-play-button[icon=pause]{background-image:url(data:image/svg+xml,%3Csvg%20fill%3D%22%23000000%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20width%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M6%2019h4V5H6v14zm8-14v14h4V5h-4z%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%0A%3C%2Fsvg%3E)}.shaka-current-time{font-size:14px;color:#fff;cursor:pointer}.shaka-current-time[disabled]{background-color:transparent;color:#fff;cursor:default}.shaka-controls-container button:focus,.shaka-controls-container input:focus{outline:1px solid Highlight}.shaka-controls-container button:-moz-focus-inner,.shaka-controls-container input:-moz-focus-outer{outline:0;border:0}.shaka-controls-container:not(.shaka-keyboard-navigation) button:focus,.shaka-controls-container:not(.shaka-keyboard-navigation) input:focus{outline:0}.shaka-range-container{position:relative;top:0;left:0;margin:4px 6px;height:4px;border-radius:4px;background:#fff}.shaka-volume-bar-container{width:100px}.shaka-range-element{-webkit-appearance:none;background:0 0;position:absolute;top:0;left:0;right:0;bottom:0;margin:0;padding:0;width:100%;height:100%;height:12px;top:-4px;z-index:1}.shaka-range-element::-webkit-slider-runnable-track{width:100%;height:12px;background:0 0;color:transparent;border:none}.shaka-range-element::-webkit-slider-thumb{-webkit-appearance:none;border:none;border-radius:12px;height:12px;width:12px;background:#fff}.shaka-range-element::-moz-range-track{width:100%;height:12px;background:0 0;color:transparent;border:none}.shaka-range-element::-moz-range-thumb{-webkit-appearance:none;border:none;border-radius:12px;height:12px;width:12px;background:#fff}.shaka-seek-bar-container{opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s}.shaka-controls-container[casting=true] .shaka-seek-bar-container,.shaka-controls-container[shown=true] .shaka-seek-bar-container{opacity:1}.shaka-ad-markers{position:absolute;top:0;left:0;right:0;bottom:0;margin:0;padding:0;width:100%;height:100%}/*!
7
7
  * @license
8
8
  * The SVG/CSS buffering spinner is based on http://codepen.io/jczimm/pen/vEBpoL
9
9
  * Some local modifications have been made.
@@ -27,4 +27,4 @@
27
27
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28
28
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
29
29
  * SOFTWARE.
30
- */.shaka-spinner-svg{position:absolute;top:0;left:0;right:0;bottom:0;animation:rotate 2s linear infinite;transform-origin:center center;width:100%;height:100%;margin:0;padding:0}.shaka-spinner-path{stroke:#202124;stroke-dasharray:20,200;stroke-dashoffset:0;animation:dash 1s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.shaka-spacer{cursor:default;flex-shrink:1;flex-grow:1;margin:0}.shaka-overflow-menu,.shaka-settings-menu{overflow-x:hidden;overflow-y:auto;white-space:nowrap;background:#fff;box-shadow:0 1px 9px 0 rgba(0,0,0,.4);border-radius:2px;max-height:250px;min-width:180px;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s;display:flex;flex-direction:column;position:absolute;z-index:2;right:15px;bottom:30px}.shaka-controls-container[casting=true] .shaka-overflow-menu,.shaka-controls-container[casting=true] .shaka-settings-menu,.shaka-controls-container[shown=true] .shaka-overflow-menu,.shaka-controls-container[shown=true] .shaka-settings-menu{opacity:1}.shaka-overflow-menu button,.shaka-settings-menu button{font-size:14px;background:0 0;color:#000;border:none;min-height:30px;padding:3.5px 6px;display:flex;align-items:center;cursor:pointer}.shaka-overflow-menu button:hover,.shaka-settings-menu button:hover{background:#e0e0e0}.shaka-overflow-menu button label,.shaka-settings-menu button label{cursor:pointer}.shaka-keyboard-navigation .shaka-overflow-menu button:focus,.shaka-keyboard-navigation .shaka-settings-menu button:focus{background:#e0e0e0}.shaka-overflow-menu i,.shaka-settings-menu i{padding-left:10px;padding-right:10px}.shaka-overflow-menu.shaka-low-position,.shaka-settings-menu.shaka-low-position{bottom:15px}.shaka-overflow-menu span{text-align:left}.shaka-overflow-button-label{position:relative;display:flex;flex-direction:column}.shaka-current-selection-span{color:rgba(0,0,0,.54)}.shaka-settings-menu span{margin-left:54px}.shaka-back-to-overflow-button span{margin-left:0}.shaka-back-to-overflow-button i{padding-right:20px}.shaka-auto-span{left:17px}.shaka-captions-on{color:#000}.shaka-captions-off{color:grey}.shaka-controls-container[ad-active=true]{pointer-events:none}.shaka-controls-container[ad-active=true] .shaka-bottom-controls{pointer-events:auto}.shaka-client-side-ad-container,.shaka-server-side-ad-container{position:absolute;left:0;right:0;top:0;bottom:0}.shaka-video-container[shaka-controls=true] .shaka-client-side-ad-container iframe,.shaka-video-container[shaka-controls=true] .shaka-server-side-ad-container iframe{height:90%}.shaka-server-side-ad-container{width:100%;height:100%;flex-shrink:1}.shaka-server-side-ad-container:not([ad-active=true]){pointer-events:none}.shaka-ad-controls{display:flex;flex-direction:row;z-index:1;padding-bottom:1%}.shaka-video-container:not([shaka-controls=true]) .shaka-ad-controls{display:none}.shaka-ad-controls button,.shaka-ad-controls div{color:#fff;font-size:initial}.shaka-ad-controls div:not(.shaka-skip-ad-counter){margin:1px 6px}.shaka-ad-counter,.shaka-ad-position{display:flex;justify-content:flex-end;flex-direction:column;text-shadow:1px 1px 4px #000}.shaka-skip-ad-container{position:relative;right:-2%;display:flex;flex-direction:row;margin:0}.shaka-skip-ad-button{padding:5px 15px;background:rgba(0,0,0,.7);border:none;cursor:pointer}.shaka-skip-ad-button:disabled{background:rgba(0,0,0,.3)}.shaka-skip-ad-counter{padding:5px 5px;background:rgba(0,0,0,.7);margin:0}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOmCnqEu92Fr1Mu4mxP.ttf) format('truetype')}@font-face{font-family:'Material Icons Round';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialiconsround/v65/LDItaoyNOAY6Uewc665JcIzCKsKc_M9flwmM.otf) format('opentype')}.material-icons-round{font-family:'Material Icons Round';font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr}/*# sourceMappingURL=controls.css.map */
30
+ */.shaka-spinner-svg{position:absolute;top:0;left:0;right:0;bottom:0;animation:rotate 2s linear infinite;transform-origin:center center;width:100%;height:100%;margin:0;padding:0}.shaka-spinner-path{stroke:#202124;stroke-dasharray:20,200;stroke-dashoffset:0;animation:dash 1s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.shaka-spacer{cursor:default;flex-shrink:1;flex-grow:1;margin:0}.shaka-overflow-menu,.shaka-settings-menu{overflow-x:hidden;overflow-y:auto;white-space:nowrap;background:#fff;box-shadow:0 1px 9px 0 rgba(0,0,0,.4);border-radius:2px;max-height:250px;min-width:180px;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s;display:flex;flex-direction:column;position:absolute;z-index:2;right:15px;bottom:30px}.shaka-controls-container[casting=true] .shaka-overflow-menu,.shaka-controls-container[casting=true] .shaka-settings-menu,.shaka-controls-container[shown=true] .shaka-overflow-menu,.shaka-controls-container[shown=true] .shaka-settings-menu{opacity:1}.shaka-overflow-menu button,.shaka-settings-menu button{font-size:14px;background:0 0;color:#000;border:none;min-height:30px;padding:3.5px 6px;display:flex;align-items:center;cursor:pointer}.shaka-overflow-menu button:hover,.shaka-settings-menu button:hover{background:#e0e0e0}.shaka-overflow-menu button label,.shaka-settings-menu button label{cursor:pointer}.shaka-keyboard-navigation .shaka-overflow-menu button:focus,.shaka-keyboard-navigation .shaka-settings-menu button:focus{background:#e0e0e0}.shaka-overflow-menu i,.shaka-settings-menu i{padding-left:10px;padding-right:10px}.shaka-overflow-menu.shaka-low-position,.shaka-settings-menu.shaka-low-position{bottom:15px}.shaka-overflow-menu span{text-align:left}.shaka-overflow-button-label{position:relative;display:flex;flex-direction:column}.shaka-current-selection-span{color:rgba(0,0,0,.54)}.shaka-settings-menu span{margin-left:54px}.shaka-back-to-overflow-button span{margin-left:0}.shaka-back-to-overflow-button i{padding-right:20px}.shaka-auto-span{left:17px}.shaka-captions-on{color:#000}.shaka-captions-off{color:grey}.shaka-controls-container[ad-active=true]{pointer-events:none}.shaka-controls-container[ad-active=true] .shaka-bottom-controls{pointer-events:auto}.shaka-client-side-ad-container,.shaka-server-side-ad-container{position:absolute;left:0;right:0;top:0;bottom:0}.shaka-video-container[shaka-controls=true] .shaka-client-side-ad-container iframe,.shaka-video-container[shaka-controls=true] .shaka-server-side-ad-container iframe{height:90%}.shaka-server-side-ad-container{width:100%;height:100%;flex-shrink:1}.shaka-server-side-ad-container:not([ad-active=true]){pointer-events:none}.shaka-ad-controls{display:flex;flex-direction:row;z-index:1;padding-bottom:1%}.shaka-video-container:not([shaka-controls=true]) .shaka-ad-controls{display:none}.shaka-ad-controls button,.shaka-ad-controls div{color:#fff;font-size:initial}.shaka-ad-controls div:not(.shaka-skip-ad-counter){margin:1px 6px}.shaka-ad-counter,.shaka-ad-position{display:flex;justify-content:flex-end;flex-direction:column;text-shadow:1px 1px 4px #000}.shaka-skip-ad-container{position:relative;right:-2%;display:flex;flex-direction:row;margin:0}.shaka-skip-ad-button{padding:5px 15px;background:rgba(0,0,0,.7);border:none;cursor:pointer}.shaka-skip-ad-button:disabled{background:rgba(0,0,0,.3)}.shaka-skip-ad-counter{padding:5px 5px;background:rgba(0,0,0,.7);margin:0}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4mxP.ttf) format('truetype')}@font-face{font-family:'Material Icons Round';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialiconsround/v99/LDItaoyNOAY6Uewc665JcIzCKsKc_M9flwmM.otf) format('opentype')}.material-icons-round{font-family:'Material Icons Round';font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr}/*# sourceMappingURL=controls.css.map */