Forum

Increasing delay

Hi there!
I’m doing a video installation with real time projection.
My doubt is: I want that in the beginning the image recorded by camera is syncronized with the projected image. As time goes by, I’d like to add a delay that will progressvily increase resulting that the image projected is not the same as the captured one.
I’d like also that after a while, this stop and begin again from the start (something like a loop).

thank you all for help
heraldo

Use Queue (EX9.Texture) and increase the Frame Count, reset it to 1 to start again.

Thank you for your help
I did the patch as you suggested, but then I realised that this looks like a slow motion which is not quite what i want.
I was thinking more like desynchronization in time, something like a lag. The captured image will be projected for exemple 5 seconds later…

Yes, so pretend your video is 30 fps, so you need to queue 150 frames, and than get slice the last frame.

But ehh… here ya go.

DelayWithQueue.v4p (15.3 kB)

thank you Westbam, but I still get slow motion and not delayed time…I think I m doing something wrong…so, I attached the patch to illustrate better my question
should I still use Queue (EX9.Texture)or just Delay (Animation)?
thanks

increased delayed time.v4p (41.5 kB)

well here is a webcam version of what West was doing. and a version where the delay increase.

-sunep

VideoDelay.v4p (8.0 kB)
VideoDelayIncrease.v4p (11.0 kB)

oh, a little note on the increasing delay, it WILL eventually crash/stop working when the queue gets larger than the amount of ram in your GPU.

In my world slow motion is something going with different speed, the patch I posted is really just delaying the renderer, so I think we have a little definition issue going on here ;).

The Delay (Animation) is only doing this: get an input value, store it for X seconds, and than release it. You don’t want to delay a value, you want to delay video frames.

The only way to do that is put them in a video buffer. The Queue (EX9.texture) can be that buffer. The Queue will remember all the frames it receives, and when it reaches the amount off frames as set in the frame count pin, it drops old frames and make room for new frames. That is what you see in the helpfile for Queue (EX9.texture).

Now, with Getslice (Node) you can select what frame of the video buffer you want to show. And since the buffer is changing constantly, selecting one slice will actually output an animation, and selecting any other slice than slice 0 will delay the video.

The trouble we are going to get is this: you think in time, vvvv thinks in frames/sec. 2 Seconds for you could be 120 vvvv frames, or 8 vvvv frames, and this depends on your patch and computer combination.

So, if you want to delay something for 2 seconds, you need to know the vvvv framerate, but a webcam doesn’t go faster than 30fps any way I think. You can use Mainloop (vvvv) for that.

So if I set vvvv to run with 30 frames per second, and I buffer 5 seconds, but I get slice number 60 (2 times 30) than I have delayed my renderer exactly 2 seconds.

Hope you understand this.

If you delay video, all the previous frames are stored in the video card memory (I think), so once your video card runs out off memory, the buffer is full and it will not work any more. So test what YOUR maximum delay is with your video resolution.

Was typing some explanation, and this story came up, hope it is not too much. ;)

DelayWithQueue.v4p (26.0 kB)

Thank you both for your help!
Sorry for my misunderstanding but I realised that the computer I used was slow (probably low RAM) so I had a slow motion effect when I ran your patches. Now on a better one I can see the effect clearly and is really what I wanted.
I will create a loop at some point so the increasing of delay will not be endless :)
Actually the program is great and I’m still figuring it out, so again thank you very much.
Just one more thing: how to expand the IOBox named “time when delays starts” with additional lines. I searched in helpfile and it is written Alt+r but it’s not working…

Ahh… didn’t realize 150 frames queue was that heavy.

Do you know about Herr Inspector? CTRL+i.

video tutorials#tutorial 10 iobox columns rows and slicecount

Things are bit different now, but the idea with columns and rows is is still the same.

Hi
How to patch that from Queue stored frames running in reverse (inserting in descending order)?

This is an interesting question, Dimix…I am sorry if flagging Westbam´s answer as solution, I closed access to your question. hope not

@heraldo:Nevermind
question 2: is it possible to run Queue at different speed than 1?