Loading...
Searching...
No Matches
Samples manipulation
libavutil » Audio related

Functions that manipulate audio samples. More...

## Functions

int | av_samples_fill_arrays (uint8_t **audio_data, int *linesize, const uint8_t *buf, int nb_channels, int nb_samples, enum AVSampleFormat sample_fmt, int align)
| Fill plane data pointers and linesize for samples with sample format sample_fmt.
int | av_samples_alloc (uint8_t **audio_data, int *linesize, int nb_channels, int nb_samples, enum AVSampleFormat sample_fmt, int align)
| Allocate a samples buffer for nb_samples samples, and fill data pointers and linesize accordingly.
int | av_samples_alloc_array_and_samples (uint8_t ***audio_data, int *linesize, int nb_channels, int nb_samples, enum AVSampleFormat sample_fmt, int align)
| Allocate a data pointers array, samples buffer for nb_samples samples, and fill data pointers and linesize accordingly.
int | av_samples_copy (uint8_t *const *dst, uint8_t *const *src, int dst_offset, int src_offset, int nb_samples, int nb_channels, enum AVSampleFormat sample_fmt)
| Copy samples from src to dst.
int | av_samples_set_silence (uint8_t *const *audio_data, int offset, int nb_samples, int nb_channels, enum AVSampleFormat sample_fmt)
| Fill an audio buffer with silence.

## Detailed Description

Functions that manipulate audio samples.

## Function Documentation

## av_samples_fill_arrays()

int av_samples_fill_arrays | ( | uint8_t ** | audio_data,
|  | int * | linesize,
|  | const uint8_t * | buf,
|  | int | nb_channels,
|  | int | nb_samples,
|  | enum AVSampleFormat | sample_fmt,
|  | int | align
| ) |  |

Fill plane data pointers and linesize for samples with sample format sample_fmt.

The audio_data array is filled with the pointers to the samples data planes: for planar, set the start point of each channel's data within the buffer, for packed, set the start point of the entire buffer only.

The value pointed to by linesize is set to the aligned size of each channel's data buffer for planar layout, or to the aligned size of the buffer for all channels for packed layout.

The buffer in buf must be big enough to contain all the samples (use av_samples_get_buffer_size() to compute its minimum size), otherwise the audio_data pointers will point to invalid data.

See also
  enum AVSampleFormat The documentation for AVSampleFormat describes the data layout.

Parameters

  [out] | audio_data | array to be filled with the pointer for each channel
  [out] | linesize | calculated linesize, may be NULL
  | buf | the pointer to a buffer containing the samples
  | nb_channels | the number of channels
  | nb_samples | the number of samples in a single channel
  | sample_fmt | the sample format
  | align | buffer size alignment (0 = default, 1 = no alignment)

Returns
  minimum size in bytes required for the buffer on success, or a negative error code on failure

## av_samples_alloc()

int av_samples_alloc | ( | uint8_t ** | audio_data,
|  | int * | linesize,
|  | int | nb_channels,
|  | int | nb_samples,
|  | enum AVSampleFormat | sample_fmt,
|  | int | align
| ) |  |

Allocate a samples buffer for nb_samples samples, and fill data pointers and linesize accordingly.

The allocated samples buffer can be freed by using av_freep(&audio_data[0]) Allocated data will be initialized to silence.

See also
  enum AVSampleFormat The documentation for AVSampleFormat describes the data layout.

Parameters

  [out] | audio_data | array to be filled with the pointer for each channel
  [out] | linesize | aligned size for audio buffer(s), may be NULL
  | nb_channels | number of audio channels
  | nb_samples | number of samples per channel
  | sample_fmt | the sample format
  | align | buffer size alignment (0 = default, 1 = no alignment)

Returns
  >=0 on success or a negative error code on failure

Todo:
  return the size of the allocated buffer in case of success at the next bump

See also
  av_samples_fill_arrays()
  av_samples_alloc_array_and_samples()

Examples
  resample_audio.c.

Referenced by main().

## av_samples_alloc_array_and_samples()

int av_samples_alloc_array_and_samples | ( | uint8_t *** | audio_data,
|  | int * | linesize,
|  | int | nb_channels,
|  | int | nb_samples,
|  | enum AVSampleFormat | sample_fmt,
|  | int | align
| ) |  |

Allocate a data pointers array, samples buffer for nb_samples samples, and fill data pointers and linesize accordingly.

This is the same as av_samples_alloc(), but also allocates the data pointers array.

See also
  av_samples_alloc()

Examples
  resample_audio.c, and transcode_aac.c.

Referenced by init_converted_samples(), and main().

## av_samples_copy()

int av_samples_copy | ( | uint8_t *const * | dst,
|  | uint8_t *const * | src,
|  | int | dst_offset,
|  | int | src_offset,
|  | int | nb_samples,
|  | int | nb_channels,
|  | enum AVSampleFormat | sample_fmt
| ) |  |

Copy samples from src to dst.

Parameters

  dst | destination array of pointers to data planes
  src | source array of pointers to data planes
  dst_offset | offset in samples at which the data will be written to dst
  src_offset | offset in samples at which the data will be read from src
  nb_samples | number of samples to be copied
  nb_channels | number of audio channels
  sample_fmt | audio sample format

## av_samples_set_silence()

int av_samples_set_silence | ( | uint8_t *const * | audio_data,
|  | int | offset,
|  | int | nb_samples,
|  | int | nb_channels,
|  | enum AVSampleFormat | sample_fmt
| ) |  |

Fill an audio buffer with silence.

Parameters

  audio_data | array of pointers to data planes
  offset | offset in samples at which to start filling
  nb_samples | number of samples to fill
  nb_channels | number of audio channels
  sample_fmt | audio sample format