PYNQ: PYTHON PRODUCTIVITY

Video Library Maximum Frame Rate

When using the pynq video library together with pynq base overlay on ZCU104, I observed that the maximum frame rate for the HDMI input and output seems to be 60Hz @1920x1080. Is this the maximum frame rate? Can it be improved since I like to run it at about 100Hz?

What error message are you getting and are you seeing issues on the TX or RX side? The hardware should be capable of pushing out that number of pixels and there are video timings in the software up to 120 fps so I’m hoping it’s possible to get it to work.

Peter

I do not run into any error. What I did simply timing the readframe() and writeframe() of vdma and find out the frame rate from the execution time. What I found is that the readframe() is a lot faster than the writeframe(). When using the readframe() using tpg as source input, the frame rate is 144Hz. However adding in writeframe() reduce this down to 60Hz. When using HDMI as input source, both readframe() and writeframe() cap out at 60Hz. This could be due to the fact that my HDMI source only produce image at 60Hz. Either way, both experiment give me doubt that the writeframe() tap out at 60Hz.

So I set the fps for hdmi output to 100Hz as well as the vdma. However, when calling writeframe(), nothing is displayed in the HDMI output. Any idea?

I don’t have a monitor capable of 120 FPS to hand but I tested the board just using a cable in loopback and it appears to be working. I’ve put the notebook here so you can give it go.

One potential issue you might be running into if you’re connecting a laptop or similar into the HDMI input is that the default EDID data is based on a 4k monitor that didn’t support higher framerates so whatever you’re connecting might not know it can send 120 fps. There are hdmi_out.frontend.read_edid() and hdmi_in.frontend.write_edid() functions you can use to copy the EDID from the monitor to the HDMI input so that everything the monitor you are using supports can be passed through to the video source.

Peter

Do you know a way to read in video in python at a high frame rate( > 60 fps) for 1920x1080 grey scale video? I am using opencv2 as preliminary experiment and I am getting around 16fps.

Do you know what is the maximum fps that the hdmi driver can handle with 8-bit 1920x1080 image? I am getting around 120Hz.

The full list of video timings supported by the HDMI driver is here. It looks like 120 Hz is the maximum the driver supports at 1080p out of the box.

Peter