X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fshairplay.c;h=9cccf030d0945d09143e9395e4c6aa2f34c66a1d;hb=258e9fb821c5ee9b39628d1694e48d5518e28ac3;hp=0486f6c9dec4509ccf089b8b94328ddbc5cd1e91;hpb=ad58f7a2caeeecf25a9d69aecf96a5fcc77fffcd;p=deb_shairplay.git diff --git a/src/shairplay.c b/src/shairplay.c index 0486f6c..9cccf03 100644 --- a/src/shairplay.c +++ b/src/shairplay.c @@ -37,6 +37,9 @@ typedef struct { } shairplay_session_t; +static int running; + + static ao_device * audio_open_device(shairplay_options_t *opt, int bits, int channels, int samplerate) { @@ -233,6 +236,8 @@ main(int argc, char *argv[]) raop_t *raop; raop_callbacks_t raop_cbs; + int error; + memset(&options, 0, sizeof(options)); if (parse_options(&options, argc, argv)) { return 0; @@ -257,7 +262,7 @@ main(int argc, char *argv[]) raop_cbs.audio_destroy = audio_destroy; raop_cbs.audio_set_volume = audio_set_volume; - raop = raop_init_from_keyfile(10, &raop_cbs, "airport.key"); + raop = raop_init_from_keyfile(10, &raop_cbs, "airport.key", NULL); if (raop == NULL) { fprintf(stderr, "Could not initialize the RAOP service\n"); return -1; @@ -266,14 +271,29 @@ main(int argc, char *argv[]) raop_set_log_level(raop, RAOP_LOG_DEBUG); raop_start(raop, &options.port, hwaddr, sizeof(hwaddr), NULL); - dnssd = dnssd_init(NULL); + error = 0; + dnssd = dnssd_init(&error); + if (error) { + fprintf(stderr, "ERROR: Could not initialize dnssd library!\n"); + fprintf(stderr, "------------------------------------------\n"); + fprintf(stderr, "You could try the following resolutions based on your OS:\n"); + fprintf(stderr, "Windows: Try installing http://support.apple.com/kb/DL999\n"); + fprintf(stderr, "Debian/Ubuntu: Try installing libavahi-compat-libdnssd1 package\n"); + raop_destroy(raop); + return -1; + } + dnssd_register_raop(dnssd, options.apname, options.port, hwaddr, sizeof(hwaddr), 0); + dnssd_register_airplay(dnssd, options.apname, 1234, hwaddr, sizeof(hwaddr)); + running = 1; + while (running) { #ifndef WIN32 - sleep(100); + sleep(1); #else - Sleep(100*1000); + Sleep(1000); #endif + } dnssd_unregister_raop(dnssd); dnssd_destroy(dnssd);