### Function

# Aravis StreamCallback

#### Declaration

    void
    (* ArvStreamCallback) (
      void* user_data,
      ArvStreamCallbackType type,
      ArvBuffer* buffer
    )

#### Description [src]

This is the signature of the callback passed on an `ArvStream` instantiation, which will be called on the stream receiving thread initialization and finalization, and on every received buffer, once when the buffer is pulled from the buffer queue, and one more when the buffer is done (successfully or not).

`buffer` is assured to be a valid `ArvBuffer` object only when type is `ARV_STREAM_CALLBACK_TYPE_START_BUFFER` or `ARV_STREAM_CALLBACK_TYPE_BUFFER_DONE`.

The callback is awaken from the stream receiving thread, which means it is forbidden to access to the camera instance, except if you take care to protect the instance access from concurrent access. It also means all the time spent in the callback is less time available for the incoming data handling. CPU intensive image processing should happen elsewhere.

#### Parameters

`user_data`

  Type: `void*`

  A pointer to user data associated to this callback.

  The argument can be `NULL`.
  The data is owned by the caller of the function.

`type`

  Type: `ArvStreamCallbackType`

  Reason of the callback call.

`buffer`

  Type: `ArvBuffer`

  A `ArvBuffer` object.

  The data is owned by the caller of the function.