14 #include "filesystem/PipeFile.h" 15 #include "input/actions/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> 39 void Announce(ANNOUNCEMENT::AnnouncementFlag flag,
40 const std::string& sender,
41 const std::string& message,
44 void RegisterActionListener(
bool doRegister);
45 static void EnableActionProcessing(
bool enable);
50 void Process()
override;
52 static bool StartServer(
int port,
bool nonlocal,
bool usePassword,
const std::string &password=
"");
53 static void StopServer(
bool bWait);
54 static bool IsRunning();
55 bool IsRAOPRunningInternal();
56 static void SetMetadataFromBuffer(
const char *buffer,
unsigned int size);
57 static void SetCoverArtFromBuffer(
const char *buffer,
unsigned int size);
58 static void SetupRemoteControl();
59 static void FreeDACPRemote();
64 bool Initialize(
const std::string &password);
66 static void RefreshCoverArt(
const char *outputFilename = NULL);
67 static void RefreshMetadata();
68 static void ResetMetadata();
69 static void InformPlayerAboutPlayTimes();
72 raop_t* m_pRaop =
nullptr;
75 static std::string m_macAddress;
76 static CCriticalSection m_metadataLock;
77 static std::string m_metadata[3];
78 static bool m_streamStarted;
79 static CCriticalSection m_dacpLock;
80 static CDACP *m_pDACP;
81 static std::string m_dacp_id;
82 static std::string m_active_remote_header;
83 static CCriticalSection m_actionQueueLock;
84 static std::list<CAction> m_actionQueue;
85 static CEvent m_processActions;
86 static int m_sampleRate;
87 static unsigned int m_cachedStartTime;
88 static unsigned int m_cachedEndTime;
89 static unsigned int m_cachedCurrentTime;
91 class AudioOutputFunctions
94 static void* audio_init(
void *cls,
int bits,
int channels,
int samplerate);
95 static void audio_set_volume(
void *cls,
void *session,
float volume);
96 static void audio_set_metadata(
void *cls,
void *session,
const void *buffer,
int buflen);
97 static void audio_set_coverart(
void *cls,
void *session,
const void *buffer,
int buflen);
98 static void audio_process(
void *cls,
void *session,
const void *buffer,
int buflen);
99 static void audio_destroy(
void *cls,
void *session);
100 static void audio_remote_control_id(
void *cls,
const char *identifier,
const char *active_remote_header);
101 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:21
Definition: AirTunesServer.h:33
bool OnAction(const CAction &action) override
Handle a GUI action.
Definition: AirTunesServer.cpp:209
Interface defining methods to handle GUI actions.
Definition: IActionListener.h:22