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
26 #define fs_strdup strdup
34struct sound4cl_SOUND4_ProcessInfo {
38 const char *shortname;
41enum sound4cl_LogSeverity {
48 sound4cl_verbose2 = 6,
49 sound4cl_verbose3 = 7,
50 sound4cl_verbose4 = 8,
51 sound4cl_verbose5 = 9,
53struct sound4cl_CInstance;
54struct sound4cl_CParameters;
56struct sound4cl_CClientInstance;
57enum sound4cl_PresetChange_Kind {
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)
69enum sound4cl_SampleFormat {
81 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
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
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
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
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
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);
@ 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
@ 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