Exemple #1
0
 /// <summary>
 /// Throws a semi-descriptive exception if the input is anything besides Success
 /// </summary>
 public static void Check(this QCamM_Err err)
 {
     if (err != QCamM_Err.qerrSuccess)
     {
         throw new Exception("Qimaging camera error: " + err.ToString());
     }
 }
Exemple #2
0
        void queueFrameCallbackMethod(IntPtr userPtr, uint userData, QCamM_Err errcode, uint flags)
        {
            int state = Interlocked.CompareExchange(ref queueFrameReentranceState,
                                                    QFRS_IN_CALLBACK, QFRS_NONE);

            if (state != QFRS_NONE)
            {
                string msg = callback_thread_msg + CheckCurrentThread() + " @start";
                if (CrashIfCallbackReEntranceDetected)
                {
                    throw new Exception(msg);
                }
                else
                {
                    Trace.TraceError(msg);
                }
            }
            else
            {
                CheckCurrentThread();
            }

            if (disposeSignal.Wait(0))
            {
                return;
            }

            queueFrameCallbackErr = unchecked ((int)errcode);
            int         bufferIdx = checked ((int)userData);
            QCamM_Frame qCamFrame = qCamFrameBuffers[bufferIdx];


            bool ok = RingBufferForOutput.TryCopyIn <QCamM_Frame, VideoFrame>(copierDelegate, qCamFrame);

            if (!ok)
            {
                Trace.Write("!");
            }

            // re-insert buffer into the driver's queue
            QueueFrame(bufferIdx, qCamFrame.bufferSize);

            state = Interlocked.CompareExchange(ref queueFrameReentranceState,
                                                QFRS_NONE, QFRS_IN_CALLBACK);

            if (state != QFRS_IN_CALLBACK)
            {
                string msg = callback_thread_msg + CheckCurrentThread() + " @end";
                if (CrashIfCallbackReEntranceDetected)
                {
                    throw new Exception("QCam callback is re-entrant (end");
                }
                else
                {
                    Trace.TraceError(msg);
                }
            }
        }
Exemple #3
0
 void queueSettingsCallbackMethod(IntPtr userPtr, uint userData, QCamM_Err errcode, uint flags)
 {
     queueSettingsCallbackErr = errcode;
     queueSettingsCallbackSync.Set();
 }