Directshow filter

how can i implement direct show filter in vvvv ? do i simply need to copy ax files to the bin folder?

basically i’m trying to find out why another software plays specific mpegs smoothly but vvvv doesn’t. i guess it has something to do with the mpeg decoder. when looking at the files in graphedit two filter show up. i found them and copied them into the bin folder but they don’t appear within vvvv.

i don’t really have a clue about direct show architecture so i’m happy about any information.

this problem is part of our dome project. last week i got videos running smoothly using avi’s and indeo codec but today the video was completely jerky. same patch, same video. the damn dated pc’s are part of the problem…everything is running right on the edge so every performance hint would help.

this video bollox is starting to drive me insane…realtime stuff works but 60 percent of the show is video…and time is running out

dshow_filta.jpg (19.9 kB)

hi angel.

what you tried to do is not possible. you don’t need to copy .ax files (directshow filters) to the \bin folder. directshow filters are typically registered with the registry and every directshow application thus can use all available filters.

the view .ax files that are in the \bin folder are only there because we wrote them and ship them in this folder. on vvvv startup they are being registered (installed) and in theory any other application could use them.

when playing back a file via filestream directshow creates the graph of filters automatically using available filters.

so.

if i get you right you want to make sure vvvv uses the LIGOS filters (seen in your screenshot). you can see the directshowgraph used by vvvv by enabling “expose graph to rot” in filestream (->inspektor) and then use graphedit to view that exposed graph (file>connect to remote graph).

if vvvv creates a different graph than your videoplayer software (which are you using?) that is strange. but pls check that before i start to fantasize…

and give us some more info on the setup:

  • what framerate are you running at?
  • what framerate do the videos have?

remember that you won’t get reliable smooth videoplayback unless the videos fps is a multiple of vvvv fps is a multiple of the monitors/beamers fps.

alright, you probably know, all work i’m doing is attached to an already existing dome projection application. the hardware and the mpeg’s are part of this system. the pc’s are dual AMD 2600+ machines with ati x800 graphicscards.

the resolution of the mpeg’s is 1280x1024 using 30 fps. the other software plays them instantly and smooth using the mentioned graph. vvvv seems to use a different one (see image) for no reason.

what i tried so far:

  • wait for frame ( values bigger than 1 made the playback even worse)
  • mainloop set to 30 fps (no change or worse playback)
  • using smaller resolution and different codec seemed to be the best way right now, the downside is the decrease in quality which is hard to explain to ppl who know the quality of the other software

something else…if windows media player is capable of playing the movies smoothly, is there a way to play the video externally…with commandline execution and some sort of overlay mode. although i don’t know of overlay doesn’t interupt die ex9 renderer.

dshow_filta2.jpg (25.9 kB)

Have you tried Nvidia’s hardware acelleration? Or does the ATi do that as well?
If not wmv is accellerated on ati, if you dont need random playback that would be an option too?

hardware accelleration is activated…already checked.

the jerky behaviour is strange as well…it’s not just jumping but speeding up and slowing down. on my own pc’s, everything is fine although they use a different graph as well but have a 3.4 Ghz single cpu…which seems more suitable.

unfortunately i’m forced by contract to use these weird AMD thingi :/

ps: if any of u is using skype, add ‘chris_engler’

vvvv seems to use a different one (see image) for no reason.

the reason might come from the different renderers used. directshow offers different renderer-filters for different usages. vvvv always only uses the vmr9-renderer (for some reason) while in your first screenshot a traditional videorenderer is used.

different renderers may cause the graph to insert different filters for playback. now there is one thing you can do: every directshow filter has an associated “merit” which denotes its chance to be used during automatic graph creation. you could set the merit of unwanted filters to “block” and pray that vvvv uses different filters.

the only way i know of changing merits of filters is via mediaplayer classic. there you choose: view>option>filters>overrides and add the filters you don’t like (i would start with the cyberlink…dings) and select the radiobutton “block”. now close mediaplayer, restart vvvv and see what filters are used.

something else…if windows media player is capable of playing the
movies smoothly, is there a way to play the video externally…with
commandline execution and some sort of overlay mode. although i
don’t know of overlay doesn’t interupt die ex9 renderer.
o ou…sounds like you are really desperate already. i don’t think this is a good idea though.

waitforframe = 1 should be your choice. but beware this will only do if the rest of the patches (without video playing) have > 30fps. if that is not the case you’ll not have a chance.

blocking didn’t help…but deleting :)
but now vvvv builds a graph using just another filter, just not the right one. gonna have a look at directshow filter management software.

" waitforframe = 1 should be your choice. but beware this will only do if the rest of the patches (without video playing) have > 30fps. if that is not the case you’ll not have a chance"

yeah, i realised that and therefore patches will be loaded during performance via createnode to save cpu power. just a few nodes already cause jerky video. so only the video nodes are active during video playback.

i’m really looking forward to do this dome stuff with decent hardware again :/

found the reason why video(avi, indeo) was jerky yesterday and before it was smooth. it has to do with the ‘boygrouped docked renderer bug’. vvvv wasn’t selected on the clients and therefore not the primary thread. i come to this conclusion as the mouse arrow was visible on top of the ex9 output.

i will go back to version 9.10, which only shows boygrouped renderer in fullscreen…which is quite a handy bug !

…so forget about this mpeg, ligos, direct show graph nonsense

just sitting in the dome after playing a 7 min video sequence without jitters…all 6 machines are in sync. although the machines aren’t synced in any way…they just receive one play command via OSC.

so i’m very happy !

downside …nothing else should be loaded to apply 100% performance to the video playback. reactive scenes will be loaded with ‘createnode’. it would be really awesome to be able to disable nodes completely (spreadcount isn’t the solution)…which refers to another recent post.

anyway, keep up the good work mesos…i’m spreading the word of vvvv world domination ;)

just as a note for completeness of pert of the above thread:
RadLight filter manager is a nice little tool for setting the merit of codecs and for getting the big picture of what’s installe on your system. It helped me to regain power over my explorer’s thumbnail view- after installing the k-lite codec pack the ffwdshow codec took over all MP1, MP2 and MP4 files and would not show me any thumbnails in explorer any more. Unregistering ffwdshow did the trick immediately. So would (I presume) setting the merit to DO_NOT_USE.