source: roaraudio/roarclients/roarcatplay.c @ 212:7c07a2a18baa

Last change on this file since 212:7c07a2a18baa was 212:7c07a2a18baa, checked in by phi, 16 years ago

added roarcatplay

File size: 1.8 KB
Line 
1//roarcat.c:
2
3#include <roaraudio.h>
4
5#define BUFSIZE 1024
6
7void usage (void) {
8 printf("roarcatplay [OPTIONS]... [FILE]\n");
9
10 printf("\nOptions:\n\n");
11
12 printf("  --server SERVER    - Set server hostname\n"
13        "  --rate   RATE      - Set sample rate\n"
14        "  --bits   BITS      - Set bits per sample\n"
15        "  --chans  CHANNELS  - Set number of channels\n"
16        "  --codec  CODEC     - Set the codec\n"
17        "  --help             - Show this help\n"
18       );
19
20}
21
22int main (int argc, char * argv[]) {
23 int    rate     = 44100;
24 int    bits     = 16;
25 int    channels = 2;
26 int    codec    = ROAR_CODEC_DEFAULT;
27 char * server   = NULL;
28 char * k;
29 int    fh;
30 int    i;
31 int    in = -1;
32 char buf[BUFSIZE];
33
34 for (i = 1; i < argc; i++) {
35  k = argv[i];
36
37  if ( strcmp(k, "--server") == 0 ) {
38   server = argv[++i];
39  } else if ( strcmp(k, "--rate") == 0 ) {
40   rate = atoi(argv[++i]);
41  } else if ( strcmp(k, "--bits") == 0 ) {
42   bits = atoi(argv[++i]);
43  } else if ( strcmp(k, "--channels") == 0 || strcmp(k, "--chans") == 0 ) {
44   channels = atoi(argv[++i]);
45  } else if ( strcmp(k, "--codec") == 0 ) {
46   codec = atoi(argv[++i]);
47  } else if ( strcmp(k, "--help") == 0 ) {
48   usage();
49   return 0;
50  } else if ( in == -1 ) {
51   if ( (in = open(k, O_RDONLY, 0644)) == -1 ) {
52    fprintf(stderr, "Error: can not open file: %s: %s\n", k, strerror(errno));
53    return 1;
54   }
55  } else {
56   fprintf(stderr, "Error: unknown argument: %s\n", k);
57   usage();
58   return 1;
59  }
60 }
61
62 if ( (fh = roar_simple_play(rate, channels, bits, codec, server, "roarcat")) == -1 ) {
63  fprintf(stderr, "Error: can not start playback\n");
64  return 1;
65 }
66
67 if ( in == -1 )
68  in = ROAR_STDIN;
69
70 while((i = read(in, buf, BUFSIZE)))
71  if (write(fh, buf, i) != i)
72   break;
73
74 roar_simple_close(fh);
75
76 close(in);
77
78 return 0;
79}
80
81//ll
Note: See TracBrowser for help on using the repository browser.