gavl: Peak detector

gavl

Typedefs | Functions
Peak detector
Audio

Detect peaks in the volume for steering normalizers and dynamic range compressors While normalizers and dynamic range controls are out of the scope of gavl, some low-level functionality can be provided. More...

## Typedefs
typedef struct gavl_peak_detector_s | gavl_peak_detector_t
| Opaque structure for peak detector.
typedef void(* | gavl_update_peak_callback) (void *priv, int samples, double min, double max, double abs)
| Callback for getting the peaks across all channels.
typedef void(* | gavl_update_peaks_callback) (void *priv, int samples, const double *min, const double *max, const double *abs)
| Callback for getting the peaks for all channels separately.

## Functions
GAVL_PUBLIC gavl_peak_detector_t * | gavl_peak_detector_create (void)
| Create peak detector.
GAVL_PUBLIC void | gavl_peak_detector_set_callbacks (gavl_peak_detector_t *pd, gavl_update_peak_callback peak_callback, gavl_update_peaks_callback peaks_callback, void *priv)
| Set callbacks.
GAVL_PUBLIC void | gavl_peak_detector_destroy (gavl_peak_detector_t *pd)
| Destroys a peak detector and frees all associated memory.
GAVL_PUBLIC void | gavl_peak_detector_set_format (gavl_peak_detector_t *pd, const gavl_audio_format_t *format)
| Set format for a peak detector.
GAVL_PUBLIC const gavl_audio_format_t * | gavl_peak_detector_get_format (gavl_peak_detector_t *pd)
| Get format.
GAVL_PUBLIC void | gavl_peak_detector_update (gavl_peak_detector_t *pd, gavl_audio_frame_t *frame)
| Feed the peak detector with a new frame.
GAVL_PUBLIC gavl_audio_sink_t * | gavl_peak_detector_get_sink (gavl_peak_detector_t *pd)
| Get the audio sink.
GAVL_PUBLIC void | gavl_peak_detector_get_peak (gavl_peak_detector_t *pd, double *min, double *max, double *abs)
| Get the peak volume across all channels.
GAVL_PUBLIC void | gavl_peak_detector_get_peaks (gavl_peak_detector_t *pd, double *min, double *max, double *abs)
| Get the peak volume for all channels separate.
GAVL_PUBLIC void | gavl_peak_detector_reset (gavl_peak_detector_t *pd)
| Reset a peak detector.

## Detailed Description

Detect peaks in the volume for steering normalizers and dynamic range compressors While normalizers and dynamic range controls are out of the scope of gavl, some low-level functionality can be provided.

## Typedef Documentation

## ◆ gavl_peak_detector_t

typedef struct gavl_peak_detector_s gavl_peak_detector_t

Opaque structure for peak detector.

You don't want to know what's inside.

## ◆ gavl_update_peak_callback

typedef void(* gavl_update_peak_callback) (void *priv, int samples, double min, double max, double abs)

Callback for getting the peaks across all channels.

Parameters

  priv | Client data
  samples | Number of samples of last update call
  min | Minimum value (scaled between -1.0 and 1.0)
  min | Maximum value (scaled between -1.0 and 1.0)
  abs | Absolute value (scaled between 0.0 and 1.0)

Since 1.5.0

## ◆ gavl_update_peaks_callback

typedef void(* gavl_update_peaks_callback) (void *priv, int samples, const double *min, const double *max, const double *abs)

Callback for getting the peaks for all channels separately.

Parameters

  priv | Client data
  samples | Number of samples of last update call
  min | Minimum value (scaled between -1.0 and 1.0)
  min | Maximum value (scaled between -1.0 and 1.0)
  abs | Absolute value (scaled between 0.0 and 1.0)

Since 1.5.0

## Function Documentation

## ◆ gavl_peak_detector_create()

GAVL_PUBLIC gavl_peak_detector_t * gavl_peak_detector_create | ( | void |  | ) |

Create peak detector.

Returns
  A newly allocated peak detector

## ◆ gavl_peak_detector_set_callbacks()

GAVL_PUBLIC void gavl_peak_detector_set_callbacks | ( | gavl_peak_detector_t * | pd,
|  | gavl_update_peak_callback | peak_callback,
|  | gavl_update_peaks_callback | peaks_callback,
|  | void * | priv )

Set callbacks.

Parameters

  pd | A peak detector
  peak_callback | Callback for overall peaks or NULL
  peaks_callback | Callback for per channel peaks or NULL
  priv | Client data passed to the callbacks

Since 1.5.0

## ◆ gavl_peak_detector_destroy()

GAVL_PUBLIC void gavl_peak_detector_destroy | ( | gavl_peak_detector_t * | pd | ) |

Destroys a peak detector and frees all associated memory.

Parameters

  pd | A peak detector

## ◆ gavl_peak_detector_set_format()

GAVL_PUBLIC void gavl_peak_detector_set_format | ( | gavl_peak_detector_t * | pd,
|  | const gavl_audio_format_t * | format )

Set format for a peak detector.

Parameters

  pd | A peak detector
  format | The format subsequent frames will be passed with

This function can be called multiple times with one instance. It also calls gavl_peak_detector_reset.

## ◆ gavl_peak_detector_get_format()

GAVL_PUBLIC const gavl_audio_format_t * gavl_peak_detector_get_format | ( | gavl_peak_detector_t * | pd | ) |

Get format.

Parameters

  pd | A peak detector

Returns
  The internal format

Since 1.5.0

## ◆ gavl_peak_detector_update()

GAVL_PUBLIC void gavl_peak_detector_update | ( | gavl_peak_detector_t * | pd,
|  | gavl_audio_frame_t * | frame )

Feed the peak detector with a new frame.

Parameters

  pd | A peak detector
  frame | An audio frame

## ◆ gavl_peak_detector_get_sink()

GAVL_PUBLIC gavl_audio_sink_t * gavl_peak_detector_get_sink | ( | gavl_peak_detector_t * | pd | ) |

Get the audio sink.

Parameters

  pd | A peak detector

Returns
  An audio sink

Use the returned sink for passing audio frames as an alternative to gavl_peak_detector_update

Since 1.5.0

## ◆ gavl_peak_detector_get_peak()

GAVL_PUBLIC void gavl_peak_detector_get_peak | ( | gavl_peak_detector_t * | pd,
|  | double * | min,
|  | double * | max,
|  | double * | abs )

Get the peak volume across all channels.

Parameters

  pd | A peak detector
  min | Returns minimum amplitude
  max | Returns maximum amplitude
  abs | Returns maximum absolute amplitude

The returned amplitudes are normalized such that the minimum amplitude corresponds to -1.0, the maximum amplitude corresponds to 1.0.

## ◆ gavl_peak_detector_get_peaks()

GAVL_PUBLIC void gavl_peak_detector_get_peaks | ( | gavl_peak_detector_t * | pd,
|  | double * | min,
|  | double * | max,
|  | double * | abs )

Get the peak volume for all channels separate.

Parameters

  pd | A peak detector
  min | Returns minimum amplitude
  max | Returns maximum amplitude
  abs | Returns maximum absolute amplitude

The returned amplitudes are normalized such that the minimum amplitude corresponds to -1.0, the maximum amplitude corresponds to 1.0.

## ◆ gavl_peak_detector_reset()

GAVL_PUBLIC void gavl_peak_detector_reset | ( | gavl_peak_detector_t * | pd | ) |

Reset a peak detector.

Parameters

  pd | A peak detector