github doronz88/pymobiledevice3 v9.35.1

latest releases: v11.38.0, v11.37.0, v11.36.0...
3 months ago

Highlights

🐛 serve-vnc: no more mosaic/smear and fps collapse when a client is attached during motion

Under on-screen motion with a VNC client connected, serve-vnc would smear (blocky mosaic) and drop to a crawl. The cause was host-side, not the device or decoder: each full-frame RFB Raw update is width*height*4 (~14 MB at 1264×2752), and writing it through the asyncio StreamWriter ran the copy+flush on the event loop, starving the RTP socket's recv. The kernel receive buffer then overflowed and dropped incoming media packets, breaking HEVC references and collapsing the frame rate (measured: RTP ingress fell from ~60 fps to <15 fps the instant a client attached during motion).

The framebuffer is now sent from a thread-pool executor over a dup() of the client socket, so the send releases the GIL and the event loop keeps draining RTP. No flags or protocol changes — existing serve-vnc usage just stops smearing:

pymobiledevice3 developer core-device display serve-vnc

What's Changed

  • cd24692 serve-vnc: send framebuffer off the event loop to stop RTP receive starvation (#1767) (@doronz88)

Full Changelog: v9.35.0...v9.35.1

Don't miss a new pymobiledevice3 release

NewReleases is sending notifications on new releases.