У нас есть фрагмент кода SDL, как показано ниже.SDL Audio Channel не работает согласно требованию
SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO);
atexit(SDL_Quit);
g_pDisplaySurface =
SDL_SetVideoMode(SCREEN_WIDTH,SCREEN_HEIGHT,0,SDL_ANYFORMAT);
g_SpecDesired=new SDL_AudioSpec;
g_SpecObtained=new SDL_AudioSpec;
g_SpecDesired->freq=22050;
g_SpecDesired->format=AUDIO_U8;
g_SpecDesired->channels=1;
g_SpecDesired->samples=8192;
g_SpecDesired->callback=FOSDLAudioCallback;
g_SpecDesired->userdata=NULL;
Функция обратного вызова
void FOSDLAudioCallback(void* userdata,Uint8* buffer,int len)
{
int index;
printf("LEn is :%d",&len);
for(index=0;index<len;index++)
{
buffer[index]=rand()%256;
}
}
Проблема здесь даже мы меняем канал на 1 или 2 она по-прежнему играть на обоих стерео канала? Почему он ведет себя таким образом?
Где ваша SDL_OpenAudioDevice()? Кроме того, почему использование новых в структурах AudioSpec? Вы нужны им один раз, лучше разместить на стеке. – keltar
@keltar Я обновил функцию обратного вызова. Я делаю очень грубый тест без SDL_OpenAudioDevice(). Более поздние примеры я использую их. – user2711681
Я не понимаю. У вас нет OpenAudioDevice()? Тогда у вас нет звука. Как вы подтверждаете, что у вас все еще есть 2 канала (кстати, не гарантировано, что вы получите то, что вы просили, поэтому у вас есть «желаемые» и «полученные»)? Вы должны проверить поля «полученные». Или ваш вопрос в том, почему вы слышите звук от двух громкоговорителей, когда вы открываете моно-устройство? – keltar