Live data from Hacker News

Ask HN: What's preventing us from achieving seamless video communication?

news.ycombinator.com

1–10 of 64 posts

Ask HN: What's preventing us from achieving seamless video communication?

#1
Better video compression? faster network speeds? alternative network protocols?

With all due respect to all the amazing folks working in the domain, as a person working outside the field, the quality of even 1:1 video communication still seems far from ideal.

Wanted to understand a bit what the main underlying hurdles are. Folks say there's less room for improvements with compression after H.264. I'm not sure how much network speeds are a factor given things can get botchy even with wired high bandwidth connections. The audio artifacts definitely impacts the perceived quality so not sure if there's room for improvement here technically.

Re: Ask HN: What's preventing us from achieving seamless video communication?

#3
Zoom and Facetime are pretty decent, but you are completely right. The fundamental problem is we have a huge stack of technologies that just barely work. It runs from USB to video drivers, to operating systems, to videoconferencing software to Wi-Fi to home/office routers to cable modems to cable infrastructure to TCP/IP to backbone network capacity, and back. Everything is pushed to the limit. It's basically the Richard Gabriel worse is better problem, compounded. Everyone gets their part to something like 99% reliability.

If you're depending on 20 things, each having 99% reliability, the system has 82% reliability. Roughly speaking, that's what's happening. There is no silver bullet to fix this. Bringing one layer from 99% to 100% brings the system from 82% to 83%.

Re: Ask HN: What's preventing us from achieving seamless video communication?

#5
Low-latency packet video can work incredibly well over a dependable network connection (with a known constant throughput and no jitter), low end-to-end per-packet latency, and good isolation between everybody's microphone and speaker. This was mostly solved in the 1990s.

A lot of what makes Skype/Facetime/WebRTC/Chrome suck are the compromises and complexity inherent in trying to do the best you can do for when these things don't hold -- and sometimes, those techniques end up adding latency even when you do have a great network connection.

Receiver-side dejitter buffers add latency. Sender-side pacing and congestion control adds latency. In-network queueing (when the sender sends more than the network can accommodate, and packets wait in line at a bottleneck) adds latency. Waiting for retransmissions adds latency. Low frame rates add latency. Encoders that can't accurately hit a target frame size on an individual frame basis add latency. Networks that decrease their available throughput (either because another flow is now competing for the same bottleneck, or the bottleneck link capacity itself deteriorated) cause previously sustainable bitrates to start building up in-network queues, add latency.

And automatic echo cancellation can make audio incomprehensible, no matter how good the compression is (but the alternative is feedback, or making you use a telephone handset).

Another problem is that the systems in place are just incredibly complex. The WebRTC.org codebase (used in Chrome and elsewhere) is something like a half million lines of code, plus another half million of vendored third-party dependencies. The WebRTC.org rate controller (the thing that tries to tune the video encoder to match the network capacity) is very complicated and stateful and has a bunch of special cases and is written in a really general way that makes it hard to reason about.

And the fact that the video encoder and the network transport protocol are usually implemented separately, by separate entities (and the encoder is designed as a plug-in component to serve many masters, of which low-latency video is only one, and often baked into hardware), and each has its own control loop running at similar timescales also makes things suck. Things would work better if the encoder and transport protocol were purpose-designed for each other and maybe with a richer interface between them (I'm not talking about changing the compressed video format itself; just the encoder implementation), BUT, then you probably wouldn't have access to such a competitive market of pluggable H.264 encoders you could slot in to your videoconferencing program, and it wouldn't be so easy for you to swap out H.264 for H.265 or AV1 when those come along. And if you care about the encoder being power-efficient (and implemented in hardware), making your own better encoder isn't easy, even for an already-specified compression format.

Our research group has some results on trying to do this better (and also simpler) in a principled way, and we have a pretty good demo video: https://snr.stanford.edu/salsify . But there's a lot of practical/business reasons why you're using WebRTC or FaceTime and not this.

Re: Ask HN: What's preventing us from achieving seamless video communication?

#7
post #2

The lack of circuit switching and bandwidth.

Exactly.

ISDN was a 64kb/s circuit switched channel end to end, rigidly clocked. Every bit came in on schedule. Voice with no jitter. A friend of mine in Switzerland had ISDN home phones until last month, when Swisscom discontinued it in favor of a VoIP system with worse voice quality.

If there had been a video successor to ISDN, say a 10mb/s circuit, we'd have real time HDTV video chat with no jitter.

Voice and video over IP only work because of horrible kludges to deal with jitter and lag.

Re: Ask HN: What's preventing us from achieving seamless video communication?

#8
post #3

Zoom and Facetime are pretty decent, but you are completely right. The fundamental problem is we have a huge stack of technologies that just barely work. It runs from USB to video drivers, to operating systems, to videoconferencing software to Wi-Fi to home/office routers to cable modems to cable infrastructure to TCP/IP to backbone network capacity, and back. Everything is pushed to the limit. It's basically the Ric…

Seems like we would do well to find a way to implement some kind of certification process, like we do with engineers. [1]

If you lose your certification if you write low-quality code, then (hopefully, if the certifiers have the processes in place) you'd not write the code. In that way, we could finally compare the importance of quality in writing a device driver to the importance of quality in designing a bridge.

[1] https://www.nspe.org/resources/licensure/what-pe

Re: Ask HN: What's preventing us from achieving seamless video communication?

#10
I used to work in this field several years ago. It’s gotten way better over time but there’s room for continuing improvement.

Personally I think it’s a bit of everything:

There’s almost no standardization in signaling protocols. Things like FaceTime and WhatsApp don’t interoperate.

NAT hole punching remains a complex problem. It’s not easy to solve.

Bandwidth is often not stable for long periods of time. Bandwidth drops, latency spikes, packets get lost or retransmitted. WiFi connections are sketchy. Wired connections are better but still packet switched. Cellular wireless systems are overloaded and suffer from multipath fading.

Encoders are insanely complicated to build. Hardware acceleration isn’t easy to implement either. Configuring an encoders parameters for a connection environment is hard and remains a craft and not a science.

The human eye seems to be much more sensitive to artifacts than the human ear. Cameras are hard to tune and expensive. Auto focus white balance etc effect call quality quite badly. Camera placement is still a challenge. Minor changes to lighting and colors can make huge shifts in quality.

This is why video from dedicated conference rooms is way better than video calls from phones or laptops. The state of the art under controlled conditions is really unbelievably amazing.

Post reply on HN