## GstPreset

GstPreset — helper interface for element presets

## Synopsis

    #include <gst/gst.h>

                        GstPreset;
                        GstPresetInterface;
    gchar**             gst_preset_get_preset_names         (GstPreset *preset);
    gchar**             gst_preset_get_property_names       (GstPreset *preset);
    gboolean            gst_preset_load_preset              (GstPreset *preset,
                                                             const gchar *name);
    gboolean            gst_preset_save_preset              (GstPreset *preset,
                                                             const gchar *name);
    gboolean            gst_preset_rename_preset            (GstPreset *preset,
                                                             const gchar *old_name,
                                                             const gchar *new_name);
    gboolean            gst_preset_delete_preset            (GstPreset *preset,
                                                             const gchar *name);
    gboolean            gst_preset_set_meta                 (GstPreset *preset,
                                                             const gchar *name,
                                                             const gchar *tag,
                                                             const gchar *value);
    gboolean            gst_preset_get_meta                 (GstPreset *preset,
                                                             const gchar *name,
                                                             const gchar *tag,
                                                             gchar **value);

## Object Hierarchy

      GInterface
       +----GstPreset

## Description

This interface offers methods to query and manipulate parameter preset sets. A preset is a bunch of property settings, together with meta data and a name. The name of a preset serves as key for subsequent method calls to manipulate single presets. All instances of one type will share the list of presets. The list is created on demand, if presets are not used, the list is not created.

The interface comes with a default implementation that serves most plugins. Wrapper plugins will override most methods to implement support for the native preset format of those wrapped plugins. One method that is useful to be overridden is `gst_preset_get_property_names()`. With that one can control which properties are saved and in which order.

## Details

### GstPreset

    typedef struct _GstPreset GstPreset;

Opaque GstPreset data structure.

### GstPresetInterface

    typedef struct {
      GTypeInterface parent;

      /* methods */
      gchar**      (*get_preset_names)    (GstPreset *preset);

      gchar**      (*get_property_names)  (GstPreset *preset);

      gboolean     (*load_preset)         (GstPreset *preset, const gchar *name);
      gboolean     (*save_preset)         (GstPreset *preset, const gchar *name);
      gboolean     (*rename_preset)       (GstPreset *preset, const gchar *old_name,
                                           const gchar *new_name);
      gboolean     (*delete_preset)       (GstPreset *preset, const gchar *name);

      gboolean     (*set_meta)            (GstPreset *preset, const gchar *name,
                                           const gchar *tag, const gchar *value);
      gboolean     (*get_meta)            (GstPreset *preset, const gchar *name,
                                           const gchar *tag, gchar **value);
    } GstPresetInterface;

GstPreset interface.

GTypeInterface `parent`; | parent interface type.
`get_preset_names` () | virtual method to get list of presets
`get_property_names` () | virtual methods to get properties that are persistent
`load_preset` () | virtual methods to load a preset into properties
`save_preset` () | virtual methods to save properties into a preset
`rename_preset` () | virtual methods to rename a preset
`delete_preset` () | virtual methods to remove a preset
`set_meta` () | virtual methods to set textual meta data to a preset
`get_meta` () | virtual methods to get textual meta data from a preset

### gst_preset_get_preset_names ()

    gchar**             gst_preset_get_preset_names         (GstPreset *preset);

Get a copy of preset names as a NULL terminated string array.

`preset` : | a GObject that implements GstPreset
Returns : | list with names, ue `g_strfreev()` after usage.

Since 0.10.20

### gst_preset_get_property_names ()

    gchar**             gst_preset_get_property_names       (GstPreset *preset);

Get a the names of the GObject properties that can be used for presets.

`preset` : | a GObject that implements GstPreset
Returns : | an array of property names which should be freed with `g_strfreev()` after use.

Since 0.10.20

### gst_preset_load_preset ()

    gboolean            gst_preset_load_preset              (GstPreset *preset,
                                                             const gchar *name);

Load the given preset.

`preset` : | a GObject that implements GstPreset
`name` : | preset name to load
Returns : | `TRUE` for success, `FALSE` if e.g. there is no preset with that `name`

Since 0.10.20

### gst_preset_save_preset ()

    gboolean            gst_preset_save_preset              (GstPreset *preset,
                                                             const gchar *name);

Save the current object settings as a preset under the given name. If there is already a preset by this `name` it will be overwritten.

`preset` : | a GObject that implements GstPreset
`name` : | preset name to save
Returns : | `TRUE` for success, `FALSE`

Since 0.10.20

### gst_preset_rename_preset ()

    gboolean            gst_preset_rename_preset            (GstPreset *preset,
                                                             const gchar *old_name,
                                                             const gchar *new_name);

Renames a preset. If there is already a preset by the `new_name` it will be overwritten.

`preset` : | a GObject that implements GstPreset
`old_name` : | current preset name
`new_name` : | new preset name
Returns : | `TRUE` for success, `FALSE` if e.g. there is no preset with `old_name`

Since 0.10.20

### gst_preset_delete_preset ()

    gboolean            gst_preset_delete_preset            (GstPreset *preset,
                                                             const gchar *name);

Delete the given preset.

`preset` : | a GObject that implements GstPreset
`name` : | preset name to remove
Returns : | `TRUE` for success, `FALSE` if e.g. there is no preset with that `name`

Since 0.10.20

### gst_preset_set_meta ()

    gboolean            gst_preset_set_meta                 (GstPreset *preset,
                                                             const gchar *name,
                                                             const gchar *tag,
                                                             const gchar *value);

Sets a new `value` for an existing meta data item or adds a new item. Meta data `tag` names can be something like e.g. "comment". Supplying `NULL` for the `value` will unset an existing value.

`preset` : | a GObject that implements GstPreset
`name` : | preset name
`tag` : | meta data item name
`value` : | new value
Returns : | `TRUE` for success, `FALSE` if e.g. there is no preset with that `name`

Since 0.10.20

### gst_preset_get_meta ()

    gboolean            gst_preset_get_meta                 (GstPreset *preset,
                                                             const gchar *name,
                                                             const gchar *tag,
                                                             gchar **value);

Gets the `value` for an existing meta data `tag`. Meta data `tag` names can be something like e.g. "comment". Returned values need to be released when done.

`preset` : | a GObject that implements GstPreset
`name` : | preset name
`tag` : | meta data item name
`value` : | value
Returns : | `TRUE` for success, `FALSE` if e.g. there is no preset with that `name` or no value for the given `tag`

Since 0.10.20