implemented rtp, lb, dl, pb, tpb , ttfb and ttlb#6
Draft
cotid-qualabs wants to merge 54 commits into
Draft
Conversation
Adds `cmcd.reporterCallback` config option, enabling custom key and custom event reporting for CMCD v2.
…r-149.x Update dependency chromedriver to v149
Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
Update dependency wrangler to v4.96.0
…e replaces with simpler text
Update dependency wrangler to v4.97.0
…ideo-dev#7900) * Treat un-demuxable fragments as a gap to prevent infinite reloading When AES-128 media is served without an #EXT-X-KEY tag, the demuxer probe fails and transmuxer.error is set, so the existing gap guard (which only fires when transmuxer.error is null) never marks the fragment as a gap. The error controller then retries and switches levels indefinitely, reloading the same undecodable segment every ~180-200ms. Mark fragments that fail to demux as a gap (when alternate levels exist) so playback advances instead; with a single level the error is left to escalate to fatal after retries. * refactor: extract named booleans in gap guard for readability * Gap-skip only behind the live edge so last-fragment errors escalate to fatal --------- Authored-by: 배홍준[Media Player Tech] <hongjun.bae@navercorp.com>
Fixes internal exceptioin caught by e2e tests: https://github.com/video-dev/hls.js/actions/runs/27314625048/job/80898805659#step:8:361
…en `autoStartLoad` is `false` Fix start on jagged audio/video segment boundaries before interstitial break
…7905) * Support EXT-X-MEDIA-SEQUENCE declaration after EXT-X-SKIP * Use prevFrag to detect a Media Segment preceding EXT-X-MEDIA-SEQUENCE --------- Authored-by: 배홍준[Media Player Tech] <hongjun.bae@navercorp.com>
…r-149.x Update dependency chromedriver to v149.0.1
Update dependency wrangler to v4.98.0
…r-149.x Update dependency chromedriver to v149.0.3
…ore-vulnerability Update dependency @babel/core to v7.29.6 [SECURITY]
Update dependency wrangler to v4.100.0
Update dependency wrangler to v4.101.0
…r-149.x Update dependency chromedriver to v149.0.4
* Fix remuxing of encrypted I-Frame segments * Use end-of-stream to force rendering of appended I-Frame
Update dependency wrangler to v4.103.0
regressed in dev with video-dev#7867 video-dev#7874
Fixes regression introduced in dev with video-dev#7522 that only loaded current and next subtitle segment
* Fix midroll buffering and playback progression from preroll at live edge Fixes video-dev#7912 * Fix live midroll interstitial resumption (low-latency and short primary breaks) video-dev#7912 * Fix appendInPlace stall handling video-dev#7912 * Replace `advanceInPlace` with `hls.startLoad` * Fix live midroll interstitial resumption (low-latency and short primary breaks) - Ensure seek to start on midroll join - Prevent lastCurrentTime > startPosition lock-in before segments are parsed - Improve live primary resumption estimate at end of interstitial playback Resolves video-dev#7912
Update dependency wrangler to v4.104.0
Update dependency wrangler to v4.105.0
) * docs: add Streamfizz to "They use HLS.js in production!" Streamfizz (https://streamfizz.fr) is a French B2B video platform that uses hls.js in production for HLS playback in its video player. --------- Authored-by: Geoffrey Signorato <geoffrey.signorato@webcastor.fr>
Update dependency wrangler to v4.106.0
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR will...
Complete the implementation of several CMCD v2 request and response keys in CMCDController that were previously missing.
rtp(Requested Throughput): segment bitrate ×rtpSafetyFactor(default 5), rounded to nearest 100 kbpslb(Lowest Bitrate): lowest bitrate within the currentmaxAutoLevelrangepb(Playhead Bitrate): bitrate of the level currently at the playhead, tracked viaFRAG_CHANGEDtpb(Top Playhead Bitrate): bitrate of the highest level allowed bymaxAutoLeveldl(Deadline): buffer length divided by playback rate, rounded to nearest 100 msttfb/ttlb: derived from fragment loader response timing by wrapping theonSuccesscallback to callreporter.recordResponseReceived()Adds a new config option
rtpSafetyFactor(default:5) to let operators tune the headroom multiplier used forrtp.Why is this Pull Request needed?
These keys are part of the CMCD v2 spec and were previously missing. Without them, CDN servers cannot use CMCD v2 signals to make informed caching and bitrate decisions.
Are there any points in the code the reviewer needs to double check?
playheadLeveltracking relies onFRAG_CHANGED— verify this is the right event to determine which level is currently at the playhead vs. being buffered ahead.tpbuseshls.maxAutoLevel, which may return-1when unconstrained; the code guards this but worth a second look.onSuccesswrapper in the fragment loader spreadscallbacks— verify there are no edge cases where this wrapping could affect existing loader error handling.Resolves issues:
N/A
Checklist