shaka-packager/packager
Caitlin O'Callaghan d687ad1ed0
fix: Low Latency DASH: include the "availabilityTimeComplete=false" attribute (#1198)
# Low Latency DASH - `availabilityTimeComplete=false`

Low Latency DASH manifests generated by Packager were missing the
attribute `availabilityTimeComplete`. As per the [DASH
specs](https://dashif.org/docs/CR-Low-Latency-Live-r8.pdf):

**_the AdaptationSet@availabilityTimeCompleteshould be present and be
set to 'FALSE'_**

## The Issue
The missing attribute caused ULL streams from Shaka Packager to no
longer be compatible with DASH.js. Previous versions of DASH.js allowed
users to specify ULL mode when initializing the player. However, the
most recent releases of DASH.js automatically detect ULL by scanning the
manifest for ULL specific attributes. Although there are many attributes
only associated with ULL, [DASH.js only greps for
`availabilityTimeComplete` in its detection
logic](https://github.com/Dash-Industry-Forum/dash.js/blob/development/src/streaming/controllers/PlaybackController.js#L792-L805).
Because of the missing attribute in Packager and the limited ULL
verification criteria by DASH.js, Packager streams were not being
treated as low latency streams by DASH.js.

## Testing
### Unit Testing
`./mpd_unittest
--gtest_filter="SegmentTemplateTest.OneSegmentLowLatency"`
` ./mpd_unittest
--gtest_filter="LowLatencySegmentTest.LowLatencySegmentTemplate"`

### Manual Testing
- Created a low latency stream with Shaka Packager
- Observed the expected `availabilityTimeComplete=false` attribute in
the generated DASH manifest.
2023-07-05 14:33:51 -07:00
..
app fix: hls, set the DEFAULT explicitly to NO. Supports native HLS players. (#1170) 2023-07-05 14:18:41 -07:00
buildtools/third_party Update DEPS to fix mac build failure 2016-08-19 13:49:41 -07:00
file chore: Update URLs after moving projects (#1042) 2022-03-07 11:56:34 -08:00
hls fix: hls, set the DEFAULT explicitly to NO. Supports native HLS players. (#1170) 2023-07-05 14:18:41 -07:00
media fix: TTML generator timestamp millisecond formatting (#1179) 2023-07-05 14:28:57 -07:00
mpd fix: Low Latency DASH: include the "availabilityTimeComplete=false" attribute (#1198) 2023-07-05 14:33:51 -07:00
testing ci: Fix main workflows (#1122) 2022-10-28 15:46:33 -07:00
third_party fix: Fix issues with `collections.abc` in Python 3.10+ (#1188) 2023-05-01 09:07:08 -07:00
tools fix: Fix type error in pssh-box.py with Python 3.10+ (#1187) 2023-05-01 09:06:56 -07:00
version chore: Update URLs after moving projects (#1042) 2022-03-07 11:56:34 -08:00
common.gypi ci: Produce static release executables on Linux (#978) 2021-08-12 20:14:43 -07:00
packager.cc Low latency DASH support (#979) 2021-08-25 08:38:05 -07:00
packager.gyp Fix Windows shared_library builds 2021-06-15 13:16:47 -07:00
packager.h cleanup: Convert all time parameters to signed 2021-08-05 18:24:15 +00:00
packager_test.cc Low latency DASH support (#979) 2021-08-25 08:38:05 -07:00
protoc.gypi build: Fix pylint 2.10 issues, use python3 where possible 2021-08-24 12:27:03 -07:00
status.cc Fix error code message for trick play error 2018-12-13 00:26:55 +00:00
status.h Cleans up Status class 2018-01-31 03:32:07 +00:00
status_macros.h Generate full segment after cue point 2018-03-27 19:14:26 +00:00
status_test_util.h Implement multi DRM support. (Part 1) 2018-03-03 01:39:16 +00:00
status_unittest.cc Cleans up Status class 2018-01-31 03:32:07 +00:00