08-04-2016 02:52 PM
I have a video application running on a Zynq (Zedboard) that captures video from a camera and displays it on a VGA monitor.
The problem: I have an OSD configured for a 1280x1024 background with two AXIS inputs. The inputs are 1280x1024 from a camera and 1280x350 from a bitmap in memory. Each of the inputs work separately, but if I enable both layers at the same time the video output stops. For example, with layer 1 enabled the camera output is displayed. With layer 2 enabled, the static image is displayed. With both layers enabled, there is no video output. With both layers disabled, I get the grey 1280x1024 image, as expected.
There are two VDMAs in the system. The first VDMA has both the write and read channels enabled. It writes the 1280x1024 image from the camera into DDR and reads out the image as AXIS connected to layer 1 of the OSD. The read side is configured in free running slave mode.
The second VDMA reads a fixed 1280x350 image from memory and outputs it to layer 2 of the OSD. This VDMA is configured for read channel only in Master free-running mode.
Both VDMAs are set up for unaligned transfers so I can define the frame buffers programmatically in SDK.
The VDMAs feed into the Layer 1 and Layer 2 inputs of the OSD.
The OSD feeds a video out core in master mode. A timing generator provides VESA timing for the video out core (1280x1024@60fps).
I am using 2016.2 and V6.0 of the OSD core.
I have tried adding a third graphics controller layer to the OSD. The graphics layer works with both of the inputs separately.
Any suggestions would be greatly appreciated.
08-04-2016 03:00 PM
For mixing applications, the On-Screen Display (OSD) has been superseded by the Video Mixer.
You can find an example of the Video Mixer in XAPP1291.
08-04-2016 09:52 PM
Thanks. I will look at the video mixer as well.
Is the OSD still supported and will the OSD work for my application? Based on the available documentation for the OSD, it seems pretty straightforward. We should be able to display the 1280x350 layer on top of the 1280x1024 layer and have the OSD output the blended 1280x1024 image. Why would the core stop working when both layers are enabled?