This is a user-space application that drives the HDMI Peripheral for the Zynq
7000 defined by hdmi-cmd-gen and hdmi-cmd-enc. Taking a video file as
input, this program decodes the video using libav
, then plays the decoded
stream using the device.
Video files must be 640x480, they must have pixels encoded as
AV_PIX_FMT_YUV420P
, and they can only have one stream. I didn't implement any
logic to handle the other cases.
This program expects positional command-line arguments for:
- the video file to play
[VIDEO]
, and - the frame rate divider
[FDIV]
, which has60Hz / [FDIV] = Frame Rate
and which must be an integer.
Additionally, this application uses the HDMI Peripheral. It expects to be
running on a Zynq 7000 platform, and it needs to be able to program the PL via
the sysfs
interface mentioned on Confluence. It also needs to be able to
access device memory via /dev/mem
, and it has to be able use the ZOCL
interface on the platform-axi:zyxclmm_drm-render
DRI device.
Finally, the .bit
file for the HDMI Peripheral needs to be converted to a
.bin
file, and the result needs to be placed at /lib/firmware/hdmi_dev.bin
.
The scripts/bit2bin.py
script can be used to perform the conversion. This
program expects to find the AXI4-Lite interface to the device at 0x4000_0000
.