Skip to content
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

Patches #2

Open
wants to merge 2 commits into
base: patches
Choose a base branch
from
Open

Patches #2

wants to merge 2 commits into from

Commits on Sep 25, 2014

  1. several tweaks to better support high-resolution screen capture and t…

    …esting
    
     * don't resize input frames to a "standard" WebRTC resolution
    
     * make SrtpSession::Init public so we can call it before any peers
       are created and thereby avoid a data race
    
     * make PacedSender::ShouldSendNextPacket notify listener that the
       queue has been flushed.  This allows us to throttle frame creation
       so we don't get ahead of the network and introduce unecessary
       latency.  It's a total hack, though, since it only allows one
       listener per process, whereas we would preferably support multiple
       peers, each listening to its own PacedSender.
    
     * use the default vp8 config instead of overriding the defaults.  CBR
       does not seem to work as well for screen content, and none of the
       other overrides seem to add any value -- this may be worth
       revisiting, though.
    
     * don't delay rendering video frames on the decode side.  This
       speeds up the integration test by avoiding added latency, but would
       have no effect on a stand-alone screen capture program, since it
       wouldn't include a decoder.
    dicej committed Sep 25, 2014
    Configuration menu
    Copy the full SHA
    0bea5b1 View commit details
    Browse the repository at this point in the history
  2. add support for registering multiple ecovate::Listener instances

    ecovate::Listener is a hack to allow us to listen for certain events
    that the WebRTC stack doesn't ordinarly report to the application,
    such as when the network layer is ready to send and when it's ready
    for more data.  Ideally, we'd pass this listener all the way down the
    stack, but that would require changing a lot of code, so we use a
    hack: acquire a global lock and update a global reference to the
    desired listener before calling PeerConnection::SetLocalDescription,
    then clear the global reference and global lock.  That way, each
    instance of PeerConnection gets a listener appropriate to that
    listener, whereas the previous implementation only worked if there was
    only one PeerConnection per process.
    
    This commit also includes a couple of minor changes to ensure every
    frame the application gives to the WebRTC stack makes it all the way
    to the network (e.g. no frame dropping and no multithreading-induced
    nondeterminism).  This makes writing a reliable integration test much
    easier and aids debugging.
    dicej committed Sep 25, 2014
    Configuration menu
    Copy the full SHA
    c9e2dae View commit details
    Browse the repository at this point in the history