29 int firorder,
int iirorder,
31 int blocksize,
int32_t *sample_buffer);
34 const uint8_t *bypassed_lsbs,
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
91 uint8_t max_matrix_channel,
92 int is32))(
int32_t, uint16_t,
int32_t (*)[],
void *, uint8_t*, int8_t *, uint8_t, int)
95 int shift = output_shift[0] < 0 || output_shift[0] > 5 ? 6 : output_shift[0];
97 static int32_t (*
const routine[2*3*7])(
int32_t, uint16_t,
int32_t (*)[],
void *, uint8_t*, int8_t *, uint8_t, int) = {
105 switch (max_matrix_channel) {
119 for (
i = 0;
i <= max_matrix_channel;
i++) {
122 if (ch_assign[
i] !=
i)
129 if (
shift == 6 && !inorder)
133 return routine[(inorder*3+ch_index)*7+
shift];
#define i(width, name, range_min, range_max)
static struct @346255127015250356166251341105367306144006377143 state
static int shift(int a, int b)
#define have_armv5te(flags)
#define have_armv6(flags)
Macro definitions for various function/variable attributes.
static atomic_int cpu_flags
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
static const uint16_t mask[17]
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)
#define DECLARE_PACK(order, channels, shift)
#define ENUMERATE_PACK(order, channels, shift)
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 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)
av_cold void ff_mlpdsp_init_arm(MLPDSPContext *c)
static const double coeff[2][5]