Skip to content

Releases: devnoname120/vita-udcd-uvc

vita-udcd-uvc 1.9

Choose a tag to compare

@devnoname120 devnoname120 released this 19 Sep 13:14
1cf3272

Changes

  • Overlap hardware NV12 conversion with USB transmission using two dynamically sized framebuffers and the existing video worker. Explicit buffer ownership prevents reuse while USB DMA is still reading a frame.
  • Fix vblank pacing so a rounded host frame interval does not halve the capture cadence. Preserve fractional timing and coalesce delayed notifications instead of accumulating stale captures.
  • Recover double buffering when the ordinary kernel physical-memory allocation fails: retry the dedicated physically contiguous, non-cacheable kernel pool. Retain single-buffer operation if the second buffer still cannot be allocated.
  • Restore DEBUG build compatibility with current vitasdk cache and mutex APIs.

Video remains standard USB Video Class uncompressed NV12, with IFTU conversion and direct USB DMA. No codec, software full-frame copy, additional video thread, or deeper request queue was added. All five resolutions, including 720p, remain available. The audio implementation and USB descriptors are unchanged from the main/1.8 baseline; the experimental secondary-output audio changes from dev are not included.

Observed performance

Short physical-Vita tests on the main LiveArea screen found:

  • Native 960x544, requested 60 FPS: the overlap/pacing build improved received video from 46.52 FPS in 1.8 to 51.89 FPS (about +11.5%). The final build remained at about 51.88 FPS.
  • 1280x720, requested 30 FPS: the allocation fallback improved received video from 26.90 to 29.35 FPS (about +9.1%) compared with that intermediate build.

These were two separate short comparisons, not a single randomized trial. The saved CPU/GPU/bus/crossbar profile was 500/222/222/166 MHz; actual clock registers were not sampled. The final 720p run did not sustain uninterrupted 30 FPS. These are capture-throughput measurements, not claims of increased game FPS, reduced game overhead, or lower end-to-end latency.

All five video resolutions produced correctly sized, changing images. Simultaneous 720p video and non-silent 48 kHz stereo audio passed, followed by video-only restart checks. Fifteen native transport/capture test groups pass in each buffer configuration, plus shutdown and pacing tests; all twelve Vita cross-build configurations passed without warnings or unresolved symbols.

The full findings and limitations are in the hardware test report. Game workloads, sustained memory pressure, long-run audio synchronization, and unplug/suspend/unload behavior were not exhaustively tested.

Installation and compatibility

Replace ur0:tai/udcd_uvc.skprx with the attached file and reboot. Keep only one active UVC plugin entry under *KERNEL in the taiHEN configuration. Retain a copy of the previous plugin for rollback.

The audio limitations from 1.8 remain: local Vita speaker output is muted while USB audio capture is active, and Bluetooth audio and USB audio capture must not be used simultaneously. The normal build does not automatically switch the Vita display off.

The attached file is the exact normal build tested and read back from the Vita. Its SHA-256 is:

4fd1145f4ef8705775eb3bd184d1666c43938fb125eb81aa6daa61d722343d87  udcd_uvc.skprx

The conversion/transmission overlap is adapted from trap15's original change, with different buffer ownership and lifecycle handling.

vita-udcd-uvc 1.8

Choose a tag to compare

@devnoname120 devnoname120 released this 15 Sep 21:39
e779bd2

Adds USB Audio Class 1.0 capture alongside the existing USB video stream.

Audio format: 48 kHz, stereo, signed 16-bit PCM. The stream captures the final Vita software audio mix, not the microphone.

Known limitations:

  • Vita speaker output is muted while USB audio capture is active.
  • Bluetooth audio and USB audio capture cannot be used simultaneously.
  • On macOS, use FFmpeg 8.1.3 or later because older versions have an AVFoundation USB-audio bug.

Installation:

  1. Copy udcd_uvc.skprx to ur0:tai/udcd_uvc.skprx.
  2. Add it under *KERNEL in ur0:tai/config.txt.
  3. Reboot the Vita.

SHA-256: 0e9b9ee25477d48b4f1705cc6aa911442c7974840613fe82bd17d3c2989e70e0