## 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

GstPushSrcClass `parent_class`; | the parent class. |
`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_RETIMESTAMP | 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.

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.

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.