## GstAudioBaseSrc GstAudioBaseSrc — Base class for audio sources |

## Functions

#define | GST_AUDIO_BASE_SRC_CLOCK()
#define | GST_AUDIO_BASE_SRC_PAD()
GstAudioRingBuffer * | gst_audio_base_src_create_ringbuffer ()
void | gst_audio_base_src_set_provide_clock ()
gboolean | gst_audio_base_src_get_provide_clock ()
GstAudioBaseSrcSlaveMethod | gst_audio_base_src_get_slave_method ()
void | gst_audio_base_src_set_slave_method ()

## Properties

gint64 | actual-buffer-time | Read
gint64 | actual-latency-time | Read
gint64 | buffer-time | Read / Write
gint64 | latency-time | Read / Write
gboolean | provide-clock | Read / Write
GstAudioBaseSrcSlaveMethod | slave-method | Read / Write

## Types and Values

struct | GstAudioBaseSrc
struct | GstAudioBaseSrcClass
enum | GstAudioBaseSrcSlaveMethod

## Object Hierarchy

        GObject
        ╰── GInitiallyUnowned
            ╰── GstObject
                ╰── GstElement
                    ╰── GstBaseSrc
                        ╰── GstPushSrc
                            ╰── GstAudioBaseSrc
                                ╰── GstAudioSrc

## Includes

    #include <gst/audio/gstaudiobasesrc.h>

## Description

This is the base class for audio sources. Subclasses need to implement the ::create_ringbuffer vmethod. This base class will then take care of reading samples from the ringbuffer, synchronisation and flushing.

## Functions

### GST_AUDIO_BASE_SRC_CLOCK()

    #define GST_AUDIO_BASE_SRC_CLOCK(obj)    (GST_AUDIO_BASE_SRC (obj)->clock)

Get the GstClock of `obj` .

#### Parameters

obj | a GstAudioBaseSrc |

### GST_AUDIO_BASE_SRC_PAD()

    #define GST_AUDIO_BASE_SRC_PAD(obj)      (GST_BASE_SRC (obj)->srcpad)

Get the source GstPad of `obj` .

#### Parameters

obj | a GstAudioBaseSrc |

### gst_audio_base_src_create_ringbuffer ()

    GstAudioRingBuffer *
    gst_audio_base_src_create_ringbuffer (GstAudioBaseSrc *src);

Create and return the GstAudioRingBuffer for `src` . This function will call the ::create_ringbuffer vmethod and will set `src` as the parent of the returned buffer (see `gst_object_set_parent()`).

#### Parameters

src | a GstAudioBaseSrc. |

#### Returns

The new ringbuffer of `src` .

[transfer none]

### gst_audio_base_src_set_provide_clock ()

    void
    gst_audio_base_src_set_provide_clock (GstAudioBaseSrc *src,
                                          gboolean provide);

Controls whether `src` will provide a clock or not. If `provide` is `TRUE`, `gst_element_provide_clock()` will return a clock that reflects the datarate of `src` . If `provide` is `FALSE`, `gst_element_provide_clock()` will return NULL.

#### Parameters

src | a GstAudioBaseSrc |
provide | new state |

### gst_audio_base_src_get_provide_clock ()

    gboolean
    gst_audio_base_src_get_provide_clock (GstAudioBaseSrc *src);

Queries whether `src` will provide a clock or not. See also gst_audio_base_src_set_provide_clock.

#### Parameters

src | a GstAudioBaseSrc |

#### Returns

`TRUE` if `src` will provide a clock.

### gst_audio_base_src_get_slave_method ()

    GstAudioBaseSrcSlaveMethod
    gst_audio_base_src_get_slave_method (GstAudioBaseSrc *src);

Get the current slave method used by `src` .

#### Parameters

src | a GstAudioBaseSrc |

#### Returns

The current slave method used by `src` .

### gst_audio_base_src_set_slave_method ()

    void
    gst_audio_base_src_set_slave_method (GstAudioBaseSrc *src,
                                         GstAudioBaseSrcSlaveMethod method);

Controls how clock slaving will be performed in `src` .

#### Parameters

src | a GstAudioBaseSrc |
method | the new slave method |

## Types and Values

### struct GstAudioBaseSrc

    struct GstAudioBaseSrc;

Opaque GstAudioBaseSrc.

### struct GstAudioBaseSrcClass

    struct GstAudioBaseSrcClass {
      GstPushSrcClass      parent_class;

      /* subclass ringbuffer allocation */
      GstAudioRingBuffer* (*create_ringbuffer)  (GstAudioBaseSrc *src);
    };

GstAudioBaseSrc class. Override the vmethod to implement functionality.

#### Members

`create_ringbuffer` () | create and return a GstAudioRingBuffer to read from. |

### enum GstAudioBaseSrcSlaveMethod

Different possible clock slaving algorithms when the internal audio clock was not selected as the pipeline clock.

#### Members

GST_AUDIO_BASE_SRC_SLAVE_RESAMPLE | Resample to match the master clock. |
GST_AUDIO_BASE_SRC_SLAVE_RE_TIMESTAMP | Retimestamp output buffers with master clock time. |
GST_AUDIO_BASE_SRC_SLAVE_SKEW | Adjust capture pointer when master clock drifts too much. |
GST_AUDIO_BASE_SRC_SLAVE_NONE | No adjustment is done. |

## Property Details

### The `“actual-buffer-time”` property

      “actual-buffer-time”       gint64

Actual configured size of audio buffer in microseconds.

Flags: Read

Allowed values: >= -1

Default value: -1

### The `“actual-latency-time”` property

      “actual-latency-time”      gint64

Actual configured audio latency in microseconds.

Flags: Read

Allowed values: >= -1

Default value: -1

### The `“buffer-time”` property

      “buffer-time”              gint64

Size of audio buffer in microseconds. This is the maximum amount of data that is buffered in the device and the maximum latency that the source reports. This value might be ignored by the element if necessary; see "actual-buffer-time".

Flags: Read / Write

Allowed values: >= 1

Default value: 200000

### The `“latency-time”` property

      “latency-time”             gint64

The minimum amount of data to read in each iteration in microseconds. This is the minimum latency that the source reports. This value might be ignored by the element if necessary; see "actual-latency-time".

Flags: Read / Write

Allowed values: >= 1

Default value: 10000

### The `“provide-clock”` property

      “provide-clock”            gboolean

Provide a clock to be used as the global pipeline clock.

Flags: Read / Write

Default value: TRUE

### The `“slave-method”` property

      “slave-method”             GstAudioBaseSrcSlaveMethod

Algorithm used to match the rate of the masterclock.

Flags: Read / Write

Default value: GST_AUDIO_BASE_SRC_SLAVE_SKEW

## See Also

GstAudioSrc, GstAudioRingBuffer.