Release notes version 1.10.*

Warning

This version introduces significant changes to the headers that are set for caching purposes. When upgrading, ensure that you take these changes into account and align your configuration accordingly. If you do not do so, your cache will be invalidated. More info: Expires and Cache-Control: max-age="..." and ETag.

For more general info about of what you should take into account when upgrading, see: Upgrade to a New Version.

Note

As Windows 12, Debian 8 and Ubuntu 14 have reached end of life, we will stop supporting these operating systems starting with 1.11, the next GA version.

What's new in this version

This is a maintenance release that focusses on fixes and updates that improve compatibility. The highlights are the following:

Packager and Origin

  • Implemented changes from DASH Amendment 5

Origin only

  • Additional DRM use cases covered with CPIX
  • Functionality to configure URL aliases based on Apache's Rewrite Map
  • Improved caching header logic

Capture

  • Improved clipping functionality

Known issues

CPIX

Packager

  • When statically packaging fMP4 HLS content with multiple DRM systems, adding FairPlay leads to the signaling for the DRM systems not being included.

Capture

  • When using the copy_ts or remix option, capturing SCTE 35 messages is currently not supported.

Version 1.10.12 (2019-07-25) GA

  • capture: when capturing for Remix nPVR with --remix write the sample data in a single contiguous block (instead of interleaved) (#7221).
    • When Unified Capture capture's a stream using the --remix option, it stores it on disk as a progressive MP4. Before, it used to interleave the media data. This caused a lot of requests to be made for subtitle information when Remix would be used to generate a clip from the captured content (like in nPVR use cases). This is because the timing information for subtitles is contained within the subtitle samples themselves instead of in an index, and with interleaved media these samples were spread out across the file. By storing media in a single contiguous block when capturing using the --remix option, this has been mitigated.
    • Impact: none other than as described.

Version 1.10.11 (2019-07-16) RC2

  • dash: fixed capitalization of IsEncrypted attribute.
    • Adjusted formatting according to PlayReady specification. Where IsEncrypted was used in the PlayReady related signaling in a DASH client manifest, this has now been changed to IsEncrypted.
    • Impact: None other than as described.
  • dash: added EventStream@presentationTimeOffset according to DASH Amendment 5 (#6245).
    • When a virtual subclip with a start and end time in the past is requested from a livestream, Origin generates an on-demand clip in response. To not rewrite the media's UTC-based timestamps and retain the original URLs to all media data, offsets are added to ensure correct timing for text, audio and video tracks. Based on changes introduced in DASH Amendment 5, an offset like this is now also added to the EventStream element, so that the timing information for event messages does no longer break in a Live2VOD workflow.
    • Impact: none other than as described.
  • remix: support use cases where subtitles may have arrived out of order (#7275).
    • In certain use cases for Live streaming subtitles may arrive out of order. Remix can now handle this.
  • cpix: generate Widevine and Marlin signaling for DASH when PlayReady DRM information is available (#5947, #6282, #6900).
    • In 1.10.9 RC1, a regression was introduced that kept Origin from generating DRM information for Widevine and Marlin for use cases where only PlayReady DRM information was provided. This has been fixed, such that it is working as it used to again.
    • Impact: none other than as described.
  • origin: added 'EXT-X-GAP' tag to fix media sequence discontinuities (#5818).
    • Before, discontinuities in media sequence numbers where signaled using 'EXT-X-DISCONTINUITY'. Now, the missing segment is added anyways, with a the 'EXT-X-GAP' to indicate that the segment URL to which it applies does not contain media data and should not be loaded by clients.
    • Impact: This fix is only expected to work on clients that support HLS protocol version 8. On older devices, playout will remain broken because they will ignore the 'EXT-X-GAP' and download the empty media segment that follows it.
  • origin: fixed time-based query parameters not being removed from HLS playlist when using --suppress_query_parameters (#6974).
    • In 1.10.9 RC1, Origin did not remove time-based query parameters when the --suppress_query_parameters option was used. This has now been fixed.
    • Impact: none other than as described.
  • origin: do not assert on empty MP4 tracks (#6928).
    • In 1.10.9 RC1, Origin failed to generate a client manifest in edge cases where the source content did not contain media for all tracks.
    • Impact: none other than as described.

Version 1.10.10 (2019-06-17)

  • origin: fixed CMAF backend to support video tracks with positive composition time offsets and an edit list.
    • CMAF content packaged by a third-party packager would in some edge cases use a combination of positive composition time offsets and an edit list that caused problems when used as ingest for Unified Origin. This has been fixed by making Origin properly handle such content.
    • Impact: none other than as described.

Version 1.10.9 (2019-05-27) RC1

Added

  • capture: clipping in unified_capture now uses Remix API (#6303).
    • Clipping of timespans is improved and now uses the same logic as Remix. This means that audio clipping is always right-aligned, while video clipping is always left-aligned on GOPs, or on frames when the frame_accurate option is enabled. That is, for video Capture will scan the timeline from the specified timestamp to the left until it arrives at the start of either the start of a GOP or a frame. While for audio it will scan to the right until the start of an audio frame. This is true for both the specified start and end time of a clip.
    • Impact: None other than as described.

Version 1.10.8 (2019-04-15)

Added

  • packager: reduce memory consumption when decrypting (#4625).
    • Instead of decrypting a complete file at once, this is now done in chunks. This leads to a significant decrease in the memory that is required, especially when decrypting very large files.
    • Impact: None other than as described.
  • packager: allow downward relative dref URL creation from file input (#5613).
    • It is now possible to create a dref MP4 that references content in a directory lower down its path. As the dref MP4 will reference the content using a relative path, it can be created locally, after which both the dref MP4 and the content that it references can be copied elsewhere, e.g., to an object storage. For security reasons, packager will continue to refuse creating upward relative data references.
    • Impact: None other than as described.
  • dash: add @presentationDuration when using sidx addressing.
    • Additional behavior for this attribute is implemented from DASH Amendment 5. Now, if a Segment Index (sidx) box is present in the source content the value of this attribute will be the sum of the value of the earliest presentation time and the values of all SubsegmentDuration fields in the first sidx box of the media segment.
    • Impact: None other than as described.
  • package-mpd: add @eptDelta when using SegmentTemplate $Number$ addressing.
    • This attribute is implemented from DASH Amendment 5. It specifies the difference of the earliest presentation time of the first media segment in the representation minus the value of the @presentationTimeOffset. This only affects contents packaged with fixed fragment duration.
    • Impact: None other than as described.
  • libfmp4: scan for SEI embedded captions in HEVC tracks. (#5816).
    • Embedded captions are now also detected and signaled when present in HEVC tracks. Identical to the behavior for embedded captions in AVC tracks, the captions will only be passed through and not processed in any way except that signaling for the tracks is added to the client manifest.
    • Impact: None other than as described.
  • origin: added --presentation_name to customize URL prefix in client manifests (#5977).
    • The option presentation_name overrides the name prefix used in URLs (or URL templates) in client manifests. It was implemented in order to support the use of Apache's RewriteMap based on URL aliases.
    • Documentation: --presentation_name and Using Rewrite Map for URL aliases.

Fixed

  • libfmp4: added VIDEO-RANGE attribute for Dolby Vision dvh1 (#6205).
    • For dvh1 encoded Dolby Vision tracks the 'VIDEO-RANGE' attribute with the 'PQ' value was not added to HLS Master Playlist. This has now been fixed, making the behavior consistent for both dvh1 and dvhe encoded Dolby Vision tracks.
    • Impact: none other than as described.
  • origin: fix TS ingest with HLS encrypted AAC playout (#6009).
    • When requesting encrypted HLS TS output from VOD content ingested as HLS TS, the Media Playlists for the AAC audio that Origin would generate incorrectly referenced the audio as .aac instead of .ts segments. This has now been fixed.
    • Impact: None other than as described.
  • hls: adjust DTS in MPEG TS when audio priming is present in an edit list (#5248).
    • The 10 seconds offset added to media when packaging HLS TS is now adjusted for audio by taking into account the amount of audio needed for priming, as signaled in the audio track's edit list. This fixes a rare issue where an audio track that requires considerably more samples for priming would be out of sync with the video when packaged as HLS TS.
    • Impact: None other than as described.
  • origin: fix incorrect segment duration in HLS manifests when splice media is used (#5810).
    • In 1.9.x, an event message would be truncated from a HLS Media Playlist just before the media segment that it applied to would. This lead to the problem that the media segment would no longer be spliced at the moment that is was about to fall outside of the DVR window (and therefore be truncated from the HLS Media Playlist). This behavior has now been fixed.
    • Impact: None other than as described.

Version 1.10.7 (2019-03-05)

Added

  • dash: add @endNumber (the number of the last segment provided in the Period) when different from the nominally derived number.
    • This attribute is implemented from DASH Amendment 5. In a scenario of streaming DASH with a timeline that uses numbers instead of timestamps a player is normally unable to determine whether a track covers the full media's duration or not, which may lead to requests for segments that are not there. With the number of the last segment for each track explicitly signaled a player can potentially avoid such requests.
    • Impact: Given the fact that this attribute is a very recent addition to DASH, most players will not recognize and instead ignore it.
  • capture: support positive composition time offsets when transcoding a media segment with --frame_accurate (#5608).
    • The transcoding back-end has been rewritten and can now handle positive composition time offsets when capturing a stream using --frame_accurate.
    • Impact: The updated transcoding back-end uses version 2018 R1 of Intel's Media SDK. Please refer to the installation instructions on how to update.
    • Documentation: Intel Media SDK / Media Server Studio.
  • dash: updated DASHEventMessage according to Amendment 5.
    • In accordance with DASH Amendment 5, the content of event messages will be base64 encoded for signaling in the DASH MPD. The only exception to this are SCTE 35 messages, of which the contents will still be represented in XML. The reason for this exception is to not break backwards compatibility.
    • Impact: None other than as described.
  • capture: added support to use CPIX as decryption option --decrypt_cpix (#5749).
    • Capture can now process a CPIX document to decrypt a stream. This is especially useful when working with streams that use multiple keys.
    • Documentation: Decrypt using CPIX.
  • cpix: added support for using DASH, ISS, HDS signaling for playout manifests (#5584, #5811).
    • In addition to explicitly specifying the DRM signaling for HLS, it is now possible to do this for all the other playout formats as well. For more info, please refer to the relevant documentation that is linked to below.
    • Note: It is recommended to add as little explicit signaling to a CPIX document as necessary, and rely on Origin or Packager generating it instead.
    • Documentation: CPIX Signaling Behaviour.
  • cpix: added support for generating DASH, HLS, ISS, HDS signaling for playout manifests (#5564).
    • When an empty content protection element for a specific playout format is present in a <DRMSystem> element in a CPIX document, Origin will interpret this presence as a request to generate the necessary signaling. This behavior works for all play-out formats. For more info, please refer to the relevant documentation that is linked to below.
    • Documentation: CPIX Signaling Behaviour.
  • cpix: no longer converts a given <PSSH> version 1 to 0, or vice versa for DASH init segment (#5620).
    • The version of a PSSH box inside the <PSSH> element of a <DRMSystem> of a CPIX document is no longer converted. The PSSH box is now used as-is instead, regardless of whether it is version 0 or 1 and regardless of use case.
    • Impact: None other than as described.
  • libfmp4: the id attribute of a DASHEventMessage is hashed from the message_data and presentation_time fields.
    • This change has been implemented to support SCTE 35 messages that signal a cue out event with implicit start time (e.g., splice_insert() with splice_immediate_flag=1).
    • Impact: None other than as described.
  • libfmp4: write 'EXT-X-MEDIA' attributes in order as listed in RFC8216.
    • Formerly, HLS playlists presented attributes for '#EXT-X-MEDIA' in no specific order. Now, the order used in the examples of RFC 8216 is used.
    • Impact: None other than as described.
  • libfmp4: added forced-subtitle, easyreader and karaoke roles.
    • It is now possible to specify forced-subtitle, easyreader and karaoke, using --track_role. These new DASH roles are specified in Amendment 5 to the DASH specification. One role also affects HLS output: When using the forced-subtitle role for a track, it will be signaled as 'FORCED=YES' in a HLS Master Playlist.
    • Impact: None other than as described.

Fixed

  • origin: added 'VIDEO-RANGE' attribute to 'EXT-X-I-FRAME-STREAM-INF'.
    • In earlier versions the 'VIDEO-RANGE' attribute was mistakenly omitted in the information signaled for I-frame Playlists in the 'EXT-X-I-FRAME-STREAM-INF' of the Master Playlist.
    • Impact: None other than as described.

Version 1.10.6 (2019-02-15)

Added

  • dash: For AC-3 the Audio Channel Configuration with schemeURI "tag:dolby.com,2014:dash:audio_channel_configuration:2011" is added.
    • No specific audio channel configuration was added for AC-3 before. Now, it uses the same updated scheme for signaling as E-AC-3 tracks.
    • Impact: As specific signaling for AC-3 was not present before and because players should ignore signaling that they don't understand, this change should not have any impact.
  • apache: write more debug logging when enabled (#5526).
    • Increased the information that Origin logs when its log level is increased. Output now includes all the info that Packager writes to the error log when running similar commands on the command-line, instead of through Origin.
    • Note: the recommended log level is warning.

Fixed

  • capture: when capturing for Remix nPVR with --remix use DTS instead of PTS (#5489).
    • Capturing a stream with B-frames could result in bad output because later frames on which a B-frame relied for proper decoding would not necessarily be part of the capture clip. This has been fixed by now capturing based on the decode instead of presentation time of samples.
    • Impact: None other than as described.

Version 1.10.5 (2019-02-01)

Added

  • hls: added support for multiple DRM signalings.
    • It is now possible to signal multiple DRM systems in a single HLS playlist. This allows for the combination of PlayReady and Widevine, for example.
    • Impact: None other than as described.
  • package-mpd: added support for ISOBMFF Live profile urn:mpeg:dash:profile:isoff-live:2011 (#5441).
    • It is now possible to statically package DASH according to the urn:mpeg:dash:profile:isoff-live:2011 profile. This profile has always been the default profile for Origin's dynamically generated output, but is now supported by Unified Packager as well.
    • Note: When using this feature, note that Packager will create separate files for all of the stream's DASH segments in order to make the output comply with the requirements of the profile.
  • origin: strip version tag from output used to generate ETag & sitemap hash (#5531).
    • The version tag is now omitted to ensure that identical content generated by different versions does not result in a different ETag and sitemap hash.
    • Impact: This change is in addition to other changes to caching headers introduced in 1.10.4. Please take into account all of these changes together and determine how they will impact your setup before upgrading, as well as what configuration changes they may require.
    • Documentation: ETag.

Fixed

  • origin: fixed duration overflow of a SCTE 35 message that occurred with a duration longer than 429.5 seconds (and a 10MHz timescale) (#5533).
    • As the duration of a SCTE 35 message is stored as 32 bit value, an overflow would occur when the number representing the duration would get very high. To work around this issue, events that use a timescale of 10MHz are now rescaled.
    • Impact: None other than as described.
  • origin: fixed bug where additional DRM data signaling in HLS Media Playlist is not updated for key rotation (#5503).
    • For use cases employing key rotation with HLS, the additional DRM signaling data in a HLS Media Playlist would not be updated over time. This has now been fixed.
    • Impact: None other than as described.
  • origin, capture: fixed bug where Irdeto PlayReady Protected HLS was not using a 0x0 IV (#5503).
    • For use cases where Irdeto PlayReady Protected HLS as the DRM system, an incorrect Key Initialization Vector was used. This has now been fixed.
    • Impact: None other than as described.

Version 1.10.4 (2019-10-22)

Added

  • packager: when no Widevine or Marlin DRM is provided, Widevine and Marlin DRM is no longer generated for DASH (#5486).
    • In earlier versions, signaling for Widevine and Marlin DRM would automatically be added when statically packaging DASH with PlayReady DRM. This behavior has been removed.
    • Impact: In order to get Widevine or Marlin DRM signaling added when statically packaging DASH, this signaling has to be explicitly added now.
  • libfmp4: DASH Manifest DRM signaling is now sorted by DRM System ID (#5455).
    • The order in which DRM systems in the DASH MPD are signaled is now based on DRM System ID.
    • Impact: As the order in which DRM systems are signaled does not have any meaning, it is not expected that this has any impact other than as described.
  • packager: allow fraction syntax for --fragment_duration (default is still ms) (#5460).
    • When statically packaging content, the fragment duration can now be specified using fractions. This allows higher accuracy. When fractions are used, the specified value is interpreted in seconds. The default, when not using fractions, is to interpret the specified value in milliseconds.
    • Impact: None other than as described.
  • origin: improved HTTP headers Last-Modified, ETag (#2662, #3550).
    • For requests beyond the DVR window (but within the archive) no Cache-Control or Expires headers are set anymore. Prior versions of Origin had different behavior and would always expire at least 1 second ahead of request time, which mitigated instantly flushing a downstream (CDN) cache. ETag header is now based on (a hash of) the Origin-generated payload.
    • Documentation: Expires and Cache-Control: max-age="..."
    • Impact: As proper caching is crucial in video streaming, please make sure that your CDN and player operate correctly with the new Origin headers. Specifically, be aware that an in-place upgrade of Origin invalidates all assets, which may cause flushing your entire (CDN) cache.
  • cpix: added HLSSignalingData for Master Playlist.
    • It is now possible to explicitly add the DRM signaling for a HLS Master Playlist to a CPIX document. For more info, please refer to the relevant documentation that is linked to below.
    • Note: It is recommended to add as little explicit signaling to a CPIX document as necessary, and rely on Origin or Packager generating it instead.
    • Documentation: CPIX Signaling Behaviour.
  • libfmp4: read transformation matrix from tkhd.
    • Before, transformation information present in the tkhd was ignored. An example of the way in which such information may be used is to signal that a horizontally encoded clip should be turned 90 degrees on playout.
    • Impact: None other than as described.

Fixed

  • ingest: fixed regression introduced in 1.7.32 (#5302) where a fragment (with a different bitrate) from the second encoder may overwrite the fragment from the first encoder.
    • This is a fix for failover setups that use two encoders to push to the same publishing point. In such cases, when two different fragments would be received at exactly the same time, the second fragment would overwrite the first.
    • Impact: None other than as described.

Version 1.10.3 (2018-12-10)

Added

  • capture-hls: added decryption support for fMP4 from identity URL in EXT-X-TAG tag (#4620).
    • If an identity URL that points to a encryption key is signaled in the EXT-X-TAG of a fMP4 HLS stream, Capture can now process this information to decrypt the stream.
    • Impact: None other than as described.

Version 1.10.2 (2018-12-03)

Added

  • libfmp4: dynamic track filtering of systemLanguage is now case insensitive (#4962).
    • When filtering tracks, language tags are now treated case insensitive, as defined in RFC 5646.
    • Impact: None other than as described.
  • libfmp4: Language tag formatting is now enforced (#4962).
    • Regardless of the capitalization specified on input, language tags will will be formatted as defined in RFC 5646. This means that en-us will become en-US and zh-hans will become zh-Hans, and so on.
    • Impact: In case you have been using non-conformant formatting of language tags, your output will change to comply with RFC 5646's specification. This may impact playout behavior, if your player somehow does not fully support this standardized way of formatting.
  • package-hls: support packaging of WebVTT straight from TTML (#5080).
    • When statically packaging HLS it is now possible to generate a HLS Media Playlist with WebVTT subtitles directly from TTML. Before, this was only possible from an fMP4, as the language information would not be present when using TTML as the direct source.
    • Impact: None other than as described.
  • remix: SMIL parser is now namespace aware.
    • Remix uses SMIL formatted playlists as input. It is now aware of namespaces defined within such a playlist.
    • Note: Please take this into account when adding DASH event messages to your playlist.
  • capture: MPD parser is now namespace aware.
    • To capture DASH an MPD is used as input for Capture. When processing such an MPD, Capture will now be aware of any namespaces defined within it, and process the MPD accordingly.
    • Impact: None other than as described.
  • libfmp4: added a new Dynamic Track selection using ScanType (#4644).
    • It is now possible to dynamically filter tracks based on their scan type. This allows for filtering between progressive and interlaced tracks.
    • Impact: None other than as described.
  • package: aligned --encrypt_key_url to have the same behavior as origin, the license acquisition url should be absolute, the relative url is no longer resolved (#4603).
    • Since version 1.9.1, Origin no longer allows the use of a relative URL to specify the HLS license acquisition server. Similar behavior has now been implemented for Packager.
    • Impact: None other than as described.

Fixed

  • origin: removed discontinuities in sequence numbers for HLS/HDS when using [hls|hds].minimum_fragment_length in VOD presentations.
    • This is a fix for edge cases where, using [hls|hds].minimum_fragment_length, a HLS or HDS segment length shorter than fragment length of the source content was specified. Doing so lead to discontinuities in the sequence numbers of the output, which in turn could lead to playback problems.
    • Impact: None other than as described.
  • cpix: use base64 (instead of hex) for the explicitIV attribute (#5067).
    • In 1.9.x, support for CPIX was added. This current release corrects an issue where the explicitIV attribute in a CPIX document was wrongly encoded as hex, instead of base64.
    • Impact: This will break workflows that rely on CPIX documents with a hex encoded explicitIV attribute.

Version 1.10.1 (2018-11-13)

Added

  • dash: updated Dolby Vision codec signaling to 'Dolby Vision streams within the MPEG-DASH format v1.1'.
    • Signaling of codec string for Dolby Vision tracks is now compliant with Dolby's updated specification, e.g., dvhe.stn has been changed to dvhe.05.06.
    • Impact: If you make use of Dolby Vision tracks, ensure that players on the client devices that you support are compatible with this updated signaling.
  • package: add sequence headers to sample entry for hev1 when not present.
    • To guarantee broader compatibility, information from in-band parameters sets in media that is encoded according to the HEVC hev1 subcodec is now added to sequence headers, if such headers are not present.
    • Impact: None other than as described.

Fixed

  • libfmp4: added sub-sample encryption to Dolby Vision tracks.
    • Before, full sample encryption was incorrectly used for Dolby Vision tracks. This behavior has been corrected to use sub-sample encryption instead, to be fully compliant with the Dolby Vision specification.
    • Impact: None other than as described.

Version 1.10.0 (2018-11-08)

Added

  • package-hls: offset the timestamps of generated MPEG-TS and AAC/AC3/EAC3 audio elementary streams by --timestamp_offset (#4791).
    • When statically packaging HLS Transport Streams (TS), the default is to offset media by 10 seconds (since version 1.6.5). This follows Apple's practical implementations of HLS, as well as those within the broader industry. However, if this default does not suit your needs you can now use --timestamp_offset to override it.
    • Note: As the offset of 10 seconds is widely used and supported within the industry we strongly recommended against changing this default.