Releases: BBC-Esq/Video_Conference_4k
Releases · BBC-Esq/Video_Conference_4k
Release list
v0.5.0 - Complete Calls
v0.5.0 — Complete Calls
The release where a call becomes a whole thing: synchronised audio and video over your own network, echo cancellation, codecs agreed with the other side, and a picture that adapts when the network cannot keep up.
✨ Calling over your own network
- New
DirectConference: a complete two-party call over the fast local path, carrying video and audio together instead of video alone (920d8af) - Standard resolution and framerate presets are built in, and the program now lists every mode your camera actually supports rather than guessing (a35f77d)
- Cameras are asked what they can really do, including the frame intervals they hold in practice (c8cdc28)
- Choose which microphone and which speaker a call uses, instead of always taking the system default (fc45aca)
- High-resolution capture now requests the format cameras can sustain over USB, so 4K no longer falls to a few frames per second (d094517)
- A ready-made harness for testing a call between two machines on a home network (50939bc)
- One machine can now call itself, so the whole pipeline can be checked in half a minute without a second computer (f758a84)
🎙️ Audio you can actually hold a conversation with
- Audio is compressed with Opus and carried alongside the video, rather than sent raw (3ecd126)
- A dedicated audio transport keeps voice on its own path so a heavy video frame cannot delay speech (be9569b)
- Arriving audio is scheduled into a jitter buffer, so an uneven network becomes steady playback (7224bdf)
- Video is now held and slewed to match the audio clock, so lips move with the words (02858cf)
- Capture timestamps travel with each frame and survive the delays inside encoders and decoders, which is what makes that alignment possible (277e9e5)
- Acoustic echo cancellation: the other person no longer hears themselves come back when you are not wearing headphones (4a6a312)
- The canceller picks the best of three implementations present on your machine, from a neural model down to a built-in fallback that needs nothing installed (6d5fe70)
- Playback no longer clicks, gaps, or produces bursts of noise from odd sample values, and a full buffer discards the oldest audio instead of the newest (4c08b26)
- Sharing one microphone between several peers no longer starves some of them or crashes on stereo devices (027155f)
- Hanging up on one person no longer stops the camera and microphone for everyone else (416591e)
🎬 Codecs and hardware encoding
- The two ends now agree which codec to use, in each direction independently, instead of assuming (a4339b7)
- Codec preference is an ordered setting you can rearrange, rather than a fixed choice baked into the program (a829887)
- Which codec to send is now separate from how this machine happens to encode it, so an Intel laptop and an NVIDIA desktop can talk without either guessing about the other (12a105c)
- Arriving video is decoded according to the codec it actually is, not according to what encoded it (3eb7bf6)
- AV1 now decodes correctly instead of failing on the container the encoder wraps it in (b6f1edb)
- A receiver can ask for a fresh keyframe and get one from any encoder, which is what lets a stuttering picture recover (686984a)
- Hardware decoding no longer silently produces nothing, and software decoding handles live streams rather than only files (81bc5aa)
- When one codec fails to start, the next one is tried instead of the call failing (8641297)
🔍 Knowing what your machine can do
- Preflight proves each encoder by actually running it, rather than trusting a list of names (717fe94)
- Hardware capability and toolchain capability are reported separately, so "your chip cannot" is never confused with "this ffmpeg build cannot" (7fa4f21)
- Codec support is confirmed by encoding and decoding a real frame round trip (1621fba)
- A missing Quick Sync codec is explained rather than merely reported (0683e9e)
- Missing NVIDIA encoding now tells you which packages to install, and installing the GPU extra brings the CUDA runtime with it (ea1afb6)
- A graphics driver too old for CUDA is called out by name and version (4216446)
🌐 Reaching the other person
- Peers can connect with a short room code through a signaling server instead of exchanging long invite blobs by hand (f73c328)
- TURN relay support, so calls still connect across networks that refuse direct connections (888dcb3)
- Optional UPnP port mapping for direct peer-to-peer through a home router (859341d)
- Audio and video are tagged for priority handling on the network (054b964)
- A machine started first now waits patiently for the other one, instead of going deaf after thirty-six seconds and then reporting itself healthy — this is what caused video to flow only one way (af2175d)
- Secure mode no longer rejects peers that use default addresses (373a680)
⚡ Speed and smoothness
- The send path no longer waits for the receiver to acknowledge every single frame, which was capping the frame rate on any real network (593b3b9)
- Acknowledgements are now collected without blocking at all, and double as a measurement of how far behind the far end is (6a1224a)
- Colour conversion on the encoder's hot path is several times faster and reuses its buffers (4425e36)
- The picture now adapts its bitrate to congestion, and raises it back as careful probes rather than on a timer that manufactured a stall every few seconds (461fa49)
- Under heavy congestion frames are dropped at the camera, where it costs nothing, instead of piling up (74ced30)
- Encoders are tuned for low latency with proper buffer headroom, and keyframes are spaced further apart wherever recovery is possible, which cuts bitrate noticeably at 4K (161e198)
- Windows timer resolution is raised for the duration of a call so frame pacing is even (a4e6305)
- Checking what ffmpeg supports costs one subprocess call instead of many (396b4cc)
📊 Seeing what is happening
- Live call statistics: bitrate, frame counts, drops, reconnects and lag (a1ae1ba)
- Both sides now report what they are really doing — the codec in use, which chip is encoding and decoding, and what the peer said it could handle (65ea2d2)
- Arrivals are counted as well as departures, so a peer that has quietly stopped sending is visible instead of looking healthy (6c3b01f)
- The example call window shows all of it, including whether the encoder is alive, how long the far end takes to answer, and how long it has been since anything arrived (d944f5c)
- A camera that has failed is surfaced rather than silently freezing the picture (a93ba45)
🧱 Stability and correctness
- Streaming encoders no longer block forever on Windows (26fba8b)
- Buffers throughout the media path are bounded, so latency cannot quietly accumulate over a long call (cc787dd)
- A camera read failure is recovered from instead of freezing the stream (57e0c58)
- Workers are woken and joined before transports close, so shutting down a call no longer hangs (05e4c7c)
- Timestamp pairing recovers after a decode gap rather than staying misaligned for the rest of the call (2c96d8c)
- A transport no longer abandons a working call because three unrelated stalls happened over its lifetime, and elapsed time is measured with a clock that cannot step backwards (3a07671)
- A codec agreed with a previous peer no longer survives into the next call (2ad650c)
- Empty encoder output is no longer transmitted as though it were a video frame (5122f96)
- Codecs were reorganised into their own package, with a batch of transport fixes alongside (c82ede6)
- Assorted smaller defects across utilities, conferencing and transport, plus removal of dead code (ce888e3)
v0.4.0 - add software codec
v0.3.0 - add intel quicksync
v0.2.0 - correct library structure
Add files via upload