Mercurial > SDL_sound_CoreAudio
annotate playsound/playsound.c @ 289:fdf50bded850
Updated.
author | Ryan C. Gordon <icculus@icculus.org> |
---|---|
date | Sun, 17 Mar 2002 19:57:18 +0000 |
parents | 259daddc2d6b |
children | 414cfef0978e |
rev | line source |
---|---|
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
1 /* |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
2 * SDL_sound -- An abstract sound format decoding API. |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
3 * Copyright (C) 2001 Ryan C. Gordon. |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
4 * |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
5 * This library is free software; you can redistribute it and/or |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
6 * modify it under the terms of the GNU Lesser General Public |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
7 * License as published by the Free Software Foundation; either |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
8 * version 2.1 of the License, or (at your option) any later version. |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
9 * |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
10 * This library is distributed in the hope that it will be useful, |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
13 * Lesser General Public License for more details. |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
14 * |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
15 * You should have received a copy of the GNU Lesser General Public |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
16 * License along with this library; if not, write to the Free Software |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
18 */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
19 |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
20 /** |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
21 * This is a quick and dirty test of SDL_sound. |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
22 * |
184
47cc2de2ae36
Changed reference to "LICENSE" file to "COPYING".
Ryan C. Gordon <icculus@icculus.org>
parents:
176
diff
changeset
|
23 * Please see the file COPYING in the source's root directory. |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
24 * |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
25 * This file written by Ryan C. Gordon. (icculus@clutteredmind.org) |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
26 */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
27 |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
28 #include <stdio.h> |
270 | 29 #include <stdlib.h> |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
30 #include <string.h> |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
31 #include <assert.h> |
148
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
32 #include <signal.h> |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
33 #include "SDL.h" |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
34 #include "SDL_sound.h" |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
35 |
283
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
36 #if SUPPORT_PHYSFS |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
37 #include <alloca.h> |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
38 #include "physfs.h" |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
39 #include "physfsrwops.h" |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
40 #endif |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
41 |
187
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
42 #define DEFAULT_DECODEBUF 16384 |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
43 #define DEFAULT_AUDIOBUF 4096 |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
44 |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
45 #define PLAYSOUND_VER_MAJOR 0 |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
46 #define PLAYSOUND_VER_MINOR 1 |
252
c54eae85f5f1
Upped version to 0.1.5.
Ryan C. Gordon <icculus@icculus.org>
parents:
236
diff
changeset
|
47 #define PLAYSOUND_VER_PATCH 5 |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
48 |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
49 static void output_versions(const char *argv0) |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
50 { |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
51 Sound_Version compiled; |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
52 Sound_Version linked; |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
53 SDL_version sdl_compiled; |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
54 const SDL_version *sdl_linked; |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
55 |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
56 SOUND_VERSION(&compiled); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
57 Sound_GetLinkedVersion(&linked); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
58 SDL_VERSION(&sdl_compiled); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
59 sdl_linked = SDL_Linked_Version(); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
60 |
176
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
61 printf("%s version %d.%d.%d\n" |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
62 "Copyright 2001 Ryan C. Gordon\n" |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
63 "This program is free software, covered by the GNU Lesser General\n" |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
64 "Public License, and you are welcome to change it and/or\n" |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
65 "distribute copies of it under certain conditions. There is\n" |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
66 "absolutely NO WARRANTY for this program.\n" |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
67 "\n" |
148
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
68 " Compiled against SDL_sound version %d.%d.%d,\n" |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
69 " and linked against %d.%d.%d.\n" |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
70 " Compiled against SDL version %d.%d.%d,\n" |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
71 " and linked against %d.%d.%d.\n\n", |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
72 argv0, |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
73 PLAYSOUND_VER_MAJOR, PLAYSOUND_VER_MINOR, PLAYSOUND_VER_PATCH, |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
74 compiled.major, compiled.minor, compiled.patch, |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
75 linked.major, linked.minor, linked.patch, |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
76 sdl_compiled.major, sdl_compiled.minor, sdl_compiled.patch, |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
77 sdl_linked->major, sdl_linked->minor, sdl_linked->patch); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
78 } /* output_versions */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
79 |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
80 |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
81 static void output_decoders(void) |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
82 { |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
83 const Sound_DecoderInfo **rc = Sound_AvailableDecoders(); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
84 const Sound_DecoderInfo **i; |
148
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
85 const char **ext; |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
86 |
148
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
87 printf("Supported sound formats:\n"); |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
88 if (rc == NULL) |
148
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
89 printf(" * Apparently, NONE!\n"); |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
90 else |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
91 { |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
92 for (i = rc; *i != NULL; i++) |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
93 { |
148
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
94 printf(" * %s\n", (*i)->description); |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
95 for (ext = (*i)->extensions; *ext != NULL; ext++) |
150
033afe96afbc
Commenting and fixes for the audio callback.
Ryan C. Gordon <icculus@icculus.org>
parents:
148
diff
changeset
|
96 printf(" File extension \"%s\"\n", *ext); |
148
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
97 printf(" Written by %s.\n %s\n\n", (*i)->author, (*i)->url); |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
98 } /* for */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
99 } /* else */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
100 |
148
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
101 printf("\n"); |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
102 } /* output_decoders */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
103 |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
104 |
176
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
105 static void output_usage(const char *argv0) |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
106 { |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
107 fprintf(stderr, |
187
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
108 "USAGE: %s [...options...] [soundFile1] ... [soundFileN]\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
109 "\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
110 " Options:\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
111 " --rate n Playback at sample rate of n HZ.\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
112 " --format fmt Playback in fmt format (see below).\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
113 " --channels n Playback on n channels (1 or 2).\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
114 " --decodebuf n Buffer n decoded bytes at a time (default %d).\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
115 " --audiobuf n Buffer n samples to audio device (default %d).\n" |
270 | 116 " --volume n Playback volume multiplier (default 1.0).\n" |
280
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
117 " --stdin [ext] Read from stdin (treat data as format [ext])\n" |
187
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
118 " --version Display version information and exit.\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
119 " --decoders List supported data formats and exit.\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
120 " --predecode Decode entire sample before playback.\n" |
222
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
121 " --loop Loop playback until SIGINT.\n" |
187
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
122 " --credits Shameless promotion.\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
123 " --help Display this information and exit.\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
124 "\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
125 " Valid arguments to the --format option are:\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
126 " U8 Unsigned 8-bit.\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
127 " S8 Signed 8-bit.\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
128 " U16LSB Unsigned 16-bit (least significant byte first).\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
129 " U16MSB Unsigned 16-bit (most significant byte first).\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
130 " S16LSB Signed 16-bit (least significant byte first).\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
131 " S16MSB Signed 16-bit (most significant byte first).\n" |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
132 "\n", |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
133 argv0, DEFAULT_DECODEBUF, DEFAULT_AUDIOBUF); |
176
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
134 } /* output_usage */ |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
135 |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
136 |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
137 static void output_credits(void) |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
138 { |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
139 printf("playsound version %d.%d.%d\n" |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
140 "Copyright 2001 Ryan C. Gordon\n" |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
141 "playsound is free software, covered by the GNU Lesser General\n" |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
142 "Public License, and you are welcome to change it and/or\n" |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
143 "distribute copies of it under certain conditions. There is\n" |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
144 "absolutely NO WARRANTY for playsound.\n" |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
145 "\n" |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
146 " Written by Ryan C. Gordon, Torbjörn Andersson, Max Horn,\n" |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
147 " Tsuyoshi Iguchi, Tyler Montbriand, and a cast of thousands.\n" |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
148 "\n" |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
149 " Website and source code: http://icculus.org/SDL_sound/\n" |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
150 "\n", |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
151 PLAYSOUND_VER_MAJOR, PLAYSOUND_VER_MINOR, PLAYSOUND_VER_PATCH); |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
152 } /* output_credits */ |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
153 |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
154 |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
155 |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
156 static volatile int done_flag = 0; |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
157 |
148
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
158 |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
159 void sigint_catcher(int signum) |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
160 { |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
161 static Uint32 last_sigint = 0; |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
162 Uint32 ticks = SDL_GetTicks(); |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
163 |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
164 assert(signum == SIGINT); |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
165 |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
166 if ((last_sigint != 0) && (ticks - last_sigint < 500)) |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
167 { |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
168 SDL_PauseAudio(1); |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
169 SDL_CloseAudio(); |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
170 Sound_Quit(); |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
171 SDL_Quit(); |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
172 exit(1); |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
173 } /* if */ |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
174 |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
175 else |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
176 { |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
177 last_sigint = ticks; |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
178 done_flag = 1; |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
179 } /* else */ |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
180 } /* sigint_catcher */ |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
181 |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
182 |
146
023c3e7f028b
Cleaned up the overflow buffer hack.
Ryan C. Gordon <icculus@icculus.org>
parents:
144
diff
changeset
|
183 static Uint8 *decoded_ptr = NULL; |
023c3e7f028b
Cleaned up the overflow buffer hack.
Ryan C. Gordon <icculus@icculus.org>
parents:
144
diff
changeset
|
184 static Uint32 decoded_bytes = 0; |
222
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
185 static int predecode = 0; |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
186 static int looping = 0; |
270 | 187 static int wants_volume_change = 0; |
188 static float volume = 1.0; | |
222
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
189 |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
190 /* |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
191 * This updates (decoded_bytes) and (decoder_ptr) with more audio data, |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
192 * taking into account looping and/or predecoding. |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
193 */ |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
194 static int read_more_data(Sound_Sample *sample) |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
195 { |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
196 if (done_flag) /* probably a sigint; stop trying to read. */ |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
197 decoded_bytes = 0; |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
198 |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
199 if (decoded_bytes > 0) /* don't need more data; just return. */ |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
200 return(decoded_bytes); |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
201 |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
202 /* need more. See if there's more to be read... */ |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
203 if (!(sample->flags & (SOUND_SAMPLEFLAG_ERROR | SOUND_SAMPLEFLAG_EOF))) |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
204 { |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
205 decoded_bytes = Sound_Decode(sample); |
272
0ac181b5adc6
Corrected error reporting to respect Sound_GetError()'s new thread
Ryan C. Gordon <icculus@icculus.org>
parents:
270
diff
changeset
|
206 if (sample->flags & SOUND_SAMPLEFLAG_ERROR) |
0ac181b5adc6
Corrected error reporting to respect Sound_GetError()'s new thread
Ryan C. Gordon <icculus@icculus.org>
parents:
270
diff
changeset
|
207 { |
0ac181b5adc6
Corrected error reporting to respect Sound_GetError()'s new thread
Ryan C. Gordon <icculus@icculus.org>
parents:
270
diff
changeset
|
208 fprintf(stderr, "Error in decoding sound file!\n" |
0ac181b5adc6
Corrected error reporting to respect Sound_GetError()'s new thread
Ryan C. Gordon <icculus@icculus.org>
parents:
270
diff
changeset
|
209 " reason: [%s].\n", Sound_GetError()); |
0ac181b5adc6
Corrected error reporting to respect Sound_GetError()'s new thread
Ryan C. Gordon <icculus@icculus.org>
parents:
270
diff
changeset
|
210 } /* if */ |
0ac181b5adc6
Corrected error reporting to respect Sound_GetError()'s new thread
Ryan C. Gordon <icculus@icculus.org>
parents:
270
diff
changeset
|
211 |
222
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
212 decoded_ptr = sample->buffer; |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
213 return(read_more_data(sample)); /* handle loops conditions. */ |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
214 } /* if */ |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
215 |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
216 /* No more to be read from stream, but we may want to loop the sample. */ |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
217 |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
218 if (!looping) |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
219 return(0); |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
220 |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
221 /* we just need to point predecoded samples to the start of the buffer. */ |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
222 if (predecode) |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
223 { |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
224 decoded_bytes = sample->buffer_size; |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
225 decoded_ptr = sample->buffer; |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
226 return(decoded_bytes); |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
227 } /* if */ |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
228 else |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
229 { |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
230 Sound_Rewind(sample); /* error is checked in recursion. */ |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
231 return(read_more_data(sample)); |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
232 } /* else */ |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
233 |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
234 assert(0); /* shouldn't ever hit this point. */ |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
235 return(0); |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
236 } /* read_more_data */ |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
237 |
146
023c3e7f028b
Cleaned up the overflow buffer hack.
Ryan C. Gordon <icculus@icculus.org>
parents:
144
diff
changeset
|
238 |
270 | 239 static void memcpy_with_volume(Sound_Sample *sample, |
240 Uint8 *dst, Uint8 *src, int len) | |
241 { | |
242 int i; | |
243 Uint16 *u16src = NULL; | |
244 Uint16 *u16dst = NULL; | |
245 Sint16 *s16src = NULL; | |
246 Sint16 *s16dst = NULL; | |
247 | |
248 if (!wants_volume_change) | |
249 { | |
250 memcpy(dst, src, len); | |
251 return; | |
252 } | |
253 | |
254 /* !!! FIXME: This would be more efficient with a lookup table. */ | |
255 switch (sample->desired.format) | |
256 { | |
257 case AUDIO_U8: | |
258 for (i = 0; i < len; i++, src++, dst++) | |
259 *dst = (Uint8) (((float) (*src)) * volume); | |
260 break; | |
261 | |
262 case AUDIO_S8: | |
263 for (i = 0; i < len; i++, src++, dst++) | |
264 *dst = (Sint8) (((float) (*src)) * volume); | |
265 break; | |
266 | |
267 case AUDIO_U16LSB: | |
268 u16src = (Uint16 *) src; | |
269 u16dst = (Uint16 *) dst; | |
270 for (i = 0; i < len; i += sizeof (Uint16), u16src++, u16dst++) | |
271 { | |
272 *u16dst = (Uint16) (((float) (SDL_SwapLE16(*u16src))) * volume); | |
273 *u16dst = SDL_SwapLE16(*u16dst); | |
274 } | |
275 break; | |
276 | |
277 case AUDIO_S16LSB: | |
278 s16src = (Sint16 *) src; | |
279 s16dst = (Sint16 *) dst; | |
280 for (i = 0; i < len; i += sizeof (Sint16), s16src++, s16dst++) | |
281 { | |
282 *s16dst = (Sint16) (((float) (SDL_SwapLE16(*s16src))) * volume); | |
283 *s16dst = SDL_SwapLE16(*s16dst); | |
284 } | |
285 break; | |
286 | |
287 case AUDIO_U16MSB: | |
288 u16src = (Uint16 *) src; | |
289 u16dst = (Uint16 *) dst; | |
290 for (i = 0; i < len; i += sizeof (Uint16), u16src++, u16dst++) | |
291 { | |
292 *u16dst = (Uint16) (((float) (SDL_SwapBE16(*u16src))) * volume); | |
293 *u16dst = SDL_SwapBE16(*u16dst); | |
294 } | |
295 break; | |
296 | |
297 case AUDIO_S16MSB: | |
298 s16src = (Sint16 *) src; | |
299 s16dst = (Sint16 *) dst; | |
300 for (i = 0; i < len; i += sizeof (Sint16), s16src++, s16dst++) | |
301 { | |
302 *s16dst = (Sint16) (((float) (SDL_SwapBE16(*s16src))) * volume); | |
303 *s16dst = SDL_SwapBE16(*s16dst); | |
304 } | |
305 break; | |
306 } | |
307 } | |
308 | |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
309 static void audio_callback(void *userdata, Uint8 *stream, int len) |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
310 { |
112
3fcb23da06ba
Made more robust; fixes most sample rate, etc incompatibilities.
Ryan C. Gordon <icculus@icculus.org>
parents:
82
diff
changeset
|
311 Sound_Sample *sample = (Sound_Sample *) userdata; |
150
033afe96afbc
Commenting and fixes for the audio callback.
Ryan C. Gordon <icculus@icculus.org>
parents:
148
diff
changeset
|
312 int bw = 0; /* bytes written to stream this time through the callback */ |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
313 |
146
023c3e7f028b
Cleaned up the overflow buffer hack.
Ryan C. Gordon <icculus@icculus.org>
parents:
144
diff
changeset
|
314 while (bw < len) |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
315 { |
150
033afe96afbc
Commenting and fixes for the audio callback.
Ryan C. Gordon <icculus@icculus.org>
parents:
148
diff
changeset
|
316 int cpysize; /* bytes to copy on this iteration of the loop. */ |
033afe96afbc
Commenting and fixes for the audio callback.
Ryan C. Gordon <icculus@icculus.org>
parents:
148
diff
changeset
|
317 |
222
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
318 if (!read_more_data(sample)) /* read more data, if needed. */ |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
319 { |
222
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
320 /* ...there isn't any more data to read! */ |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
321 memset(stream + bw, '\0', len - bw); |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
322 done_flag = 1; |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
323 return; |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
324 } /* if */ |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
325 |
222
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
326 /* decoded_bytes and decoder_ptr are updated as necessary... */ |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
327 |
146
023c3e7f028b
Cleaned up the overflow buffer hack.
Ryan C. Gordon <icculus@icculus.org>
parents:
144
diff
changeset
|
328 cpysize = len - bw; |
023c3e7f028b
Cleaned up the overflow buffer hack.
Ryan C. Gordon <icculus@icculus.org>
parents:
144
diff
changeset
|
329 if (cpysize > decoded_bytes) |
023c3e7f028b
Cleaned up the overflow buffer hack.
Ryan C. Gordon <icculus@icculus.org>
parents:
144
diff
changeset
|
330 cpysize = decoded_bytes; |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
331 |
146
023c3e7f028b
Cleaned up the overflow buffer hack.
Ryan C. Gordon <icculus@icculus.org>
parents:
144
diff
changeset
|
332 if (cpysize > 0) |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
333 { |
270 | 334 memcpy_with_volume(sample, stream + bw, decoded_ptr, cpysize); |
146
023c3e7f028b
Cleaned up the overflow buffer hack.
Ryan C. Gordon <icculus@icculus.org>
parents:
144
diff
changeset
|
335 bw += cpysize; |
150
033afe96afbc
Commenting and fixes for the audio callback.
Ryan C. Gordon <icculus@icculus.org>
parents:
148
diff
changeset
|
336 decoded_ptr += cpysize; |
033afe96afbc
Commenting and fixes for the audio callback.
Ryan C. Gordon <icculus@icculus.org>
parents:
148
diff
changeset
|
337 decoded_bytes -= cpysize; |
146
023c3e7f028b
Cleaned up the overflow buffer hack.
Ryan C. Gordon <icculus@icculus.org>
parents:
144
diff
changeset
|
338 } /* if */ |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
339 } /* while */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
340 } /* audio_callback */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
341 |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
342 |
135
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
343 static int str_to_fmt(char *str) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
344 { |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
345 if (strcmp(str, "U8") == 0) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
346 return AUDIO_U8; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
347 if (strcmp(str, "S8") == 0) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
348 return AUDIO_S8; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
349 if (strcmp(str, "U16LSB") == 0) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
350 return AUDIO_U16LSB; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
351 if (strcmp(str, "S16LSB") == 0) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
352 return AUDIO_S16LSB; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
353 if (strcmp(str, "U16MSB") == 0) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
354 return AUDIO_U16MSB; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
355 if (strcmp(str, "S16MSB") == 0) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
356 return AUDIO_S16MSB; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
357 return 0; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
358 } /* str_to_fmt */ |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
359 |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
360 |
283
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
361 #if SUPPORT_PHYSFS |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
362 static SDL_RWops *rwops_from_physfs(const char *argv0, const char *filename) |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
363 { |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
364 SDL_RWops *retval = NULL; |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
365 |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
366 char *path = (char *) alloca(strlen(filename) + 1); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
367 char *archive; |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
368 |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
369 strcpy(path, filename); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
370 archive = strchr(path, '@'); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
371 if (archive != NULL) |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
372 { |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
373 *(archive++) = '\0'; /* blank '@', point to archive name. */ |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
374 |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
375 if (!PHYSFS_init(argv0)) |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
376 { |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
377 fprintf(stderr, "Couldn't init PhysicsFS: %s\n", |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
378 PHYSFS_getLastError()); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
379 return(NULL); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
380 } /* if */ |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
381 |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
382 if (!PHYSFS_addToSearchPath(archive, 0)) |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
383 { |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
384 fprintf(stderr, "Couldn't open archive: %s\n", |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
385 PHYSFS_getLastError()); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
386 return(NULL); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
387 } /* if */ |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
388 |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
389 retval = PHYSFSRWOPS_openRead(path); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
390 } /* if */ |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
391 |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
392 return(retval); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
393 } /* rwops_from_physfs */ |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
394 #endif |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
395 |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
396 |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
397 static Sound_Sample *sample_from_archive(const char *argv0, const char *fname, |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
398 Sound_AudioInfo *desired, |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
399 Uint32 decode_buffersize) |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
400 { |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
401 #if SUPPORT_PHYSFS |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
402 SDL_RWops *rw = rwops_from_physfs(argv0, fname); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
403 if (rw != NULL) |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
404 { |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
405 char *path = (char *) alloca(strlen(fname) + 1); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
406 char *ptr; |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
407 strcpy(path, fname); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
408 ptr = strchr(path, '@'); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
409 *ptr = '\0'; |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
410 ptr = strrchr(path, '.'); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
411 if (ptr != NULL) |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
412 ptr++; |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
413 |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
414 return(Sound_NewSample(rw, ptr, desired, decode_buffersize)); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
415 } /* if */ |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
416 #endif |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
417 |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
418 return(NULL); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
419 } /* sample_from_archive */ |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
420 |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
421 |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
422 int main(int argc, char **argv) |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
423 { |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
424 Sound_AudioInfo sound_desired; |
187
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
425 Uint32 audio_buffersize = DEFAULT_AUDIOBUF; |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
426 Uint32 decode_buffersize = DEFAULT_DECODEBUF; |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
427 SDL_AudioSpec sdl_desired; |
112
3fcb23da06ba
Made more robust; fixes most sample rate, etc incompatibilities.
Ryan C. Gordon <icculus@icculus.org>
parents:
82
diff
changeset
|
428 SDL_AudioSpec sdl_actual; |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
429 Sound_Sample *sample; |
135
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
430 int use_specific_audiofmt = 0; |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
431 int i; |
214
e27b33a6d5fe
Now attempts to wait for SDL to finish playing the end of the buffered
Ryan C. Gordon <icculus@icculus.org>
parents:
196
diff
changeset
|
432 int delay; |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
433 |
168
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
434 setbuf(stdout, NULL); |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
435 setbuf(stderr, NULL); |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
436 |
112
3fcb23da06ba
Made more robust; fixes most sample rate, etc incompatibilities.
Ryan C. Gordon <icculus@icculus.org>
parents:
82
diff
changeset
|
437 /* !!! FIXME: Move this to a parse_cmdline() function... */ |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
438 if (argc < 2) |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
439 { |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
440 output_usage(argv[0]); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
441 return(42); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
442 } /* if */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
443 |
135
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
444 memset(&sound_desired, '\0', sizeof (sound_desired)); |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
445 |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
446 for (i = 0; i < argc; i++) |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
447 { |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
448 if (strncmp(argv[i], "--", 2) != 0) |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
449 continue; |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
450 |
135
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
451 if (strcmp(argv[i], "--version") == 0) |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
452 { |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
453 output_versions(argv[0]); |
135
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
454 return(42); |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
455 } /* if */ |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
456 |
176
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
457 if (strcmp(argv[i], "--credits") == 0) |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
458 { |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
459 output_credits(); |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
460 return(42); |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
461 } /* if */ |
69922f6a5c74
Added GNU disclaimers and a --credits option with our names.
Ryan C. Gordon <icculus@icculus.org>
parents:
168
diff
changeset
|
462 |
135
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
463 else if (strcmp(argv[i], "--help") == 0) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
464 { |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
465 output_usage(argv[0]); |
135
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
466 return(42); |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
467 } /* if */ |
135
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
468 |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
469 else if (strcmp(argv[i], "--rate") == 0 && argc > i + 1) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
470 { |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
471 use_specific_audiofmt = 1; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
472 sound_desired.rate = atoi(argv[++i]); |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
473 if (sound_desired.rate <= 0) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
474 { |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
475 fprintf(stderr, "Bad argument to --rate!\n"); |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
476 return(42); |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
477 } |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
478 } /* else if */ |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
479 |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
480 else if (strcmp(argv[i], "--format") == 0 && argc > i + 1) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
481 { |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
482 use_specific_audiofmt = 1; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
483 sound_desired.format = str_to_fmt(argv[++i]); |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
484 if (sound_desired.format == 0) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
485 { |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
486 fprintf(stderr, "Bad argument to --format! Try one of:\n" |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
487 "U8, S8, U16LSB, S16LSB, U16MSB, S16MSB\n"); |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
488 return(42); |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
489 } |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
490 } /* else if */ |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
491 |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
492 else if (strcmp(argv[i], "--channels") == 0 && argc > i + 1) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
493 { |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
494 use_specific_audiofmt = 1; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
495 sound_desired.channels = atoi(argv[++i]); |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
496 if (sound_desired.channels < 1 || sound_desired.channels > 2) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
497 { |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
498 fprintf(stderr, |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
499 "Bad argument to --channels! Try 1 (mono) or 2 " |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
500 "(stereo).\n"); |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
501 return(42); |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
502 } |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
503 } /* else if */ |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
504 |
187
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
505 else if (strcmp(argv[i], "--audiobuf") == 0 && argc > i + 1) |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
506 { |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
507 audio_buffersize = atoi(argv[++i]); |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
508 } /* else if */ |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
509 |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
510 else if (strcmp(argv[i], "--decodebuf") == 0 && argc > i + 1) |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
511 { |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
512 decode_buffersize = atoi(argv[++i]); |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
513 } /* else if */ |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
514 |
270 | 515 else if (strcmp(argv[i], "--volume") == 0 && argc > i + 1) |
516 { | |
517 volume = atof(argv[++i]); | |
518 if (volume != 1.0) | |
519 wants_volume_change = 1; | |
520 } /* else if */ | |
521 | |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
522 else if (strcmp(argv[i], "--decoders") == 0) |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
523 { |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
524 if (!Sound_Init()) |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
525 { |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
526 fprintf(stderr, "Sound_Init() failed!\n" |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
527 " reason: [%s].\n", Sound_GetError()); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
528 SDL_Quit(); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
529 return(42); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
530 } /* if */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
531 |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
532 output_decoders(); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
533 Sound_Quit(); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
534 return(0); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
535 } /* else if */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
536 |
168
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
537 else if (strcmp(argv[i], "--predecode") == 0) |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
538 { |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
539 predecode = 1; |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
540 } /* else if */ |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
541 |
222
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
542 else if (strcmp(argv[i], "--loop") == 0) |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
543 { |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
544 looping = 1; |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
545 } /* else if */ |
d6b24586822a
Support for looping sounds via a new --loop command line. Rewritten (again!)
Ryan C. Gordon <icculus@icculus.org>
parents:
214
diff
changeset
|
546 |
280
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
547 else if (strcmp(argv[i], "--stdin") == 0) |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
548 { |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
549 /* deal with it at Sound_Sample creation time... */ |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
550 } /* else if */ |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
551 |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
552 else |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
553 { |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
554 fprintf(stderr, "unknown option: \"%s\"\n", argv[i]); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
555 return(42); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
556 } /* else */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
557 } /* for */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
558 |
135
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
559 /* Pick sensible defaults for any value not explicitly specified. */ |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
560 if (use_specific_audiofmt) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
561 { |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
562 if (sound_desired.rate == 0) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
563 sound_desired.rate = 44100; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
564 if (sound_desired.format == 0) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
565 sound_desired.format = AUDIO_S16SYS; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
566 if (sound_desired.channels == 0) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
567 sound_desired.channels = 2; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
568 } /* if */ |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
569 |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
570 if (SDL_Init(SDL_INIT_AUDIO) == -1) |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
571 { |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
572 fprintf(stderr, "SDL_Init(SDL_INIT_AUDIO) failed!\n" |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
573 " reason: [%s].\n", SDL_GetError()); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
574 return(42); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
575 } /* if */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
576 |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
577 if (!Sound_Init()) |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
578 { |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
579 fprintf(stderr, "Sound_Init() failed!\n" |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
580 " reason: [%s].\n", Sound_GetError()); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
581 SDL_Quit(); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
582 return(42); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
583 } /* if */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
584 |
148
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
585 signal(SIGINT, sigint_catcher); |
d51546293fd1
Support for multiple file extensions in the decoders, and a SIGINT catcher.
Ryan C. Gordon <icculus@icculus.org>
parents:
146
diff
changeset
|
586 |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
587 for (i = 1; i < argc; i++) |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
588 { |
280
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
589 char *filename = NULL; |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
590 |
135
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
591 /* !!! FIXME: This is ugly! */ |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
592 if ( (strcmp(argv[i], "--rate") == 0) || |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
593 (strcmp(argv[i], "--format") == 0) || |
187
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
594 (strcmp(argv[i], "--channels") == 0) || |
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
595 (strcmp(argv[i], "--audiobuf") == 0) || |
270 | 596 (strcmp(argv[i], "--decodebuf") == 0) || |
597 (strcmp(argv[i], "--volume") == 0) ) | |
135
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
598 { |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
599 i++; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
600 continue; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
601 } /* if */ |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
602 |
280
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
603 if (strcmp(argv[i], "--stdin") == 0) |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
604 { |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
605 SDL_RWops *rw = SDL_RWFromFP(stdin, 1); |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
606 filename = "...from stdin..."; |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
607 |
280
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
608 /* |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
609 * The second argument will be NULL if --stdin is the last |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
610 * thing on the command line. This is correct behaviour. |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
611 */ |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
612 sample = Sound_NewSample(rw, argv[++i], |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
613 use_specific_audiofmt ? &sound_desired : NULL, |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
614 decode_buffersize); |
283
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
615 } /* if */ |
280
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
616 |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
617 else if (strncmp(argv[i], "--", 2) == 0) |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
618 { |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
619 continue; |
283
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
620 } /* else if */ |
280
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
621 |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
622 else |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
623 { |
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
624 filename = argv[i]; |
283
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
625 sample = sample_from_archive(argv[0], filename, |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
626 use_specific_audiofmt ? &sound_desired : NULL, |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
627 decode_buffersize); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
628 |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
629 if (sample == NULL) |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
630 { |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
631 sample = Sound_NewSampleFromFile(argv[i], |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
632 use_specific_audiofmt ? &sound_desired : NULL, |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
633 decode_buffersize); |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
634 } /* if */ |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
635 } /* else */ |
135
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
636 |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
637 if (!sample) |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
638 { |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
639 fprintf(stderr, "Couldn't load \"%s\"!\n" |
280
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
640 " reason: [%s].\n", filename, Sound_GetError()); |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
641 continue; |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
642 } /* if */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
643 |
135
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
644 /* |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
645 * Unless explicitly specified, pick the format from the sound |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
646 * to be played. |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
647 */ |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
648 if (use_specific_audiofmt) |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
649 { |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
650 sdl_desired.freq = sound_desired.rate; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
651 sdl_desired.format = sound_desired.format; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
652 sdl_desired.channels = sound_desired.channels; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
653 } /* if */ |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
654 else |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
655 { |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
656 sdl_desired.freq = sample->actual.rate; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
657 sdl_desired.format = sample->actual.format; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
658 sdl_desired.channels = sample->actual.channels; |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
659 } /* else */ |
69cd80e80363
Added Torbj�rn Andersson's command lines, and cleaned up the usage output.
Ryan C. Gordon <icculus@icculus.org>
parents:
112
diff
changeset
|
660 |
187
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
661 sdl_desired.samples = audio_buffersize; |
112
3fcb23da06ba
Made more robust; fixes most sample rate, etc incompatibilities.
Ryan C. Gordon <icculus@icculus.org>
parents:
82
diff
changeset
|
662 sdl_desired.callback = audio_callback; |
3fcb23da06ba
Made more robust; fixes most sample rate, etc incompatibilities.
Ryan C. Gordon <icculus@icculus.org>
parents:
82
diff
changeset
|
663 sdl_desired.userdata = sample; |
3fcb23da06ba
Made more robust; fixes most sample rate, etc incompatibilities.
Ryan C. Gordon <icculus@icculus.org>
parents:
82
diff
changeset
|
664 |
3fcb23da06ba
Made more robust; fixes most sample rate, etc incompatibilities.
Ryan C. Gordon <icculus@icculus.org>
parents:
82
diff
changeset
|
665 if (SDL_OpenAudio(&sdl_desired, NULL) < 0) |
3fcb23da06ba
Made more robust; fixes most sample rate, etc incompatibilities.
Ryan C. Gordon <icculus@icculus.org>
parents:
82
diff
changeset
|
666 { |
3fcb23da06ba
Made more robust; fixes most sample rate, etc incompatibilities.
Ryan C. Gordon <icculus@icculus.org>
parents:
82
diff
changeset
|
667 fprintf(stderr, "Couldn't open audio device!\n" |
3fcb23da06ba
Made more robust; fixes most sample rate, etc incompatibilities.
Ryan C. Gordon <icculus@icculus.org>
parents:
82
diff
changeset
|
668 " reason: [%s].\n", SDL_GetError()); |
3fcb23da06ba
Made more robust; fixes most sample rate, etc incompatibilities.
Ryan C. Gordon <icculus@icculus.org>
parents:
82
diff
changeset
|
669 Sound_Quit(); |
3fcb23da06ba
Made more robust; fixes most sample rate, etc incompatibilities.
Ryan C. Gordon <icculus@icculus.org>
parents:
82
diff
changeset
|
670 SDL_Quit(); |
3fcb23da06ba
Made more robust; fixes most sample rate, etc incompatibilities.
Ryan C. Gordon <icculus@icculus.org>
parents:
82
diff
changeset
|
671 return(42); |
3fcb23da06ba
Made more robust; fixes most sample rate, etc incompatibilities.
Ryan C. Gordon <icculus@icculus.org>
parents:
82
diff
changeset
|
672 } /* if */ |
3fcb23da06ba
Made more robust; fixes most sample rate, etc incompatibilities.
Ryan C. Gordon <icculus@icculus.org>
parents:
82
diff
changeset
|
673 |
280
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
674 printf("Now playing [%s]...\n", filename); |
112
3fcb23da06ba
Made more robust; fixes most sample rate, etc incompatibilities.
Ryan C. Gordon <icculus@icculus.org>
parents:
82
diff
changeset
|
675 |
168
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
676 if (predecode) |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
677 { |
280
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
678 printf(" predecoding..."); |
168
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
679 decoded_bytes = Sound_DecodeAll(sample); |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
680 decoded_ptr = sample->buffer; |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
681 if (sample->flags & SOUND_SAMPLEFLAG_ERROR) |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
682 { |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
683 fprintf(stderr, |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
684 "Couldn't fully decode \"%s\"!\n" |
187
bfe5031726e8
printf() fix (extra comma was in there), and --decodebuf/--audiobuf
Ryan C. Gordon <icculus@icculus.org>
parents:
184
diff
changeset
|
685 " reason: [%s].\n" |
168
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
686 " (playing first %lu bytes of decoded data...)\n", |
280
06fbb106a554
Can now read from stdin.
Ryan C. Gordon <icculus@icculus.org>
parents:
272
diff
changeset
|
687 filename, Sound_GetError(), decoded_bytes); |
168
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
688 } /* if */ |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
689 else |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
690 { |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
691 printf("done.\n"); |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
692 } /* else */ |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
693 } /* if */ |
87b00f023710
Added --predecode functionality.
Ryan C. Gordon <icculus@icculus.org>
parents:
150
diff
changeset
|
694 |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
695 done_flag = 0; |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
696 SDL_PauseAudio(0); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
697 while (!done_flag) |
146
023c3e7f028b
Cleaned up the overflow buffer hack.
Ryan C. Gordon <icculus@icculus.org>
parents:
144
diff
changeset
|
698 { |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
699 SDL_Delay(10); |
146
023c3e7f028b
Cleaned up the overflow buffer hack.
Ryan C. Gordon <icculus@icculus.org>
parents:
144
diff
changeset
|
700 } /* while */ |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
701 SDL_PauseAudio(1); |
146
023c3e7f028b
Cleaned up the overflow buffer hack.
Ryan C. Gordon <icculus@icculus.org>
parents:
144
diff
changeset
|
702 |
236 | 703 /* |
704 * Sleep two buffers' worth of audio before closing, in order | |
705 * to allow the playback to finish. This isn't always enough; | |
706 * perhaps SDL needs a way to explicitly wait for device drain? | |
707 */ | |
708 delay = 2 * 1000 * sdl_desired.samples / sdl_desired.freq; | |
709 SDL_Delay(delay); | |
214
e27b33a6d5fe
Now attempts to wait for SDL to finish playing the end of the buffered
Ryan C. Gordon <icculus@icculus.org>
parents:
196
diff
changeset
|
710 |
112
3fcb23da06ba
Made more robust; fixes most sample rate, etc incompatibilities.
Ryan C. Gordon <icculus@icculus.org>
parents:
82
diff
changeset
|
711 SDL_CloseAudio(); /* reopen with next sample's format if possible */ |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
712 Sound_FreeSample(sample); |
283
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
713 |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
714 #if SUPPORT_PHYSFS |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
715 PHYSFS_deinit(); /* !!! FIXME: move this somewhere? */ |
6c059c4d2cea
Added PhysicsFS support.
Ryan C. Gordon <icculus@icculus.org>
parents:
280
diff
changeset
|
716 #endif |
58
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
717 } /* for */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
718 |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
719 Sound_Quit(); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
720 SDL_Quit(); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
721 return(0); |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
722 } /* main */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
723 |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
724 /* end of playsound.c ... */ |
4a51162099e0
Renamed from test/test_sdlsound.c ... lots of other updates, too.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff
changeset
|
725 |