-
Notifications
You must be signed in to change notification settings - Fork 37
Video routing and EDIDs
The Processing Unit contains two HDMI crossbar switches. These are used to route video into the PU's processor and to either the HMD and Social Screen. The processor performs different video actions depending the on current mode of the Processing Unit.
The Processing Unit takes the incoming video (from PS4/PC) and maps it onto a virtual screen. This processed image is fed to the HMD, giving the effect of being in-front of a large cinema screen where it's position is fixed in virtual space as the user move's their head. This only tracks head rotation, not the position (which would required data from the PS4 Camera.
The output of the social screen is an exact copy of the video input (from PS4/PC).
The processor receives a pre-distorted image from the PS4/PC. It de-distorts the right eye image and crops it slightly before outputting it the Social Screen, at whatever resolution that the Social Screen supports (or optionally it can force resolution to be either 480p, 720p, 1080i or 1080p).
The pre-distorted image is sent directly to the HMD, the PS4/PC must track the headset position and update the image accordingly. The Processing Unit does not alter the HMD image at all. The crossbar switch has the ability to render simple graphics, this is how the 'rotating circles' and other messages are displayed on the headset.
In some game play modes, there is a 2nd video stream delivered via USB as H.264 video. This is decoded by the Processing Unit to display on the Social Screen (instead of the de-distorted image).
The EDID system allows a display to communicate (to the PC) what screen sizes that it supports, this has been standard since the CRT days - where sending a wrong screen size (vertical/horizontal refresh rate) could actually kill a monitor!
For HDMI (and VGA) the EDIDs are read via I2C, normally out of an EEPROM in the device.
The PSVR returns a binary blob which is decoded as this...
Extracted contents:
header: 00 ff ff ff ff ff ff 00
serial number: 4d d9 03 b4 01 01 01 01 30 18
version: 01 03
basic params: 80 10 09 78 0a
chroma info: 3d a5 a9 56 3d b6 22 0c 50 54
established: 20 00 00
standard: d1 c0 01 01 01 01 01 01 01 01 01 01 01 01 01 01
descriptor 1: 02 3a 80 18 71 38 2d 40 58 2c 45 00 a0 5a 00 00 00 1e
descriptor 2: d6 09 80 a0 20 e0 2d 10 10 60 a2 00 a0 5a 00 00 00 18
descriptor 3: 00 00 00 fc 00 53 43 45 49 20 48 4d 44 20 2a 30 38 0a
descriptor 4: 00 00 00 fd 00 17 3d 1a 44 0f 00 0a 20 20 20 20 20 20
extensions: 01
checksum: d0
Manufacturer: SNY Model b403 Serial Number 16843009
Made week 48 of 2014
EDID version: 1.3
Digital display
Maximum image size: 16 cm x 9 cm
Gamma: 2.20
Supported color formats: RGB 4:4:4, YCrCb 4:2:2
First detailed timing is preferred timing
Established timings supported:
640x480@60Hz
Standard timings supported:
1920x1080@60Hz
Detailed mode: Clock 148.500 MHz, 160 mm x 90 mm
1920 2008 2052 2200 hborder 0
1080 1084 1089 1125 vborder 0
+hsync +vsync
Detailed mode: Clock 25.180 MHz, 160 mm x 90 mm
640 656 752 800 hborder 0
480 490 492 525 vborder 0
-hsync -vsync
Monitor name: SCEI
Monitor ranges (GTF): 23-61Hz V, 26-68kHz H, max dotclock 150MHz
Has 1 extension blocks
Checksum: 0xd0 (valid)
CEA extension block
Extension version: 3
33 bytes of CEA data
Video data block
VIC 16 1920x1080@60Hz (native)
VIC 31 1920x1080@50Hz
VIC 05 1920x1080i@60Hz
VIC 20 1920x1080i@50Hz
VIC 32 1920x1080@24Hz
VIC 04 1280x720@60Hz
VIC 19 1280x720@50Hz
VIC 02 720x480@60Hz
VIC 03 720x480@60Hz
VIC 17 720x576@50Hz
VIC 18 720x576@50Hz
VIC 01 640x480@60Hz
Audio data block
Linear PCM, max channels 1
Supported sample rates (kHz): 48 44.1 32
Supported sample sizes (bits): 24 20 16
Speaker allocation data block
Vendor-specific data block, OUI 000c03 (HDMI)
Source physical address 2.1.0.0
Maximum TMDS clock: 150MHz
Extended tag: video capability data block
YCbCr quantization: No Data (0)
RGB quantization: Selectable (via AVI Q) (1)
PT scan behaviour: Always Underscanned (2)
IT scan behaviour: Always Underscanned (2)
CE scan behaviour: Always Underscanned (2)
Underscans PC formats by default
Basic audio support
Supports YCbCr 4:4:4
Supports YCbCr 4:2:2
0 native detailed modes
Checksum: 0xa3 (valid)
The EDID reported, however, appears to change when an external display is connected to the PSVR. This means the internal processor (in the PU) is able to adjust according to the situation.
As an example, when my TV is plugged in to the PU's HDMI output (for social screen) the AC-3 decoder in my TV is advertised. I am assuming that this is because the TV support ARC (Audio Return Channel).
Audio data block
AC-3, max channels 5
Supported sample rates (kHz): 48 44.1 32
Maximum bit rate: 56 kHz
Linear PCM, max channels 1
Supported sample rates (kHz): 48 44.1 32
Supported sample sizes (bits): 24 20 16
Speaker allocation data block
With another display attached I get another slightly different response.
Good question, come back here when you find out and explain it to us all ;-)
We can 'Override' the EDID on Windows and add the 90Hz and 120Hz screens, making these selectable via the normal Desktop properties. This was done via the CDU utility (https://www.monitortests.com/forum/Thread-Custom-Resolution-Utility-CRU?page=1).
To install via CRU; start CRU, select PSVR 'monitor', import binary settings 'psvr_120.bin', hit OK and then restart the system.
CRU can also output a '.inf' file which apparently can be loaded directly, without the need for CRU. I was not able to get this to work on my Window10 laptop.
Both file are included here: psvr_120.zip