Недавно мне дали какой-то код от друга, который имел в виду конвертировать, затем играть и анализировать музыку, но когда я попытался интегрировать его в свой собственный проект, он выбрасывает ошибки и отказывается проигрывать музыку.
Я отследил поток кода и нашел первую строку, где он не соответствует оригиналу.
#define AL_CALL(a) { a; checkError(__FILE__, __LINE__); }
bool PcmStream::open(string path){
printf("PcmStream %s", path.c_str());
fp = fopen(path.c_str(), "rb");
if(!fp){
printf("Audio file at path %s is missing", path.c_str());
return false;
}
fseek(fp, 0L, SEEK_END);
file_size = ftell(fp);
fseek(fp, 0L, SEEK_SET);
printf("File size %lu Bytes", file_size);
AL_CALL(alGenBuffers(BUFFERS_NUMBER, buffers));
AL_CALL(alGenSources(1, &source));
printf("\n \n First error %u \n \n", *buffers);
printf("\n \n Second error %d \n \n", source);
Это выводит:
Ошибка BytesOpenAL 40964 в /Users/justking14/projectname/template/multi-platform-cpp/proj.ios/PcmStreamer.cpp 61
Первая ошибка 2496
Вторая ошибка 0
* buffers всегда дает одно и то же число в этом проекте и другое, но постоянное число в исходном коде.
Исходный код всегда дает одно и то же число в оригинале, но в моем коде он дает что-то между 0 и 2089734272.
Оказалось, что общий SimpleAudioEngine, который я использовал, блокировал аудиопорты.