... | ... |
@@ -62,48 +62,45 @@ static av_cold snd_pcm_format_t codec_id_to_pcm_format(int codec_id) |
62 | 62 |
} |
63 | 63 |
} |
64 | 64 |
|
65 |
-#define REORDER_OUT_50(NAME, TYPE) \ |
|
66 |
-static void alsa_reorder_ ## NAME ## _out_50(const void *in_v, void *out_v, int n) \ |
|
67 |
-{ \ |
|
68 |
- const TYPE *in = in_v; \ |
|
69 |
- TYPE *out = out_v; \ |
|
70 |
-\ |
|
71 |
- while (n-- > 0) { \ |
|
65 |
+#define MAKE_REORDER_FUNC(NAME, TYPE, CHANNELS, LAYOUT, MAP) \ |
|
66 |
+static void alsa_reorder_ ## NAME ## _ ## LAYOUT(const void *in_v, \ |
|
67 |
+ void *out_v, \ |
|
68 |
+ int n) \ |
|
69 |
+{ \ |
|
70 |
+ const TYPE *in = in_v; \ |
|
71 |
+ TYPE *out = out_v; \ |
|
72 |
+ \ |
|
73 |
+ while (n-- > 0) { \ |
|
74 |
+ MAP \ |
|
75 |
+ in += CHANNELS; \ |
|
76 |
+ out += CHANNELS; \ |
|
77 |
+ } \ |
|
78 |
+} |
|
79 |
+ |
|
80 |
+#define MAKE_REORDER_FUNCS(CHANNELS, LAYOUT, MAP) \ |
|
81 |
+ MAKE_REORDER_FUNC(int8, int8_t, CHANNELS, LAYOUT, MAP) \ |
|
82 |
+ MAKE_REORDER_FUNC(int16, int16_t, CHANNELS, LAYOUT, MAP) \ |
|
83 |
+ MAKE_REORDER_FUNC(int32, int32_t, CHANNELS, LAYOUT, MAP) \ |
|
84 |
+ MAKE_REORDER_FUNC(f32, float, CHANNELS, LAYOUT, MAP) |
|
85 |
+ |
|
86 |
+MAKE_REORDER_FUNCS(5, out_50, \ |
|
72 | 87 |
out[0] = in[0]; \ |
73 | 88 |
out[1] = in[1]; \ |
74 | 89 |
out[2] = in[3]; \ |
75 | 90 |
out[3] = in[4]; \ |
76 | 91 |
out[4] = in[2]; \ |
77 |
- in += 5; \ |
|
78 |
- out += 5; \ |
|
79 |
- } \ |
|
80 |
-} |
|
92 |
+ ); |
|
81 | 93 |
|
82 |
-#define REORDER_OUT_51(NAME, TYPE) \ |
|
83 |
-static void alsa_reorder_ ## NAME ## _out_51(const void *in_v, void *out_v, int n) \ |
|
84 |
-{ \ |
|
85 |
- const TYPE *in = in_v; \ |
|
86 |
- TYPE *out = out_v; \ |
|
87 |
-\ |
|
88 |
- while (n-- > 0) { \ |
|
94 |
+MAKE_REORDER_FUNCS(6, out_51, \ |
|
89 | 95 |
out[0] = in[0]; \ |
90 | 96 |
out[1] = in[1]; \ |
91 | 97 |
out[2] = in[4]; \ |
92 | 98 |
out[3] = in[5]; \ |
93 | 99 |
out[4] = in[2]; \ |
94 | 100 |
out[5] = in[3]; \ |
95 |
- in += 6; \ |
|
96 |
- out += 6; \ |
|
97 |
- } \ |
|
98 |
-} |
|
101 |
+ ); |
|
99 | 102 |
|
100 |
-#define REORDER_OUT_71(NAME, TYPE) \ |
|
101 |
-static void alsa_reorder_ ## NAME ## _out_71(const void *in_v, void *out_v, int n) \ |
|
102 |
-{ \ |
|
103 |
- const TYPE *in = in_v; \ |
|
104 |
- TYPE *out = out_v; \ |
|
105 |
-\ |
|
106 |
- while (n-- > 0) { \ |
|
103 |
+MAKE_REORDER_FUNCS(8, out_71, \ |
|
107 | 104 |
out[0] = in[0]; \ |
108 | 105 |
out[1] = in[1]; \ |
109 | 106 |
out[2] = in[4]; \ |
... | ... |
@@ -112,23 +109,7 @@ static void alsa_reorder_ ## NAME ## _out_71(const void *in_v, void *out_v, int |
112 | 112 |
out[5] = in[3]; \ |
113 | 113 |
out[6] = in[6]; \ |
114 | 114 |
out[7] = in[7]; \ |
115 |
- in += 8; \ |
|
116 |
- out += 8; \ |
|
117 |
- } \ |
|
118 |
-} |
|
119 |
- |
|
120 |
-REORDER_OUT_50(int8, int8_t) |
|
121 |
-REORDER_OUT_51(int8, int8_t) |
|
122 |
-REORDER_OUT_71(int8, int8_t) |
|
123 |
-REORDER_OUT_50(int16, int16_t) |
|
124 |
-REORDER_OUT_51(int16, int16_t) |
|
125 |
-REORDER_OUT_71(int16, int16_t) |
|
126 |
-REORDER_OUT_50(int32, int32_t) |
|
127 |
-REORDER_OUT_51(int32, int32_t) |
|
128 |
-REORDER_OUT_71(int32, int32_t) |
|
129 |
-REORDER_OUT_50(f32, float) |
|
130 |
-REORDER_OUT_51(f32, float) |
|
131 |
-REORDER_OUT_71(f32, float) |
|
115 |
+ ); |
|
132 | 116 |
|
133 | 117 |
#define FORMAT_I8 0 |
134 | 118 |
#define FORMAT_I16 1 |