Proto commits in shaka-project/shaka-packager

These 53 commits are when the Protocol Buffers files have changed:

Commit:a99cfe0
Author:Cosmin Stejerean
Committer:GitHub

feat: support Dolby Vision profile 8.x (HEVC) and 10.x (AV1) in HLS and DASH (#1396) Support Dolby Vision profile 8.1, 8.2, 8.4, 10.1, 10.4 signaling in HLS and DASH. Adds new option `--use_dovi_supplemental_codecs` (off by default) to use SUPPLEMENTAL-CODECS in HLS and `scte214:supplementalCodecs` and `scte214:supplementalProfiles` for DASH. To maintain compatibility with existing players the current behavior of using two entries in the manifest remains the default. This will be changed in a future version where `use_dovi_supplemental_codecs` will become on by default. Adds Dolby Vision compatible brands, 'db1p', 'db2g', 'db4g', 'db4h', 'dby1' based on https://mp4ra.org/#/brands --------- Co-authored-by: Xingzhao Yun <xyun@dolby.com>

The documentation is generated from this commit.

Commit:f73ad0d
Author:Vishal Shah
Committer:GitHub

feat: HLS / DASH support forced subtitle (#1020) Closes #988 --------- Co-authored-by: Cosmin Stejerean <cstejerean@meta.com>

Commit:b1c5a74
Author:sr90
Committer:GitHub

feat(DASH): Add Label element. (#1175) Add ability to set `Label` tag in MPD, see page 35 of DASH-IF IOP 4.3 https://dashif.org/docs/DASH-IF-IOP-v4.3.pdf Implements #881 --------- Co-authored-by: Cosmin Stejerean <cstejerean@meta.com>

Commit:aad2a12
Author:SteveR-PMP
Committer:GitHub

feat: order streams in manifest based on command-line order (#1329) This will force the muxer to order streams in the order given on the command-line. Closes #560 Closes #1280 Closes #1313 --------- Co-authored-by: Joey Parrish <joeyparrish@users.noreply.github.com> Co-authored-by: Cosmin Stejerean <cstejerean@meta.com>

Commit:3e71302
Author:Joey Parrish
Committer:GitHub

feat!: Rewrite build system and third-party dependencies (#1310) This work was done over ~80 individual commits in the `cmake` branch, which are now being merged back into `main`. As a roll-up commit, it is too big to be reviewable, but each change was reviewed individually in context of the `cmake` branch. After this, the `cmake` branch will be renamed `cmake-porting-history` and preserved. --------- Co-authored-by: Geoff Jukes <geoffjukes@users.noreply.github.com> Co-authored-by: Bartek Zdanowski <bartek.zdanowski@gmail.com> Co-authored-by: Carlos Bentzen <cadubentzen@gmail.com> Co-authored-by: Dennis E. Mungai <2356871+Brainiarc7@users.noreply.github.com> Co-authored-by: Cosmin Stejerean <cstejerean@gmail.com> Co-authored-by: Carlos Bentzen <carlos.bentzen@bitmovin.com> Co-authored-by: Cosmin Stejerean <cstejerean@meta.com> Co-authored-by: Cosmin Stejerean <cosmin@offbytwo.com>

Commit:1131bf7
Author:Joey Parrish
Committer:GitHub

chore: Mass-update copyright headers (#1086) Closes #1076

Commit:8682081
Author:Joey Parrish
Committer:GitHub

feat: Remove third-party source in-repo (#1082) This removes apple_apsl and libevent (which are no longer used) and libxml and protobuf (which will be replaced in a follow-up with submodules). This change only contains deletions, to make it easier to review separately from later additions for submodules and cmake integration. Issue #1047 (New build system)

Commit:cd018a7
Author:Caitlin O'Callaghan
Committer:GitHub

Low latency DASH support (#979) # LL-DASH Support These changes add support for LL-DASH streaming. **NOTE:** LL-HLS support is still in progress, but it's coming. :) ## Testing `./chunking_unittest --gtest_filter="ChunkingHandlerTest.LowLatencyDash"` `./media_event_unittest --gtest_filter="MpdNotifyMuxerListenerTest.LowLatencyDash"` `./mpd_unittest --gtest_filter="PeriodTest.LowLatencyDashMpdGetXml"` `./mpd_unittest --gtest_filter="SimpleMpdNotifierTest.NotifyAvailabilityTimeOffset"` `./mpd_unittest --gtest_filter="SimpleMpdNotifierTest.NotifySegmentDuration"` `./mpd_unittest --gtest_filter="LowLatencySegmentTest.LowLatencySegmentTemplate"` Note, packager_test must be run from the main project directory `./out/Release/packager_test --gtest_filter="PackagerTest.LowLatencyDashEnabledAndUtcTimingNotSet"` `./out/Release/packager_test --gtest_filter="PackagerTest.LowLatencyDashEnabledAndUtcTimingNotSet"`

Commit:4686454
Author:Samidh
Committer:GitHub

Add segment_list support for DASH on-demand profile Configurable under flag --dash_force_segment_list, default to false. Note that DASH live profile is not supported right now.

Commit:540c0aa
Author:Weiguo Shao
Committer:GitHub

Added AC-4 codec support (#795) Closes #754.

Commit:4f068bf
Author:Weiguo Shao
Committer:GitHub

Support DD+JOC in DASH and HLS (#775) Spec: ETSI TS 102 366 V1.4.1 HLS: https://developer.apple.com/documentation/http_live_streaming/hls_authoring_specification_for_apple_devices/hls_authoring_specification_for_apple_devices_appendices DASH: https://github.com/Dash-Industry-Forum/DASH-IF-IOP/issues/268 Closes #753.

Commit:8e113af
Author:Tim Lansen
Committer:GitHub

[DASH] Include <mspr:pro> alongside to <cenc:pssh> for PlayReady (#749) Configurable under flag --include_mspr_pro_for_playready. True by default. Closes #743.

Commit:3f909fa
Author:KongQun Yang
Committer:KongQun Yang

[HLS] Support HDR signaling, i.e. VIDEO-RANGE attribute - Parse and extract transfer_characteristics from H264/H265 VUI parameters. - Set VIDEO-RANGE attribute in HLS according to HLS specification: https://tools.ietf.org/html/draft-pantos-hls-rfc8216bis-02#section-4.4.4.2 - Also added an end to end test. Fixes #632. Change-Id: Iadf557d967b42ade321fb0b152e8e7b64fe9ff3e

Commit:796974d
Author:KongQun Yang
Committer:KongQun Yang

[DASH] Support custom Accessibility and Role elements Add dash_accessibilities stream descriptor, which is a semi-colon separated list of accessibility_scheme_id_uri=value. It is optional. Add dash_roles stream descriptor, which is a semi-colon separated list of strings. It is optional. Closes #565. Change-Id: Idb1c20bb410fdd016db07e11fe507c102a3dd8ea

Commit:fa2c440
Author:KongQun Yang

Add a flag --video_feature for Widevine Change-Id: Id9ab958add1239972a4f94faf5e65cffe64444be

Commit:273ab09
Author:KongQun Yang
Committer:KongQun Yang

Support HLS characteristics Add hls_characteristics stream descriptor, which is a colon or semi-colon separated list of strings. It is optional. Fixes #430. Change-Id: Ifcf79316e68768ff065891933de565cd0ff32ec4

Commit:0af2c5c
Author:KongQun Yang
Committer:KongQun Yang

Integrate PackedAudioWriter Closes #342. Change-Id: I2fb4a651ad90448ab226b386c92c94e11ff9f9a8

Commit:b209aee
Author:KongQun Yang
Committer:KongQun Yang

Remove the usage of JsonWriter in SimpleHlsNotifier Use protobuf utilities instead. packager/base/json_writer comes from Chromium base. We are going to switch to abseil which does not have a JSON library. This is unfortunately, at the expense of increased output binary size. packager binary increases by about 300KB due to: - Protos cannot be compiled with LITE_RUNTIME any more. - Additional protobuf library needed to convert between JSON and proto. Change-Id: I45a497376925b42d147ffcaabcfc2fa4dbdeacc1

Commit:6b86b08
Author:KongQun Yang
Committer:KongQun Yang

Add Widevine CommonEncryption proto Change-Id: I18b3991604ff197d0d50f68b0528244b11125025

Commit:f68b425
Author:KongQun Yang
Committer:KongQun Yang

Sync protobuf to v3.3.0 disable-clang-format Change-Id: I520178aa9bb8fd8a00a7009279bf30d7cdb8d5a8

Commit:224b597
Author:KongQun Yang
Committer:KongQun Yang

Support approximate SegmentTimeline It is not always possible to align segment duration to target duration exactly. For example, for AAC with sampling rate of 44100, there are always 1024 audio frames per sample, so the sample duration is 1024/44100. For a target duration of 2 seconds, the closest segment duration would be 1.984 or 2.00533. This feature allows MPD generator to treat these segments as having the same duration, thus allows MPD generator to generate less SegmentTimeline entries and potentially no SegmentTimeline entries (replaced with SegmentTemplate@duration instead if --segment_template_constant_duration flag is enabled). Under flag --allow_approximate_segment_timeline. Disabled by default. Fixes #330. Change-Id: I5044eaa348ebbf45bf792a2af53fc95a115ae21b

Commit:adc9549
Author:KongQun Yang
Committer:KongQun Yang

Add new URL fields in MediaInfo The file_name fields will be used to solely indicate file paths on the designated file system, and they are used to do normal file operations, including file creation, file updating and file removal if needed; added new xxx_url fields, for the URLs that should appear on DASH manifest or HLS playlists. xxx_url are the URIs of the media in the manifest. The fields are converted from file_name fields but adjusted to be relative to DASH manifest path or HLS playlist path, optionally with base_url prepended. Previously the file_name fields are converted in place to indicate URLs when passing to manifest / playlist builders. The original file names were lost, which made it difficult to remove files outside of live window. Now that the input file names are preserved. File system APIs can operate on the original file names while manifest / playlist generation functions can operate on URLs. Issue: #233 Change-Id: I36a64f16e3d1261ce91783a86588f24ad1371662

Commit:30b5fdf
Author:Aaron Vaage
Committer:Aaron Vaage

Add Text Codec To Codec String This change has the hls master playlist add the text codec string to the list of codecs in a variant. Bug: 72942756 Change-Id: Ib25bb2064a291d10d7b1d261a4307991df62220c

Commit:d76ccea
Author:KongQun Yang
Committer:KongQun Yang

[DASH] Support multiple period Change-Id: Ifd17bf0eabbd61ec7a1d35f0b864b5aa6666aa87

Commit:27abb20
Author:Haoming Chen
Committer:Haoming Chen

Remove the trick_play_factor in media_info.proto. - Use the playback_rate instead. Change-Id: I341c39de1c28aacebab5b31aa013bcbbcc2fa9d0

Commit:da8877d
Author:Haoming Chen
Committer:Haoming Chen

Rename trick play rate to trick play factor. - Add a "tpf" abbreviation in stream descriptor for trick_play_factor. Change-Id: Ia09313bb9778456b53bdb0a8cc46d2ba8caa2ac2

Commit:4ba5bec
Author:Haoming Chen
Committer:Haoming Chen

Integrate trick play. - Add trick play adaptation in mpd. This addresses #178. Change-Id: Id6cc08c788eda074c261d0274768051837b84541

Commit:a3b5e7d
Author:Rintaro Kuroiwa
Committer:Rintaro Kuroiwa

Widevine HLS new key format manifest side - This changes the manifest side for the new key format. Change-Id: I329f3c84605e5d2180e219643cb17282152f687b

Commit:94cadf9
Author:Kongqun Yang
Committer:KongQun Yang

Fix mpd duration not set in static live manifest Closes #201 Change-Id: Ie9ab58ec58e1b135931a6576fb46145454b0f049

Commit:6235352
Author:Kongqun Yang
Committer:KongQun Yang

Fix mpd duration not set in static live manifest Closes #201 Change-Id: Ie9ab58ec58e1b135931a6576fb46145454b0f049

Commit:472fae2
Author:Kongqun Yang
Committer:Kongqun Yang

[pssh] Support widevine pssh generation with protection_scheme - Also import the version of the protobuf bundled in packager first, this avoids importing the installed version of the protobuf, which may not be compatible with this script. - Print help if no argument is supplied. Fixes #162 Change-Id: I1b5e87ba7fb51e81b0d4dd3791aaeb37ee0fd6ce

Commit:1fbc410
Author:Thomas Inskip
Committer:Thomas Inskip

Updated protobuf library. Change-Id: I09705df523ba4d0954925845a1619b25d70fd90f

Commit:4f9c8ea
Author:Kongqun Yang
Committer:KongQun Yang

Rename top level namespace to shaka Issue #103 Change-Id: I67945c8ec6d2c178494d3b5400e5ec0170e9d115

Commit:855d1b0
Author:Kongqun Yang
Committer:KongQun Yang

Correctly generate ContentProtection value for non-cenc protection schemes Change-Id: Ie5469a7f192cc6167f029befd9cca7f9ab0d1f27

Commit:c4246d0
Author:Jacob Trimble
Committer:Jacob Trimble

Change FetchKey usages. Add another overload to fetch by key ID directly, used by WebM. Changed the one using PSSH data in favor of the entire PSSH box. This also moves the Widevine proto to media base. Now, the Widevine key source handles creating the Widevine specific PSSH data. Change-Id: I6f4633facad39207809ffbad970635d1f9d70983

Commit:9ddf927
Author:Bei Li

MPD signaling for Dolby Enhanced AC3 audio. Parse channel layout value from dec3 box. Pass it through audio stream info. MPD builder forms audio channel configuration to signal ec-3 codec. Specs: 1) ETSI TS 102 366 V1.3.1 Digital Audio Compression (AC-3, Enhanced AC-3) Standard E.1.3.1.8. 2) DASH-IF Interoperability Points v3.0 9.2.1.2. Issue #64 Change-Id: Ia2c22dd3d82e757ba5a88ba1de35c5d593f5005e

Commit:22498e1
Author:KongQun Yang
Committer:KongQun Yang

Add WebM decryption support - Also refactor decryptor management code out of mp4_media_parser.cc - Move decryptor managment logic to DecryptorSource class to make it available for webm as well - Remove data_offset member from DecryptConfig which is not useful - Add widevine_pssh_data.proto file Closes #72 Change-Id: I1d32baf4013ebd3382b5372c7433fae5033a260e

Commit:8c53995
Author:Rintaro Kuroiwa
Committer:Rintaro Kuroiwa

Text support for MpdBuilder Change-Id: I75e1da391356e9edfcb520941029341941c31332

Commit:b6db8b9
Author:KongQun Yang
Committer:KongQun Yang

Get rid of svn dependencies - Generate local copies of libevent, libxml and protobuf. Change-Id: Ibb29f604191519267f0e6a3ee810cad0c1f80b27

Commit:5c8efd3
Author:Rintaro Kuroiwa
Committer:Rintaro Kuroiwa

Pass content protection information to MuxerListener - The UUID and DRM name can be fetched from KeySource. - Add ProtectedContent message to MediaInfo. The message contains basic information for the protected content, such as the default key ID for the content. - The message is required to separate Representations with different content protection information into different AdaptationSets. Change-Id: Ib9dc834ae0abf93b7ca0acdf52a865b1394a4816

Commit:2cf6730
Author:Rintaro Kuroiwa
Committer:Rintaro Kuroiwa

Make {Video,Audio,Text}Info optional - The fields used to be repeated but there is no use case at the moment. - DASH IOP explicitly disallows segments with multiple tracks. Change-Id: Ia0af2048210c546dfaa178735605a81052ea1123

Commit:fcaac3d
Author:Rintaro Kuroiwa
Committer:Rintaro Kuroiwa

Check for sample aspect ratio, frame duration, and time scale - These fields are required to generate DASH IOP compliant MPDs of type=video. Change-Id: I142ecd662e454ae10d06d66aa5519171f5995303

Commit:b8126bc
Author:KongQun Yang
Committer:KongQun Yang

Move source code into packager directory Make it easier to be included and integrated into other code. Change-Id: I609881688cc20f8fac676cbd91fde4753af32ee5

Commit:3114ee9
Author:KongQun Yang
Committer:KongQun Yang

Add namespace edash_packager to packager codes For mpd codes, rename dash_packager to edash_packager; for media codes, add namespace edash_packager. Change-Id: I1120e6110c734cd02bdbe15f1cf7abddcdfdd7ea

Commit:4a8e868
Author:Kongqun Yang
Committer:KongQun Yang

Remove submodules, third_party, testing, and tools This is preparing for gclient switching. Build break is expected. Some change in build script is required. Change-Id: I4ebb78d3ae3114318c101ff4927954c89fce9a1d

Commit:0154654
Author:Rintaro Kuroiwa
Committer:Rintaro Kuroiwa

Remove LITE from protobuf for serialization to human readable string TextFormat class methods that output human readable messsages need Message instance where LITE uses MessageLite. Change-Id: I4ff14aa9334acdad608f0b02c81d9cb765e70a60

Commit:f4c7807
Author:Rintaro Kuroiwa
Committer:Rintaro Kuroiwa

Add 'name' field to Element protobuf message Change-Id: I527433d6cee2c4e0deb2f243f623f40e29ba8c21

Commit:4723ef7
Author:Rintaro Kuroiwa
Committer:Rintaro Kuroiwa

Add container type to MediaInfo proto Change-Id: Ife22c7d8641af3847be3da9bf6e96146d72749f0

Commit:d34a331
Author:Rintaro Kuroiwa
Committer:Rintaro Kuroiwa

Add fields in ContentProtection to match MPD spec Because we need to have all meta info in the MediaInfo protobuf, we need full 'ContentProtection' element. Change-Id: I714ff5b8d7baa2ae0d169a59005210a63da315b5

Commit:dcc99d5
Author:Rintaro Kuroiwa
Committer:Rintaro Kuroiwa

Add reference time scale to the protobuf Change-Id: I085c8203194262c80ed38f4fca9a26e9417bb977

Commit:855ab75
Author:Rintaro Kuroiwa
Committer:Rintaro Kuroiwa

MediaInfo needs timescale for each video and audio, and floating point for media duration. Change-Id: I906308894da64fa266188f51d7c307e6fb42db97

Commit:b5cce09
Author:Rintaro Kuroiwa
Committer:Rintaro Kuroiwa

media_info.proto protobuf for MpdBuilder TEST=compiles Change-Id: I4a67013f7770f8ce41426be527919cd969894d50

Commit:0972f4d
Author:Rintaro Kuroiwa
Committer:Rintaro Kuroiwa

Add protobuf - Copied from Chromium Change-Id: I4b61e8282903feb2d64111934c9aa97955b06cf1