shaka-player 4.3.3 → 4.3.5
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 +72 -11
- package/.github/workflows/update-screenshots.yaml +142 -0
- package/CHANGELOG.md +41 -0
- 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/demo.compiled.debug.js +30 -28
- package/dist/demo.compiled.debug.map +3 -3
- package/dist/demo.compiled.js +30 -28
- package/dist/demo.compiled.map +3 -3
- package/dist/deps.js +4 -3
- package/dist/locales.js +30 -30
- package/dist/receiver.compiled.debug.js +22 -22
- package/dist/receiver.compiled.debug.map +2 -2
- package/dist/receiver.compiled.js +22 -22
- package/dist/receiver.compiled.map +2 -2
- package/dist/shaka-player.compiled.d.ts +7 -0
- package/dist/shaka-player.compiled.debug.d.ts +7 -0
- package/dist/shaka-player.compiled.debug.js +116 -109
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.js +825 -821
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +7 -0
- package/dist/shaka-player.ui.debug.d.ts +7 -0
- package/dist/shaka-player.ui.debug.js +128 -121
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.js +937 -932
- package/dist/shaka-player.ui.map +4 -4
- 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/lib/ads/client_side_ad_manager.js +6 -3
- package/lib/dash/segment_template.js +17 -5
- package/lib/hls/hls_parser.js +12 -2
- package/lib/media/drm_engine.js +4 -2
- package/lib/media/transmuxer.js +13 -7
- package/lib/media/video_wrapper.js +3 -3
- package/lib/offline/indexeddb/storage_mechanism.js +1 -1
- package/lib/player.js +3 -1
- package/lib/polyfill/media_capabilities.js +6 -9
- package/lib/polyfill/mediasource.js +24 -2
- package/lib/text/simple_text_displayer.js +2 -64
- package/lib/text/text_utils.js +88 -0
- package/lib/text/ui_text_displayer.js +1 -5
- package/lib/text/vtt_text_parser.js +228 -102
- package/lib/text/web_vtt_generator.js +2 -64
- package/lib/util/mime_utils.js +1 -1
- package/lib/util/platform.js +8 -0
- package/lib/util/stream_utils.js +26 -14
- package/package.json +1 -1
- package/support.html +1 -0
- package/test/dash/dash_parser_manifest_unit.js +0 -36
- package/test/polyfill/media_capabilities_unit.js +21 -22
- package/test/test/util/layout_tests.js +433 -0
- package/test/test/util/util.js +0 -120
- package/test/{ui → text}/text_displayer_layout_unit.js +59 -235
- package/test/text/ui_text_displayer_unit.js +2 -4
- package/test/text/vtt_text_parser_unit.js +138 -8
- package/test/text/web_vtt_layout_integration.js +525 -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
|
|
@@ -213,7 +213,7 @@ jobs:
|
|
|
213
213
|
- name: Checkout code
|
|
214
214
|
uses: actions/checkout@v3
|
|
215
215
|
with:
|
|
216
|
-
ref: ${{
|
|
216
|
+
ref: ${{ inputs.ref || github.ref }}
|
|
217
217
|
|
|
218
218
|
- name: Docker
|
|
219
219
|
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:
|
|
@@ -8,6 +8,25 @@ on:
|
|
|
8
8
|
pr:
|
|
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
|
+
test_filter:
|
|
12
|
+
description: "A regex filter to run a subset of the tests. If empty, all tests will run."
|
|
13
|
+
required: false
|
|
14
|
+
workflow_call:
|
|
15
|
+
# Allows for reuse from other workflows, such as "Update All Screenshots"
|
|
16
|
+
# workflow.
|
|
17
|
+
inputs:
|
|
18
|
+
pr:
|
|
19
|
+
description: "A PR number to build and test in the lab. If empty, will build and test from main."
|
|
20
|
+
required: false
|
|
21
|
+
type: string
|
|
22
|
+
test_filter:
|
|
23
|
+
description: "A regex filter to run a subset of the tests. If empty, all tests will run."
|
|
24
|
+
required: false
|
|
25
|
+
type: string
|
|
26
|
+
ignore_test_status:
|
|
27
|
+
description: "If true, ignore test success or failure, never set the commit status, and always upload screenshots."
|
|
28
|
+
required: false
|
|
29
|
+
type: boolean
|
|
11
30
|
schedule:
|
|
12
31
|
# Runs every night at 2am PST / 10am UTC, testing against the main branch.
|
|
13
32
|
- cron: '0 10 * * *'
|
|
@@ -27,12 +46,12 @@ jobs:
|
|
|
27
46
|
- name: Compute ref
|
|
28
47
|
id: compute
|
|
29
48
|
run: |
|
|
30
|
-
if [[ "${{
|
|
31
|
-
LAB_TEST_REF="refs/pull/${{
|
|
49
|
+
if [[ "${{ inputs.pr }}" != "" ]]; then
|
|
50
|
+
LAB_TEST_REF="refs/pull/${{ inputs.pr }}/head"
|
|
32
51
|
else
|
|
33
52
|
LAB_TEST_REF="main"
|
|
34
53
|
fi
|
|
35
|
-
echo "REF=$LAB_TEST_REF"
|
|
54
|
+
echo "REF=$LAB_TEST_REF" | tee -a $GITHUB_OUTPUT
|
|
36
55
|
|
|
37
56
|
# Configure the build matrix based on our grid's YAML config.
|
|
38
57
|
# The matrix contents will be computed by this first job and deserialized
|
|
@@ -97,6 +116,7 @@ jobs:
|
|
|
97
116
|
ref: ${{ needs.compute-ref.outputs.REF }}
|
|
98
117
|
|
|
99
118
|
- name: Set commit status to pending
|
|
119
|
+
if: ${{ inputs.ignore_test_status == false }}
|
|
100
120
|
uses: ./.github/workflows/custom-actions/set-commit-status
|
|
101
121
|
with:
|
|
102
122
|
context: Selenium / Build
|
|
@@ -114,8 +134,9 @@ jobs:
|
|
|
114
134
|
retention-days: 1
|
|
115
135
|
|
|
116
136
|
- name: Report final commit status
|
|
117
|
-
# Will run on success or failure, but not if the workflow is cancelled
|
|
118
|
-
if
|
|
137
|
+
# Will run on success or failure, but not if the workflow is cancelled
|
|
138
|
+
# or if we were asked to ignore the test status.
|
|
139
|
+
if: ${{ (success() || failure()) && inputs.ignore_test_status == false }}
|
|
119
140
|
uses: ./.github/workflows/custom-actions/set-commit-status
|
|
120
141
|
with:
|
|
121
142
|
context: Selenium / Build
|
|
@@ -139,6 +160,7 @@ jobs:
|
|
|
139
160
|
ref: ${{ needs.compute-ref.outputs.REF }}
|
|
140
161
|
|
|
141
162
|
- name: Set commit status to pending
|
|
163
|
+
if: ${{ inputs.ignore_test_status == false }}
|
|
142
164
|
uses: ./.github/workflows/custom-actions/set-commit-status
|
|
143
165
|
with:
|
|
144
166
|
context: Selenium / ${{ matrix.browser }}
|
|
@@ -182,15 +204,28 @@ jobs:
|
|
|
182
204
|
# the container.
|
|
183
205
|
- name: Test Player
|
|
184
206
|
run: |
|
|
207
|
+
# Use of an array keeps elements intact, and allows an element to
|
|
208
|
+
# contain spaces without being expanded into multiple arguments in a
|
|
209
|
+
# shell command.
|
|
210
|
+
extra_flags=()
|
|
211
|
+
|
|
185
212
|
# Generate a coverage report from uncompiled code on ChromeLinux.
|
|
186
213
|
# It should be the uncompiled build, or else we won't execute any
|
|
187
214
|
# coverage instrumentation on full-stack player integration tests.
|
|
188
215
|
if [[ "${{ matrix.browser }}" == "ChromeLinux" ]]; then
|
|
189
|
-
extra_flags
|
|
190
|
-
|
|
191
|
-
|
|
216
|
+
extra_flags+=(--html-coverage-report --uncompiled)
|
|
217
|
+
fi
|
|
218
|
+
|
|
219
|
+
if [[ "${{ inputs.test_filter }}" != "" ]]; then
|
|
220
|
+
echo "Adding filter: ${{ inputs.test_filter }}"
|
|
221
|
+
extra_flags+=(--filter "${{ inputs.test_filter }}")
|
|
192
222
|
fi
|
|
193
223
|
|
|
224
|
+
# Do not automatically fail when a command fails. This allows us to
|
|
225
|
+
# implement the ignore_test_status input by capturing the exit code
|
|
226
|
+
# and examining it.
|
|
227
|
+
set +e
|
|
228
|
+
# Run the tests with any extra flags.
|
|
194
229
|
python3 build/test.py \
|
|
195
230
|
--no-build \
|
|
196
231
|
--reporters spec --spec-hide-passed \
|
|
@@ -200,7 +235,18 @@ jobs:
|
|
|
200
235
|
--grid-config build/shaka-lab.yaml \
|
|
201
236
|
--grid-address selenium-grid.lab:4444 \
|
|
202
237
|
--browsers ${{ matrix.browser }} \
|
|
203
|
-
$extra_flags
|
|
238
|
+
"${extra_flags[@]}"
|
|
239
|
+
# Capture the test exit code immediately after running the tests.
|
|
240
|
+
# There cannot be any other command between test.py and here.
|
|
241
|
+
exit_code=$?
|
|
242
|
+
|
|
243
|
+
# If ignoring test status, treat this as an exit code of 0 (success).
|
|
244
|
+
if [[ "${{ inputs.ignore_test_status }}" == "true" ]]; then
|
|
245
|
+
exit_code=0
|
|
246
|
+
fi
|
|
247
|
+
|
|
248
|
+
# Report the captured (and possibly overridden) exit status.
|
|
249
|
+
exit $exit_code
|
|
204
250
|
|
|
205
251
|
- name: Find coverage report (ChromeLinux only)
|
|
206
252
|
id: coverage
|
|
@@ -241,9 +287,24 @@ jobs:
|
|
|
241
287
|
# there.
|
|
242
288
|
if-no-files-found: error
|
|
243
289
|
|
|
290
|
+
# Upload new screenshots and diffs on failure; ignore if missing
|
|
291
|
+
- name: Upload screenshots
|
|
292
|
+
uses: actions/upload-artifact@v3
|
|
293
|
+
if: ${{ failure() || inputs.ignore_test_status }}
|
|
294
|
+
with:
|
|
295
|
+
# In this workflow, "browser" is the selenium node name, which can
|
|
296
|
+
# contain both browser and OS, such as "ChromeLinux".
|
|
297
|
+
name: screenshots-${{ matrix.browser }}
|
|
298
|
+
path: |
|
|
299
|
+
test/test/assets/screenshots/*/*.png-new
|
|
300
|
+
test/test/assets/screenshots/*/*.png-diff
|
|
301
|
+
if-no-files-found: ignore
|
|
302
|
+
retention-days: 5
|
|
303
|
+
|
|
244
304
|
- name: Report final commit status
|
|
245
|
-
# Will run on success or failure, but not if the workflow is cancelled
|
|
246
|
-
if
|
|
305
|
+
# Will run on success or failure, but not if the workflow is cancelled
|
|
306
|
+
# or if we were asked to ignore the test status.
|
|
307
|
+
if: ${{ (success() || failure()) && inputs.ignore_test_status == false }}
|
|
247
308
|
uses: ./.github/workflows/custom-actions/set-commit-status
|
|
248
309
|
with:
|
|
249
310
|
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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [4.3.5](https://github.com/shaka-project/shaka-player/compare/v4.3.4...v4.3.5) (2023-03-01)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **Ads:** Fix CS volume ad ([#5016](https://github.com/shaka-project/shaka-player/issues/5016)) ([c6e1315](https://github.com/shaka-project/shaka-player/commit/c6e1315afb9f72ab599b938e6fef564de2054e4c))
|
|
9
|
+
* **Ads:** Fix usage of EventManager on CS ([#5017](https://github.com/shaka-project/shaka-player/issues/5017)) ([7c408ed](https://github.com/shaka-project/shaka-player/commit/7c408ed36838dc85b6afb3e83e4fd11d475b67e9))
|
|
10
|
+
* **ads:** Fix VMAP ads stay muted on muted autoplay ([#4995](https://github.com/shaka-project/shaka-player/issues/4995)) ([2b9ead2](https://github.com/shaka-project/shaka-player/commit/2b9ead2c08787220f56ca4eaacba92c4e42d5cd6))
|
|
11
|
+
* Allow the playback of TS without mux.js ([#5041](https://github.com/shaka-project/shaka-player/issues/5041)) ([a347d25](https://github.com/shaka-project/shaka-player/commit/a347d250cfddd7ee6c645f3bba151ed1b1be9409))
|
|
12
|
+
* Caption can not turn off at iOS Safari ([#4978](https://github.com/shaka-project/shaka-player/issues/4978)) ([07c6cdb](https://github.com/shaka-project/shaka-player/commit/07c6cdb0959fd9af16c74c3a8b54525bd3afa267))
|
|
13
|
+
* **Demo:** Allow manifest type for DAI custom assets ([#4977](https://github.com/shaka-project/shaka-player/issues/4977)) ([d67ca2b](https://github.com/shaka-project/shaka-player/commit/d67ca2b3d190e7f0671f23f480fce8921efc0345))
|
|
14
|
+
* DrmEngine exception thrown when using FairPlay ([#4971](https://github.com/shaka-project/shaka-player/issues/4971)) ([ddc7f50](https://github.com/shaka-project/shaka-player/commit/ddc7f5043a2e0ad2807456c3387a2703cd0c2c02))
|
|
15
|
+
* Failed to set 'currentTime' property on 'HTMLMediaElement' on a Hisense TV ([#4962](https://github.com/shaka-project/shaka-player/issues/4962)) ([0559cf2](https://github.com/shaka-project/shaka-player/commit/0559cf2f99488eccda1d05d501d542f54df15699))
|
|
16
|
+
* Fallback to isTypeSupported when cast namespace is undefined ([#5012](https://github.com/shaka-project/shaka-player/issues/5012)) ([e95f8a6](https://github.com/shaka-project/shaka-player/commit/e95f8a6592e94da9a4d0b1735d7ec46427171e36))
|
|
17
|
+
* Fix duration error when HLS goes from LIVE to VOD ([#5001](https://github.com/shaka-project/shaka-player/issues/5001)) ([4f4f6e2](https://github.com/shaka-project/shaka-player/commit/4f4f6e2a7d2f093f1c47f22a4817acf6599677a0))
|
|
18
|
+
* Fix video/mp2t mimetype conversion. ([#5039](https://github.com/shaka-project/shaka-player/issues/5039)) ([09a81a7](https://github.com/shaka-project/shaka-player/commit/09a81a70381a5e0569d70616359d0c433e70bae9))
|
|
19
|
+
* **HLS:** Add `.tsa` and .`tsv` file extensions as valid MPEG2-TS. ([#5034](https://github.com/shaka-project/shaka-player/issues/5034)) ([938e6c1](https://github.com/shaka-project/shaka-player/commit/938e6c1846d37b4ed9116d9021adec64fdd3a449))
|
|
20
|
+
* Increase IndexedDB timeout ([#4984](https://github.com/shaka-project/shaka-player/issues/4984)) ([4bbcf6a](https://github.com/shaka-project/shaka-player/commit/4bbcf6ae93a201ca045bce6ea86e2f1cd1e90b2f))
|
|
21
|
+
* **MCap:** Remove robustness when robustness value is default ([#4953](https://github.com/shaka-project/shaka-player/issues/4953)) ([61c8a06](https://github.com/shaka-project/shaka-player/commit/61c8a067e461a7843395157e1effb75bf1c52665))
|
|
22
|
+
* Prevent content from being restarted after Postroll ads ([#4979](https://github.com/shaka-project/shaka-player/issues/4979)) ([68dae24](https://github.com/shaka-project/shaka-player/commit/68dae2401ad8e19463c5ce7415f522b7df4d16df)), closes [#4445](https://github.com/shaka-project/shaka-player/issues/4445)
|
|
23
|
+
* Reject TS content on Edge ([#5043](https://github.com/shaka-project/shaka-player/issues/5043)) ([2d6e8ee](https://github.com/shaka-project/shaka-player/commit/2d6e8ee4fa8d45ee7578c9541da6f22bd74030e4))
|
|
24
|
+
* **VTT:** Fix spacing between text lines ([#4961](https://github.com/shaka-project/shaka-player/issues/4961)) ([1194d74](https://github.com/shaka-project/shaka-player/commit/1194d74fa1861fe0335671800bd1980da9d57a0f))
|
|
25
|
+
* **WebVTT:** Tags in the WebVTT subtitle are not parsed ([#4960](https://github.com/shaka-project/shaka-player/issues/4960)) ([7f23b09](https://github.com/shaka-project/shaka-player/commit/7f23b09e83512a34966693a04947d20b8867f80d))
|
|
26
|
+
|
|
27
|
+
## [4.3.4](https://github.com/shaka-project/shaka-player/compare/v4.3.3...v4.3.4) (2023-01-31)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### Bug Fixes
|
|
31
|
+
|
|
32
|
+
* Add mux.js to support.html ([#4923](https://github.com/shaka-project/shaka-player/issues/4923)) ([fde895e](https://github.com/shaka-project/shaka-player/commit/fde895e13c4a935b39aa9bf2bc0c5dce77add0b0))
|
|
33
|
+
* **DASH:** Fix dynamic manifests from edgeware ([#4914](https://github.com/shaka-project/shaka-player/issues/4914)) ([983dea3](https://github.com/shaka-project/shaka-player/commit/983dea3c87796384d9b7f876e73c47545d97e980))
|
|
34
|
+
* Fix MediaCapabilities polyfill on Hisense ([#4927](https://github.com/shaka-project/shaka-player/issues/4927)) ([d36677f](https://github.com/shaka-project/shaka-player/commit/d36677f0db52bff2fef967e787954e8f25889d2f))
|
|
35
|
+
* Fix WebVTT parser failure on REGION blocks ([#4915](https://github.com/shaka-project/shaka-player/issues/4915)) ([f57a954](https://github.com/shaka-project/shaka-player/commit/f57a9541cdff50de63f41247e258673fbed0cf78))
|
|
36
|
+
* **HLS:** Fix detection of WebVTT subtitles in HLS by extension ([#4928](https://github.com/shaka-project/shaka-player/issues/4928)) ([86c58ee](https://github.com/shaka-project/shaka-player/commit/86c58ee1d4f6e0fe56a5aaebf9771024193a9efe)), closes [#4929](https://github.com/shaka-project/shaka-player/issues/4929)
|
|
37
|
+
* **HLS:** IMSC1 subtitles not working in a HLS stream ([#4942](https://github.com/shaka-project/shaka-player/issues/4942)) ([8a9156f](https://github.com/shaka-project/shaka-player/commit/8a9156fa14cd6646900bdf534714ead775fccb15))
|
|
38
|
+
* **VTT:** Fix combining style selectors ([#4934](https://github.com/shaka-project/shaka-player/issues/4934)) ([bd04cf1](https://github.com/shaka-project/shaka-player/commit/bd04cf15223d026bb880ab0cca2a3e6332e8f485))
|
|
39
|
+
* **WebVTT:** Add support to , ‎ and ‏ ([#4920](https://github.com/shaka-project/shaka-player/issues/4920)) ([d2e2d49](https://github.com/shaka-project/shaka-player/commit/d2e2d49da0593d2ee2e0e4da7e2ce9acae0798af))
|
|
40
|
+
* **WebVTT:** Add support to voice tag styles ([#4845](https://github.com/shaka-project/shaka-player/issues/4845)) ([4fb19fb](https://github.com/shaka-project/shaka-player/commit/4fb19fb075a89ae6a401c236b65c82d899a069d8))
|
|
41
|
+
* **WebVTT:** Fix horizontal positioning with cue box size ([#4949](https://github.com/shaka-project/shaka-player/issues/4949)) ([cefbe08](https://github.com/shaka-project/shaka-player/commit/cefbe083b684fc1295483e938a8576d9de81a359))
|
|
42
|
+
* **WebVTT:** Fix voices with styles and support to multiple styles ([#4922](https://github.com/shaka-project/shaka-player/issues/4922)) ([981bceb](https://github.com/shaka-project/shaka-player/commit/981bceb233b029b6e77499439627455913a1784d))
|
|
43
|
+
|
|
3
44
|
## [4.3.3](https://github.com/shaka-project/shaka-player/compare/v4.3.2...v4.3.3) (2023-01-13)
|
|
4
45
|
|
|
5
46
|
|
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
|
/** @type {?string} */
|
|
81
83
|
this.mediaPlaylistFullMimeType = null;
|
|
@@ -267,6 +269,19 @@ const ShakaDemoAssetInfo = class {
|
|
|
267
269
|
return this;
|
|
268
270
|
}
|
|
269
271
|
|
|
272
|
+
/**
|
|
273
|
+
* @param {string} type
|
|
274
|
+
* @return {!ShakaDemoAssetInfo}
|
|
275
|
+
*/
|
|
276
|
+
setIMAManifestType(type) {
|
|
277
|
+
this.imaManifestType = type;
|
|
278
|
+
if (!this.features.includes(shakaAssets.Feature.ADS)) {
|
|
279
|
+
this.addFeature(shakaAssets.Feature.ADS);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
return this;
|
|
283
|
+
}
|
|
284
|
+
|
|
270
285
|
/**
|
|
271
286
|
* @param {string} headerName
|
|
272
287
|
* @param {string} headerValue
|
package/demo/common/assets.js
CHANGED
|
@@ -540,7 +540,8 @@ shakaAssets.testAssets = [
|
|
|
540
540
|
.addFeature(shakaAssets.Feature.MP4)
|
|
541
541
|
.addFeature(shakaAssets.Feature.OFFLINE)
|
|
542
542
|
.setIMAContentSourceId('2528370')
|
|
543
|
-
.setIMAVideoId('tears-of-steel')
|
|
543
|
+
.setIMAVideoId('tears-of-steel')
|
|
544
|
+
.setIMAManifestType('HLS'),
|
|
544
545
|
new ShakaDemoAssetInfo(
|
|
545
546
|
/* name= */ 'Tears of Steel (live, DASH, Server Side ads)',
|
|
546
547
|
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
|
|
@@ -550,7 +551,8 @@ shakaAssets.testAssets = [
|
|
|
550
551
|
.addFeature(shakaAssets.Feature.MP4)
|
|
551
552
|
.addFeature(shakaAssets.Feature.SUBTITLES)
|
|
552
553
|
.addFeature(shakaAssets.Feature.LIVE)
|
|
553
|
-
.setIMAAssetKey('PSzZMzAkSXCmlJOWDmRj8Q')
|
|
554
|
+
.setIMAAssetKey('PSzZMzAkSXCmlJOWDmRj8Q')
|
|
555
|
+
.setIMAManifestType('DASH'),
|
|
554
556
|
new ShakaDemoAssetInfo(
|
|
555
557
|
/* name= */ 'Tears of Steel (multicodec, surround + stereo)',
|
|
556
558
|
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
|
|
@@ -102,6 +102,7 @@ shakaDemo.MessageIds = {
|
|
|
102
102
|
ADS_TAB: 'DEMO_ADS_TAB',
|
|
103
103
|
IMA_ASSET_KEY: 'DEMO_IMA_ASSET_KEY',
|
|
104
104
|
IMA_CONTENT_SRC_ID: 'DEMO_IMA_CONTENT_SRC_ID',
|
|
105
|
+
IMA_MANIFEST_TYPE: 'DEMO_IMA_MANIFEST_TYPE',
|
|
105
106
|
IMA_VIDEO_ID: 'DEMO_IMA_VIDEO_ID',
|
|
106
107
|
CANCEL_BUTTON: 'DEMO_CANCEL_BUTTON',
|
|
107
108
|
CUSTOM_INTRO_ONE: 'DEMO_CUSTOM_INTRO_ONE',
|
package/demo/custom.js
CHANGED
|
@@ -362,6 +362,25 @@ shakaDemo.Custom = class {
|
|
|
362
362
|
this.makeField_(
|
|
363
363
|
container, assetKeyName, assetKeySetup, assetKeyChange);
|
|
364
364
|
|
|
365
|
+
// Make the manifest type field.
|
|
366
|
+
const manifestTypeSetup = (input, container) => {
|
|
367
|
+
if (assetInProgress.imaManifestType) {
|
|
368
|
+
input.value = assetInProgress.imaManifestType;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
this.manifestField_.required =
|
|
372
|
+
this.checkManifestRequired_(assetInProgress);
|
|
373
|
+
};
|
|
374
|
+
const manifestTypeChange = (input) => {
|
|
375
|
+
assetInProgress.imaManifestType = input.value;
|
|
376
|
+
this.manifestField_.required =
|
|
377
|
+
this.checkManifestRequired_(assetInProgress);
|
|
378
|
+
};
|
|
379
|
+
const manifestTypeName = shakaDemoMain.getLocalizedString(
|
|
380
|
+
shakaDemo.MessageIds.IMA_MANIFEST_TYPE);
|
|
381
|
+
this.makeField_(
|
|
382
|
+
container, manifestTypeName, manifestTypeSetup, manifestTypeChange);
|
|
383
|
+
|
|
365
384
|
return adsDiv;
|
|
366
385
|
}
|
|
367
386
|
|
package/demo/locales/en.json
CHANGED
|
@@ -105,6 +105,7 @@
|
|
|
105
105
|
"DEMO_IGNORE_HLS_TEXT_FAILURES": "Ignore HLS Text Stream Failures",
|
|
106
106
|
"DEMO_IMA_ASSET_KEY": "Asset key (for LIVE DAI Content)",
|
|
107
107
|
"DEMO_IMA_CONTENT_SRC_ID": "Content source ID (for VOD DAI Content)",
|
|
108
|
+
"DEMO_IMA_MANIFEST_TYPE": "Manifest type (for DAI Content)",
|
|
108
109
|
"DEMO_IMA_VIDEO_ID": "Video ID (for VOD DAI Content)",
|
|
109
110
|
"DEMO_IGNORE_MANIFEST_PROGRAM_DATE_TIME": "Ignore Program Date Time from manifest",
|
|
110
111
|
"DEMO_IGNORE_MIN_BUFFER_TIME": "Ignore Min Buffer Time",
|
package/demo/locales/source.json
CHANGED
|
@@ -423,6 +423,10 @@
|
|
|
423
423
|
"description": "The label on a field that allows users to provide a content source id for a custom asset.",
|
|
424
424
|
"message": "Asset key (for VOD DAI Content)"
|
|
425
425
|
},
|
|
426
|
+
"DEMO_IMA_MANIFEST_TYPE": {
|
|
427
|
+
"description": "The label on a field that allows users to provide a manifest type for a custom asset.",
|
|
428
|
+
"message": "Manifest type (for DAI Content)"
|
|
429
|
+
},
|
|
426
430
|
"DEMO_IMA_VIDEO_ID": {
|
|
427
431
|
"description": "The label on a field that allows users to provide a video id for a custom asset.",
|
|
428
432
|
"message": "Video ID (for VOD DAI Content)"
|
package/demo/main.js
CHANGED
|
@@ -1561,6 +1561,20 @@ shakaDemo.Main = class {
|
|
|
1561
1561
|
request.contentSourceId = asset.imaContentSrcId;
|
|
1562
1562
|
request.videoId = asset.imaVideoId;
|
|
1563
1563
|
}
|
|
1564
|
+
switch (asset.imaManifestType) {
|
|
1565
|
+
case 'DASH':
|
|
1566
|
+
case 'dash':
|
|
1567
|
+
case 'MPD':
|
|
1568
|
+
case 'mpd':
|
|
1569
|
+
request.format = google.ima.dai.api.StreamRequest.StreamFormat.DASH;
|
|
1570
|
+
break;
|
|
1571
|
+
case 'HLS':
|
|
1572
|
+
case 'hls':
|
|
1573
|
+
case 'M3U8':
|
|
1574
|
+
case 'm3u8':
|
|
1575
|
+
request.format = google.ima.dai.api.StreamRequest.StreamFormat.HLS;
|
|
1576
|
+
break;
|
|
1577
|
+
}
|
|
1564
1578
|
|
|
1565
1579
|
const uri = await adManager.requestServerSideStream(
|
|
1566
1580
|
request, /* backupUri= */ asset.manifestUri);
|