I am using Touchdesigner (2019.16600) with Blackmagic io devices and have few questions.
Is there a way to somehow minimize delay of input video stream? Utilizing Nvidia Direct transport I am seeing delay of approximately 8 frames (when using 50fps). In video normal_state.mov are four Ultrastudio 4K Extreme 3 devices. Bottom one is outputting SDI signal which is sent as input to top 3 devices. Is there anything that could be done in order to lower delay visible on input? In my tests also other Blackmagic io devices performed similarly to these results. Does someone know if other io devices (such as Aja) have smaller delay?
All other attached videos have the same setup, except the fact that I disable and back enable output from top 3 devices in Toughdesigner (by setting active toggle in all three Video Device Out nodes to off and back on). When Touchdesigner starts-up, top 3 devices are in sync. However when I disable and enable their outputs, they randomly get different delay per device (as you can see in random_delay.mov). It is kind of unfortunate in scenarios when outputs must be in sync. Outputs could always be synced by closing Touchdesigner and opening it back up, but it would be great if disabling and enabling output won’t make outputs asynchronous.
Outputs on top 3 devices get flipped halframes randomly. There is a 50% chance to get them right and also to get them wrong. This could be seen on random_flipped_halfframes.mov. This is directly related to SDI input from bottom device, as it is outputting interlaced signal. When Video Device In has deinterlacing enabled and set to Bob (Odd) this never happens (since input is deintarlaced and therefore output is always correct). However I guess it should work stable even when input signal is interlaced right? I guess it is not completely correct to sometimes get clean output and sometimes choppy output (due to flipped halframes). Again this is not an issue due to possibility to deinterlace, it is just something I noticed and thought developers might be interested in taking a look at why it behaves in such way.
I’m working with a setup with 2-4 inputs and 16-22 outputs in a single computer depending on the event configuration. I can only speak for question 1, but there was a HUGE difference in between blackmagic (decklink quad and duo) and AJA (Corvid 88) cards for the inputs. The outputs on the blackmagic aren’t too bad (1-2 frames) but for the inputs my numbers for the blackmagic came close to yours at a whopping 8 frames of input latency. I haven’t done a detailed latency analysis yet, but after installing an AJA card for the inputs I would estimate the input is at 1 frame latency - extremely fast. Also, I’ve had problems with certain very high end projectors (20,000 lumens) not liking native sdi signal from blackmagic outputs, but AJA cards work beautifully. In one case, this seemed like insufficient power for the length of sdi, but in a different scenario, it seemed like something with the signal itself.
In my opinion, there are big enough discrepancies that there should be some serious warnings on the wiki about which brand to buy. I would love to see more detailed data from more real life scenarios though!
Just a note (we updated the docs) that 2019.16600 only supports Blackmagic drivers 10.11.x, so we do not recommend using the latest Blackmagic 11.x drivers yet. We have added support for them in the new experimental builds but that is still in beta state.
For #2, the outputs aren’t in sync, the fact that they come up in sync in some cases is pretty much luck, and they could randomly lose and gain sync over time. You shouldn’t count on the outputs being in sync in this scenario.
For #3, this is why there is manual field control in the Video Device Out TOP, and a field channel in the Info CHOP for the Video Device In TOP. Without manually ensuring the field you are sending out is the same one you are getting in, you’ll get this random flipping of the fields.
I am sorry for late reply, I guess have forgotten to subscribe to my thread and therefore not received notifications
Thank you very much for information jmt4zj. I was not aware there are such a big differences with AJA cards. Very interesting! Please may I ask whether you tried getting input from AJA card and sending it to Blackmagic output? I am just curious whether AJA card is needed for both input and output to have such a low latency, or it could be used just as input device in this case.
In the meantime I have run some more tests with Blackmagic cards and noticed a difference when using progressive output instead of interlaced. When using interlace I was getting 8+ frames delay between input and output, but with progressive this went down to fixed 5 frames delay. I have not tried using progressive input (I tried just progressive output), but I guess that might also lower the delay a bit (since deinterlacing wouldn’t have to be performed and input frame could be used just as is?).
Just a side note - I have tried similar tests also with recent implementation of Blackmagic SDK to Unreal Engine and it behaved the same in terms of latency.
Thanks ben - yes, I noticed it. I have been using 10.11.x drivers for these tests.
Thanks for reply and information malcolm.
For #2 - it is just theoretically possible to keep outputs in sync, or it is not possible by design?
I am not sure about this at the moment of writing, but I will perform the same test (with 3 outputs) also with progressive outputs - just to see if the delay between outputs could be minimized. As described earlier, I have noticed latency went to fixed 5 frames when using progressive output. With interlace it was sometimes 8 frames and sometimes even 12. Originally I thought this fluctuating delay was the reason for broken sync among outputs. Therefore I am now wondering if the same thing would happen with progressive output. It won’t change the fact that I must currently use interlaced output - I am just curious why and how this works.
For #3 - thanks, now I understand why that happens. Nevertheless I am still a bit confused why it works only when deinterlacing is set to Bob (Split)? I have only managed to get it right when using Bob (Split), but not when having Deinterlace set to Even or Odd (both gave me flipped halframes). It is not an issue since it works with Bob (Split), I am just trying to understand it Thanks.
Thank you very much for reply, now I understand. I thought that I was seeing flipped fields when using Even/Odd but I was wrong - I was seeing just one of the them at a time.
In the meantime I have performed number of tests on latency. When I used progressive, there was (in my case) always exactly 5 frames delay between input signal --> output signal. Maybe I was just lucky, but based on the amount of tests it seems unlikely. However when I used interlaced signal, delay fluctuated heavily (with every enable of Video Device In/Out) between 8 and 12 frames. It seems kind of strange that there is such difference between interlaced and progressive signal. For next two days I will be able to test AJA Corvid 88 so I am curious to see how it performs in similar tests.