shaka-player 3.2.19 → 3.2.21
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.
- package/.github/workflows/build-and-test.yaml +4 -4
- package/.github/workflows/demo-version-index.yaml +6 -0
- package/.github/workflows/selenium-lab-tests.yaml +78 -17
- package/.github/workflows/update-screenshots.yaml +142 -0
- package/AUTHORS +2 -1
- package/CHANGELOG.md +40 -0
- package/CONTRIBUTORS +4 -1
- package/demo/common/asset.js +15 -0
- package/demo/common/assets.js +4 -2
- package/demo/common/message_ids.js +1 -0
- package/demo/custom.js +19 -0
- package/demo/locales/en.json +1 -0
- package/demo/locales/source.json +4 -0
- package/demo/main.js +14 -0
- package/dist/controls.css +1 -1
- package/dist/demo.compiled.debug.js +150 -148
- package/dist/demo.compiled.debug.map +3 -3
- package/dist/demo.compiled.js +150 -148
- package/dist/demo.compiled.map +3 -3
- package/dist/deps.js +1 -1
- package/dist/locales.js +30 -30
- package/dist/receiver.compiled.debug.js +19 -19
- package/dist/receiver.compiled.debug.map +2 -2
- package/dist/receiver.compiled.js +19 -19
- package/dist/receiver.compiled.map +2 -2
- package/dist/shaka-player.compiled.d.ts +13 -2
- package/dist/shaka-player.compiled.debug.d.ts +13 -2
- package/dist/shaka-player.compiled.debug.js +178 -176
- package/dist/shaka-player.compiled.debug.map +3 -3
- package/dist/shaka-player.compiled.js +294 -292
- package/dist/shaka-player.compiled.map +3 -3
- package/dist/shaka-player.ui.d.ts +13 -2
- package/dist/shaka-player.ui.debug.d.ts +13 -2
- package/dist/shaka-player.ui.debug.js +117 -115
- package/dist/shaka-player.ui.debug.map +3 -3
- package/dist/shaka-player.ui.js +318 -316
- package/dist/shaka-player.ui.map +3 -3
- package/docs/tutorials/errors.md +94 -0
- package/docs/tutorials/fairplay.md +2 -2
- package/docs/tutorials/index.json +2 -0
- package/docs/tutorials/widevine-service-certs.md +45 -0
- package/externs/ima.js +9 -0
- package/externs/shaka/net.js +1 -0
- package/externs/shaka/player.js +13 -7
- package/lib/ads/client_side_ad_manager.js +8 -5
- package/lib/hls/hls_parser.js +2 -0
- package/lib/media/media_source_engine.js +9 -4
- package/lib/media/streaming_engine.js +8 -3
- package/lib/media/transmuxer.js +13 -7
- package/lib/media/video_wrapper.js +3 -3
- package/lib/net/http_fetch_plugin.js +10 -0
- package/lib/net/networking_engine.js +1 -0
- package/lib/offline/indexeddb/storage_mechanism.js +1 -1
- package/lib/player.js +19 -2
- package/lib/polyfill/media_capabilities.js +15 -8
- package/lib/polyfill/mediasource.js +7 -2
- package/lib/text/mp4_vtt_parser.js +4 -0
- package/lib/text/text_engine.js +1 -0
- package/lib/text/ui_text_displayer.js +1 -0
- package/lib/text/vtt_text_parser.js +4 -5
- package/lib/util/manifest_parser_utils.js +1 -2
- package/lib/util/mime_utils.js +12 -1
- package/lib/util/stream_utils.js +28 -16
- package/maintained-branches.md +3 -4
- package/package.json +1 -1
- package/test/media/content_workarounds_unit.js +43 -0
- package/test/media/drm_engine_integration.js +4 -17
- package/test/media/streaming_engine_unit.js +6 -1
- package/test/net/networking_engine_unit.js +6 -1
- package/test/player_integration.js +39 -0
- package/test/player_unit.js +54 -0
- package/test/polyfill/media_capabilities_unit.js +20 -23
- package/test/test/assets/text-clip-alt.vtt +63 -0
- package/test/test/util/fake_drm_engine.js +3 -0
- package/test/test/util/simple_fakes.js +3 -0
- package/test/test/util/test_scheme.js +9 -14
- package/test/text/mp4_vtt_parser_unit.js +8 -0
- package/test/text/vtt_text_parser_unit.js +26 -2
- package/test/text/web_vtt_layout_integration.js +0 -3
- package/test/util/mime_utils_unit.js +10 -0
|
@@ -16,7 +16,7 @@ on:
|
|
|
16
16
|
# old one. If a PR is updated and a new test run is started, the old test run
|
|
17
17
|
# will be cancelled automatically to conserve resources.
|
|
18
18
|
concurrency:
|
|
19
|
-
group: ${{ github.workflow }}-${{
|
|
19
|
+
group: ${{ github.workflow }}-${{ inputs.ref || github.ref }}
|
|
20
20
|
cancel-in-progress: true
|
|
21
21
|
|
|
22
22
|
jobs:
|
|
@@ -27,7 +27,7 @@ jobs:
|
|
|
27
27
|
- name: Checkout code
|
|
28
28
|
uses: actions/checkout@v3
|
|
29
29
|
with:
|
|
30
|
-
ref: ${{
|
|
30
|
+
ref: ${{ inputs.ref || github.ref }}
|
|
31
31
|
|
|
32
32
|
- name: Lint
|
|
33
33
|
run: python build/check.py
|
|
@@ -103,7 +103,7 @@ jobs:
|
|
|
103
103
|
- name: Checkout code
|
|
104
104
|
uses: actions/checkout@v3
|
|
105
105
|
with:
|
|
106
|
-
ref: ${{
|
|
106
|
+
ref: ${{ inputs.ref || github.ref }}
|
|
107
107
|
|
|
108
108
|
# Older versions of Safari can be installed, but not to the root, and it
|
|
109
109
|
# can't replace the standard version, at least not on GitHub's VMs. If
|
|
@@ -206,7 +206,7 @@ jobs:
|
|
|
206
206
|
- name: Checkout code
|
|
207
207
|
uses: actions/checkout@v3
|
|
208
208
|
with:
|
|
209
|
-
ref: ${{
|
|
209
|
+
ref: ${{ inputs.ref || github.ref }}
|
|
210
210
|
|
|
211
211
|
- name: Docker
|
|
212
212
|
run: |
|
|
@@ -11,6 +11,12 @@ on:
|
|
|
11
11
|
- app-engine/demo-version-index/**
|
|
12
12
|
release:
|
|
13
13
|
types: [published]
|
|
14
|
+
# NOTE: So long as releases are made without a personal access token (PAT),
|
|
15
|
+
# they will not activate this workflow's release trigger. For now, the
|
|
16
|
+
# schedule trigger will compensate for that by updating the index nightly.
|
|
17
|
+
schedule:
|
|
18
|
+
# Run every night at 10pm PST / 6am UTC.
|
|
19
|
+
- cron: '0 6 * * *'
|
|
14
20
|
|
|
15
21
|
jobs:
|
|
16
22
|
appspot:
|
|
@@ -9,8 +9,31 @@ on:
|
|
|
9
9
|
description: "A PR number to build and test in the lab. If empty, will build and test from main."
|
|
10
10
|
required: false
|
|
11
11
|
test_filter:
|
|
12
|
-
description: "A filter to run a subset of the tests. If empty, all tests will run."
|
|
12
|
+
description: "A regex filter to run a subset of the tests. If empty, all tests will run."
|
|
13
13
|
required: false
|
|
14
|
+
browser_filter:
|
|
15
|
+
description: "A list of browsers to run the tests. If empty, all browsers will run."
|
|
16
|
+
required: false
|
|
17
|
+
workflow_call:
|
|
18
|
+
# Allows for reuse from other workflows, such as "Update All Screenshots"
|
|
19
|
+
# workflow.
|
|
20
|
+
inputs:
|
|
21
|
+
pr:
|
|
22
|
+
description: "A PR number to build and test in the lab. If empty, will build and test from main."
|
|
23
|
+
required: false
|
|
24
|
+
type: string
|
|
25
|
+
test_filter:
|
|
26
|
+
description: "A regex filter to run a subset of the tests. If empty, all tests will run."
|
|
27
|
+
required: false
|
|
28
|
+
type: string
|
|
29
|
+
browser_filter:
|
|
30
|
+
description: "A list of browsers to run the tests. If empty, all browsers will run."
|
|
31
|
+
required: false
|
|
32
|
+
type: string
|
|
33
|
+
ignore_test_status:
|
|
34
|
+
description: "If true, ignore test success or failure, never set the commit status, and always upload screenshots."
|
|
35
|
+
required: false
|
|
36
|
+
type: boolean
|
|
14
37
|
schedule:
|
|
15
38
|
# Runs every night at 2am PST / 10am UTC, testing against the main branch.
|
|
16
39
|
- cron: '0 10 * * *'
|
|
@@ -30,12 +53,12 @@ jobs:
|
|
|
30
53
|
- name: Compute ref
|
|
31
54
|
id: compute
|
|
32
55
|
run: |
|
|
33
|
-
if [[ "${{
|
|
34
|
-
LAB_TEST_REF="refs/pull/${{
|
|
56
|
+
if [[ "${{ inputs.pr }}" != "" ]]; then
|
|
57
|
+
LAB_TEST_REF="refs/pull/${{ inputs.pr }}/head"
|
|
35
58
|
else
|
|
36
59
|
LAB_TEST_REF="main"
|
|
37
60
|
fi
|
|
38
|
-
echo "REF=$LAB_TEST_REF"
|
|
61
|
+
echo "REF=$LAB_TEST_REF" | tee -a $GITHUB_OUTPUT
|
|
39
62
|
|
|
40
63
|
# Configure the build matrix based on our grid's YAML config.
|
|
41
64
|
# The matrix contents will be computed by this first job and deserialized
|
|
@@ -63,6 +86,14 @@ jobs:
|
|
|
63
86
|
const yaml = require(
|
|
64
87
|
'${{ github.workspace }}/node_modules/js-yaml/index.js');
|
|
65
88
|
|
|
89
|
+
// Convert the input "browser_filter" into a set of strings. Take
|
|
90
|
+
// care to filter so that the empty string turns into an empty set.
|
|
91
|
+
const browserFilter = new Set( "${{ inputs.browser_filter }}"
|
|
92
|
+
.split(/\s+/)
|
|
93
|
+
.map(x => x.toLowerCase())
|
|
94
|
+
.filter(x => !!x)
|
|
95
|
+
);
|
|
96
|
+
|
|
66
97
|
const gridBrowserYaml =
|
|
67
98
|
fs.readFileSync('build/shaka-lab.yaml', 'utf8');
|
|
68
99
|
const gridBrowserMetadata = yaml.load(gridBrowserYaml);
|
|
@@ -74,7 +105,14 @@ jobs:
|
|
|
74
105
|
// Skip variable defs in the YAML file
|
|
75
106
|
continue;
|
|
76
107
|
}
|
|
77
|
-
|
|
108
|
+
|
|
109
|
+
// A browser is enabled if it's not disabled and (either the browser
|
|
110
|
+
// filter is empty or it contains the browser name).
|
|
111
|
+
const enabled = !gridBrowserMetadata[name].disabled &&
|
|
112
|
+
(browserFilter.size == 0 ||
|
|
113
|
+
browserFilter.has(name.toLowerCase()));
|
|
114
|
+
|
|
115
|
+
if (enabled) {
|
|
78
116
|
include.push({browser: name});
|
|
79
117
|
}
|
|
80
118
|
}
|
|
@@ -100,6 +138,7 @@ jobs:
|
|
|
100
138
|
ref: ${{ needs.compute-ref.outputs.REF }}
|
|
101
139
|
|
|
102
140
|
- name: Set commit status to pending
|
|
141
|
+
if: ${{ inputs.ignore_test_status == false }}
|
|
103
142
|
uses: ./.github/workflows/custom-actions/set-commit-status
|
|
104
143
|
with:
|
|
105
144
|
context: Selenium / Build
|
|
@@ -117,8 +156,9 @@ jobs:
|
|
|
117
156
|
retention-days: 1
|
|
118
157
|
|
|
119
158
|
- name: Report final commit status
|
|
120
|
-
# Will run on success or failure, but not if the workflow is cancelled
|
|
121
|
-
if
|
|
159
|
+
# Will run on success or failure, but not if the workflow is cancelled
|
|
160
|
+
# or if we were asked to ignore the test status.
|
|
161
|
+
if: ${{ (success() || failure()) && inputs.ignore_test_status == false }}
|
|
122
162
|
uses: ./.github/workflows/custom-actions/set-commit-status
|
|
123
163
|
with:
|
|
124
164
|
context: Selenium / Build
|
|
@@ -142,6 +182,7 @@ jobs:
|
|
|
142
182
|
ref: ${{ needs.compute-ref.outputs.REF }}
|
|
143
183
|
|
|
144
184
|
- name: Set commit status to pending
|
|
185
|
+
if: ${{ inputs.ignore_test_status == false }}
|
|
145
186
|
uses: ./.github/workflows/custom-actions/set-commit-status
|
|
146
187
|
with:
|
|
147
188
|
context: Selenium / ${{ matrix.browser }}
|
|
@@ -185,20 +226,28 @@ jobs:
|
|
|
185
226
|
# the container.
|
|
186
227
|
- name: Test Player
|
|
187
228
|
run: |
|
|
229
|
+
# Use of an array keeps elements intact, and allows an element to
|
|
230
|
+
# contain spaces without being expanded into multiple arguments in a
|
|
231
|
+
# shell command.
|
|
232
|
+
extra_flags=()
|
|
233
|
+
|
|
188
234
|
# Generate a coverage report from uncompiled code on ChromeLinux.
|
|
189
235
|
# It should be the uncompiled build, or else we won't execute any
|
|
190
236
|
# coverage instrumentation on full-stack player integration tests.
|
|
191
237
|
if [[ "${{ matrix.browser }}" == "ChromeLinux" ]]; then
|
|
192
|
-
extra_flags
|
|
193
|
-
else
|
|
194
|
-
extra_flags=""
|
|
238
|
+
extra_flags+=(--html-coverage-report --uncompiled)
|
|
195
239
|
fi
|
|
196
240
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
extra_flags
|
|
241
|
+
if [[ "${{ inputs.test_filter }}" != "" ]]; then
|
|
242
|
+
echo "Adding filter: ${{ inputs.test_filter }}"
|
|
243
|
+
extra_flags+=(--filter "${{ inputs.test_filter }}")
|
|
200
244
|
fi
|
|
201
245
|
|
|
246
|
+
# Do not automatically fail when a command fails. This allows us to
|
|
247
|
+
# implement the ignore_test_status input by capturing the exit code
|
|
248
|
+
# and examining it.
|
|
249
|
+
set +e
|
|
250
|
+
# Run the tests with any extra flags.
|
|
202
251
|
python3 build/test.py \
|
|
203
252
|
--no-build \
|
|
204
253
|
--reporters spec --spec-hide-passed \
|
|
@@ -208,7 +257,18 @@ jobs:
|
|
|
208
257
|
--grid-config build/shaka-lab.yaml \
|
|
209
258
|
--grid-address selenium-grid.lab:4444 \
|
|
210
259
|
--browsers ${{ matrix.browser }} \
|
|
211
|
-
$extra_flags
|
|
260
|
+
"${extra_flags[@]}"
|
|
261
|
+
# Capture the test exit code immediately after running the tests.
|
|
262
|
+
# There cannot be any other command between test.py and here.
|
|
263
|
+
exit_code=$?
|
|
264
|
+
|
|
265
|
+
# If ignoring test status, treat this as an exit code of 0 (success).
|
|
266
|
+
if [[ "${{ inputs.ignore_test_status }}" == "true" ]]; then
|
|
267
|
+
exit_code=0
|
|
268
|
+
fi
|
|
269
|
+
|
|
270
|
+
# Report the captured (and possibly overridden) exit status.
|
|
271
|
+
exit $exit_code
|
|
212
272
|
|
|
213
273
|
- name: Find coverage report (ChromeLinux only)
|
|
214
274
|
id: coverage
|
|
@@ -252,7 +312,7 @@ jobs:
|
|
|
252
312
|
# Upload new screenshots and diffs on failure; ignore if missing
|
|
253
313
|
- name: Upload screenshots
|
|
254
314
|
uses: actions/upload-artifact@v3
|
|
255
|
-
if: ${{ failure() }}
|
|
315
|
+
if: ${{ failure() || inputs.ignore_test_status }}
|
|
256
316
|
with:
|
|
257
317
|
# In this workflow, "browser" is the selenium node name, which can
|
|
258
318
|
# contain both browser and OS, such as "ChromeLinux".
|
|
@@ -264,8 +324,9 @@ jobs:
|
|
|
264
324
|
retention-days: 5
|
|
265
325
|
|
|
266
326
|
- name: Report final commit status
|
|
267
|
-
# Will run on success or failure, but not if the workflow is cancelled
|
|
268
|
-
if
|
|
327
|
+
# Will run on success or failure, but not if the workflow is cancelled
|
|
328
|
+
# or if we were asked to ignore the test status.
|
|
329
|
+
if: ${{ (success() || failure()) && inputs.ignore_test_status == false }}
|
|
269
330
|
uses: ./.github/workflows/custom-actions/set-commit-status
|
|
270
331
|
with:
|
|
271
332
|
context: Selenium / ${{ matrix.browser }}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
name: Update All Screenshots
|
|
2
|
+
# Updates all screenshots on an existing PR, assuming permission has been given
|
|
3
|
+
# to maintainers to make edits.
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
# Allows for manual triggering on PRs. They should be reviewed first, to
|
|
8
|
+
# avoid malicious code executing in the lab.
|
|
9
|
+
inputs:
|
|
10
|
+
pr:
|
|
11
|
+
description: "A PR number to build and test in the lab, then update all the screenshots."
|
|
12
|
+
required: true
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
set-pending-status:
|
|
16
|
+
name: Set Pending Status
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v3
|
|
20
|
+
with:
|
|
21
|
+
ref: refs/pull/${{ inputs.pr }}/head
|
|
22
|
+
|
|
23
|
+
- name: Set commit status to pending
|
|
24
|
+
uses: ./.github/workflows/custom-actions/set-commit-status
|
|
25
|
+
with:
|
|
26
|
+
context: Update All Screenshots
|
|
27
|
+
state: pending
|
|
28
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
29
|
+
|
|
30
|
+
run-lab-tests:
|
|
31
|
+
name: Get Selenium Lab Screenshots
|
|
32
|
+
needs: [set-pending-status]
|
|
33
|
+
uses: ./.github/workflows/selenium-lab-tests.yaml
|
|
34
|
+
with:
|
|
35
|
+
pr: ${{ inputs.pr }}
|
|
36
|
+
test_filter: layout
|
|
37
|
+
ignore_test_status: true
|
|
38
|
+
|
|
39
|
+
update-pr:
|
|
40
|
+
name: Update PR
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
needs: [run-lab-tests]
|
|
43
|
+
steps:
|
|
44
|
+
- uses: actions/checkout@v3
|
|
45
|
+
with:
|
|
46
|
+
ref: refs/pull/${{ inputs.pr }}/head
|
|
47
|
+
|
|
48
|
+
- name: Set commit status to pending
|
|
49
|
+
uses: ./.github/workflows/custom-actions/set-commit-status
|
|
50
|
+
with:
|
|
51
|
+
context: Update All Screenshots
|
|
52
|
+
state: pending
|
|
53
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
54
|
+
|
|
55
|
+
- name: Get artifacts
|
|
56
|
+
uses: actions/download-artifact@v3
|
|
57
|
+
with:
|
|
58
|
+
path: new-screenshots
|
|
59
|
+
|
|
60
|
+
- name: Move screenshots
|
|
61
|
+
run: |
|
|
62
|
+
# The download-artifact action puts zip file contents into folders by
|
|
63
|
+
# the name of the artifact, so we can't have them downloaded directly
|
|
64
|
+
# to the screenshots folder. Here we move them into the correct
|
|
65
|
+
# locations.
|
|
66
|
+
cd new-screenshots
|
|
67
|
+
|
|
68
|
+
# "$i" is a folder for an artifact (eg "screenshots-ChromeAndroid"),
|
|
69
|
+
# and it contains a single folder with the name we use in our
|
|
70
|
+
# screenshots (eg "chrome-Android"). We want the contents of that
|
|
71
|
+
# inner folder to be copied to test/test/assets/screenshots/, where a
|
|
72
|
+
# folder with the same name (eg "chrome-Android") already exists.
|
|
73
|
+
for i in screenshots*; do
|
|
74
|
+
cp -a $i/* ../test/test/assets/screenshots/
|
|
75
|
+
done
|
|
76
|
+
|
|
77
|
+
- name: Update screenshots
|
|
78
|
+
run: |
|
|
79
|
+
# Install prerequisites.
|
|
80
|
+
npm ci
|
|
81
|
+
|
|
82
|
+
# Update the official screenshots for any that have visibly changed.
|
|
83
|
+
# This is not a byte-for-byte comparison, but based on pixel diffs.
|
|
84
|
+
./build/updateScreenshots.py
|
|
85
|
+
|
|
86
|
+
# Emulate the actions bot.
|
|
87
|
+
git config user.name "github-actions[bot]"
|
|
88
|
+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
89
|
+
|
|
90
|
+
# Commit the changes. Ignore failure, in case there are no changes.
|
|
91
|
+
git add test/test/assets/screenshots/*/*.png || true
|
|
92
|
+
git commit -m ':robot: Update all screenshots' || true
|
|
93
|
+
|
|
94
|
+
- name: Update PR
|
|
95
|
+
env:
|
|
96
|
+
GH_TOKEN: ${{ github.token }}
|
|
97
|
+
run: |
|
|
98
|
+
# Update the PR.
|
|
99
|
+
PR_API_URL="/repos/${{ github.repository }}/pulls/${{ inputs.pr }}"
|
|
100
|
+
REMOTE=$(gh api $PR_API_URL | jq -r .head.repo.html_url)
|
|
101
|
+
BRANCH=$(gh api $PR_API_URL | jq -r .head.ref)
|
|
102
|
+
|
|
103
|
+
# If there were no changes, this will do nothing, but succeed.
|
|
104
|
+
git push "$REMOTE" HEAD:"$BRANCH"
|
|
105
|
+
|
|
106
|
+
- name: Debug
|
|
107
|
+
uses: mxschmitt/action-tmate@v3.6
|
|
108
|
+
with:
|
|
109
|
+
limit-access-to-actor: true
|
|
110
|
+
if: failure()
|
|
111
|
+
|
|
112
|
+
set-final-status:
|
|
113
|
+
name: Set Final Status
|
|
114
|
+
runs-on: ubuntu-latest
|
|
115
|
+
needs: [run-lab-tests, update-pr]
|
|
116
|
+
# Will run on success or failure, but not if the workflow is cancelled.
|
|
117
|
+
if: ${{ success() || failure() }}
|
|
118
|
+
steps:
|
|
119
|
+
- uses: actions/checkout@v3
|
|
120
|
+
with:
|
|
121
|
+
ref: refs/pull/${{ inputs.pr }}/head
|
|
122
|
+
|
|
123
|
+
- name: Compute final status
|
|
124
|
+
id: compute
|
|
125
|
+
run: |
|
|
126
|
+
LAB_TEST_STATUS="${{ needs.run-lab-tests.status }}"
|
|
127
|
+
UPDATE_PR_STATUS="${{ needs.update-pr.status }}"
|
|
128
|
+
|
|
129
|
+
# If run-lab-tests succeeded, use the status of update-pr, otherwise
|
|
130
|
+
# use run-lab-tests (which is "failed" or "error").
|
|
131
|
+
if [ "$LAB_TEST_STATUS" == "success" ]; then
|
|
132
|
+
echo "status=$UPDATE_PR_STATUS" >> $GITHUB_OUTPUT
|
|
133
|
+
else
|
|
134
|
+
echo "status=$LAST_TEST_STATUS" >> $GITHUB_OUTPUT
|
|
135
|
+
fi
|
|
136
|
+
|
|
137
|
+
- name: Report final status
|
|
138
|
+
uses: ./.github/workflows/custom-actions/set-commit-status
|
|
139
|
+
with:
|
|
140
|
+
context: Update All Screenshots
|
|
141
|
+
state: ${{ steps.compute.outputs.status }}
|
|
142
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
package/AUTHORS
CHANGED
|
@@ -17,7 +17,7 @@ AdsWizz <*@adswizz.com>
|
|
|
17
17
|
Adrián Gómez Llorente <adgllorente@gmail.com>
|
|
18
18
|
Alex Jones <alexedwardjones@gmail.com>
|
|
19
19
|
Alugha GmbH <*@alugha.com>
|
|
20
|
-
Alvaro Velad Galvan <
|
|
20
|
+
Alvaro Velad Galvan <ladvan91@hotmail.com>
|
|
21
21
|
Amila Sampath <lucksy@gmail.com>
|
|
22
22
|
Anthony Stansbridge <github@anthonystansbridge.co.uk>
|
|
23
23
|
Benjamin Wallberg <me@bwallberg.com>
|
|
@@ -82,3 +82,4 @@ Vincent Valot <valot.vince@gmail.com>
|
|
|
82
82
|
Wayne Morgan <wayne.morgan.dev@gmail.com>
|
|
83
83
|
Raymond Cheng <raycheng100@gmail.com>
|
|
84
84
|
Blue Billywig <*@bluebillywig.com>
|
|
85
|
+
Xperi <*@xperi.com>
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [3.2.21](https://github.com/shaka-project/shaka-player/compare/v3.2.20...v3.2.21) (2023-04-27)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* `config.streaming.preferNativeHls` only applies to HLS streams ([#5167](https://github.com/shaka-project/shaka-player/issues/5167)) ([f3e9dab](https://github.com/shaka-project/shaka-player/commit/f3e9dabb3437c126e172ea97e6e793aa9140d3c7)), closes [#5166](https://github.com/shaka-project/shaka-player/issues/5166)
|
|
9
|
+
* **Ads:** Fix usage of EventManager on CS ([#5084](https://github.com/shaka-project/shaka-player/issues/5084)) ([e97264c](https://github.com/shaka-project/shaka-player/commit/e97264c041ed8b24930df0f660d8d50ee60bf2ca))
|
|
10
|
+
* Fix fetch plugin with old implementations ([#5091](https://github.com/shaka-project/shaka-player/issues/5091)) ([0004ade](https://github.com/shaka-project/shaka-player/commit/0004ade02bc6a6ebb84583f433b5f1130797aaeb))
|
|
11
|
+
* Fix handling of CC when switching between codecs ([#5160](https://github.com/shaka-project/shaka-player/issues/5160)) ([2203087](https://github.com/shaka-project/shaka-player/commit/2203087b1e94c328f1fc095b5e17ff690b31453b))
|
|
12
|
+
* Fix HEAD request exception ([#5194](https://github.com/shaka-project/shaka-player/issues/5194)) ([265829b](https://github.com/shaka-project/shaka-player/commit/265829b074f922b550e51fa10ce7f87dd222ffe9)), closes [#5164](https://github.com/shaka-project/shaka-player/issues/5164)
|
|
13
|
+
* Fix missing originalUri in response filters ([#5114](https://github.com/shaka-project/shaka-player/issues/5114)) ([7dafd2f](https://github.com/shaka-project/shaka-player/commit/7dafd2f782e6edc2d7fcf38b0db3884b28a6fd2c))
|
|
14
|
+
* Fix race that allows multiple text streams to be loaded ([#5129](https://github.com/shaka-project/shaka-player/issues/5129)) ([35832b1](https://github.com/shaka-project/shaka-player/commit/35832b1b9c9c3eb08ff64ba90661a2f8f0f2c3db))
|
|
15
|
+
* Fix selectVariantsByLabel using src= ([#5154](https://github.com/shaka-project/shaka-player/issues/5154)) ([7e3adce](https://github.com/shaka-project/shaka-player/commit/7e3adce4a30063d581f25bbe6aab35d54376e95c))
|
|
16
|
+
* Handle empty media segments for Mp4VttParser ([#5131](https://github.com/shaka-project/shaka-player/issues/5131)) ([bbaffe8](https://github.com/shaka-project/shaka-player/commit/bbaffe8865aed2b4957fe4f5155174f823611cc7)), closes [#4429](https://github.com/shaka-project/shaka-player/issues/4429)
|
|
17
|
+
* **HLS:** Adding support for DTS Express in HLS fMP4 ([#5112](https://github.com/shaka-project/shaka-player/issues/5112)) ([#5117](https://github.com/shaka-project/shaka-player/issues/5117)) ([de90328](https://github.com/shaka-project/shaka-player/commit/de90328cec936d3dba986396aefb5d2d69a9b373))
|
|
18
|
+
* Prevent bad calls to MediaSource.endOfStream ([#5071](https://github.com/shaka-project/shaka-player/issues/5071)) ([c56bea6](https://github.com/shaka-project/shaka-player/commit/c56bea6d3e2f01c964db077219031f1dd068ef91)), closes [#5070](https://github.com/shaka-project/shaka-player/issues/5070)
|
|
19
|
+
* Tizen video error fixed by checking the extended MIME type ([#4973](https://github.com/shaka-project/shaka-player/issues/4973)) ([426816e](https://github.com/shaka-project/shaka-player/commit/426816ed01a708fb82e277b3c2fc5c39a1b65fad)), closes [#4634](https://github.com/shaka-project/shaka-player/issues/4634)
|
|
20
|
+
|
|
21
|
+
## [3.2.20](https://github.com/shaka-project/shaka-player/compare/v3.2.19...v3.2.20) (2023-03-02)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Bug Fixes
|
|
25
|
+
|
|
26
|
+
* **Ads:** Fix CS volume ad ([#5016](https://github.com/shaka-project/shaka-player/issues/5016)) ([7d644ca](https://github.com/shaka-project/shaka-player/commit/7d644ca030112a227142ac2f236e4e0a16fd97bb))
|
|
27
|
+
* **Ads:** Fix usage of EventManager on CS ([#5017](https://github.com/shaka-project/shaka-player/issues/5017)) ([0fcaeaa](https://github.com/shaka-project/shaka-player/commit/0fcaeaac5aaa1cec019aa4f156ecd1bfc5575536))
|
|
28
|
+
* **ads:** Fix VMAP ads stay muted on muted autoplay ([#4995](https://github.com/shaka-project/shaka-player/issues/4995)) ([4c5cf61](https://github.com/shaka-project/shaka-player/commit/4c5cf613c7150eb7def6f9bb92d5925e17406cb9))
|
|
29
|
+
* Allow the playback of TS without mux.js ([#5041](https://github.com/shaka-project/shaka-player/issues/5041)) ([2e3c720](https://github.com/shaka-project/shaka-player/commit/2e3c720daf10d7236478965f3c6d13163b13c302))
|
|
30
|
+
* Caption can not turn off at iOS Safari ([#4978](https://github.com/shaka-project/shaka-player/issues/4978)) ([b644860](https://github.com/shaka-project/shaka-player/commit/b644860fd83a722a734141d9834252cca84fa354))
|
|
31
|
+
* **Demo:** Allow manifest type for DAI custom assets ([#4977](https://github.com/shaka-project/shaka-player/issues/4977)) ([2a66112](https://github.com/shaka-project/shaka-player/commit/2a6611249934f3f9b4190815fae95369dc5736a1))
|
|
32
|
+
* Failed to set 'currentTime' property on 'HTMLMediaElement' on a Hisense TV ([#4962](https://github.com/shaka-project/shaka-player/issues/4962)) ([59d2e09](https://github.com/shaka-project/shaka-player/commit/59d2e09e98a66558e65c33b7d55ea8345f3f8099))
|
|
33
|
+
* Fallback to isTypeSupported when cast namespace is undefined ([#5012](https://github.com/shaka-project/shaka-player/issues/5012)) ([1834ad3](https://github.com/shaka-project/shaka-player/commit/1834ad3d865bfc900c82738a95f2f278735e0385))
|
|
34
|
+
* Fix video/mp2t mimetype conversion. ([#5039](https://github.com/shaka-project/shaka-player/issues/5039)) ([cec2b28](https://github.com/shaka-project/shaka-player/commit/cec2b287b52cebcc89e66d7c2f2b4b24dedfef1a))
|
|
35
|
+
* **HLS:** Add `.tsa` and .`tsv` file extensions as valid MPEG2-TS. ([#5034](https://github.com/shaka-project/shaka-player/issues/5034)) ([6c4efe2](https://github.com/shaka-project/shaka-player/commit/6c4efe2a4fedaf74fb0151504adada6f597dbf9a))
|
|
36
|
+
* Increase IndexedDB timeout ([#4984](https://github.com/shaka-project/shaka-player/issues/4984)) ([2b81cb4](https://github.com/shaka-project/shaka-player/commit/2b81cb44f9345a473fbf04dbf00612b45fad3c57))
|
|
37
|
+
* **MCap:** Remove robustness when robustness value is default ([#4953](https://github.com/shaka-project/shaka-player/issues/4953)) ([6115dd7](https://github.com/shaka-project/shaka-player/commit/6115dd7f095b35c98ded89cbcbe8dc0124777e6e))
|
|
38
|
+
* Prevent content from being restarted after Postroll ads ([#4979](https://github.com/shaka-project/shaka-player/issues/4979)) ([8969f1e](https://github.com/shaka-project/shaka-player/commit/8969f1e2cbb2ce73a3c1da693b7d2be4825e3247))
|
|
39
|
+
* Reject TS content on Edge ([#5043](https://github.com/shaka-project/shaka-player/issues/5043)) ([c5c4d0f](https://github.com/shaka-project/shaka-player/commit/c5c4d0f42a0af0a95e231c89ae24383efffae474))
|
|
40
|
+
* **VTT:** Fix spacing between text lines ([#4961](https://github.com/shaka-project/shaka-player/issues/4961)) ([40bff87](https://github.com/shaka-project/shaka-player/commit/40bff87ccb2212e7cd88a93d83c8902a41d116ea))
|
|
41
|
+
* **WebVTT:** Tags in the WebVTT subtitle are not parsed ([#4960](https://github.com/shaka-project/shaka-player/issues/4960)) ([542883f](https://github.com/shaka-project/shaka-player/commit/542883f2cd6783d0f063a0eff0e83118c0c89132))
|
|
42
|
+
|
|
3
43
|
## [3.2.19](https://github.com/shaka-project/shaka-player/compare/v3.2.18...v3.2.19) (2023-01-31)
|
|
4
44
|
|
|
5
45
|
|
package/CONTRIBUTORS
CHANGED
|
@@ -27,7 +27,7 @@ Adrián Gómez Llorente <adgllorente@gmail.com>
|
|
|
27
27
|
Agajan Jumakuliyev <agajan.tm@gmail.com>
|
|
28
28
|
Aidan Ridley <aidan.ridley@charter.com>
|
|
29
29
|
Alex Jones <alexedwardjones@gmail.com>
|
|
30
|
-
Alvaro Velad Galvan <
|
|
30
|
+
Alvaro Velad Galvan <ladvan91@hotmail.com>
|
|
31
31
|
Amila Sampath <lucksy@gmail.com>
|
|
32
32
|
Andy Hochhaus <ahochhaus@samegoal.com>
|
|
33
33
|
Anthony Stansbridge <github@anthonystansbridge.co.uk>
|
|
@@ -117,6 +117,9 @@ Vasanth Polipelli <vasanthap@google.com>
|
|
|
117
117
|
Vignesh Venkatasubramanian <vigneshv@google.com>
|
|
118
118
|
Vincent Valot <valot.vince@gmail.com>
|
|
119
119
|
Wayne Morgan <wayne.morgan.dev@gmail.com>
|
|
120
|
+
Wen Ren <renwen0615@gmail.com>
|
|
121
|
+
Will Harris <will.harris@paramount.com>
|
|
120
122
|
Yohann Connell <robinconnell@google.com>
|
|
121
123
|
Raymond Cheng <raycheng100@gmail.com>
|
|
122
124
|
Janroel Koppen <j.koppen@bluebillywig.com>
|
|
125
|
+
Ashley Manners <ashley.manners@xperi.com>
|
package/demo/common/asset.js
CHANGED
|
@@ -76,6 +76,8 @@ const ShakaDemoAssetInfo = class {
|
|
|
76
76
|
/** @type {?string} */
|
|
77
77
|
this.imaContentSrcId = null;
|
|
78
78
|
/** @type {?string} */
|
|
79
|
+
this.imaManifestType = null;
|
|
80
|
+
/** @type {?string} */
|
|
79
81
|
this.mimeType = null;
|
|
80
82
|
|
|
81
83
|
|
|
@@ -256,6 +258,19 @@ const ShakaDemoAssetInfo = class {
|
|
|
256
258
|
return this;
|
|
257
259
|
}
|
|
258
260
|
|
|
261
|
+
/**
|
|
262
|
+
* @param {string} type
|
|
263
|
+
* @return {!ShakaDemoAssetInfo}
|
|
264
|
+
*/
|
|
265
|
+
setIMAManifestType(type) {
|
|
266
|
+
this.imaManifestType = type;
|
|
267
|
+
if (!this.features.includes(shakaAssets.Feature.ADS)) {
|
|
268
|
+
this.addFeature(shakaAssets.Feature.ADS);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
return this;
|
|
272
|
+
}
|
|
273
|
+
|
|
259
274
|
/**
|
|
260
275
|
* @param {string} headerName
|
|
261
276
|
* @param {string} headerValue
|
package/demo/common/assets.js
CHANGED
|
@@ -491,7 +491,8 @@ shakaAssets.testAssets = [
|
|
|
491
491
|
.addFeature(shakaAssets.Feature.MP4)
|
|
492
492
|
.addFeature(shakaAssets.Feature.OFFLINE)
|
|
493
493
|
.setIMAContentSourceId('2528370')
|
|
494
|
-
.setIMAVideoId('tears-of-steel')
|
|
494
|
+
.setIMAVideoId('tears-of-steel')
|
|
495
|
+
.setIMAManifestType('HLS'),
|
|
495
496
|
new ShakaDemoAssetInfo(
|
|
496
497
|
/* name= */ 'Tears of Steel (live, DASH, Server Side ads)',
|
|
497
498
|
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
|
|
@@ -501,7 +502,8 @@ shakaAssets.testAssets = [
|
|
|
501
502
|
.addFeature(shakaAssets.Feature.MP4)
|
|
502
503
|
.addFeature(shakaAssets.Feature.SUBTITLES)
|
|
503
504
|
.addFeature(shakaAssets.Feature.LIVE)
|
|
504
|
-
.setIMAAssetKey('PSzZMzAkSXCmlJOWDmRj8Q')
|
|
505
|
+
.setIMAAssetKey('PSzZMzAkSXCmlJOWDmRj8Q')
|
|
506
|
+
.setIMAManifestType('DASH'),
|
|
505
507
|
new ShakaDemoAssetInfo(
|
|
506
508
|
/* name= */ 'Tears of Steel (multicodec, surround + stereo)',
|
|
507
509
|
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
|
|
@@ -96,6 +96,7 @@ shakaDemo.MessageIds = {
|
|
|
96
96
|
ADS_TAB: 'DEMO_ADS_TAB',
|
|
97
97
|
IMA_ASSET_KEY: 'DEMO_IMA_ASSET_KEY',
|
|
98
98
|
IMA_CONTENT_SRC_ID: 'DEMO_IMA_CONTENT_SRC_ID',
|
|
99
|
+
IMA_MANIFEST_TYPE: 'DEMO_IMA_MANIFEST_TYPE',
|
|
99
100
|
IMA_VIDEO_ID: 'DEMO_IMA_VIDEO_ID',
|
|
100
101
|
CANCEL_BUTTON: 'DEMO_CANCEL_BUTTON',
|
|
101
102
|
CUSTOM_INTRO_ONE: 'DEMO_CUSTOM_INTRO_ONE',
|
package/demo/custom.js
CHANGED
|
@@ -328,6 +328,25 @@ shakaDemo.Custom = class {
|
|
|
328
328
|
this.makeField_(
|
|
329
329
|
container, assetKeyName, assetKeySetup, assetKeyChange);
|
|
330
330
|
|
|
331
|
+
// Make the manifest type field.
|
|
332
|
+
const manifestTypeSetup = (input, container) => {
|
|
333
|
+
if (assetInProgress.imaManifestType) {
|
|
334
|
+
input.value = assetInProgress.imaManifestType;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
this.manifestField_.required =
|
|
338
|
+
this.checkManifestRequired_(assetInProgress);
|
|
339
|
+
};
|
|
340
|
+
const manifestTypeChange = (input) => {
|
|
341
|
+
assetInProgress.imaManifestType = input.value;
|
|
342
|
+
this.manifestField_.required =
|
|
343
|
+
this.checkManifestRequired_(assetInProgress);
|
|
344
|
+
};
|
|
345
|
+
const manifestTypeName = shakaDemoMain.getLocalizedString(
|
|
346
|
+
shakaDemo.MessageIds.IMA_MANIFEST_TYPE);
|
|
347
|
+
this.makeField_(
|
|
348
|
+
container, manifestTypeName, manifestTypeSetup, manifestTypeChange);
|
|
349
|
+
|
|
331
350
|
return adsDiv;
|
|
332
351
|
}
|
|
333
352
|
|
package/demo/locales/en.json
CHANGED
|
@@ -91,6 +91,7 @@
|
|
|
91
91
|
"DEMO_IGNORE_HLS_TEXT_FAILURES": "Ignore HLS Text Stream Failures",
|
|
92
92
|
"DEMO_IMA_ASSET_KEY": "Asset key (for LIVE DAI Content)",
|
|
93
93
|
"DEMO_IMA_CONTENT_SRC_ID": "Content source ID (for VOD DAI Content)",
|
|
94
|
+
"DEMO_IMA_MANIFEST_TYPE": "Manifest type (for DAI Content)",
|
|
94
95
|
"DEMO_IMA_VIDEO_ID": "Video ID (for VOD DAI Content)",
|
|
95
96
|
"DEMO_IGNORE_MIN_BUFFER_TIME": "Ignore Min Buffer Time",
|
|
96
97
|
"DEMO_IGNORE_TEXT_FAILURES": "Ignore Text Stream Failures",
|
package/demo/locales/source.json
CHANGED
|
@@ -367,6 +367,10 @@
|
|
|
367
367
|
"description": "The label on a field that allows users to provide a content source id for a custom asset.",
|
|
368
368
|
"message": "Asset key (for VOD DAI Content)"
|
|
369
369
|
},
|
|
370
|
+
"DEMO_IMA_MANIFEST_TYPE": {
|
|
371
|
+
"description": "The label on a field that allows users to provide a manifest type for a custom asset.",
|
|
372
|
+
"message": "Manifest type (for DAI Content)"
|
|
373
|
+
},
|
|
370
374
|
"DEMO_IMA_VIDEO_ID": {
|
|
371
375
|
"description": "The label on a field that allows users to provide a video id for a custom asset.",
|
|
372
376
|
"message": "Video ID (for VOD DAI Content)"
|
package/demo/main.js
CHANGED
|
@@ -1502,6 +1502,20 @@ shakaDemo.Main = class {
|
|
|
1502
1502
|
request.contentSourceId = asset.imaContentSrcId;
|
|
1503
1503
|
request.videoId = asset.imaVideoId;
|
|
1504
1504
|
}
|
|
1505
|
+
switch (asset.imaManifestType) {
|
|
1506
|
+
case 'DASH':
|
|
1507
|
+
case 'dash':
|
|
1508
|
+
case 'MPD':
|
|
1509
|
+
case 'mpd':
|
|
1510
|
+
request.format = google.ima.dai.api.StreamRequest.StreamFormat.DASH;
|
|
1511
|
+
break;
|
|
1512
|
+
case 'HLS':
|
|
1513
|
+
case 'hls':
|
|
1514
|
+
case 'M3U8':
|
|
1515
|
+
case 'm3u8':
|
|
1516
|
+
request.format = google.ima.dai.api.StreamRequest.StreamFormat.HLS;
|
|
1517
|
+
break;
|
|
1518
|
+
}
|
|
1505
1519
|
|
|
1506
1520
|
const uri = await adManager.requestServerSideStream(
|
|
1507
1521
|
request, /* backupUri= */ asset.manifestUri);
|
package/dist/controls.css
CHANGED
|
@@ -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 / 40%);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}.shaka-ad-counter,.shaka-ad-position{display:flex;justify-content:flex-end;flex-direction:column;text-shadow:1px 1px 4px #000}.shaka-ad-controls .shaka-ad-position:not(.shaka-hidden)+.shaka-ad-counter{margin-left:.75em}.shaka-skip-ad-container{position:relative;right:calc((100% - 96%)/ 2 * -1);display:flex;flex-direction:row;margin:0}.shaka-skip-ad-button{padding:5px 15px;background:rgba(0 0 0 / 70%);border:none;cursor:pointer}.shaka-skip-ad-button:disabled{background:rgba(0 0 0 / 30%)}.shaka-skip-ad-counter{padding:5px;background:rgba(0 0 0 / 70%);margin:0}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/roboto/v30/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/
|
|
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 / 40%);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}.shaka-ad-counter,.shaka-ad-position{display:flex;justify-content:flex-end;flex-direction:column;text-shadow:1px 1px 4px #000}.shaka-ad-controls .shaka-ad-position:not(.shaka-hidden)+.shaka-ad-counter{margin-left:.75em}.shaka-skip-ad-container{position:relative;right:calc((100% - 96%)/ 2 * -1);display:flex;flex-direction:row;margin:0}.shaka-skip-ad-button{padding:5px 15px;background:rgba(0 0 0 / 70%);border:none;cursor:pointer}.shaka-skip-ad-button:disabled{background:rgba(0 0 0 / 30%)}.shaka-skip-ad-counter{padding:5px;background:rgba(0 0 0 / 70%);margin:0}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/roboto/v30/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/v108/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 */
|