Skip to content

Releases: devnoname120/vitastream

vitastream 2.0

Choose a tag to compare

@devnoname120 devnoname120 released this 11 Oct 16:21
2.0
d7836db

vitastream 2.0 is the first release under the vitastream name. It is based on vita-udcd-uvc, originally created by Xerpi (Sergi Granell).

Changes

  • Rename the plugin, USB device identity, module, diagnostic/log files, and documentation to vitastream.
  • Merge independent SourceMixer1 secondary-output audio capture with the existing buffered video pipeline. The implementation leaves the normal output route active during USB capture. Audio remains 48 kHz stereo signed 16-bit PCM.
  • Add explicit loaded-module identity checks for firmware families 3.60, 3.61, 3.63, 3.65, 3.67, 3.68, 3.69, 3.70, 3.71, 3.72, 3.73, and 3.74, plus the internal 3.650.000 identities. The checks apply to retail, testkit and devkit modules independently of the reported system version.
  • Validate the selected normal I2S output against the firmware's physical FIFO table, replacing the fixed I2S7 requirement. Keep the monitor-mode, unmapped-output and busy-channel guards.
  • Check module identities, segment extents, USB serializer context and DMA callback/interrupt context before installing hooks or allowing DMA. Abort unknown/mismatched revisions and clean up the hook after startup resource failures.

All five video modes remain available, including 1280x720. Video remains uncompressed NV12 using IFTU conversion and USB DMA.

Downloads

File Use
vitastream.skprx Normal build; leaves the Vita display on.
vitastream_oled_off.skprx Turns off the OLED display while streaming.
vitastream_lcd_off.skprx Turns off the LCD display while streaming.
SHA256SUMS SHA-256 checksums for the plugin files and metadata.
build-info.json Exact source commit, pinned build image, build options and artifact hashes.
firmware-compatibility.json Firmware/module/import validation results for these release builds.

Install one plugin variant. The display-off variants are for the corresponding display type.

Installation

  1. Copy the selected plugin to ur0:tai/.

  2. Replace the previous udcd_uvc.skprx entry in the *KERNEL section of ur0:tai/config.txt with the selected filename. For the normal build:

    *KERNEL
    ur0:tai/vitastream.skprx
    
  3. Keep only one USB streaming plugin entry enabled, then reboot the Vita.

  4. Select vitastream as the video/audio device on the computer. On macOS, use FFmpeg 8.1.3 or later.

Keep the previous plugin file for rollback. Holding L during boot skips plugin loading if recovery is needed.

Validation and limits

The release is built from commit d7836db using a pinned VitaSDK image. The host transport, pacing, shutdown, compatibility, output-route and startup tests pass with AddressSanitizer and UndefinedBehaviorSanitizer. All three attached production variants were rebuilt from a clean Git snapshot; their module names, module version 2.0, USB strings and source hashes were checked.

Offline checks passed against 31 external firmware/hardware combinations and 10 additional internal/tool images, including every linked Sony kernel import for each attached variant. Five external combinations remain unverified because their images were unavailable: testkit 3.69, 3.71 and 3.74; devkit 3.72 and 3.74. The internal devkit 3.72 debugger image was checked separately and does not substitute for its missing external image.

No new physical-console test was performed for this release. Earlier hardware performance reports predate the merged audio implementation and do not establish runtime behavior of these binaries. Audio routed through a different mixer or an active firmware monitor is outside the supported normal SourceMixer1 path.

The complete compatibility report documents the checks and remaining coverage limits. The conversion/transmission overlap is adapted from trap15's original change.

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