shaka-player 3.2.4 → 3.2.7
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/workflows/build-and-test.yaml +129 -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 +147 -0
- package/.github/workflows/safari-homedir-launcher.sh +18 -0
- package/.github/workflows/selenium-lab-tests.yaml +92 -0
- package/AUTHORS +2 -0
- package/CHANGELOG.md +1596 -1556
- 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 +3 -3
- package/build/checkversion.py +1 -1
- package/build/conformance.textproto +13 -0
- 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 +94 -29
- 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 +2 -2
- 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 +225 -219
- 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 +225 -224
- package/dist/shaka-player.compiled.debug.d.ts +225 -224
- package/dist/shaka-player.compiled.debug.externs.js +5 -3
- package/dist/shaka-player.compiled.debug.js +319 -323
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +5 -3
- package/dist/shaka-player.compiled.js +832 -833
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +267 -266
- package/dist/shaka-player.ui.debug.d.ts +267 -266
- package/dist/shaka-player.ui.debug.externs.js +5 -3
- package/dist/shaka-player.ui.debug.js +287 -291
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +5 -3
- package/dist/shaka-player.ui.js +981 -982
- package/dist/shaka-player.ui.map +4 -4
- package/docs/design/REDESIGN.md +33 -33
- 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/karma.conf.js +141 -30
- package/lib/abr/simple_abr_manager.js +12 -6
- package/lib/cast/cast_proxy.js +3 -4
- 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 +11 -14
- 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 +34 -20
- package/lib/hls/manifest_text_parser.js +3 -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 +10 -3
- 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/streaming_engine.js +6 -6
- package/lib/media/time_ranges_utils.js +1 -3
- package/lib/media/video_wrapper.js +1 -1
- package/lib/net/networking_engine.js +1 -1
- package/lib/offline/indexeddb/storage_mechanism.js +4 -2
- package/lib/offline/storage.js +4 -4
- package/lib/player.js +190 -114
- package/lib/polyfill/all.js +2 -3
- package/lib/polyfill/encryption_scheme.js +1 -1
- package/lib/polyfill/media_capabilities.js +3 -3
- package/lib/polyfill/mediasource.js +1 -1
- package/lib/text/cue.js +1 -1
- package/lib/text/simple_text_displayer.js +2 -1
- package/lib/text/ttml_text_parser.js +8 -5
- package/lib/text/ui_text_displayer.js +1 -1
- package/lib/util/buffer_utils.js +1 -3
- package/lib/util/config_utils.js +25 -0
- package/lib/util/ebml_parser.js +3 -3
- package/lib/util/error.js +8 -1
- package/lib/util/iterables.js +0 -46
- package/lib/util/manifest_parser_utils.js +1 -1
- package/lib/util/mime_utils.js +48 -1
- package/lib/util/mp4_box_parsers.js +1 -4
- package/lib/util/mp4_parser.js +5 -7
- package/lib/util/periods.js +13 -13
- package/lib/util/platform.js +3 -3
- package/lib/util/player_configuration.js +9 -14
- package/lib/util/pssh.js +1 -4
- package/lib/util/stream_utils.js +8 -5
- package/lib/util/string_utils.js +3 -5
- package/lib/util/uint8array_utils.js +3 -5
- package/lib/util/xml_utils.js +15 -7
- package/package.json +61 -36
- package/roadmap.md +17 -17
- 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 +1 -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 +2 -15
- package/test/dash/dash_parser_manifest_unit.js +2 -40
- 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 +28 -14
- package/test/hls/hls_parser_unit.js +2 -15
- package/test/hls/manifest_text_parser_unit.js +19 -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 +4 -24
- package/test/media/manifest_parser_unit.js +0 -4
- package/test/media/media_source_engine_integration.js +1 -7
- package/test/media/media_source_engine_unit.js +5 -18
- 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/region_observer_unit.js +1 -6
- package/test/media/region_timeline_unit.js +0 -3
- 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 -36
- package/test/media/streaming_engine_unit.js +11 -35
- 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 +1 -7
- 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 +2 -15
- package/test/offline/storage_integration.js +1 -25
- package/test/player_external.js +9 -11
- package/test/player_integration.js +27 -38
- 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 +81 -90
- package/test/player_unit.js +150 -38
- package/test/routing/walker_unit.js +0 -8
- package/test/test/assets/large_file.mpd +1 -1
- package/test/test/boot.js +84 -22
- package/test/test/externs/filters.js +4 -0
- 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 +40 -28
- 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 +0 -2
- package/test/test/util/ui_utils.js +0 -9
- package/test/test/util/util.js +5 -19
- 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 +0 -6
- 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 +2 -11
- 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 +1 -12
- 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/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/mime_utils_unit.js +54 -0
- 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 +93 -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 +3 -8
- 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/ui/less/ad_controls.less +6 -6
- package/ui/less/buttons.less +6 -6
- package/ui/less/containers.less +9 -11
- package/ui/less/overflow_menu.less +4 -4
- package/ui/less/range_elements.less +7 -2
- package/ui/locales/sjn-translations.yaml +257 -0
- package/ui/locales/sjn.json +42 -0
- package/ui/seek_bar.js +2 -1
- package/.github/workflows/build_and_test.yaml +0 -73
- package/.github/workflows/release.yaml +0 -53
- package/docs/tutorials/gsoc-ideas-list.md +0 -3
- package/externs/svgelement.js +0 -18
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.util.Iterables');
|
|
8
|
-
|
|
9
7
|
describe('Iterables', () => {
|
|
10
8
|
const Iterables = shaka.util.Iterables;
|
|
11
9
|
|
|
@@ -67,66 +65,4 @@ describe('Iterables', () => {
|
|
|
67
65
|
expect(Iterables.filter(input, (x) => x < 0)).toEqual([]);
|
|
68
66
|
});
|
|
69
67
|
});
|
|
70
|
-
|
|
71
|
-
describe('enumerate', () => {
|
|
72
|
-
function enumerate(it) {
|
|
73
|
-
return Array.from(Iterables.enumerate(it));
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
it('works with no items', () => {
|
|
77
|
-
expect(enumerate([])).toEqual([]);
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
it('works with one item', () => {
|
|
81
|
-
expect(enumerate([999]))
|
|
82
|
-
.toEqual([{i: 0, item: 999, prev: undefined, next: undefined}]);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it('works with special values', () => {
|
|
86
|
-
expect(enumerate([[]]))
|
|
87
|
-
.toEqual([{i: 0, item: [], prev: undefined, next: undefined}]);
|
|
88
|
-
expect(enumerate([0]))
|
|
89
|
-
.toEqual([{i: 0, item: 0, prev: undefined, next: undefined}]);
|
|
90
|
-
expect(enumerate([null]))
|
|
91
|
-
.toEqual([{i: 0, item: null, prev: undefined, next: undefined}]);
|
|
92
|
-
expect(enumerate([undefined]))
|
|
93
|
-
.toEqual([{i: 0, item: undefined, prev: undefined, next: undefined}]);
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
it('works with two items', () => {
|
|
97
|
-
expect(enumerate([888, 999]))
|
|
98
|
-
.toEqual([
|
|
99
|
-
{i: 0, item: 888, prev: undefined, next: 999},
|
|
100
|
-
{i: 1, item: 999, prev: 888, next: undefined},
|
|
101
|
-
]);
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
it('works with three items', () => {
|
|
105
|
-
expect(enumerate([777, 888, 999]))
|
|
106
|
-
.toEqual([
|
|
107
|
-
{i: 0, item: 777, prev: undefined, next: 888},
|
|
108
|
-
{i: 1, item: 888, prev: 777, next: 999},
|
|
109
|
-
{i: 2, item: 999, prev: 888, next: undefined},
|
|
110
|
-
]);
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
it('keeps references', () => {
|
|
114
|
-
const expected = [
|
|
115
|
-
{a: 'x'},
|
|
116
|
-
{b: 'y'},
|
|
117
|
-
{c: 'z'},
|
|
118
|
-
];
|
|
119
|
-
const actual = enumerate(expected);
|
|
120
|
-
|
|
121
|
-
expect(actual[0].item).toBe(expected[0]);
|
|
122
|
-
expect(actual[0].next).toBe(expected[1]);
|
|
123
|
-
|
|
124
|
-
expect(actual[1].prev).toBe(expected[0]);
|
|
125
|
-
expect(actual[1].item).toBe(expected[1]);
|
|
126
|
-
expect(actual[1].next).toBe(expected[2]);
|
|
127
|
-
|
|
128
|
-
expect(actual[2].prev).toBe(expected[1]);
|
|
129
|
-
expect(actual[2].item).toBe(expected[2]);
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
68
|
});
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/*! @license
|
|
2
|
+
* Shaka Player
|
|
3
|
+
* Copyright 2016 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
describe('MimeUtils', () => {
|
|
8
|
+
const getNormalizedCodec = (codecs) =>
|
|
9
|
+
shaka.util.MimeUtils.getNormalizedCodec(codecs);
|
|
10
|
+
|
|
11
|
+
it('normalizes codecs', () => {
|
|
12
|
+
expect(getNormalizedCodec('mp4a.66')).toBe('aac');
|
|
13
|
+
expect(getNormalizedCodec('mp4a.67')).toBe('aac');
|
|
14
|
+
expect(getNormalizedCodec('mp4a.68')).toBe('aac');
|
|
15
|
+
|
|
16
|
+
expect(getNormalizedCodec('mp3')).toBe('mp3');
|
|
17
|
+
expect(getNormalizedCodec('mp4a.69')).toBe('mp3');
|
|
18
|
+
expect(getNormalizedCodec('mp4a.6B')).toBe('mp3');
|
|
19
|
+
expect(getNormalizedCodec('mp4a.6b')).toBe('mp3');
|
|
20
|
+
|
|
21
|
+
expect(getNormalizedCodec('mp4a.40.2')).toBe('aac');
|
|
22
|
+
expect(getNormalizedCodec('mp4a.40.02')).toBe('aac');
|
|
23
|
+
expect(getNormalizedCodec('mp4a.40.5')).toBe('aac');
|
|
24
|
+
expect(getNormalizedCodec('mp4a.40.05')).toBe('aac');
|
|
25
|
+
expect(getNormalizedCodec('mp4a.40.29')).toBe('aac');
|
|
26
|
+
expect(getNormalizedCodec('mp4a.40.42')).toBe('aac');
|
|
27
|
+
|
|
28
|
+
expect(getNormalizedCodec('ac-3')).toBe('ac-3');
|
|
29
|
+
expect(getNormalizedCodec('mp4a.a5')).toBe('ac-3');
|
|
30
|
+
expect(getNormalizedCodec('mp4a.A5')).toBe('ac-3');
|
|
31
|
+
|
|
32
|
+
expect(getNormalizedCodec('ec-3')).toBe('ec-3');
|
|
33
|
+
expect(getNormalizedCodec('mp4a.a6')).toBe('ec-3');
|
|
34
|
+
expect(getNormalizedCodec('mp4a.A6')).toBe('ec-3');
|
|
35
|
+
|
|
36
|
+
expect(getNormalizedCodec('dtsc')).toBe('dtsc');
|
|
37
|
+
expect(getNormalizedCodec('mp4a.a9')).toBe('dtsc');
|
|
38
|
+
|
|
39
|
+
expect(getNormalizedCodec('dtsx')).toBe('dtsx');
|
|
40
|
+
expect(getNormalizedCodec('mp4a.b2')).toBe('dtsx');
|
|
41
|
+
|
|
42
|
+
expect(getNormalizedCodec('vp8')).toBe('vp8');
|
|
43
|
+
expect(getNormalizedCodec('vp8.0')).toBe('vp8');
|
|
44
|
+
|
|
45
|
+
expect(getNormalizedCodec('avc1')).toBe('avc');
|
|
46
|
+
expect(getNormalizedCodec('avc3')).toBe('avc');
|
|
47
|
+
|
|
48
|
+
expect(getNormalizedCodec('hvc1')).toBe('hevc');
|
|
49
|
+
expect(getNormalizedCodec('hev1')).toBe('hevc');
|
|
50
|
+
|
|
51
|
+
expect(getNormalizedCodec('dvh1.05')).toBe('dovi');
|
|
52
|
+
expect(getNormalizedCodec('dvhe.05')).toBe('dovi');
|
|
53
|
+
});
|
|
54
|
+
});
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('shaka.test.Util');
|
|
9
|
-
goog.require('shaka.util.Mp4BoxParsers');
|
|
10
|
-
goog.require('shaka.util.Mp4Parser');
|
|
11
|
-
|
|
12
7
|
describe('Mp4BoxParsers', () => {
|
|
13
8
|
const videoInitSegmentUri = '/base/test/test/assets/sintel-video-init.mp4';
|
|
14
9
|
const videoSegmentUri = '/base/test/test/assets/sintel-video-segment.mp4';
|
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.test.ManifestGenerator');
|
|
8
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
9
|
-
goog.require('shaka.util.PeriodCombiner');
|
|
10
|
-
|
|
11
7
|
describe('PeriodCombiner', () => {
|
|
12
8
|
// These test cases don't really read well as "it" statements. Phrasing them
|
|
13
9
|
// that way would make the names very long, so here we break with that
|
|
@@ -477,7 +473,7 @@ describe('PeriodCombiner', () => {
|
|
|
477
473
|
a3.originalId = 'a3';
|
|
478
474
|
a3.bandwidth = 97065;
|
|
479
475
|
a3.roles = ['role1', 'role2'];
|
|
480
|
-
|
|
476
|
+
a3.codecs = 'mp4a.40.2';
|
|
481
477
|
|
|
482
478
|
// a4 has a different label from a3, and should not
|
|
483
479
|
// be filtered out.
|
|
@@ -500,14 +496,24 @@ describe('PeriodCombiner', () => {
|
|
|
500
496
|
const t1 = makeTextStream('en');
|
|
501
497
|
t1.originalId = 't1';
|
|
502
498
|
t1.roles = ['role1'];
|
|
499
|
+
t1.bandwidth = 1158;
|
|
503
500
|
|
|
504
501
|
const t2 = makeTextStream('en');
|
|
505
502
|
t2.originalId = 't2';
|
|
506
503
|
t2.roles = ['role1', 'role2'];
|
|
504
|
+
t2.bandwidth = 1172;
|
|
507
505
|
|
|
508
506
|
const t3 = makeTextStream('en');
|
|
509
507
|
t3.originalId = 't3';
|
|
510
508
|
t3.roles = ['role1'];
|
|
509
|
+
t3.bandwidth = 1158;
|
|
510
|
+
|
|
511
|
+
// t4 has a different bandwidth from t3, and should not
|
|
512
|
+
// be filtered out.
|
|
513
|
+
const t4 = makeTextStream('en');
|
|
514
|
+
t4.originalId = 't4';
|
|
515
|
+
t4.roles = ['role1'];
|
|
516
|
+
t4.bandwidth = 1186;
|
|
511
517
|
|
|
512
518
|
// i1 and i3 are duplicates.
|
|
513
519
|
const i1 = makeImageStream(240);
|
|
@@ -539,6 +545,7 @@ describe('PeriodCombiner', () => {
|
|
|
539
545
|
t1,
|
|
540
546
|
t2,
|
|
541
547
|
t3,
|
|
548
|
+
t4,
|
|
542
549
|
],
|
|
543
550
|
imageStreams: [
|
|
544
551
|
i1,
|
|
@@ -565,7 +572,7 @@ describe('PeriodCombiner', () => {
|
|
|
565
572
|
}
|
|
566
573
|
|
|
567
574
|
const textStreams = combiner.getTextStreams();
|
|
568
|
-
expect(textStreams.length).toBe(
|
|
575
|
+
expect(textStreams.length).toBe(3);
|
|
569
576
|
|
|
570
577
|
// t3 should've been filtered out
|
|
571
578
|
const textIds = textStreams.map((t) => t.originalId);
|
|
@@ -989,6 +996,85 @@ describe('PeriodCombiner', () => {
|
|
|
989
996
|
expect(audio2.originalId).toBe('2,4');
|
|
990
997
|
});
|
|
991
998
|
|
|
999
|
+
it('Matches streams with related codecs', async () => {
|
|
1000
|
+
const stream1 = makeVideoStream(1080);
|
|
1001
|
+
stream1.originalId = '1';
|
|
1002
|
+
stream1.bandwidth = 120000;
|
|
1003
|
+
stream1.codecs = 'hvc1.1.4.L126.B0';
|
|
1004
|
+
|
|
1005
|
+
const stream2 = makeVideoStream(1080);
|
|
1006
|
+
stream2.originalId = '2';
|
|
1007
|
+
stream2.bandwidth = 120000;
|
|
1008
|
+
stream2.codecs = 'hev1.2.4.L123.B0';
|
|
1009
|
+
|
|
1010
|
+
const stream3 = makeVideoStream(1080);
|
|
1011
|
+
stream3.originalId = '3';
|
|
1012
|
+
stream3.bandwidth = 120000;
|
|
1013
|
+
stream3.codecs = 'dvhe.05.01';
|
|
1014
|
+
|
|
1015
|
+
const stream4 = makeVideoStream(1080);
|
|
1016
|
+
stream4.originalId = '4';
|
|
1017
|
+
stream4.bandwidth = 120000;
|
|
1018
|
+
stream4.codecs = 'dvh1.05.01';
|
|
1019
|
+
|
|
1020
|
+
const stream5 = makeVideoStream(1080);
|
|
1021
|
+
stream5.originalId = '5';
|
|
1022
|
+
stream5.bandwidth = 120000;
|
|
1023
|
+
stream5.codecs = 'avc1.42001f';
|
|
1024
|
+
|
|
1025
|
+
const stream6 = makeVideoStream(1080);
|
|
1026
|
+
stream6.originalId = '6';
|
|
1027
|
+
stream6.bandwidth = 120000;
|
|
1028
|
+
stream6.codecs = 'avc3.42001f';
|
|
1029
|
+
|
|
1030
|
+
const stream7 = makeVideoStream(1080);
|
|
1031
|
+
stream7.originalId = '7';
|
|
1032
|
+
stream7.bandwidth = 120000;
|
|
1033
|
+
stream7.codecs = 'vp09.00.10.08';
|
|
1034
|
+
|
|
1035
|
+
const stream8 = makeVideoStream(1080);
|
|
1036
|
+
stream8.originalId = '8';
|
|
1037
|
+
stream8.bandwidth = 120000;
|
|
1038
|
+
stream8.codecs = 'vp09.01.20.08.01';
|
|
1039
|
+
|
|
1040
|
+
/** @type {!Array.<shaka.util.PeriodCombiner.Period>} */
|
|
1041
|
+
const periods = [
|
|
1042
|
+
{
|
|
1043
|
+
id: '0',
|
|
1044
|
+
videoStreams: [
|
|
1045
|
+
stream1, stream3, stream5, stream7,
|
|
1046
|
+
],
|
|
1047
|
+
audioStreams: [],
|
|
1048
|
+
textStreams: [],
|
|
1049
|
+
imageStreams: [],
|
|
1050
|
+
},
|
|
1051
|
+
{
|
|
1052
|
+
id: '1',
|
|
1053
|
+
videoStreams: [
|
|
1054
|
+
stream2, stream4, stream6, stream8,
|
|
1055
|
+
],
|
|
1056
|
+
audioStreams: [],
|
|
1057
|
+
textStreams: [],
|
|
1058
|
+
imageStreams: [],
|
|
1059
|
+
},
|
|
1060
|
+
];
|
|
1061
|
+
|
|
1062
|
+
await combiner.combinePeriods(periods, /* isDynamic= */ true);
|
|
1063
|
+
const variants = combiner.getVariants();
|
|
1064
|
+
expect(variants.length).toBe(4);
|
|
1065
|
+
// We can use the originalId field to see what each track is composed of.
|
|
1066
|
+
const video1 = variants[0].video;
|
|
1067
|
+
expect(video1.originalId).toBe('1,2');
|
|
1068
|
+
|
|
1069
|
+
const video2 = variants[1].video;
|
|
1070
|
+
expect(video2.originalId).toBe('3,4');
|
|
1071
|
+
|
|
1072
|
+
const video3 = variants[2].video;
|
|
1073
|
+
expect(video3.originalId).toBe('5,6');
|
|
1074
|
+
|
|
1075
|
+
const video4 = variants[3].video;
|
|
1076
|
+
expect(video4.originalId).toBe('7,8');
|
|
1077
|
+
});
|
|
992
1078
|
|
|
993
1079
|
it('Matches streams with most roles in common', async () => {
|
|
994
1080
|
const makeAudioStreamWithRoles = (roles) => {
|
|
@@ -1059,7 +1145,7 @@ describe('PeriodCombiner', () => {
|
|
|
1059
1145
|
it('The number of variants stays stable after many periods ' +
|
|
1060
1146
|
'when going between similar content and varying ads', async () => {
|
|
1061
1147
|
// This test is based on the content from
|
|
1062
|
-
// https://github.com/
|
|
1148
|
+
// https://github.com/shaka-project/shaka-player/issues/2716
|
|
1063
1149
|
// that used to cause our period flattening logic to keep
|
|
1064
1150
|
// creating new variants for every new period added.
|
|
1065
1151
|
// It's ok to create a few additional varinats/streams,
|
package/test/util/pssh_unit.js
CHANGED
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.test.Util');
|
|
8
|
-
goog.require('shaka.util.Error');
|
|
9
|
-
goog.require('shaka.util.Pssh');
|
|
10
|
-
goog.require('shaka.util.Uint8ArrayUtils');
|
|
11
|
-
|
|
12
7
|
describe('Pssh', () => {
|
|
13
8
|
const Uint8ArrayUtils = shaka.util.Uint8ArrayUtils;
|
|
14
9
|
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.test.FakeDrmEngine');
|
|
8
|
-
goog.require('shaka.test.ManifestGenerator');
|
|
9
|
-
goog.require('shaka.test.Util');
|
|
10
|
-
goog.require('shaka.util.StreamUtils');
|
|
11
|
-
|
|
12
7
|
describe('StreamUtils', () => {
|
|
13
8
|
const StreamUtils = shaka.util.StreamUtils;
|
|
14
9
|
|
|
@@ -184,7 +179,7 @@ describe('StreamUtils', () => {
|
|
|
184
179
|
});
|
|
185
180
|
|
|
186
181
|
it('chooses only one role, even if none is preferred', () => {
|
|
187
|
-
// Regression test for https://github.com/
|
|
182
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/949
|
|
188
183
|
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
189
184
|
manifest.addTextStream(0, (stream) => {
|
|
190
185
|
stream.language = 'en';
|
|
@@ -223,7 +218,7 @@ describe('StreamUtils', () => {
|
|
|
223
218
|
});
|
|
224
219
|
|
|
225
220
|
it('chooses only one role, even if all are primary', () => {
|
|
226
|
-
// Regression test for https://github.com/
|
|
221
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/949
|
|
227
222
|
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
228
223
|
manifest.addTextStream(0, (stream) => {
|
|
229
224
|
stream.language = 'en';
|
|
@@ -269,7 +264,7 @@ describe('StreamUtils', () => {
|
|
|
269
264
|
});
|
|
270
265
|
|
|
271
266
|
it('chooses only one language, even if all are primary', () => {
|
|
272
|
-
// Regression test for https://github.com/
|
|
267
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/918
|
|
273
268
|
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
274
269
|
manifest.addTextStream(0, (stream) => {
|
|
275
270
|
stream.language = 'en';
|
|
@@ -4,12 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.test.Util');
|
|
8
|
-
goog.require('shaka.util.BufferUtils');
|
|
9
|
-
goog.require('shaka.util.Error');
|
|
10
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
11
|
-
goog.require('shaka.util.StringUtils');
|
|
12
|
-
|
|
13
7
|
describe('StringUtils', () => {
|
|
14
8
|
const StringUtils = shaka.util.StringUtils;
|
|
15
9
|
|
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('shaka.util.XmlUtils');
|
|
9
|
-
|
|
10
|
-
|
|
11
7
|
describe('XmlUtils', () => {
|
|
12
8
|
// A number that cannot be represented as a Javascript number.
|
|
13
9
|
const HUGE_NUMBER_STRING = new Array(500).join('7');
|
package/ui/less/ad_controls.less
CHANGED
|
@@ -78,11 +78,11 @@
|
|
|
78
78
|
|
|
79
79
|
/* This math is determining how far the button is from the right edge.
|
|
80
80
|
* Ad panel's parent is centered and @bottom-controls-width wide, so
|
|
81
|
-
* 100 - @bottom-controls-width = margins from both sides of the container.
|
|
81
|
+
* 100% - @bottom-controls-width = margins from both sides of the container.
|
|
82
82
|
* That divided by 2 is margin on one side, so we take that, and move the
|
|
83
83
|
* button from its normal position to the right by that percentage.
|
|
84
84
|
*/
|
|
85
|
-
right: (100 - @bottom-controls-width) / 2 * -1;
|
|
85
|
+
right: calc((100% - @bottom-controls-width) / 2 * -1);
|
|
86
86
|
display: flex;
|
|
87
87
|
flex-direction: row;
|
|
88
88
|
margin: 0;
|
|
@@ -90,18 +90,18 @@
|
|
|
90
90
|
|
|
91
91
|
.shaka-skip-ad-button {
|
|
92
92
|
padding: 5px 15px;
|
|
93
|
-
background: rgba(0
|
|
93
|
+
background: rgba(0 0 0 / 70%);
|
|
94
94
|
border: none;
|
|
95
95
|
|
|
96
96
|
&:disabled {
|
|
97
|
-
background: rgba(0
|
|
97
|
+
background: rgba(0 0 0 / 30%);
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
cursor: pointer;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
.shaka-skip-ad-counter {
|
|
104
|
-
padding: 5px
|
|
105
|
-
background: rgba(0
|
|
104
|
+
padding: 5px;
|
|
105
|
+
background: rgba(0 0 0 / 70%);
|
|
106
106
|
margin: 0;
|
|
107
107
|
}
|
package/ui/less/buttons.less
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
*
|
|
27
27
|
* Based on tips from https://stackoverflow.com/a/12925343 */
|
|
28
28
|
box-sizing: border-box;
|
|
29
|
-
padding: @play-button-size-percentage / 2;
|
|
29
|
+
padding: calc(@play-button-size-percentage / 2);
|
|
30
30
|
width: 0;
|
|
31
31
|
height: 0;
|
|
32
32
|
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
border-radius: 50%;
|
|
39
39
|
|
|
40
40
|
/* A small drop shadow below the button. */
|
|
41
|
-
box-shadow: rgba(0
|
|
41
|
+
box-shadow: rgba(0 0 0 / 10%) 0 0 20px 0;
|
|
42
42
|
|
|
43
43
|
/* No border. */
|
|
44
44
|
border: none;
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
background-position: center center;
|
|
52
52
|
|
|
53
53
|
/* A background color behind the play arrow. */
|
|
54
|
-
background-color: rgba(255
|
|
54
|
+
background-color: rgba(255 255 255 / 90%);
|
|
55
55
|
|
|
56
56
|
.show-when-controls-shown();
|
|
57
57
|
|
|
@@ -60,11 +60,11 @@
|
|
|
60
60
|
* deployed separately from the compiled CSS.
|
|
61
61
|
* Note that these URIs should relative to ui/controls.less, not this file. */
|
|
62
62
|
&[icon="play"] {
|
|
63
|
-
background-image: data-uri(
|
|
63
|
+
background-image: data-uri("images/play_arrow.svg");
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
&[icon="pause"] {
|
|
67
|
-
background-image: data-uri(
|
|
67
|
+
background-image: data-uri("images/pause.svg");
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
*/
|
|
75
75
|
.shaka-current-time {
|
|
76
76
|
font-size: 14px;
|
|
77
|
-
color:
|
|
77
|
+
color: white;
|
|
78
78
|
cursor: pointer;
|
|
79
79
|
|
|
80
80
|
&[disabled] {
|
package/ui/less/containers.less
CHANGED
|
@@ -6,8 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|
/* All of the top-level containers into which various visible features go. */
|
|
8
8
|
|
|
9
|
-
@transparent: rgba(0, 0, 0, 0);
|
|
10
|
-
|
|
11
9
|
/* A container for the entire video + controls combo. This is the auto-setup
|
|
12
10
|
* div which we populate. */
|
|
13
11
|
.shaka-video-container {
|
|
@@ -19,13 +17,13 @@
|
|
|
19
17
|
|
|
20
18
|
/* Set a special font for material design icons. */
|
|
21
19
|
.material-icons-round {
|
|
22
|
-
font-family:
|
|
20
|
+
font-family: "Material Icons Round";
|
|
23
21
|
font-size: 24px;
|
|
24
22
|
}
|
|
25
23
|
|
|
26
24
|
/* Set the fonts for all other content. */
|
|
27
25
|
* {
|
|
28
|
-
font-family: Roboto-Regular, Roboto, sans-serif;
|
|
26
|
+
font-family: Roboto-Regular, Roboto, sans-serif, TengwarTelcontar;
|
|
29
27
|
}
|
|
30
28
|
}
|
|
31
29
|
|
|
@@ -203,7 +201,7 @@
|
|
|
203
201
|
.show-when-controls-shown();
|
|
204
202
|
|
|
205
203
|
/* A black gradient at the bottom, behind the controls, but only so high. */
|
|
206
|
-
background: linear-gradient(to top,
|
|
204
|
+
background: linear-gradient(to top, black 0, transparent 15%);
|
|
207
205
|
}
|
|
208
206
|
|
|
209
207
|
.shaka-text-container {
|
|
@@ -231,7 +229,7 @@
|
|
|
231
229
|
/* These are defaults which are overridden by JS or cue styles. */
|
|
232
230
|
font-size: 20px;
|
|
233
231
|
line-height: 1.4; // relative to font size.
|
|
234
|
-
color:
|
|
232
|
+
color: white;
|
|
235
233
|
|
|
236
234
|
span.shaka-text-wrapper {
|
|
237
235
|
display: inline;
|
|
@@ -265,8 +263,8 @@
|
|
|
265
263
|
|
|
266
264
|
.shaka-spinner {
|
|
267
265
|
/* This uses the same trickery as the big play button define
|
|
268
|
-
|
|
269
|
-
|
|
266
|
+
* the spinner's width and height. See .shaka-play-button
|
|
267
|
+
* for the detailed explanation. */
|
|
270
268
|
|
|
271
269
|
/* For the padding thing to work, spinner div needs to be an
|
|
272
270
|
overlay-parent and spinner svg - an overlay child. */
|
|
@@ -274,11 +272,11 @@
|
|
|
274
272
|
|
|
275
273
|
margin: 0;
|
|
276
274
|
box-sizing: border-box;
|
|
277
|
-
padding: @spinner-size-percentage / 2;
|
|
275
|
+
padding: calc(@spinner-size-percentage / 2);
|
|
278
276
|
width: 0;
|
|
279
277
|
height: 0;
|
|
280
278
|
|
|
281
279
|
/* Add a bit of a white shadow to keep our black spinner visible
|
|
282
|
-
|
|
283
|
-
filter: drop-shadow(0 0 2px rgba(255
|
|
280
|
+
* on a black background. */
|
|
281
|
+
filter: drop-shadow(0 0 2px rgba(255 255 255 / 50%));
|
|
284
282
|
}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
/* Styles for the menu itself. */
|
|
20
20
|
background: white;
|
|
21
|
-
box-shadow: 0 1px 9px 0 rgba(0
|
|
21
|
+
box-shadow: 0 1px 9px 0 rgba(0 0 0 / 40%);
|
|
22
22
|
border-radius: 2px;
|
|
23
23
|
max-height: 250px;
|
|
24
24
|
min-width: 180px;
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
|
|
53
53
|
/* When hovered, the button's background is highlighted. */
|
|
54
54
|
&:hover {
|
|
55
|
-
background: rgb(224
|
|
55
|
+
background: rgb(224 224 224);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
/* The button is clickable, showing cursor pointer */
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
.shaka-keyboard-navigation &:focus {
|
|
67
|
-
background: rgb(224
|
|
67
|
+
background: rgb(224 224 224);
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
* language, the currently-selected resolution, etc. */
|
|
110
110
|
.shaka-current-selection-span {
|
|
111
111
|
/* This is dimmer than the other span, which is the name of the submenu. */
|
|
112
|
-
color: rgba(0
|
|
112
|
+
color: rgba(0 0 0 / 54%);
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
/* The submenus have somewhat different margins inside them. */
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
.overlay-parent();
|
|
40
40
|
|
|
41
41
|
/* Vertical margins to occupy the same space as the thumb. */
|
|
42
|
-
margin: (@thumb-size - @track-height)/2 6px;
|
|
42
|
+
margin: calc((@thumb-size - @track-height) / 2) 6px;
|
|
43
43
|
|
|
44
44
|
/* Smaller height to contain the background for the virtual track. */
|
|
45
45
|
height: @track-height;
|
|
@@ -57,6 +57,11 @@
|
|
|
57
57
|
/* The track should fill the range element. */
|
|
58
58
|
width: 100%;
|
|
59
59
|
|
|
60
|
+
/* Since range elements are special input elements, they must reflect user
|
|
61
|
+
* interaction, so when the user hovers over the range element, the cursor
|
|
62
|
+
* must be a pointer. */
|
|
63
|
+
cursor: pointer;
|
|
64
|
+
|
|
60
65
|
/* The track should be tall enough to contain the thumb without clipping it.
|
|
61
66
|
* It is very tricky to make the thumb show outside the track on IE 11, and
|
|
62
67
|
* it is incompatible with our background gradients. */
|
|
@@ -104,7 +109,7 @@
|
|
|
104
109
|
|
|
105
110
|
/* Position the top of the range element so that it is centered on the
|
|
106
111
|
* container. Note that the container is actually smaller than the thumb. */
|
|
107
|
-
top: (@track-height - @thumb-size) / 2;
|
|
112
|
+
top: calc((@track-height - @thumb-size) / 2);
|
|
108
113
|
|
|
109
114
|
/* Make sure clicking at the very top of the bar still takes effect and is not
|
|
110
115
|
* confused with clicking the video to play/pause it. */
|