mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-25 06:59:52 -05:00
raop: Add autoreconnect feature
This patch adds the autoreconnect feature to the raop module. This is mainly to be used in a server context, but can be used also in a desktop usage context. With autoreconnect feature, the raop module behaves like this: - At initialisation or in case of the RTSP TCP connection lost, it tries to reconnect every 5 seconds - In case of any fatal error, it tries to reconnect every 5 seconds - In UDP mode, if no timing packets received anymore for a long time, RTSP connection is closed, then it tries to reconnect.. - After reconnection, once RTSP session has been established again, playing is resumed automatically. - When the connection is not established yet (or loss), the sink behaves like a null sink. In the source code I called it "autonull", even if autonull is set to autoreconnect param value, it could be split into two different params.
This commit is contained in:
parent
46dd3be8ce
commit
4854524058
6 changed files with 293 additions and 65 deletions
|
|
@ -57,7 +57,7 @@ typedef enum pa_raop_state {
|
|||
} pa_raop_state_t;
|
||||
|
||||
pa_raop_client* pa_raop_client_new(pa_core *core, const char *host, pa_raop_protocol_t protocol,
|
||||
pa_raop_encryption_t encryption, pa_raop_codec_t codec);
|
||||
pa_raop_encryption_t encryption, pa_raop_codec_t codec, bool autoreconnect);
|
||||
void pa_raop_client_free(pa_raop_client *c);
|
||||
|
||||
int pa_raop_client_authenticate(pa_raop_client *c, const char *password);
|
||||
|
|
@ -71,9 +71,11 @@ int pa_raop_client_stream(pa_raop_client *c);
|
|||
int pa_raop_client_set_volume(pa_raop_client *c, pa_volume_t volume);
|
||||
int pa_raop_client_flush(pa_raop_client *c);
|
||||
int pa_raop_client_teardown(pa_raop_client *c);
|
||||
void pa_raop_client_disconnect(pa_raop_client *c);
|
||||
|
||||
void pa_raop_client_get_frames_per_block(pa_raop_client *c, size_t *size);
|
||||
bool pa_raop_client_register_pollfd(pa_raop_client *c, pa_rtpoll *poll, pa_rtpoll_item **poll_item);
|
||||
bool pa_raop_client_is_timing_fd(pa_raop_client *c, const int fd);
|
||||
pa_volume_t pa_raop_client_adjust_volume(pa_raop_client *c, pa_volume_t volume);
|
||||
void pa_raop_client_handle_oob_packet(pa_raop_client *c, const int fd, const uint8_t packet[], ssize_t size);
|
||||
ssize_t pa_raop_client_send_audio_packet(pa_raop_client *c, pa_memchunk *block, size_t offset);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue