Releases: bbc/bigscreen-player
10.3.0: Add audio-quality, video-quality, and max-bitrate to the on-screen debugger (#380)
📺 What
Title. The on-screen fields are derived from Chronicle records:
video-download-qualityvideo-playback-qualityvideo-max-qualityaudio-download-qualityaudio-playback-qualityaudio-max-quality
Also removes the message on quality switch rendered, and reformats the message on quality switch requested.
🛠 How
Replaces the fields bitrate, representation-audio, and representation-video. Merges playback-rate into the media-element-state field in the on-screen debugger to save some vertical space.
✅ Testing
- Renders on-screen debugger with on-demand stream
- Renders on-screen debugger with livestream
| Test engineer sign off | ❌ |
|---|
👀 See
10.2.1: Ensure play on track on switch (#379)
📺 What
- Ensure play on track switch so strategies have consistent behaviour.
🛠 How
- Update MSE strategy to
play()on track switch if paused.
10.2.0: Add `target-latency` and `current-latency` to Chronicle (Update of #361) (#378)
📺 What
Adds MSE target latency and current latency reporting to the debug menu. Useful when debugging low-latency content, particularly on TV hardware where some decoder behaviours do not match what might be expected
🛠 How
Uses existing DebugTool.dynamicMetric() method to add these metrics each time a timeupdate event is called.
✅ Testing
Added underlying dash.js functions to the mockDashInstance. No additional unit tests were added.
| Test engineer sign off | ❌ |
|---|
👀 See
New fields are seen below when the MSE strategy is chosen. The values NaN and 0 are seen when VOD content is played.
The same changes are shown again, but using live low-latency content. Extra fields, along with the existing playback rate field, can be used to determine whether low-latency content is performing as expected.
10.1.2: Bump Dash to v4.7.3-5 (#377)
📺 What
Bump Dash to v4.7.3-5
🛠 How
Bump Dash to v4.7.3-5
10.1.1: Add releasinator config file (#376)
📺 What
In preparation for a change to the release automation, adds a config file for the bot "releasinator" (previously tvr-buildatron)
🛠 How
Copy existing release behaviour over into a config file in the root directory.
✅ Testing
After this change is merged, and the change to the release automation happens (likely Fri 28th March):
- If the changes are successful a "test" release will be created and should not have any particular differences other than the name/image of the bot making the release.
10.1.0: Add Correct Initial Audio Settings (#375)
📺 What
Dash.js caches the last track used in local storage and selects the audio track based on selection priority and then max bitrate. This can result in the BroadcastMixAD (Audio Described) being selected against the users preference. This can manifest in two scenarios.
- When the last track selected was BroadcastMixAD, the user turns off their preference out of stream and then the user plays a stream with a BroadcastMixAD track, the BroadcastMixAD track will be selected.
- If the BroadcastMixAD track has a higher track selection priority in the manifest or has a higher max bitrate, the BroadcastMixAD audio track will be selected.
In both scenarios, the BroadcastMixAD track is selected when the users AD preference is off. This PR disables dash.js's media track caching and sets an initial audio preference.
🛠 How
- Disables
lastMediaSettingsCachingInfo - Sets initial audio settings to select
role: mainif Audio Described is not enabled at the start of stream. - Adds relevant units tests.
10.0.3: Use the Correct Name for Functions in MockBigScreenPlayer (#374)
📺 What
Corrects a function name used in MockBigScreenPlayer.
🛠 How
Renames setAudioDescribedEnabled to setAudioDescribed to match the actual API.
10.0.2: Add Guards Around Setting `cached.currentTime` (#373)
📺 What
Fixes an issue where cached.currentTime was not being set if mediaElement.currentTime was 0. In situations where the load was called with no initialPlaybackTime and the mediaElement.currentTime was not naturally updated, the time would stay as undefined, causing the readyHelper to not call the success callback and causing BSP to be stuck in an unready state.
🛠 How
Add, correct and unify guards around the setting of cached.currentTime in MSE strategy to ensure the value is a number.
✅ Testing
Added a unit test covering the aforementioned scenario.
10.0.1: Fix Docs Build (#372)
📺 What
Fix the Docs build
🛠 How
Update JSDoc, import syntax, and use jsdoc-plugin-typescript to allow for TS style imports in JSDoc
10.0.0: BADGERS-575: [BREAKING] Audio Described Unification (#365)
📺 What
Support a "Source Based" method of providing an, alternative, Audio Described stream with a new Media Block consisting of alternative sources which can be switched to and from mid stream. This approach is primarily intended for Native Strategy Devices but can work on any device given the streams are present and passed correctly (Assuming the device can play the stream and so on).
🛠 How
-
Refactor
MediaSourcesto keep track of and index into a record of Connection Types, the design has been left open to make further additions along these lines easy in the future. -
Expose a new, Unified, Audio Described API which can seamlessly be used with both this implementation, and the MSE Specific Implementation:
registerForAudioDescribedChanges(PreviouslyregisterForBroadcastMixADChanges)unregisterForAudioDescribedChanges(PreviouslyunregisterForBroadcastMixADChanges)isAudioDescribedAvailable(PreviouslyisBroadcastMixADAvailable)isAudioDescribedEnabled(PreviouslyisBroadcastMixADEnabled)setAudioDescribed(PreviouslysetBroadcastMixADEnabled)
-
Adds a new
enableAudioDescribedoption to Bigscreen's Init Options to start up with the AD Stream. -
Various QoL Fixes and Refactors as encountered during development.
- Native Playback Strategy Tests
- Test for BSP passing
enableAudioDescribedthrough -
MediaSourcestests -
PlayerComponenttests - Verify Failover Scenarios
- Verify MSE Implementation
- Write Docs for Generic Method
- Cleanup
- Consider removing
audio-described-cdns-availablein Chronicle and just add it tocdns-availablewhen AD Stream is active? (Testers commented that current setup is confusing)
- Consider removing
🚨 BROKEN
- Callback is not fired if AD is on by default
