Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

Multiple Media Stream Rendering Performance

sdhays
Beginner
309 Views
I'm developing an application which displays multiple decoded video streams simultaneously on Windows XP. I'm using IPP 5.1 with the IPP media samples. I'm wanting to play as many streams as possible in real-time at 29.97 fps. Each stream's dimensions are 720x480. My development system has a Celeron 1.8 GHz and an NVidia GeForce2 MX/MX 400 PCI graphics card.



Playing one stream has great performance using the BLT (DirectX) renderer - CPU usage doesn't go above 5% and usually hovers around 2-3%. Two streams spend a lot of time around 20%, but CPU usage can get up to 37%. Three streams fluctuate between 49% and 97%, usually in the 50's, but at times spending several seconds at 97%! Four streams use between 87% and 99% of the CPU, and the rendering rate slows down.



Using the Null renderer on 4 streams, CPU usage fluctuates between 20% and 98%, remaining at the high end for several seconds! It spends a lot of time above 50%.



However, using the FW renderer on 4 streams, CPU usage doesn't go above 22%.



Each stream is basically played by an AVSync object, just like in simple_player. These results seem to suggest a problem in BaseVideoRender which is eating up CPU cycles.



Has anyone else tried anything like this? Any ideas what could be causing this?



Scott
0 Kudos
3 Replies
Vladimir_Dudnik
Employee
309 Views

Hi Scott,

actually we've tried four different decoders simultaneously and did not see such problems. I can guess that amount of video memory on your graphics card can affect performance.

And you do not see high proceesor load with using file render because the most time takes file writting operations.

Regards,
Vladimir

0 Kudos
sdhays
Beginner
309 Views
Thanks for looking into this, Vladimir. I've now verified that this issue has nothing to do with my graphics card; disabling calls to DirectX doesn't change anything.

I'm surprised that you're not seeing the same thing I am. What were the specs on the system you tried 4 decoders on? I'll try my program on another computer and see what I get.

Thanks,
Scott
0 Kudos
sdhays
Beginner
309 Views
As it turns out, I was running into two problems. One is related to an issue between my MPEG4 video bitstream and the IPP player and is a problem that Premier support has acknowledged and is investigating. This was why NullRender was also having problems. The second problem is related to latency when locking/unlocking/rendering with the DirectDraw renderer. Locking/unlocking just can't seem to keep up when rendering multiple streams with DirectDraw. Using a different MPEG4 bitstream plays fine with NullRender, "rendering" 29.97 fps; calling DXRender's Lock/Unlock methods ends up taking more time than the duration of the frame. I haven't figured out how to improve this yet. If anyone has any suggestions, I'd appreciate it.

Thanks,
Scott
0 Kudos
Reply