9 audio_init(void *cls
, void **session
, int bits
, int channels
, int samplerate
)
11 *session
= fopen("audio.pcm", "wb");
15 audio_set_volume(void *cls
, void *session
, float volume
)
17 printf("Setting volume to %f\n", volume
);
21 audio_process(void *cls
, void *session
, const void *buffer
, int buflen
)
25 buflen
-= fwrite(buffer
+orig
-buflen
, 1, buflen
, session
);
30 audio_flush(void *cls
, void *session
)
32 printf("Flushing audio\n");
36 audio_destroy(void *cls
, void *session
)
42 main(int argc
, char *argv
[])
44 const char *name
= "AppleTV";
45 unsigned short raop_port
= 5000;
46 const char hwaddr
[] = { 0x48, 0x5d, 0x60, 0x7c, 0xee, 0x22 };
50 raop_callbacks_t raop_cbs
;
53 raop_cbs
.audio_init
= audio_init
;
54 raop_cbs
.audio_set_volume
= audio_set_volume
;
55 raop_cbs
.audio_process
= audio_process
;
56 raop_cbs
.audio_flush
= audio_flush
;
57 raop_cbs
.audio_destroy
= audio_destroy
;
59 raop
= raop_init_from_keyfile(&raop_cbs
, "airport.key", hwaddr
, sizeof(hwaddr
));
60 raop_start(raop
, &raop_port
);
62 dnssd
= dnssd_init(hwaddr
, sizeof(hwaddr
), NULL
);
63 dnssd_register_raop(dnssd
, name
, raop_port
);
67 dnssd_unregister_raop(dnssd
);