shaka-player 4.6.4 → 4.7.0
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/README.md +1 -0
- package/dist/controls.css +1 -1
- package/dist/controls.css.map +1 -1
- package/dist/deps.js +9 -5
- package/dist/locales.js +29 -29
- package/dist/shaka-player.compiled.d.ts +46 -3
- package/dist/shaka-player.compiled.debug.d.ts +46 -3
- package/dist/shaka-player.compiled.debug.externs.js +45 -0
- package/dist/shaka-player.compiled.debug.js +382 -351
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +45 -0
- package/dist/shaka-player.compiled.js +1135 -1121
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +68 -4
- package/dist/shaka-player.ui.debug.d.ts +68 -4
- package/dist/shaka-player.ui.debug.externs.js +77 -0
- package/dist/shaka-player.ui.debug.js +428 -392
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +77 -0
- package/dist/shaka-player.ui.js +1304 -1290
- package/dist/shaka-player.ui.map +4 -4
- package/externs/mediasession.js +7 -0
- package/externs/shaka/abr_manager.js +8 -0
- package/externs/shaka/manifest.js +3 -3
- package/externs/shaka/player.js +59 -4
- package/lib/abr/simple_abr_manager.js +41 -15
- package/lib/cea/cea708_service.js +1 -1
- package/lib/cea/cea708_window.js +95 -7
- package/lib/dash/dash_parser.js +55 -11
- package/lib/media/adaptation_set_criteria.js +76 -10
- package/lib/media/media_source_engine.js +42 -18
- package/lib/media/segment_reference.js +12 -0
- package/lib/media/streaming_engine.js +55 -3
- package/lib/player.js +92 -6
- package/lib/util/cmsd_manager.js +269 -0
- package/lib/util/content_steering_manager.js +5 -1
- package/lib/util/mime_utils.js +6 -2
- package/lib/util/periods.js +108 -39
- package/lib/util/player_configuration.js +19 -5
- package/lib/util/stream_utils.js +82 -13
- package/package.json +1 -1
- package/ui/audio_language_selection.js +3 -0
- package/ui/controls.js +60 -0
- package/ui/externs/ui.js +12 -1
- package/ui/hidden_fast_forward_button.js +32 -0
- package/ui/hidden_rewind_button.js +32 -0
- package/ui/hidden_seek_button.js +121 -0
- package/ui/less/buttons.less +50 -0
- package/ui/less/containers.less +18 -0
- package/ui/resolution_selection.js +2 -0
- package/ui/ui.js +2 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -75
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -26
- package/.github/ISSUE_TEMPLATE/question.md +0 -26
- package/.github/config.yml +0 -1
- package/.github/workflows/appspot.yaml +0 -39
- package/.github/workflows/build-and-test.yaml +0 -222
- package/.github/workflows/compute-incremental-coverage.py +0 -265
- package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +0 -56
- package/.github/workflows/custom-actions/set-commit-status/action.yaml +0 -37
- package/.github/workflows/deflake.yaml +0 -31
- package/.github/workflows/demo-version-index.yaml +0 -43
- package/.github/workflows/nightly-demo.yaml +0 -42
- package/.github/workflows/release-please.yaml +0 -193
- package/.github/workflows/report-incremental-coverage.yaml +0 -39
- package/.github/workflows/safari-homedir-launcher.sh +0 -18
- package/.github/workflows/selenium-lab-tests.yaml +0 -370
- package/.github/workflows/shaka-bot-commands/command-help.sh +0 -27
- package/.github/workflows/shaka-bot-commands/command-test.sh +0 -56
- package/.github/workflows/shaka-bot-commands/lib.sh +0 -83
- package/.github/workflows/shaka-bot-commands/main.sh +0 -51
- package/.github/workflows/sync-labels.yaml +0 -33
- package/.github/workflows/talk-to-shaka-bot.yaml +0 -29
- package/.github/workflows/update-issues.yaml +0 -31
- package/.github/workflows/update-screenshots.yaml +0 -142
- package/.github/workflows/validate-pr-title.yaml +0 -27
- package/CHANGELOG.md +0 -5774
- package/CODE_OF_CONDUCT.md +0 -93
- package/CONTRIBUTING.md +0 -76
- package/demo/TengwarTelcontar.woff2 +0 -0
- package/demo/app_logo_144.png +0 -0
- package/demo/app_logo_192.png +0 -0
- package/demo/app_logo_256.png +0 -0
- package/demo/app_logo_384.png +0 -0
- package/demo/app_logo_512.png +0 -0
- package/demo/app_manifest.json +0 -29
- package/demo/asset_card.js +0 -410
- package/demo/autoTemplate.txt +0 -61
- package/demo/cast_receiver/idle1.jpg +0 -0
- package/demo/cast_receiver/idle2.jpg +0 -0
- package/demo/cast_receiver/idle3.jpg +0 -0
- package/demo/cast_receiver/index.html +0 -75
- package/demo/cast_receiver/receiver_app.css +0 -111
- package/demo/cast_receiver/receiver_app.js +0 -158
- package/demo/close_button.js +0 -60
- package/demo/common/asset.js +0 -510
- package/demo/common/assets.js +0 -1634
- package/demo/config.js +0 -859
- package/demo/custom.js +0 -907
- package/demo/customWarning.txt +0 -8
- package/demo/demo.less +0 -591
- package/demo/demo_uncompiled.js +0 -11
- package/demo/demo_utils.js +0 -113
- package/demo/favicon.ico +0 -0
- package/demo/front.js +0 -156
- package/demo/icons/README.md +0 -4
- package/demo/icons/baseline-audiotrack-24px.svg +0 -1
- package/demo/icons/baseline-closed_caption-24px.svg +0 -1
- package/demo/icons/baseline-fast_forward-24px.svg +0 -1
- package/demo/icons/baseline-language-24px.svg +0 -1
- package/demo/icons/baseline-live_tv-24px.svg +0 -1
- package/demo/icons/baseline-subtitles-24px.svg +0 -1
- package/demo/icons/baseline-surround_sound-24px.svg +0 -1
- package/demo/icons/custom_ad.svg +0 -1
- package/demo/icons/custom_box_with_text.svg +0 -1
- package/demo/icons/custom_clear_key.svg +0 -1
- package/demo/icons/custom_high_definition.svg +0 -1
- package/demo/icons/custom_playready.svg +0 -1
- package/demo/icons/custom_ultra_high_definition.svg +0 -1
- package/demo/icons/custom_widevine.svg +0 -1
- package/demo/index.html +0 -173
- package/demo/input.js +0 -270
- package/demo/input_container.js +0 -218
- package/demo/load.js +0 -156
- package/demo/main.js +0 -1854
- package/demo/search.js +0 -452
- package/demo/service_worker.js +0 -355
- package/demo/shaka_logo_trans.png +0 -0
- package/demo/tooltip.js +0 -29
- package/demo/visualizer.js +0 -335
- package/demo/visualizer_button.js +0 -84
- package/dist/demo.compiled.debug.js +0 -340
- package/dist/demo.compiled.debug.map +0 -8
- package/dist/demo.compiled.js +0 -340
- package/dist/demo.compiled.map +0 -8
- package/dist/demo.css +0 -6
- package/dist/demo.css.map +0 -1
- package/dist/receiver.compiled.debug.js +0 -187
- package/dist/receiver.compiled.debug.map +0 -8
- package/dist/receiver.compiled.js +0 -187
- package/dist/receiver.compiled.map +0 -8
- package/docs/announcement-list-join-group.png +0 -0
- package/docs/api-mainpage.md +0 -28
- package/docs/design/REDESIGN.md +0 -283
- package/docs/design/architecture.md +0 -13
- package/docs/design/bg-fetch-after.gv +0 -29
- package/docs/design/bg-fetch-after.gv.png +0 -0
- package/docs/design/bg-fetch-before.gv +0 -18
- package/docs/design/bg-fetch-before.gv.png +0 -0
- package/docs/design/bg-fetch.md +0 -134
- package/docs/design/cast.gv +0 -35
- package/docs/design/cast.gv.png +0 -0
- package/docs/design/chromecast.md +0 -151
- package/docs/design/codec_preferences.md +0 -158
- package/docs/design/dash-audio-channels.md +0 -123
- package/docs/design/dash-manifests.md +0 -248
- package/docs/design/dash-timeline.svg +0 -4
- package/docs/design/dataflow.gv +0 -66
- package/docs/design/dataflow.gv.png +0 -0
- package/docs/design/export.md +0 -70
- package/docs/design/fuzzy-locale-matching.md +0 -40
- package/docs/design/gap-jumping.md +0 -151
- package/docs/design/lcevc-architecture.png +0 -0
- package/docs/design/lcevc-demo.png +0 -0
- package/docs/design/lcevc-integration.md +0 -72
- package/docs/design/locale_compatibility.svg +0 -1
- package/docs/design/locales_tree.svg +0 -1
- package/docs/design/localization-design-principles.md +0 -158
- package/docs/design/newdemo.gv +0 -83
- package/docs/design/newdemo.gv.png +0 -0
- package/docs/design/offline.gv +0 -43
- package/docs/design/offline.gv.png +0 -0
- package/docs/design/offline.md +0 -153
- package/docs/design/ownership.gv +0 -76
- package/docs/design/ownership.gv.png +0 -0
- package/docs/design/preload.md +0 -299
- package/docs/design/preload.png +0 -0
- package/docs/design/talking-about-languages.md +0 -46
- package/docs/design/timeline.svg +0 -152
- package/docs/design/ui.md +0 -31
- package/docs/design/ui_player_relationships.svg +0 -1
- package/docs/jsdoc-plugin.js +0 -74
- package/docs/jsdoc-template/README.md +0 -1
- package/docs/jsdoc-template/publish.js +0 -879
- package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.svg +0 -1830
- package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.woff +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
- package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.svg +0 -1830
- package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.woff +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.svg +0 -1831
- package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.woff +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
- package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.woff +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.svg +0 -1831
- package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.woff +0 -0
- package/docs/jsdoc-template/static/scripts/linenumber.js +0 -44
- package/docs/jsdoc-template/static/scripts/show-widget.js +0 -55
- package/docs/jsdoc-template/static/styles/jsdoc-default.css +0 -438
- package/docs/jsdoc-template/tmpl/augments.tmpl +0 -10
- package/docs/jsdoc-template/tmpl/container.tmpl +0 -205
- package/docs/jsdoc-template/tmpl/details.tmpl +0 -152
- package/docs/jsdoc-template/tmpl/example.tmpl +0 -2
- package/docs/jsdoc-template/tmpl/examples.tmpl +0 -13
- package/docs/jsdoc-template/tmpl/exceptions.tmpl +0 -32
- package/docs/jsdoc-template/tmpl/layout.tmpl +0 -50
- package/docs/jsdoc-template/tmpl/mainpage.tmpl +0 -14
- package/docs/jsdoc-template/tmpl/members.tmpl +0 -47
- package/docs/jsdoc-template/tmpl/method.tmpl +0 -140
- package/docs/jsdoc-template/tmpl/modifies.tmpl +0 -14
- package/docs/jsdoc-template/tmpl/params.tmpl +0 -131
- package/docs/jsdoc-template/tmpl/properties.tmpl +0 -125
- package/docs/jsdoc-template/tmpl/returns.tmpl +0 -19
- package/docs/jsdoc-template/tmpl/source.tmpl +0 -8
- package/docs/jsdoc-template/tmpl/tutorial.tmpl +0 -21
- package/docs/jsdoc-template/tmpl/type.tmpl +0 -7
- package/docs/jsdoc.conf.json +0 -38
- package/docs/shaka-player-logo.png +0 -0
- package/docs/style.md +0 -174
- package/docs/tutorials/a11y.md +0 -64
- package/docs/tutorials/ad_monetization.md +0 -292
- package/docs/tutorials/application-level-redirects.md +0 -94
- package/docs/tutorials/architecture.md +0 -32
- package/docs/tutorials/basic-usage.md +0 -89
- package/docs/tutorials/blob-url.md +0 -15
- package/docs/tutorials/config.md +0 -148
- package/docs/tutorials/debugging.md +0 -189
- package/docs/tutorials/drm-config.md +0 -274
- package/docs/tutorials/errors.md +0 -95
- package/docs/tutorials/fairplay.md +0 -242
- package/docs/tutorials/faq.md +0 -252
- package/docs/tutorials/index.json +0 -29
- package/docs/tutorials/lcevc.md +0 -118
- package/docs/tutorials/license-server-auth.md +0 -248
- package/docs/tutorials/license-wrapping.md +0 -168
- package/docs/tutorials/manifest-parser.md +0 -365
- package/docs/tutorials/network-and-buffering-config.md +0 -119
- package/docs/tutorials/offline.md +0 -683
- package/docs/tutorials/plugins.md +0 -184
- package/docs/tutorials/selenium-grid-config.md +0 -174
- package/docs/tutorials/service-worker.md +0 -106
- package/docs/tutorials/ui-customization.md +0 -288
- package/docs/tutorials/ui.md +0 -232
- package/docs/tutorials/upgrade-manifest.md +0 -281
- package/docs/tutorials/upgrade.md +0 -104
- package/docs/tutorials/welcome.md +0 -108
- package/docs/tutorials/widevine-service-certs.md +0 -45
- package/karma.conf.js +0 -879
- package/maintained-branches.md +0 -15
- package/roadmap.md +0 -186
- package/test/abr/simple_abr_manager_unit.js +0 -398
- package/test/ads/ad_manager_unit.js +0 -260
- package/test/assumptions/uint8_array_unit.js +0 -22
- package/test/cast/cast_proxy_unit.js +0 -736
- package/test/cast/cast_receiver_integration.js +0 -488
- package/test/cast/cast_receiver_unit.js +0 -1183
- package/test/cast/cast_sender_unit.js +0 -973
- package/test/cast/cast_utils_unit.js +0 -311
- package/test/cea/cea608_memory_unit.js +0 -411
- package/test/cea/cea708_service_unit.js +0 -674
- package/test/cea/cea708_window_unit.js +0 -373
- package/test/cea/cea_decoder_unit.js +0 -615
- package/test/cea/dtvcc_packet_builder_unit.js +0 -158
- package/test/cea/dtvcc_packet_unit.js +0 -60
- package/test/cea/mp4_cea_parser_unit.js +0 -127
- package/test/codec_switching/codec_switching_integration.js +0 -182
- package/test/dash/dash_parser_content_protection_unit.js +0 -998
- package/test/dash/dash_parser_integration.js +0 -74
- package/test/dash/dash_parser_live_unit.js +0 -1542
- package/test/dash/dash_parser_manifest_unit.js +0 -3121
- package/test/dash/dash_parser_segment_base_unit.js +0 -421
- package/test/dash/dash_parser_segment_list_unit.js +0 -380
- package/test/dash/dash_parser_segment_template_unit.js +0 -910
- package/test/dash/mpd_utils_unit.js +0 -794
- package/test/demo/demo_unit.js +0 -108
- package/test/deprecate/enforcer_unit.js +0 -74
- package/test/deprecate/version_unit.js +0 -57
- package/test/hls/hls_live_unit.js +0 -1330
- package/test/hls/hls_parser_unit.js +0 -5276
- package/test/hls/manifest_text_parser_unit.js +0 -545
- package/test/media/adaptation_set_criteria_unit.js +0 -806
- package/test/media/adaptation_set_unit.js +0 -229
- package/test/media/buffering_observer_unit.js +0 -143
- package/test/media/closed_caption_parser_unit.js +0 -18
- package/test/media/content_workarounds_unit.js +0 -43
- package/test/media/drm_engine_integration.js +0 -356
- package/test/media/drm_engine_unit.js +0 -2805
- package/test/media/media_source_engine_integration.js +0 -691
- package/test/media/media_source_engine_unit.js +0 -1512
- package/test/media/mp4_segment_index_parser_unit.js +0 -80
- package/test/media/play_rate_controller_unit.js +0 -69
- package/test/media/playhead_unit.js +0 -1394
- package/test/media/presentation_timeline_unit.js +0 -477
- package/test/media/quality_observer_unit.js +0 -138
- package/test/media/region_observer_unit.js +0 -374
- package/test/media/region_timeline_unit.js +0 -139
- package/test/media/segment_index_unit.js +0 -1080
- package/test/media/segment_prefetch_unit.js +0 -243
- package/test/media/segment_reference_unit.js +0 -63
- package/test/media/stall_detector_unit.js +0 -184
- package/test/media/streaming_engine_integration.js +0 -632
- package/test/media/streaming_engine_unit.js +0 -4211
- package/test/media/time_ranges_utils_unit.js +0 -123
- package/test/media/webm_segment_index_parser_unit.js +0 -90
- package/test/mss/mss_parser_content_protection_unit.js +0 -49
- package/test/mss/mss_parser_unit.js +0 -474
- package/test/mss/mss_player_integration.js +0 -124
- package/test/net/data_uri_plugin_unit.js +0 -105
- package/test/net/http_plugin_unit.js +0 -439
- package/test/net/networking_engine_unit.js +0 -1236
- package/test/net/networking_utils_unit.js +0 -37
- package/test/offline/download_progress_estimator_unit.js +0 -90
- package/test/offline/indexeddb_storage_unit.js +0 -192
- package/test/offline/manifest_convert_unit.js +0 -622
- package/test/offline/offline_integration.js +0 -168
- package/test/offline/offline_manifest_parser_unit.js +0 -231
- package/test/offline/offline_scheme_unit.js +0 -154
- package/test/offline/offline_uri_unit.js +0 -59
- package/test/offline/storage_compatibility_unit.js +0 -344
- package/test/offline/storage_integration.js +0 -1858
- package/test/player_external.js +0 -237
- package/test/player_integration.js +0 -1371
- package/test/player_load_graph_integration.js +0 -865
- package/test/player_src_equals_external.js +0 -154
- package/test/player_src_equals_integration.js +0 -527
- package/test/player_unit.js +0 -4434
- package/test/polyfill/media_capabilities_unit.js +0 -277
- package/test/polyfill/patchedmediakeys_apple_unit.js +0 -130
- package/test/test/assets/3675/chunk-stream0-00001.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00002.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00003.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00004.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00005.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00006.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00007.m4s +0 -0
- package/test/test/assets/3675/dash_0.mpd +0 -30
- package/test/test/assets/3675/dash_1.mpd +0 -30
- package/test/test/assets/3675/dash_2.mpd +0 -30
- package/test/test/assets/3675/dash_3.mpd +0 -30
- package/test/test/assets/3675/dash_4.mpd +0 -30
- package/test/test/assets/3675/dash_5.mpd +0 -26
- package/test/test/assets/3675/init-stream0.m4s +0 -0
- package/test/test/assets/audio-xhe-aac.mp4 +0 -0
- package/test/test/assets/audio.ts +0 -0
- package/test/test/assets/captions-test.ts +0 -0
- package/test/test/assets/cea-init.mp4 +0 -0
- package/test/test/assets/cea-segment.mp4 +0 -0
- package/test/test/assets/chapters.srt +0 -11
- package/test/test/assets/chapters.vtt +0 -10
- package/test/test/assets/chapters2.vtt +0 -10
- package/test/test/assets/dash-aes-128/Fragments(video=0,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/Fragments(video=20000000,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/Fragments(video=40000000,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/Fragments(video=60000000,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/Fragments(video=i,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/dash.mpd +0 -18
- package/test/test/assets/dash-aes-128/license +0 -1
- package/test/test/assets/dash-multi-codec/audio_en_2c_128k_aac.mp4 +0 -0
- package/test/test/assets/dash-multi-codec/audio_es_2c_64k_opus.webm +0 -0
- package/test/test/assets/dash-multi-codec/dash.mpd +0 -32
- package/test/test/assets/dash-multi-codec/video_144p_108k_h264.mp4 +0 -0
- package/test/test/assets/db-dump-v1.json +0 -1
- package/test/test/assets/db-dump-v2-broken.json +0 -1
- package/test/test/assets/db-dump-v2-clean.json +0 -1
- package/test/test/assets/db-dump-v3.json +0 -1
- package/test/test/assets/db-dump-v4-broken.json +0 -1
- package/test/test/assets/db-dump-v5.json +0 -1
- package/test/test/assets/empty_caption_video_init.mp4 +0 -0
- package/test/test/assets/empty_caption_video_segment.mp4 +0 -0
- package/test/test/assets/encrypted-sintel-audio-init.mp4 +0 -0
- package/test/test/assets/encrypted-sintel-audio-segment.mp4 +0 -0
- package/test/test/assets/encrypted-sintel-video-init.mp4 +0 -0
- package/test/test/assets/encrypted-sintel-video-segment.mp4 +0 -0
- package/test/test/assets/green-pixel.mp4 +0 -0
- package/test/test/assets/green-pixel.txt +0 -15
- package/test/test/assets/h265-cea-init.mp4 +0 -0
- package/test/test/assets/h265-cea-segment.mp4 +0 -0
- package/test/test/assets/hls-raw-aac/fileSequence0.aac +0 -0
- package/test/test/assets/hls-raw-aac/fileSequence1.aac +0 -0
- package/test/test/assets/hls-raw-aac/fileSequence2.aac +0 -0
- package/test/test/assets/hls-raw-aac/fileSequence3.aac +0 -0
- package/test/test/assets/hls-raw-aac/manifest.m3u8 +0 -4
- package/test/test/assets/hls-raw-aac/stream.m4a.m3u8 +0 -14
- package/test/test/assets/hls-raw-ac3/fileSequence0.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence1.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence2.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence3.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence4.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence5.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence6.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence7.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/prog_index.m3u8 +0 -31
- package/test/test/assets/hls-raw-ec3/fileSequence0.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence1.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence2.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence3.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence4.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence5.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence6.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence7.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/prog_index.m3u8 +0 -31
- package/test/test/assets/hls-raw-mp3/chunklist_w905519204.m3u8 +0 -13
- package/test/test/assets/hls-raw-mp3/media_w905519204_0.mp3 +0 -0
- package/test/test/assets/hls-raw-mp3/media_w905519204_1.mp3 +0 -0
- package/test/test/assets/hls-raw-mp3/media_w905519204_2.mp3 +0 -0
- package/test/test/assets/hls-raw-mp3/media_w905519204_3.mp3 +0 -0
- package/test/test/assets/hls-raw-mp3/playlist.m3u8 +0 -4
- package/test/test/assets/hls-ts-aac/playlist.m3u8 +0 -23
- package/test/test/assets/hls-ts-aac/segment_0.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_1.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_2.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_3.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_4.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_5.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_6.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_7.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0000.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0001.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0002.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0003.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0004.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0005.ts +0 -0
- package/test/test/assets/hls-ts-ac3/prog_index.m3u8 +0 -19
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0000.ts +0 -0
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0001.ts +0 -0
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0002.ts +0 -0
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0003.ts +0 -0
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0004.ts +0 -0
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0005.ts +0 -0
- package/test/test/assets/hls-ts-ec3/prog_index.m3u8 +0 -19
- package/test/test/assets/hls-ts-h264/fileSequence0.ts +0 -0
- package/test/test/assets/hls-ts-h264/fileSequence1.ts +0 -0
- package/test/test/assets/hls-ts-h264/fileSequence2.ts +0 -0
- package/test/test/assets/hls-ts-h264/fileSequence3.ts +0 -0
- package/test/test/assets/hls-ts-h264/fileSequence4.ts +0 -0
- package/test/test/assets/hls-ts-h264/fileSequence5.ts +0 -0
- package/test/test/assets/hls-ts-h264/prog_index.m3u8 +0 -25
- package/test/test/assets/hls-ts-h265/0.ts +0 -0
- package/test/test/assets/hls-ts-h265/hevc.m3u8 +0 -6
- package/test/test/assets/hls-ts-h265/index.m3u8 +0 -7
- package/test/test/assets/hls-ts-mp3/manifest.m3u8 +0 -13
- package/test/test/assets/hls-ts-mp3/media_w239891843_0.ts +0 -0
- package/test/test/assets/hls-ts-mp3/media_w239891843_1.ts +0 -0
- package/test/test/assets/hls-ts-mp3/media_w239891843_2.ts +0 -0
- package/test/test/assets/hls-ts-mp3/media_w239891843_3.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/chunk.m3u8 +0 -17
- package/test/test/assets/hls-ts-muxed-aac-h264/n_0_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/n_1_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/n_2_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/n_3_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/n_4_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/n_5_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/playlist.m3u8 +0 -4
- package/test/test/assets/hls-ts-muxed-aac-h265/0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h265/1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h265/media.m3u8 +0 -9
- package/test/test/assets/hls-ts-muxed-ac3-h264/media.m3u8 +0 -24
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00000.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00001.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00002.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00003.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00004.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00005.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0000.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0001.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0002.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0003.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/prog_index.m3u8 +0 -14
- package/test/test/assets/hls-ts-muxed-mp3-h264/index.m3u8 +0 -23
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-1-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-2-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-3-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-4-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-5-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-6-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-7-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-8-v1-a1.ts +0 -0
- package/test/test/assets/id3-metadata.aac +0 -0
- package/test/test/assets/id3-metadata.ts +0 -0
- package/test/test/assets/index-segment.mp4 +0 -0
- package/test/test/assets/index-segment.webm +0 -0
- package/test/test/assets/init-segment.webm +0 -0
- package/test/test/assets/large_file.mpd +0 -4930
- package/test/test/assets/multidrm-audio-init.mp4 +0 -0
- package/test/test/assets/multidrm-audio-segment.mp4 +0 -0
- package/test/test/assets/multidrm-video-init.mp4 +0 -0
- package/test/test/assets/multidrm-video-segment.mp4 +0 -0
- package/test/test/assets/multiple-trun-init.mp4 +0 -0
- package/test/test/assets/multiple-trun-segment.mp4 +0 -0
- package/test/test/assets/sintel-audio-init.mp4 +0 -0
- package/test/test/assets/sintel-audio-segment.mp4 +0 -0
- package/test/test/assets/sintel-video-init.mp4 +0 -0
- package/test/test/assets/sintel-video-segment.mp4 +0 -0
- package/test/test/assets/small.mp4 +0 -0
- package/test/test/assets/text-clip-alt.vtt +0 -63
- package/test/test/assets/text-clip.vtt +0 -63
- package/test/test/assets/thumbnails-sprites.vtt +0 -10
- package/test/test/assets/thumbnails.vtt +0 -10
- package/test/test/assets/ttml-init.mp4 +0 -0
- package/test/test/assets/ttml-segment-multiplemdat.mp4 +0 -0
- package/test/test/assets/ttml-segment.mp4 +0 -0
- package/test/test/assets/video.ts +0 -0
- package/test/test/assets/vtt-init.mp4 +0 -0
- package/test/test/assets/vtt-segment-multi-payload.mp4 +0 -0
- package/test/test/assets/vtt-segment-no-duration.mp4 +0 -0
- package/test/test/assets/vtt-segment-settings.mp4 +0 -0
- package/test/test/assets/vtt-segment.mp4 +0 -0
- package/test/test/boot.js +0 -495
- package/test/test/externs/filters.js +0 -44
- package/test/test/externs/fontfaceonload.js +0 -29
- package/test/test/externs/jasmine.js +0 -670
- package/test/test/externs/karma.js +0 -26
- package/test/test/externs/require.js +0 -21
- package/test/test/externs/sprintf.js +0 -18
- package/test/test/namespace.js +0 -10
- package/test/test/util/canned_idb.js +0 -379
- package/test/test/util/cea_utils.js +0 -60
- package/test/test/util/dash_parser_util.js +0 -329
- package/test/test/util/fake_ad.js +0 -321
- package/test/test/util/fake_ad_manager.js +0 -122
- package/test/test/util/fake_demo_main.js +0 -144
- package/test/test/util/fake_drm_engine.js +0 -103
- package/test/test/util/fake_media_source_engine.js +0 -464
- package/test/test/util/fake_networking_engine.js +0 -381
- package/test/test/util/fake_segment_prefetch.js +0 -84
- package/test/test/util/fake_text_displayer.js +0 -60
- package/test/test/util/id3_generator.js +0 -100
- package/test/test/util/indexeddb_utils.js +0 -124
- package/test/test/util/jasmine_fetch.js +0 -382
- package/test/test/util/layout_tests.js +0 -435
- package/test/test/util/loader.js +0 -88
- package/test/test/util/manifest_generator.js +0 -705
- package/test/test/util/manifest_parser_util.js +0 -101
- package/test/test/util/mss_parser_util.js +0 -119
- package/test/test/util/offline_utils.js +0 -105
- package/test/test/util/simple_fakes.js +0 -535
- package/test/test/util/stream_generator.js +0 -676
- package/test/test/util/streaming_engine_util.js +0 -506
- package/test/test/util/test_scheme.js +0 -778
- package/test/test/util/ttml_utils.js +0 -77
- package/test/test/util/ui_utils.js +0 -183
- package/test/test/util/util.js +0 -374
- package/test/test/util/waiter.js +0 -406
- package/test/text/cue_integration.js +0 -51
- package/test/text/lrc_text_parser_unit.js +0 -98
- package/test/text/mp4_ttml_parser_unit.js +0 -171
- package/test/text/mp4_vtt_parser_unit.js +0 -195
- package/test/text/sbv_text_parser_unit.js +0 -81
- package/test/text/simple_text_displayer_unit.js +0 -468
- package/test/text/srt_text_parser_unit.js +0 -163
- package/test/text/ssa_text_parser_unit.js +0 -382
- package/test/text/text_displayer_layout_unit.js +0 -323
- package/test/text/text_engine_unit.js +0 -500
- package/test/text/text_track_integration.js +0 -186
- package/test/text/ttml_text_parser_unit.js +0 -2176
- package/test/text/ui_text_displayer_unit.js +0 -608
- package/test/text/vtt_text_parser_unit.js +0 -1363
- package/test/text/web_vtt_generator_unit.js +0 -144
- package/test/text/web_vtt_layout_integration.js +0 -524
- package/test/transmuxer/transmuxer_engine_integration.js +0 -69
- package/test/transmuxer/transmuxer_integration.js +0 -443
- package/test/ui/ad_ui_unit.js +0 -369
- package/test/ui/localization_unit.js +0 -508
- package/test/ui/ui_customization_unit.js +0 -208
- package/test/ui/ui_integration.js +0 -669
- package/test/ui/ui_unit.js +0 -902
- package/test/util/abortable_operation_unit.js +0 -624
- package/test/util/array_utils_unit.js +0 -58
- package/test/util/buffer_utils_unit.js +0 -185
- package/test/util/cmcd_manager_unit.js +0 -440
- package/test/util/content_steering_manager_unit.js +0 -427
- package/test/util/data_view_reader_unit.js +0 -254
- package/test/util/ebml_parser_unit.js +0 -297
- package/test/util/event_manager_unit.js +0 -185
- package/test/util/fake_event_target_unit.js +0 -123
- package/test/util/id3_utils_unit.js +0 -168
- package/test/util/iterables_unit.js +0 -68
- package/test/util/language_utils_unit.js +0 -240
- package/test/util/manifest_parser_utils_unit.js +0 -55
- package/test/util/mime_utils_unit.js +0 -64
- package/test/util/mp4_box_parsers_unit.js +0 -246
- package/test/util/mp4_parser_unit.js +0 -373
- package/test/util/multi_map_unit.js +0 -94
- package/test/util/object_utils_unit.js +0 -79
- package/test/util/periods_unit.js +0 -1623
- package/test/util/pssh_unit.js +0 -226
- package/test/util/state_history_unit.js +0 -101
- package/test/util/stream_utils_unit.js +0 -1068
- package/test/util/string_utils_unit.js +0 -166
- package/test/util/text_parser_unit.js +0 -165
- package/test/util/ts_parser_unit.js +0 -77
- package/test/util/xml_utils_unit.js +0 -444
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/*! @license
|
|
2
|
-
* Shaka Player
|
|
3
|
-
* Copyright 2016 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
describe('TransmuxerEngine', () => {
|
|
8
|
-
const ContentType = shaka.util.ManifestParserUtils.ContentType;
|
|
9
|
-
|
|
10
|
-
const mp4MimeType = 'video/mp4; codecs="avc1.42E01E"';
|
|
11
|
-
const transportStreamVideoMimeType = 'video/mp2t; codecs="avc1.42E01E"';
|
|
12
|
-
const transportStreamAudioMimeType = 'video/mp2t; codecs="mp4a.40.2"';
|
|
13
|
-
const aacAudioMimeType = 'audio/aac';
|
|
14
|
-
|
|
15
|
-
describe('isSupported', () => {
|
|
16
|
-
const TransmuxerEngine = shaka.transmuxer.TransmuxerEngine;
|
|
17
|
-
|
|
18
|
-
it('returns whether the content type is supported', () => {
|
|
19
|
-
expect(TransmuxerEngine.isSupported(
|
|
20
|
-
mp4MimeType, ContentType.VIDEO)).toBe(false);
|
|
21
|
-
expect(TransmuxerEngine.isSupported(
|
|
22
|
-
transportStreamVideoMimeType, ContentType.VIDEO)).toBe(true);
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
// Issue #1991
|
|
26
|
-
it('handles upper-case MIME types', () => {
|
|
27
|
-
const mimeType = transportStreamVideoMimeType.replace('mp2t', 'MP2T');
|
|
28
|
-
expect(TransmuxerEngine.isSupported(
|
|
29
|
-
mimeType, ContentType.VIDEO)).toBe(true);
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
describe('convertCodecs', () => {
|
|
34
|
-
const TransmuxerEngine = shaka.transmuxer.TransmuxerEngine;
|
|
35
|
-
const convertCodecs =
|
|
36
|
-
(type, codecs) => TransmuxerEngine.convertCodecs(type, codecs);
|
|
37
|
-
|
|
38
|
-
it('returns converted codecs', () => {
|
|
39
|
-
const convertedVideoCodecs =
|
|
40
|
-
convertCodecs(ContentType.VIDEO, transportStreamVideoMimeType);
|
|
41
|
-
const convertedAudioCodecs =
|
|
42
|
-
convertCodecs(ContentType.AUDIO, transportStreamAudioMimeType);
|
|
43
|
-
const convertedAacCodecs =
|
|
44
|
-
convertCodecs(ContentType.AUDIO, aacAudioMimeType);
|
|
45
|
-
const expectedVideoCodecs = 'video/mp4; codecs="avc1.42E01E"';
|
|
46
|
-
const expectedAudioCodecs = 'audio/mp4; codecs="mp4a.40.2"';
|
|
47
|
-
const expectedAacCodecs = 'audio/mp4; codecs="mp4a.40.2"';
|
|
48
|
-
expect(convertedVideoCodecs).toBe(expectedVideoCodecs);
|
|
49
|
-
expect(convertedAudioCodecs).toBe(expectedAudioCodecs);
|
|
50
|
-
expect(convertedAacCodecs).toBe(expectedAacCodecs);
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
// Issue #1991
|
|
54
|
-
it('handles upper-case MIME types', () => {
|
|
55
|
-
expect(convertCodecs(
|
|
56
|
-
ContentType.VIDEO, 'video/MP2T; codecs="avc1.420001"'))
|
|
57
|
-
.toBe('video/mp4; codecs="avc1.420001"');
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
it('converts legacy avc1 codec strings', () => {
|
|
61
|
-
expect(convertCodecs(
|
|
62
|
-
ContentType.VIDEO, 'video/mp2t; codecs="avc1.100.42"'))
|
|
63
|
-
.toBe('video/mp4; codecs="avc1.64002a"');
|
|
64
|
-
expect(convertCodecs(
|
|
65
|
-
ContentType.VIDEO, 'video/mp2t; codecs="avc1.66.1"'))
|
|
66
|
-
.toBe('video/mp4; codecs="avc1.420001"');
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
});
|
|
@@ -1,443 +0,0 @@
|
|
|
1
|
-
/*! @license
|
|
2
|
-
* Shaka Player
|
|
3
|
-
* Copyright 2016 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* For unknown reasons, these tests fail in the test labs for Edge on Windows,
|
|
9
|
-
* in ways that do not seem to be unrelated to transmuxers.
|
|
10
|
-
* Practical testing has not found any sign that playback is actually broken in
|
|
11
|
-
* Edge, so these tests are disabled on Edge for the time being.
|
|
12
|
-
* TODO(#5834): Remove this filter once the tests are fixed.
|
|
13
|
-
* @return {boolean}
|
|
14
|
-
*/
|
|
15
|
-
function checkNoBrokenEdge() {
|
|
16
|
-
const chromeVersion = shaka.util.Platform.chromeVersion();
|
|
17
|
-
if (shaka.util.Platform.isWindows() && shaka.util.Platform.isEdge() &&
|
|
18
|
-
chromeVersion && chromeVersion <= 122) {
|
|
19
|
-
// When the tests fail, it's due to the manifest parser failing to find a
|
|
20
|
-
// factory. Attempt to find a factory first, to avoid filtering the tests
|
|
21
|
-
// when running in a non-broken Edge environment.
|
|
22
|
-
const uri = 'fakeuri.m3u8';
|
|
23
|
-
const mimeType = 'application/x-mpegurl';
|
|
24
|
-
/* eslint-disable no-restricted-syntax */
|
|
25
|
-
try {
|
|
26
|
-
shaka.media.ManifestParser.getFactory(uri, mimeType);
|
|
27
|
-
return true;
|
|
28
|
-
} catch (error) {
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
/* eslint-enable no-restricted-syntax */
|
|
32
|
-
}
|
|
33
|
-
return true;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
filterDescribe('Transmuxer Player', checkNoBrokenEdge, () => {
|
|
37
|
-
const Util = shaka.test.Util;
|
|
38
|
-
|
|
39
|
-
/** @type {!jasmine.Spy} */
|
|
40
|
-
let onErrorSpy;
|
|
41
|
-
|
|
42
|
-
/** @type {!HTMLVideoElement} */
|
|
43
|
-
let video;
|
|
44
|
-
/** @type {shaka.Player} */
|
|
45
|
-
let player;
|
|
46
|
-
/** @type {!shaka.util.EventManager} */
|
|
47
|
-
let eventManager;
|
|
48
|
-
|
|
49
|
-
let compiledShaka;
|
|
50
|
-
|
|
51
|
-
/** @type {!shaka.test.Waiter} */
|
|
52
|
-
let waiter;
|
|
53
|
-
|
|
54
|
-
function isAc3Supported() {
|
|
55
|
-
if (!MediaSource.isTypeSupported('audio/mp4; codecs="ac-3"')) {
|
|
56
|
-
return false;
|
|
57
|
-
}
|
|
58
|
-
// AC3 is flaky in some Tizen devices, so we need omit it for now.
|
|
59
|
-
if (shaka.util.Platform.isTizen()) {
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
62
|
-
// It seems that AC3 on Edge Windows from github actions is not working
|
|
63
|
-
// (in the lab AC3 is working). The AC3 detection is currently hard-coded
|
|
64
|
-
// to true, which leads to a failure in GitHub's environment.
|
|
65
|
-
// We must enable this, once it is resolved:
|
|
66
|
-
// https://bugs.chromium.org/p/chromium/issues/detail?id=1450313
|
|
67
|
-
const chromeVersion = shaka.util.Platform.chromeVersion();
|
|
68
|
-
if (shaka.util.Platform.isWindows() && shaka.util.Platform.isEdge() &&
|
|
69
|
-
chromeVersion && chromeVersion <= 122) {
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
function isEc3Supported() {
|
|
76
|
-
if (!MediaSource.isTypeSupported('audio/mp4; codecs="ec-3"')) {
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
// EC3 is flaky in some Tizen devices, so we need omit it for now.
|
|
80
|
-
if (shaka.util.Platform.isTizen()) {
|
|
81
|
-
return false;
|
|
82
|
-
}
|
|
83
|
-
// It seems that EC3 on Edge Windows from github actions is not working
|
|
84
|
-
// (in the lab EC3 is working). The EC3 detection is currently hard-coded
|
|
85
|
-
// to true, which leads to a failure in GitHub's environment.
|
|
86
|
-
// We must enable this, once it is resolved:
|
|
87
|
-
// https://bugs.chromium.org/p/chromium/issues/detail?id=1450313
|
|
88
|
-
const chromeVersion = shaka.util.Platform.chromeVersion();
|
|
89
|
-
if (shaka.util.Platform.isWindows() && shaka.util.Platform.isEdge() &&
|
|
90
|
-
chromeVersion && chromeVersion <= 122) {
|
|
91
|
-
return false;
|
|
92
|
-
}
|
|
93
|
-
return true;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
beforeAll(async () => {
|
|
97
|
-
video = shaka.test.UiUtils.createVideoElement();
|
|
98
|
-
document.body.appendChild(video);
|
|
99
|
-
compiledShaka =
|
|
100
|
-
await shaka.test.Loader.loadShaka(getClientArg('uncompiled'));
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
beforeEach(async () => {
|
|
104
|
-
await shaka.test.TestScheme.createManifests(compiledShaka, '_compiled');
|
|
105
|
-
player = new compiledShaka.Player();
|
|
106
|
-
await player.attach(video);
|
|
107
|
-
|
|
108
|
-
player.configure('mediaSource.forceTransmux', true);
|
|
109
|
-
player.configure('streaming.useNativeHlsOnSafari', false);
|
|
110
|
-
|
|
111
|
-
// Disable stall detection, which can interfere with playback tests.
|
|
112
|
-
player.configure('streaming.stallEnabled', false);
|
|
113
|
-
|
|
114
|
-
// Grab event manager from the uncompiled library:
|
|
115
|
-
eventManager = new shaka.util.EventManager();
|
|
116
|
-
waiter = new shaka.test.Waiter(eventManager);
|
|
117
|
-
waiter.setPlayer(player);
|
|
118
|
-
|
|
119
|
-
onErrorSpy = jasmine.createSpy('onError');
|
|
120
|
-
onErrorSpy.and.callFake((event) => fail(event.detail));
|
|
121
|
-
eventManager.listen(player, 'error', Util.spyFunc(onErrorSpy));
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
afterEach(async () => {
|
|
125
|
-
eventManager.release();
|
|
126
|
-
await player.destroy();
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
afterAll(() => {
|
|
130
|
-
document.body.removeChild(video);
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
describe('for audio', () => {
|
|
134
|
-
it('raw AAC', async () => {
|
|
135
|
-
await player.load('/base/test/test/assets/hls-raw-aac/manifest.m3u8');
|
|
136
|
-
await video.play();
|
|
137
|
-
expect(player.isLive()).toBe(false);
|
|
138
|
-
|
|
139
|
-
// Wait for the video to start playback. If it takes longer than 10
|
|
140
|
-
// seconds, fail the test.
|
|
141
|
-
await waiter.waitForMovementOrFailOnTimeout(video, 10);
|
|
142
|
-
|
|
143
|
-
// Play for 15 seconds, but stop early if the video ends. If it takes
|
|
144
|
-
// longer than 45 seconds, fail the test.
|
|
145
|
-
await waiter.waitUntilPlayheadReachesOrFailOnTimeout(video, 15, 45);
|
|
146
|
-
|
|
147
|
-
await player.unload();
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
it('raw MP3', async () => {
|
|
151
|
-
if (!MediaSource.isTypeSupported('audio/mp4; codecs="mp3"')) {
|
|
152
|
-
pending('Codec MP3 in MP4 is not supported by the platform.');
|
|
153
|
-
}
|
|
154
|
-
await player.load('/base/test/test/assets/hls-raw-mp3/playlist.m3u8');
|
|
155
|
-
await video.play();
|
|
156
|
-
expect(player.isLive()).toBe(false);
|
|
157
|
-
|
|
158
|
-
// Wait for the video to start playback. If it takes longer than 10
|
|
159
|
-
// seconds, fail the test.
|
|
160
|
-
await waiter.waitForMovementOrFailOnTimeout(video, 10);
|
|
161
|
-
|
|
162
|
-
// Play for 15 seconds, but stop early if the video ends. If it takes
|
|
163
|
-
// longer than 45 seconds, fail the test.
|
|
164
|
-
await waiter.waitUntilPlayheadReachesOrFailOnTimeout(video, 15, 45);
|
|
165
|
-
|
|
166
|
-
await player.unload();
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
it('raw AC3', async () => {
|
|
170
|
-
if (!isAc3Supported()) {
|
|
171
|
-
pending('Codec AC-3 is not supported by the platform.');
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
await player.load('/base/test/test/assets/hls-raw-ac3/prog_index.m3u8');
|
|
175
|
-
await video.play();
|
|
176
|
-
expect(player.isLive()).toBe(false);
|
|
177
|
-
|
|
178
|
-
// Wait for the video to start playback. If it takes longer than 10
|
|
179
|
-
// seconds, fail the test.
|
|
180
|
-
await waiter.waitForMovementOrFailOnTimeout(video, 10);
|
|
181
|
-
|
|
182
|
-
// Play for 15 seconds, but stop early if the video ends. If it takes
|
|
183
|
-
// longer than 45 seconds, fail the test.
|
|
184
|
-
await waiter.waitUntilPlayheadReachesOrFailOnTimeout(video, 15, 45);
|
|
185
|
-
|
|
186
|
-
await player.unload();
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
it('raw EC3', async () => {
|
|
190
|
-
if (!isEc3Supported()) {
|
|
191
|
-
pending('Codec EC-3 is not supported by the platform.');
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
await player.load('/base/test/test/assets/hls-raw-ec3/prog_index.m3u8');
|
|
195
|
-
await video.play();
|
|
196
|
-
expect(player.isLive()).toBe(false);
|
|
197
|
-
|
|
198
|
-
// Wait for the video to start playback. If it takes longer than 10
|
|
199
|
-
// seconds, fail the test.
|
|
200
|
-
await waiter.waitForMovementOrFailOnTimeout(video, 10);
|
|
201
|
-
|
|
202
|
-
// Play for 15 seconds, but stop early if the video ends. If it takes
|
|
203
|
-
// longer than 45 seconds, fail the test.
|
|
204
|
-
await waiter.waitUntilPlayheadReachesOrFailOnTimeout(video, 15, 45);
|
|
205
|
-
|
|
206
|
-
await player.unload();
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
it('AAC in TS', async () => {
|
|
210
|
-
await player.load('/base/test/test/assets/hls-ts-aac/playlist.m3u8');
|
|
211
|
-
await video.play();
|
|
212
|
-
expect(player.isLive()).toBe(false);
|
|
213
|
-
|
|
214
|
-
// Wait for the video to start playback. If it takes longer than 10
|
|
215
|
-
// seconds, fail the test.
|
|
216
|
-
await waiter.waitForMovementOrFailOnTimeout(video, 10);
|
|
217
|
-
|
|
218
|
-
// Play for 15 seconds, but stop early if the video ends. If it takes
|
|
219
|
-
// longer than 45 seconds, fail the test.
|
|
220
|
-
await waiter.waitUntilPlayheadReachesOrFailOnTimeout(video, 15, 45);
|
|
221
|
-
|
|
222
|
-
await player.unload();
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
it('MP3 in TS', async () => {
|
|
226
|
-
if (!MediaSource.isTypeSupported('audio/mp4; codecs="mp3"') &&
|
|
227
|
-
!MediaSource.isTypeSupported('audio/mpeg')) {
|
|
228
|
-
pending('Codec MP3 is not supported by the platform.');
|
|
229
|
-
}
|
|
230
|
-
// This tests is flaky in some Tizen devices, so we need omit it for now.
|
|
231
|
-
if (shaka.util.Platform.isTizen()) {
|
|
232
|
-
return;
|
|
233
|
-
}
|
|
234
|
-
await player.load('/base/test/test/assets/hls-ts-mp3/manifest.m3u8');
|
|
235
|
-
await video.play();
|
|
236
|
-
expect(player.isLive()).toBe(false);
|
|
237
|
-
|
|
238
|
-
// Wait for the video to start playback. If it takes longer than 10
|
|
239
|
-
// seconds, fail the test.
|
|
240
|
-
await waiter.waitForMovementOrFailOnTimeout(video, 10);
|
|
241
|
-
|
|
242
|
-
// Play for 15 seconds, but stop early if the video ends. If it takes
|
|
243
|
-
// longer than 45 seconds, fail the test.
|
|
244
|
-
await waiter.waitUntilPlayheadReachesOrFailOnTimeout(video, 15, 45);
|
|
245
|
-
|
|
246
|
-
await player.unload();
|
|
247
|
-
});
|
|
248
|
-
|
|
249
|
-
it('AC3 in TS', async () => {
|
|
250
|
-
if (!isAc3Supported()) {
|
|
251
|
-
pending('Codec AC-3 is not supported by the platform.');
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
await player.load('/base/test/test/assets/hls-ts-ac3/prog_index.m3u8');
|
|
255
|
-
await video.play();
|
|
256
|
-
expect(player.isLive()).toBe(false);
|
|
257
|
-
|
|
258
|
-
// Wait for the video to start playback. If it takes longer than 10
|
|
259
|
-
// seconds, fail the test.
|
|
260
|
-
await waiter.waitForMovementOrFailOnTimeout(video, 10);
|
|
261
|
-
|
|
262
|
-
// Play for 15 seconds, but stop early if the video ends. If it takes
|
|
263
|
-
// longer than 45 seconds, fail the test.
|
|
264
|
-
await waiter.waitUntilPlayheadReachesOrFailOnTimeout(video, 15, 45);
|
|
265
|
-
|
|
266
|
-
await player.unload();
|
|
267
|
-
});
|
|
268
|
-
|
|
269
|
-
it('EC3 in TS', async () => {
|
|
270
|
-
if (!isEc3Supported()) {
|
|
271
|
-
pending('Codec EC-3 is not supported by the platform.');
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
await player.load('/base/test/test/assets/hls-ts-ec3/prog_index.m3u8');
|
|
275
|
-
await video.play();
|
|
276
|
-
expect(player.isLive()).toBe(false);
|
|
277
|
-
|
|
278
|
-
// Wait for the video to start playback. If it takes longer than 10
|
|
279
|
-
// seconds, fail the test.
|
|
280
|
-
await waiter.waitForMovementOrFailOnTimeout(video, 10);
|
|
281
|
-
|
|
282
|
-
// Play for 15 seconds, but stop early if the video ends. If it takes
|
|
283
|
-
// longer than 45 seconds, fail the test.
|
|
284
|
-
await waiter.waitUntilPlayheadReachesOrFailOnTimeout(video, 15, 45);
|
|
285
|
-
|
|
286
|
-
await player.unload();
|
|
287
|
-
});
|
|
288
|
-
});
|
|
289
|
-
|
|
290
|
-
describe('for video', () => {
|
|
291
|
-
it('H.264 in TS', async () => {
|
|
292
|
-
await player.load('/base/test/test/assets/hls-ts-h264/prog_index.m3u8');
|
|
293
|
-
await video.play();
|
|
294
|
-
expect(player.isLive()).toBe(false);
|
|
295
|
-
|
|
296
|
-
// Wait for the video to start playback. If it takes longer than 10
|
|
297
|
-
// seconds, fail the test.
|
|
298
|
-
await waiter.waitForMovementOrFailOnTimeout(video, 10);
|
|
299
|
-
|
|
300
|
-
// Play for 15 seconds, but stop early if the video ends. If it takes
|
|
301
|
-
// longer than 45 seconds, fail the test.
|
|
302
|
-
await waiter.waitUntilPlayheadReachesOrFailOnTimeout(video, 15, 45);
|
|
303
|
-
|
|
304
|
-
await player.unload();
|
|
305
|
-
});
|
|
306
|
-
|
|
307
|
-
it('H.265 in TS', async () => {
|
|
308
|
-
const chromeVersion = shaka.util.Platform.chromeVersion();
|
|
309
|
-
if (shaka.util.Platform.isWindows() &&
|
|
310
|
-
chromeVersion && chromeVersion === 117) {
|
|
311
|
-
// It appears that Chrome 117 beta in Windows is incorrectly reporting
|
|
312
|
-
// H.265 in MediaCapabilities
|
|
313
|
-
pending('Codec H.265 is not supported by the platform.');
|
|
314
|
-
}
|
|
315
|
-
const mimeType = 'video/mp4; codecs="hvc1.2.4.L123.B0"';
|
|
316
|
-
if (!MediaSource.isTypeSupported(mimeType)) {
|
|
317
|
-
pending('Codec H.265 is not supported by the platform.');
|
|
318
|
-
}
|
|
319
|
-
await player.load('/base/test/test/assets/hls-ts-h265/hevc.m3u8');
|
|
320
|
-
await video.play();
|
|
321
|
-
expect(player.isLive()).toBe(false);
|
|
322
|
-
|
|
323
|
-
// Wait for the video to start playback. If it takes longer than 10
|
|
324
|
-
// seconds, fail the test.
|
|
325
|
-
await waiter.waitForMovementOrFailOnTimeout(video, 10);
|
|
326
|
-
|
|
327
|
-
// Play for 15 seconds, but stop early if the video ends. If it takes
|
|
328
|
-
// longer than 45 seconds, fail the test.
|
|
329
|
-
await waiter.waitUntilPlayheadReachesOrFailOnTimeout(video, 15, 45);
|
|
330
|
-
|
|
331
|
-
await player.unload();
|
|
332
|
-
});
|
|
333
|
-
});
|
|
334
|
-
|
|
335
|
-
describe('for muxed content', () => {
|
|
336
|
-
it('H.264+AAC in TS', async () => {
|
|
337
|
-
// eslint-disable-next-line max-len
|
|
338
|
-
await player.load('/base/test/test/assets/hls-ts-muxed-aac-h264/playlist.m3u8');
|
|
339
|
-
await video.play();
|
|
340
|
-
expect(player.isLive()).toBe(false);
|
|
341
|
-
|
|
342
|
-
// Wait for the video to start playback. If it takes longer than 10
|
|
343
|
-
// seconds, fail the test.
|
|
344
|
-
await waiter.waitForMovementOrFailOnTimeout(video, 10);
|
|
345
|
-
|
|
346
|
-
// Play for 15 seconds, but stop early if the video ends. If it takes
|
|
347
|
-
// longer than 45 seconds, fail the test.
|
|
348
|
-
await waiter.waitUntilPlayheadReachesOrFailOnTimeout(video, 15, 45);
|
|
349
|
-
|
|
350
|
-
await player.unload();
|
|
351
|
-
});
|
|
352
|
-
|
|
353
|
-
it('H.265+AAC in TS', async () => {
|
|
354
|
-
const chromeVersion = shaka.util.Platform.chromeVersion();
|
|
355
|
-
if (shaka.util.Platform.isWindows() &&
|
|
356
|
-
chromeVersion && chromeVersion === 117) {
|
|
357
|
-
// It appears that Chrome 117 beta in Windows is incorrectly reporting
|
|
358
|
-
// H.265 in MediaCapabilities
|
|
359
|
-
pending('Codec H.265 is not supported by the platform.');
|
|
360
|
-
}
|
|
361
|
-
if (!MediaSource.isTypeSupported('video/mp4; codecs="hvc1.1.6.L93.90"')) {
|
|
362
|
-
pending('Codec H.265 is not supported by the platform.');
|
|
363
|
-
}
|
|
364
|
-
// eslint-disable-next-line max-len
|
|
365
|
-
await player.load('/base/test/test/assets/hls-ts-muxed-aac-h265/media.m3u8');
|
|
366
|
-
await video.play();
|
|
367
|
-
expect(player.isLive()).toBe(false);
|
|
368
|
-
|
|
369
|
-
// Wait for the video to start playback. If it takes longer than 10
|
|
370
|
-
// seconds, fail the test.
|
|
371
|
-
await waiter.waitForMovementOrFailOnTimeout(video, 10);
|
|
372
|
-
|
|
373
|
-
// Play for 15 seconds, but stop early if the video ends. If it takes
|
|
374
|
-
// longer than 45 seconds, fail the test.
|
|
375
|
-
await waiter.waitUntilPlayheadReachesOrFailOnTimeout(video, 15, 45);
|
|
376
|
-
|
|
377
|
-
await player.unload();
|
|
378
|
-
});
|
|
379
|
-
|
|
380
|
-
it('H.264+MP3 in TS', async () => {
|
|
381
|
-
if (!MediaSource.isTypeSupported('audio/mp4; codecs="mp3"')) {
|
|
382
|
-
pending('Codec MP3 in MP4 is not supported by the platform.');
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
// eslint-disable-next-line max-len
|
|
386
|
-
await player.load('/base/test/test/assets/hls-ts-muxed-mp3-h264/index.m3u8');
|
|
387
|
-
await video.play();
|
|
388
|
-
expect(player.isLive()).toBe(false);
|
|
389
|
-
|
|
390
|
-
// Wait for the video to start playback. If it takes longer than 10
|
|
391
|
-
// seconds, fail the test.
|
|
392
|
-
await waiter.waitForMovementOrFailOnTimeout(video, 10);
|
|
393
|
-
|
|
394
|
-
// Play for 15 seconds, but stop early if the video ends. If it takes
|
|
395
|
-
// longer than 45 seconds, fail the test.
|
|
396
|
-
await waiter.waitUntilPlayheadReachesOrFailOnTimeout(video, 15, 45);
|
|
397
|
-
|
|
398
|
-
await player.unload();
|
|
399
|
-
});
|
|
400
|
-
|
|
401
|
-
it('H.264+AC3 in TS', async () => {
|
|
402
|
-
if (!isAc3Supported()) {
|
|
403
|
-
pending('Codec AC-3 is not supported by the platform.');
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
// eslint-disable-next-line max-len
|
|
407
|
-
await player.load('/base/test/test/assets/hls-ts-muxed-ac3-h264/media.m3u8');
|
|
408
|
-
await video.play();
|
|
409
|
-
expect(player.isLive()).toBe(false);
|
|
410
|
-
|
|
411
|
-
// Wait for the video to start playback. If it takes longer than 10
|
|
412
|
-
// seconds, fail the test.
|
|
413
|
-
await waiter.waitForMovementOrFailOnTimeout(video, 10);
|
|
414
|
-
|
|
415
|
-
// Play for 15 seconds, but stop early if the video ends. If it takes
|
|
416
|
-
// longer than 45 seconds, fail the test.
|
|
417
|
-
await waiter.waitUntilPlayheadReachesOrFailOnTimeout(video, 15, 45);
|
|
418
|
-
|
|
419
|
-
await player.unload();
|
|
420
|
-
});
|
|
421
|
-
|
|
422
|
-
it('H.264+EC3 in TS', async () => {
|
|
423
|
-
if (!isEc3Supported()) {
|
|
424
|
-
pending('Codec EC-3 is not supported by the platform.');
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
// eslint-disable-next-line max-len
|
|
428
|
-
await player.load('/base/test/test/assets/hls-ts-muxed-ec3-h264/prog_index.m3u8');
|
|
429
|
-
await video.play();
|
|
430
|
-
expect(player.isLive()).toBe(false);
|
|
431
|
-
|
|
432
|
-
// Wait for the video to start playback. If it takes longer than 10
|
|
433
|
-
// seconds, fail the test.
|
|
434
|
-
await waiter.waitForMovementOrFailOnTimeout(video, 10);
|
|
435
|
-
|
|
436
|
-
// Play for 15 seconds, but stop early if the video ends. If it takes
|
|
437
|
-
// longer than 45 seconds, fail the test.
|
|
438
|
-
await waiter.waitUntilPlayheadReachesOrFailOnTimeout(video, 15, 45);
|
|
439
|
-
|
|
440
|
-
await player.unload();
|
|
441
|
-
});
|
|
442
|
-
});
|
|
443
|
-
});
|