-
Notifications
You must be signed in to change notification settings - Fork 82
feat: Add playout delay header interceptor #151
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
base: master
Are you sure you want to change the base?
Conversation
aab5891 to
3ab918a
Compare
3ab918a to
0aae0ae
Compare
0aae0ae to
cc23b0e
Compare
Codecov Report
@@ Coverage Diff @@
## master #151 +/- ##
==========================================
- Coverage 79.05% 78.88% -0.18%
==========================================
Files 63 65 +2
Lines 3189 3234 +45
==========================================
+ Hits 2521 2551 +30
- Misses 555 565 +10
- Partials 113 118 +5
Flags with carried forward coverage won't be shown. Click here to find out more.
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. |
cc23b0e to
4ad27e3
Compare
4ad27e3 to
fde19d2
Compare
fde19d2 to
380cc72
Compare
380cc72 to
da7c156
Compare
da7c156 to
9c19688
Compare
9c19688 to
39a4b2e
Compare
39a4b2e to
3f392dc
Compare
3f392dc to
e69fdde
Compare
e69fdde to
b16c5ce
Compare
b16c5ce to
ea6e6a3
Compare
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.
I'm not very familiar with the extension but have two questions: The document mentions that a sender may stop sending the extension if it receives a RR indicating that at it has been received at least once. Do we need that to save bytes?
And second question: Is it enough to send fixed limits, or do we need to be able to update the limits of the interceptor?
|
|
||
| const playoutDelayURI = "http://www.webrtc.org/experiments/rtp-hdrext/playout-delay" | ||
|
|
||
| // BindLocalStream returns a writer that adds a rtp.TransportCCExtension |
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.
copy paste rtp.TransportCCExtension?
pkg/playoutdelay/playout_delay.go
Outdated
| // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| // | ID | len=2 | MIN delay | MAX delay | | ||
| // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
| type Extension struct { |
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.
I think this should be part of pion/rtp
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.
Created pion/rtp#196 to add it to pion/rtp.
Yes, although since it's only a few bytes I figured I'd do it in a followup PR 😅
The limits of the interceptor should be able to change but I'm actually not sure of a good way to do that. Since the developer only instantiates a factory, wouldn't they need access to the underlying interceptor to update the parameters on the fly? Do you have suggestions for such an API? |
Alright, follow up PR sounds fine to me :)
In the bandwidth estimation and similar interceptors, you can register a callback that is called whenever the factory creates a new interceptor. The callback receives the instance of the interceptor for the PeerConnection. I am not sure if this is the best design we can have but I don't know of a better way. |
This interceptor adds the playout delay header extension following http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
ea6e6a3 to
3c49840
Compare
This interceptor adds the playout delay header extension following
https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/rtp-hdrext/playout-delay