ofQTKitGrabber / QuickTime devices missing - AVFoundation change?


#1

Hi, just hoping to bring up an issue with capture devices in ofQTKitGrabber on macOS Sierra.

I’m using a lot of CVBS video capture devices - generally these things are branded Elgato or Video FX, and need a proprietary driver like VideoGlide … or some in the past would work with macam. The last I see these things mentioned in the forums though is ~8 years ago!

My understanding is that they are loaded as QuickTime components, but Apple have recently cracked down on this with AVFoundation - is this the reason that the devices are not recognised in ofQTKitGrabber?

In Cycling '74 Max 6 the jit.qt.grab element is still working with these other devices, so would trying to use ofQuickTimeGrabber in macOS solve the problem?


#2

Hi,

You would need to use ofQuickTimeGrabber as those drivers work via QuickTime and not QTKit or AVFoundation.

If you install and build against earlier OS X SDKs it should be possible.
( see: MacOS 10.12 Sierra/XCode 8 - Quicktime deprecation workaround )

All the best,
Theo


#3

Hi, bumping this up again to find a solution…

Trying to compile 0.9.8 with SDK 10.6 because of this line in ofConstants.h

		//on 10.6 and below we can use the old grabber
		#ifndef MAC_OS_X_VERSION_10_7
			#define OF_VIDEO_CAPTURE_QUICKTIME
		#else
			#define OF_VIDEO_CAPTURE_QTKIT
        #endif

I’m getting “no member named llrint, llrintf etc” in cmath though. Is this something to do with C++11?


#4

Successfully compiling OF 0.8.4 with SDK 10.6 now, but I get a linker _BeginUpdate error when declaring a ofVideoGrabber type… is this just a limitation of using Sierra?


#5

In addition to using @theo’s workaround, you will need to compile your program as a 32 bit app. You are correct in saying that those older devices are loaded as QuickTime components, and this is the issue. Since QTKit is essentially a wrapper for QuickTime, and QuickTime never went 64 bit, then QuickTime components are only visible to 32 bit applications. If you want a 64 bit app to capture video from these devices you would need a 64-bit driver for AVFoundation, and unfortunately those do not exist, nor are they in the works by the VideoGlide people.

I’ve toyed for a couple of years with the idea of building some kind of 32-bit helper process that makes older capture devices visible to 64-bit apps via IPC or something like that, but it seems like Apple will be removing the ability of running 32-bit apps sooner rather than later, so I’m not sure it is worth the effort.

c.