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
Support for abs-send-time (willing to contribute) #1081
Comments
Thanks for the offer and I for one would certainly welcome any improvements around bandwidth estimation. Although might be worth noting that in my experiments the dotnet managed video pipline struggles at 1080p @ 30fps. The bottleneck will typically be CPU rather than bandwidth. But if you do have a specific sceanrio where bw is a problem it will defintiely help to be able to get a good estimate and lower the frame rate.
I think so, yes. Receivers can ignoe extensions they don't recognise.
I'd say use if it helps but don't feel obliged. It's a generic way to get data from unrecognisd extensions. In your case the extension will be recognised.
Whatever makes most sense. You could add an overload to the RTPHeader class but my immediate insticnt would be to add a new method to RTPHeader along the lines of AddRembExtension.
Ideally yes, even one or two unit tests are very helpful. |
Thanks for the answers. As for the bottlenecks - my use case is desktop sharing, so it's less "dynamic" and therefore I am able to get reasonable results with 3440x1440 at variable frame rate ~20. The REMB itself is not ideal though (even with the abs-send-time extension) - from my experiments it seems it can often trap itself in a "local minimum" and underestimate the available bandwidth - for example when I throttle frame rate, it then doesn't "probe" for more bandwidth and gets satisfied with lowered bitrate. I'll work on the PR and submit it soon. |
* Add abs-send-time to each RTP packet * Add a=rtcp-fb with goog-remb to SDP * Move Header Extensions declaration to SDPMediaAnnouncement constructor * UnixEpoch not available on lower frameworks * Move AbsSendTime to RTPHeader class * Comments for AbsSendTime * Send abs-send-time only if remote track supports it * Add unit test * Revert whitespace changes
Hi, as a follow-up on my recent PR that fixed REMB (de)serialisation, I'd like to add support for abs-send-time.
For my use case, I'd like to have bandwidth estimation for video I'm streaming from SIPSorcery to Browser, and rely on REMB to do so - from local experiments it looks like REMB is used even without abs-send-time, but it's much less meaningful.
Here is a quick and dirty change I made locally to send abs-send-time RTP header extension:
RTPHeaderExtension
toSDPMediaAnnouncement
with id2
AbsSendTime
method that produces payload for the header extension (copied from Pion)SendRtpRaw
I'd like to clean this up and contribute back to SIPSorcery now, hence following questions:
bool
inRTCOfferOptions
?RTPHeaderExtensionData
class which currently is used only for parsing byte buffers - should I use it to build a "model" of the data and only then serialise it to bytes?RTPHeaderExtension...
constructs to build thertpPacket.Header
?The text was updated successfully, but these errors were encountered: