Release notes version 1.8.*

1.8.4 (2018-04-17) GA

Fixed

  • hevc: updated HEVC profile_tier_level() parser.
    • Included support for combinations of profiles, tiers and levels that were added to the HEVC standard more recently, for advanced use cases like 4:2:2 chroma subsampling.
  • dash: when requesting a ‘start again’ MPD for a Live presentation that is still in progress (i.e. specifying the begin time of the program with ”?t=<utc-time>”), the MPD@TimeShiftBufferDepth is not set. (#3857)
    • In 1.8.3 behavior was introduced that set MPD@TimeShiftBufferDepth to the duration of the archive in situations as described above. This has been changed back to the MPD@TimeShiftBufferDepth not being set at all.
  • dash: correctly set MPD@availabilityStartTime for Live events. (#3834)
    • In 1.8.3 behavior was introduced that made MPD@availabilityStartTime default to the Unix epoch for Live events. This has been changed to the MPD@availabilityStartTime reflecting the first available segment.
  • origin: fixed incorrect signaling of chunk offsets in progressive MP4. This occurred in very infrequent edge cases when referencing 4GB files.
    • Choice between 32 or 64 bit adressing used to be based on size of media data in MP4 only. In edge cases where media data was just below 4GB, but the initliazation data pushed the total size beyond that boundary, this caused problems.
  • package-hls: do not write empty CHANNELS attribute in the master playlist when attribute is not available in the media playlist. (#3909)
  • origin: for hls, never write a BANDWIDTH attribute with a zero value since that is not allowed (write a value of 1 instead).

1.8.3 (2018-03-19) RC1

Added

  • origin, packager: improved HLS playlist ‘NAME’ tag generation for languages.
    • The HLS playlist NAME tag will now include track roles if present, e.g. NAME="English (commentary)". It will also include region languages and scripts if present, e.g. NAME="Portuguese (pt-br)", NAME="Chinese (zho-hans)".
    • Impact: this behavior ensures that two tracks of the same language that differ in their role, script or region, will have a different NAME tag. Before, this was not the case and tags of such tracks needed to be differentiated manually (which can be done using --track_description).
  • origin: added rational number support to filter expressions.
    • It is now possible to use rational numbers, i.e. integer fractions, in filter expressions for dynamic track selection.
    • Documentation: Rational number support
  • origin: updated REST API purge, update and delete behavior.
    • The REST API now supports updating the configuration of a publishing point regardless of its state. The possibility to delete a publishing point in a ‘starting’ state has also been added. In addition, it is now an option to completely purge a publishing point using purge?t=0.
    • Documentation: Update, Delete, Purge part of an archive
    • Impact: scripts that make use of the REST API might result in different behavior in some cases, as certain commands are now valid in more publishing point states.
  • origin, mp4split: added presentation time offset for DASH.
    • Added mp4split command line option --mpd.presentation_time_offset that can be used to change @presentationTimeOffet in all ‘SegmentTemplate’ elements.
    • Documentation: Presentation Time Offset
  • origin, packager: added support for CMAF.
  • origin, packager: added support for RFC 5646 language tags, using –track_language.
    • Both Packager and Origin now support the use of extended language tags. This allows for the signaling of regional varieties of a common language, for example. By default a track’s language is taken from the input track’s media info, but it can also be specified using the --track_language option.
    • Documentation: –track_language
  • packager: package CMAF file with sync-samples only, using –trickplay.
    • It is now possible to package a CMAF compliant MP4 that contains only sync-samples, including proper signaling. Such a file can be used to add trick play features to a stream.
    • Documentation: Adding trick play to a DASH or HLS stream
  • origin: verify and validate the track specification given in the request URL.
    • When a request URL contains track specifications, e.g. using Using dynamic track selection, these specifications are now verified and validated, adding a basic form of security.
    • Impact: although the added verification and validations is a basic form of security, it is strongly advised to add additional security measures regarding the requests that can be made.
  • origin: added option –mpd.suggested_presentation_delay.
    • Can be used to configure the suggested delay of the presentation compared to the Live edge, as represented by MPD@suggestedPresentationDelay in the MPD.
  • origin: MPEG DASH Live with Live2VOD.
    • When a Live event has finished the updated MPD remains ‘dynamic’ and the MPD@MediaPresentationTime is set to the total duration of the event. A ‘static’ MPD of the finished Live event is available by requesting the MPD with the additional query parameter ?t=0.
  • origin: MPEG DASH Live with ‘start again’.
    • When requesting a ‘start again’ MPD for a Live presentation that is still in progress (i.e. specifying the begin time of the program with ?t=<utc-time>), the MPD@TimeShiftBufferDepth is set to the duration of the archive.
    • Impact: some players incorrectly use the MPD@TimeShiftBufferDepth to control the size of the scrubbar. This value should only be used to calculate the availability times of the segments.

Fixed

  • origin: for hls, no longer add track role to value of ‘GROUP-ID’
    • Before, tracks with a specific role (like ‘commentary’, or ‘caption’) were put into their own group. This behavior has been changed because it was not compliant with the HTTP Live Streaming specification.
  • origin: fixed missing cache header when publishing point is in stopping state.
    • When an encoder POSTs an End of Stream (EOS) signal to at least one track of a livestream, the publishing point will switch from a ‘started’ to a ‘stopping’ state, until an EOS signal is received on all tracks and the publishing point switches to a ‘stopped’ state, which results in the stream being advertised as VOD. Formerly, cache headers were already omitted in the ‘stopping’ state. Documentation: Overview of possible publishing point ‘states’
  • origin: fixed iso8601 deserialization which lead to a non-valid value when not using UTC to specify –mpd.availability_start_time. (#1735)
  • libfmp4: never write zero sample durations.
  • libfmp4: fixed bug where language code “qaa” was translated to “qtz”. (#2922)
  • packager: changed error on empty VTT cue payload to warning + fixup (#2863)

1.8.2 (2017-12-07)

  • packager: added –timestamp_offset command line option.
    • This option allows you to add a specified offset to a track’s timeline. It has been added to allow for synchronization between WebVTT tracks that already contain an offset and other media tracks that do not. We recommend to fix the offset in the WebVTT tracks, but, using this new option, you can now also add an offset to all other tracks. Documentation: –timestamp_offset

1.8.1 (2017-12-06)

  • package-mpd: track duration is the sum of all subsegment_durations in sidx.
  • origin-live: fixed incorrect Expires Cache header on live subtitle HLS playlist when input is text/dfxp. (#2301)

1.8.0 (2017-11-17)

  • package-hls: do not include bitrate in GROUP-ID field for text streams.
    • Before, a bitrate was added to the value of a text stream’s GROUP-ID field. This resulted in text streams being assigned different groups if their bitrates differed only slightly, resulting in stream’s that are not compliant with Apple’s HTTP Live Streaming specification. This was fixed because the bitrate signaled in a text stream should not have such big impact.
  • packager, origin: adding a –track_role=caption to a subtitle track signals that track is intended to provide accessibility for the deaf and hard of hearing.
    • In addition to the accessibility features that were added in 1.7.31 using the --track_kind option, specifying the role of a track as ‘caption’ will now also result in accessibility related signaling when generating the client manifest. In HLS’ Master Playlist for example, the signaling of CHARACTERISTICS="public.accessibility.describes-music-and-sound" will be added to the specific track.
    • Documentation: –track_role and –track_kind
  • ingest-mp4: fixed trackName when multiple switching sets are present in a single MP4 file and the MP4 file is directly used for play-out. A work-around is to create a server manifest file.
  • origin-hls: fixed EXT-X-STREAM-INF to include correct default audio track (when multiplexing) in Master playlist.