#include "dnssd.h"
#include "raop.h"
-static void
-audio_init(void *cls, void **session, int bits, int channels, int samplerate)
+static void *
+audio_init(void *cls, int bits, int channels, int samplerate)
{
- *session = fopen("audio.pcm", "wb");
+ return fopen("audio.pcm", "wb");
}
static void
printf("Setting volume to %f\n", volume);
}
+static void
+audio_set_metadata(void *cls, void *session, const void *buffer, int buflen)
+{
+ int orig = buflen;
+ FILE *file = fopen("metadata.bin", "wb");
+ while (buflen > 0) {
+ buflen -= fwrite(buffer+orig-buflen, 1, buflen, file);
+ }
+ fclose(file);
+ printf("Metadata of length %d saved as metadata.bin\n", orig);
+}
+
+static void
+audio_set_coverart(void *cls, void *session, const void *buffer, int buflen)
+{
+ int orig = buflen;
+ FILE *file = fopen("coverart.jpg", "wb");
+ while (buflen > 0) {
+ buflen -= fwrite(buffer+orig-buflen, 1, buflen, file);
+ }
+ fclose(file);
+ printf("Coverart of length %d saved as coverart.jpg\n", orig);
+}
+
static void
audio_process(void *cls, void *session, const void *buffer, int buflen)
{
raop_cbs.cls = NULL;
raop_cbs.audio_init = audio_init;
raop_cbs.audio_set_volume = audio_set_volume;
+ raop_cbs.audio_set_metadata = audio_set_metadata;
+ raop_cbs.audio_set_coverart = audio_set_coverart;
raop_cbs.audio_process = audio_process;
raop_cbs.audio_flush = audio_flush;
raop_cbs.audio_destroy = audio_destroy;
raop = raop_init_from_keyfile(&raop_cbs, "airport.key");
- raop_start(raop, &raop_port, hwaddr, sizeof(hwaddr));
+ raop_start(raop, &raop_port, hwaddr, sizeof(hwaddr), "test");
- dnssd = dnssd_init(hwaddr, sizeof(hwaddr), NULL);
- dnssd_register_raop(dnssd, name, raop_port);
+ dnssd = dnssd_init(NULL);
+ dnssd_register_raop(dnssd, name, raop_port, hwaddr, sizeof(hwaddr), 1);
#ifndef WIN32
sleep(100);