#include "avcodec.h"
#include "dsputil.h"
Go to the source code of this file.
Data Structures | |
struct | AVResampleContext |
Defines | |
#define | FILTER_SHIFT 15 |
#define | FELEM int16_t |
#define | FELEM2 int32_t |
#define | FELEML int64_t |
#define | FELEM_MAX INT16_MAX |
#define | FELEM_MIN INT16_MIN |
#define | WINDOW_TYPE 9 |
Functions | |
static double | bessel (double x) |
0th order modified bessel function of the first kind. | |
static int | build_filter (FELEM *filter, double factor, int tap_count, int phase_count, int scale, int type) |
builds a polyphase filterbank. | |
AVResampleContext * | av_resample_init (int out_rate, int in_rate, int filter_size, int phase_shift, int linear, double cutoff) |
Initialize an audio resampler. | |
void | av_resample_close (AVResampleContext *c) |
void | av_resample_compensate (AVResampleContext *c, int sample_delta, int compensation_distance) |
Compensate samplerate/timestamp drift. | |
int | av_resample (AVResampleContext *c, short *dst, short *src, int *consumed, int src_size, int dst_size, int update_ctx) |
Resample an array of samples using a previously configured context. |
Definition in file resample2.c.
#define FELEM int16_t |
#define FELEM2 int32_t |
#define FELEM_MAX INT16_MAX |
#define FELEM_MIN INT16_MIN |
#define FELEML int64_t |
#define FILTER_SHIFT 15 |
Definition at line 32 of file resample2.c.
Referenced by av_resample(), av_resample_init(), and build_filter().
#define WINDOW_TYPE 9 |
int av_resample | ( | struct AVResampleContext * | c, | |
short * | dst, | |||
short * | src, | |||
int * | consumed, | |||
int | src_size, | |||
int | dst_size, | |||
int | update_ctx | |||
) |
Resample an array of samples using a previously configured context.
src | an array of unconsumed samples | |
consumed | the number of samples of src which have been consumed are returned here | |
src_size | the number of unconsumed samples available | |
dst_size | the amount of space in samples available in dst | |
update_ctx | If this is 0 then the context will not be modified, that way several channels can be resampled with the same context. |
Definition at line 234 of file resample2.c.
Referenced by audio_resample().
void av_resample_close | ( | AVResampleContext * | c | ) |
void av_resample_compensate | ( | struct AVResampleContext * | c, | |
int | sample_delta, | |||
int | compensation_distance | |||
) |
Compensate samplerate/timestamp drift.
The compensation is done by changing the resampler parameters, so no audible clicks or similar distortions occur
compensation_distance | distance in output samples over which the compensation should be performed | |
sample_delta | number of output samples which should be output less |
note, due to rounding the actual compensation might be slightly different, especially if the compensation_distance is large and the in_rate used during init is small
Definition at line 228 of file resample2.c.
Referenced by av_resample(), and do_audio_out().
AVResampleContext* av_resample_init | ( | int | out_rate, | |
int | in_rate, | |||
int | filter_length, | |||
int | log2_phase_count, | |||
int | linear, | |||
double | cutoff | |||
) | [read] |
Initialize an audio resampler.
Note, if either rate is not an integer then simply scale both rates up so they are.
filter_length | length of each FIR filter in the filterbank relative to the cutoff freq | |
log2_phase_count | log2 of the number of entries in the polyphase filterbank | |
linear | If 1 then the used FIR filter will be linearly interpolated between the 2 closest, if 0 the closest will be used | |
cutoff | cutoff frequency, 1.0 corresponds to half the output sampling rate |
Definition at line 189 of file resample2.c.
Referenced by av_audio_resample_init().
static double bessel | ( | double | x | ) | [static] |
0th order modified bessel function of the first kind.
Definition at line 77 of file resample2.c.
Referenced by build_filter(), and ff_kbd_window_init().
static int build_filter | ( | FELEM * | filter, | |
double | factor, | |||
int | tap_count, | |||
int | phase_count, | |||
int | scale, | |||
int | type | |||
) | [static] |
builds a polyphase filterbank.
factor | resampling factor | |
scale | wanted sum of coefficients for each filter | |
type | 0->cubic, 1->blackman nuttall windowed sinc, 2..16->kaiser windowed sinc beta=2..16 |
Definition at line 99 of file resample2.c.
Referenced by av_resample_init().