## gstcolorbalance gstcolorbalance — Interface for adjusting color balance settings |

## Synopsis

    #include <gst/interfaces/color.h>

                        GstColorBalance;
    struct              GstColorBalanceClass;
    enum                GstColorBalanceType;
    const GList *       gst_color_balance_list_channels     (GstColorBalance *balance);
    gint                gst_color_balance_get_value         (GstColorBalance *balance,
                                                             GstColorBalanceChannel *channel);
    void                gst_color_balance_set_value         (GstColorBalance *balance,
                                                             GstColorBalanceChannel *channel,
                                                             gint value);
    void                gst_color_balance_value_changed     (GstColorBalance *balance,
                                                             GstColorBalanceChannel *channel,
                                                             gint value);
    GstColorBalanceType  gst_color_balance_get_balance_type (GstColorBalance *balance);

## Object Hierarchy

      GInterface
       +----GstColorBalance

## Prerequisites

GstColorBalance requires GstImplementsInterface and GstElement.

## Signals

      "value-changed"                                  : Run Last

## Description

This interface is implemented by elements which can perform some color balance operation on video frames they process. For example, modifying the brightness, contrast, hue or saturation.

Example elements are 'xvimagesink' and 'colorbalance'

## Details

### GstColorBalance

    typedef struct _GstColorBalance GstColorBalance;

### struct GstColorBalanceClass

    struct GstColorBalanceClass {
      GTypeInterface klass;

      GstColorBalanceType balance_type;

      /* virtual functions */
      const GList * (* list_channels) (GstColorBalance        *balance);

      void          (* set_value)     (GstColorBalance        *balance,
                                       GstColorBalanceChannel *channel,
                                       gint                    value);
      gint          (* get_value)     (GstColorBalance        *balance,
                                       GstColorBalanceChannel *channel);

      /* signals */
      void (* value_changed) (GstColorBalance        *balance,
                              GstColorBalanceChannel *channel,
                              gint                    value);

      gpointer _gst_reserved[GST_PADDING];
    };

### enum GstColorBalanceType

    typedef enum
    {
      GST_COLOR_BALANCE_HARDWARE,
      GST_COLOR_BALANCE_SOFTWARE
    } GstColorBalanceType;

An enumeration indicating whether an element implements color balancing operations in software or in dedicated hardware. In general, dedicated hardware implementations (such as those provided by xvimagesink) are preferred.

`GST_COLOR_BALANCE_HARDWARE` | Color balance is implemented with dedicated hardware.
`GST_COLOR_BALANCE_SOFTWARE` | Color balance is implemented via software processing.

### gst_color_balance_list_channels ()

    const GList *       gst_color_balance_list_channels     (GstColorBalance *balance);

Retrieve a list of the available channels.

`balance` : | A GstColorBalance instance
Returns : | A GList containing pointers to GstColorBalanceChannel objects. The list is owned by the GstColorBalance instance and must not be freed.

### gst_color_balance_get_value ()

    gint                gst_color_balance_get_value         (GstColorBalance *balance,
                                                             GstColorBalanceChannel *channel);

Retrieve the current value of the indicated channel, between min_value and max_value.

See Also: The "min_value" and "max_value" members of the GstColorBalanceChannel object.

`balance` : | A GstColorBalance instance
`channel` : | A GstColorBalanceChannel instance
Returns : | The current value of the channel.

### gst_color_balance_set_value ()

    void                gst_color_balance_set_value         (GstColorBalance *balance,
                                                             GstColorBalanceChannel *channel,
                                                             gint value);

Sets the current value of the channel to the passed value, which must be between min_value and max_value.

See Also: The "min_value" and "max_value" members of the GstColorBalanceChannel object.

`balance` : | A GstColorBalance instance
`channel` : | A GstColorBalanceChannel instance
`value` : | The new value for the channel.

### gst_color_balance_value_changed ()

    void                gst_color_balance_value_changed     (GstColorBalance *balance,
                                                             GstColorBalanceChannel *channel,
                                                             gint value);

A helper function called by implementations of the GstColorBalance interface. It fires the "value-changed" signal on the instance, and the "value-changed" signal on the channel object.

`balance` : | A GstColorBalance instance
`channel` : | A GstColorBalanceChannel whose value has changed
`value` : | The new value of the channel

### gst_color_balance_get_balance_type ()

    GstColorBalanceType  gst_color_balance_get_balance_type (GstColorBalance *balance);

Get the GstColorBalanceType of this implementation.

`balance` : | The GstColorBalance implementation
Returns : | A the GstColorBalanceType.

Since 0.10.24

## Signal Details

### The `"value-changed"` signal

    void                user_function                      (GstColorBalance        *colorbalance,
                                                            GstColorBalanceChannel *channel,
                                                            gint                    value,
                                                            gpointer                user_data)         : Run Last

Fired when the value of the indicated channel has changed.

`colorbalance` : | The GstColorBalance instance
`channel` : | The GstColorBalanceChannel
`value` : | The new value
`user_data` : | user data set when the signal handler was connected.