Fixes issues with EXTINF duration conversion to microseconds #9576
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The HLS Parser converts from a string decimal duration in seconds into long
microseconds.
Because the conversion passes through a java double type it can result in
representation errors.
For example:
#EXTINF:4.004
->Segment.durationUs
of 4003999This matters because the first sample (which is the IDR) for a segment will be discarded following a seek because of the logic in the
SampleQueue
:This fixes issue #9575 and includes a test case to show it.
I would suggest using this for the partial segments as well, as we are not using LL-HLS yet this does not affect us. If you agree I'm happy to add it to the pull request.
The
EXT-X-START
offset too, although this is probably not as critical.