Comments (2)
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.
Should I specify the header extension in SDP at all times, or should it be opt-in (opt-out?), e.g. using a new bool in RTCOfferOptions?
I think so, yes. Receivers can ignoe extensions they don't recognise.
There's a 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?
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.
(related to above two) - how do I go about adding this header extension to RTP packets - should it be added conditionally (when option is specified), and do I need to use the RTPHeaderExtension... constructs to build the rtpPacket.Header ?
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.
unit tests - I haven't seen any relating to RTPHeader serialisation, should I add create such for the above?
Ideally yes, even one or two unit tests are very helpful.
from sipsorcery.
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.
Possibly TWCC would yield better results, but requires a bit more effort to implement on the sender side - and I need to make a trade-off due to limited time.
I'll work on the PR and submit it soon.
from sipsorcery.
Related Issues (20)
- Data channels quickly slow down to a crawl under pressure HOT 3
- SipRegistrationUserAgent not responding to OPTIONS requests from server
- localDescription not updated after ICE gathering HOT 1
- Call SipServer with sipsorcery and answered call but automatically hungup.
- c# .net framework 4.7.2 make call to sip HOT 1
- Answer has extmap http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time at level 0 that was not present in offer. HOT 1
- UAC send manuel Acknowledge(OK) with SDP HOT 1
- High latency in one direction only when connected to conference call HOT 2
- Registration not removed when logging in on different device HOT 2
- How to set requireEvenPort to false in RTPSession
- Signed Nuget package HOT 1
- Chrome Version 124 Update is breaking the DTLS Handshake for WebRTC HOT 19
- `IndexOutOfRangeException` while parsing compound packet with receiver report HOT 1
- nuget package 6.2.4,webrtc is work on windows with Chrome version 124,but not work on centos8
- Register Unauthorized HOT 1
- Possible Null pointer exception if using MdnsResolve HOT 1
- Unhandled exception at WebSocketSharp.WebSocket.Send(String data) if websocket client connect and immediately close it HOT 1
- Issue with Audio Level RTP Extension in Janus-Gateway
- Windows, .NET Framework4.8 console app
- Cannot Play Messages On Linux with "SendAudioFromStream" HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sipsorcery.