annotate data/osc/sv-osc-send.c @ 1310:aa1b1fc2d018
mp3-gapless
Stop reporting sync errors only when we really are at eof, i.e. after the input callback has been called again (previously we just tested whether we'd buffered up all the input, which of course we do in one go at the start)
author |
Chris Cannam |
date |
Tue, 29 Nov 2016 16:45:29 +0000 |
parents |
32e50b620a6c |
children |
|
rev |
line source |
Chris@320
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
Chris@320
|
2
|
Chris@320
|
3 #include <stdlib.h>
|
Chris@320
|
4 #include <stdio.h>
|
Chris@320
|
5 #include <string.h>
|
Chris@320
|
6 #include <ctype.h>
|
Chris@320
|
7 #include <lo/lo.h>
|
Chris@320
|
8
|
Chris@320
|
9 void
|
Chris@320
|
10 usage(char *program_name)
|
Chris@320
|
11 {
|
Chris@320
|
12 char *base_name = strrchr(program_name, '/');
|
Chris@320
|
13
|
Chris@320
|
14 if (base_name && *(base_name + 1) != 0) {
|
Chris@320
|
15 base_name += 1;
|
Chris@320
|
16 } else {
|
Chris@320
|
17 base_name = program_name;
|
Chris@320
|
18 }
|
Chris@320
|
19
|
Chris@320
|
20 fprintf(stderr, "\nusage: %s <OSC URL> [<values>]\n\n", program_name);
|
Chris@320
|
21 fprintf(stderr, "example OSC URLs:\n\n"
|
Chris@320
|
22 " osc.udp://localhost:19383/path/test 1.0 4.2\n"
|
Chris@320
|
23 " osc.udp://my.host.org:10886/3/13/load file\n\n");
|
Chris@320
|
24 fprintf(stderr, "numeric arguments will be treated as OSC 'f' floating point types.\n\n");
|
Chris@320
|
25 exit(1);
|
Chris@320
|
26 }
|
Chris@320
|
27
|
Chris@320
|
28 int main(int argc, char *argv[])
|
Chris@320
|
29 {
|
Chris@320
|
30 lo_address a;
|
Chris@320
|
31 char *url, *host, *port, *path;
|
Chris@320
|
32 lo_message message;
|
Chris@320
|
33 unsigned int i;
|
Chris@320
|
34
|
Chris@320
|
35 if (argc < 2) {
|
Chris@320
|
36 usage(argv[0]);
|
Chris@320
|
37 /* does not return */
|
Chris@320
|
38 }
|
Chris@320
|
39 url = argv[1];
|
Chris@320
|
40
|
Chris@320
|
41 host = lo_url_get_hostname(url);
|
Chris@320
|
42 port = lo_url_get_port(url);
|
Chris@320
|
43 path = lo_url_get_path(url);
|
Chris@320
|
44 a = lo_address_new(host, port);
|
Chris@320
|
45
|
Chris@320
|
46 message = lo_message_new();
|
Chris@320
|
47
|
Chris@320
|
48 for (i = 0; i + 2 < argc; ++i) {
|
Chris@320
|
49
|
Chris@320
|
50 int index = i + 2;
|
Chris@320
|
51 char *param;
|
Chris@320
|
52
|
Chris@320
|
53 param = argv[index];
|
Chris@320
|
54 if (!isdigit(param[0])) {
|
Chris@320
|
55 lo_message_add_string(message, argv[index]);
|
Chris@320
|
56 } else {
|
Chris@320
|
57 lo_message_add_float(message, atof(argv[index]));
|
Chris@320
|
58 }
|
Chris@320
|
59 }
|
Chris@320
|
60
|
Chris@320
|
61 lo_send_message(a, path, message);
|
Chris@320
|
62
|
Chris@320
|
63 if (lo_address_errno(a)) {
|
Chris@320
|
64 printf("liblo error: %s\n", lo_address_errstr(a));
|
Chris@320
|
65 }
|
Chris@320
|
66
|
Chris@320
|
67 free(host);
|
Chris@320
|
68 free(port);
|
Chris@320
|
69 free(path);
|
Chris@320
|
70
|
Chris@320
|
71 return 0;
|
Chris@320
|
72 }
|
Chris@320
|
73
|