Releases: bbc/bigscreen-player
10.12.3: Port Subtitle Changes from v4.7.4 (#405)
📺 What
Port Subtitle Changes from v4.7.4 (#4359)
🛠 How
Port changes made by @mattjuggins in #4359 released in Dash-Industry-Forum/dash.js v4.7.4.
This port preserves the passing of customisation options to IMSC.
10.12.2: Video frames not advancing ignore webkit (#404)
📺 What
Updates Dash.js to smp-v4.7.3-13
🛠 How
Updates Dash.js to smp-v4.7.3-13, brings in change to ignore WebKit devices from the videoFramesNotAdvancing method.
10.12.1: Don't Pass Abort Signal Into Playback Strategy (#403)
📺 What
Ensure the order of the playback strategy by not passing the abort signal further down (without updating the strategies signature).
🛠 How
Removes abortSignal parameter in the call to strategy.
10.12.0: Introduce Abort Initialisation After TearDown (#400)
📺 What
Introduces the concept of aborting initialisation if Bigscreen Player has already been torn down.
This prevents the issue where, if BSP is torn down during initialisation, TypeError: Cannot read properties of null (reading 'manifestType') or Cannot read properties of undefined (reading 'time') is thrown, depending on where mediaSources.time().manifestType is called. These errors can be caused by tearDown() tearing down and de-referencing mediaSources whilst BSP is in the process of initialising.
🛠 How
- Introduce an
AbortSignalwhich keeps the state of if BSP has been torn down. Also provides athrowIfAbortederror which throws anAbortError.- The
AbortErrorhas a custom name and message.
- The
- Call
signal.abort()on invocation oftearDown(). - Add unit tests for
abortutils. - Add integration tests to
bigscreenplayerandplayercomponent.
✅ Testing
| Test engineer sign off | ❌ |
|---|
10.11.1: Video frames not advancing updates (#402)
📺 What
Updates Dash.js with new version (smp-v4.7.3-12) to fix logic in videoFramesNotAdvancing function.
🛠 How
Brings in fix to isEnded within videoFramesNotAdvancing function in Dash.js.
10.11.0: Video frames not advancing updates (#401)
📺 What
Updates Dash.js with new version (smp-v4.7.3-11) and adds total frames debugging.
🛠 How
Brings in additional checks to videoFramesNotAdvancing function in Dash.js. Checks that we're not at the start or end of playback. Ignores these periods. Additionally, ignores periods where the player is seeking.
Passes further information with the PLAYBACK_FROZEN event to aid debugging.
Adds frames-total as a static metric to aid debugging of this issue or similar ones in the future.
10.10.2: Video frames not advancing updates (#399)
📺 What
Update the videoFramesNotAdvancing implementation to handle additional invalid or inaccurate values being reported by the Video Quality API.
🛠 How
Deals with 3 observed cases:
- Increases the default
thresholdInSecondsto5. As many WebKit-based TV environment only appear to provide an update to this value every ~2-seconds - Handle cases where some devices always report the maximum value of 32-bit signed integer as their
totalVideoFramesvalue on the Video Quality API when playing a live stream. Caused by some implementations usingtotalVideoFrames = mediaTime * frameRate - Finally, only trigger when frames are explicitly not changing, i.e
previousFrames !== currentFrames. Some devices appear to resettotalVideoFramesto0if the decoder is reinitialised.
10.10.1: Move onPlaybackFrozen to message and not error (#398)
📺 What
Reduce onPlaybackFrozen false positives being reported to chronicle.
🛠 How
Move from error to info debug reporting
10.10.0: BADGER-204 Update Dash.js to Handle cases where Video Freezes (#396)
📺 What
Updates the version of Dash.js and the source of playback rate infomration
🛠 How
Updates Bigscreen player with a new version of Dash.js that adds two new settings;
lowLatencyStallThreshold- set a 0.3s to match conventional DASH streamingvideoFramesNotAdvancing.enabled- intended to catch and handle a chromium bug where video can freeze but audio continues.videoFramesNotAdvancing.threshold- the time in seconds the player must be in video frozen state before the handling mechanism above kicks in
Additionally, updates the playback rate plugin interface to trigger off the media element rather than the Dash.js event bus, this results in playback rate changes to 0 being available which can help validate the above settings
10.9.1: Fix type errors on video only content (#393)
📺 What
Ensure no type errors on video only content
🛠 How
Check for video/audio tracks in the manifest.