27 #if defined(CONFIG_RESAMPLE_DBL)
28 #define SET_TYPE(func) func ## _dbl
32 #define OUT(d, v) d = v
33 #define DBL_TO_FELEM(d, v) d = v
34 #elif defined(CONFIG_RESAMPLE_FLT)
35 #define SET_TYPE(func) func ## _flt
39 #define OUT(d, v) d = v
40 #define DBL_TO_FELEM(d, v) d = v
41 #elif defined(CONFIG_RESAMPLE_S32)
42 #define SET_TYPE(func) func ## _s32
44 #define FELEM2 int64_t
45 #define FELEML int64_t
46 #define OUT(d, v) d = av_clipl_int32((v + (1 << 29)) >> 30)
47 #define DBL_TO_FELEM(d, v) d = av_clipl_int32(llrint(v * (1 << 30)));
49 #define SET_TYPE(func) func ## _s16
51 #define FELEM2 int32_t
52 #define FELEML int64_t
53 #define OUT(d, v) d = av_clip_int16((v + (1 << 14)) >> 15)
54 #define DBL_TO_FELEM(d, v) d = av_clip_int16(lrint(v * (1 << 15)))
61 dst[dst_index] = src[
index];
70 unsigned int sample_index =
index >>
c->phase_shift;
73 c->filter_length * (
index &
c->phase_mask);
76 for (i = 0; i <
c->filter_length; i++) {
77 val += src[sample_index + i] * (
FELEM2)filter[i];
78 v2 += src[sample_index + i] * (
FELEM2)filter[i +
c->filter_length];
82 OUT(dst[dst_index], val);
86 void *dst0,
int dst_index,
const void *
src0,
92 unsigned int sample_index =
index >>
c->phase_shift;
95 c->filter_length * (
index &
c->phase_mask);
97 for (i = 0; i <
c->filter_length; i++)
98 val += src[sample_index + i] * (
FELEM2)filter[i];
100 OUT(dst[dst_index], val);
108 for (i = 0; i < tap_count; i++) {
const char const char void * val
#define DBL_TO_FELEM(d, v)
static void SET_TYPE() set_filter(void *filter0, double *tab, int phase, int tap_count)
static void filter0(SUINT32 *dst, const int32_t *src, int32_t coeff, ptrdiff_t len)
static void filter(int16_t *output, ptrdiff_t out_stride, int16_t *low, ptrdiff_t low_stride, int16_t *high, ptrdiff_t high_stride, int len, uint8_t clip)
static void SET_TYPE() resample_nearest(void *dst0, int dst_index, const void *src0, unsigned int index)
static void SET_TYPE() resample_linear(ResampleContext *c, void *dst0, int dst_index, const void *src0, unsigned int index, int frac)
static void SET_TYPE() resample_one(ResampleContext *c, void *dst0, int dst_index, const void *src0, unsigned int index, int frac)
common internal and external API header
static const struct twinvq_data tab