다음과 같이 SDL 코드 스 니펫이 있습니다.요구 사항에 따라 SDL 오디오 채널이 작동하지 않습니다.
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 채널을 가지고 있는지 확인하는 방법 (btw, 요청한 것을 얻을 수 있다고 보장하지 않으므로 '원하는'과 '획득 한'이유가 무엇입니까?) '획득 한 '구조 필드를 점검해야합니다. 또는 귀하의 질문은 왜 당신이 모노 장치를 열어 두 스피커에서 소리를 듣고있어? – keltar