-
Notifications
You must be signed in to change notification settings - Fork 425
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
feat: content steering switching #1427
Conversation
Codecov Report
@@ Coverage Diff @@
## main #1427 +/- ##
==========================================
+ Coverage 85.75% 85.93% +0.17%
==========================================
Files 42 42
Lines 10284 10414 +130
Branches 2374 2409 +35
==========================================
+ Hits 8819 8949 +130
Misses 1465 1465
📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more |
Curious about the usage of Are we sure we want to use this value?
It is not related to network |
Also curious about the usage of Do we need I believe it should be |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks great, Walter! Per @dzianis-dashkevich's comment, I think he is correct. We will probably want to use bandwidth instead of our internal throughput value.
@dzianis-dashkevich I believe we need to pass the entire segment loader here because |
@wseymour15 Thanks for addressing this, yeah that is correct. We need a reference to the actual |
Yes, I understand that :) Sorry, I didn't express my thoughts fully in my previous messages...
My point was to provide a bare minimum interface required for a controller to work. This is a common approach when designing a new entity, you are using a DI for injecting dependencies, but instead of relying on concrete implementation, you invert control by expecting some interface: So, in this particular use case: or something like that. It is a minor thing, and I am ok to keep things as is. |
@dzianis-dashkevich Yeah I see what you mean, and I 100% agree. The only reason it was done this way was because we needed |
+1 from me when all checks will be successful |
@dzianis-dashkevich we decided to remove the segmentLoader parameter and just pass xhr and a bandwidth function, I think it's much better. Thanks for the suggestion. |
Description
The changes include the logic for switching pathways regarding content steering. All specifications for both DASH and HLS can be found in the resources below. The function of these changes are to ensure that we are communicating with the content steering server, handling the responses, switching playlists based on this data, and ensuring that we follow the requirements of the spec when deciding when/where to switch.
Specific Changes proposed
Example Manifests to Test Locally
DASH: https://fastly.content-steering.com/bbb/playlist_steering_fastly_https_cdn-a_cdn-c_cdn-b.mpd
HLS: https://fastly.content-steering.com/bbb_hls/master_steering_fastly_https.m3u8
Specs
https://dashif.org/docs/DASH-IF-CTS-00XX-Content-Steering-Community-Review.pdf
https://developer.apple.com/streaming/HLSContentSteeringSpecification.pdf
Requirements Checklist