49 #define BUFFER_SIZE 8192
86 player =
malloc(
sizeof(*player));
89 memset(player, 0,
sizeof(*player));
117 fprintf(stderr,
"Failed to delete object IDs\n");
119 memset(player, 0,
sizeof(*player));
135 fprintf(stderr,
"Could not open audio in %s\n", filename);
140 if(
getAVAudioInfo(player->stream, &player->rate, &player->channels,
143 fprintf(stderr,
"Error getting audio info for %s\n", filename);
148 if(player->format == 0)
150 fprintf(stderr,
"Unsupported format (%s, %s) for %s\n",
159 player->data =
malloc(player->datasize);
160 if(player->data ==
NULL)
162 fprintf(stderr,
"Error allocating %d bytes\n", player->datasize);
171 player->stream =
NULL;
172 player->datasize = 0;
182 player->stream =
NULL;
186 player->datasize = 0;
208 player->channels, player->type, player->data);
212 fprintf(stderr,
"Error buffering for playback\n");
221 fprintf(stderr,
"Error starting playback\n");
230 ALint processed, state;
237 fprintf(stderr,
"Error checking source state\n");
257 player->channels, player->type, player->data);
262 fprintf(stderr,
"Error buffering data\n");
280 fprintf(stderr,
"Error restarting playback\n");
289 int main(
int argc,
char **argv)
297 fprintf(stderr,
"Usage: %s <filenames...>\n", argv[0]);
306 printf(
"AL_SOFT_buffer_samples supported!\n");
311 printf(
"AL_SOFT_buffer_samples not supported\n");
316 for(i = 1;i < argc;i++)
321 printf(
"Playing %s (%s, %s, %dhz)\n", argv[i],
AL_API void AL_APIENTRY alSourcePlay(ALuint source)
AL_API void AL_APIENTRY alSource3i(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3)
LPALBUFFERSAMPLESSOFT alBufferSamplesSOFT
AL_API void *AL_APIENTRY alGetProcAddress(const ALchar *fname)
static int StartPlayer(StreamPlayer *player)
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum type
int main(int argc, char **argv)
FilePtr openAVFile(const char *fname)
static StreamPlayer * NewPlayer(void)
AL_API ALenum AL_APIENTRY alGetError(void)
AL_API void AL_APIENTRY alGetSourcei(ALuint source, ALenum param, ALint *value)
static void ClosePlayerFile(StreamPlayer *player)
struct StreamPlayer StreamPlayer
void AL_APIENTRY wrap_BufferSamples(ALuint buffer, ALuint samplerate, ALenum internalformat, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data)
ALsizei FramesToBytes(ALsizei size, ALenum channels, ALenum type)
AL_API void AL_APIENTRY alGenSources(ALsizei n, ALuint *sources)
size_t readAVAudioData(StreamPtr stream, void *data, size_t length)
StreamPtr getAVAudioStream(FilePtr file, int streamnum)
ALboolean(AL_APIENTRY * LPALISBUFFERFORMATSUPPORTEDSOFT)(ALenum)
const char * TypeName(ALenum type)
void(AL_APIENTRY * LPALBUFFERSAMPLESSOFT)(ALuint, ALuint, ALenum, ALsizei, ALenum, ALenum, const ALvoid *)
#define AL_ROLLOFF_FACTOR
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
AL_API void AL_APIENTRY alSourceRewind(ALuint source)
struct MyStream * StreamPtr
static void DeletePlayer(StreamPlayer *player)
#define AL_BUFFERS_PROCESSED
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum format
AL_API void AL_APIENTRY alGenBuffers(ALsizei n, ALuint *buffers)
ALsizei BytesToFrames(ALsizei size, ALenum channels, ALenum type)
#define AL_SOURCE_RELATIVE
static int UpdatePlayer(StreamPlayer *player)
ALenum GetFormat(ALenum channels, ALenum type, LPALISBUFFERFORMATSUPPORTEDSOFT palIsBufferFormatSupportedSOFT)
static int OpenPlayerFile(StreamPlayer *player, const char *filename)
const char * ChannelsName(ALenum chans)
AL_API ALboolean AL_APIENTRY alIsExtensionPresent(const ALchar *extname)
AL_API void AL_APIENTRY alSourceQueueBuffers(ALuint source, ALsizei nb, const ALuint *buffers)
AL_API void AL_APIENTRY alSourceUnqueueBuffers(ALuint source, ALsizei nb, ALuint *buffers)
AL_API void AL_APIENTRY alDeleteBuffers(ALsizei n, const ALuint *buffers)
void closeAVFile(FilePtr file)
AL_API void AL_APIENTRY alSourcei(ALuint source, ALenum param, ALint value)
int getAVAudioInfo(StreamPtr stream, ALuint *rate, ALenum *channels, ALenum *type)
GLsizei GLsizei GLchar * source
#define AL_BUFFERS_QUEUED
LPALISBUFFERFORMATSUPPORTEDSOFT alIsBufferFormatSupportedSOFT
AL_API void AL_APIENTRY alDeleteSources(ALsizei n, const ALuint *sources)