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];
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)
static int shift(int a, int b)
int32_t(*(* mlp_select_pack_output)(uint8_t *ch_assign, int8_t *output_shift, uint8_t max_matrix_channel, int is32))(int32_t
#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)
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)
#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]