Commit Graph

504 Commits

Author SHA1 Message Date
Álvaro Velad Galván d1435c7459 fix(DASH): Improve memory usage with live streams (#7039)
Related to https://github.com/shaka-project/shaka-player/issues/6610
2024-07-15 14:46:39 +02:00
Álvaro Velad Galván 3ba94b82ea fix(DASH): Fix transitions from 'dynamic' to 'static' (#7029)
Fixes https://github.com/shaka-project/shaka-player/issues/2581
2024-07-12 16:18:21 +02:00
Álvaro Velad Galván 3cb40bf516 feat(DASH): Add support for urn:mpeg:dash:ssr:2023 with SegmentTemplate $Number$ (#6745) 2024-07-09 09:27:51 +02:00
Álvaro Velad Galván 5849e2579d feat(DASH): Support DVB fonts with relative urls (#6974) 2024-07-03 20:22:48 +02:00
Álvaro Velad Galván 789101cbba feat(DASH): Add DVB Font downloads (#6971) 2024-07-02 20:52:29 +02:00
Álvaro Velad Galván d63df145aa feat(HLS): Add support for EXT-X-START (#6938) 2024-07-02 08:54:17 +02:00
Gary Katsevman 8825af7b71 feat: add an audiotrackchanged event for when label, language, or roles of an audio track change (#6913)
This piggybacks on the media quality observer to also check whether the
audio track changed and the change was in label, language, or role.

Currently, this new event is triggered is `observeQualityChanges` is
set. This could be moved to a separate config.

I do play to add a test or two to the integration tests.

For verifying the role/label, I was testing against this public test
stream
https://demo.unified-streaming.com/k8s/features/stable/video/tears-of-steel/tears-of-steel-desc-aud.ism/.mpd
(though, it does seem to error out every so often). There might be other
test streams. Angel One is a great one for language.


Also, something that we noticed, but won't be part of this PR. The
timing of this event is likely incorrect if the track was switched and
safeMargin was set. We have some changes for this locally that we can
PR, but there are some issues we found around devices for it, so, it
isn't a straightforward change.
2024-06-27 08:10:37 +02:00
Álvaro Velad Galván 0ea31b46e6 feat: Add option to disable continue loading live stream manifest when paused (#6916)
Close https://github.com/shaka-project/shaka-player/issues/3781
2024-06-26 17:17:28 +02:00
Álvaro Velad Galván 3e45e66af2 fix(DASH): Allow play when SegmentTimeline has a duration 0 "S" element (#6896)
Fixes https://github.com/shaka-project/shaka-player/issues/6889
2024-06-25 09:21:00 +02:00
Álvaro Velad Galván e0208148cb feat: Add isLowLatency to shaka.extern.Manifest (#6842) 2024-06-18 18:48:11 +02:00
Wojciech Tyczyński 8a678f374d feat(Stats): Add manifestGapCount to stats (#6804)
Resolves #6789
2024-06-13 09:41:57 +02:00
Wojciech Tyczyński 65b0b8dd21 feat(Stats): Add manifestPeriodCount to stats (#6798)
Resolves #6788
2024-06-12 08:37:01 +02:00
Wojciech Tyczyński 2f3a1ebf94 feat(DASH): add MPD_PATCH advanced request type (#6787)
Add `shaka.net.NetworkingEngine.AdvancedRequestType.MPD_PATCH` to
distinguish regular MPD requests from MPD Patch requests.
2024-06-11 10:56:14 +02:00
Álvaro Velad Galván 9060ab0a34 feat(DASH): Parse and use target latency (#6683)
Related to https://github.com/shaka-project/shaka-player/pull/6193
Thanks to @gkatsev
2024-05-29 09:45:09 +02:00
Álvaro Velad Galván c574be4377 fix(DASH): Fix update of SegmentTemplate with $number$ for LL (#6687) 2024-05-29 09:27:23 +02:00
Dave Nicholas d38aabf04d feat(DASH): Add MPD Patch support (#5247)
Closes https://github.com/shaka-project/shaka-player/issues/2228

---------

Co-authored-by: Wojciech Tyczyński <wojciech.tyczynski@sky.uk>
2024-05-29 08:11:28 +02:00
Álvaro Velad Galván 329d42ad56 feat: Parse colorGamut and use it in MCap (#6663) 2024-05-24 08:59:06 +02:00
Álvaro Velad Galván 82c5149375 feat(DASH): Add MPD Chaining support (#6641)
Close https://github.com/shaka-project/shaka-player/issues/3926
2024-05-21 09:57:16 +02:00
Álvaro Velad Galván e480bf0ed4 feat(DASH): Support Dolby Vision profile 8.x (HEVC) and 10.x (AV1) (#6590)
Close https://github.com/shaka-project/shaka-player/issues/6589
2024-05-13 10:24:01 +02:00
Álvaro Velad Galván 6c47f8be65 fix(DASH): Fix get partial current position for LL when using SegmentTemplate@duration (#6516) 2024-05-01 00:09:17 +02:00
theodab bbefeada6a chore(DASH): Remove support for float durations. (#6513)
We previously supported float duration attributes in DASH
SegmentTemplate, due to an ambiguity in the DASH samples.

The code linked to a DASH IOP issue asking if duration could be a float
or it had to be an int.

That issue has since been closed, with the clarification that duration
attributes must be an unsigned int and the sample was in violation of
the spec.
2024-04-30 10:12:03 +02:00
Álvaro Velad Galván 2fc0c935c4 feat(DASH): Add manifest.dash.enableFastSwitching config (#6500) 2024-04-29 21:22:29 +02:00
Álvaro Velad Galván 27109feafa fix(DASH): Fix unescape UTCTiming uris (#6501) 2024-04-29 11:55:01 -07:00
Cristian Atehortúa 2dd85e4e23 fix(DASH): decrease memory preasure on manifest with SegmentReference by updating old initSegmentReference (#6499)
Helps on #6070
2024-04-29 11:54:14 -07:00
Álvaro Velad Galván 0873d1ecdd fix: Fix deprecation warning for manifestPreprocessor that is always logged (#6496)
Fixes https://github.com/shaka-project/shaka-player/issues/6488
2024-04-29 12:40:31 +02:00
Álvaro Velad Galván c6c39dfafc feat: Add encryptionScheme to shaka.extern.DrmInfo (#6480)
Related to https://github.com/shaka-project/shaka-player/issues/1419
2024-04-26 06:49:15 +02:00
Álvaro Velad Galván 9ad9c94291 chore: Add backwards compatibility for "Remove DOM Parser" (#6453)
Backwards compatibility for https://github.com/shaka-project/shaka-player/pull/6063
2024-04-18 09:03:26 -07:00
theodab 1da5da9790 fix(DASH): Fix support for multi-mimeType variants (#6348)
A previous PR, #5950, added support for variants that contain multiple
different codecs.
It was supposed to also add support for variants with multiple
mimeTypes, but that part didn't work correctly. This reworks a lot of
#5950 and #6047, to change how they handle such complicated variants.

This has the side-effect of allowing the stream utils to differentiate
between content that has multiple codecs because of type changes, and
content that has multiple codecs because of being muxed video+audio.

Fixes #6010

---------

Co-authored-by: Álvaro Velad Galván <ladvan91@hotmail.com>
2024-04-10 02:48:57 -07:00
Iragne bdabddcc6b feat(DASH): update period as part of configuration (#6419)
Closes https://github.com/shaka-project/shaka-player/issues/6418
2024-04-09 14:22:55 +02:00
Álvaro Velad Galván 07a32419d3 feat(DASH): Add signalling the last segment number in Period (#6416)
Closes https://github.com/shaka-project/shaka-player/issues/2430

Test stream:
http://dash.akamaized.net/dash264/TestCasesIOP41/LastSegmentNumber/1/manifest_last_segment_num.mpd
2024-04-09 09:35:53 +02:00
Álvaro Velad Galván b7b2fc9994 fix(DASH): Set delay to 0 for LL streams (#6406) 2024-04-05 12:07:57 +02:00
Dave Nicholas 67cd2dd29d fix(tXml): html unescape node attributes with urls (#6267)
To provide feature parity with the `DOMParser.getAttribute` API which
would unescape html entities for free this PR unescapes url strings
which come from node attributes.

In a similar vain to
https://github.com/shaka-project/shaka-player/pull/6198 which unescapes
child strings.
2024-02-23 08:55:07 -08:00
Wojciech Tyczyński 4a0d1ca06f fix(DASH): Fix precision issue on some platforms (#6258)
When recalculations of period end are made, it is possible that we will not be able to find last segment from period on low precision platforms. To mitigate it, try to use cached value of `periodEnd_` whenever possible.

Issue observed on Xbox One & Xbox Series.
2024-02-20 10:23:06 -08:00
Iragne a3320707b9 fix(DASH): Update dash manifest when minimumUpdatePeriod = 0 (#6187)
Fixes https://github.com/shaka-project/shaka-player/issues/6185
2024-01-30 15:57:02 +01:00
Dave Nicholas 7116a34ec2 feat!: Remove DOM Parser (#6063)
## Background: 
The native DOM Parser can perform poorly on some older devices, this
approach is faster on newer devices but is considerably better on older
devices.
This PR replaces the usage of the DOM Parser for DASH, MSS, VTT and
TTML.

The draw back of this approach that it does not include any validation
at the cost of better performance.
2024-01-22 08:39:06 +01:00
Wojciech Tyczyński 5e3db78a5e feat(DASH): Allow PeriodCombiner for using streams once (#6097)
In our streams we have guarantee that every track will have a single
match in every period. This change allows `PeriodCombiner` to take
benefit of this knowledge.

I was testing `PeriodCombiner.combinePeriods()` performance of mentioned
changes on Tizen 2021 on 2 streams and I've got following results:

| content | upstream | proposed changes |
| - | -: | -: |
| stream 1 | 17 ms | 12 ms |
| stream 2 | 191 ms | 98 ms |

Both streams are VOD.
Stream 1 has 18 periods with 6 video & audio tracks in each.
Stream 2 has 18 periods with 6 video tracks & 36 audio tracks in each.
2024-01-15 08:11:46 +01:00
Wojciech Tyczyński 4022788a18 perf: PeriodCombiner improvements (#6005)
Summary of changes:
- create dummy streams during preparing arrays of input streams
- use hash map to quickly find perfect stream matches across periods
- hash map also automatically removes duplicates, so remove previous
logic for finding them
- check earlier are we trying to create output stream from dummy stream
- 2 changes from above also gives us a possibility to simplify
`areCompatible()` & `isBetterMatch()` methods
- reduce creation of spare collections when concatenating streams
- reduce conditional logic when possible

I was testing `PeriodCombiner.combinePeriods()` performance of mentioned
changes on Tizen 2021 on 2 streams and I've got following results:

| content | upstream | proposed changes |
| - | -: | -: |
| stream 1 | 23 ms | 17 ms |
| stream 2 | 484 ms | 191 ms |

Both streams are VOD.
Stream 1 has 18 periods with 6 video & audio tracks in each.
Stream 2 has 18 periods with 6 video tracks & 36 audio tracks in each.
2024-01-09 11:21:01 +01:00
theodab bb64cb1f0c fix(DASH): Check if periodCombiner_ exists before configuring (#5998) 2023-12-06 23:44:05 -08:00
Álvaro Velad Galván 31c06ca189 feat: Rename aes128Key to aesKey to allow aes256 in the future (#5990)
See:
https://mailarchive.ietf.org/arch/msg/hls-interest/RZBgatOvI4W0M0J5cShuXWzdigg/
2023-12-05 11:57:14 +01:00
theodab 24e32559bf feat(DASH): Handle mixed-codec variants. (#5950)
With the addition of the changeType API for MediaSource, it is theoretically possible for a variant to change between multiple codecs for a given buffer, over the course of playback.
This adds support for the DASH player to stitch together periods which have such multi-codec variants, but only as a last resort. For example, if one period only has audio in aac, and another period only has opus audio, the player will now stitch those periods together as one, but if there is a throughline that does not involve changing codecs it will go for that instead.

Closes #5961
2023-12-01 00:37:32 -08:00
Álvaro Velad Galván ba85ece3ac fix(DASH): Fix bad url when specify using a full WebVTT with BaseURL (#5954) 2023-11-29 17:33:32 +01:00
Álvaro Velad Galván 8f453c245f feat(DASH): Add support for location in Content Steering (#5914)
According to
https://github.com/Dash-Industry-Forum/Dash-Industry-Forum.github.io/files/11722876/DASH-IF-CTS-001-1.0.0.pdf,
Location elements can have serviceLocation, so we need support it.
2023-11-22 23:02:01 +01:00
Álvaro Velad Galván 0f5982ba8e chore(DASH): Simplify content steering management in DASH (#5909) 2023-11-21 07:14:16 +01:00
Álvaro Velad Galván 3a68623946 fix(DASH): Fix false redirect detection (#5910)
Fixes https://github.com/shaka-project/shaka-player/issues/2216
2023-11-21 05:28:56 +01:00
Álvaro Velad Galván 30de1771cf fix(DASH): SegmentTemplate@media not updated after change in manifest (#5899)
Fixes https://github.com/shaka-project/shaka-player/issues/5898
2023-11-16 19:21:27 +01:00
Dave Nicholas d8aa24f41d fix(DASH): Segments being fetched out of the range of the timeline (#5889)
Fixes: https://github.com/shaka-project/shaka-player/issues/3952
2023-11-16 09:48:12 +01:00
Álvaro Velad Galván 1c6f1fa7b3 feat(DASH): Add support for Content Steering in AdaptationSet BaseURL (#5884)
Related to https://github.com/shaka-project/shaka-player/issues/5704
2023-11-15 08:59:47 +01:00
Álvaro Velad Galván 5f891d98d6 fix(DASH): Fix bad url when specify MPD BaseURL and AdaptationSet BaseURL (#5883)
Fixes https://github.com/shaka-project/shaka-player/issues/5882
2023-11-14 16:00:20 +01:00
Álvaro Velad Galván 42f491f782 feat(DASH): Add support for Content Steering (#5710)
Related to https://github.com/shaka-project/shaka-player/issues/5704
2023-11-09 08:34:09 +01:00
Álvaro Velad Galván 508e5cfbba feat(DASH): Add initial support for "urn:mpeg:dash:ssr:2023" (#5762) 2023-11-03 14:57:15 +01:00