- OS: BeagleBone Black Rev A5B で動作する Angstrom Linux 2012.12、カーネル 3.8.13。
- SDL: libsdl 1.2.0、sdl-config 1.2.15
SDL を使用して BeagleBone Black でトーン ジェネレータを作成しようとしています。dummy
ただ、SDLオーディオはドライバを使わないと動かないようです。次のコードを使用して、SDL_AudioOpen の問題を診断しようとしています。
#include <SDL/SDL.h>
#include <SDL/SDL_audio.h>
#include <iostream>
void audio_callback (void*, Uint8*, int) { }
void ReportError (const char *where, int status) {
std::cerr << "SDL Error: " << where << " (" << status << ") "
<< SDL_GetError () << std::endl;
exit (1);
}
void ReportEnv (const char *var) {
const char *driver = getenv (var);
if (NULL == driver)
std::cerr << var << " is null" << std::endl;
else
std::cerr << var << ": " << driver << std::endl;
}
int main (int argc, char **argv)
{ ReportEnv ("SDL_AUDIODRIVER");
int ret = SDL_Init (SDL_INIT_AUDIO);
if (0 != ret)
ReportError ("SDL_Init", ret);
SDL_AudioSpec ds, obtained;
ds . freq = 44100;
ds . format = AUDIO_S16;
ds . channels = 1;
ds . samples = 1024;
ds . callback = audio_callback;
ds . userdata = NULL;
ret = SDL_OpenAudio (&ds, &obtained);
if (0 != ret)
ReportError ("SDL_OpenAudio", ret);
std::cout << "Success" << std::endl;
return 0;
}
次の結果が得られます。
% SDL_AUDIODRIVER=dummy ./simple
SDL_AUDIODRIVER: dummy
Success
% SDL_AUDIODRIVER=alsa ./simple
SDL_AUDIODRIVER: alsa
SDL Error: SDL_OpenAudio (-1) No available audio device
% SDL_AUDIODRIVER=disk ./simple
SDL_AUDIODRIVER: disk
SDL Error: SDL_OpenAudio (-1) No available audio device
%
aplay
動作するため、ALSA は少なくとも部分的に正しく構成されているようです。
私は何が欠けていますか?disk
ドライバーはあらゆる状況下で機能する必要があるようです。