Mercurial > audlegacy-plugins
comparison src/CoreAudio/audio.c @ 62:4a352dd2a91c trunk
[svn] - be a little smarter about this
author | nenolod |
---|---|
date | Sat, 30 Sep 2006 21:40:46 -0700 |
parents | a69b14abbc65 |
children | 023b3e4147c0 |
comparison
equal
deleted
inserted
replaced
61:a69b14abbc65 | 62:4a352dd2a91c |
---|---|
91 //printf("osx_calc_bitrate(): %d\n",bitrate); | 91 //printf("osx_calc_bitrate(): %d\n",bitrate); |
92 | 92 |
93 return bitrate; | 93 return bitrate; |
94 } | 94 } |
95 | 95 |
96 | |
97 static int osx_get_format(AFormat fmt) | 96 static int osx_get_format(AFormat fmt) |
98 { | 97 { |
99 int format = 0; | 98 int format = 0; |
100 | 99 |
101 switch (fmt) | 100 switch (fmt) |
102 { | 101 { |
103 case FMT_U16_LE: | |
104 #ifdef WORDS_BIGENDIAN | |
105 format = FMT_U16_BE; | |
106 #else | |
107 format = FMT_U16_LE; | |
108 #endif | |
109 break; | |
110 case FMT_U16_BE: | |
111 #ifdef WORDS_BIGENDIAN | |
112 format = FMT_U16_LE; | |
113 #else | |
114 format = FMT_U16_BE; | |
115 #endif | |
116 break; | |
117 case FMT_S16_LE: | |
118 #ifdef WORDS_BIGENDIAN | |
119 format = FMT_S16_BE; | |
120 #else | |
121 format = FMT_S16_LE; | |
122 #endif | |
123 break; | |
124 case FMT_S16_BE: | |
125 #ifdef WORDS_BIGENDIAN | |
126 format = FMT_S16_LE; | |
127 #else | |
128 format = FMT_S16_BE; | |
129 #endif | |
130 break; | |
131 case FMT_U16_NE: | 102 case FMT_U16_NE: |
132 #ifdef WORDS_BIGENDIAN | 103 #ifdef WORDS_BIGENDIAN |
133 format = FMT_U16_BE; | 104 format = FMT_U16_BE; |
134 #else | 105 #else |
135 format = FMT_U16_LE; | 106 format = FMT_U16_LE; |
144 break; | 115 break; |
145 default: | 116 default: |
146 format = fmt; | 117 format = fmt; |
147 break; | 118 break; |
148 } | 119 } |
120 | |
121 printf("in: %d, out: %d\n", fmt, format); | |
122 | |
123 return format; | |
124 } | |
125 | |
126 static int osx_get_conv_format(AFormat fmt) | |
127 { | |
128 int format = 0; | |
129 | |
130 switch (fmt) | |
131 { | |
132 case FMT_U16_LE: | |
133 #ifdef WORDS_BIGENDIAN | |
134 format = FMT_U16_BE; | |
135 #else | |
136 format = FMT_U16_LE; | |
137 #endif | |
138 break; | |
139 case FMT_U16_BE: | |
140 #ifdef WORDS_BIGENDIAN | |
141 format = FMT_U16_LE; | |
142 #else | |
143 format = FMT_U16_BE; | |
144 #endif | |
145 break; | |
146 case FMT_S16_LE: | |
147 #ifdef WORDS_BIGENDIAN | |
148 format = FMT_S16_BE; | |
149 #else | |
150 format = FMT_S16_LE; | |
151 #endif | |
152 break; | |
153 case FMT_S16_BE: | |
154 #ifdef WORDS_BIGENDIAN | |
155 format = FMT_S16_LE; | |
156 #else | |
157 format = FMT_S16_BE; | |
158 #endif | |
159 break; | |
160 case FMT_U16_NE: | |
161 #ifdef WORDS_BIGENDIAN | |
162 format = FMT_U16_BE; | |
163 #else | |
164 format = FMT_U16_LE; | |
165 #endif | |
166 break; | |
167 case FMT_S16_NE: | |
168 #ifdef WORDS_BIGENDIAN | |
169 format = FMT_S16_BE; | |
170 #else | |
171 format = FMT_S16_LE; | |
172 #endif | |
173 break; | |
174 default: | |
175 format = fmt; | |
176 break; | |
177 } | |
178 | |
179 printf("in: %d, out: %d\n", fmt, format); | |
149 | 180 |
150 return format; | 181 return format; |
151 } | 182 } |
152 | 183 |
153 | 184 |
253 output.frequency = rate; | 284 output.frequency = rate; |
254 output.channels = nch; | 285 output.channels = nch; |
255 | 286 |
256 osx_set_audio_params(); | 287 osx_set_audio_params(); |
257 | 288 |
258 osx_convert_func = osx_get_convert_func(fmt, output.format.osx); | 289 if (fmt != osx_get_conv_format(fmt)) |
290 osx_convert_func = osx_get_convert_func(fmt, osx_get_conv_format(fmt)); | |
291 else | |
292 osx_convert_func = NULL; | |
259 | 293 |
260 output.bps = osx_calc_bitrate(output.format.osx, output.frequency,output.channels); | 294 output.bps = osx_calc_bitrate(output.format.osx, output.frequency,output.channels); |
261 } | 295 } |
262 | 296 |
263 | 297 |