14 #include "filesystem/PipeFile.h" 15 #include "interfaces/IActionListener.h" 16 #include "interfaces/IAnnouncer.h" 17 #include "threads/CriticalSection.h" 18 #include "threads/Thread.h" 24 #include <arpa/inet.h> 25 #include <netinet/in.h> 26 #include <shairplay/raop.h> 27 #include <sys/socket.h> 28 #include <sys/types.h> 37 void Announce(ANNOUNCEMENT::AnnouncementFlag flag,
38 const std::string& sender,
39 const std::string& message,
42 void RegisterActionListener(
bool doRegister);
43 static void EnableActionProcessing(
bool enable);
45 bool OnAction(
const CAction &action)
override;
48 void Process()
override;
50 static bool StartServer(
int port,
bool nonlocal,
bool usePassword,
const std::string &password=
"");
51 static void StopServer(
bool bWait);
52 static bool IsRunning();
53 bool IsRAOPRunningInternal();
54 static void SetMetadataFromBuffer(
const char *buffer,
unsigned int size);
55 static void SetCoverArtFromBuffer(
const char *buffer,
unsigned int size);
56 static void SetupRemoteControl();
57 static void FreeDACPRemote();
62 bool Initialize(
const std::string &password);
64 static void RefreshCoverArt(
const char *outputFilename = NULL);
65 static void RefreshMetadata();
66 static void ResetMetadata();
67 static void InformPlayerAboutPlayTimes();
70 raop_t* m_pRaop =
nullptr;
73 static std::string m_macAddress;
74 static CCriticalSection m_metadataLock;
75 static std::string m_metadata[3];
76 static bool m_streamStarted;
77 static CCriticalSection m_dacpLock;
78 static CDACP *m_pDACP;
79 static std::string m_dacp_id;
80 static std::string m_active_remote_header;
81 static CCriticalSection m_actionQueueLock;
82 static std::list<CAction> m_actionQueue;
83 static CEvent m_processActions;
84 static int m_sampleRate;
85 static unsigned int m_cachedStartTime;
86 static unsigned int m_cachedEndTime;
87 static unsigned int m_cachedCurrentTime;
89 class AudioOutputFunctions
92 static void* audio_init(
void *cls,
int bits,
int channels,
int samplerate);
93 static void audio_set_volume(
void *cls,
void *session,
float volume);
94 static void audio_set_metadata(
void *cls,
void *session,
const void *buffer,
int buflen);
95 static void audio_set_coverart(
void *cls,
void *session,
const void *buffer,
int buflen);
96 static void audio_process(
void *cls,
void *session,
const void *buffer,
int buflen);
97 static void audio_destroy(
void *cls,
void *session);
98 static void audio_remote_control_id(
void *cls,
const char *identifier,
const char *active_remote_header);
99 static void audio_set_progress(
void *cls,
void *session,
unsigned int start,
unsigned int curr,
unsigned int end);
This is an Event class built from a ConditionVariable.
Definition: Event.h:35
Definition: PipeFile.h:27
Definition: IAnnouncer.h:70
class encapsulating information regarding a particular user action to be sent to windows and controls...
Definition: Action.h:22
Definition: AirTunesServer.h:33
Definition: IActionListener.h:13