29 int firorder,
int iirorder,
31 int blocksize,
int32_t *sample_buffer);
35 const int8_t *noise_buffer,
40 int matrix_noise_shift,
41 int access_unit_size_pow2,
44 #define DECLARE_PACK(order,channels,shift) \
45 int32_t ff_mlp_pack_output_##order##order_##channels##ch_##shift##shift_armv6(int32_t, uint16_t, int32_t (*)[], void *, uint8_t*, int8_t *, uint8_t, int);
46 #define ENUMERATE_PACK(order,channels,shift) \
47 ff_mlp_pack_output_##order##order_##channels##ch_##shift##shift_armv6,
48 #define PACK_CHANNELS(macro,order,channels) \
49 macro(order,channels,0) \
50 macro(order,channels,1) \
51 macro(order,channels,2) \
52 macro(order,channels,3) \
53 macro(order,channels,4) \
54 macro(order,channels,5) \
55 macro(order,channels,mixed)
56 #define PACK_ORDER(macro,order) \
57 PACK_CHANNELS(macro,order,2) \
58 PACK_CHANNELS(macro,order,6) \
59 PACK_CHANNELS(macro,order,8)
60 #define PACK_ALL(macro) \
61 PACK_ORDER(macro,outof) \
65 #define ff_mlp_pack_output_outoforder_2ch_mixedshift_armv6 0
66 #define ff_mlp_pack_output_outoforder_6ch_mixedshift_armv6 0
67 #define ff_mlp_pack_output_outoforder_8ch_mixedshift_armv6 0
69 #define ff_mlp_pack_output_outoforder_2ch_0shift_armv6 0
70 #define ff_mlp_pack_output_outoforder_2ch_1shift_armv6 0
71 #define ff_mlp_pack_output_outoforder_2ch_2shift_armv6 0
72 #define ff_mlp_pack_output_outoforder_2ch_3shift_armv6 0
73 #define ff_mlp_pack_output_outoforder_2ch_4shift_armv6 0
74 #define ff_mlp_pack_output_outoforder_2ch_5shift_armv6 0
75 #define ff_mlp_pack_output_outoforder_6ch_0shift_armv6 0
76 #define ff_mlp_pack_output_outoforder_6ch_1shift_armv6 0
77 #define ff_mlp_pack_output_outoforder_6ch_2shift_armv6 0
78 #define ff_mlp_pack_output_outoforder_6ch_3shift_armv6 0
79 #define ff_mlp_pack_output_outoforder_6ch_4shift_armv6 0
80 #define ff_mlp_pack_output_outoforder_6ch_5shift_armv6 0
81 #define ff_mlp_pack_output_outoforder_8ch_0shift_armv6 0
82 #define ff_mlp_pack_output_outoforder_8ch_1shift_armv6 0
83 #define ff_mlp_pack_output_outoforder_8ch_2shift_armv6 0
84 #define ff_mlp_pack_output_outoforder_8ch_3shift_armv6 0
85 #define ff_mlp_pack_output_outoforder_8ch_4shift_armv6 0
86 #define ff_mlp_pack_output_outoforder_8ch_5shift_armv6 0
95 int shift = output_shift[0] < 0 || output_shift[0] > 5 ? 6 : output_shift[0];
105 switch (max_matrix_channel) {
119 for (i = 0; i <= max_matrix_channel; i++) {
120 if (shift != 6 && output_shift[i] != shift)
122 if (ch_assign[i] != i)
129 if (shift == 6 && !inorder)
133 return routine[(inorder*3+ch_index)*7+shift];
static int shift(int a, int b)
void(* mlp_rematrix_channel)(int32_t *samples, const int32_t *coeffs, const uint8_t *bypassed_lsbs, const int8_t *noise_buffer, int index, unsigned int dest_ch, uint16_t blockpos, unsigned int maxchan, int matrix_noise_shift, int access_unit_size_pow2, int32_t mask)
#define have_armv6(flags)
#define ENUMERATE_PACK(order, channels, shift)
static atomic_int cpu_flags
Macro definitions for various function/variable attributes.
#define have_armv5te(flags)
int32_t ff_mlp_pack_output(int32_t lossless_check_data, uint16_t blockpos, int32_t(*sample_buffer)[MAX_CHANNELS], void *data, uint8_t *ch_assign, int8_t *output_shift, uint8_t max_matrix_channel, int is32)
static const uint16_t mask[17]
static int32_t(*)(int32_t, uint16_t, int32_t(*)[], void *, uint8_t *, int8_t *, uint8_t, int) mlp_select_pack_output_armv6(uint8_t *ch_assign, int8_t *output_shift, uint8_t max_matrix_channel, int is32)
int32_t(*(* mlp_select_pack_output)(uint8_t *ch_assign, int8_t *output_shift, uint8_t max_matrix_channel, int is32))(int32_t
#define DECLARE_PACK(order, channels, shift)
av_cold void ff_mlpdsp_init_arm(MLPDSPContext *c)
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
void ff_mlp_rematrix_channel_arm(int32_t *samples, const int32_t *coeffs, const uint8_t *bypassed_lsbs, const int8_t *noise_buffer, int index, unsigned int dest_ch, uint16_t blockpos, unsigned int maxchan, int matrix_noise_shift, int access_unit_size_pow2, int32_t mask)
void ff_mlp_filter_channel_arm(int32_t *state, const int32_t *coeff, int firorder, int iirorder, unsigned int filter_shift, int32_t mask, int blocksize, int32_t *sample_buffer)
static const int16_t coeffs[]
static const double coeff[2][5]
void(* mlp_filter_channel)(int32_t *state, const int32_t *coeff, int firorder, int iirorder, unsigned int filter_shift, int32_t mask, int blocksize, int32_t *sample_buffer)