Giter VIP home page Giter VIP logo

Comments (2)

sipsorcery avatar sipsorcery commented on June 15, 2024

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.

theimowski avatar theimowski commented on June 15, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.