SOUND4 x1.CLOUD Library [1.5.7]
Loading...
Searching...
No Matches
sound4cl_cdef.h
Go to the documentation of this file.
1
6#pragma once
7
8#include <stdint.h>
9#ifdef __unix__
10 #include <sys/types.h>
11#endif
12
13#ifdef _WIN32
14 #include <stringapiset.h>
15 #include <wchar.h>
17 #define fs_strdup wcsdup
18 typedef wchar_t fs_char;
19 #ifdef _MSC_VER
20 #define __BYTE_ORDER__ REG_DWORD
21 #define __ORDER_LITTLE_ENDIAN__ REG_DWORD_LITTLE_ENDIAN
22 #define __ORDER_BIG_ENDIAN__ REG_DWORD_BIG_ENDIAN
23 #endif
24 #ifdef _MSC_VER
25 #pragma warning(disable : 4996)
26 #endif
27#else // !_WIN32
29 #define fs_strdup strdup
30 typedef char fs_char;
31#endif // !_WIN32
32
33#ifdef __cplusplus
34extern "C" {
35#endif // __cplusplus
36
37struct sound4cl_SOUND4_ProcessInfo {
38 size_t struct_size;
39 const char *name;
40 const char *prefix;
41 const char *shortname;
42 const char *version;
43};
44enum sound4cl_LogSeverity {
45 sound4cl_none = 0,
46 sound4cl_fatal = 1,
47 sound4cl_error = 2,
48 sound4cl_warning = 3,
49 sound4cl_info = 4,
50 sound4cl_verbose = 5,
51 sound4cl_verbose2 = 6,
52 sound4cl_verbose3 = 7,
53 sound4cl_verbose4 = 8,
54 sound4cl_verbose5 = 9,
55};
56struct sound4cl_CInstance;
57struct sound4cl_CParameters;
58struct sound4cl_CBus;
59struct sound4cl_CClientInstance;
60enum sound4cl_PresetChange_Kind {
64};
65#define SOUND4_INVALID_WEBSERVER_ID ((uint64_t)-1)
66#define SOUND4_WEBSERVER_HTTP_OK (1<<0)
67#define SOUND4_WEBSERVER_HTTPS_OK (1<<1)
68
72enum sound4cl_SampleFormat {
82
83 // Native definitions, only links to the physical ones
84 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
89 #else
94 #endif
95};
96
97const struct sound4cl_SOUND4_ProcessInfo* sound4cl_SOUND4_GetProcessInfo();
98const char *sound4cl_GetVersion();
99unsigned int sound4cl_GetChunkSizeInFrames();
100unsigned int* sound4cl_GetPossibleChunkSizeInFrames();
101unsigned int sound4cl_GetChannelCount();
102unsigned int sound4cl_GetAudioInputCount();
103unsigned int sound4cl_GetAudioOutputCount();
104unsigned int sound4cl_GetSampleRate();
105typedef void (*sound4cl_loggerfn) (enum sound4cl_LogSeverity, const char *);
106void sound4cl_SetLoggerCallback( sound4cl_loggerfn logger );
107void sound4cl_SetLogSeverity( enum sound4cl_LogSeverity severity );
108struct sound4cl_CParameters *sound4cl_NewParameters();
109void sound4cl_FreeParameters(struct sound4cl_CParameters *params);
110void sound4cl_SetParameter(struct sound4cl_CParameters *params, const char *name, const char *value);
111const char *sound4cl_GetParameter(struct sound4cl_CParameters *params, const char *name);
112void sound4cl_FreeParameterValue(const char *value);
113struct sound4cl_CInstance *sound4cl_InitProcess(
114 const char *LoginKey,
115 const char *RadioName,
116 const char *Access_Key_ID,
117 const char *Access_Key_Secret,
118 const char *save_path
119 );
120struct sound4cl_CInstance *sound4cl_InitProcess2(
121 const char *LoginKey,
122 const char *RadioName,
123 const char *Access_Key_ID,
124 const char *Access_Key_Secret,
125 const char *save_path,
126 const struct sound4cl_CParameters *parameters
127 );
128struct sound4cl_CInstance *sound4cl_InitProcess3(
129 const char *LoginKey,
130 const char *RadioName,
131 const char *Access_Key_ID,
132 const char *Access_Key_Secret,
133 const char *save_path,
134 const struct sound4cl_CParameters *parameters,
135 unsigned int frames_per_chunk
136 );
137unsigned int sound4cl_GetProcessChunkFrames(struct sound4cl_CInstance *instance);
138int sound4cl_TerminateProcess(struct sound4cl_CInstance *instance);
139void sound4cl_ExitProcess(struct sound4cl_CInstance *instance);
140struct sound4cl_CBus* sound4cl_NewBus();
141void sound4cl_FreeBus(struct sound4cl_CBus *bus);
142void sound4cl_SetInstanceBus(struct sound4cl_CParameters *params, struct sound4cl_CBus *bus);
143typedef char * (*sound4cl_storage_reader) (const fs_char *filename, void* userdata);
144typedef void (*sound4cl_storage_reader_free) (char *content, void* userdata);
145typedef int (*sound4cl_storage_writer) (const fs_char *filename, const char *content, void* userdata);
146typedef int (*sound4cl_storage_exists) (const fs_char *filename, void* userdata);
147typedef fs_char** (*sound4cl_storage_getall) (void* userdata);
148typedef void (*sound4cl_storage_getall_free) (fs_char**all, void* userdata);
149typedef int (*sound4cl_storage_remove) (const fs_char *filename, void* userdata);
150typedef int (*sound4cl_storage_rename) (const fs_char *from, const fs_char *to, void* userdata);
151void sound4cl_SetPresetManager(struct sound4cl_CParameters *params
152 , sound4cl_storage_reader reader, sound4cl_storage_reader_free
153 , sound4cl_storage_writer writer
154 , sound4cl_storage_exists exists
155 , sound4cl_storage_getall getall, sound4cl_storage_getall_free getall_free
156 , sound4cl_storage_remove remove
157 , sound4cl_storage_rename rename
158 , int IsReadOnly
159 , void* userdata
160 );
161void sound4cl_PresetManager_InformChange(struct sound4cl_CInstance *instance, const fs_char *relative_path, enum sound4cl_PresetChange_Kind change_kind);
162void sound4cl_SetMetadata(struct sound4cl_CInstance *instance, const char* key, const char* value);
163void sound4cl_SetMetadataMulti(struct sound4cl_CInstance *instance, const char** keyvalue);
164const char** sound4cl_GetMetadataInfos(struct sound4cl_CInstance *instance);
165void sound4cl_FreeMetadataInfos(struct sound4cl_CInstance *instance, const char** infos);
166void sound4cl_StartUpdateThread(struct sound4cl_CInstance *instance, unsigned int port);
167void sound4cl_StopUpdateThread(struct sound4cl_CInstance *instance);
168int sound4cl_WaitUpdateThreadReady(struct sound4cl_CInstance *instance, int milliseconds);
169void sound4cl_ProcessAudio(struct sound4cl_CInstance *instance, const float *input, float *output );
170void sound4cl_ProcessAudio_Planar(struct sound4cl_CInstance *instance
171 , float const * const *input
172 , float * const *output);
173float *sound4cl_GetBufferIn(struct sound4cl_CInstance *instance);
174float *sound4cl_GetBufferOut(struct sound4cl_CInstance *instance);
175unsigned int sound4cl_GetEstimatedDelay(struct sound4cl_CInstance *instance);
176const char *sound4cl_GetFormatName(const enum sound4cl_SampleFormat fmt);
177enum sound4cl_SampleFormat sound4cl_GetFormatFromName(const char *name);
178unsigned int sound4cl_GetBytesFromFormat(const enum sound4cl_SampleFormat fmt);
179unsigned int sound4cl_GetMaxPacketFrame(struct sound4cl_CInstance *instance);
180unsigned int sound4cl_AddAudio(struct sound4cl_CInstance *instance, const uint8_t *payload, unsigned int nFrame, enum sound4cl_SampleFormat fmt );
181unsigned int sound4cl_AddPadAudio(struct sound4cl_CInstance *instance);
182unsigned int sound4cl_GetOutputCount(struct sound4cl_CInstance *instance);
183unsigned int sound4cl_GetAudio(struct sound4cl_CInstance *instance, uint8_t *payload, unsigned int max_nFrame, enum sound4cl_SampleFormat fmt );
184void sound4cl_AudioConvertFrom(const uint8_t *payload, float *output, size_t nSpl, enum sound4cl_SampleFormat fmt);
185void sound4cl_AudioConvertTo(const float *input, uint8_t *payload, size_t nSpl, enum sound4cl_SampleFormat fmt);
186void sound4cl_StereoToMono(const float *input, float *output, size_t nFrame);
187void sound4cl_MonoToStereo(const float *input, float *output, size_t nFrame);
188void sound4cl_StereoToMono_Planar(const float *inputL, const float *inputR, float *output, size_t nFrame);
189void sound4cl_MonoToStereo_Planar(const float *input, float *outputL, float *outputR, size_t nFrame);
190void sound4cl_AudioMonoFromLiveStereo(const uint8_t *payload, float *output);
191void sound4cl_AudioMonoToLiveStereo(const float *input, uint8_t *payload);
192struct sound4cl_CClientInstance *sound4cl_NewClient(struct sound4cl_CInstance *instance);
193void sound4cl_DeleteClient(struct sound4cl_CClientInstance *client);
194const char *sound4cl_ProcessJson(struct sound4cl_CClientInstance *client, const char *json_str, int *need_save);
195void sound4cl_FreeJsonAnswer(const char *json_str);
196int sound4cl_SaveState(struct sound4cl_CInstance *instance);
197uint64_t sound4cl_Webserver_tcp(unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port);
198uint64_t sound4cl_Webserver_tcp2(unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port, const struct sound4cl_CParameters *parameters);
199uint64_t sound4cl_Webserver(unsigned int listenport, unsigned int listenport_secure, struct sound4cl_CInstance *instance);
200int sound4cl_Webserver_Stop(uint64_t id, int timeout_ms);
201int sound4cl_Webserver_Status(uint64_t id);
202void sound4cl_Webserver_SetAppHealth(struct sound4cl_CInstance *instance, int httpcode, const char* contenttype, const char* content);
203void sound4cl_Webserver_GetAppHealth(struct sound4cl_CInstance *instance, int* httpcode, char** contenttype, char** content);
204void sound4cl_Webserver_FreeString(char* str);
205
206// Tracing (Windows only)
207#ifdef _WIN32
208 #ifndef TLG_HAVE_EVENT_SET_INFORMATION // TraceLoggingProvider.h has not been included
209 struct _tlgProvider_t;
210 typedef struct _tlgProvider_t const* TraceLoggingHProvider;
211 #endif // !TLG_HAVE_EVENT_SET_INFORMATION
212void sound4cl_SetInstanceTracing(struct sound4cl_CParameters *params, TraceLoggingHProvider tracing_provider, GUID activity_guid);
213void sound4cl_SetInstanceTracingProcessActivity(struct sound4cl_CInstance *instance, GUID activity_guid);
214#endif // _WIN32
215
216
217#ifdef __cplusplus
218} // extern "C"
219#endif // __cplusplus
wchar_t fs_char
struct _tlgProvider_t const * TraceLoggingHProvider
@ F32_NATIVE
32-bit floating-point, native
@ change_kind_modified
Path has been modified.
@ INVALID_FORMAT
Invalid.
@ S16_NATIVE
16-bit signed integer, native
@ change_kind_created
Path has been created.
@ F32_LE
32-bit floating-point, little-endian
@ S16_BE
16-bit signed integer, big-endian
@ S32_BE
32-bit signed integer, big-endian
struct _tlgProvider_t const * TraceLoggingHProvider
@ S24_BE
24-bit signed integer, big-endian
@ S16_LE
16-bit signed integer, little-endian
@ F32_BE
32-bit floating-point, big-endian
@ S32_NATIVE
32-bit signed integer, native
@ change_kind_deleted
Path has been deleted.
@ S24_LE
24-bit signed integer, little-endian
wchar_t fs_char
@ S32_LE
32-bit signed integer, little-endian
@ S24_NATIVE
24-bit signed integer, native