100 snprintf(buf, buf_size,
"name " " depth");
103 snprintf (buf, buf_size,
"%-6s" " %2d ", info.
name, info.
bits);
130 if (!sample_size || nb_samples <= 0 || nb_channels <= 0)
135 if (nb_samples > INT_MAX - 31)
138 nb_samples =
FFALIGN(nb_samples, 32);
142 if (nb_channels > INT_MAX /
align ||
143 (
int64_t)nb_channels * nb_samples > (INT_MAX - (
align * nb_channels)) / sample_size)
146 line_size = planar ?
FFALIGN(nb_samples * sample_size,
align) :
149 *linesize = line_size;
151 return planar ? line_size * nb_channels : line_size;
155 const uint8_t *buf,
int nb_channels,
int nb_samples,
158 int ch, planar, buf_size, line_size;
167 *linesize = line_size;
169 memset(audio_data, 0, planar
170 ?
sizeof(*audio_data) * nb_channels
171 :
sizeof(*audio_data));
176 audio_data[0] = (uint8_t *)buf;
177 for (ch = 1; planar && ch < nb_channels; ch++)
178 audio_data[ch] = audio_data[ch-1] + line_size;
197 nb_samples, sample_fmt,
align);
213 *audio_data =
av_calloc(nb_planes,
sizeof(**audio_data));
217 nb_samples, sample_fmt,
align);
224 int src_offset,
int nb_samples,
int nb_channels,
228 int planes = planar ? nb_channels : 1;
230 int data_size = nb_samples * block_align;
233 dst_offset *= block_align;
234 src_offset *= block_align;
238 memcpy(
dst[
i] + dst_offset,
src[
i] + src_offset, data_size);
241 memmove(
dst[
i] + dst_offset,
src[
i] + src_offset, data_size);
251 int planes = planar ? nb_channels : 1;
253 int data_size = nb_samples * block_align;
266 memset(audio_data[
i] +
offset, fill_char, data_size);
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
static const uint8_t *BS_FUNC align(BSCTX *bc)
Skip bits to a byte boundary.
#define i(width, name, range_min, range_max)
int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt)
Check if the sample format is planar.
int av_get_bytes_per_sample(enum AVSampleFormat sample_fmt)
Return number of bytes per sample.
enum AVSampleFormat av_get_sample_fmt(const char *name)
Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE on error.
enum AVSampleFormat av_get_packed_sample_fmt(enum AVSampleFormat sample_fmt)
Get the packed alternative form of the given sample format.
enum AVSampleFormat av_get_planar_sample_fmt(enum AVSampleFormat sample_fmt)
Get the planar alternative form of the given sample format.
enum AVSampleFormat av_get_alt_sample_fmt(enum AVSampleFormat sample_fmt, int planar)
Return the planar<->packed alternative form of the given sample format, or AV_SAMPLE_FMT_NONE on erro...
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.
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 ne...
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.
AVSampleFormat
Audio sample formats.
@ AV_SAMPLE_FMT_FLTP
float, planar
@ AV_SAMPLE_FMT_S16P
signed 16 bits, planar
@ AV_SAMPLE_FMT_S64
signed 64 bits
@ AV_SAMPLE_FMT_U8P
unsigned 8 bits, planar
@ AV_SAMPLE_FMT_DSD
DSD (Direct Stream Digital) bitstream, interleaved.
@ AV_SAMPLE_FMT_NB
Number of sample formats. DO NOT USE if linking dynamically.
@ AV_SAMPLE_FMT_S32P
signed 32 bits, planar
@ AV_SAMPLE_FMT_S32
signed 32 bits
@ AV_SAMPLE_FMT_U8
unsigned 8 bits
@ AV_SAMPLE_FMT_DBLP
double, planar
@ AV_SAMPLE_FMT_DBL
double
@ AV_SAMPLE_FMT_S64P
signed 64 bits, planar
@ AV_SAMPLE_FMT_S16
signed 16 bits
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_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_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.
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_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 lin...
static const struct @257111027162314367033347246032313251342043035002 planes[]
Utility Preprocessor macros.
void * av_calloc(size_t nmemb, size_t size)
Memory handling functions.
static const SampleFmtInfo sample_fmt_info[AV_SAMPLE_FMT_NB]
this table gives more information about formats
enum AVSampleFormat altform
planar<->packed alternative form