Skip to content

Releases: pixelash459/OmniCam

OmniCam 1.2.2

Choose a tag to compare

@pixelash459 pixelash459 released this 10 Sep 15:31

PC: closing the window (X or any normal close) now hides OmniCam to the system tray while streaming and the virtual camera keep running. Tray icon: left-click shows/hides the window; right-click menu has Show, Start/Stop Stream, Start/Stop Virtual Camera, 'Close to tray on X' toggle, and Quit OmniCam (permanent close). A Quit button is also in the status bar. New flat app icon for the window, taskbar and tray; the icon turns green-dotted while streaming. IPA rebuilt with matching version (no iOS change).

OmniCam 1.2.1

Choose a tag to compare

@pixelash459 pixelash459 released this 10 Sep 15:13

PC: virtual camera output is now declared as BGR to pyvirtualcam - skin tones and clothing colours were red/blue swapped in every app reading the OBS Virtual Camera while the in-app preview looked right. Settings writes retry when Windows briefly locks the file and are cached in-process. IPA rebuilt with matching version (no iOS behaviour change since 1.2.0).

OmniCam 1.2.0

Choose a tag to compare

@pixelash459 pixelash459 released this 10 Sep 14:38

iOS: filter panel sliders no longer scroll the panel; fixed crash when saving filter state (NSNull in NSUserDefaults); beacon also sent to the Wi-Fi subnet broadcast and the phone answers unicast discovery probes on UDP 9920.

PC: fixed LAN discovery (firewall rule now covers Public networks; listener binds all adapters and sends probes); saved-phones list with Connect/Forget and autoconnect to the last phone; remembered stream settings and window layout; redesigned dark UI (sidebar + preview + stats strip) with full feature parity.

Install the Setup.exe (re-adds the firewall rule) and the IPA.

v1.1.12

Choose a tag to compare

@pixelash459 pixelash459 released this 10 Sep 13:49

The actual bug (found from the phone's own log)

The phone's TCP control reader never removed consumed bytes from its line buffer. It shifted the unread tail to the front but kept the buffer length, so stale bytes stayed behind the tail and every later packet from the PC replayed every earlier message. The 1.1.11 log shows hello/session/start/session re-executing ~4x per second and ~190 pings per second, with the two stale session lines flipping the encoder 1080<->720 forever. This same replay is behind the earlier connect/disconnect strobes and "stop" oddities.

Fix

  • Phone: consume exactly the processed bytes (replaceBytesInRange:(0,start) withBytes:NULL length:0).
  • PC: unchanged from 1.1.11 apart from the version (SSRC gating + never-reopen virtual camera stay).

Install

The phone bundle was updated in place to 1.1.12 over SSH; just launch OmniCam. (Or install OmniCam.ipa via Filza.) OmniCam-PC-1.1.12-Setup.exe is optional if you already run 1.1.11.

v1.1.11

Choose a tag to compare

@pixelash459 pixelash459 released this 10 Sep 13:38

Why 1.1.10 still glitched on a live 1080<->720 switch

The phone starts a new encoder with a new RTP SSRC and a random sequence number. The PC receiver ignored SSRC, so packets still in flight from the old encoder re-latched the reorder buffer onto the dead sequence space; about half the time every new packet was then discarded as a "late retransmission" and the video froze (and the NACK/PLI storm made the phone stats jump).

Fixes

  • PC: only RTP/FEC carrying the SSRC from the latest started is processed; stragglers are counted and dropped (regression tests added).
  • PC: the virtual camera is never reopened mid-session; frames are scaled/letterboxed into the opened size so Zoom/OBS/Teams keep their negotiated format.
  • Phone: NSLog now also goes to Documents/omnicam.log (2 MiB rotation) so the next report can be diagnosed over SSH.

Install

Install OmniCam-PC-1.1.11-Setup.exe. The phone bundle was already updated in place to 1.1.11 over SSH; relaunch OmniCam (install OmniCam.ipa via Filza if it does not start).

v1.1.10

Choose a tag to compare

@pixelash459 pixelash459 released this 10 Sep 12:40

Summary

  • Live 1080↔720 from the PC no longer tears down the whole stream or rebuilds VideoToolbox from leftover 1080 frames.
  • Phone pauses encode, switches the capture preset, then starts a new encoder/SSRC; the PC recreates its decoder on started.

Install

Force-close OmniCam 1.1.9 on the phone and PC, then install both:

  • OmniCam.ipa (Filza / AppSync)
  • OmniCam-PC-1.1.10-Setup.exe

Test

Start 1080 from the PC, switch the combo to 720 — TCP stays up, both UIs update, video resumes. Reverse 720→1080. Front camera still clamped to 720.

v1.1.9 — shared session: either side controls the other

Choose a tag to compare

@pixelash459 pixelash459 released this 10 Sep 12:24

Summary

Phone and PC now share one session: camera, 720/1080, fps, bitrate, ABR, torch, zoom, and filters. Change it on either device; the other UI updates.

  • Phone START uses the 720p/1080p control (not a hardcoded 720p encode).
  • Windows resolution/fps/bitrate apply immediately, not only on Start Stream.
  • Front camera still cannot do 1080p; torch stays back-only.
  • Local Adjust on Windows remains PC-only (after decode). Virtual Cam stays PC-only.

Install

  1. Close OmniCam on every PC.
  2. Force-close OmniCam on the phone; install OmniCam.ipa 1.1.9 via Filza.
  3. Install OmniCam-PC-1.1.9-Setup.exe.

Test plan

  • On phone pick 1080p (back camera): Windows combo switches to 1920x1080.
  • On Windows pick 720p: phone segment switches to 720p.
  • Front/back, torch, zoom, ABR, filters: either side updates the other.
  • Start Stream from either side at the selected resolution.

v1.1.8 — Stop Stream must not stall TCP or double-close the decoder

Choose a tag to compare

@pixelash459 pixelash459 released this 10 Sep 12:11

Summary

  • PC Stop Stream was still freezing both apps: start/stop ran on the phone TCP thread (so pings died and Windows reconnect-strobed), and Windows closed PyAV from two threads at once.
  • Phone start/stop now run on a media queue. Control TCP keeps answering ping/stop/bye.
  • Windows always sends stop, ignores a duplicate phone stopped, and will not close the decoder while a frame is decoding.
  • Stop Stream re-enables Start while TCP is still up.

Install

  1. Close OmniCam on every PC.
  2. Force-close OmniCam on the phone, install OmniCam.ipa 1.1.8 via Filza.
  3. Install OmniCam-PC-1.1.8-Setup.exe.

Test plan

  • Start Stream from the PC, then Stop Stream: TCP stays connected, phone HUD does not reconnect-strobe, Start works again.
  • Mash Stop Stream: neither app freezes.
  • Phone START/STOP still works with TCP up.

v1.1.7 — phone STOP must not crash VideoToolbox

Choose a tag to compare

@pixelash459 pixelash459 released this 10 Sep 11:53

Summary

  • Phone STOP now pauses H.264 encoding instead of invalidating VideoToolbox while the camera is still feeding frames (the iOS 12 crash that also made Windows strobe reconnect).
  • Restarting a stream no longer sends a fake stopped message to the PC.
  • Home/background stops capture so SpringBoard does not kill OmniCam with 0x8badf00d.
  • PC treats phone stopped like local Stop Stream: halt NACK/PLI immediately.

Install

  1. Close OmniCam on every PC (one TCP client).
  2. Install OmniCam.ipa 1.1.7 via Filza/AppSync (force-close the old app first).
  3. Install OmniCam-PC-1.1.7-Setup.exe.

Test plan

  • START then STOP on the phone: preview stays, Windows shows stopped, TCP stays up
  • Mash STOP: app does not freeze or crash
  • PC Stop Stream still leaves TCP connected
  • Press Home while streaming: no SpringBoard watchdog kill
  • START again after STOP: video returns without reconnecting TCP

OmniCam v1.1.6 — harden remaining glitch paths

Choose a tag to compare

@pixelash459 pixelash459 released this 10 Sep 11:37

Install over v1.1.5 on both devices.

Full audit of every PC button, timer, and TCP/RTCP message. Remaining ways the phone could glitch (same class as Stop/Front) are hardened here: Phone Filters slider flood, bitrate/ABR blocking the control thread, UIKit overlay off-main, unbounded filter-queue backlog, silent camera recovery.

Still expected: a brief black gap when switching cameras; heavy beauty+stylize at 1080p is slow on the A8 (preview hitch, not connect/disconnect).