1 static inline int16_t convert (int32_t i
)
5 else if (i
< 0x43bf8000)
11 static int a52_resample_MONO_to_5_C(float * _f
, int16_t * s16
){
13 int32_t * f
= (int32_t *) _f
;
14 for (i
= 0; i
< 256; i
++) {
15 s16
[5*i
] = s16
[5*i
+1] = s16
[5*i
+2] = s16
[5*i
+3] = 0;
16 s16
[5*i
+4] = convert (f
[i
]);
21 static int a52_resample_MONO_to_1_C(float * _f
, int16_t * s16
){
23 int32_t * f
= (int32_t *) _f
;
24 for (i
= 0; i
< 256; i
++) {
25 s16
[i
] = convert (f
[i
]);
30 static int a52_resample_STEREO_to_2_C(float * _f
, int16_t * s16
){
32 int32_t * f
= (int32_t *) _f
;
33 for (i
= 0; i
< 256; i
++) {
34 s16
[2*i
] = convert (f
[i
]);
35 s16
[2*i
+1] = convert (f
[i
+256]);
40 static int a52_resample_3F_to_5_C(float * _f
, int16_t * s16
){
42 int32_t * f
= (int32_t *) _f
;
43 for (i
= 0; i
< 256; i
++) {
44 s16
[5*i
] = convert (f
[i
]);
45 s16
[5*i
+1] = convert (f
[i
+512]);
46 s16
[5*i
+2] = s16
[5*i
+3] = 0;
47 s16
[5*i
+4] = convert (f
[i
+256]);
52 static int a52_resample_2F_2R_to_4_C(float * _f
, int16_t * s16
){
54 int32_t * f
= (int32_t *) _f
;
55 for (i
= 0; i
< 256; i
++) {
56 s16
[4*i
] = convert (f
[i
]);
57 s16
[4*i
+1] = convert (f
[i
+256]);
58 s16
[4*i
+2] = convert (f
[i
+512]);
59 s16
[4*i
+3] = convert (f
[i
+768]);
64 static int a52_resample_3F_2R_to_5_C(float * _f
, int16_t * s16
){
66 int32_t * f
= (int32_t *) _f
;
67 for (i
= 0; i
< 256; i
++) {
68 s16
[5*i
] = convert (f
[i
]);
69 s16
[5*i
+1] = convert (f
[i
+512]);
70 s16
[5*i
+2] = convert (f
[i
+768]);
71 s16
[5*i
+3] = convert (f
[i
+1024]);
72 s16
[5*i
+4] = convert (f
[i
+256]);
77 static int a52_resample_MONO_LFE_to_6_C(float * _f
, int16_t * s16
){
79 int32_t * f
= (int32_t *) _f
;
80 for (i
= 0; i
< 256; i
++) {
81 s16
[6*i
] = s16
[6*i
+1] = s16
[6*i
+2] = s16
[6*i
+3] = 0;
82 s16
[6*i
+4] = convert (f
[i
+256]);
83 s16
[6*i
+5] = convert (f
[i
]);
88 static int a52_resample_STEREO_LFE_to_6_C(float * _f
, int16_t * s16
){
90 int32_t * f
= (int32_t *) _f
;
91 for (i
= 0; i
< 256; i
++) {
92 s16
[6*i
] = convert (f
[i
+256]);
93 s16
[6*i
+1] = convert (f
[i
+512]);
94 s16
[6*i
+2] = s16
[6*i
+3] = s16
[6*i
+4] = 0;
95 s16
[6*i
+5] = convert (f
[i
]);
100 static int a52_resample_3F_LFE_to_6_C(float * _f
, int16_t * s16
){
102 int32_t * f
= (int32_t *) _f
;
103 for (i
= 0; i
< 256; i
++) {
104 s16
[6*i
] = convert (f
[i
+256]);
105 s16
[6*i
+1] = convert (f
[i
+768]);
106 s16
[6*i
+2] = s16
[6*i
+3] = 0;
107 s16
[6*i
+4] = convert (f
[i
+512]);
108 s16
[6*i
+5] = convert (f
[i
]);
113 static int a52_resample_2F_2R_LFE_to_6_C(float * _f
, int16_t * s16
){
115 int32_t * f
= (int32_t *) _f
;
116 for (i
= 0; i
< 256; i
++) {
117 s16
[6*i
] = convert (f
[i
+256]);
118 s16
[6*i
+1] = convert (f
[i
+512]);
119 s16
[6*i
+2] = convert (f
[i
+768]);
120 s16
[6*i
+3] = convert (f
[i
+1024]);
122 s16
[6*i
+5] = convert (f
[i
]);
127 static int a52_resample_3F_2R_LFE_to_6_C(float * _f
, int16_t * s16
){
129 int32_t * f
= (int32_t *) _f
;
130 for (i
= 0; i
< 256; i
++) {
131 s16
[6*i
] = convert (f
[i
+256]);
132 s16
[6*i
+1] = convert (f
[i
+768]);
133 s16
[6*i
+2] = convert (f
[i
+1024]);
134 s16
[6*i
+3] = convert (f
[i
+1280]);
135 s16
[6*i
+4] = convert (f
[i
+512]);
136 s16
[6*i
+5] = convert (f
[i
]);
142 static void* a52_resample_C(int flags
, int ch
){
145 if(ch
==5) return a52_resample_MONO_to_5_C
;
146 if(ch
==1) return a52_resample_MONO_to_1_C
;
151 if(ch
==2) return a52_resample_STEREO_to_2_C
;
154 if(ch
==5) return a52_resample_3F_to_5_C
;
157 if(ch
==4) return a52_resample_2F_2R_to_4_C
;
160 if(ch
==5) return a52_resample_3F_2R_to_5_C
;
162 case A52_MONO
| A52_LFE
:
163 if(ch
==6) return a52_resample_MONO_LFE_to_6_C
;
165 case A52_CHANNEL
| A52_LFE
:
166 case A52_STEREO
| A52_LFE
:
167 case A52_DOLBY
| A52_LFE
:
168 if(ch
==6) return a52_resample_STEREO_LFE_to_6_C
;
170 case A52_3F
| A52_LFE
:
171 if(ch
==6) return a52_resample_3F_LFE_to_6_C
;
173 case A52_2F2R
| A52_LFE
:
174 if(ch
==6) return a52_resample_2F_2R_LFE_to_6_C
;
176 case A52_3F2R
| A52_LFE
:
177 if(ch
==6) return a52_resample_3F_2R_LFE_to_6_C
;