## gstpropertyprobe gstpropertyprobe — Interface for probing possible property values |

## Synopsis

    #include <gst/interfaces/propertyprobe.h>

                        GstPropertyProbe;
                        GstPropertyProbeInterface;
    const GList*        gst_property_probe_get_properties   (GstPropertyProbe *probe);
    const GParamSpec*   gst_property_probe_get_property     (GstPropertyProbe *probe,
                                                             const gchar *name);
    GValueArray*        gst_property_probe_get_values       (GstPropertyProbe *probe,
                                                             const GParamSpec *pspec);
    GValueArray*        gst_property_probe_get_values_name  (GstPropertyProbe *probe,
                                                             const gchar *name);
    gboolean            gst_property_probe_needs_probe      (GstPropertyProbe *probe,
                                                             const GParamSpec *pspec);
    gboolean            gst_property_probe_needs_probe_name (GstPropertyProbe *probe,
                                                             const gchar *name);
    GValueArray*        gst_property_probe_probe_and_get_values
                                                            (GstPropertyProbe *probe,
                                                             const GParamSpec *pspec);
    GValueArray*        gst_property_probe_probe_and_get_values_name
                                                            (GstPropertyProbe *probe,
                                                             const gchar *name);
    void                gst_property_probe_probe_property   (GstPropertyProbe *probe,
                                                             const GParamSpec *pspec);
    void                gst_property_probe_probe_property_name
                                                            (GstPropertyProbe *probe,
                                                             const gchar *name);

## Object Hierarchy

      GInterface
       +----GstPropertyProbe

## Signals

      "probe-needed"                                   : Run Last

## Description

The property probe is a way to autodetect allowed values for a GObject property. It's primary use is to autodetect device-names in several elements.

The interface is implemented by many hardware sources and sinks.

## Details

### GstPropertyProbe

    typedef struct _GstPropertyProbe GstPropertyProbe;

Opaque GstPropertyProbe data structure.

### GstPropertyProbeInterface

    typedef struct {
      GTypeInterface klass;

      /* signals */
      void          (*probe_needed)   (GstPropertyProbe *probe,
                                       const GParamSpec *pspec);

      /* virtual functions */
      const GList * (*get_properties) (GstPropertyProbe *probe);
      gboolean      (*needs_probe)    (GstPropertyProbe *probe,
                                       guint             prop_id,
                                       const GParamSpec *pspec);
      void          (*probe_property) (GstPropertyProbe *probe,
                                       guint             prop_id,
                                       const GParamSpec *pspec);
      GValueArray * (*get_values)     (GstPropertyProbe *probe,
                                       guint             prop_id,
                                       const GParamSpec *pspec);
    } GstPropertyProbeInterface;

GstPropertyProbe interface.

GTypeInterface `klass`; | parent interface type.
`probe_needed` () | default signal handler
`get_properties` () | virtual method to get list of pobable properties
`needs_probe` () | virtual method to tell if probe need update
`probe_property` () | virtual method to probe a property
`get_values` () | virtual method to get probe results for a property

### gst_property_probe_get_properties ()

    const GList*        gst_property_probe_get_properties   (GstPropertyProbe *probe);

Get a list of properties for which probing is supported.

`probe` : | the GstPropertyProbe to get the properties for.
Returns : | the list of properties for which probing is supported by this element.

### gst_property_probe_get_property ()

    const GParamSpec*   gst_property_probe_get_property     (GstPropertyProbe *probe,
                                                             const gchar *name);

Get GParamSpec for a property for which probing is supported.

`probe` : | the GstPropertyProbe to get the properties for.
`name` : | name of the property.
Returns : | the GParamSpec of `NULL`.

### gst_property_probe_get_values ()

    GValueArray*        gst_property_probe_get_values       (GstPropertyProbe *probe,
                                                             const GParamSpec *pspec);

Gets the possible (probed) values for the given property, requires the property to have been probed before.

`probe` : | the GstPropertyProbe object.
`pspec` : | the GParamSpec property identifier.
Returns : | A list of valid values for the given property.

### gst_property_probe_get_values_name ()

    GValueArray*        gst_property_probe_get_values_name  (GstPropertyProbe *probe,
                                                             const gchar *name);

Same as `gst_property_probe_get_values()`.

`probe` : | the GstPropertyProbe object.
`name` : | the name of the property to get values for.
Returns : | A list of valid values for the given property.

### gst_property_probe_needs_probe ()

    gboolean            gst_property_probe_needs_probe      (GstPropertyProbe *probe,
                                                             const GParamSpec *pspec);

Checks whether a property needs a probe. This might be because the property wasn't initialized before, or because host setup changed. This might be, for example, because a new device was added, and thus device probing needs to be refreshed to display the new device.

`probe` : | the GstPropertyProbe object to which the given property belongs.
`pspec` : | a GParamSpec that identifies the property to check.
Returns : | TRUE if the property needs a new probe, FALSE if not.

### gst_property_probe_needs_probe_name ()

    gboolean            gst_property_probe_needs_probe_name (GstPropertyProbe *probe,
                                                             const gchar *name);

Same as `gst_property_probe_needs_probe()`.

`probe` : | the GstPropertyProbe object to which the given property belongs.
`name` : | the name of the property to check.
Returns : | TRUE if the property needs a new probe, FALSE if not.

### gst_property_probe_probe_and_get_values ()

    GValueArray*        gst_property_probe_probe_and_get_values
                                                            (GstPropertyProbe *probe,
                                                             const GParamSpec *pspec);

Check whether the given property requires a new probe. If so, fo the probe. After that, retrieve a value list. Meant as a utility function that wraps the above functions.

`probe` : | the GstPropertyProbe object.
`pspec` : | The GParamSpec property identifier.
Returns : | the list of valid values for this property.

### gst_property_probe_probe_and_get_values_name ()

    GValueArray*        gst_property_probe_probe_and_get_values_name
                                                            (GstPropertyProbe *probe,
                                                             const gchar *name);

Same as `gst_property_probe_probe_and_get_values()`.

`probe` : | the GstPropertyProbe object.
`name` : | the name of the property to get values for.
Returns : | the list of valid values for this property.

### gst_property_probe_probe_property ()

    void                gst_property_probe_probe_property   (GstPropertyProbe *probe,
                                                             const GParamSpec *pspec);

Runs a probe on the property specified by `pspec`

`probe` : | the GstPropertyProbe to check.
`pspec` : | GParamSpec of the property.

### gst_property_probe_probe_property_name ()

    void                gst_property_probe_probe_property_name
                                                            (GstPropertyProbe *probe,
                                                             const gchar *name);

Runs a probe on the property specified by `name`.

`probe` : | the GstPropertyProbe to check.
`name` : | name of the property.

## Signal Details

### The `"probe-needed"` signal

    void                user_function                      (GstPropertyProbe *pspec,
                                                            gpointer          arg1,
                                                            gpointer          user_data)      : Run Last

`pspec` : | GParamSpec that needs a probe
`user_data` : | user data set when the signal handler was connected.