Add cls pointer to the logger
[deb_shairplay.git] / src / test / example.c
index 98c6fcd66f5ac5b213e7c6bab4eb8dff5e2b0bb9..e857642da911b77cfd288e906a010f10bdc4efce 100644 (file)
@@ -9,10 +9,10 @@
 #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
@@ -21,6 +21,30 @@ audio_set_volume(void *cls, void *session, float volume)
        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)
 {
@@ -42,6 +66,12 @@ audio_destroy(void *cls, void *session)
        fclose(session);
 }
 
+static void
+raop_log_callback(void *cls, int level, const char *msg)
+{
+       printf("RAOP LOG(%d): %s\n", level, msg);
+}
+
 int
 main(int argc, char *argv[])
 {
@@ -56,15 +86,19 @@ main(int argc, char *argv[])
        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 = raop_init_from_keyfile(10, &raop_cbs, "airport.key");
+       raop_set_log_level(raop, RAOP_LOG_DEBUG);
+       raop_set_log_callback(raop, &raop_log_callback, NULL);
+       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);