Features
- #3325 Add support for version 1 Events
- #3381 Support for Clearkey license acquisition using a server component
Improvements
- #3360 Multiperiod improvements and gap handling
- Prebuffer multiple upcoming periods.
- Prebuffering of the new period now starts when audio and video of the previous period are finished buffering
- While prebuffering the new period the Sourcebuffer.timestampOffset was overwritten by the current period. This is fixed now.
- Use appendWindowStart and appendWindowEnd to set buffer ranges according to Period-start and period durations.
- Improve gap handling: Do not wait for playback to stall but instead actively jump over gaps in the timeline prior to reaching them
- Adjusted the InsufficientBufferRule in order to set the same buffer target for audio and video. This enables us to prebuffer multiple periods as we wait for all buffers to be filled before starting the prebuffering.
- Added support for period switch when the upcoming periods can not be prebuffered. In this case stream will stall and the gap handler will jump to the end of the current period, initiating a period switch to the upcoming period. Transition will not be as smooth as when the content is prebuffered
- Added gap jump at playback start
- Avoid endless loop if no live edge could be calculated because of a missing DVR window for ad periods.
- Fixed various minor issues for instance related to rounding of values
- Remove UseCalculatedLiveEdge attribute. This was used before to adjust the clientTimeOffset for SegmentTimeline depending on the DVRwindow. This is not a good approach, as the clientTimeOffset should be derived from the UTC timing source.
- #3390 Use previous stream to determine whether smooth period transition is possible
- #3389 Use the segments in the SegmentTimeline as a reference for the DVR window. This behavior can be adjusted via settings parameter.
- #3265 Patch audio track switching for GoogleCast devices
Bugfixes
- #3357 Fix invalid stream urls and syntax highlighting in samples
- #3350 Fix Typescript definition for setProtectionData
- #3364 Fix multiple subtitles displayed for multiperiod streams
- #3368 Fix issue MSS timestamp offset with timestamps > 2^53
- #3331 Fix buffer pruning
- #3369 Fix live segment list playback
- #3376 Fix multiperiod DVR window
- #3377 Stop playback ended interval when last period ended
- #3332 Fixed imageType attribute name in TTMLParser
- #3384 Use initData from protData for ClearKey decryption if the key system has already been selected