my configuration : Pentium D 3Ghz, Geforce 7800GTX, Holo3d, EMS PhynxRGB
resolution : 1400x1050 at 50Hz
I want to have 3 quads in movements.
the first is Holo3d capture card (PAL signal) with hardware deinterlacing.
the second is Phynx RGB capture card (XGA signal at 25fps).
the third is a filestream like mpeg2 (at 25fps).
I dont have a stable framerate renderer. I want to have 50fps.
I try all parameters to adjust with mainloop and wait for frame.
if i use only holo3d and Phynx RGB card i have most of the time 50fps and it decrease and increase a few moment (one second).
how can i fix this problem ?
i would set the videotextures connected to the 25fps filestream and the 25fps videoinput to “wait for every 2nd frame” and the videotexture of the holo3d to “wait for every frame” (because it should output 50fps already).
then make sure the renderers “presentation interval” is set to “default” (which is actually “wait for frame”.
mainloop should not be left at its defaults. but set it to “filtered mode” for some weired effects but overal smoother playback.
mm… one other idea:
set the “wait for every nth frame” pin to 999 on all your videotextures. and see what happens. the theory is, that if you’re not cpu or gpu bound (i.e. your patches are not so heavy that either your graphiccard or cpu are overworked) vvvv syncs to the 50hz of the monitor and has some time left for videoprocessing anyway without the videotexture doing the wait on its own…
hope that is understandable. but even more important…does it make any difference?
I have reinstall the lastest nvidia drivers. i have let all default parameters except vertical synchro.
For test i have do a smaller patch (without mainloop node and all textures in nonpow2) of my application.
now sometimes (i must change many times between windowed and fullscreen mode) when preparegraph time is stable and equal or less than 0.02 sec, it is better.
a solution to test ?
What are exactly in my case “preparegraph”, “present” and “resetcache” in Perfmeter node ?
you should leave vertical synchro of the driver to “application controlled” then vvvv will deal with it. if you set presentation interval to “default” or “waitforframe” each frame will wait for the vertical sync.
preparegraph and resetcache are cpu times used by vvvv.
present is gpu time for “presenting” the frame to the frontbuffer.
square textures should in general be faster. but i’d say not always. copying an 800x600 video to a 1024x1024 square texture may be slower then copying to a 800x600 texture…maybe depends on what happens further with the texture…
so yes. square videos maybe better. but that is only valid for filestream then because videoin won’t give you cool square videos unless the driver does a cropping there.
hm…if you say cpu is at 50%…do you have a hyperthreading cpu? if not can you try on a hyperthreaded cpu? could bring some more advantage for your setup.
Playing square videos seems to be faster. ok
Only tried 512x512 vs 720x576.
All your advises change the behaviour of our configuration but not enough.
Our big problem is the impossibility to have a solid 50 fps for the renderer.
however total patchs display ~230 in debug mode. Is it a big value?
however Cpu is never satured
however patchs don’t seems so extreme
I think problem come from that we want to display too much differents sources in the same time in full resolution. Invisibles process for us seems to deal badly in the system…
Did you already done some configuration like this one Joreg?
Should we take a better Grafic card? a better Cpu or go to SCSI hard disk?..
What about Nvidia Quadro and Genlock?
information about genlock:
Through the BNC genlock connector on board the NVIDIA Quadro FX 3000G, the graphics video timing can be synchronized to an external
timing source. In turn, this source provides a periodic signal to the display system to lock the vertical refresh rate.
Typically, a workstation user plugs a “house sync” signal into the graphics
board - usually set at NTSC (U.S.) or PAL (Europe) rates - instructing the
graphics board to trigger various edges of the external sync signal.
vertical frequency 49.999Hz (i can t put 50.000Hz under Powerstrip)
holo3D stable 50fps, no freeze
PhynxRGB stable 50fps
filestream 512x512 mjpeg stable 50fps, no freeze
holo3d + Phynx RGB stable 50fps, no freeze
holo3d + Phynx RGB + mjpeg movie 512x512 no stable 50fps, freeze and strobe
vertical frequency 49.899Hz
holo3D no stable 49-50fps, freeze but no strobe
PhynxRGB no stable 49-50fps
filestream 512x512 no stable 49-50fps, freeze
holo3d + Phynx RGB no stable 49-50fps, freeze and strobe
holo3d + Phynx RGB + filestream 512x512 mjpeg no stable 49-50fps, freeze and strobe
I have tests also this :
change timings memory (more agressive),
overclock(always approx. 50% of total cpu)
burn the cpu (with low priority, no changing),
try with mjpeg (512x512 pixels) or mpeg2 (Elecard or Purevideo) file
it is always the same problem.
all my sources (holo3d, PhynxRGB and filestream) are at 25.00 and 50.00 Hz.
The filestream is strange. I have tried with progressive or interlaced movie. when I do a pause or stop the fps is 33. then after a moment it increases to 50.
I did a player with dds texture but I haven’t good performance in playing. I convert my movie to images with dds with ddsconverter2 software. I choose dxt1c format, build mipmaps, filter to box and add dithering options. Do you think it’s good ?
i have tried to use NvPerfHUD software. i think it’s good for find problems. link
but i have a problem. See the attach file.
sory. i’ve been quite off for a view days. back online now…
concerning your problem with NVPerfHUD: i’ve never tried that software myself…but the error you get suggests using a reference device which you can set via the Device (Auto) node. set devicetype to …_REF
framelock does not work with directx-applications in general as far as i know.
and right for your setup to reallyreally work properly you will need a genlocked graphiccard like the nvidia fx4500 (if i remember correctly).
when playing 50(holo3D) + 50(Phynx) + 50(filestream) = 150/3 =50 fps ok!
so if you play a 50fps filesource you have stable 50fps with your setup as long as the video plays? as soon as you pause it (via the pin) the framerate drops? note: in directshow-terms the video in vvvv is never stopped. only paused!
According to me, we should set “wait for frame” to 2 frames for the filestream with our 25fps videos to have 50fps for the renderer but it doesn’t works like this, so I’ve set the “wait for frame” to 0 (only with capture video actived in the same time) and it work at 50 fps.
we have drops when we seek and go from “stop” to “play”.
renderer fps go down when the filestream is at the end of the video file…
What do we want ? > solid 50fps for the renderer
So, no solution for the moment.
It’s not a problem of performance coming from our configuration I’m sure about that.
We can perform some others tests if you want.
We’ll make a video to show you.