shaka-player 3.3.0 → 3.3.3
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/.csslintrc +11 -1
- package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
- package/.github/pull_request_template.md +6 -34
- package/.github/workflows/build-and-test.yaml +130 -0
- package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +56 -0
- package/.github/workflows/custom-actions/set-commit-status/action.yaml +41 -0
- package/.github/workflows/demo-version-index.yaml +29 -0
- package/.github/workflows/nightly-demo.yaml +42 -0
- package/.github/workflows/release-please.yaml +145 -0
- package/.github/workflows/safari-homedir-launcher.sh +18 -0
- package/.github/workflows/selenium-lab-tests.yaml +93 -0
- package/AUTHORS +2 -0
- package/CHANGELOG.md +1722 -1640
- package/CONTRIBUTING.md +2 -2
- package/CONTRIBUTORS +2 -0
- package/README.md +7 -7
- package/app-engine/README.md +9 -0
- package/app-engine/demo-version-index/README.md +14 -0
- package/app-engine/demo-version-index/app.yaml +2 -0
- package/app-engine/demo-version-index/main.py +162 -0
- package/app-engine/demo-version-index/requirements.txt +6 -0
- package/app-engine/demo-version-index/templates/index.html +114 -0
- package/app-engine/shaka-player-demo/README.md +18 -0
- package/app-engine/shaka-player-demo/app.yaml +61 -0
- package/app-engine/shaka-player-demo/main.py +95 -0
- package/app-engine/shaka-player-demo/posters/10yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/10yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/1yo.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/2yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/2yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/3yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/3yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/4yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/4yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/5yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/5yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/6yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/6yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/7yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/7yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/8yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/8yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/9yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/9yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/audioOnly.gif +0 -0
- package/app-engine/shaka-player-demo/posters/audioRickRoll.gif +0 -0
- package/app-engine/shaka-player-demo/posters/colorbars.gif +0 -0
- package/app-engine/shaka-player-demo/posters/fireworks.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/party-hat.png +0 -0
- package/app-engine/shaka-player-demo/posters/sources.txt +46 -0
- package/app-engine/shaka-player-demo/posters/standard.png +0 -0
- package/app-engine/shaka-player-demo/posters/trek.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/valentines.png +0 -0
- package/app-engine/shaka-player-demo/posters/zombie.jpg +0 -0
- package/app-engine/shaka-player-demo/posters.py +110 -0
- package/app-engine/shaka-player-demo/requirements.txt +5 -0
- package/app-engine/shaka-player-demo/time.txt +1 -0
- package/build/README.md +1 -1
- package/build/checkversion.py +1 -1
- package/build/conformance.textproto +196 -169
- package/build/docker/Dockerfile +20 -0
- package/build/docker/docker-compose.yml +10 -0
- package/build/gendeps.py +18 -15
- package/build/shaka-lab.yaml +163 -0
- package/build/shakaBuildHelpers.py +4 -29
- package/build/test.py +93 -28
- package/build/types/polyfill +1 -0
- package/build/wrapper.template.js +2 -2
- package/demo/TengwarTelcontar.woff2 +0 -0
- package/demo/asset_card.js +1 -2
- package/demo/cast_receiver/index.html +1 -1
- package/demo/cast_receiver/receiver_app.css +14 -14
- package/demo/common/assets.js +2 -0
- package/demo/config.js +0 -1
- package/demo/custom.js +0 -1
- package/demo/customWarning.txt +2 -2
- package/demo/demo.less +29 -18
- package/demo/demo_uncompiled.js +1 -13
- package/demo/index.html +1 -1
- package/demo/main.js +3 -3
- package/dist/controls.css +3 -3
- package/dist/controls.css.map +1 -1
- package/dist/demo.compiled.debug.js +191 -194
- package/dist/demo.compiled.debug.map +4 -4
- package/dist/demo.compiled.js +191 -194
- package/dist/demo.compiled.map +4 -4
- package/dist/demo.css +1 -1
- package/dist/demo.css.map +1 -1
- package/dist/deps.js +233 -226
- package/dist/locales.js +30 -30
- package/dist/receiver.compiled.debug.js +43 -45
- package/dist/receiver.compiled.debug.map +4 -4
- package/dist/receiver.compiled.js +43 -45
- package/dist/receiver.compiled.map +4 -4
- package/dist/shaka-player.compiled.d.ts +272 -238
- package/dist/shaka-player.compiled.debug.d.ts +272 -238
- package/dist/shaka-player.compiled.debug.externs.js +53 -16
- package/dist/shaka-player.compiled.debug.js +393 -394
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +53 -16
- package/dist/shaka-player.compiled.js +840 -843
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +318 -293
- package/dist/shaka-player.ui.debug.d.ts +318 -293
- package/dist/shaka-player.ui.debug.externs.js +55 -27
- package/dist/shaka-player.ui.debug.js +415 -417
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +55 -27
- package/dist/shaka-player.ui.js +997 -1000
- package/dist/shaka-player.ui.map +4 -4
- package/docs/design/REDESIGN.md +33 -33
- package/docs/design/bg-fetch.md +2 -2
- package/docs/design/codec_preferences.md +1 -1
- package/docs/design/dash-audio-channels.md +3 -3
- package/docs/design/dash-manifests.md +1 -1
- package/docs/design/gap-jumping.md +3 -3
- package/docs/design/preload.md +2 -2
- package/docs/tutorials/faq.md +8 -8
- package/docs/tutorials/index.json +1 -0
- package/docs/tutorials/plugins.md +3 -3
- package/docs/tutorials/selenium-grid-config.md +122 -0
- package/docs/tutorials/welcome.md +10 -2
- package/externs/cmcd.js +186 -0
- package/externs/shaka/player.js +8 -0
- package/externs/shaka/text.js +10 -0
- package/karma.conf.js +156 -45
- package/lib/abr/simple_abr_manager.js +12 -6
- package/lib/ads/ad_manager.js +1 -0
- package/lib/cast/cast_proxy.js +6 -4
- package/lib/cast/cast_receiver.js +3 -0
- package/lib/cea/cea608_data_channel.js +2 -2
- package/lib/cea/cea708_service.js +5 -4
- package/lib/cea/mp4_cea_parser.js +11 -5
- package/lib/cea/sei_processor.js +6 -3
- package/lib/dash/dash_parser.js +40 -30
- package/lib/dash/mpd_utils.js +4 -5
- package/lib/dash/segment_list.js +1 -2
- package/lib/dash/segment_template.js +3 -3
- package/lib/hls/hls_parser.js +41 -9
- package/lib/hls/manifest_text_parser.js +4 -3
- package/lib/media/adaptation_set.js +1 -2
- package/lib/media/content_workarounds.js +2 -2
- package/lib/media/drm_engine.js +3 -2
- package/lib/media/media_source_engine.js +3 -2
- package/lib/media/mp4_segment_index_parser.js +1 -4
- package/lib/media/playhead.js +2 -2
- package/lib/media/presentation_timeline.js +18 -8
- package/lib/media/quality_observer.js +17 -34
- package/lib/media/region_observer.js +39 -33
- package/lib/media/region_timeline.js +17 -19
- package/lib/media/segment_index.js +2 -1
- package/lib/media/segment_reference.js +19 -1
- package/lib/media/streaming_engine.js +12 -9
- package/lib/media/time_ranges_utils.js +1 -3
- package/lib/media/video_wrapper.js +1 -1
- package/lib/net/networking_engine.js +5 -1
- package/lib/offline/storage.js +12 -13
- package/lib/player.js +87 -41
- package/lib/polyfill/all.js +2 -3
- package/lib/polyfill/encryption_scheme.js +1 -1
- package/lib/polyfill/media_capabilities.js +32 -17
- package/lib/polyfill/mediasource.js +1 -1
- package/lib/polyfill/symbol.js +46 -0
- package/lib/text/cue.js +7 -1
- package/lib/text/simple_text_displayer.js +2 -1
- package/lib/text/ttml_text_parser.js +92 -63
- package/lib/text/ui_text_displayer.js +18 -12
- package/lib/util/buffer_utils.js +1 -3
- package/lib/util/cmcd_manager.js +47 -201
- package/lib/util/ebml_parser.js +3 -3
- package/lib/util/error.js +1 -1
- package/lib/util/fake_event_target.js +21 -1
- package/lib/util/iterables.js +0 -46
- package/lib/util/mp4_box_parsers.js +1 -4
- package/lib/util/mp4_parser.js +5 -7
- package/lib/util/periods.js +10 -11
- package/lib/util/platform.js +3 -3
- package/lib/util/pssh.js +1 -4
- package/lib/util/stream_utils.js +88 -11
- package/lib/util/string_utils.js +3 -5
- package/lib/util/uint8array_utils.js +3 -5
- package/lib/util/xml_utils.js +34 -7
- package/package.json +62 -40
- package/roadmap.md +17 -17
- package/shaka-player.uncompiled.js +1 -0
- package/test/abr/simple_abr_manager_unit.js +3 -8
- package/test/ads/ad_manager_unit.js +0 -6
- package/test/cast/cast_proxy_unit.js +0 -8
- package/test/cast/cast_receiver_integration.js +1 -18
- package/test/cast/cast_receiver_unit.js +1 -9
- package/test/cast/cast_sender_unit.js +0 -6
- package/test/cast/cast_utils_unit.js +0 -13
- package/test/cea/cea608_memory_unit.js +0 -5
- package/test/cea/cea708_service_unit.js +0 -7
- package/test/cea/cea708_window_unit.js +0 -5
- package/test/cea/cea_decoder_unit.js +0 -6
- package/test/cea/dtvcc_packet_builder_unit.js +0 -3
- package/test/cea/dtvcc_packet_unit.js +0 -5
- package/test/cea/mp4_cea_parser_unit.js +0 -4
- package/test/dash/dash_parser_content_protection_unit.js +1 -10
- package/test/dash/dash_parser_live_unit.js +45 -15
- package/test/dash/dash_parser_manifest_unit.js +4 -17
- package/test/dash/dash_parser_segment_base_unit.js +1 -8
- package/test/dash/dash_parser_segment_list_unit.js +1 -7
- package/test/dash/dash_parser_segment_template_unit.js +0 -9
- package/test/dash/mpd_utils_unit.js +3 -11
- package/test/demo/demo_unit.js +0 -5
- package/test/deprecate/enforcer_unit.js +0 -4
- package/test/deprecate/version_unit.js +0 -2
- package/test/hls/hls_live_unit.js +2 -14
- package/test/hls/hls_parser_unit.js +76 -15
- package/test/hls/manifest_text_parser_unit.js +0 -10
- package/test/media/adaptation_set_criteria_unit.js +3 -7
- package/test/media/adaptation_set_unit.js +0 -2
- package/test/media/buffering_observer_unit.js +1 -4
- package/test/media/closed_caption_parser_unit.js +0 -3
- package/test/media/drm_engine_integration.js +2 -15
- package/test/media/drm_engine_unit.js +7 -27
- package/test/media/manifest_parser_unit.js +0 -4
- package/test/media/media_source_engine_integration.js +0 -7
- package/test/media/media_source_engine_unit.js +1 -14
- package/test/media/mp4_segment_index_parser_unit.js +0 -4
- package/test/media/play_rate_controller_unit.js +0 -4
- package/test/media/playhead_unit.js +8 -16
- package/test/media/presentation_timeline_unit.js +4 -7
- package/test/media/quality_observer_unit.js +4 -5
- package/test/media/region_observer_unit.js +40 -10
- package/test/media/region_timeline_unit.js +40 -25
- package/test/media/segment_index_unit.js +0 -6
- package/test/media/segment_reference_unit.js +0 -3
- package/test/media/stall_detector_unit.js +0 -5
- package/test/media/streaming_engine_integration.js +11 -37
- package/test/media/streaming_engine_unit.js +155 -34
- package/test/media/time_ranges_utils_unit.js +0 -2
- package/test/media/transmuxer_integration.js +0 -6
- package/test/media/webm_segment_index_parser_unit.js +0 -4
- package/test/net/data_uri_plugin_unit.js +0 -7
- package/test/net/http_plugin_unit.js +0 -9
- package/test/net/networking_engine_unit.js +0 -11
- package/test/offline/download_progress_estimator_unit.js +0 -2
- package/test/offline/indexeddb_storage_unit.js +0 -6
- package/test/offline/manifest_convert_unit.js +0 -8
- package/test/offline/offline_integration.js +1 -10
- package/test/offline/offline_manifest_parser_unit.js +0 -6
- package/test/offline/offline_scheme_unit.js +0 -8
- package/test/offline/offline_uri_unit.js +0 -2
- package/test/offline/storage_compatibility_unit.js +1 -14
- package/test/offline/storage_integration.js +1 -27
- package/test/player_external.js +2 -10
- package/test/player_integration.js +63 -36
- package/test/player_load_graph_integration.js +1 -6
- package/test/player_src_equals_external.js +3 -9
- package/test/player_src_equals_integration.js +41 -15
- package/test/player_unit.js +71 -46
- package/test/routing/walker_unit.js +0 -8
- package/test/test/assets/chapters.vtt +2 -2
- package/test/test/assets/chapters2.vtt +10 -0
- package/test/test/assets/large_file.mpd +1 -1
- package/test/test/boot.js +75 -22
- package/test/test/externs/jasmine.js +2 -2
- package/test/test/externs/karma.js +4 -0
- package/test/test/namespace.js +10 -0
- package/test/test/util/canned_idb.js +0 -8
- package/test/test/util/cea_utils.js +0 -6
- package/test/test/util/dash_parser_util.js +0 -13
- package/test/test/util/fake_ad.js +0 -3
- package/test/test/util/fake_ad_manager.js +0 -9
- package/test/test/util/fake_demo_main.js +0 -5
- package/test/test/util/fake_drm_engine.js +0 -6
- package/test/test/util/fake_media_source_engine.js +0 -7
- package/test/test/util/fake_networking_engine.js +0 -5
- package/test/test/util/fake_text_displayer.js +0 -5
- package/test/test/util/indexeddb_utils.js +1 -10
- package/test/test/util/jasmine_fetch.js +0 -1
- package/test/test/util/loader.js +0 -18
- package/test/test/util/manifest_generator.js +9 -14
- package/test/test/util/manifest_parser_util.js +0 -6
- package/test/test/util/offline_utils.js +0 -5
- package/test/test/util/simple_fakes.js +9 -26
- package/test/test/util/stream_generator.js +0 -14
- package/test/test/util/streaming_engine_util.js +0 -15
- package/test/test/util/test_scheme.js +1 -19
- package/test/test/util/ttml_utils.js +79 -0
- package/test/test/util/ui_utils.js +0 -9
- package/test/test/util/util.js +15 -26
- package/test/test/util/waiter.js +84 -43
- package/test/text/cue_integration.js +0 -4
- package/test/text/lrc_text_parser_unit.js +0 -4
- package/test/text/mp4_ttml_parser_unit.js +10 -23
- package/test/text/mp4_vtt_parser_unit.js +1 -7
- package/test/text/sbv_text_parser_unit.js +0 -4
- package/test/text/simple_text_displayer_unit.js +1 -8
- package/test/text/srt_text_parser_unit.js +0 -4
- package/test/text/ssa_text_parser_unit.js +0 -5
- package/test/text/text_engine_unit.js +2 -7
- package/test/text/text_track_integration.js +0 -2
- package/test/text/ttml_text_parser_unit.js +499 -239
- package/test/text/ui_text_displayer_unit.js +44 -41
- package/test/text/vtt_text_parser_unit.js +0 -9
- package/test/text/web_vtt_generator_unit.js +0 -3
- package/test/ui/ad_ui_unit.js +0 -11
- package/test/ui/localization_unit.js +0 -3
- package/test/ui/text_displayer_layout_unit.js +9 -19
- package/test/ui/ui_customization_unit.js +0 -6
- package/test/ui/ui_integration.js +0 -16
- package/test/ui/ui_unit.js +1 -17
- package/test/util/abortable_operation_unit.js +4 -9
- package/test/util/array_utils_unit.js +0 -2
- package/test/util/buffer_utils_unit.js +0 -2
- package/test/util/cmcd_manager_unit.js +29 -18
- package/test/util/data_view_reader_unit.js +0 -4
- package/test/util/ebml_parser_unit.js +0 -4
- package/test/util/event_manager_unit.js +0 -3
- package/test/util/fake_event_target_unit.js +0 -5
- package/test/util/functional_unit.js +1 -1
- package/test/util/iterables_unit.js +0 -64
- package/test/util/language_utils_unit.js +0 -3
- package/test/util/manifest_parser_utils_unit.js +0 -2
- package/test/util/mp4_box_parsers_unit.js +0 -5
- package/test/util/mp4_parser_unit.js +0 -4
- package/test/util/multi_map_unit.js +0 -3
- package/test/util/object_utils_unit.js +0 -2
- package/test/util/periods_unit.js +14 -7
- package/test/util/pssh_unit.js +0 -5
- package/test/util/state_history_unit.js +0 -2
- package/test/util/stream_utils_unit.js +39 -38
- package/test/util/string_utils_unit.js +0 -6
- package/test/util/text_parser_unit.js +0 -2
- package/test/util/xml_utils_unit.js +0 -4
- package/third_party/closure-uri/uri.js +21 -0
- package/ui/controls.js +3 -0
- package/ui/less/ad_controls.less +4 -4
- package/ui/less/buttons.less +5 -5
- package/ui/less/containers.less +9 -11
- package/ui/less/overflow_menu.less +4 -4
- package/ui/less/range_elements.less +5 -0
- package/ui/less/tooltip.less +1 -1
- package/ui/locales/sjn-translations.yaml +257 -0
- package/ui/locales/sjn.json +42 -0
- package/ui/localization.js +12 -36
- package/ui/text_selection.js +1 -0
- package/externs/media_capabilities.js +0 -16
- package/externs/svgelement.js +0 -18
- package/externs/webcrypto.js +0 -18
package/externs/shaka/player.js
CHANGED
|
@@ -1207,6 +1207,8 @@ shaka.extern.LanguageRole;
|
|
|
1207
1207
|
|
|
1208
1208
|
/**
|
|
1209
1209
|
* @typedef {{
|
|
1210
|
+
* imageHeight: number,
|
|
1211
|
+
* imageWidth: number,
|
|
1210
1212
|
* height: number,
|
|
1211
1213
|
* positionX: number,
|
|
1212
1214
|
* positionY: number,
|
|
@@ -1216,6 +1218,12 @@ shaka.extern.LanguageRole;
|
|
|
1216
1218
|
* width: number
|
|
1217
1219
|
* }}
|
|
1218
1220
|
*
|
|
1221
|
+
* @property {number} imageHeight
|
|
1222
|
+
* The image height in px. The image height could be different to height if
|
|
1223
|
+
* the layout is different to 1x1.
|
|
1224
|
+
* @property {number} imageWidth
|
|
1225
|
+
* The image width in px. The image width could be different to width if
|
|
1226
|
+
* the layout is different to 1x1.
|
|
1219
1227
|
* @property {number} height
|
|
1220
1228
|
* The thumbnail height in px.
|
|
1221
1229
|
* @property {number} positionX
|
package/externs/shaka/text.js
CHANGED
|
@@ -363,6 +363,16 @@ shaka.extern.Cue = class {
|
|
|
363
363
|
*/
|
|
364
364
|
this.nestedCues;
|
|
365
365
|
|
|
366
|
+
/**
|
|
367
|
+
* If true, this represents a container element that is "above" the main
|
|
368
|
+
* cues. For example, the <body> and <div> tags that contain the <p> tags
|
|
369
|
+
* in a TTML file. This controls the flow of the final cues; any nested cues
|
|
370
|
+
* within an "isContainer" cue will be laid out as separate lines.
|
|
371
|
+
* @type {boolean}
|
|
372
|
+
* @exportDoc
|
|
373
|
+
*/
|
|
374
|
+
this.isContainer;
|
|
375
|
+
|
|
366
376
|
/**
|
|
367
377
|
* Whether or not the cue only acts as a line break between two nested cues.
|
|
368
378
|
* Should only appear in nested cues.
|
package/karma.conf.js
CHANGED
|
@@ -9,10 +9,13 @@
|
|
|
9
9
|
|
|
10
10
|
const Jimp = require('jimp');
|
|
11
11
|
const fs = require('fs');
|
|
12
|
+
const glob = require('glob');
|
|
12
13
|
const path = require('path');
|
|
13
14
|
const rimraf = require('rimraf');
|
|
15
|
+
const {ssim} = require('ssim.js');
|
|
14
16
|
const util = require('karma/common/util');
|
|
15
17
|
const which = require('which');
|
|
18
|
+
const yaml = require('js-yaml');
|
|
16
19
|
|
|
17
20
|
/**
|
|
18
21
|
* @param {Object} config
|
|
@@ -42,6 +45,58 @@ module.exports = (config) => {
|
|
|
42
45
|
const settings =
|
|
43
46
|
settingsIndex >= 0 ? JSON.parse(args[settingsIndex + 1]) : {};
|
|
44
47
|
|
|
48
|
+
if (settings.grid_config) {
|
|
49
|
+
const gridBrowserMetadata =
|
|
50
|
+
yaml.load(fs.readFileSync(settings.grid_config, 'utf8'));
|
|
51
|
+
const customLaunchers = {};
|
|
52
|
+
const [gridHostname, gridPort] = settings.grid_address.split(':');
|
|
53
|
+
console.log(`Using Selenium grid at ${gridHostname}:${gridPort}`);
|
|
54
|
+
|
|
55
|
+
// By default, run on all grid browsers instead of the platform-specific
|
|
56
|
+
// default. This does not disable local browsers, though. Users can still
|
|
57
|
+
// specify a mix of grid and local browsers explicitly.
|
|
58
|
+
settings.default_browsers = [];
|
|
59
|
+
|
|
60
|
+
for (const name in gridBrowserMetadata) {
|
|
61
|
+
if (name == 'vars') {
|
|
62
|
+
// Skip variable defs in the YAML file
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const metadata = gridBrowserMetadata[name];
|
|
67
|
+
|
|
68
|
+
const launcher = {};
|
|
69
|
+
customLaunchers[name] = launcher;
|
|
70
|
+
|
|
71
|
+
// Disabled-by-default browsers are still defined, but not put in the
|
|
72
|
+
// default list. A user can ask for one explicitly. This allows us to
|
|
73
|
+
// disable a browser that is down for some reason in the lab, but still
|
|
74
|
+
// ask for it manually if we want to test it before re-enabling it for
|
|
75
|
+
// everyone.
|
|
76
|
+
if (!metadata.disabled) {
|
|
77
|
+
settings.default_browsers.push(name);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Add standard WebDriver configs.
|
|
81
|
+
Object.assign(launcher, {
|
|
82
|
+
base: 'WebDriver',
|
|
83
|
+
config: {hostname: gridHostname, port: gridPort},
|
|
84
|
+
pseudoActivityInterval: 20000,
|
|
85
|
+
browserName: metadata.browser,
|
|
86
|
+
platform: metadata.os,
|
|
87
|
+
version: metadata.version,
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
if (metadata.extra_config) {
|
|
91
|
+
Object.assign(launcher, metadata.extra_config);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
config.set({
|
|
96
|
+
customLaunchers: customLaunchers,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
|
|
45
100
|
if (settings.browsers && settings.browsers.length == 1 &&
|
|
46
101
|
settings.browsers[0] == 'help') {
|
|
47
102
|
console.log('Available browsers:');
|
|
@@ -52,6 +107,24 @@ module.exports = (config) => {
|
|
|
52
107
|
process.exit(1);
|
|
53
108
|
}
|
|
54
109
|
|
|
110
|
+
// Resolve the set of browsers we will use.
|
|
111
|
+
const browserSet = new Set(settings.browsers && settings.browsers.length ?
|
|
112
|
+
settings.browsers : settings.default_browsers);
|
|
113
|
+
if (settings.exclude_browsers) {
|
|
114
|
+
for (const excluded of settings.exclude_browsers) {
|
|
115
|
+
browserSet.delete(excluded);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
let browsers = Array.from(browserSet).sort();
|
|
120
|
+
if (settings.no_browsers) {
|
|
121
|
+
console.warn(
|
|
122
|
+
'--no-browsers: In this mode, you must connect browsers to Karma.');
|
|
123
|
+
browsers = null;
|
|
124
|
+
} else {
|
|
125
|
+
console.warn('Running tests on: ' + browsers.join(', '));
|
|
126
|
+
}
|
|
127
|
+
|
|
55
128
|
config.set({
|
|
56
129
|
// base path that will be used to resolve all patterns (eg. files, exclude)
|
|
57
130
|
basePath: '.',
|
|
@@ -86,7 +159,7 @@ module.exports = (config) => {
|
|
|
86
159
|
// Promise polyfill, required since we test uncompiled code on IE11
|
|
87
160
|
'node_modules/es6-promise-polyfill/promise.js',
|
|
88
161
|
// Babel polyfill, required for async/await
|
|
89
|
-
'node_modules/
|
|
162
|
+
'node_modules/@babel/polyfill/dist/polyfill.js',
|
|
90
163
|
// TextDecoder polyfill, required for TextDecoder/TextEncoder on IE and
|
|
91
164
|
// legacy Edge
|
|
92
165
|
// eslint-disable-next-line max-len
|
|
@@ -106,46 +179,46 @@ module.exports = (config) => {
|
|
|
106
179
|
'dist/deps.js',
|
|
107
180
|
'shaka-player.uncompiled.js',
|
|
108
181
|
|
|
182
|
+
// the demo's config tab will register with shakaDemoMain, and will be
|
|
183
|
+
// tested in test/demo/demo_unit.js
|
|
184
|
+
'demo/config.js',
|
|
185
|
+
|
|
109
186
|
// cajon module (an AMD variant of requirejs) next
|
|
110
187
|
'node_modules/cajon/cajon.js',
|
|
111
188
|
|
|
112
|
-
//
|
|
113
|
-
'test/test/
|
|
189
|
+
// define the test namespace next (shaka.test)
|
|
190
|
+
'test/test/namespace.js',
|
|
114
191
|
|
|
115
|
-
// test
|
|
192
|
+
// test utilities next, which fill in that namespace
|
|
116
193
|
'test/test/util/*.js',
|
|
117
194
|
|
|
118
|
-
//
|
|
119
|
-
'
|
|
120
|
-
'demo/common/asset.js',
|
|
121
|
-
'demo/common/assets.js',
|
|
195
|
+
// bootstrapping for the test suite last; this will load the actual tests
|
|
196
|
+
'test/test/boot.js',
|
|
122
197
|
|
|
123
198
|
// if --test-custom-asset *is not* present, we will add unit tests.
|
|
124
199
|
// if --quick *is not* present, we will add integration tests.
|
|
125
200
|
// if --external *is* present, we will add external asset tests.
|
|
126
201
|
|
|
127
|
-
//
|
|
128
|
-
|
|
129
|
-
pattern: 'demo/!(main|load|demo_uncompiled|service_worker).js',
|
|
130
|
-
included: true,
|
|
131
|
-
},
|
|
132
|
-
|
|
133
|
-
// source files - these are only watched and served
|
|
202
|
+
// source files - these are only watched and served.
|
|
203
|
+
// anything not listed here can't be dynamically loaded by other scripts.
|
|
134
204
|
{pattern: 'lib/**/*.js', included: false},
|
|
135
205
|
{pattern: 'ui/**/*.js', included: false},
|
|
136
206
|
{pattern: 'ui/**/*.less', included: false},
|
|
137
207
|
{pattern: 'third_party/**/*.js', included: false},
|
|
138
|
-
{
|
|
139
|
-
pattern: 'node_modules/google-closure-library/closure/goog/**/*.js',
|
|
140
|
-
included: false,
|
|
141
|
-
},
|
|
208
|
+
{pattern: 'test/**/*.js', included: false},
|
|
142
209
|
{pattern: 'test/test/assets/*', included: false},
|
|
143
210
|
{pattern: 'test/test/assets/3675/*', included: false},
|
|
144
211
|
{pattern: 'dist/shaka-player.ui.js', included: false},
|
|
145
212
|
{pattern: 'dist/locales.js', included: false},
|
|
213
|
+
{pattern: 'demo/**/*.js', included: false},
|
|
146
214
|
{pattern: 'demo/locales/en.json', included: false},
|
|
147
215
|
{pattern: 'demo/locales/source.json', included: false},
|
|
148
|
-
{pattern: 'node_modules
|
|
216
|
+
{pattern: 'node_modules/sprintf-js/src/sprintf.js', included: false},
|
|
217
|
+
{pattern: 'node_modules/less/dist/less.js', included: false},
|
|
218
|
+
{
|
|
219
|
+
pattern: 'node_modules/fontfaceonload/dist/fontfaceonload.js',
|
|
220
|
+
included: false,
|
|
221
|
+
},
|
|
149
222
|
],
|
|
150
223
|
|
|
151
224
|
// NOTE: Do not use proxies at all! They cannot be used with the --hostname
|
|
@@ -211,7 +284,7 @@ module.exports = (config) => {
|
|
|
211
284
|
|
|
212
285
|
// Set which browsers to run on. If this is null, then Karma will wait for
|
|
213
286
|
// an incoming connection.
|
|
214
|
-
browsers
|
|
287
|
+
browsers,
|
|
215
288
|
|
|
216
289
|
// Enable / disable colors in the output (reporters and logs). Defaults
|
|
217
290
|
// to true.
|
|
@@ -242,6 +315,7 @@ module.exports = (config) => {
|
|
|
242
315
|
|
|
243
316
|
specReporter: {
|
|
244
317
|
suppressSkipped: true,
|
|
318
|
+
showBrowser: true,
|
|
245
319
|
},
|
|
246
320
|
});
|
|
247
321
|
|
|
@@ -259,7 +333,7 @@ module.exports = (config) => {
|
|
|
259
333
|
|
|
260
334
|
babelPreprocessor: {
|
|
261
335
|
options: {
|
|
262
|
-
presets: ['env'],
|
|
336
|
+
presets: ['@babel/preset-env'],
|
|
263
337
|
// Add source maps so that backtraces refer to the original code.
|
|
264
338
|
// Babel will output inline source maps, and the 'sourcemap'
|
|
265
339
|
// preprocessor will read them and feed them to Karma. Karma will
|
|
@@ -282,26 +356,30 @@ module.exports = (config) => {
|
|
|
282
356
|
});
|
|
283
357
|
}
|
|
284
358
|
|
|
359
|
+
const clientArgs = config.client.args[0];
|
|
360
|
+
clientArgs.testFiles = [];
|
|
361
|
+
|
|
285
362
|
if (settings.test_custom_asset) {
|
|
286
363
|
// If testing custom assets, we don't serve other unit or integration tests.
|
|
287
364
|
// External asset tests are the basis for custom asset testing, so this file
|
|
288
365
|
// is automatically included.
|
|
289
|
-
|
|
366
|
+
clientArgs.testFiles.push('test/player_external.js');
|
|
290
367
|
} else {
|
|
291
368
|
// In a normal test run, we serve unit tests.
|
|
292
|
-
|
|
369
|
+
clientArgs.testFiles.push('test/**/*_unit.js');
|
|
293
370
|
|
|
294
371
|
if (!settings.quick) {
|
|
295
372
|
// If --quick is present, we don't serve integration tests.
|
|
296
|
-
|
|
373
|
+
clientArgs.testFiles.push('test/**/*_integration.js');
|
|
297
374
|
}
|
|
298
375
|
if (settings.external) {
|
|
299
376
|
// If --external is present, we serve external asset tests.
|
|
300
|
-
|
|
377
|
+
clientArgs.testFiles.push('test/**/*_external.js');
|
|
301
378
|
}
|
|
302
379
|
}
|
|
303
|
-
|
|
304
|
-
//
|
|
380
|
+
|
|
381
|
+
// These are the test files that will be dynamically loaded by boot.js.
|
|
382
|
+
clientArgs.testFiles = resolveGlobs(clientArgs.testFiles);
|
|
305
383
|
|
|
306
384
|
const reporters = [];
|
|
307
385
|
|
|
@@ -336,20 +414,54 @@ module.exports = (config) => {
|
|
|
336
414
|
|
|
337
415
|
config.set({reporters: reporters});
|
|
338
416
|
|
|
417
|
+
if (reporters.includes('spec') && settings.spec_hide_passed) {
|
|
418
|
+
config.set({specReporter: {suppressPassed: true}});
|
|
419
|
+
}
|
|
420
|
+
|
|
339
421
|
if (settings.random) {
|
|
340
422
|
// If --seed was specified use that value, else generate a seed so that the
|
|
341
423
|
// exact order can be reproduced if it catches an issue.
|
|
342
424
|
const seed = settings.seed == null ? new Date().getTime() : settings.seed;
|
|
343
425
|
|
|
344
426
|
// Run tests in a random order.
|
|
345
|
-
const clientArgs = config.client.args[0];
|
|
346
427
|
clientArgs.random = true;
|
|
347
428
|
clientArgs.seed = seed;
|
|
348
429
|
|
|
349
430
|
console.log('Using a random test order (--random) with --seed=' + seed);
|
|
350
431
|
}
|
|
432
|
+
|
|
433
|
+
if (settings.tls_key && settings.tls_cert) {
|
|
434
|
+
config.set({
|
|
435
|
+
protocol: 'https',
|
|
436
|
+
httpsServerOptions: {
|
|
437
|
+
key: fs.readFileSync(settings.tls_key),
|
|
438
|
+
cert: fs.readFileSync(settings.tls_cert),
|
|
439
|
+
},
|
|
440
|
+
});
|
|
441
|
+
}
|
|
351
442
|
};
|
|
352
443
|
|
|
444
|
+
/**
|
|
445
|
+
* Resolves a list of paths using globs into a list of explicit paths.
|
|
446
|
+
* Paths are all relative to the source directory.
|
|
447
|
+
*
|
|
448
|
+
* @param {!Array.<string>} list
|
|
449
|
+
* @return {!Array.<string>}
|
|
450
|
+
*/
|
|
451
|
+
function resolveGlobs(list) {
|
|
452
|
+
const options = {
|
|
453
|
+
cwd: __dirname,
|
|
454
|
+
};
|
|
455
|
+
|
|
456
|
+
const resolved = [];
|
|
457
|
+
for (const path of list) {
|
|
458
|
+
for (const resolvedPath of glob.sync(path, options)) {
|
|
459
|
+
resolved.push(resolvedPath);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
return resolved;
|
|
463
|
+
}
|
|
464
|
+
|
|
353
465
|
/**
|
|
354
466
|
* Determines which launchers and customLaunchers can be used and returns an
|
|
355
467
|
* array of strings.
|
|
@@ -416,7 +528,7 @@ function allUsableBrowserLaunchers(config) {
|
|
|
416
528
|
browsers.push(...Object.keys(config.customLaunchers));
|
|
417
529
|
}
|
|
418
530
|
|
|
419
|
-
return browsers;
|
|
531
|
+
return browsers.sort();
|
|
420
532
|
}
|
|
421
533
|
|
|
422
534
|
/**
|
|
@@ -518,8 +630,7 @@ function WebDriverScreenshotMiddlewareFactory(launcher) {
|
|
|
518
630
|
*
|
|
519
631
|
* @param {karma.Launcher.Browser} browser
|
|
520
632
|
* @param {!Object.<string, string>} params
|
|
521
|
-
* @return {!Promise.<number>}
|
|
522
|
-
* and new screenshots, after cropping and scaling.
|
|
633
|
+
* @return {!Promise.<number>} A similarity score between 0 and 1.
|
|
523
634
|
*/
|
|
524
635
|
async function diffScreenshot(browser, params) {
|
|
525
636
|
const webDriverClient = getWebDriverClient(browser);
|
|
@@ -604,22 +715,22 @@ function WebDriverScreenshotMiddlewareFactory(launcher) {
|
|
|
604
715
|
// Compare the new screenshot to the old one and produce a diff image.
|
|
605
716
|
// Initially, the image data will be raw pixels, 4 bytes per pixel.
|
|
606
717
|
// The threshold parameter affects the sensitivity of individual pixel
|
|
607
|
-
// comparisons.
|
|
608
|
-
//
|
|
609
|
-
//
|
|
610
|
-
|
|
611
|
-
const diff = Jimp.diff(oldScreenshot, newScreenshot,
|
|
718
|
+
// comparisons. This diff is only used for visual review, not for
|
|
719
|
+
// automated similarity checks, so the threshold setting is not so critical
|
|
720
|
+
// as it used to be.
|
|
721
|
+
const threshold = 0.10;
|
|
722
|
+
const diff = Jimp.diff(oldScreenshot, newScreenshot, threshold);
|
|
612
723
|
|
|
613
724
|
// Write the diff to disk. This is used to review when there are changes.
|
|
725
|
+
const fullSizeDiff =
|
|
726
|
+
diff.image.clone().resize(width, height, Jimp.RESIZE_BICUBIC);
|
|
614
727
|
fs.writeFileSync(
|
|
615
|
-
diffScreenshotPath, await
|
|
616
|
-
|
|
617
|
-
//
|
|
618
|
-
//
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
diff.percent * diff.image.bitmap.width * diff.image.bitmap.height;
|
|
622
|
-
return pixelsChanged;
|
|
728
|
+
diffScreenshotPath, await fullSizeDiff.getBufferAsync('image/png'));
|
|
729
|
+
|
|
730
|
+
// Compare with a structural similarity algorithm. This produces a
|
|
731
|
+
// similarity score that we will use to pass or fail the test.
|
|
732
|
+
const ssimResult = ssim(oldScreenshot.bitmap, newScreenshot.bitmap);
|
|
733
|
+
return ssimResult.mssim; // A score between 0 and 1.
|
|
623
734
|
}
|
|
624
735
|
|
|
625
736
|
/**
|
|
@@ -9,7 +9,6 @@ goog.provide('shaka.abr.SimpleAbrManager');
|
|
|
9
9
|
goog.require('goog.asserts');
|
|
10
10
|
goog.require('shaka.abr.EwmaBandwidthEstimator');
|
|
11
11
|
goog.require('shaka.log');
|
|
12
|
-
goog.require('shaka.util.Iterables');
|
|
13
12
|
goog.require('shaka.util.StreamUtils');
|
|
14
13
|
|
|
15
14
|
|
|
@@ -145,15 +144,21 @@ shaka.abr.SimpleAbrManager = class {
|
|
|
145
144
|
// Start by assuming that we will use the first Stream.
|
|
146
145
|
let chosen = sortedVariants[0] || null;
|
|
147
146
|
|
|
148
|
-
|
|
149
|
-
|
|
147
|
+
for (let i = 0; i < sortedVariants.length; i++) {
|
|
148
|
+
const item = sortedVariants[i];
|
|
150
149
|
const playbackRate =
|
|
151
150
|
!isNaN(this.playbackRate_) ? Math.abs(this.playbackRate_) : 1;
|
|
152
151
|
const itemBandwidth = playbackRate * item.bandwidth;
|
|
153
152
|
const minBandwidth =
|
|
154
153
|
itemBandwidth / this.config_.bandwidthDowngradeTarget;
|
|
155
|
-
|
|
156
|
-
|
|
154
|
+
let next = {bandwidth: Infinity};
|
|
155
|
+
for (let j = i + 1; j < sortedVariants.length; j++) {
|
|
156
|
+
if (item.bandwidth != sortedVariants[j].bandwidth) {
|
|
157
|
+
next = sortedVariants[j];
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const nextBandwidth = playbackRate * next.bandwidth;
|
|
157
162
|
const maxBandwidth = nextBandwidth / this.config_.bandwidthUpgradeTarget;
|
|
158
163
|
shaka.log.v2('Bandwidth ranges:',
|
|
159
164
|
(itemBandwidth / 1e6).toFixed(3),
|
|
@@ -161,7 +166,8 @@ shaka.abr.SimpleAbrManager = class {
|
|
|
161
166
|
(maxBandwidth / 1e6).toFixed(3));
|
|
162
167
|
|
|
163
168
|
if (currentBandwidth >= minBandwidth &&
|
|
164
|
-
currentBandwidth <= maxBandwidth
|
|
169
|
+
currentBandwidth <= maxBandwidth &&
|
|
170
|
+
chosen.bandwidth != item.bandwidth) {
|
|
165
171
|
chosen = item;
|
|
166
172
|
}
|
|
167
173
|
}
|
package/lib/ads/ad_manager.js
CHANGED
package/lib/cast/cast_proxy.js
CHANGED
|
@@ -120,6 +120,9 @@ shaka.cast.CastProxy = class extends shaka.util.FakeEventTarget {
|
|
|
120
120
|
this.videoProxy_ = null;
|
|
121
121
|
this.playerProxy_ = null;
|
|
122
122
|
|
|
123
|
+
// FakeEventTarget implements IReleasable
|
|
124
|
+
super.release();
|
|
125
|
+
|
|
123
126
|
return Promise.all(waitFor);
|
|
124
127
|
}
|
|
125
128
|
|
|
@@ -311,10 +314,9 @@ shaka.cast.CastProxy = class extends shaka.util.FakeEventTarget {
|
|
|
311
314
|
* @private
|
|
312
315
|
*/
|
|
313
316
|
mapCompiledToUncompiledPlayerMethodNames_() {
|
|
314
|
-
// In compiled mode, UI tries to access player methods
|
|
315
|
-
//
|
|
316
|
-
//
|
|
317
|
-
// See https://github.com/google/shaka-player/issues/2130 for details.
|
|
317
|
+
// In compiled mode, UI tries to access player methods by their internal
|
|
318
|
+
// renamed names, but the proxy object doesn't know about those. See
|
|
319
|
+
// https://github.com/shaka-project/shaka-player/issues/2130 for details.
|
|
318
320
|
const methodsToNames = new Map();
|
|
319
321
|
this.iterateOverPlayerMethods_((name, method) => {
|
|
320
322
|
if (methodsToNames.has(method)) {
|
|
@@ -238,6 +238,9 @@ shaka.cast.CastReceiver = class extends shaka.util.FakeEventTarget {
|
|
|
238
238
|
this.shakaBus_ = null;
|
|
239
239
|
this.genericBus_ = null;
|
|
240
240
|
|
|
241
|
+
// FakeEventTarget implements IReleasable
|
|
242
|
+
super.release();
|
|
243
|
+
|
|
241
244
|
await Promise.all(waitFor);
|
|
242
245
|
|
|
243
246
|
const manager = cast.receiver.CastReceiverManager.getInstance();
|
|
@@ -140,8 +140,8 @@ shaka.cea.Cea608DataChannel = class {
|
|
|
140
140
|
const buf = this.curbuf_;
|
|
141
141
|
|
|
142
142
|
// Move entire scroll window to a new base in rollup mode.
|
|
143
|
-
if (this.type_ === shaka.cea.Cea608DataChannel.CaptionType.ROLLUP
|
|
144
|
-
|
|
143
|
+
if (this.type_ === shaka.cea.Cea608DataChannel.CaptionType.ROLLUP &&
|
|
144
|
+
row !== buf.getRow()) {
|
|
145
145
|
const oldTopRow = 1 + buf.getRow() - buf.getScrollSize();
|
|
146
146
|
const newTopRow = 1 + row - buf.getScrollSize();
|
|
147
147
|
|
|
@@ -9,7 +9,6 @@ goog.provide('shaka.cea.Cea708Service');
|
|
|
9
9
|
goog.require('shaka.cea.Cea708Window');
|
|
10
10
|
goog.require('shaka.cea.DtvccPacket');
|
|
11
11
|
goog.require('shaka.cea.ICaptionDecoder');
|
|
12
|
-
goog.require('shaka.util.Error');
|
|
13
12
|
|
|
14
13
|
|
|
15
14
|
/**
|
|
@@ -301,17 +300,19 @@ shaka.cea.Cea708Service = class {
|
|
|
301
300
|
/**
|
|
302
301
|
* Yields each non-null window specified in the 8-bit bitmap.
|
|
303
302
|
* @param {number} bitmap 8 bits corresponding to each of the 8 windows.
|
|
304
|
-
* @return {!
|
|
303
|
+
* @return {!Array.<number>}
|
|
305
304
|
* @private
|
|
306
305
|
*/
|
|
307
|
-
|
|
306
|
+
getSpecifiedWindowIds_(bitmap) {
|
|
307
|
+
const ids = [];
|
|
308
308
|
for (let i = 0; i < 8; i++) {
|
|
309
309
|
const windowSpecified = (bitmap & 0x01) === 0x01;
|
|
310
310
|
if (windowSpecified && this.windows_[i]) {
|
|
311
|
-
|
|
311
|
+
ids.push(i);
|
|
312
312
|
}
|
|
313
313
|
bitmap >>= 1;
|
|
314
314
|
}
|
|
315
|
+
return ids;
|
|
315
316
|
}
|
|
316
317
|
|
|
317
318
|
/**
|
|
@@ -150,11 +150,11 @@ shaka.cea.Mp4CeaParser = class {
|
|
|
150
150
|
|
|
151
151
|
// If specified, defaultSampleDuration and defaultSampleSize
|
|
152
152
|
// override the ones specified in the TREX box
|
|
153
|
-
defaultSampleDuration = parsedTFHD.defaultSampleDuration
|
|
154
|
-
|
|
153
|
+
defaultSampleDuration = parsedTFHD.defaultSampleDuration ||
|
|
154
|
+
this.defaultSampleDuration_;
|
|
155
155
|
|
|
156
|
-
defaultSampleSize = parsedTFHD.defaultSampleSize
|
|
157
|
-
|
|
156
|
+
defaultSampleSize = parsedTFHD.defaultSampleSize ||
|
|
157
|
+
this.defaultSampleSize_;
|
|
158
158
|
|
|
159
159
|
const trackId = parsedTFHD.trackId;
|
|
160
160
|
|
|
@@ -236,7 +236,13 @@ shaka.cea.Mp4CeaParser = class {
|
|
|
236
236
|
});
|
|
237
237
|
}
|
|
238
238
|
} else {
|
|
239
|
-
|
|
239
|
+
try {
|
|
240
|
+
reader.skip(naluSize - 1);
|
|
241
|
+
} catch (e) {
|
|
242
|
+
// It is necessary to ignore this error because it can break the start
|
|
243
|
+
// of playback even if the user does not want to see the subtitles.
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
240
246
|
}
|
|
241
247
|
sampleSize -= (naluSize + 4);
|
|
242
248
|
if (sampleSize == 0) {
|
package/lib/cea/sei_processor.js
CHANGED
|
@@ -14,9 +14,10 @@ shaka.cea.SeiProcessor = class {
|
|
|
14
14
|
/**
|
|
15
15
|
* Processes supplemental enhancement information data.
|
|
16
16
|
* @param {!Uint8Array} naluData NALU from which SEI data is to be processed.
|
|
17
|
-
* @return {!
|
|
17
|
+
* @return {!Array.<!Uint8Array>}
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
process(naluData) {
|
|
20
|
+
const seiPayloads = [];
|
|
20
21
|
const naluClone = this.removeEmu(naluData);
|
|
21
22
|
|
|
22
23
|
// The following is an implementation of section 7.3.2.3.1
|
|
@@ -41,10 +42,12 @@ shaka.cea.SeiProcessor = class {
|
|
|
41
42
|
// Payload type 4 is user_data_registered_itu_t_t35, as per the H.264
|
|
42
43
|
// spec. This payload type contains caption data.
|
|
43
44
|
if (payloadType == 0x04) {
|
|
44
|
-
|
|
45
|
+
seiPayloads.push(naluClone.subarray(offset, offset + payloadSize));
|
|
45
46
|
}
|
|
46
47
|
offset += payloadSize;
|
|
47
48
|
}
|
|
49
|
+
|
|
50
|
+
return seiPayloads;
|
|
48
51
|
}
|
|
49
52
|
|
|
50
53
|
|