11 #include <sys/types.h>
15 #include <stringapiset.h>
18 #define fs_strdup wcsdup
21 #define __BYTE_ORDER__ REG_DWORD
22 #define __ORDER_LITTLE_ENDIAN__ REG_DWORD_LITTLE_ENDIAN
23 #define __ORDER_BIG_ENDIAN__ REG_DWORD_BIG_ENDIAN
26 #pragma warning(disable : 4996)
30 #define fs_strdup strdup
38struct sound4cl_SOUND4_ProcessInfo {
42 const char *shortname;
45enum sound4cl_LogSeverity {
52 sound4cl_verbose2 = 6,
53 sound4cl_verbose3 = 7,
54 sound4cl_verbose4 = 8,
55 sound4cl_verbose5 = 9,
57struct sound4cl_CInstance;
58struct sound4cl_CParameters;
60struct sound4cl_CClientInstance;
61struct sound4cl_CAudioConverter;
62enum sound4cl_PresetChange_Kind {
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)
74enum sound4cl_SampleFormat {
86 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
102enum sound4cl_ConverterTargetMode {
103 sound4cl_ConverterTargetMode_AsInput = 0,
104 sound4cl_ConverterTargetMode_Mono,
105 sound4cl_ConverterTargetMode_Stereo,
106 sound4cl_ConverterTargetMode_StereoToMono,
107 sound4cl_ConverterTargetMode_MonoToStereo,
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
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
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
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
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);
225 #ifndef TLG_HAVE_EVENT_SET_INFORMATION
226 struct _tlgProvider_t;
229void sound4cl_SetInstanceTracing(
struct sound4cl_CParameters *params,
TraceLoggingHProvider tracing_provider, GUID activity_guid);
230void 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