I am getting an error –9405, couldntGetRequiredComponent
, with
SGNewChannel(m_Grabber, VideoMediaType, &m_Channel)
on Mac system 10.9.1. This code works on older systems. Is anyone else having this issue?
Edit - Initialization code:
// standard SG initialization
err = OpenADefaultComponent(SeqGrabComponentType, 0, &m_Grabber);
err = SGInitialize(m_Grabber);
err = SGSetDataRef(m_Grabber, 0, 0, seqGrabDontMakeMovie);
After spending some time reverse engineering what
SGNewChannel
does on both OS X 10.8 and 10.9 I have found what might be the cause of the new behavior on 10.9.The
SGNewChannel
function tries to open a video digitizer component with some code roughly equivalent to this (minus the logs):If you run this on 10.9, you will get this result:
The three calls to
OpenAComponent
fail (once with error -9408 and twice with error 704).If you run this on 10.8, you will get this result:
Notice that the last calls succeeds!
The Apple USB Video Class Video Digitizer component is located at
/System/Library/QuickTime/QuickTimeUSBVDCDigitizer.component
. So I looked at what’s different on 10.8 and 10.9 in this component by setting a symbolic breakpoint in lldb onAPWVDOUSBVDCDigitizerEntry
which is the entry point of this component.It turns out it may be a sandbox related issue. On 10.9, there is a call to
sandbox_check
fordevice-camera
that doesn’t exist on 10.8. So I suggest that you try to add an entitlement to access the camera and see if that solves the problem.