-
Notifications
You must be signed in to change notification settings - Fork 63
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: Add playout delay header interceptor #151
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