X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Ftest%2Fexample.c;h=c07b1268c6a2d271b3949028c18e98982f563140;hb=fda63ad40b874933e2342a1f2f3d6f4b642d12ff;hp=999bb6b0c4b1500cb39e09b452851a5d674e0f95;hpb=406e97773573c7f8b4d019025e2694b914aca830;p=deb_shairplay.git diff --git a/src/test/example.c b/src/test/example.c index 999bb6b..c07b126 100644 --- a/src/test/example.c +++ b/src/test/example.c @@ -2,13 +2,17 @@ #include #include +#ifdef WIN32 +#include +#endif + #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 @@ -17,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) { @@ -38,6 +66,12 @@ audio_destroy(void *cls, void *session) fclose(session); } +static void +raop_log_callback(int level, const char *msg) +{ + printf("RAOP LOG(%d): %s\n", level, msg); +} + int main(int argc, char *argv[]) { @@ -52,17 +86,25 @@ 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_set_log_level(raop, RAOP_LOG_DEBUG); + raop_set_log_callback(raop, &raop_log_callback); + 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); +#else + Sleep(100*1000); +#endif dnssd_unregister_raop(dnssd); dnssd_destroy(dnssd);