Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Misleading log output when HLS target duration updates #25

Open
wants to merge 38 commits into
base: main
Choose a base branch
from

Conversation

Brainiarc7
Copy link
Owner

This fixes shaka-project#969

@Brainiarc7 Brainiarc7 changed the title Fix:Misleading log output when HLS target duration updates fix: Misleading log output when HLS target duration updates Apr 1, 2023
sarge and others added 29 commits July 5, 2023 14:18
…rs. (shaka-project#1170)

It appears that not all Apple implementations follow the HLS guidelines.

While the DEFAULT=NO for an audio track should be optional and default
to NO, in practice native HLS players Safari and iOS devices treat the
missing DEFAULT as a MAYBE.

Fixes shaka-project#1169
)

Fix bug where milliseconds were formatted with two digits instead of
three, resulting in incorrect timestamps in TTML cues.

Fixes shaka-project#1180
…aka-project#1186)

The default branch is `main`, not `master`. Indicate this on the
documentation as its' not obvious.

Fixes shaka-project#1060
…ttribute (shaka-project#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.
Closing the upstream on flush will effectively terminate the ongoing
curl connection. This means that we would need re-establish the
connection in order to resume writing, this is not what we want. In the
spirit of the documentation of File::Flush

```c++
/// Flush the file so that recently written data will survive an 
/// application crash (but not necessarily an OS crash). For 
/// instance, in LocalFile the data is flushed into the OS but not 
/// necessarily to disk.
```

We will instead wait for the curl thread to finish consuming what ever
might be in the upload cache, but leave the connection open for
subsequent writes.

Fixes shaka-project#1196
…haka-project#1226)

Updating golden files for failing ttml tests in packager_test.py related
to shaka-project#1179 and
failing HLS unit tests related to
shaka-project#1170.
Fix a bug that if the webvtt file is very short, e.g. only contains one
block

    WEBVTT

    00:00:00.500 --> 00:00:02.000
    The Web is always changing

shaka packager will report error: "Packaging Error: 6 (END_OF_STREAM)".

Fixes shaka-project#1217
…aka-project#1173)

While I have not yet found why the periods are empty, this will prevent shaka from seg faulting

Fixes shaka-project#1172
This is an automated sync of common workflows for this organization.
The upstream source is:
shaka-project/shaka-github-tools@208556c

Co-authored-by: Shaka Bot <[email protected]>
…ent (shaka-project#1205)

As per the AV1 spec, the codec string may contain optional color values.

This extracts the missing color information from the mp4 `colr` atom, if
present, and generates the full AV1 codec string. 

Closes shaka-project#1007
…oject#1214)

Do not assume that each fragment contains all tracks. 
Use track id instead of index to pick the correct timestamp.

Fixes shaka-project#1213
This PR is an extension of the full AV1 codec string feature: [PR
1205](shaka-project#1205) and
relates to [Issue
1007](shaka-project#1007) and
[Issue
1202](shaka-project#1202).

As per the AV1 spec, the codec string may contain optional color values.
These color values are critical for detecting HDR video streams - see
[Issue
1007](shaka-project#1007).
Color information is extracted from the input mp4's `colr` atom and used
to generate the full AV1 codec string. This PR preserves the color
information by writing the `colr` atom to the muxed mp4.

**References**:
- [AV1 Codec ISO Media File Format
Binding](https://aomediacodec.github.io/av1-isobmff/#codecsparam)
- [AV1 Bitstream & Decoding Process
Specification - Section 6.4.2 Color config semantics (page
117)](https://aomediacodec.github.io/av1-spec/av1-spec.pdf)
- [QuickTime File Format
Specification](https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html#//apple_ref/doc/uid/TP40000939-CH205-125526)
This is an automated sync of common workflows for this organization.
The upstream source is:

shaka-project/shaka-github-tools@4245160

Co-authored-by: Shaka Bot <[email protected]>
CC version 13 needs `<cstdint>` to be explicitly included to
provide fixed bits integer types.

Some files using it inludes `<stdint.h>`, some are missing direct or
undirect inclusion. This PR adds `<cstdint>` inclusion to the
minimal set of files, allowing compilation on GCC 13.

Closes shaka-project#1305
…ct#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 <[email protected]>
Co-authored-by: Bartek Zdanowski <[email protected]>
Co-authored-by: Carlos Bentzen <[email protected]>
Co-authored-by: Dennis E. Mungai <[email protected]>
Co-authored-by: Cosmin Stejerean <[email protected]>
Co-authored-by: Carlos Bentzen <[email protected]>
Co-authored-by: Cosmin Stejerean <[email protected]>
Co-authored-by: Cosmin Stejerean <[email protected]>
…1319)

The current libwebm integration test samples contain `libwebm-0.2.1`
however we have updated to a newer version of libwebm so we need to
update the samples.

As of `libwebm-0.3.0` this signature has been frozen so we won't have to
do this again.
shaka-project#1320)

As part of the CMake port we updated the duration formatting to contain
maximum of 6 decimal places but without trailing 0s. There was a bug
however where it used 6 significant digits rather than 6 decimal places
(`%g` rather than `%f`).

This fixes the bug and also updates the MPD sample files for the
integration tests to contain maximum of 6 decimal places.
The accidental tolower in `SplitAndTrimSkipEmpty` was causing stream
descriptors to not preserve case for certain things like
accessibilities.
)

The fix in shaka-project#1289 was not complete and left the fake clock as null which
didn't have any effect. This was revealed by integration tests showing
mismatches in the timestamps in MP4.
…ject#1323)

The current mbedtls integration was not working for some modes. See for
example shaka-project#1316 and also lots of failing integration tests.

For example in pattern encryptor it works on one block at a time so it
cannot assume it's going to always get a buffer with a padding for an
extra block.

From what I can tell when the padding mode is correctly set to
`MBEDTLS_PADDING_NONE` there is no extra block being written to or
required.

This passes all crypto unit tests and integration tests.

Closes shaka-project#1316
A positive value, in milliseconds. It is the threshold used to determine
if we should assume that the text stream actually starts at time zero.
If the first sample comes before default_text_zero_bias_ms, then the
start will be padded as the stream is assumed to start at zero. If the
first sample comes after default_text_zero_bias_ms then the start of the
stream will not be padded as we cannot assume the start time of the
stream.
…haka-project#369) (shaka-project#1311)

Part of shaka-project#369

This adds read support for some MPEG-TS PMT elementary stream
descriptors:
- ISO639 Language Descriptor providing language code and audio type
- Maximum Bitrate Descriptor providing peak stream bandwidth

Those metadata are propagated to StreamInfo structures:
- StreamInfo.language field
- AudioStreamMetadata.max_bitrate field for audio streams
- audio type is currently not propagated - corresponding field has to be
added to AudioStreamMetadata

Test vector file containing those descriptors is provided.
joeyparrish and others added 9 commits February 9, 2024 19:10
protobuf depends on absl, so both needed an update.

Updating absl fixes issues on Alpine 3.19 (see PR shaka-project#1327), and also
removes the need for hacks around vlog flags.
The issues we had with zlib and CMake have been resolved upstream.
…oject#1329)

This will force the muxer to order streams in the order given on the
command-line.

Closes shaka-project#560
Closes shaka-project#1280
Closes shaka-project#1313

---------

Co-authored-by: Joey Parrish <[email protected]>
Co-authored-by: Cosmin Stejerean <[email protected]>
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 shaka-project#881 

---------

Co-authored-by: Cosmin Stejerean <[email protected]>
According to a comment in
packager/third_party/abseil-cpp/source/absl/log/CMakeLists.txt, many
linkers will strip the contents of absl::log_flags because its symbols
symbols are only used in a global constructor, and that for now, clients
should link using
$<LINK_LIBRARY:WHOLE_ARCHIVE,absl::log_flags>.

Closes shaka-project#1325
@cosmin cosmin force-pushed the hls-target-duration-log-fix branch from 513958c to aed63ad Compare February 15, 2024 03:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Misleading log output