MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / av_samples_get_buffer_size

Function av_samples_get_buffer_size

libavutil/samplefmt.c:121–151  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

119}
120
121int av_samples_get_buffer_size(int *linesize, int nb_channels, int nb_samples,
122 enum AVSampleFormat sample_fmt, int align)
123{
124 int line_size;
125 int sample_size = av_get_bytes_per_sample(sample_fmt);
126 int planar = av_sample_fmt_is_planar(sample_fmt);
127
128 /* validate parameter ranges */
129 if (!sample_size || nb_samples <= 0 || nb_channels <= 0)
130 return AVERROR(EINVAL);
131
132 /* auto-select alignment if not specified */
133 if (!align) {
134 if (nb_samples > INT_MAX - 31)
135 return AVERROR(EINVAL);
136 align = 1;
137 nb_samples = FFALIGN(nb_samples, 32);
138 }
139
140 /* check for integer overflow */
141 if (nb_channels > INT_MAX / align ||
142 (int64_t)nb_channels * nb_samples > (INT_MAX - (align * nb_channels)) / sample_size)
143 return AVERROR(EINVAL);
144
145 line_size = planar ? FFALIGN(nb_samples * sample_size, align) :
146 FFALIGN(nb_samples * sample_size * nb_channels, align);
147 if (linesize)
148 *linesize = line_size;
149
150 return planar ? line_size * nb_channels : line_size;
151}
152
153int av_samples_fill_arrays(uint8_t **audio_data, int *linesize,
154 const uint8_t *buf, int nb_channels, int nb_samples,

Callers 13

get_audio_bufferFunction · 0.85
av_samples_fill_arraysFunction · 0.85
av_samples_allocFunction · 0.85
av_audio_fifo_allocFunction · 0.85
av_audio_fifo_reallocFunction · 0.85
audio_decode_frameFunction · 0.85
audio_openFunction · 0.85
tak_decode_frameFunction · 0.85
avcodec_fill_audio_frameFunction · 0.85
allocate_buffersFunction · 0.85
update_frame_poolFunction · 0.85
ff_frame_pool_audio_initFunction · 0.85

Calls 2

av_get_bytes_per_sampleFunction · 0.85
av_sample_fmt_is_planarFunction · 0.85

Tested by

no test coverage detected