Release notes version 1.10.18 GA

This is a maintenance release that focusses on fixes and updates that improve compatibility.

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

Attention

As certain OS versions expire we will drop support for these versions. At the release of 1.10.12 GA we already announced that with the release of 1.11.x GA, support for Debian 8 and Ubuntu 14 would be dropped. To this, we want to add that support for CentOS 6 will expire in November of this year, and that Windows 12 is already on extended support. Therefore, you should expect these versions to be dropped, too. You can recognize the OS versions for which we plan to drop support by their repository names: the term deprecated is appended to them.

What's new in 1.10.18 GA

The highlights of this release are the following:

Packager

  • Support for CPIX, fully aligned with Origin.
  • Create DASH and HLS streams with PlayReady, Widevine and FairPlay protection from a shared set of cbcs encrypted CMAF files (CPIX only, see: Multi-DRM protected HLS and DASH from a shared CMAF source).
  • Extract CEA-608 embedded captions from a video track and store as TTML or WebVTT.

Origin

  • Support for --mpd.segment_template to override default logic that defines which 'SegmentTemplate' format is used.
  • Support for ingest of Tiled Thumbnails track to add it to its DASH output.

Remix

  • Support for S3 authorization through command-line options.
  • Support for audio silence for AC3, EC3 and DTS.

Packager and Origin

  • Support for SCTE 35 time_signal() command to signal splice events.
  • Support for DTS:X.

DASH

  • For all DASH output, calculation of mediaPresentationDuration is now compliant with the DASH-IF implementation guidelines.

Known issues in 1.10.18 GA

Origin

  • DASH.js doest not start at the Live edge in low latency mode: dash.js GitHub issue 3144.

  • PlayReady protected DASH output for which Origin automatically generates the ContentProtectionData is incompatible with LG WebOS 3.5 and 4.5 devices, because they cannot parse XML that defines a namespace in local scope. To workaround this issue, you can either use CPIX to specify the ContentProtectionData for PlayReady yourself, or you can use Apache's mod_substitute with something like the following configuration:

    Substitute "s/xmlns:cenc=\"urn:mpeg:cenc:2013\"/xmlns:cenc=\"urn:mpeg:cenc:2013\" xmlns:mspr=\"urn:microsoft:playready\"/nf"
    Substitute "s/pssh/cenc:pssh/nf"
    Substitute "s/IsEncrypted/mspr:IsEncrypted/nf"
    Substitute "s/IV_Size/mspr:IV_Size/nf"
    Substitute "s/kid/mspr:kid/nf"
    Substitute "s/<pro/<mspr:pro/nf"
    Substitute "s|</pro|</mspr:pro|nf"
    Substitute "s/xmlns=\"urn:mpeg:cenc:2013\"/xmlns:cenc=\"urn:mpeg:cenc:2013\"/nf"
    Substitute "s/xmlns=\"urn:microsoft:playready\"/xmlns:mspr=\"urn:microsoft:playready\"/nf"
    

Capture

  • Without the --frame_accurate option, significant audio or video gaps might occur on clip boundaries, because Capture clips each track on the nearest sync-sample and does not take into account where the position of sync-samples on the video tracks when clipping audio tracks (which is a problem because each audio frame is a sync-sample, whereas this is not true for video and Capture may need to scan further to the left until it finds the start of a GOP).

Packager

  • #7649: The newly added feature that allows you to create DASH and HLS streams with PlayReady, Widevine and FairPlay protection from a shared set of cbcs encrypted CMAF files only works with CPIX, not with the DRM-related command-line options (in the latter case Packager will disregard the Widevine and PlayReady signaling when adding FairPlay).

CPIX

  • #8200: The implementation of HLSSignalingData is not fully aligned with version 2.2 of the CPIX specification. For the optional playlist attribute, media as a value is not supported. To get the same behavior, use variant as a value instead, as defined in version 2.1 of the CPIX specification.

Version 1.10.18 (2020-02-24) GA

Fixed

  • npvr: fixed capture bug when clipping subtitles (#8190)
    • This fixes a bug that was introduced after 1.10.12 GA. The bug caused Capture to add a wrong edit list when capturing a clip for a time range in which the subtitles start significantly later than the video. It mainly impacted Remix nPVR workflows, as the wrong edit list caused Unified Remix to trip up when the captured clip was used as a source to generate a stream from.
    • Impact: none other than as described.
  • live: fixed silent failure to create pubpoint database (#8194)
    • When Origin ingests a new livestream on a publishing points, it creates a SQLite database, amongst others. Previously, when creating this database would fail, Origin would still report successful ingest (by writing 200 OK to the access logs). This has been fixed and Origin will now return a 500 i error in such cases.
    • Impact: none other than as described.
  • live: fixed overflow error in Sunset header (#8198)
    • The Sunset header was introduced in the previous release, 1.10.17. This fixes an overflow error that caused the Sunset header to be populated with the wrong value.
    • Impact: none other than as described.
  • dash: remove media segments with zero duration from the SegmentTimeline (#8193).
    • Since 1.10.11, Origin adds a 'EXT-X-GAP' tag to Media Playlists, alongside empty media segments that should not be loaded by the client. In some cases, this logic impacted Origin's DASH and Smooth output as well, and segments with a zero duration were added to the media timelines for these formats. This has now been fixed.
    • Impact: none other than as described.

Version 1.10.17 (2020-02-13)

Added

  • packager: added rebuilding of avc1/avc3 and hvc1/hev1 decoder configuration records (e.g. when converting in-band to out-of-band).
    • When repackaging an MP4 in which the out-of-band SPS/PPS headers change throughout the content (which is against the specification), Packager now maintains these changes and properly rebuilds a single out-of-band SPS/PPS header for the repackaged output.
    • Impact: none other than as described.
  • live: added Sunset header to segments to signal expected (automatic) archive eviction resulting from archive_length (#7843).
    • The Sunset header applies to Live streaming scenarios only. It is added to media segments and it signals when a media segment will no longer be available.
    • Documentation: Sunset.
    • Impact: none other than as described.

Fixed

  • dash: no longer write empty @value attribute for properties and descriptors.
    • Instead of writing an @value attribute with no actual value, the @value attribute is now omitted when there is no value to report for a particular property or descriptor in a DASH MPD.
    • Impact: none other than as described.
  • libfmp4: fixed "415 Error writing to bitstream. parsing aborted" for large AVC Decoder Configuration records.
    • In a live streaming scenario, when the encoder posted an init segment with a very large AVC Decoder Configuration record, Origin would report an error and not be able to ingest the stream. This has now been fixed.
    • Impact: none other than as described.
  • live: aligned the behavior of http expires / max-age headers for media segments between --archiving=1 and --archiving=0 (#7986).
    • Origin used to include Expires and Cache-Control: 'max-age' headers for media segments when --archiving=0 was set. In that scenario, Origin would set the time of expiry for the segments to the moment at which they would be purged from the archive. Origin did not add such headers to media segments when --archiving=1 was set. To ensure consistency, Origin will no longer add these headers when --archiving=0 is set either.
    • Impact: if you have configured --archiving=0 for your Live streaming setup and rely on the presence of caching headers for media segments, your cache might be affected by this change. However, note that the same type of information is communicated in the Sunset header that is added in 1.10.17 (see: Sunset).

Version 1.10.16 (2020-01-29) beta

Added

  • packager: extract TTML and WebVTT from mp4 (c608, stpp, wvtt, dfxp) (#6914).
  • cpix: renamed ContentKey's schemeType attribute to commonEncryptionScheme, which is the name chosen by DASH-IF (#7989).
  • This update aligns the functionality that was added in 1.10.15 with the CPIX specification. The commonEncryptionScheme attribute for the <ContentKey> element can be used to override the default CENC encryption scheme that Origin uses for its fMP4 HLS ('cbcs') and DASH ('cenc') output. It will leave all other output formats of Origin unaffected (i.e., for these output formats Origin will use its default logic).
  • Documentation: CPIX Document Requirements
  • Impact: none other than as described.
  • packager, origin, remix: use the shortest time interval that overlaps all available media segments to determine the offset and duration of an MPD, following DASH-IF guidelines (#4901).
    • In prior versions an MPD's mediaPresentationDuration was calculated as the difference between the earliest start time and latest end time of all media timelines (taking audio, video and subtitles into consideration). This caused problems when either audio or video started later or ended earlier, as that would result in a gap at the start or end of that media's timeline, compared to the mediaPresentationDuration. This is a common scenario when using Virtual subclips or when using Capturing VOD without frame accuracy, if your audio and video segments are not perfectly aligned (which is often the case). The newly implemented behavior no longer takes the subtitles timeline into consideration and calculates the mediaPresentationDuration as the difference between the latest start time and earliest end time of the audio and video timelines. This aligns with the requirement specified in DASH-IF implementation guidelines - Necessary segment references in static presentations
    • Impact: Although the newly implemented behavior is according to spec and we have tested it to solve several issues, you may still experience unexpected behavior because of it, as it might be that the player you use does not follow the spec on this point. Case in point is DASH.js, for which a fix to align it with spec was implemented only recently: dash.js GitHub issue 3152. Therefore, it is highly recommended to thoroughly test the behavior of the player that you use in your setup, in relation to this change.

Fixed

  • live: fixed intermittently disappearing Cache-Control and Expires headers for client manifests (#7843).
    • This fix partially reverts behavior that was introduced in 1.10.4 and present in the previous GA. Whereas Origin used to expire content that it expected to be updated (e.g., an MPD or HLS Media Playlist) at least 1 second from when the request was made (i.e., it counted the content's max-age down to 1 and then let it stay at 1 until there was an actual update to the content), the behavior in the previous GA tried to be more 'truthful'. It counted the content's max-age down to 1 and then did not add any expiry information to the content until the content was actually updated and a new expiration could be set. Unfortunately, the intermittently disappearing headers introduced confusion. Therefore, Origin will again expire content that it expects to be updated at least 1 second from when a request was made. As updating content is only relevant within a Live streaming context, this change does not affect VOD scenarios (for which Origin does not add cache headers at all).
    • Documentation: Expires and Cache-Control: max-age="...".
    • Impact: if you update from a version prior to the previous GA, please be aware that the previous GA also introduced other, more significant changes to the cache related headers that Origin adds in Live streaming scenarios. However, when you update from the previous GA the impact of this fix should be more reliable caching behavior, although this naturally depends on the exact configuration of your caches.
  • live: closing an archive segment always writes an "mfra" box and a "tfra" box for each track (#8109).
    • When streaming Live, Origin writes a Live archive to disk in archive segments of a user defined length. When the archive segment that Origin is writing to reaches the defined length, Origin closes the archive segment and starts writing to a new one. Prior to this change, when closing an archive segment, Origin would not write a "mfra" and "trfa" box to tracks that did not contain any content for the duration of the archive segment. This is a likely scenario for Timed Metadata tracks, which may not be updated for longer stretches of time. Although it wasn't the cause of any issues, the behavior was changed because the result did not align with how we expect a valid MP4 to be structured.
    • Impact: none other than as described.
  • origin, remix, transcode: make web server module RPM packages depend on a specific version of mp4split, to avoid mismatches (#7921).
    • When installing our software on RPM-based Linux distributions, a version mismatch between our different packages might occur (e.g., when upgrading or installing a previous version). This was caused by the fact that for dependencies on our own packages no explicit version was specified. This has now been fixed.
    • Impact: none other than as described.
  • libfmp4: fixed channelcount in stsd for DTS:X (#8085).
    • Fixes a small mistake in the implementation of support for the DTS:X codec, that caused the channel count to not be correctly signaled in the stsd box of the MP4.
    • Impact: none other than as described.
  • remix: fixed support for large gaps between subtitles (#7933).
    • When remixing clips, Remix will fill significant gaps on the timeline of a subtitles tracks to mitigate playback issues. It used to fill such gaps with a single empty cue. In edge cases where the gap on the timeline was a little over 20 minutes and the content used a high enough timescale, this caused problems. This issue has now been fixed by using multiple cues to fill larger gaps.
    • Impact: none other than as described.
  • live: ignore Timed Metadata tracks when determining live edge (#8078).
    • In edge cases where Origin was configured to use a DVR window that wasn't much bigger than the break duration announced in the Timed Metadata track of a stream, Origin could sometimes return an empty MPD. This was caused by the fact that the timeline of the Timed Metadata track was taken into account when calculating the live edge of the stream. This has now been fixed by ignoring the Timed Metadata tracks when determining the live edge.
    • Impact: none other than as described.

Version 1.10.15 (2019-11-21) beta

Added

  • libfmp4: added support for DTS-UHD / DTS:X profile 2 (#5257)
    • The DTS:X audio codec is now supported for DASH output from both Origin and Packager. Playback from other output formats like fMP4 HLS might work too, but is not supported, since DASH is the only format for which streaming DTS:X is actually specified.
    • Impact: none other than as described.
  • origin: added --time_signal option (#7316).
    • The SCTE 35 splice_insert() is considered legacy and a better alternative is to use the SCTE 35 time_signal() command to signal splice events. This is now supported and can be enabled using the --time_signal option. Enabling the use of time_signal() disables the use of splice_insert(), which is the default.
    • Documentation: --time_signal.
    • Impact: none other than as described, although thorough testing of any workflow that employs SCTE 35 time_signal() functionality is highly recommended, since it offers such a wide variety of options.
  • libfmp4: added --mpd.segment_template option (#3894).
    • It is now possible to override Origin's default behavior regarding the 'SegmentTemplate' format it uses to signal the media's timeline in the MPD it generates. The main use case for this option is to be able to specify --mpd.minimum_fragment_length but still get a 'SegmentTemplate' using $Time$ instead of $Number (which Origin switches to by default when specifying a custom length for the DASH segments it outputs). In general, it is recommended to use $Time$ for reasons described in Segment Timeline Article.
    • Documentation: --mpd.segment_template.
    • Impact: none other than as described.
  • origin: add <Label> elements to DASH output for tracks which have --track_description specified (#5622).
    • When the --track_description option is used to specify a 'description' for a track, Origin will now also add this information to its DASH output in the form of a <Label> element that signals the description for the track in the MPD. This description may be used by a player to more clearly distinguish between the different kinds of tracks that a users can choose between.
    • Documentation: --track_description.
  • remix: added support for audio silence for ac3, ec3 and dts (core hd and dts:x) codecs (#1288).
    • When remixing content, Remix now automatically adds silent padding to audio tracks if any gaps occur in the audio timeline. This works for audio tracks encoded in AAC, AC3, EC3 or DTS (Core HD and UHD). It makes a Remix workflow more robust and should further minimize playback issues when concatenating clips.
    • Impact: none other than as described.
  • remix: added s3 authorization command-line options.
    • Unified Remix' command-line interface (unified_remix) now supports authentication when making requests to S3. Enabling it works the same as for mp4split.
    • Documentation: :ref: Authenticate requests to AWS S3.
    • Impact: none other than as described.
  • package_hls: set FORCED attribute for subtitles when packaging WebVTT and specifying --track_role=forced-subtitle (#7562).
    • In 1.10.7 and as part of the previous GA, support was added to set the 'FORCED' attribute to equal 'YES' for output from Origin when a track's role was set to forced-subtitle. However, this functionality did not work when statically packaging HLS using Packager. This has now been fixed.
    • Impact: none other than as described.
  • origin: added serving of tiled thumbnail jpegs, and generation of dynamic DASH manifests including these (#7498).
    • After support for Tiled Thumbnails was added to Packager in 1.9.5, Origin now also supports it. This means that Origin can ingest a Tiled Thumbnails track and add it to its DASH output (as that's the only output format that support this specific implementation of trick play at the moment). In addition to support for Origin, several configuration options have been added as well, which allow to specify how you want Packager to create the Tiled Thumbnails track.
    • Documentation: --trickplay --fourcc=jpeg.
    • Impact: none other than as described.
  • cpix: USP-specific schemeType attribute added to the <ContentKey> element to select the Common Encryption scheme type for fMP4 HLS and DASH output (#7278).
    • Important: attribute name changed to commonEncryptionScheme in 1.10.16!
    • To override the default CENC encryption scheme that is used for Origin's fMP4 HLS ('cbcs') and DASH ('cenc') output, support for a USP-specific attribute for the <ContentKey> element was added. However, note that this attribute's name was changed to commonEncryptionScheme in 1.10.16, after DASH-IF agreed on the use case of this attribute and added it to the CPIX specification under this new name.
    • Impact: not supported, use the updated implementation as added in 1.10.16.
  • remix: support for SCTE 35 Auto Return Mode. Auto Return Mode do not require cue messages at the end of the break with out_of_network_indicator set to 0.
    • It is now possible to use the SCTE 35 Auto Return Mode with Remix, which allows you to signal the start and end of a break in one SCTE 35 message.
    • Impact: none other than as described.
  • remix: allow downward relative dref URL creation (#7463).
    • Before, when a SMIL playlist that was used as input for Remix would contain relative references to tracks, using downward paths, the remixed MP4 generated by Remix would not include the downward paths, only the filenames. This has been fixed, so that it is now possible to create a remixed MP4 from a SMIL playlist that references tracks in subdirectories.
    • Impact: none other than as described.

Fixed

  • cpix: when statically packaging fMP4 HLS, playready and widevine signaling is retained when adding sample-aes with --encrypt-key-url (#6976).
    • This fixes a regression that made it impossible to statically package fMP4 HLS with a combination of PlayReady, Widevine and FairPlay protection. In such cases, the signaling for PlayReady and Widevine would not be present in the output. This has now been fixed.
    • Impact: none other than as described.
  • libfmp4: fixed overflow when truncating a progressive MP4 with vbegin/vend values over 4GB.
    • Creating a virtual subclip from a progressive MP4 source did not work when the specified start time was located more than 4GB 'into' the source. This has now been fixed.
    • Impact: none other than as described.
  • origin: allow for missing "mdat" when all data is referenced externally (#7791).
    • Origin no longer requires an "mdat" to be present alongside a "moov" in an MP4, as this is not a ISO BMFF requirement and it caused problems with dref MP4's generated with older versions of mp4split, which did not yet add an "mdat" when generating a dref MP4.
    • Impact: none other than as described.
  • package_hls: changed the default generation of GROUP-ID for subtitles to exclude the codec fourcc code.
    • Prior to this change, Packager appended the codec's FourCC code to the 'GROUP-ID' it associates with each subtitles track, i.e., a WebVTT encoded subtitles track would be assigned textstream-wvtt as its 'GROUP-ID'. When statically packaging a HLS stream that combines differently encoded subtitles tracks (i.e., IMSC-1 and WebVTT), this lead to these tracks being in different 'groups'. This change results in all subtitles tracks being in associated with the same 'GROUP-ID', textstream.
    • Impact: this may impact the way a player presents the selection of subtitles that are present in a statically packaged HLS stream. If this is the case and you're unhappy with the result, or if there are any other reasons why you want to override the default way in which Packager assigns a 'GROUP-ID' to tracks, you can make use of the --track_groupid option as described in: Overriding default playlist values.
  • package_hls: fixed encrypting of AC3 tracks in .ac3 files (regression introduced in 1.10.8) (#7536).
    • Fixed a regression that was part of the previous GA, which caused a precondition failed error message to be thrown when statically packaging an AC3 track for HLS TS with encryption. This use case now works properly again.
    • Impact: none other than as described.
  • metadata: always passthru Timed Metadata when 'timed_metadata' is defined (even when it's not part of a ?filter= query (#6189)).
    • Using Using dynamic track selection it is possible to filter a stream so that it will only contain tracks that comply with a (set of) filter rule(s). The fact that any track that is not explicitly included by the filter, is excluded from the stream caused problems because the need to also explicitly include Timed Metadata tracks is less apparent than it is for audio, video and text tracks, breaking workflows that relying on Timed Metadata and including filter(s) to dynamically select tracks. To avoid these problems, Timed Metadata tracks are now always included.
    • Impact: dynamically excluding a Timed Metadata tracks using the Using dynamic track selection option is no longer possible. We recommend to use separate server manifests for such scenarios instead (e.g., using Dynamic manifests).
  • libfmp4: changed schemeURI for binary SCTE 35 data to urn:scte:scte35:2013:bin (#7354).
    • For inband event messages containing SCTE 35 messages in binary form, we used to mistakenly signal urn:scte:scte35:2014:bin as the schemeURI. This has now been changed to urn:scte:scte35:2013:bin instead, to comply with the SCTE 35 specification as well as DASH-IF IOP 4.2.
    • Impact: none other than as described.
  • libfmp4: correctly evaluate "und" systemLanguage when dynamically filtering (#7471).
    • Using Using dynamic track selection, it is now possible to filter tracks that have no specified 'systemLanguage' by filtering on systemLanguage==und.
    • Impact: none other than as described.

Version 1.10.14 (2019-08-22)

Fixed

  • package_mpd: output SCTE 35 <Event> using urn:scte:scte35:2014:xml+bin scheme (#7354, #7438).
    • Before, when statically packaging DASH with SCTE 35 the MPD would signal urn:scte:scte35:2014:bin as the scheme for the <Event> and use base64 encoding for the actual SCTE 35 message signaled in the event. This has now been changed to use the correct urn:scte:scte35:2014:xml+bin scheme with binary encoded SCTE 35 messages, as recommended in DASH-IF IOP 4.2.
    • Impact: Although the updated implementation as described above is according to spec, workflows that depend on the SCTE 35 signaling in DASH as produced by Packager prior to this fix might break and should be tested.
  • cpix: in accordance with version 2.2 of the CPIX specification, the ContentProtectionData element is now interpreted as "the full well-formed standalone XML fragment to be added to the DASH manifest under the ContentProtection element". The 'name' attribute of the CPIX DRMSystem element may be used to specify the 'value' attribute in the DASH manifest's ContentProtection element (#5786).
    • Prior to this change, our implementation of the ContentProtectionData element differed from the CPIX specification. It used to be interpreted as the base64-encoded, well-formed XML data to be added to the DASH manifest under the corresponding <ContentProtection> element. This has now been changed as described above to fully align with the CPIX specification.
    • Documentation: CPIX Document Requirements.
    • Impact: CPIX documents specifically prepared to be compatible with our previous implementation of this element will need to be updated.
  • cpix: in accordance with version 2.2 of the CPIX specification, the HDSSignalingData element is now interpreted as "the full drmAdditionalHeader element to be added to the HDS playlist (including the beginning and ending tags)" (#5828).
    • Prior to this change, our implementation of the <HDSSignalingData> element differed from the CPIX specification. It used to be interpreted as the base64-encoded data that falls under the drmAdditionalHeader element to be added to the HDS playlist. This has now been changed as described above to fully align with the CPIX specification.
    • Documentation: CPIX Document Requirements.
    • Impact: CPIX documents specifically prepared to be compatible with our previous implementation of this element will need to be updated.

Version 1.10.13 (2019-08-02)

Fixed

  • capture: fixed segfault on malformed media (#7197).
    • Using Capture to decrypt certain malformed, encrypted media resulted in a segmentation fault. This now results in an error message instead.
    • Impact: none other than as described.
  • capture: insert edit list in metadata track when capturing archive with --copy_ts or --remix option (#7234).
    • Before, capturing a stream with SCTE 35 markers while maintaining the original timestamps of the stream (i.e., using Capture's --copy_ts or --remix option) would break the SCTE 35 markers in the captured clip because the offset that was added to the tracks for video, audio and text through an edit list, was not added to the Timed Metadata track. This has now been fixed for these scenarios, by also adding an edit list to the Timed Metadata track.
    • Impact: none other than as described.

Release notes version 1.10.12 GA

This is a maintenance release that focusses on fixes and updates that improve compatibility.

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 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 1.10.12 GA

The highlights of this release 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 in 1.10.12 GA

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 anyway, 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: Using implicitly generated signaling.
  • 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: Using implicitly generated signaling.
  • 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 ISO BMFF 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: Using implicitly generated signaling.
  • 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.