X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Ftest%2Fexample.c;h=e857642da911b77cfd288e906a010f10bdc4efce;hb=2975b4b88d0103dcc1ac84202bcfc221671e6743;hp=98c6fcd66f5ac5b213e7c6bab4eb8dff5e2b0bb9;hpb=979533c39ad690eccd14b5d03f92f32b3186cda1;p=deb_shairplay.git diff --git a/src/test/example.c b/src/test/example.c index 98c6fcd..e857642 100644 --- a/src/test/example.c +++ b/src/test/example.c @@ -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);