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