Adición de funciones de devolución de llamada a una aplicación

Una aplicación puede registrar funciones de devolución de llamada con la ventana de captura para que notifique a la aplicación en las siguientes circunstancias:

  • El estado cambia.
  • Se producen errores
  • Los búferes de audio y fotogramas de vídeo están disponibles
  • La aplicación debe producir durante la captura de streaming

En el ejemplo siguiente se crea una ventana de captura y se registra el estado, el error, la secuencia de vídeo y las funciones de devolución de llamada de fotogramas en el bucle de procesamiento de mensajes de una aplicación. También incluye una instrucción de ejemplo para deshabilitar una función de devolución de llamada. En los ejemplos posteriores se muestran funciones de devolución de llamada de fotogramas, errores y estado simples.

case WM_CREATE: 
{ 
    char    achDeviceName[80] ; 
    char    achDeviceVersion[100] ; 
    char    achBuffer[100] ; 
    WORD    wDriverCount = 0 ; 
    WORD    wIndex ; 
    WORD    wError ; 
    HMENU   hMenu ; 
 
    // Create a capture window using the capCreateCaptureWindow macro.
    ghWndCap = capCreateCaptureWindow((LPSTR)"Capture Window", 
        WS_CHILD | WS_VISIBLE, 0, 0, 160, 120, (HWND) hWnd, (int) 0); 
 
    // Register the error callback function using the 
    // capSetCallbackOnError macro. 
    capSetCallbackOnError(ghWndCap, fpErrorCallback); 
 
    // Register the status callback function using the 
    // capSetCallbackOnStatus macro. 
    capSetCallbackOnStatus(ghWndCap, fpStatusCallback); 
 
    // Register the video-stream callback function using the
    // capSetCallbackOnVideoStream macro. 
    capSetCallbackOnVideoStream(ghWndCap, fpVideoCallback); 
 
    // Register the frame callback function using the
    // capSetCallbackOnFrame macro. 
    capSetCallbackOnFrame(ghWndCap, fpFrameCallback); 
 
    // Connect to a capture driver 

    break; 
} 
case WM_CLOSE: 
{ 
// Use the capSetCallbackOnFrame macro to 
// disable the frame callback. Similar calls exist for the other 
// callback functions.

    capSetCallbackOnFrame(ghWndCap, NULL); 

    break; 
} 
 

Uso de captura de vídeo