samplefmt.h File Reference
#include <stdint.h>
#include "avutil.h"
#include "attributes.h"

Go to the source code of this file.

Macros

#define AVUTIL_SAMPLEFMT_H
 

Enumerations

enum  AVSampleFormat {
  AV_SAMPLE_FMT_NONE = -1, AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S32,
  AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_U8P, AV_SAMPLE_FMT_S16P,
  AV_SAMPLE_FMT_S32P, AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_DBLP, AV_SAMPLE_FMT_NB
}
 Audio Sample Formats. More...
 

Functions

const char * av_get_sample_fmt_name (enum AVSampleFormat sample_fmt)
 Return the name of sample_fmt, or NULL if sample_fmt is not recognized. More...
 
enum AVSampleFormat av_get_sample_fmt (const char *name)
 Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE on error. More...
 
enum AVSampleFormat av_get_packed_sample_fmt (enum AVSampleFormat sample_fmt)
 Get the packed alternative form of the given sample format. More...
 
enum AVSampleFormat av_get_planar_sample_fmt (enum AVSampleFormat sample_fmt)
 Get the planar alternative form of the given sample format. More...
 
char * av_get_sample_fmt_string (char *buf, int buf_size, enum AVSampleFormat sample_fmt)
 Generate a string corresponding to the sample format with sample_fmt, or a header if sample_fmt is negative. More...
 
int av_get_bytes_per_sample (enum AVSampleFormat sample_fmt)
 Return number of bytes per sample. More...
 
int av_sample_fmt_is_planar (enum AVSampleFormat sample_fmt)
 Check if the sample format is planar. More...
 
int av_samples_get_buffer_size (int *linesize, int nb_channels, int nb_samples, enum AVSampleFormat sample_fmt, int align)
 Get the required buffer size for the given audio parameters. More...
 
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 channel data pointers and linesize for samples with sample format sample_fmt. More...
 
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. More...
 
int av_samples_copy (uint8_t **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. More...
 
int av_samples_set_silence (uint8_t **audio_data, int offset, int nb_samples, int nb_channels, enum AVSampleFormat sample_fmt)
 Fill an audio buffer with silence. More...
 

Macro Definition Documentation

#define AVUTIL_SAMPLEFMT_H

Enumeration Type Documentation

Audio Sample Formats.

The data described by the sample format is always in native-endian order. Sample values can be expressed by native C types, hence the lack of a signed 24-bit sample format even though it is a common raw audio data format.
The floating-point formats are based on full volume being in the range [-1.0, 1.0]. Any values outside this range are beyond full volume level.
The data layout as used in av_samples_fill_arrays() and elsewhere in Libav (such as AVFrame in libavcodec) is as follows:

For planar sample formats, each audio channel is in a separate data plane, and linesize is the buffer size, in bytes, for a single plane. All data planes must be the same size. For packed sample formats, only the first data plane is used, and samples for each channel are interleaved. In this case, linesize is the buffer size, in bytes, for the 1 plane.

Enumerator
AV_SAMPLE_FMT_NONE 
AV_SAMPLE_FMT_U8 

unsigned 8 bits

AV_SAMPLE_FMT_S16 

signed 16 bits

AV_SAMPLE_FMT_S32 

signed 32 bits

AV_SAMPLE_FMT_FLT 

float

AV_SAMPLE_FMT_DBL 

double

AV_SAMPLE_FMT_U8P 

unsigned 8 bits, planar

AV_SAMPLE_FMT_S16P 

signed 16 bits, planar

AV_SAMPLE_FMT_S32P 

signed 32 bits, planar

AV_SAMPLE_FMT_FLTP 

float, planar

AV_SAMPLE_FMT_DBLP 

double, planar

AV_SAMPLE_FMT_NB 

Number of sample formats. DO NOT USE if linking dynamically.

Definition at line 49 of file samplefmt.h.

Function Documentation

enum AVSampleFormat av_get_packed_sample_fmt ( enum AVSampleFormat  sample_fmt)

Get the packed alternative form of the given sample format.

If the passed sample_fmt is already in packed format, the format returned is the same as the input.

Returns
the packed alternative form of the given sample format or AV_SAMPLE_FMT_NONE on error.

Definition at line 64 of file samplefmt.c.

Referenced by ff_audio_convert_set_func(), ff_dither_alloc(), ff_volume_init_x86(), filter_frame(), PUT_FUNC(), swap_sample_fmts_on_filter(), update_sample_fmt(), and volume_init().

enum AVSampleFormat av_get_planar_sample_fmt ( enum AVSampleFormat  sample_fmt)

Get the planar alternative form of the given sample format.

If the passed sample_fmt is already in planar format, the format returned is the same as the input.

Returns
the planar alternative form of the given sample format or AV_SAMPLE_FMT_NONE on error.

Definition at line 73 of file samplefmt.c.

Referenced by avcodec_open2(), avresample_open(), config_output(), and swap_sample_fmts_on_filter().

enum AVSampleFormat av_get_sample_fmt ( const char *  name)

Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE on error.

Definition at line 54 of file samplefmt.c.

Referenced by init(), init_audio(), and new_audio_stream().

char* av_get_sample_fmt_string ( char *  buf,
int  buf_size,
enum AVSampleFormat  sample_fmt 
)

Generate a string corresponding to the sample format with sample_fmt, or a header if sample_fmt is negative.

Parameters
bufthe buffer where to write the string
buf_sizethe size of buf
sample_fmtthe number of the sample format to print the corresponding info string, or a negative value to print the corresponding header.
Returns
the pointer to the filled buffer or NULL if sample_fmt is unknown or in case of other errors

Definition at line 82 of file samplefmt.c.

Referenced by show_sample_fmts().

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_dataarray to be filled with the pointer for each channel
[out]linesizealigned size for audio buffer(s), may be NULL
nb_channelsnumber of audio channels
nb_samplesnumber of samples per channel
alignbuffer size alignment (0 = default, 1 = no alignment)
Returns
0 on success or a negative error code on failure
See Also
av_samples_fill_arrays()

Definition at line 162 of file samplefmt.c.

Referenced by ff_audio_data_realloc(), and ff_default_get_audio_buffer().

int av_samples_copy ( uint8_t **  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
dstdestination array of pointers to data planes
srcsource array of pointers to data planes
dst_offsetoffset in samples at which the data will be written to dst
src_offsetoffset in samples at which the data will be read from src
nb_samplesnumber of samples to be copied
nb_channelsnumber of audio channels
sample_fmtaudio sample format

Definition at line 187 of file samplefmt.c.

Referenced by av_buffersrc_write_frame(), ff_filter_frame(), pad_last_frame(), and return_audio_frame().

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 channel data pointers and linesize for samples with sample format sample_fmt.

The pointers array is filled with the pointers to the samples data: 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 linesize array is filled with the aligned size of each channel's data buffer for planar layout, or the aligned size of the buffer for all channels for packed layout.

See Also
enum AVSampleFormat The documentation for AVSampleFormat describes the data layout.
Parameters
[out]audio_dataarray to be filled with the pointer for each channel
[out]linesizecalculated linesize, may be NULL
bufthe pointer to a buffer containing the samples
nb_channelsthe number of channels
nb_samplesthe number of samples in a single channel
sample_fmtthe sample format
alignbuffer size alignment (0 = default, 1 = no alignment)
Returns
0 on success or a negative error code on failure

Definition at line 140 of file samplefmt.c.

Referenced by allocate_buffers(), av_samples_alloc(), avcodec_fill_audio_frame(), dca_decode_frame(), ff_audio_data_realloc(), main(), and tak_decode_frame().

int av_samples_get_buffer_size ( int *  linesize,
int  nb_channels,
int  nb_samples,
enum AVSampleFormat  sample_fmt,
int  align 
)

Get the required buffer size for the given audio parameters.

Parameters
[out]linesizecalculated linesize, may be NULL
nb_channelsthe number of channels
nb_samplesthe number of samples in a single channel
sample_fmtthe sample format
alignbuffer size alignment (0 = default, 1 = no alignment)
Returns
required buffer size, or negative error code on failure

Definition at line 108 of file samplefmt.c.

Referenced by allocate_buffers(), audio_decode_example(), audio_decode_frame(), audio_encode_example(), audio_get_buffer(), av_audio_fifo_alloc(), av_audio_fifo_realloc(), av_samples_alloc(), av_samples_fill_arrays(), avcodec_fill_audio_frame(), dca_decode_frame(), ff_audio_data_realloc(), main(), pad_last_frame(), and tak_decode_frame().

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

Fill an audio buffer with silence.

Parameters
audio_dataarray of pointers to data planes
offsetoffset in samples at which to start filling
nb_samplesnumber of samples to fill
nb_channelsnumber of audio channels
sample_fmtaudio sample format

Definition at line 206 of file samplefmt.c.

Referenced by av_samples_alloc(), filter_frame(), pad_last_frame(), and return_audio_frame().