FFmpeg
swresample_internal.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2011-2013 Michael Niedermayer (michaelni@gmx.at)
3  *
4  * This file is part of libswresample
5  *
6  * libswresample is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * libswresample is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with libswresample; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #ifndef SWRESAMPLE_SWRESAMPLE_INTERNAL_H
22 #define SWRESAMPLE_SWRESAMPLE_INTERNAL_H
23 
24 #include "swresample.h"
26 #include "config.h"
27 
28 #define SWR_CH_MAX 64
29 
30 #define SQRT3_2 1.22474487139158904909 /* sqrt(3/2) */
31 
32 #define NS_TAPS 20
33 
34 #if ARCH_X86_64
35 typedef int64_t integer;
36 #else
37 typedef int integer;
38 #endif
39 
40 typedef void (mix_1_1_func_type)(void *out, const void *in, void *coeffp, integer index, integer len);
41 typedef void (mix_2_1_func_type)(void *out, const void *in1, const void *in2, void *coeffp, integer index1, integer index2, integer len);
42 
43 typedef void (mix_any_func_type)(uint8_t **out, const uint8_t **in1, void *coeffp, integer len);
44 
45 typedef struct AudioData{
46  uint8_t *ch[SWR_CH_MAX]; ///< samples buffer per channel
47  uint8_t *data; ///< samples buffer
48  int ch_count; ///< number of channels
49  int bps; ///< bytes per sample
50  int count; ///< number of samples
51  int planar; ///< 1 if planar audio, 0 otherwise
52  enum AVSampleFormat fmt; ///< sample format
53 } AudioData;
54 
55 struct DitherContext {
56  int method;
57  int noise_pos;
58  float scale;
59  float noise_scale; ///< Noise scale
60  int ns_taps; ///< Noise shaping dither taps
61  float ns_scale; ///< Noise shaping dither scale
62  float ns_scale_1; ///< Noise shaping dither scale^-1
63  int ns_pos; ///< Noise shaping dither position
64  float ns_coeffs[NS_TAPS]; ///< Noise shaping filter coefficients
66  AudioData noise; ///< noise used for dithering
67  AudioData temp; ///< temporary storage when writing into the input buffer isn't possible
68  int output_sample_bits; ///< the number of used output bits, needed to scale dither correctly
69 };
70 
71 typedef struct ResampleContext * (* resample_init_func)(struct ResampleContext *c, int out_rate, int in_rate, int filter_size, int phase_shift, int linear,
72  double cutoff, enum AVSampleFormat format, enum SwrFilterType filter_type, double kaiser_beta, double precision, int cheby, int exact_rational);
73 typedef void (* resample_free_func)(struct ResampleContext **c);
74 typedef int (* multiple_resample_func)(struct ResampleContext *c, AudioData *dst, int dst_size, AudioData *src, int src_size, int *consumed);
75 typedef int (* resample_flush_func)(struct SwrContext *c);
76 typedef int (* set_compensation_func)(struct ResampleContext *c, int sample_delta, int compensation_distance);
77 typedef int64_t (* get_delay_func)(struct SwrContext *s, int64_t base);
78 typedef int (* invert_initial_buffer_func)(struct ResampleContext *c, AudioData *dst, const AudioData *src, int src_size, int *dst_idx, int *dst_count);
79 typedef int64_t (* get_out_samples_func)(struct SwrContext *s, int in_samples);
80 
81 struct Resampler {
82  resample_init_func init;
90 };
91 
92 extern struct Resampler const swri_resampler;
93 extern struct Resampler const swri_soxr_resampler;
94 
95 struct SwrContext {
96  const AVClass *av_class; ///< AVClass used for AVOption and av_log()
97  int log_level_offset; ///< logging level offset
98  void *log_ctx; ///< parent logging context
99  enum AVSampleFormat in_sample_fmt; ///< input sample format
100  enum AVSampleFormat int_sample_fmt; ///< internal sample format (AV_SAMPLE_FMT_FLTP or AV_SAMPLE_FMT_S16P)
101  enum AVSampleFormat out_sample_fmt; ///< output sample format
102  AVChannelLayout used_ch_layout; ///< number of used input channels (mapped channel count if channel_map, otherwise in.ch_count)
103  AVChannelLayout in_ch_layout; ///< input channel layout
104  AVChannelLayout out_ch_layout; ///< output channel layout
105  int in_sample_rate; ///< input sample rate
106  int out_sample_rate; ///< output sample rate
107  int flags; ///< miscellaneous flags such as SWR_FLAG_RESAMPLE
108  float slev; ///< surround mixing level
109  float clev; ///< center mixing level
110  float lfe_mix_level; ///< LFE mixing level
111  float rematrix_volume; ///< rematrixing volume coefficient
112  float rematrix_maxval; ///< maximum value for rematrixing output
113  int matrix_encoding; /**< matrixed stereo encoding */
114  const int *channel_map; ///< channel index (or -1 if muted channel) map
115  int engine;
116 
117 #if FF_API_OLD_CHANNEL_LAYOUT
118  int user_used_ch_count; ///< User set used channel count
119  int user_in_ch_count; ///< User set input channel count
120  int user_out_ch_count; ///< User set output channel count
121  int64_t user_in_ch_layout; ///< User set input channel layout
122  int64_t user_out_ch_layout; ///< User set output channel layout
123 #endif
124  AVChannelLayout user_used_chlayout; ///< User set used channel layout
125  AVChannelLayout user_in_chlayout; ///< User set input channel layout
126  AVChannelLayout user_out_chlayout; ///< User set output channel layout
127  enum AVSampleFormat user_int_sample_fmt; ///< User set internal sample format
128  int user_dither_method; ///< User set dither method
129 
131 
132  int filter_size; /**< length of each FIR filter in the resampling filterbank relative to the cutoff frequency */
133  int phase_shift; /**< log2 of the number of entries in the resampling polyphase filterbank */
134  int linear_interp; /**< if 1 then the resampling FIR filter will be linearly interpolated */
135  int exact_rational; /**< if 1 then enable non power of 2 phase_count */
136  double cutoff; /**< resampling cutoff frequency (swr: 6dB point; soxr: 0dB point). 1.0 corresponds to half the output sample rate */
137  int filter_type; /**< swr resampling filter type */
138  double kaiser_beta; /**< swr beta value for Kaiser window (only applicable if filter_type == AV_FILTER_TYPE_KAISER) */
139  double precision; /**< soxr resampling precision (in bits) */
140  int cheby; /**< soxr: if 1 then passband rolloff will be none (Chebyshev) & irrational ratio approximation precision will be higher */
141 
142  float min_compensation; ///< swr minimum below which no compensation will happen
143  float min_hard_compensation; ///< swr minimum below which no silence inject / sample drop will happen
144  float soft_compensation_duration; ///< swr duration over which soft compensation is applied
145  float max_soft_compensation; ///< swr maximum soft compensation in seconds over soft_compensation_duration
146  float async; ///< swr simple 1 parameter async, similar to ffmpegs -async
147  int64_t firstpts_in_samples; ///< swr first pts in samples
148 
149  int resample_first; ///< 1 if resampling must come first, 0 if rematrixing
150  int rematrix; ///< flag to indicate if rematrixing is needed (basically if input and output layouts mismatch)
151  int rematrix_custom; ///< flag to indicate that a custom matrix has been defined
152 
153  AudioData in; ///< input audio data
154  AudioData postin; ///< post-input audio data: used for rematrix/resample
155  AudioData midbuf; ///< intermediate audio data (postin/preout)
156  AudioData preout; ///< pre-output audio data: used for rematrix/resample
157  AudioData out; ///< converted output audio data
158  AudioData in_buffer; ///< cached audio data (convert and resample purpose)
159  AudioData silence; ///< temporary with silence
160  AudioData drop_temp; ///< temporary used to discard output
161  int in_buffer_index; ///< cached buffer position
162  int in_buffer_count; ///< cached buffer length
163  int resample_in_constraint; ///< 1 if the input end was reach before the output end, 0 otherwise
164  int flushed; ///< 1 if data is to be flushed and no further input is expected
165  int64_t outpts; ///< output PTS
166  int64_t firstpts; ///< first PTS
167  int drop_output; ///< number of output samples to drop
168  double delayed_samples_fixup; ///< soxr 0.1.1: needed to fixup delayed_samples after flush has been called.
169 
170  struct AudioConvert *in_convert; ///< input conversion context
171  struct AudioConvert *out_convert; ///< output conversion context
172  struct AudioConvert *full_convert; ///< full conversion context (single conversion for input and output)
173  struct ResampleContext *resample; ///< resampling context
174  struct Resampler const *resampler; ///< resampler virtual function table
175 
176  double matrix[SWR_CH_MAX][SWR_CH_MAX]; ///< floating point rematrixing coefficients
177  float matrix_flt[SWR_CH_MAX][SWR_CH_MAX]; ///< single precision floating point rematrixing coefficients
178  uint8_t *native_matrix;
179  uint8_t *native_one;
180  uint8_t *native_simd_one;
182  int32_t matrix32[SWR_CH_MAX][SWR_CH_MAX]; ///< 17.15 fixed point rematrixing coefficients
183  uint8_t matrix_ch[SWR_CH_MAX][SWR_CH_MAX+1]; ///< Lists of input channels per output channel that have non zero rematrixing coefficients
186 
189 
191 
192  /* TODO: callbacks for ASM optimizations */
193 };
194 
196 int swri_realloc_audio(AudioData *a, int count);
197 
198 void swri_noise_shaping_int16 (SwrContext *s, AudioData *dsts, const AudioData *srcs, const AudioData *noises, int count);
199 void swri_noise_shaping_int32 (SwrContext *s, AudioData *dsts, const AudioData *srcs, const AudioData *noises, int count);
200 void swri_noise_shaping_float (SwrContext *s, AudioData *dsts, const AudioData *srcs, const AudioData *noises, int count);
201 void swri_noise_shaping_double(SwrContext *s, AudioData *dsts, const AudioData *srcs, const AudioData *noises, int count);
202 
206 int swri_rematrix(SwrContext *s, AudioData *out, AudioData *in, int len, int mustcopy);
207 int swri_rematrix_init_x86(struct SwrContext *s);
208 
210 int swri_get_dither(SwrContext *s, void *dst, int len, unsigned seed, enum AVSampleFormat noise_fmt);
212 int swri_dither_init(SwrContext *s, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt);
213 
215  enum AVSampleFormat out_fmt,
216  enum AVSampleFormat in_fmt,
217  int channels);
219  enum AVSampleFormat out_fmt,
220  enum AVSampleFormat in_fmt,
221  int channels);
223  enum AVSampleFormat out_fmt,
224  enum AVSampleFormat in_fmt,
225  int channels);
226 
227 #endif
Resampler::flush
resample_flush_func flush
Definition: swresample_internal.h:85
mix_any_func_type
void() mix_any_func_type(uint8_t **out, const uint8_t **in1, void *coeffp, integer len)
Definition: swresample_internal.h:43
DitherContext::scale
float scale
Definition: swresample_internal.h:58
SwrContext::mix_2_1_f
mix_2_1_func_type * mix_2_1_f
Definition: swresample_internal.h:187
multiple_resample_func
int(* multiple_resample_func)(struct ResampleContext *c, AudioData *dst, int dst_size, AudioData *src, int src_size, int *consumed)
Definition: swresample_internal.h:74
SwrContext::outpts
int64_t outpts
output PTS
Definition: swresample_internal.h:165
SwrContext::linear_interp
int linear_interp
if 1 then the resampling FIR filter will be linearly interpolated
Definition: swresample_internal.h:134
swri_noise_shaping_int16
void swri_noise_shaping_int16(SwrContext *s, AudioData *dsts, const AudioData *srcs, const AudioData *noises, int count)
out
FILE * out
Definition: movenc.c:54
SwrContext::in_sample_rate
int in_sample_rate
input sample rate
Definition: swresample_internal.h:105
DitherContext
Definition: swresample_internal.h:55
get_out_samples_func
int64_t(* get_out_samples_func)(struct SwrContext *s, int in_samples)
Definition: swresample_internal.h:79
matrix
Definition: vc1dsp.c:42
SwrContext::delayed_samples_fixup
double delayed_samples_fixup
soxr 0.1.1: needed to fixup delayed_samples after flush has been called.
Definition: swresample_internal.h:168
AudioData::bps
int bps
bytes per sample
Definition: swresample_internal.h:49
swri_rematrix_free
void swri_rematrix_free(SwrContext *s)
Definition: rematrix.c:599
Resampler::set_compensation
set_compensation_func set_compensation
Definition: swresample_internal.h:86
kaiser_beta
static float kaiser_beta(float att, float tr_bw)
Definition: asrc_sinc.c:137
SwrContext::out_sample_rate
int out_sample_rate
output sample rate
Definition: swresample_internal.h:106
SwrContext::matrix_ch
uint8_t matrix_ch[SWR_CH_MAX][SWR_CH_MAX+1]
Lists of input channels per output channel that have non zero rematrixing coefficients.
Definition: swresample_internal.h:183
SwrContext::out_ch_layout
AVChannelLayout out_ch_layout
output channel layout
Definition: swresample_internal.h:104
linear
static int linear(InterplayACMContext *s, unsigned ind, unsigned col)
Definition: interplayacm.c:132
SwrContext::user_in_chlayout
AVChannelLayout user_in_chlayout
User set input channel layout.
Definition: swresample_internal.h:125
resample_free_func
void(* resample_free_func)(struct ResampleContext **c)
Definition: swresample_internal.h:73
swri_rematrix_init_x86
int swri_rematrix_init_x86(struct SwrContext *s)
integer
int integer
Definition: swresample_internal.h:37
SwrContext::drop_output
int drop_output
number of output samples to drop
Definition: swresample_internal.h:167
base
uint8_t base
Definition: vp3data.h:128
Resampler::get_out_samples
get_out_samples_func get_out_samples
Definition: swresample_internal.h:89
resample_flush_func
int(* resample_flush_func)(struct SwrContext *c)
Definition: swresample_internal.h:75
SwrContext::slev
float slev
surround mixing level
Definition: swresample_internal.h:108
SwrContext::matrix_encoding
int matrix_encoding
matrixed stereo encoding
Definition: swresample_internal.h:113
SwrContext::cutoff
double cutoff
resampling cutoff frequency (swr: 6dB point; soxr: 0dB point).
Definition: swresample_internal.h:136
SwrContext::in_buffer_index
int in_buffer_index
cached buffer position
Definition: swresample_internal.h:161
SwrContext::min_hard_compensation
float min_hard_compensation
swr minimum below which no silence inject / sample drop will happen
Definition: swresample_internal.h:143
swri_noise_shaping_float
void swri_noise_shaping_float(SwrContext *s, AudioData *dsts, const AudioData *srcs, const AudioData *noises, int count)
SwrContext::av_class
const AVClass * av_class
AVClass used for AVOption and av_log()
Definition: swresample_internal.h:96
SwrContext::resample_first
int resample_first
1 if resampling must come first, 0 if rematrixing
Definition: swresample_internal.h:149
SwrContext::full_convert
struct AudioConvert * full_convert
full conversion context (single conversion for input and output)
Definition: swresample_internal.h:172
SwrContext::native_simd_one
uint8_t * native_simd_one
Definition: swresample_internal.h:180
AudioData
Definition: swresample_internal.h:45
SwrContext::out_sample_fmt
enum AVSampleFormat out_sample_fmt
output sample format
Definition: swresample_internal.h:101
swri_audio_convert_init_x86
void swri_audio_convert_init_x86(struct AudioConvert *ac, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt, int channels)
Definition: audio_convert_init.c:37
SwrContext::firstpts
int64_t firstpts
first PTS
Definition: swresample_internal.h:166
SwrContext::resampler
struct Resampler const * resampler
resampler virtual function table
Definition: swresample_internal.h:174
SwrContext::async
float async
swr simple 1 parameter async, similar to ffmpegs -async
Definition: swresample_internal.h:146
SwrContext::resample
struct ResampleContext * resample
resampling context
Definition: swresample_internal.h:173
swri_dither_init
av_warn_unused_result int swri_dither_init(SwrContext *s, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt)
Definition: dither.c:79
DitherContext::ns_pos
int ns_pos
Noise shaping dither position.
Definition: swresample_internal.h:63
SwrContext::postin
AudioData postin
post-input audio data: used for rematrix/resample
Definition: swresample_internal.h:154
SwrContext::clev
float clev
center mixing level
Definition: swresample_internal.h:109
SwrContext::mix_1_1_simd
mix_1_1_func_type * mix_1_1_simd
Definition: swresample_internal.h:185
swri_realloc_audio
av_warn_unused_result int swri_realloc_audio(AudioData *a, int count)
Definition: swresample.c:514
swri_audio_convert_init_arm
void swri_audio_convert_init_arm(struct AudioConvert *ac, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt, int channels)
Definition: audio_convert_init.c:48
SwrContext::cheby
int cheby
soxr: if 1 then passband rolloff will be none (Chebyshev) & irrational ratio approximation precision ...
Definition: swresample_internal.h:140
SwrContext::lfe_mix_level
float lfe_mix_level
LFE mixing level.
Definition: swresample_internal.h:110
SwrContext::matrix32
int32_t matrix32[SWR_CH_MAX][SWR_CH_MAX]
17.15 fixed point rematrixing coefficients
Definition: swresample_internal.h:182
s
#define s(width, name)
Definition: cbs_vp9.c:256
ResampleContext
Definition: resample.h:30
format
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample format(the sample packing is implied by the sample format) and sample rate. The lists are not just lists
SwrContext::user_out_chlayout
AVChannelLayout user_out_chlayout
User set output channel layout.
Definition: swresample_internal.h:126
set_compensation_func
int(* set_compensation_func)(struct ResampleContext *c, int sample_delta, int compensation_distance)
Definition: swresample_internal.h:76
SwrContext::int_sample_fmt
enum AVSampleFormat int_sample_fmt
internal sample format (AV_SAMPLE_FMT_FLTP or AV_SAMPLE_FMT_S16P)
Definition: swresample_internal.h:100
AudioData::planar
int planar
1 if planar audio, 0 otherwise
Definition: swresample_internal.h:51
channels
channels
Definition: aptx.h:31
SwrContext::native_matrix
uint8_t * native_matrix
Definition: swresample_internal.h:178
SwrContext::in_convert
struct AudioConvert * in_convert
input conversion context
Definition: swresample_internal.h:170
ResampleContext::filter_type
enum SwrFilterType filter_type
Definition: resample.h:45
swri_rematrix
int swri_rematrix(SwrContext *s, AudioData *out, AudioData *in, int len, int mustcopy)
Definition: rematrix.c:606
SwrContext
The libswresample context.
Definition: swresample_internal.h:95
AudioData::data
uint8_t * data
samples buffer
Definition: swresample_internal.h:47
SwrContext::channel_map
const int * channel_map
channel index (or -1 if muted channel) map
Definition: swresample_internal.h:114
SwrContext::mix_1_1_f
mix_1_1_func_type * mix_1_1_f
Definition: swresample_internal.h:184
AudioData::ch
uint8_t * ch[SWR_CH_MAX]
samples buffer per channel
Definition: swresample_internal.h:46
SwrContext::in_ch_layout
AVChannelLayout in_ch_layout
input channel layout
Definition: swresample_internal.h:103
swri_noise_shaping_int32
void swri_noise_shaping_int32(SwrContext *s, AudioData *dsts, const AudioData *srcs, const AudioData *noises, int count)
SwrContext::midbuf
AudioData midbuf
intermediate audio data (postin/preout)
Definition: swresample_internal.h:155
DitherContext::noise_scale
float noise_scale
Noise scale.
Definition: swresample_internal.h:59
SwrContext::drop_temp
AudioData drop_temp
temporary used to discard output
Definition: swresample_internal.h:160
SwrContext::in_buffer_count
int in_buffer_count
cached buffer length
Definition: swresample_internal.h:162
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:66
SwrFilterType
SwrFilterType
Resampling Filter Types.
Definition: swresample.h:173
get_delay_func
int64_t(* get_delay_func)(struct SwrContext *s, int64_t base)
Definition: swresample_internal.h:77
SwrContext::engine
int engine
Definition: swresample_internal.h:115
SwrContext::phase_shift
int phase_shift
log2 of the number of entries in the resampling polyphase filterbank
Definition: swresample_internal.h:133
SwrContext::log_level_offset
int log_level_offset
logging level offset
Definition: swresample_internal.h:97
Resampler::get_delay
get_delay_func get_delay
Definition: swresample_internal.h:87
SwrContext::log_ctx
void * log_ctx
parent logging context
Definition: swresample_internal.h:98
seed
static unsigned int seed
Definition: videogen.c:78
swresample.h
index
int index
Definition: gxfenc.c:89
c
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
Definition: undefined.txt:32
AudioData::count
int count
number of samples
Definition: swresample_internal.h:50
AudioData::ch_count
int ch_count
number of channels
Definition: swresample_internal.h:48
SwrContext::used_ch_layout
AVChannelLayout used_ch_layout
number of used input channels (mapped channel count if channel_map, otherwise in.ch_count)
Definition: swresample_internal.h:102
mix_2_1_func_type
void() mix_2_1_func_type(void *out, const void *in1, const void *in2, void *coeffp, integer index1, integer index2, integer len)
Definition: swresample_internal.h:41
SwrContext::filter_size
int filter_size
length of each FIR filter in the resampling filterbank relative to the cutoff frequency
Definition: swresample_internal.h:132
SwrContext::kaiser_beta
double kaiser_beta
swr beta value for Kaiser window (only applicable if filter_type == AV_FILTER_TYPE_KAISER)
Definition: swresample_internal.h:138
swri_rematrix_init
av_warn_unused_result int swri_rematrix_init(SwrContext *s)
Definition: rematrix.c:493
AVChannelLayout
An AVChannelLayout holds information about the channel layout of audio data.
Definition: channel_layout.h:301
SwrContext::preout
AudioData preout
pre-output audio data: used for rematrix/resample
Definition: swresample_internal.h:156
DitherContext::ns_coeffs
float ns_coeffs[NS_TAPS]
Noise shaping filter coefficients.
Definition: swresample_internal.h:64
SwrContext::flushed
int flushed
1 if data is to be flushed and no further input is expected
Definition: swresample_internal.h:164
SwrContext::exact_rational
int exact_rational
if 1 then enable non power of 2 phase_count
Definition: swresample_internal.h:135
swri_get_dither
av_warn_unused_result int swri_get_dither(SwrContext *s, void *dst, int len, unsigned seed, enum AVSampleFormat noise_fmt)
Definition: dither.c:26
SwrContext::user_int_sample_fmt
enum AVSampleFormat user_int_sample_fmt
User set internal sample format.
Definition: swresample_internal.h:127
SwrContext::native_simd_matrix
uint8_t * native_simd_matrix
Definition: swresample_internal.h:181
SwrContext::precision
double precision
soxr resampling precision (in bits)
Definition: swresample_internal.h:139
Resampler::multiple_resample
multiple_resample_func multiple_resample
Definition: swresample_internal.h:84
swri_audio_convert_init_aarch64
void swri_audio_convert_init_aarch64(struct AudioConvert *ac, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt, int channels)
Definition: audio_convert_init.c:48
SwrContext::matrix_flt
float matrix_flt[SWR_CH_MAX][SWR_CH_MAX]
single precision floating point rematrixing coefficients
Definition: swresample_internal.h:177
a
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
Definition: undefined.txt:41
SwrContext::mix_2_1_simd
mix_2_1_func_type * mix_2_1_simd
Definition: swresample_internal.h:188
Resampler
Definition: swresample_internal.h:81
av_warn_unused_result
#define av_warn_unused_result
Definition: attributes.h:64
SwrContext::rematrix
int rematrix
flag to indicate if rematrixing is needed (basically if input and output layouts mismatch)
Definition: swresample_internal.h:150
mix_1_1_func_type
void() mix_1_1_func_type(void *out, const void *in, void *coeffp, integer index, integer len)
Definition: swresample_internal.h:40
SwrContext::in_buffer
AudioData in_buffer
cached audio data (convert and resample purpose)
Definition: swresample_internal.h:158
SwrContext::min_compensation
float min_compensation
swr minimum below which no compensation will happen
Definition: swresample_internal.h:142
SwrContext::native_one
uint8_t * native_one
Definition: swresample_internal.h:179
SwrContext::soft_compensation_duration
float soft_compensation_duration
swr duration over which soft compensation is applied
Definition: swresample_internal.h:144
DitherContext::noise_pos
int noise_pos
Definition: swresample_internal.h:57
Resampler::init
resample_init_func init
Definition: swresample_internal.h:82
AVSampleFormat
AVSampleFormat
Audio sample formats.
Definition: samplefmt.h:55
SwrContext::max_soft_compensation
float max_soft_compensation
swr maximum soft compensation in seconds over soft_compensation_duration
Definition: swresample_internal.h:145
SwrContext::user_used_chlayout
AVChannelLayout user_used_chlayout
User set used channel layout.
Definition: swresample_internal.h:124
SwrContext::filter_type
int filter_type
swr resampling filter type
Definition: swresample_internal.h:137
len
int len
Definition: vorbis_enc_data.h:426
swri_noise_shaping_double
void swri_noise_shaping_double(SwrContext *s, AudioData *dsts, const AudioData *srcs, const AudioData *noises, int count)
SwrContext::mix_any_f
mix_any_func_type * mix_any_f
Definition: swresample_internal.h:190
DitherContext::method
int method
Definition: swresample_internal.h:56
Resampler::free
resample_free_func free
Definition: swresample_internal.h:83
SwrContext::rematrix_volume
float rematrix_volume
rematrixing volume coefficient
Definition: swresample_internal.h:111
SwrContext::in_sample_fmt
enum AVSampleFormat in_sample_fmt
input sample format
Definition: swresample_internal.h:99
DitherContext::temp
AudioData temp
temporary storage when writing into the input buffer isn't possible
Definition: swresample_internal.h:67
DitherContext::output_sample_bits
int output_sample_bits
the number of used output bits, needed to scale dither correctly
Definition: swresample_internal.h:68
SwrContext::resample_in_constraint
int resample_in_constraint
1 if the input end was reach before the output end, 0 otherwise
Definition: swresample_internal.h:163
swri_resampler
struct Resampler const swri_resampler
Definition: resample.c:608
AudioData::fmt
enum AVSampleFormat fmt
sample format
Definition: swresample_internal.h:52
channel_layout.h
ResampleContext::compensation_distance
int compensation_distance
Definition: resample.h:42
AudioConvert
Definition: audioconvert.h:38
DitherContext::noise
AudioData noise
noise used for dithering
Definition: swresample_internal.h:66
DitherContext::ns_taps
int ns_taps
Noise shaping dither taps.
Definition: swresample_internal.h:60
invert_initial_buffer_func
int(* invert_initial_buffer_func)(struct ResampleContext *c, AudioData *dst, const AudioData *src, int src_size, int *dst_idx, int *dst_count)
Definition: swresample_internal.h:78
SwrContext::out_convert
struct AudioConvert * out_convert
output conversion context
Definition: swresample_internal.h:171
SwrContext::rematrix_maxval
float rematrix_maxval
maximum value for rematrixing output
Definition: swresample_internal.h:112
SwrContext::firstpts_in_samples
int64_t firstpts_in_samples
swr first pts in samples
Definition: swresample_internal.h:147
SwrContext::dither
struct DitherContext dither
Definition: swresample_internal.h:130
SwrContext::out
AudioData out
converted output audio data
Definition: swresample_internal.h:157
SwrContext::in
AudioData in
input audio data
Definition: swresample_internal.h:153
SwrContext::rematrix_custom
int rematrix_custom
flag to indicate that a custom matrix has been defined
Definition: swresample_internal.h:151
src
INIT_CLIP pixel * src
Definition: h264pred_template.c:418
NS_TAPS
#define NS_TAPS
Definition: swresample_internal.h:32
SwrContext::user_dither_method
int user_dither_method
User set dither method.
Definition: swresample_internal.h:128
swri_soxr_resampler
struct Resampler const swri_soxr_resampler
Definition: soxr_resample.c:126
int32_t
int32_t
Definition: audioconvert.c:56
DitherContext::ns_scale
float ns_scale
Noise shaping dither scale.
Definition: swresample_internal.h:61
Resampler::invert_initial_buffer
invert_initial_buffer_func invert_initial_buffer
Definition: swresample_internal.h:88
DitherContext::ns_errors
float ns_errors[SWR_CH_MAX][2 *NS_TAPS]
Definition: swresample_internal.h:65
int
int
Definition: ffmpeg_filter.c:156
SWR_CH_MAX
#define SWR_CH_MAX
Definition: swresample_internal.h:28
SwrContext::silence
AudioData silence
temporary with silence
Definition: swresample_internal.h:159
DitherContext::ns_scale_1
float ns_scale_1
Noise shaping dither scale^-1.
Definition: swresample_internal.h:62
SwrContext::flags
int flags
miscellaneous flags such as SWR_FLAG_RESAMPLE
Definition: swresample_internal.h:107