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, int 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