SOUND4 IMPACT.CL Library [1.3.0]
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 #else // !_WIN32
26  #define fs_strdup strdup
27  typedef char fs_char;
28 #endif // !_WIN32
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif // __cplusplus
33 
35  size_t struct_size;
36  const char *name;
37  const char *prefix;
38  const char *shortname;
39  const char *version;
40 };
52 };
53 struct sound4cl_CInstance;
54 struct sound4cl_CParameters;
55 struct sound4cl_CBus;
56 struct sound4cl_CClientInstance;
61 };
62 #define SOUND4_INVALID_WEBSERVER_ID ((uint64_t)-1)
63 #define SOUND4_WEBSERVER_HTTP_OK (1<<0)
64 #define SOUND4_WEBSERVER_HTTPS_OK (1<<1)
65 
79 
80  // Native definitions, only links to the physical ones
81  #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
86  #else
91  #endif
92 };
93 
95 const char *sound4cl_GetVersion();
98 unsigned int sound4cl_GetChannelCount();
101 unsigned int sound4cl_GetSampleRate();
102 typedef void (*sound4cl_loggerfn) (enum sound4cl_LogSeverity, const char *);
105 struct sound4cl_CParameters *sound4cl_NewParameters();
106 void sound4cl_FreeParameters(struct sound4cl_CParameters *params);
107 void sound4cl_SetParameter(struct sound4cl_CParameters *params, const char *name, const char *value);
108 const char *sound4cl_GetParameter(struct sound4cl_CParameters *params, const char *name);
109 void sound4cl_FreeParameterValue(const char *value);
110 struct sound4cl_CInstance *sound4cl_InitProcess(
111  const char *LoginKey,
112  const char *RadioName,
113  const char *Access_Key_ID,
114  const char *Access_Key_Secret,
115  const char *save_path
116  );
117 struct sound4cl_CInstance *sound4cl_InitProcess2(
118  const char *LoginKey,
119  const char *RadioName,
120  const char *Access_Key_ID,
121  const char *Access_Key_Secret,
122  const char *save_path,
123  const struct sound4cl_CParameters *parameters
124  );
125 struct sound4cl_CInstance *sound4cl_InitProcess3(
126  const char *LoginKey,
127  const char *RadioName,
128  const char *Access_Key_ID,
129  const char *Access_Key_Secret,
130  const char *save_path,
131  const struct sound4cl_CParameters *parameters,
132  unsigned int frames_per_chunk
133  );
134 unsigned int sound4cl_GetProcessChunkFrames(struct sound4cl_CInstance *instance);
135 int sound4cl_TerminateProcess(struct sound4cl_CInstance *instance);
136 void sound4cl_ExitProcess(struct sound4cl_CInstance *instance);
137 struct sound4cl_CBus* sound4cl_NewBus();
138 void sound4cl_FreeBus(struct sound4cl_CBus *bus);
139 void sound4cl_SetInstanceBus(struct sound4cl_CParameters *params, struct sound4cl_CBus *bus);
140 typedef char * (*sound4cl_storage_reader) (const fs_char *filename, void* userdata);
141 typedef void (*sound4cl_storage_reader_free) (char *content, void* userdata);
142 typedef int (*sound4cl_storage_writer) (const fs_char *filename, const char *content, void* userdata);
143 typedef int (*sound4cl_storage_exists) (const fs_char *filename, void* userdata);
144 typedef fs_char** (*sound4cl_storage_getall) (void* userdata);
145 typedef void (*sound4cl_storage_getall_free) (fs_char**all, void* userdata);
146 typedef int (*sound4cl_storage_remove) (const fs_char *filename, void* userdata);
147 typedef int (*sound4cl_storage_rename) (const fs_char *from, const fs_char *to, void* userdata);
148 void sound4cl_SetPresetManager(struct sound4cl_CParameters *params
150  , sound4cl_storage_writer writer
151  , sound4cl_storage_exists exists
153  , sound4cl_storage_remove remove
154  , sound4cl_storage_rename rename
155  , int IsReadOnly
156  , void* userdata
157  );
158 void sound4cl_PresetManager_InformChange(struct sound4cl_CInstance *instance, const fs_char *relative_path, enum sound4cl_PresetChange_Kind change_kind);
159 void sound4cl_SetMetadata(struct sound4cl_CInstance *instance, const char* key, const char* value);
160 void sound4cl_SetMetadataMulti(struct sound4cl_CInstance *instance, const char** keyvalue);
161 const char** sound4cl_GetMetadataInfos(struct sound4cl_CInstance *instance);
162 void sound4cl_FreeMetadataInfos(struct sound4cl_CInstance *instance, const char** infos);
163 void sound4cl_StartUpdateThread(struct sound4cl_CInstance *instance, unsigned int port);
164 void sound4cl_StopUpdateThread(struct sound4cl_CInstance *instance);
165 int sound4cl_WaitUpdateThreadReady(struct sound4cl_CInstance *instance, int milliseconds);
166 void sound4cl_ProcessAudio(struct sound4cl_CInstance *instance, const float *input, float *output );
167 void sound4cl_ProcessAudio_Planar(struct sound4cl_CInstance *instance
168  , float const * const *input
169  , float * const *output);
170 float *sound4cl_GetBufferIn(struct sound4cl_CInstance *instance);
171 float *sound4cl_GetBufferOut(struct sound4cl_CInstance *instance);
172 unsigned int sound4cl_GetEstimatedDelay(struct sound4cl_CInstance *instance);
173 const char *sound4cl_GetFormatName(const enum sound4cl_SampleFormat fmt);
176 unsigned int sound4cl_GetMaxPacketFrame(struct sound4cl_CInstance *instance);
177 unsigned int sound4cl_AddAudio(struct sound4cl_CInstance *instance, const uint8_t *payload, unsigned int nFrame, enum sound4cl_SampleFormat fmt );
178 unsigned int sound4cl_AddPadAudio(struct sound4cl_CInstance *instance);
179 unsigned int sound4cl_GetOutputCount(struct sound4cl_CInstance *instance);
180 unsigned int sound4cl_GetAudio(struct sound4cl_CInstance *instance, uint8_t *payload, unsigned int max_nFrame, enum sound4cl_SampleFormat fmt );
181 void sound4cl_AudioConvertFrom(const uint8_t *payload, float *output, size_t nSpl, enum sound4cl_SampleFormat fmt);
182 void sound4cl_AudioConvertTo(const float *input, uint8_t *payload, size_t nSpl, enum sound4cl_SampleFormat fmt);
183 void sound4cl_StereoToMono(const float *input, float *output, size_t nFrame);
184 void sound4cl_MonoToStereo(const float *input, float *output, size_t nFrame);
185 void sound4cl_StereoToMono_Planar(const float *inputL, const float *inputR, float *output, size_t nFrame);
186 void sound4cl_MonoToStereo_Planar(const float *input, float *outputL, float *outputR, size_t nFrame);
187 void sound4cl_AudioMonoFromLiveStereo(const uint8_t *payload, float *output);
188 void sound4cl_AudioMonoToLiveStereo(const float *input, uint8_t *payload);
189 struct sound4cl_CClientInstance *sound4cl_NewClient(struct sound4cl_CInstance *instance);
190 void sound4cl_DeleteClient(struct sound4cl_CClientInstance *client);
191 const char *sound4cl_ProcessJson(struct sound4cl_CClientInstance *client, const char *json_str, int *need_save);
192 void sound4cl_FreeJsonAnswer(const char *json_str);
193 int sound4cl_SaveState(struct sound4cl_CInstance *instance);
194 uint64_t sound4cl_Webserver_tcp(unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port);
195 uint64_t sound4cl_Webserver_tcp2(unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port, const struct sound4cl_CParameters *parameters);
196 uint64_t sound4cl_Webserver(unsigned int listenport, unsigned int listenport_secure, struct sound4cl_CInstance *instance);
197 int sound4cl_Webserver_Stop(uint64_t id, int timeout_ms);
198 int sound4cl_Webserver_Status(uint64_t id);
199 void sound4cl_Webserver_SetAppHealth(struct sound4cl_CInstance *instance, int httpcode, const char* contenttype, const char* content);
200 void sound4cl_Webserver_GetAppHealth(struct sound4cl_CInstance *instance, int* httpcode, char** contenttype, char** content);
202 
203 #ifdef __cplusplus
204 } // extern "C"
205 #endif // __cplusplus
wchar_t fs_char
struct sound4cl_CInstance * sound4cl_InitProcess3(const char *LoginKey, const char *RadioName, const char *Access_Key_ID, const char *Access_Key_Secret, const char *save_path, const struct sound4cl_CParameters *parameters, unsigned int frames_per_chunk)
unsigned int sound4cl_AddAudio(struct sound4cl_CInstance *instance, const uint8_t *payload, unsigned int nFrame, enum sound4cl_SampleFormat fmt)
fs_char **(* sound4cl_storage_getall)(void *userdata)
unsigned int sound4cl_GetMaxPacketFrame(struct sound4cl_CInstance *instance)
uint64_t sound4cl_Webserver_tcp(unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port)
void sound4cl_Webserver_SetAppHealth(struct sound4cl_CInstance *instance, int httpcode, const char *contenttype, const char *content)
struct sound4cl_CBus * sound4cl_NewBus()
void sound4cl_FreeMetadataInfos(struct sound4cl_CInstance *instance, const char **infos)
char *(* sound4cl_storage_reader)(const fs_char *filename, void *userdata)
struct sound4cl_CInstance * sound4cl_InitProcess(const char *LoginKey, const char *RadioName, const char *Access_Key_ID, const char *Access_Key_Secret, const char *save_path)
void sound4cl_SetPresetManager(struct sound4cl_CParameters *params, sound4cl_storage_reader reader, sound4cl_storage_reader_free, sound4cl_storage_writer writer, sound4cl_storage_exists exists, sound4cl_storage_getall getall, sound4cl_storage_getall_free getall_free, sound4cl_storage_remove remove, sound4cl_storage_rename rename, int IsReadOnly, void *userdata)
unsigned int sound4cl_GetAudio(struct sound4cl_CInstance *instance, uint8_t *payload, unsigned int max_nFrame, enum sound4cl_SampleFormat fmt)
void sound4cl_SetParameter(struct sound4cl_CParameters *params, const char *name, const char *value)
unsigned int sound4cl_GetEstimatedDelay(struct sound4cl_CInstance *instance)
void sound4cl_DeleteClient(struct sound4cl_CClientInstance *client)
void sound4cl_FreeParameters(struct sound4cl_CParameters *params)
void sound4cl_MonoToStereo_Planar(const float *input, float *outputL, float *outputR, size_t nFrame)
void sound4cl_StereoToMono_Planar(const float *inputL, const float *inputR, float *output, size_t nFrame)
int sound4cl_Webserver_Stop(uint64_t id, int timeout_ms)
void sound4cl_SetInstanceBus(struct sound4cl_CParameters *params, struct sound4cl_CBus *bus)
void sound4cl_SetMetadataMulti(struct sound4cl_CInstance *instance, const char **keyvalue)
void(* sound4cl_storage_getall_free)(fs_char **all, void *userdata)
void(* sound4cl_storage_reader_free)(char *content, void *userdata)
void sound4cl_SetLogSeverity(enum sound4cl_LogSeverity severity)
void sound4cl_StartUpdateThread(struct sound4cl_CInstance *instance, unsigned int port)
const char * sound4cl_ProcessJson(struct sound4cl_CClientInstance *client, const char *json_str, int *need_save)
const char * sound4cl_GetParameter(struct sound4cl_CParameters *params, const char *name)
void(* sound4cl_loggerfn)(enum sound4cl_LogSeverity, const char *)
void sound4cl_ProcessAudio_Planar(struct sound4cl_CInstance *instance, float const *const *input, float *const *output)
void sound4cl_FreeJsonAnswer(const char *json_str)
int sound4cl_SaveState(struct sound4cl_CInstance *instance)
void sound4cl_Webserver_GetAppHealth(struct sound4cl_CInstance *instance, int *httpcode, char **contenttype, char **content)
void sound4cl_StereoToMono(const float *input, float *output, size_t nFrame)
unsigned int sound4cl_AddPadAudio(struct sound4cl_CInstance *instance)
int sound4cl_WaitUpdateThreadReady(struct sound4cl_CInstance *instance, int milliseconds)
void sound4cl_SetMetadata(struct sound4cl_CInstance *instance, const char *key, const char *value)
const char * sound4cl_GetVersion()
void sound4cl_AudioMonoFromLiveStereo(const uint8_t *payload, float *output)
float * sound4cl_GetBufferOut(struct sound4cl_CInstance *instance)
struct sound4cl_CParameters * sound4cl_NewParameters()
uint64_t sound4cl_Webserver_tcp2(unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port, const struct sound4cl_CParameters *parameters)
unsigned int sound4cl_GetAudioInputCount()
void sound4cl_AudioConvertFrom(const uint8_t *payload, float *output, size_t nSpl, enum sound4cl_SampleFormat fmt)
unsigned int sound4cl_GetProcessChunkFrames(struct sound4cl_CInstance *instance)
const char ** sound4cl_GetMetadataInfos(struct sound4cl_CInstance *instance)
const struct sound4cl_SOUND4_ProcessInfo * sound4cl_SOUND4_GetProcessInfo()
void sound4cl_FreeParameterValue(const char *value)
sound4cl_LogSeverity
Definition: sound4cl_cdef.h:41
@ sound4cl_info
Definition: sound4cl_cdef.h:46
@ sound4cl_none
Definition: sound4cl_cdef.h:42
@ sound4cl_verbose5
Definition: sound4cl_cdef.h:51
@ sound4cl_warning
Definition: sound4cl_cdef.h:45
@ sound4cl_verbose4
Definition: sound4cl_cdef.h:50
@ sound4cl_verbose2
Definition: sound4cl_cdef.h:48
@ sound4cl_verbose3
Definition: sound4cl_cdef.h:49
@ sound4cl_error
Definition: sound4cl_cdef.h:44
@ sound4cl_verbose
Definition: sound4cl_cdef.h:47
@ sound4cl_fatal
Definition: sound4cl_cdef.h:43
void sound4cl_AudioConvertTo(const float *input, uint8_t *payload, size_t nSpl, enum sound4cl_SampleFormat fmt)
unsigned int sound4cl_GetChannelCount()
void sound4cl_PresetManager_InformChange(struct sound4cl_CInstance *instance, const fs_char *relative_path, enum sound4cl_PresetChange_Kind change_kind)
void sound4cl_ProcessAudio(struct sound4cl_CInstance *instance, const float *input, float *output)
int(* sound4cl_storage_remove)(const fs_char *filename, void *userdata)
int sound4cl_Webserver_Status(uint64_t id)
enum sound4cl_SampleFormat sound4cl_GetFormatFromName(const char *name)
unsigned int sound4cl_GetChunkSizeInFrames()
int sound4cl_TerminateProcess(struct sound4cl_CInstance *instance)
void sound4cl_Webserver_FreeString(char *str)
unsigned int sound4cl_GetAudioOutputCount()
void sound4cl_MonoToStereo(const float *input, float *output, size_t nFrame)
void sound4cl_AudioMonoToLiveStereo(const float *input, uint8_t *payload)
void sound4cl_ExitProcess(struct sound4cl_CInstance *instance)
void sound4cl_StopUpdateThread(struct sound4cl_CInstance *instance)
int(* sound4cl_storage_exists)(const fs_char *filename, void *userdata)
uint64_t sound4cl_Webserver(unsigned int listenport, unsigned int listenport_secure, struct sound4cl_CInstance *instance)
void sound4cl_FreeBus(struct sound4cl_CBus *bus)
int(* sound4cl_storage_rename)(const fs_char *from, const fs_char *to, void *userdata)
int(* sound4cl_storage_writer)(const fs_char *filename, const char *content, void *userdata)
unsigned int sound4cl_GetBytesFromFormat(const enum sound4cl_SampleFormat fmt)
unsigned int * sound4cl_GetPossibleChunkSizeInFrames()
sound4cl_SampleFormat
Definition: sound4cl_cdef.h:69
@ F32_NATIVE
32-bit floating-point, native
Definition: sound4cl_cdef.h:85
@ INVALID_FORMAT
Invalid.
Definition: sound4cl_cdef.h:70
@ S16_NATIVE
16-bit signed integer, native
Definition: sound4cl_cdef.h:82
@ F32_LE
32-bit floating-point, little-endian
Definition: sound4cl_cdef.h:77
@ S16_BE
16-bit signed integer, big-endian
Definition: sound4cl_cdef.h:72
@ S32_BE
32-bit signed integer, big-endian
Definition: sound4cl_cdef.h:76
@ S24_BE
24-bit signed integer, big-endian
Definition: sound4cl_cdef.h:74
@ S16_LE
16-bit signed integer, little-endian
Definition: sound4cl_cdef.h:71
@ F32_BE
32-bit floating-point, big-endian
Definition: sound4cl_cdef.h:78
@ S32_NATIVE
32-bit signed integer, native
Definition: sound4cl_cdef.h:84
@ S24_LE
24-bit signed integer, little-endian
Definition: sound4cl_cdef.h:73
@ S32_LE
32-bit signed integer, little-endian
Definition: sound4cl_cdef.h:75
@ S24_NATIVE
24-bit signed integer, native
Definition: sound4cl_cdef.h:83
struct sound4cl_CClientInstance * sound4cl_NewClient(struct sound4cl_CInstance *instance)
const char * sound4cl_GetFormatName(const enum sound4cl_SampleFormat fmt)
wchar_t fs_char
Definition: sound4cl_cdef.h:18
struct sound4cl_CInstance * sound4cl_InitProcess2(const char *LoginKey, const char *RadioName, const char *Access_Key_ID, const char *Access_Key_Secret, const char *save_path, const struct sound4cl_CParameters *parameters)
sound4cl_PresetChange_Kind
Definition: sound4cl_cdef.h:57
@ change_kind_modified
Path has been modified.
Definition: sound4cl_cdef.h:59
@ change_kind_created
Path has been created.
Definition: sound4cl_cdef.h:58
@ change_kind_deleted
Path has been deleted.
Definition: sound4cl_cdef.h:60
unsigned int sound4cl_GetSampleRate()
float * sound4cl_GetBufferIn(struct sound4cl_CInstance *instance)
unsigned int sound4cl_GetOutputCount(struct sound4cl_CInstance *instance)
void sound4cl_SetLoggerCallback(sound4cl_loggerfn logger)
size_t struct_size
The size of total this structure, for compatibility checking.
Definition: sound4cl_cdef.h:35
const char * name
The name of the processor.
Definition: sound4cl_cdef.h:36
const char * version
Library version.
Definition: sound4cl_cdef.h:39
const char * shortname
A short name of the processor, single word.
Definition: sound4cl_cdef.h:38
const char * prefix
The prefix of this processor functions.
Definition: sound4cl_cdef.h:37