10 #include <sys/types.h>
14 #include <stringapiset.h>
17 #define fs_strdup wcsdup
20 #define __BYTE_ORDER__ REG_DWORD
21 #define __ORDER_LITTLE_ENDIAN__ REG_DWORD_LITTLE_ENDIAN
22 #define __ORDER_BIG_ENDIAN__ REG_DWORD_BIG_ENDIAN
25 #pragma warning(disable : 4996)
29 #define fs_strdup strdup
37struct sound4cl_SOUND4_ProcessInfo {
41 const char *shortname;
44enum sound4cl_LogSeverity {
51 sound4cl_verbose2 = 6,
52 sound4cl_verbose3 = 7,
53 sound4cl_verbose4 = 8,
54 sound4cl_verbose5 = 9,
56struct sound4cl_CInstance;
57struct sound4cl_CParameters;
59struct sound4cl_CClientInstance;
60enum sound4cl_PresetChange_Kind {
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)
72enum sound4cl_SampleFormat {
84 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
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
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
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
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
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);
208 #ifndef TLG_HAVE_EVENT_SET_INFORMATION
209 struct _tlgProvider_t;
212void sound4cl_SetInstanceTracing(
struct sound4cl_CParameters *params,
TraceLoggingHProvider tracing_provider, GUID activity_guid);
213void sound4cl_SetInstanceTracingProcessActivity(
struct sound4cl_CInstance *instance, GUID activity_guid);
struct _tlgProvider_t const * TraceLoggingHProvider
@ F32_NATIVE
32-bit floating-point, native
@ change_kind_modified
Path has been modified.
@ 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
@ S32_LE
32-bit signed integer, little-endian
@ S24_NATIVE
24-bit signed integer, native