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