1. check_classic_mac_basic.yml — update to latest macOS-latest 2. docker-on-push-tag-or-pr — dependant updates 3. FFTConvolver — fix a compilation warning when the DEBUG flag is turned off 4. Reorganise some source files — e.g. move most of the metadata stuff into a subdirectory 5. Remove unused special-purpose AirPlay 2 RC event handler. 6. Reorganise source files and source code relating to the standard event handler. 7. Check configuration settings a little more carefully to offer more meaningful diagnostics. 8. Add password to AirPlay 2 and reorganise initialisation to set AirPlay 2 flags accordingly. Also, remove redundant airplay_pin. 9. Remove redundant debug facility definitions from common.h 10. Make it possible to omit all the dacp stuff from a build. 11. Make it possible to omit metadata multicast from a build. 12. Add AP2-native metadata by setting bit 50 of features to true. 13. Improve stability when pre-empting an existing play session. 14. Fix a few compiler warnings in the pair_ap library. 15. Ensure that the audio format is known before starting synchronisation. 16. Improve handle_configure to set/clear a new config setting. Doesn’t seem to do anything… 17. Experimentally turn off bit 46 of AirPlay 2 features — seems to stop failing pair-verify attempts.
62 lines
1.6 KiB
C
62 lines
1.6 KiB
C
#ifndef _RTSP_H
|
|
#define _RTSP_H
|
|
|
|
#include "player.h"
|
|
|
|
typedef struct {
|
|
int index_number;
|
|
uint32_t referenceCount; // we might start using this...
|
|
unsigned int nheaders;
|
|
char *name[16];
|
|
char *value[16];
|
|
|
|
uint32_t contentlength;
|
|
char *content;
|
|
|
|
// for requests
|
|
char method[16];
|
|
char path[256];
|
|
|
|
// for responses
|
|
int respcode;
|
|
} rtsp_message;
|
|
|
|
void msg_retain(rtsp_message *msg);
|
|
void msg_free(rtsp_message **msgh);
|
|
|
|
extern pthread_rwlock_t principal_conn_lock;
|
|
extern rtsp_conn_info *principal_conn;
|
|
extern rtsp_conn_info **conns;
|
|
|
|
void *rtsp_listen_loop(__attribute((unused)) void *arg);
|
|
|
|
void lock_player();
|
|
void unlock_player();
|
|
|
|
// result of trying to acquire or release the play lock
|
|
typedef enum {
|
|
play_lock_released,
|
|
play_lock_already_released,
|
|
play_lock_already_acquired,
|
|
play_lock_acquired_without_breaking_in,
|
|
play_lock_acquired_by_breaking_in,
|
|
play_lock_aquisition_failed
|
|
} play_lock_r;
|
|
|
|
// this can be used to [try to] forcibly stop a play session
|
|
play_lock_r get_play_lock(rtsp_conn_info *conn, int allow_session_interruption);
|
|
// this will release the play lock only if the conn has it or if the conn is NULL
|
|
void release_play_lock(rtsp_conn_info *conn);
|
|
|
|
|
|
#ifdef CONFIG_AIRPLAY_2
|
|
ssize_t read_encrypted(int fd, pair_cipher_bundle *ctx, void *buf, size_t count);
|
|
ssize_t write_encrypted(int fd, pair_cipher_bundle *ctx, const void *buf, size_t count);
|
|
|
|
void generateTxtDataValueInfo(rtsp_conn_info *conn, void **response, size_t *responseLength);
|
|
plist_t generateInfoPlist(rtsp_conn_info *conn);
|
|
char *plist_as_xml_text(plist_t the_plist); // caller must free the returned NUL-terminated string
|
|
#endif
|
|
|
|
#endif // _RTSP_H
|