cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Adventurer
Adventurer
628 Views
Registered: ‎11-26-2018

Fps problem using multiple vdma with live stream

Jump to solution

Hi,

I have a 4K 60fps live source (for the moment is the tpg) and I have to write the frames into the ddr of the ps and then create a h265 video (using the vcu). I started using one vdma and the tpg setted in rgb mode; on the the ps side I've created a v4l2 driver for gstreamer, with this configuration I reached 60fps at 4096x2160. The next step is the use of the vcu, but it need a semi-planar frame, so I've to convert from YUYV of the tpg (4:2:2) to NV16 (4:2:2). For this convertion I've realized an HLS module that from one input stream it creates two streams, one for the Y and one for the C (CbCr). The Y stream goes into the first vdma, the C stream goes to the second vdma and they are connected to two different Hp ports. With these configurations I can reach only 20fps 4096x2160.

Some tests I've made:
- Increased the clock of the two vdma, (up to 250MHz)
- Use of two HP port, one for each vdma
- Use of one HP port, I've used the smartconnect to connect the two vdmas to the same Hp
- Change some settings of the vdmas
- Use of continuous addresses for the y vdma, and for the C vdma

The results are always the same 20fps at 4096x2160.

If I only use the Y stream, without connecting the CbCr I can reach 60fps (4K), when I put the second stream, the fps drop to 20.

I can't figure out where is the problem.

20fps 4096x216020fps 4096x2160

 

Tags (3)
0 Kudos
1 Solution

Accepted Solutions
Highlighted
Moderator
Moderator
621 Views
Registered: ‎11-09-2015

Hi andrea@ross ,

You might want yo have a look to the VCU TRD (link). It is using the video frame buffer instead of the VDMA. One reason for that is that it will take care of converting YUYV to NV12 or NV16 (sorry you had to make an IP for this).

Then you might want to look at the QoS setting in the section Preparing PetaLinux to Run VCU Applications from PG252 page 119.

Doing both should help.


Florent
Product Application Engineer - Xilinx Technical Support EMEA
**~ Don't forget to reply, give kudos, and accept as solution.~**

View solution in original post

0 Kudos
2 Replies
Highlighted
Moderator
Moderator
622 Views
Registered: ‎11-09-2015

Hi andrea@ross ,

You might want yo have a look to the VCU TRD (link). It is using the video frame buffer instead of the VDMA. One reason for that is that it will take care of converting YUYV to NV12 or NV16 (sorry you had to make an IP for this).

Then you might want to look at the QoS setting in the section Preparing PetaLinux to Run VCU Applications from PG252 page 119.

Doing both should help.


Florent
Product Application Engineer - Xilinx Technical Support EMEA
**~ Don't forget to reply, give kudos, and accept as solution.~**

View solution in original post

0 Kudos
Highlighted
Adventurer
Adventurer
564 Views
Registered: ‎11-26-2018

Thank you for the reply. I'm trying to make working the video frame buffer write, the only problem I have is the interrupt. I setted the bit 0 of the "Global Interrupt Enable" register to 1 and "IP Interrupt Enable" to ap_done, but the output of the interrupt port is still always high.

0 Kudos