FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
6343 Discussions

Video IP, Frame Buffer, Triple Buffering, Frame Dropping

Altera_Forum
Honored Contributor II
976 Views

Hi. 

 

I'm reading about Frame Buffer component in the triple buffering mode with frame dropping. In the Video IP manual[1], in the Triple Buffering section is written the following: 

 

 

--- Quote Start ---  

 

 

  • If the spare buffer is already clean when the writer completes writing the current input frame: 

  • If dropping frames is allowed—the writer drops the newly received frame and overwrites its buffer with the next incoming frame. 

 

 

--- Quote End ---  

 

 

Why doesn't the component make the newly received frame clean and start writing into previously clean buffer? (Actually now when I'm writing this post I'm no longer sure why did I want it like that but it's what I would expect.) Is there any video processing or performance reason? 

 

There seems to be no option to enable triple buffering in both Frame Buffer components (the basic one and the one supporting 4k) in Quartus Prime 15.1. There's only "Frame dropping" option which increases required memory by rougly one third so I assume this is the option that turns it on. Am I correct? The documentation is silent about this. 

 

Thank you. 

 

[1] UG-VIPSUITE, 2015.11.02
0 Kudos
1 Reply
Altera_Forum
Honored Contributor II
265 Views

>Why doesn't the component make the newly received frame clean and start writing into previously clean buffer? (Actually now when I'm writing this post I'm no longer sure why did I want it like that but it's what I would expect.) 

This is what I would have expected as well but either way is fine and I don't think it would have any impact on video quality. A triple buffer is typically designed with two independent modules doing the writing and the reading. If the writer module was swapping the clean buffer each time, it would probably make the mechanism to pass tokens between the two modules a bit trickier to design because the reader and the writer could both try to claim the same clean buffer. Altera's implementation seems to avoid this issue. Just my guess. 

 

 

Triple buffering is achieved by turning on both frame dropping and frame repeating. If your input/output frame rates are known, you could probably save a bit of logic space by disabling either frame dropping or frame repeating and still have a functional triple buffer but I wouldn't recommend it while building up a system. Also, turning on the option to drop invalid frames should make things easier while debugging.
0 Kudos
Reply