[TABLE="class: cms_table_grid, width: 98%"][TBODY][TR][TD="bgcolor: black"]-
[/TD][/TR]
[TR][TD="bgcolor: darkgrey"]
SOURCE:
https://github.com/xerpi/psp-uvc-usb-video-class[/TD][/TR][/TBODY][/TABLE]
[TR][TD="bgcolor: darkgrey"]
PSP USB Video Class (UVC) plugin
by xerpi
by xerpi
-
[TABLE="class: cms_table_grid, width: 98%"][TBODY][TR][TD="bgcolor: lightgrey"]This is a plugin that lets you stream your PSP screen to your computer via USB.
It follows the USB Video Class (UVC) standard, therefore it should work on any OS.[/TD][/TR][/TBODY][/TABLE]
-
[TABLE="class: cms_table_grid, width: 98%"][TBODY][TR][TD="bgcolor: lightgrey"]- 480x272 YUY2 @ 30 FPS and 60 FPS (WIP)
-
[TABLE="class: cms_table_grid, width: 98%"][TBODY][TR][TD="bgcolor: lightgrey"]Download:
Installation:
- Copy uvc.prx to ms0:/seplugins/
- Add uvc.prx to ms0:/seplugins/VSH.TXT and/or ms0:/seplugins/GAME.TXT
- Reboot your PSP
Viewing
On Windows I recommend PotPlayer for viewing, and on Linux I recommend mpv or mplayer.
- mpv av://v4l2:/dev/videoN --profile=low-latency --untimed
- mplayer tv:// -tv driver=v4l2:device=/dev/videoN
You can use OBS to capture/live-stream the incoming video from the PSP.
Compilation
- If you want to compile the source code, pspsdk is needed.
-
[TABLE="class: cms_table_grid, width: 98%"][TBODY][TR][TD="bgcolor: lightgrey"]- If you use Windows 10 you might have to change the Camera access permissions on the Privacy Settings.
- Remember that if anything goes wrong (like the PSP not booting) you can always press R at boot to enter recovery mode.
-
[TABLE="class: cms_table_grid, width: 98%"][TBODY][TR][TD="bgcolor: lightgrey"]0.1 [Proof of concept]
This is the first release, can be considered Proof of concept/alpha quality:
- Uses the CPU to perform format conversion to YUY2
After doing some measurements, I've found that it takes:
- 32.9ms to perform CSC (RGB -> YUY2)
- 16.1ms to send the frame through USB
⇒ This means 1 / (32.9 + 16.1 ms) = ~20FPS.
To improve this, we should take advantage of the VFPU, ME or VME to perform fast RGB->YUV conversion. Probably sceMpegBaseCscVme, sceDmacplus_driver_0x9C492B9B and similar functions look the most promising.
If we could reduce CSC time to < 16.667ms we could achieve 60FPS by double buffering to hide latencies, in a ping-pong fashion (with one frame of latency from capture to sending):
[/TD][/TR][/TBODY][/TABLE]Code:|CSC0|CSC1|CSC2|....|....|CSCn| |USB0|USB1|USB2|....|....|USBn|
SOURCE:
https://github.com/xerpi/psp-uvc-usb-video-class[/TD][/TR][/TBODY][/TABLE]