Frame-packing and 3D display support?

We want to set up a 3D stereo-display with the caveats that it must be compatible with our Tobii desktop eyetrackers and non-human primate inter-pupil distances (active glasses, or mirror-splitters do not).

We found a dual-lens projector that uses two lamps (thus no drop in luminance) and polarisation for eye specificity. It supports frame-packing, side-by-side and top-bottom input. As I understand the last two are supported by PTB (sacrificing vertical or horizontal resolution). The first one is part of the HDMI 1.4 spec:

FHD3D

This is different to frame-interleaved mode. I was wondering whether the Panel fitter could be used to emulate this mode manually?

This would be a good time to get priority support, so i can take some time to think about it.

-mario

Hey Mario, so far we cannot easily use Chinese grants to pay to an international service site with non-Chinese payment cards, not sure if this is a problem just with my Institute administrators but I suspect it may affect other groups based in China. Digistore does not offer any Chinese payment methods…

As we are only using single orientation gratings, we will use the split-screen modes to begin with…

That’s a problem! What payment methods does Digistore offer in China, and what payment options do you have?

In germany, at least my former institutes didn’t support payment per credit card - the institute didn’t have one. Every employee, e.g., for going to / paying for conferences, was required to pay with his own private credit card, get a bill/invoice and then get the cost reimbursed from the administration, a beautifully annoying procedure. Would something like this be an option in your lab? Can you think of other payment options that worked for your administration in the past?

1.5 months in, we so far see an - in my opinion - rather underwhelming uptake of the community membership + priority support offering, despite the results of our user survey with over 1000 labs responding, where the general conclusion was that at least one third, and probably over half of all labs would gladly support us at the prize point we chose. So obviously we need to understand what obstacles are there for labs to pay a modest contribution, or things will not look good in the long term. So far we sold only 40 licenses, of which 20 are from one generous US lab (whoever you are, thank you for your support!), so only 21 labs contributed so far.

Feedback about problems or solutions and also word of mouth advertisement for our offerings is greatly appreciated.

-mario

Digistore only offers western credit-cards and paypal. Chinese payments are totally different to those in the West. Credit cards are very uncommon (and not VISA/MASTERCARD etc.). The main debit/credit card system here is called “UnionPay”, however most people use virtual payment systems Alipay or Wechat to pay for just about everything (and also for getting credit to buy stuff they can’t afford). I am not exaggerating to say I haven’t used physical money even once in more than a year, even e.g. buying fruit from a migrant farmer on the street and they all use digital transactions.

So we have problems using Western-style credit cards / Paypal. Payments for equipment normally require Chinese distributors who can raise a standardised Fapiao (receipt) which reimbursement heavily depends on. This means buying stuff like independent software from online stores is really challenging/impossible, as they usually depend on the same credit card/paypal payments and don’t generate a Fapiao. Strict anti-corruption rules also state that anything over 1000CNY (~125EUR) must go through an additional audit system with justification etc.

We may be getting another payment option that is more flexible soon, as administrators recognise the difficulty we can have. The easiest option would be to use a payment vendor that does offer Alipay/WeChat/Unionpay etc.

Hi, we are encountering a similar issue. We have a projector that supports HDMI 1.4 frame packing format for 3D. We can successfully display 3D images or videos using software like PowerDVD and Stereoscopic Player. However, with the same setting, we have been unsuccessful in using PTB (Psychtoolbox) to present 3D images by running ImagingStereoDemo.m and StereoDemo.m. I am wondering is it possible to use PTB to display 3D images on this projector?"

Here is our system information :
CPU: Intel(R) Core™ i5-8500 CPU @ 3.00GHZ
MB: B360M BAZOOKA PLUS(MS-7B23)
Operating system: Window 10
Matlab Version: R2013a (we have also tried Matlab R2021b)
PTB version: PTB - 3.0.10 (we have also tried PTB-3.0.13, PTB-3.0.18 and PTB-3.0.19.2)

Project: Barco DP2K-8S

Here is the outcome when we run ImagingStereoDemo(102)(103),
the computer display shows the images separated into left and right instead of forming a 3D pattern by alternating between the two images like what PowerDVD do.

warning:Your provided “stereomode” conflicts with required stereomode for imaging pipeline. Overriden…
PTB-WARNING: Startup test of beamposition queries for high precision timestamping detected problems on your graphics card + driver combo.
PTB-WARNING: Some of the queries fail even outside the vertical blank interval, so no effective workaround for this driver bug exists.
PTB-WARNING: This renders beamposition queries pretty useless – Disabling high precision timestamping for now.
PTB-WARNING: Please report this message with a description of your graphics card, operating system and video driver to
PTB-WARNING: the Psychtoolbox forum. Maybe the gathered information allows for some work-around in
PTB-WARNING: future PTB releases to get high precision timestamping back on your setup.

Ok, so where is your paid support authentication token to get up to 30 minutes of my attention? → PsychPaidSupportAndServices.

What are those settings you talk about (projector, graphics card, windows settings)? What graphics card? Single-display setup? StereoDemo.m is legacy stuff, nobody should use it anymore on a system past the year 2010 or so.

Output of Screen('Screens'), Screen('Framerate', screenid), Screen('Rect', screenid), ResolutionTest etc.?

Only PTB-3.0.19.2 is supported, playing with the older ones is pointless. Don’t know if R2013a still works with PTB 3.0.19.2.

102 is side-by-side, 103 is for Virtual Reality headsets? With frame-packing, mode 2 would be more appropriate, but specific support for HDMI frame-packing is not implemented, so this might require some paid development work beyond the 30 minutes for initial assessment.

-mario

Your license is now active. For future reference: Please note that you should not have posted the license key, but the authentication token created via the PsychPaidSupportAndServices function of Psychtoolbox. The key is a shared secret between you and us.

HDMI 3D, according to the HDMI 1.4 specification, needs the graphics card to send special HDMI info frames as part of the video stream to switch a compliant 3D capable projector/display into a stereo mode. Psychtoolbox itself can’t do that signalling, only the display driver of your graphics chip can, and PTB doesn’t have software access to such api settings to request enabling it by itself, unless the OpenGL graphics driver of your graphics card supports native OpenGL quad-buffered stereo mode → ImagingStereoDemo(1) would request that mode on a capable system, and then 3D stereo should just work.

If that doesn’t do the trick, the only way to enable a proper HDMI 3D mode, according to some search of internet forums is either:

  • Manually selecting such a 3D mode via some display settings GUI.
  • Some drivers recognize selection of a “regular” video mode (width x height x refresh rate) usually used for HDMI 3D and then switch on the HDMI signalling - a heuristics on the graphics driver side.
  • Some HDMI consumer display devices apparently recognize such a video mode and switch to 3D if properly configured, even if no HDMI 3D signalling happens - a heuristics on the display side.

So followup questions related to the above:

Output of ResolutionTest ? What resolutions can you select in the windows display settings GUI? What models of graphics cards are installed? What types of video output connectors are available on each graphics card? What’s the full Matlab output of a run of ImagingStereoDemo(2)?

What settings are there in the display settings GUI and what 3D settings on your projector?

Your computer seems to have an Intel UHD 630 builtin graphics chip, which could only do 3D HDMI signalling over HDMI 1.4, the model of your discrete graphics card you didn’t tell me yet, but I assume it doesn’t expose 3D mode?

I did look through the manual of your projector model https://kinotehnik.net/wp-content/uploads/2022/05/R5905751_16_DP2KS_User-Install.pdf sections 8.14 (page 82+), and 8.16/8.17 (pages 88+). According to these, your options with the Intel onboard + HDMI 1.4 are limited:

  • 1280x720 60 Hz top-bottom stereo: Only 720/2 = 360 vertical resolution with PTB stereomode 2, ie. ImagingStereoDemo(2). You’d need to select a resolution of 1280x720 60 Hz, probably in your display settings GUI.

  • 3D HDMI frame-packing: A video mode of 1280 x “1440 + a bit” at 60 Hz frame packing mode for 1280 x 720 pixels per eye. This would need implementation of a new HDMI 3D frame packing mode in PTB to format output properly, but first one would need to get it enabled in the first place.

If you had a graphics card with one native HDMI 2.0 output or two HDMI 2.0 video outputs, there would be potentially more options.

Sorry for the late response, we were trying to do all the tests and answer each of your questions precisely.
First, ImagingStereoDemo(1) doesn’t do the trick. For your other questions:
Output of ResolutionTest ?
SCREEN 0: AVAILABLE COMBINED DETAILED RESOLUTIONS:
256 x 160 23、24、25、29、30、50、59、60Hz 32 bits
320 x 200 23、24、25、29、30、50、59、60Hz 32 bits
400 x 300 23、24、25、29、30、50、59、60Hz 32 bits
512 x 384 23、24、25、29、30、50、59、60Hz 32 bits
640 x 400 23、24、25、29、30、50、59、60Hz 32 bits
640 x 480 23、24、25、29、30、50、59、60Hz 32 bits
720 x 480 23、24、25、29、30、50、59、60Hz 32 bits
800 x 600 23、24、25、29、30、50、59、60Hz 32 bits
1024 x 768 23、24、25、29、30、50、59、60Hz 32 bits
1152 x 864 23、24、25、29、30、50、59、60Hz 32 bits
1280 x 600 23、24、25、29、30、50、59、60Hz 32 bits
1280 x 720 23、24、25、29、30、50、59、60Hz 32 bits
1280 x 768 23、24、25、29、30、50、59、60Hz 32 bits
1280 x 800 23、24、25、29、30、50、59、60Hz 32 bits
1280 x 960 23、24、25、29、30、50、59、60Hz 32 bits
1280 x 1024 23、24、25、29、30、50、59、60Hz 32 bits
1360 x 768 23、24、25、29、30、50、59、60Hz 32 bits
1366 x 768 23、24、25、29、30、50、59、60Hz 32 bits
1400 x 1050 23、24、25、29、30、50、59、60Hz 32 bits
1440 x 900 23、24、25、29、30、50、59、60Hz 32 bits
1600 x 900 23、24、25、29、30、50、59、60Hz 32 bits
1680 x 1050 23、24、25、29、30、50、59、60Hz 32 bits
1920 x 1080 23、24、25、29、30、50、59、60Hz 32 bits

What resolutions can you select in the windows display settings GUI?
640 x 400 23、24、25、29、30、50、59、60Hz 32 bits
720 x 480 23、24、25、29、30、50、59、60Hz 32 bits
720 x 576 23、24、25、29、30、50、59、60Hz 32 bits
800 x 600 23、24、25、29、30、50、59、60Hz 32 bits
1024 x 768 23、24、25、29、30、50、59、60Hz 32 bits
1152 x 864 23、24、25、29、30、50、59、60Hz 32 bits
1280 x 600 23、24、25、29、30、50、59、60Hz 32 bits
1280 x 720 (3D) 23 24 25 29 30 50(3D) 59(3D) 60(3D)Hz 32 bits
1280 x 768 23、24、25、29、30、50、59、60Hz 32 bits
1280 x 800 23、24、25、29、30、50、59、60Hz 32 bits
1280 x 960 23、24、25、29、30、50、59、60Hz 32 bits
1280 x 1024 23、24、25、29、30、50、59、60Hz 32 bits
1360 x 768 23、24、25、29、30、50、59、60Hz 32 bits
1366 x 768 23、24、25、29、30、50、59、60Hz 32 bits
1400 x 1050 23、24、25、29、30、50、59、60Hz 32 bits
1440 x 900 23、24、25、29、30、50、59、60Hz 32 bits
1600 x 900 23、24、25、29、30、50、59、60Hz 32 bits
1680 x 1050 23、24、25、29、30、50、59、60Hz 32 bits
1920 x 1080 (3D) 23(3D) 24(3D) 25 29 30 50(3D) 59(3D) 60(3D)Hz 32 bits

What models of graphics cards are installed?
graphics card : NVIDIA GeForce GTX 1050 Ti with NVIDIA Studio driver 531.61
We also have tried
1:
CPU:12th Gen intel(R) Core™ i7-12700k 3.60 GHz
Graphics card : NVIDIA GeForce RTX 3050 didn’t expose 3D model setting in the display setting
2.
CPU: intel(R) Core™i5-4590 3.30 GHZ
Graphics card : Quadro K620 ) support NVIDIA 3D, but not the 3D we need

What types of video output connectors are available?
video output connectors : one HDMI 2.0 (not sure it’s a native or video output yet);one Display Port 1.4;one DVI-D

What settings are there in the display settings GUI and what 3D settings on your projector?
In the GUI of the computer’s display settings, there is a “3D display mode” option available.
When it comes to projector settings, the available options depend on the input ports. These options include DP, HDSDI and HDMI. In HDMI, we can switch between 2D and 3D model. It automatically detects the signal without requiring further configuration. The projector also supports DP1.1a 3D in frame sequential format. However, it has a maximum refresh rate of 60fps. Even we overclocked it to 120fps, noticeable jitters are observed. That’s why our current focus is on the HDMI port.
By the way, what limits our possible to HDMI 1.4 is not our graphic card, but the projector, as we currently only have ICMP-X with DisplayPort and HDMI 1.4 (please see p81 Image 8-21 in the manual).
1280x720 60 Hz top-bottom stereo works. But 3D HDMI frame-packing cannot work, and we only have 1280*720 in 3D model.

What’s the full Matlab output of a run of ImagingStereoDemo(2)?
PTB-WARNING: Startup test of beamposition queries for high precision timestamping detected problems on your graphics card + driver combo.

PTB-WARNING: Some of the queries fail even outside the vertical blank interval, so no effective workaround for this driver bug exists.

PTB-WARNING: This renders beamposition queries pretty useless – Disabling high precision timestamping for now.

PTB-WARNING: Please report this message with a description of your graphics card, operating system and video driver to

PTB-WARNING: the Psychtoolbox forum. Maybe the gathered information allows for some work-around in

PTB-WARNING: future PTB releases to get high precision timestamping back on your setup.

PTB-INFO: This is Psychtoolbox-3 for Microsoft Windows, under Matlab 64-Bit (Version 3.0.19 - Build date: Feb 20 2023).

PTB-INFO: OS support status: Windows 10 (Version 10.0) supported and tested to some limited degree.

PTB-INFO: Type ‘PsychtoolboxVersion’ for more detailed version information.

PTB-INFO: Most parts of the Psychtoolbox distribution are licensed to you under terms of the MIT License, with

PTB-INFO: some restrictions. See file ‘License.txt’ in the Psychtoolbox root folder for the exact licensing conditions.

PTB-INFO: For information about paid support, support memberships and other commercial services, please type

PTB-INFO: ‘PsychPaidSupportAndServices’.

PTB-INFO: The detected endline of the vertical blank interval is equal or lower than the startline. This indicates

PTB-INFO: that i couldn’t detect the duration of the vertical blank interval and won’t be able to correct timestamps

PTB-INFO: for it. This will introduce a very small and constant offset (typically << 1 msec). Read ‘help BeampositionQueries’

PTB-INFO: for how to correct this, should you really require that last few microseconds of precision.

PTB-INFO: Btw. this can also mean that your systems beamposition queries are slightly broken. It may help timing precision to

PTB-INFO: enable the beamposition workaround, as explained in ‘help ConserveVRAMSettings’, section ‘kPsychUseBeampositionQueryWorkaround’.

PTB-INFO: OpenGL-Renderer is Intel :: Intel(R) UHD Graphics 630 :: 4.6.0 - Build 31.0.101.2115

PTB-INFO: VBL startline = 720 , VBL Endline = 720

PTB-INFO: Measured monitor refresh interval from beamposition = 16.666284 ms [60.001379 Hz].

PTB-INFO: Beamposition queries are supported, but disabled. Using basic timestamping as fallback:

PTB-INFO: Timestamps returned by Screen(‘Flip’) will be therefore less robust and accurate.

PTB-INFO: Measured monitor refresh interval from VBLsync = 16.667540 ms [59.996856 Hz]. (50 valid samples taken, stddev=0.110959 ms.)

PTB-INFO: Reported monitor refresh interval from operating system = 16.666667 ms [60.000000 Hz].

PTB-INFO: Small deviations between reported values are normal and no reason to worry.

PTB-INFO: Stereo display via vertical image compression enabled (Top=LeftEye, Bot.=RightEye).

PTB-INFO: ==============================================================================================================================

PTB-INFO: WINDOWS DWM DESKTOP COMPOSITOR IS ACTIVE. On this Windows-10 or later system, Psychtoolbox can no longer reliably detect if

PTB-INFO: this will cause trouble for timing and integrity of visual stimuli or not. You might be just fine, or you could be in trouble.

PTB-INFO: Use external measurement equipment and independent procedures to verify reliability of timing if you care about proper timing.

PTB-INFO: ==============================================================================================================================

PTB-INFO: Psychtoolbox imaging pipeline starting up for window with requested imagingmode 1025 …

PTB-INFO: Will use 8 bits per color component framebuffer for stimulus drawing.

PTB-INFO: Will use 8 bits per color component framebuffer for stimulus post-processing (if any).

N.Dots Mean (s) Max (s) %>20ms %>30ms

1000 0.017 0.231 2 0

Ok, this doesn’t look good.

As far as I understand this, when you selected 1280x720 60 Hz 3D mode, iff your Intel OpenGL graphics driver would support OpenGL quad-buffered 3D, this should have worked with ImagingStereoDemo(1). If PTB doesn’t enable native OpenGL stereo, but falls back to stereomode 11 (Like ImagingStereoDemo(11)) with corresponding messages about using its own “homegrown frame-sequential” implementation, then that means the Intel driver does not support native OpenGL 3D and you are likely out of luck.

Your statement that “PowerDVD” or “Stereoscopic Player” worked, likely means that these video playback applications use Media playback api’s or SDK instead of the 3D OpenGL api that Psychtoolbox or other vision science toolkits use, and those media playback api’s may allow selection of 3D HDMI modes. So the hardware can obviously do it, but the driver software can’t, at least not with your graphics cards under MS-Windows.

What did you mean with “1280x720 60 Hz top-bottom stereo works.”? How does it work with PTB and why is it not suitable for your needs?

What did you mean with “Even we overclocked it to 120fps, noticeable jitters are observed.”? How does it work with PTB and what kind of jitters?

Is there no way in the projectors settings to manually enforce use of a HDMI 3D mode? Ie. the projector would switch to 3D even though the graphics card does not actually signal 3D mode? That would be a way to bypass driver limitations with PTB.

There seems to be no mode in the list that would allow hacking a proper stereo mode.

On Linux, the NVidia proprietary graphics driver Readme (Appendix B. X Config Options) section about Stereo settings ( Option "Stereo" "integer") suggests that both Displayport frame-sequential stereo with in-band signalling (stere setting 14) and HDMI 3D stereo with frame-packing (stereo setting 12) is supported for OpenGL native quad-buffered stereo (PTB stereomode 1, e.g., ImagingStereoDemo(1)) for “NVIDIA RTX/Quadro”:

  • An optimistic interpretation of this is that it could work with your NVidia GeForce RTX 3050.

  • A more realistic interpretation though is that you would need a NVidia RTX professional graphics card. According to this link NVIDIA Quadro Legacy Products NVidia’s marketing i#$#@s renamed/rebranded NVidia Quadro pro graphics into NVidia RTX or NVidia RTX Pro graphics, because why not make live miserable for your customers by pointlessly renaming your products for extra confusion? This probably means you need a more expensive NVidia RTX/Quadro pro gpu to make this maybe work on Linux. If you get such a card, it may or may not also work with PTB stereomode 1 on MS-Windows 10, cfe. How to connect a stereo display to the Quadro card HDMI port | NVIDIA for instructions.

On Linux, it seems that the low-level Linux display drivers for Intel do support HDMI 3D frame-packing modes and signalling. But exposing/enabling those 3D modes requires the high-level display server application to opt-in to these formats, and as far as I know, neither the X-Server nor Wayland servers actually do this, so another software limitation. In practice only special fullscreen display video media players like Kodi / xbmc do opt-in to such 3D modes for 3D stereoscopic video playback. In principle this opt-in is hackable to switch it on for the X-Server on Intel graphics, but would probably require me a non-trivial amount of paid work time.

If your ICMP-X would have HDMI 2.0 support, I’d probably suggest using the passive 3D mode for dual HDMI 2.0 input (page 90), as that should work with any graphics card that can output via two HDMI outputs.

I think these are probably the options you have. Apart from trying if there are manual override 3D settings in the projector, or if your NVidia RTX by pure luck works in Linux, all other options are probably choosing how to throw more money at the problem, e.g., with a suitable NVidia pro graphics card, or a ICMP-X with dual HDMI 2.0 inputs and corresponding graphics card, …

I also should mention this recent howto from Reddit:
https://www.reddit.com/r/htpc/comments/115ap94/how_to_get_full_hd_3d_frame_packing_from_a_pc_or/

It details ways to manually hack 3D frame packing mode by creating a suitable custom video mode, but you do need a way to manually switch your projector into 3D input mode for such a custom video mode to work, as the normal HDMI 3D signalling would still be missing. Section 7 of that document also claims no support for HDMI 3D anymore with recent NVidia drivers for Windows, but how much that translates to NVidia’s pro gpu’s compared to consumer models under Windows is anyone’s guess.

The HDMI 3D situation is quite a mess, as it appears that Intel does not seem to support HDMI 3D for OpenGL graphics applications, and NVidia seems to have actively removed support from their drivers, at least for consumer gpu’s, at least on Windows. And information on how AMD handles this is kind of absent.

-mario

[Paid support time wayyyy exceeded - paid support license fully used up]

Hi Mario,
Thanks for your all suggestions. We will try NVidia plus Linux and the other solutions first to see if we need more paid support. For your questions:
“1280x720 60 Hz top-bottom stereo works.” means that the screen is split into top and bottom parts, but not in a framepacking way.
we have overclocked the display to 120fps, and we coded our stimuli in a frame-squential way using PTB. The code works fine. However, gray background appears slightly blinking, and letters exhibit obvious vertical jitter.
We can manually set the projector to HDMI 2D or 3D, then it automatically detects the signal for further 2D setting and 3D setting, as for example, in 3D it supports both frame-packing and top-bottom formats. However, even we always set it as 3D model, it acts like 2D and cannot recognize the 3D signal we send from PTB: either show both left and right eye images at the same time (no 3D effect), or turn black screen.

Ok, that output from ImagingStereoDemo(2) is in a format for HDMI 3D top-bottom (aka “over-under”) stereo. But with your statements about manual projector 3D settings below, this means the projector is not actually recognizing and displaying it in 3D, it just shows a 2D picture with left eye in the top half and right eye in the bottom half. Iow. it does not actually work with your projector, right?

How did you do that?
So you ran ImagingStereoDemo(11) for using PTB’s own home-grown frame-sequential stereo mode? Or did you use ImagingStereoDemo(1) to request OpenGL native quad-buffered stereo and it actually worked on one of your graphics cards and used native stereo? What graphics card and video outputs/inputs did you use?

How did you manage to overclock it?

Looking at the manual, your projector supports frame-sequential stereo via Displayport, but needs Displayport in-band stereo signalling? You’d only get that via ImagingStereoDemo(1) and a graphics driver and card that supports OpenGL native stereo and Displayport in-band signalling? I’d only expect your NVidia Quadro card to maybe be able to do that at all, assuming it implements DP in-band stereo?

Or you could use the HDMI input of the projector, set a 120 Hz refresh rate mode and use ImagingStereoDemo(11) for PTB to output a frame-sequential image sequence, but then it wouldn’t send any stereo in-band signals, apart form blue-line sync. So how would the projector know which frame is which? Or that this is a stereo mode at all?

-mario