Blackmagic Intensity Vs Matrox MX02 capture card latencies

jrs's picture

Hi All,

Does anyone have any experience using both the Blackmagic Intensity card and the MAtrox MX02? I'm interested in the latencies for both, namely if the matrox is better than the intensity. For us the intensity seems to have a decent latency under OSX and Linux but not Windows - I'm guessing this is a driver issue but I'd love any other suggestion for things we can look at to improve this.

I've also read on the forums here (I can't find the exact post) that people found the matrox a little flakey - is that still the case or have the improved things?

Cheers James

vade's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

So, regarding flakeyness.

The original MXO2 and friends used the Express Card slot. Those were flakey only because the cardslot could be easily unplugged, and the drivers did not like that too much.

Now, with thunderbolt, the entire line of devices from all manufacturers can be unplugged at random since the Thunderbolt port is made to do so. As far as I can tell, most drivers are pretty good about this, but most host applications die a horrible death if you unplug a device while capturing.

I'd say over all, Black Magic is a touch better here.

Now : Latency.

This is a tricky subject due to a nuance of factors.

Pretty much all capture devices can be accessed using Apples Quicktime capture components. Most applications that do not offer native device support use this. The way Quicktime handles capturing has a bit more overhead (it does additional CPU side memory buffering as far as I can surmise), which adds some delay, and CPU overhead, which for both devices can be slow.

Now, Black Magic (and I am unsure about Matrox), also allow devices to be captures using CoreMediaIO/AVFOundation, the 'new' path. I have yet to test, and I am unsure what software actively uses these new drivers and paths, but I would not be surprised if latency differs for the same hardware on the CMIO path.

Now, if you ingest a format that requires some conversion (say, an RGB stream but are requesting YUV buffers), something, somewhere, has to do a format conversion. Most of the time conversion happens on the device, hardware accelerated. Typically its fast, but there are times when that can cause ~ a frame of delay.

Now, finally, Both Matrox and Black Magic offer SDKs. The Black Magic SDK is publicly available and Matrox, I think, only if you ask, and they agree to give it to you. But the point is, these SDKs allows direct memory access off of the capture board, offering much lower CPU and memory usage. I mean, a ton. Like from 150% cpu down to 20% (in my experience using 1080 / 2K capture), and reduced memory overhead of a few hundred megs.

So you have a bunch of scenarios you have to account for.

Do you control the software stack? If so, your best bet is probably Black Magic, using Native SDK, but will most likely require you doing work to write capture solution or to find a plugin that works for your environment (say QC or OpenFrameworks, and hope its well written).

If you dont, and are using off the shell software that uses Quicktime Capture, honestly, its going to be about the same.

All in all, I prefer AJA and Black Magic to Matrox, but at the end of the day, all work reasonably well, and all have their own series of gotchas.

gtoledo3's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

Email kineme and see if they're going to release the Blackmagic plugin they made for Control Freak Systems (I think they asked recently).

It's fast, and notwithstanding some bugs in the initial builds, I think it should work really well. I've seen it working next to an mbox media server ( a really pricey custom deal built into a tower, and that's only rented ), and my eye could barely detect a difference.

smokris's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

Yep. A couple years ago Stuart White of Control Freak Systems commissioned us to develop a patch which uses the Blackmagic API to directly retrieve images from a DeckLink, with a focus on minimizing latency. Stuart has agreed to let us distribute this patch now. We're preparing it for release.

(However, this patch was designed for the DeckLink; it will probably need some changes to work with the Intensity, but we don't have an Intensity to test with.)

gtoledo3's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

Oh, that's right, it's a decklink. Apologies for the misinformation.

vade's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

If the plugin is well built ( ;) ) it should work across the board with the Intensity line, Decklink line, Ultrastudio line and Mini Recorder, as the driver model is the same. I know because I've tested SDK code on all of those devices.

edit:

Actually, I have all 3 of those devices, so I can test it pretty easily if you mind sending it along, or releasing it, or whatever.

stuart's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

So far it has worked with Blackmagic capture devices I have.

My favorite device these days is the UltraStudio 3D which gives me the same performance as a PCI card, but with only a Thunderbolt connection. It allows low latency HDSDI and HDMI (dvi-lite) into laptops which was a huge thing for me.

I bought two of the UltraStudio 3D's when they first came out, but at the time they hadn't released many of the cheaper or USB 3.0 versions. I suspect those will all work just the same.

jrs's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

I don't suppose anyone who has used the plugin would care to comment on its latency please? (and also if it allows for dynamic specification of the capture res/frame rate etc)

As a basis here are some tests someone in our office performed, the attached images show

A Macbook Pro with an Intensity Extreme capturing a mirrored display via

  • The black magic software - 3 frame latency

  • A simple QC composition with the video input patch - 6 frame latency

A Mac Pro with an Intensity Pro capturing a mirrored display via

  • A simple QC composition with the video input patch - 5 frame

He tried a few different resolutions and frame rates and it didn't seem to affect the latency

cwilms's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

I'd love to test out the Latency on my MXO2 mini but I can't get any of the drivers to even show an image under OSX 10.8.2 in QC in 64-bit mode (I can get an older driver to work in 32-bit mode) but for my own purposes that won't suffice. Anyone have any insight as to how to get the MXO2 working in QC under Mountain Lion?

smokris's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

VideoTools 2.3 is out, which includes the Blackmagic Capture support. It's only been tested on the Blackmagic Decklink (since we don't have access to any other hardware).

jrs's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

Can someone confirm if this works for them please (preferably with an intensity) or if its something to do with my setup/machine?

I've tried with an intensity pro and the plugin doesn't capture under 10.8 with the following appearing in the console

20/02/13 9:51:39.268 PM Quartz Composer[574]: E_ACCESSDENIED
20/02/13 9:51:39.269 PM Quartz Composer[574]: could not enable Decklink video input

Under 10.7 it crashes with the following

Process:         Quartz Composer [295]
Path:            /Developer/Applications/Quartz Composer 32bit.app/Contents/MacOS/Quartz Composer
Identifier:      com.apple.QuartzComposer.editor
Version:         4.6 (147)
Build Info:      QuartzComposerEditor-147000000000000~10
Code Type:       X86 (Native)
Parent Process:  launchd [159]
 
PlugIn Path:       /Library/Application Support/Blackmagic Design/*/DeckLinkAPI.bundle/Contents/MacOS/DeckLinkAPI
PlugIn Identifier: com.blackmagic-design.desktopvideo.api
PlugIn Version:    9.7 (9.7)
 
Date/Time:       2013-02-20 15:14:15.227 +1100
OS Version:      Mac OS X 10.7.5 (11G56)
Report Version:  9
 
Crashed Thread:  11
 
Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000
 
Application Specific Information:
Uncaught exception "NSInvalidArgumentException": -[QCOpenGLContext virtualScreen]: unrecognized selector sent to instance 0x2c7780
objc[295]: garbage collection is OFF
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[QCOpenGLContext virtualScreen]: unrecognized selector sent to instance 0x2c7780'
*** Call stack at first throw:
(
   0   CoreFoundation                      0x96ef7a67 __raiseError + 231
   1   libobjc.A.dylib                     0x95604149 objc_exception_throw + 155
   2   CoreFoundation                      0x96efb070 -[NSObject doesNotRecognizeSelector:] + 256
   3   CoreFoundation                      0x96e49cd9 ___forwarding___ + 457
   4   CoreFoundation                      0x96e49aa2 _CF_forwarding_prep_0 + 50
   5   QuartzComposer                      0x99afede9 -[QCImageTextureBuffer initWithTextureName:releaseCallback:releaseInfo:context:format:target:width:height:mipmapLevels:flipped:colorSpace:options:] + 544
   6   QuartzComposer                      0x99aff193 -[QCImageTextureBuffer initWithTextureName:releaseCallback:releaseInfo:context:format:target:flipped:colorSpace:options:] + 791
   7   VideoTools                          0x07933975 VideoTools + 133493
   8   DeckLinkAPI                         0x09ddd729 _ZN14CDeckLinkInput24inputFrameArrivalCallackEv + 1553
   9   DeckLinkAPI                         0x09dd6d16 _ZN9CDeckLink28DeckLinkNotificationCallbackEP12__CFMachPortPvlS2_ + 92
   10  CoreFoundation                      0x96db4d0a __CFMachPortPerform + 346
   11  CoreFoundation                      0x96db4b91 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 49
   12  CoreFoundation                      0x96db47bb __CFRunLoopDoSource1 + 155
   13  CoreFoundation                      0x96dede01 __CFRunLoopRun + 2193
   14  CoreFoundation                      0x96ded1dc CFRunLoopRunSpecific + 332
   15  CoreFoundation                      0x96dfdf01 CFRunLoopRun + 129
   16  DeckLinkAPI                         0x09dd6c89 _ZN9CDeckLink32DriverNotificationThreadFunctionEPv + 111
   17  libsystem_c.dylib                   0x9439eed9 _pthread_start + 335
   18  libsystem_c.dylib                   0x943a26de thread_start + 34
)
 
 
Thread 0:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib           0x91b58c22 mach_msg_trap + 10
1   libsystem_kernel.dylib           0x91b581f6 mach_msg + 70
2   com.apple.CoreFoundation         0x96de49da __CFRunLoopServiceMachPort + 170
3   com.apple.CoreFoundation         0x96dedb04 __CFRunLoopRun + 1428
4   com.apple.CoreFoundation         0x96ded1dc CFRunLoopRunSpecific + 332
5   com.apple.CoreFoundation         0x96ded088 CFRunLoopRunInMode + 120
6   com.apple.HIToolbox              0x9951a543 RunCurrentEventLoopInMode + 318
7   com.apple.HIToolbox              0x995218ab ReceiveNextEventCommon + 381
8   com.apple.HIToolbox              0x9952171a BlockUntilNextEventMatchingListInMode + 88
9   com.apple.AppKit                 0x9b680ee8 _DPSNextEvent + 678
10  com.apple.AppKit                 0x9b680752 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 113
11  com.apple.AppKit                 0x9b67cac1 -[NSApplication run] + 911
12  com.apple.QuartzComposer.editor   0x0008f02f 0x8c000 + 12335
13  com.apple.AppKit                 0x9b90dac5 NSApplicationMain + 1054
14  com.apple.QuartzComposer.editor   0x0008dfd9 0x8c000 + 8153
 

bAjA's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

Intensity pro - 10.8 - and i get this..

PreviewAttachmentSize
Screen Shot 2013-02-20 at 23.32.35.png
Screen Shot 2013-02-20 at 23.32.35.png26.93 KB

jrs's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

Hey baja - could you please start up the console, hit the clear display button up the top left, try again and then copy and paste the error message here

Cheers - James

bAjA's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

Here you go - hope this helps...

21/02/2013 09:21:23.389 Quartz Composer[580]: -[QCOpenGLContext virtualScreen]: unrecognized selector sent to instance 0x7c9eaac0
21/02/2013 09:21:23.391 Quartz Composer[580]: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[QCOpenGLContext virtualScreen]: unrecognized selector sent to instance 0x7c9eaac0'
*** Call stack at first throw:
(
   0   CoreFoundation                      0x90ee512b __raiseError + 219
   1   libobjc.A.dylib                     0x9357e52e objc_exception_throw + 230
   2   CoreFoundation                      0x90ee8d9d -[NSObject(NSObject) doesNotRecognizeSelector:] + 253
   3   CoreFoundation                      0x90e31437 ___forwarding___ + 487
   4   CoreFoundation                      0x90e311e2 _CF_forwarding_prep_0 + 50
   5   QuartzComposer                      0x93fd76dc -[QCImageTextureBuffer initWithTextureName:releaseCallback:releaseInfo:context:format:target:width:height:mipmapLevels:flipped:colorSpace:options:] + 528
   6   QuartzComposer                      0x93fd74c4 -[QCImageTextureBuffer initWithTextureName:releaseCallback:releaseInfo:context:format:target:flipped:colorSpace:options:] + 870
   7   VideoTools                          0x08770975 VideoTools + 133493
   8   DeckLinkAPI                         0x0f4be671 _ZN14CDeckLinkInput24inputFrameArrivalCallackEv + 1553
   9   DeckLinkAPI                         0x0f4b7596 _ZN9CDeckLink28DeckLinkNotificationCallbackEP12__CFMachPortPvlS2_ + 92
   10  CoreFoundation                      0x90daba8f __CFMachPortPerform + 303
   11  CoreFoundation                      0x90dab945 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
   12  CoreFoundation                      0x90dab572 __CFRunLoopDoSource1 + 146
   13  CoreFoundation                      0x90de1296 __CFRunLoopRun + 2038
   14  CoreFoundation                      0x90de063a CFRunLoopRunSpecific + 378
   15  CoreFoundation                      0x90df0061 CFRunLoopRun + 129
   16  DeckLinkAPI                         0x0f4b7509 _ZN9CDeckLink32DriverNotificationThreadFunctionEPv + 111
   17  libsystem_c.dylib                   0x94c0f557 _pthread_start + 344
   18  libsystem_c.dylib                   0x94bf9cee thread_start + 34
)

nevbull's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

Hi - I am having crashing issues with a Decklink Studio 2. Tried 10.6.8 and 10.7.5.

Please see crash report below:

regards

Nev.

27/02/2013 12:38:10.700 Quartz Composer: -[QCOpenGLContext virtualScreen]: unrecognized selector sent to instance 0x6c1b7c30
27/02/2013 12:38:10.701 Quartz Composer: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[QCOpenGLContext virtualScreen]: unrecognized selector sent to instance 0x6c1b7c30'
*** Call stack at first throw:
(
   0   CoreFoundation                      0x9b922a67 __raiseError + 231
   1   libobjc.A.dylib                     0x9b2b6149 objc_exception_throw + 155
   2   CoreFoundation                      0x9b926070 -[NSObject doesNotRecognizeSelector:] + 256
   3   CoreFoundation                      0x9b874cd9 ___forwarding___ + 457
   4   CoreFoundation                      0x9b874aa2 _CF_forwarding_prep_0 + 50
   5   QuartzComposer                      0x9755fde9 -[QCImageTextureBuffer initWithTextureName:releaseCallback:releaseInfo:context:format:target:width:height:mipmapLevels:flipped:colorSpace:options:] + 544
   6   QuartzComposer                      0x97560193 -[QCImageTextureBuffer initWithTextureName:releaseCallback:releaseInfo:context:format:target:flipped:colorSpace:options:] + 791
   7   VideoTools                          0x05a1f975 VideoTools + 133493
   8   DeckLinkAPI                         0x08d42729 _ZN14CDeckLinkInput24inputFrameArrivalCallackEv + 1553
   9   DeckLinkAPI                         0x08d3bd16 _ZN9CDeckLink28DeckLinkNotificationCallbackEP12__CFMachPortPvlS2_ + 92
   10  CoreFoundation                      0x9b7dfd0a __CFMachPortPerform + 346
   11  CoreFoundation                      0x9b7dfb91 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 49
   12  CoreFoundation                      0x9b7df7bb __CFRunLoopDoSource1 + 155
   13  CoreFoundation                      0x9b818e01 __CFRunLoopRun + 2193
   14  CoreFoundation                      0x9b8181dc CFRunLoopRunSpecific + 332
   15  CoreFoundation                      0x9b828f01 CFRunLoopRun + 129
   16  DeckLinkAPI                         0x08d3bc89 _ZN9CDeckLink32DriverNotificationThreadFunctionEPv + 111
   17  libsystem_c.dylib                   0x92223ed9 _pthread_start + 335
   18  libsystem_c.dylib                   0x922276de thread_start + 34
)
27/02/2013 12:38:11.617 com.apple.launchd.peruser.501: ([0x0-0x44044].com.apple.QuartzComposer.editor[936]) Job appears to have crashed: Trace/BPT trap: 5
27/02/2013 12:38:11.717 ReportCrash: Saved crash report for Quartz Composer[936] version 4.6 (148) to /Users/catalyst/Library/Logs/DiagnosticReports/Quartz Composer_2013-02-27-123811_Catalyst.crash

mradcliffe's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

Hi Nev,

If you wrap your crash report in <code> </code> tags, I think it will format a bit nicer.

monobrau's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

Just tested with a Intensity Extreme (thunderbolt) on both SL and ML the blackmagic patch crashed. The same setup worked with the stock video input patch under SL and FV video input patch on ML.

The crash reports are in the txt file. If you need more info or something tested let me know!

PreviewAttachmentSize
crashreports_blackmagic.txt186.14 KB

smokris's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

Thanks for the crash reports, everyone. I think we've got the information we need to do some more investigation; we'll get back to you soon with an update.

xniala's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

Hello, would it be possible to record both audio and video from a camcorder via HDMI and a BlackMagic Ultra Studio Mini Recorder with Videotools ? If not, is there a way in Quartz Composer to combine and sync a video and an audio stream in one file ?

Thanks.

(If you prefer I can start a new thread)

nevbull's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

hi Chaps

Is there any rough ETA when this may be fixed?

Many thanks in advance

Nev.

smokris's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

@xniala: No; by design Quartz Composer can't deal with audio data in any meaningful way — it can trigger freewheel audio samples, and it can analyze incoming audio, but given that graph execution is driven by output video framerate and arbitrary UI events, there's no sensible way to support manipulating audio sample buffers. This is something we're addressing in our design for Vuo.

@nevbull: Sorry, we don't have an ETA yet.

xniala's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

Thank you for the answer. My hope is that Syphon Recorder can record both audio and video sent by the BlackMagic card...

blackburst's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

I'm getting the same thing, I can only hook up the patch to a billboard/sprite if the viewer isn't open, once i open it qc crashes. I've tried all formats and deinterlace options. Although i'm running it in 32-bit mode on 10.8 with a thunderbolt intensity. I'll buy it straight away once it works :)

spendergrass's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

I know that there have been some problems with VideoTools 2.3. I appreciate the work you're doing to try and fix the plugin.

I was thinking the other day that there must be some combination of hardware and software that allows the plugin to function correctly. Perhaps someone who has gotten this plugin to work could list the hardware and software they used to have success. I would greatly appreciate it.

Thank you, Sam

gwjvan's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

jrs wrote:
I don't suppose anyone who has used the plugin would care to comment on its latency please? (and also if it allows for dynamic specification of the capture res/frame rate etc)

As a basis here are some tests someone in our office performed, the attached images show

A Macbook Pro with an Intensity Extreme capturing a mirrored display via

  • The black magic software - 3 frame latency

  • A simple QC composition with the video input patch - 6 frame latency

A Mac Pro with an Intensity Pro capturing a mirrored display via

  • A simple QC composition with the video input patch - 5 frame

He tried a few different resolutions and frame rates and it didn't seem to affect the latency

Hi, when you reference "frame latency", what FPS is the source? 60 FPS?

The images in your post seem to indicate it was capturing at 24 FPS, but the time stamps in the images go above 24 (the source video probably has a higher FPS?).The reason I'm curious is because I am looking into using the Intensity Extreme + Quartz Composer to manipulate video for live musical performances-- Therefore, the latency must be as low as possible. If the source video is 60 FPS, that would put 6 frames of latency around 100 ms. If the source video has a lower FPS, that could make a meaningful difference in latency.

Thanks

smokris's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

The -[QCOpenGLContext virtualScreen] crash is fixed in VideoTools 2.4. Thanks, everyone, for your patience.

jrs's picture
Re: Blackmagic Intensity Vs Matrox MX02 capture card latencies

@gwjvan - Sorry I must have been away when this thread got some love and my method of catching up on emails was to just delete everything mailing list related.

Re - the latency testing I didn't make the test video (or do the tests) but I just looked at the movie and it looks like it was a 28FPS (or 30) movie and its been rendered out at 25fps - the 11th, 17th ans 23rd frame are always missing.

leon's picture
VideoTools 2.4 working on Intensity Shuttle

Just wanted to tell, if somebody looks at this thread: VideoTools Plugin 2.4 is working with Blackmagick Intensity Shuttle with Thunderbolt connection. On a MacBookPro11,4, input Nikon1 V1 directly over HDMI. Well, it was quite a fuss to get it working (days, my camera and thunderbolt were set to 720p60Hz but finally recognized in the patch, and any other software on my mac, was 1080i59.94 or something like that...)