ArvStream

ArvStream — Abstract base class for video stream reception

Synopsis

enum                ArvStreamCallbackType;
void                (*ArvStreamCallback)                (void *user_data,
                                                         ArvStreamCallbackType type,
                                                         ArvBuffer *buffer);
                    ArvStream;
void                arv_stream_push_buffer              (ArvStream *stream,
                                                         ArvBuffer *buffer);
ArvBuffer *         arv_stream_pop_buffer               (ArvStream *stream);
ArvBuffer *         arv_stream_timed_pop_buffer         (ArvStream *stream,
                                                         guint64 timeout);
void                arv_stream_get_n_buffers            (ArvStream *stream,
                                                         gint *n_input_buffers,
                                                         gint *n_output_buffers);
void                arv_stream_get_statistics           (ArvStream *stream,
                                                         guint64 *n_completed_buffers,
                                                         guint64 *n_failures,
                                                         guint64 *n_underruns);
gboolean            arv_stream_get_emit_signals         (ArvStream *stream);
void                arv_stream_set_emit_signals         (ArvStream *stream,
                                                         gboolean emit_signals);

Object Hierarchy

  GObject
   +----ArvStream
         +----ArvFakeStream
         +----ArvGvStream

Properties

  "emit-signals"             gboolean              : Read / Write

Signals

  "new-buffer"                                     : Run Last

Description

ArvStream provides an abstract base class for the implementation of video stream reception threads. The interface between the reception thread and the main thread is done using asynchronous queues, containing ArvBuffer objects.

Details

enum ArvStreamCallbackType

typedef enum {
	ARV_STREAM_CALLBACK_TYPE_INIT,
	ARV_STREAM_CALLBACK_TYPE_EXIT,
	ARV_STREAM_CALLBACK_TYPE_START_BUFFER,
	ARV_STREAM_CALLBACK_TYPE_BUFFER_DONE
} ArvStreamCallbackType;

Describes when the stream callback is called.

ARV_STREAM_CALLBACK_TYPE_INIT

thread initialization, happens once

ARV_STREAM_CALLBACK_TYPE_EXIT

thread end, happens once

ARV_STREAM_CALLBACK_TYPE_START_BUFFER

buffer filling start, happens at each frame

ARV_STREAM_CALLBACK_TYPE_BUFFER_DONE

buffer filled, happens at each frame

ArvStreamCallback ()

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

ArvStream

typedef struct _ArvStream ArvStream;

arv_stream_push_buffer ()

void                arv_stream_push_buffer              (ArvStream *stream,
                                                         ArvBuffer *buffer);

Pushes a ArvBuffer to the stream thread. The stream takes ownership of buffer, and will free all the buffers still in its queues when destroyed.

stream :

a ArvStream

buffer :

buffer to push. [transfer full]

arv_stream_pop_buffer ()

ArvBuffer *         arv_stream_pop_buffer               (ArvStream *stream);

Pops a buffer from the output queue of stream. The retrieved buffer may contain an invalid image. Caller should check the buffer status before using it.

stream :

a ArvStream Returns: a ArvBuffer

arv_stream_timed_pop_buffer ()

ArvBuffer *         arv_stream_timed_pop_buffer         (ArvStream *stream,
                                                         guint64 timeout);

arv_stream_get_n_buffers ()

void                arv_stream_get_n_buffers            (ArvStream *stream,
                                                         gint *n_input_buffers,
                                                         gint *n_output_buffers);

An accessor to the stream buffer queue lengths.

stream :

a ArvStream

n_input_buffers :

input queue length. [out][allow-none]

n_output_buffers :

output queue length. [out][allow-none]

arv_stream_get_statistics ()

void                arv_stream_get_statistics           (ArvStream *stream,
                                                         guint64 *n_completed_buffers,
                                                         guint64 *n_failures,
                                                         guint64 *n_underruns);

An accessor to the stream statistics.

stream :

a ArvStream

n_completed_buffers :

number of complete received buffers. [out][allow-none]

n_failures :

number of reception failures. [out][allow-none]

n_underruns :

number of input buffer underruns. [out][allow-none]

arv_stream_get_emit_signals ()

gboolean            arv_stream_get_emit_signals         (ArvStream *stream);

Check if stream will emit its signals.

stream :

a ArvStream

Returns :

TRUE if appsink is emiting its signals.

Since 0.1.3


arv_stream_set_emit_signals ()

void                arv_stream_set_emit_signals         (ArvStream *stream,
                                                         gboolean emit_signals);

Make stream emit signals. This option is by default disabled because signal emission is expensive and unneeded when the application prefers to operate in pull mode.

stream :

a ArvStream

emit_signals :

the new state

Since 0.1.3

Property Details

The "emit-signals" property

  "emit-signals"             gboolean              : Read / Write

Emit signals.

Default value: FALSE

Signal Details

The "new-buffer" signal

void                user_function                      (ArvStream *stream,
                                                        gpointer   user_data)      : Run Last

Signal that a new buffer is available.

This signal is emited from the stream receive thread and only when the "emit-signals" property is TRUE.

The new buffer can be retrieved with arv_stream_pop_buffer().

Note that this signal is only emited when the "emit-signals" property is set to TRUE, which it is not by default for performance reasons.

stream :

the stream that emited the signal

user_data :

user data set when the signal handler was connected.