SOUND4 IMPACT.CL Library [1.3.6]
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#else // !_WIN32
26 #define fs_strdup strdup
27 typedef char fs_char;
28#endif // !_WIN32
29
30#ifdef __cplusplus
31extern "C" {
32#endif // __cplusplus
33
34struct sound4cl_SOUND4_ProcessInfo {
35 size_t struct_size;
36 const char *name;
37 const char *prefix;
38 const char *shortname;
39 const char *version;
40};
41enum sound4cl_LogSeverity {
42 sound4cl_none = 0,
43 sound4cl_fatal = 1,
44 sound4cl_error = 2,
45 sound4cl_warning = 3,
46 sound4cl_info = 4,
47 sound4cl_verbose = 5,
48 sound4cl_verbose2 = 6,
49 sound4cl_verbose3 = 7,
50 sound4cl_verbose4 = 8,
51 sound4cl_verbose5 = 9,
52};
53struct sound4cl_CInstance;
54struct sound4cl_CParameters;
55struct sound4cl_CBus;
56struct sound4cl_CClientInstance;
57enum sound4cl_PresetChange_Kind {
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
69enum sound4cl_SampleFormat {
79
80 // Native definitions, only links to the physical ones
81 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
86 #else
91 #endif
92};
93
94const struct sound4cl_SOUND4_ProcessInfo* sound4cl_SOUND4_GetProcessInfo();
95const char *sound4cl_GetVersion();
96unsigned int sound4cl_GetChunkSizeInFrames();
97unsigned int* sound4cl_GetPossibleChunkSizeInFrames();
98unsigned int sound4cl_GetChannelCount();
99unsigned int sound4cl_GetAudioInputCount();
100unsigned int sound4cl_GetAudioOutputCount();
101unsigned int sound4cl_GetSampleRate();
102typedef void (*sound4cl_loggerfn) (enum sound4cl_LogSeverity, const char *);
103void sound4cl_SetLoggerCallback( sound4cl_loggerfn logger );
104void sound4cl_SetLogSeverity( enum sound4cl_LogSeverity severity );
105struct sound4cl_CParameters *sound4cl_NewParameters();
106void sound4cl_FreeParameters(struct sound4cl_CParameters *params);
107void sound4cl_SetParameter(struct sound4cl_CParameters *params, const char *name, const char *value);
108const char *sound4cl_GetParameter(struct sound4cl_CParameters *params, const char *name);
109void sound4cl_FreeParameterValue(const char *value);
110struct 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 );
117struct 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 );
125struct 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 );
134unsigned int sound4cl_GetProcessChunkFrames(struct sound4cl_CInstance *instance);
135int sound4cl_TerminateProcess(struct sound4cl_CInstance *instance);
136void sound4cl_ExitProcess(struct sound4cl_CInstance *instance);
137struct sound4cl_CBus* sound4cl_NewBus();
138void sound4cl_FreeBus(struct sound4cl_CBus *bus);
139void sound4cl_SetInstanceBus(struct sound4cl_CParameters *params, struct sound4cl_CBus *bus);
140typedef char * (*sound4cl_storage_reader) (const fs_char *filename, void* userdata);
141typedef void (*sound4cl_storage_reader_free) (char *content, void* userdata);
142typedef int (*sound4cl_storage_writer) (const fs_char *filename, const char *content, void* userdata);
143typedef int (*sound4cl_storage_exists) (const fs_char *filename, void* userdata);
144typedef fs_char** (*sound4cl_storage_getall) (void* userdata);
145typedef void (*sound4cl_storage_getall_free) (fs_char**all, void* userdata);
146typedef int (*sound4cl_storage_remove) (const fs_char *filename, void* userdata);
147typedef int (*sound4cl_storage_rename) (const fs_char *from, const fs_char *to, void* userdata);
148void sound4cl_SetPresetManager(struct sound4cl_CParameters *params
149 , sound4cl_storage_reader reader, sound4cl_storage_reader_free
150 , sound4cl_storage_writer writer
151 , sound4cl_storage_exists exists
152 , sound4cl_storage_getall getall, sound4cl_storage_getall_free getall_free
153 , sound4cl_storage_remove remove
154 , sound4cl_storage_rename rename
155 , int IsReadOnly
156 , void* userdata
157 );
158void sound4cl_PresetManager_InformChange(struct sound4cl_CInstance *instance, const fs_char *relative_path, enum sound4cl_PresetChange_Kind change_kind);
159void sound4cl_SetMetadata(struct sound4cl_CInstance *instance, const char* key, const char* value);
160void sound4cl_SetMetadataMulti(struct sound4cl_CInstance *instance, const char** keyvalue);
161const char** sound4cl_GetMetadataInfos(struct sound4cl_CInstance *instance);
162void sound4cl_FreeMetadataInfos(struct sound4cl_CInstance *instance, const char** infos);
163void sound4cl_StartUpdateThread(struct sound4cl_CInstance *instance, unsigned int port);
164void sound4cl_StopUpdateThread(struct sound4cl_CInstance *instance);
165int sound4cl_WaitUpdateThreadReady(struct sound4cl_CInstance *instance, int milliseconds);
166void sound4cl_ProcessAudio(struct sound4cl_CInstance *instance, const float *input, float *output );
167void sound4cl_ProcessAudio_Planar(struct sound4cl_CInstance *instance
168 , float const * const *input
169 , float * const *output);
170float *sound4cl_GetBufferIn(struct sound4cl_CInstance *instance);
171float *sound4cl_GetBufferOut(struct sound4cl_CInstance *instance);
172unsigned int sound4cl_GetEstimatedDelay(struct sound4cl_CInstance *instance);
173const char *sound4cl_GetFormatName(const enum sound4cl_SampleFormat fmt);
174enum sound4cl_SampleFormat sound4cl_GetFormatFromName(const char *name);
175unsigned int sound4cl_GetBytesFromFormat(const enum sound4cl_SampleFormat fmt);
176unsigned int sound4cl_GetMaxPacketFrame(struct sound4cl_CInstance *instance);
177unsigned int sound4cl_AddAudio(struct sound4cl_CInstance *instance, const uint8_t *payload, unsigned int nFrame, enum sound4cl_SampleFormat fmt );
178unsigned int sound4cl_AddPadAudio(struct sound4cl_CInstance *instance);
179unsigned int sound4cl_GetOutputCount(struct sound4cl_CInstance *instance);
180unsigned int sound4cl_GetAudio(struct sound4cl_CInstance *instance, uint8_t *payload, unsigned int max_nFrame, enum sound4cl_SampleFormat fmt );
181void sound4cl_AudioConvertFrom(const uint8_t *payload, float *output, size_t nSpl, enum sound4cl_SampleFormat fmt);
182void sound4cl_AudioConvertTo(const float *input, uint8_t *payload, size_t nSpl, enum sound4cl_SampleFormat fmt);
183void sound4cl_StereoToMono(const float *input, float *output, size_t nFrame);
184void sound4cl_MonoToStereo(const float *input, float *output, size_t nFrame);
185void sound4cl_StereoToMono_Planar(const float *inputL, const float *inputR, float *output, size_t nFrame);
186void sound4cl_MonoToStereo_Planar(const float *input, float *outputL, float *outputR, size_t nFrame);
187void sound4cl_AudioMonoFromLiveStereo(const uint8_t *payload, float *output);
188void sound4cl_AudioMonoToLiveStereo(const float *input, uint8_t *payload);
189struct sound4cl_CClientInstance *sound4cl_NewClient(struct sound4cl_CInstance *instance);
190void sound4cl_DeleteClient(struct sound4cl_CClientInstance *client);
191const char *sound4cl_ProcessJson(struct sound4cl_CClientInstance *client, const char *json_str, int *need_save);
192void sound4cl_FreeJsonAnswer(const char *json_str);
193int sound4cl_SaveState(struct sound4cl_CInstance *instance);
194uint64_t sound4cl_Webserver_tcp(unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port);
195uint64_t sound4cl_Webserver_tcp2(unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port, const struct sound4cl_CParameters *parameters);
196uint64_t sound4cl_Webserver(unsigned int listenport, unsigned int listenport_secure, struct sound4cl_CInstance *instance);
197int sound4cl_Webserver_Stop(uint64_t id, int timeout_ms);
198int sound4cl_Webserver_Status(uint64_t id);
199void sound4cl_Webserver_SetAppHealth(struct sound4cl_CInstance *instance, int httpcode, const char* contenttype, const char* content);
200void sound4cl_Webserver_GetAppHealth(struct sound4cl_CInstance *instance, int* httpcode, char** contenttype, char** content);
201void sound4cl_Webserver_FreeString(char* str);
202
203#ifdef __cplusplus
204} // extern "C"
205#endif // __cplusplus
wchar_t fs_char
@ 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
@ 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