## PgmImageSink

PgmImageSink — A GStreamer image sink outputing frames to image drawables.

## Synopsis

    #include <pgm/pgm.h>

    enum                PgmImageSinkEventMask;
                        PgmImageSink;
    GstElement *        pgm_image_sink_new                  (const gchar *name);
    PgmError            pgm_image_sink_set_image            (PgmImageSink *sink,
                                                             PgmImage *image);
    PgmError            pgm_image_sink_get_image            (PgmImageSink *sink,
                                                             PgmImage **image);
    PgmError            pgm_image_sink_set_events           (PgmImageSink *sink,
                                                             PgmImageSinkEventMask events);
    PgmError            pgm_image_sink_get_events           (PgmImageSink *sink,
                                                             PgmImageSinkEventMask *events);

## Object Hierarchy

      GObject
       +----GstObject
             +----GstElement
                   +----GstBaseSink
                         +----GstVideoSink
                               +----PgmImageSink

## Properties

      "events"                   PgmImageSinkEventMask  : Read / Write
      "image"                    PgmImage*             : Read / Write

## Description

PgmImageSink is a GStreamer image sink element allowing to build GStreamer pipelines outputing frames directly to PgmImage.

You can explicitly use the `pgm_image_sink_new()` function to instanciate a new sink, but you can alos use the standard GStreamer functions using `gst_element_factory_make()` or `gst_parse_launch()`, the factory name of the sink being "pgmimagesink".

Internally, the sink is simply outputing GStreamer buffers (GstBuffer) to images (PgmImage) using the `pgm_image_set_from_gst_buffer()` function.

Last reviewed on 2008-01-28 (0.3.4)

## Details

### enum PgmImageSinkEventMask

    typedef enum {
        PGM_IMAGE_SINK_MOTION   = (1 << 0),
        PGM_IMAGE_SINK_PRESSED  = (1 << 1),
        PGM_IMAGE_SINK_RELEASED = (1 << 2)
    } PgmImageSinkEventMask;

The event mask flags.

`PGM_IMAGE_SINK_MOTION` | The motion event flag.
`PGM_IMAGE_SINK_PRESSED` | The pressed event flag.
`PGM_IMAGE_SINK_RELEASED` | The released event flag.

### PgmImageSink

    typedef struct _PgmImageSink PgmImageSink;

The opaque PgmImageSink data structure.

### pgm_image_sink_new ()

    GstElement *        pgm_image_sink_new                  (const gchar *name);

Creates a new image sink with the given name.

`name` : | the name of the new image sink.
Returns : | a new PgmImageSink.

### pgm_image_sink_set_image ()

    PgmError            pgm_image_sink_set_image            (PgmImageSink *sink,
                                                             PgmImage *image);

Sets `image` as the PgmImage object which will receive the frames (GstBuffer) outputed by `sink`.

MT Safe.

`sink` : | a PgmImageSink object.
`image` : | the PgmImage object.
Returns : | a PgmError indicating success/failure.

### pgm_image_sink_get_image ()

    PgmError            pgm_image_sink_get_image            (PgmImageSink *sink,
                                                             PgmImage **image);

Retrieves the PgmImage object in `image` which `sink` is using to output its frames (GstBuffer).

MT Safe.

`sink` : | a PgmImageSink object.
`image` : | a pointer to a PgmImage pointer where the image will be stored. Unref after usage.
Returns : | a PgmError indicating success/failure.

### pgm_image_sink_set_events ()

    PgmError            pgm_image_sink_set_events           (PgmImageSink *sink,
                                                             PgmImageSinkEventMask events);

Sets the mouse events interacting with the currently set image that will be sent upstream in the pipeline.

`sink` : | a PgmImageSink object.
`events` : | a PgmImageSinkEventMask.
Returns : | a PgmError indicating success/failure.

### pgm_image_sink_get_events ()

    PgmError            pgm_image_sink_get_events           (PgmImageSink *sink,
                                                             PgmImageSinkEventMask *events);

Retrieves in `events` the mouse events sent upstream in the pipeline.

`sink` : | a PgmImageSink object.
`events` : | a PgmImageSinkEventMask pointer where the event mask will be stored.
Returns : | a PgmError indicating success/failure.

## Property Details

### The `"events"` property

      "events"                   PgmImageSinkEventMask  : Read / Write

A PgmImageSinkEventMask specifying what input events should be sent upstream in the pipeline.

### The `"image"` property

      "image"                    PgmImage*             : Read / Write

A PgmImage on which the sink output video frames.

## See Also

#PgmImage