9 static int play_file(const char *fname);
\r
10 static int cbfunc(void *buf, int size, void *cls);
\r
11 static void print_usage(const char *argv0);
\r
13 int main(int argc, char **argv)
\r
17 if(audio_init() == -1) {
\r
21 for(i=1; i<argc; i++) {
\r
22 if(argv[i][0] == '-') {
\r
23 if(strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "-help") == 0) {
\r
24 print_usage(argv[0]);
\r
27 fprintf(stderr, "invalid option: %s\n", argv[i]);
\r
37 static unsigned char *dbg_samples;
\r
38 static int dbg_cur_offs;
\r
40 static int play_file(const char *fname)
\r
44 if(!(au = au_open(fname))) {
\r
48 audio_set_callback(cbfunc, au);
\r
51 if(!(dbg_samples = malloc(au->size))) {
\r
52 perror("failed to preload samples into memory");
\r
56 if(au_read(au, dbg_samples, au->size) < au->size) {
\r
57 perror("failed to preload samples into memory");
\r
62 audio_play(au->rate, au->bits, au->chan);
\r
63 while(audio_isplaying());
\r
73 static int cbfunc(void *buf, int size, void *cls)
\r
75 struct au_file *au = cls;
\r
77 if(dbg_cur_offs + size > au->size) {
\r
78 size = au->size - dbg_cur_offs;
\r
80 if(size <= 0) return 0;
\r
82 memcpy(buf, dbg_samples + dbg_cur_offs, size);
\r
83 dbg_cur_offs += size;
\r
87 static int cbfunc(void *buf, int size, void *cls)
\r
91 if((rd = au_read(cls, buf, size)) <= 0) {
\r
98 static void print_usage(const char *argv0)
\r
100 printf("Usage: %s [options] <file1> <file2> ... <filen>\n", argv0);
\r
101 printf("options:\n");
\r
102 printf(" -h,-help: print usage and exit\n");
\r