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

Video on low bandwidth #1474

Closed
isotoxin opened this issue Nov 25, 2015 · 3 comments
Closed

Video on low bandwidth #1474

isotoxin opened this issue Nov 25, 2015 · 3 comments

Comments

@isotoxin
Copy link

No any correct video frames received on low bandwidth. As user, I expect decrease video fps (frames per second), but I just get broken image. Totally broken - digital noise. Lower bitrate is not solution when desktop sharing, because I want to read text of shared desktop and I agree to get frames updates ones per 10 seconds, but correct image - not unreadable blurred image.
How to reproduce: just do video call via tcp (disable udp) and share desktop (my resolution is 1920x1200). uTox or qTox - no matter.
Hint: using lossy packets - is bad idea for video. At least, key frames should be transferred lossless.

Better video quality can be obtained with following algorithm:

  1. put solid frame (not just separate independent lossy packets) to send queue
  2. send key frames lossless, other frames - lossy. Important! lossless mean that whole frame must be droped, not only some packets, otherwise we get broken image
  3. ignore new frames while send queue is busy (sending previous frame in progress)
@seankhl
Copy link

seankhl commented Jan 27, 2016

Can someone give an update on this? Is there any documentation for the bitrate adjustment algorithm, or can someone at least point me to where in the code this is?

I'm very interested in improving the bitrate adjustment algorithm, and possibly doing something like @Rotkaermota suggested, where we can trade off between adjusting the framerate and the bitrate. There should also be a gpu implementation for at the very least on-board Intel chips so that we can take advantage of that hardware and compete with mainstream clients. I am a somewhat experienced gpu programmer so I would be willing to take a look at this.

But in addition, I've experienced similar problems, where these adjustments result in fully corrupted video frames (grey blocks and unacceptable noise)! There must be a bug in the algorithm, as this is not acceptable result from bitrate adjustment.

@GrayHatter
Copy link
Collaborator

toxcore uses whatever bitrate you give it, so that part would be a client issue.

Shouldn't be too hard to add an extra API function to send a lossless frame. That's something that could then be implemented client side.

@GrayHatter
Copy link
Collaborator

replaced by #1479 and #1525

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants