## audiomixmatrix

audiomixmatrix — Transform input/output channels according to a matrix

## Properties

guint64 | channel-mask | Read / Write
guint | in-channels | Read / Write
GstValueArray | matrix | Read / Write
GValueArray * | matrix-value-array | Read / Write
GstAudioMixMatrixModeType | mode | Read / Write
guint | out-channels | Read / Write

## Types and Values

struct | GstAudioMixMatrix

## Object Hierarchy

        GObject
        ╰── GInitiallyUnowned
            ╰── GstObject
                ╰── GstElement
                    ╰── GstBaseTransform
                        ╰── GstAudioMixMatrix

## Description

This element transforms a given number of input channels into a given number of output channels according to a given transformation matrix. The matrix coefficients must be between -1 and 1: the number of rows is equal to the number of output channels and the number of columns is equal to the number of input channels. In the first-channels mode, input/output channels are automatically negotiated and the transformation matrix is a truncated identity matrix.

#### Example matrix generation code

To generate the matrix using code:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

    GValue v = G_VALUE_INIT;
    GValue v2 = G_VALUE_INIT;
    GValue v3 = G_VALUE_INIT;

    g_value_init (&v2, GST_TYPE_ARRAY);
    g_value_init (&v3, G_TYPE_DOUBLE);
    g_value_set_double (&v3, 1);
    gst_value_array_append_value (&v2, &v3);
    g_value_unset (&v3);
    [ Repeat for as many double as your input channels - unset and reinit v3 ]
    g_value_init (&v, GST_TYPE_ARRAY);
    gst_value_array_append_value (&v, &v2);
    g_value_unset (&v2);
    [ Repeat for as many v2's as your output channels - unset and reinit v2]
    g_object_set_property (G_OBJECT (audiomixmatrix), "matrix", &v);
    g_value_unset (&v);

#### Example launch line

    1

    gst-launch-1.0 audiotestsrc ! audio/x-raw,channels=4 ! audiomixmatrix in-channels=4 out-channels=2 channel-mask=-1 matrix="<<(double)1, (double)0, (double)0, (double)0>, <0.0, 1.0, 0.0, 0.0>>" ! audio/x-raw,channels=2 ! autoaudiosink

## Synopsis

### Element Information

plugin | audiomixmatrix
author | Vivia Nikolaidou <vivia@toolsonair.com>
class | Filter/Audio

### Element Pads

name | sink
direction | sink
presence | always
details | audio/x-raw, channels=(int)[ 1, 2147483647 ], layout=(string)interleaved, format=(string){ F32LE, F64LE, S16LE, S32LE }

name | src
direction | source
presence | always
details | audio/x-raw, channels=(int)[ 1, 2147483647 ], layout=(string)interleaved, format=(string){ F32LE, F64LE, S16LE, S32LE }

## Functions

## Types and Values

### struct GstAudioMixMatrix

    struct GstAudioMixMatrix;

Opaque data structure.

## Property Details

### The `“channel-mask”` property

      “channel-mask”             guint64

Output channel mask (-1 means "default for these channels").

Flags: Read / Write

Default value: 0

### The `“in-channels”` property

      “in-channels”              guint

How many audio channels we have on the input side.

Flags: Read / Write

Allowed values: <= 64

Default value: 0

### The `“matrix”` property

      “matrix”                   GstValueArray

Transformation matrix for input/output channels.

Flags: Read / Write

### The `“matrix-value-array”` property

      “matrix-value-array”       GValueArray *

Transformation matrix (GValueArray) for input/output channels.

Flags: Read / Write

### The `“mode”` property

      “mode”                     GstAudioMixMatrixModeType

Whether to auto-negotiate input/output channels and matrix.

Flags: Read / Write

Default value: Manual mode: please specify input/output channels and transformation matrix

### The `“out-channels”` property

      “out-channels”             guint

How many audio channels we have on the output side.

Flags: Read / Write

Allowed values: <= 64

Default value: 0