a & 0xFF;
}
void CreateSamplingRateMenu(CAudioCapabilities* pNewAudioCaps)
{
// remember current sampling rate
u_int32_t oldSamplingRate = 0;
if (samplingRateValues) {
oldSamplingRate = samplingRateValues[samplingRateIndex];
}
// invalidate index, will fix up below
samplingRateIndex = 255;
u_int8_t maxSamplingRateNumber;
const u_int32_t* samplingRates = NULL;
if (pNewAudioCaps) {
maxSamplingRateNumber = pNewAudioCaps->m_numSamplingRates;
samplingRates = &pNewAudioCaps->m_samplingRates[0];
} else {
maxSamplingRateNumber =
sizeof(samplingRateAllValues) / sizeof(u_int32_t);
samplingRates = &samplingRateAllValues[0];
}
// create new menu item names and values
char** newSamplingRateNames =
(char**)malloc(sizeof(char*) * maxSamplingRateNumber);
u_int32_t* newSamplingRateValues =
(u_int32_t*)malloc(sizeof(u_int32_t) * maxSamplingRateNumber);
u_int8_t i;
u_int8_t newSamplingRateNumber = 0;
for (i = 0; i < maxSamplingRateNumber; i++) {
// MP3 can't use all the possible sampling rates
if (encodingIndex == 0) {
// skip the ones it can't handle
// MP3 can't handle anything less than 8000
// LAME MP3 encoder has additional lower bound at 16000
if (samplingRates[i] < 16000 || samplingRates[i] > 48000) {
continue;
}
}
char buf[64];
snprintf(buf, sizeof(buf), "%u", samplingRates[i]);
newSamplingRateNames[newSamplingRateNumber] =
stralloc(buf);
上一篇:
AudioSource.cpp
下一篇:
三天内完成本科毕业论文初稿!参考资料