// snd_pcm_uframes_t frames = 441 * 10;
snd_pcm_uframes_t buffer_size, actual_buffer_length;
snd_pcm_access_t access;
+
+ // ensure no calls are made to the alsa device enquiring about the buffer length if synchronisation is disabled.
+ if (config.no_sync!=0)
+ audio_alsa.delay = NULL;
ret = snd_pcm_open(&alsa_handle, alsa_out_dev, SND_PCM_STREAM_PLAYBACK, 0);
if (ret < 0)
// string to identify the source's remote control on the network.
// 'acre' -- this is the source's Active-Remote token, necessary if you want
// to send commands to the source's remote control (if it has one).
+// `clip` -- the payload is the IP number of the client, i.e. the sender of audio.
+// Can be an IPv4 or an IPv6 number.
+
//
// including a simple base64 encoder to minimise malloc/free activity
sa = (struct sockaddr_in*)&conn->remote;
inet_ntop(AF_INET, &(sa->sin_addr), remote_ip4, INET_ADDRSTRLEN);
unsigned short int rport = ntohs(sa->sin_port);
+#ifdef CONFIG_METADATA
+ send_ssnc_metadata('clip', strdup(ip4), strlen(ip4) , 1);
+#endif
+
debug(1,"New RTSP connection from %s:%u to self at %s:%u.",remote_ip4,rport,ip4,tport);
}
#ifdef AF_INET6
sa6 = (struct sockaddr_in6*)&conn->remote; // pretend this is loaded with something
inet_ntop(AF_INET6, &(sa6->sin6_addr), remote_ip6, INET6_ADDRSTRLEN);
u_int16_t rport = ntohs(sa6->sin6_port);
-
+#ifdef CONFIG_METADATA
+ send_ssnc_metadata('clip', strdup(ip6), strlen(ip6), 1);
+#endif
debug(1,"New RTSP connection from [%s]:%u to self at [%s]:%u.",remote_ip6,rport,ip6,tport);
}
#endif