SOUND4 IMPACT.CL Library [1.3.4]
Loading...
Searching...
No Matches
sound4.impact.cl.h
Go to the documentation of this file.
1
4#pragma once
5
6#include <stdint.h>
7#ifdef __unix__
8 #include <sys/types.h>
9 #define IMPACT_DECL __attribute__ ((visibility ("default")))
10#elif defined(_WIN32) || defined(WIN32)
11 #ifdef BUILDING_IMPACT_DLL
12 #define IMPACT_DECL __declspec(dllexport)
13 #else
14 #define IMPACT_DECL __declspec(dllimport)
15 #endif
16#elif defined(__APPLE__)
17 #include <sys/types.h>
18 #define IMPACT_DECL __attribute__ ((visibility ("default")))
19#endif
20
21#define IMPACT_HAS_WEBSERVER 1
22#define IMPACT_HAS_CLOUDBUS 0
23
24#ifdef __cplusplus
25extern "C" {
26#endif // __cplusplus
27
73// --------------------------------------------------------------
92// --------------------------------------------------------------
147// --------------------------------------------------------------
148
149// --------------------------------------------------------------
161#define IMPACT_AUDIOFRAME_COUNT 64
167#define IMPACT_CHANNEL_COUNT 2
173#define IMPACT_AUDIO_INPUT_COUNT 1
179#define IMPACT_AUDIO_OUTPUT_COUNT 1
185#define IMPACT_SAMPLE_RATE 48000
186
193 size_t struct_size;
194 const char *name;
195 const char *prefix;
196 const char *shortname;
197 const char *version;
198};
199
208
215
229
239
248
258
268
277
293
300typedef void (*impact_loggerfn) (enum impact_LogSeverity, const char *);
301
312
321
324// --------------------------------------------------------------
330// --------------------------------------------------------------
334struct impact_CInstance;
335
339struct impact_CParameters;
340
349
354
366IMPACT_DECL void impact_SetParameter(struct impact_CParameters *params, const char *name, const char *value);
367
373IMPACT_DECL const char *impact_GetParameter(struct impact_CParameters *params, const char *name);
374
381
390 const char *LoginKey,
391 const char *RadioName,
392 const char *Access_Key_ID,
393 const char *Access_Key_Secret,
394 const char *save_path
395 );
396
405 const char *LoginKey,
406 const char *RadioName,
407 const char *Access_Key_ID,
408 const char *Access_Key_Secret,
409 const char *save_path,
410 const struct impact_CParameters *parameters
411 );
412
458 const char *LoginKey,
459 const char *RadioName,
460 const char *Access_Key_ID,
461 const char *Access_Key_Secret,
462 const char *save_path,
463 const struct impact_CParameters *parameters,
464 unsigned int frames_per_chunk
465 );
466
479
490
497
500#if IMPACT_HAS_CLOUDBUS
501// --------------------------------------------------------------
510struct impact_CBus;
511
517IMPACT_DECL struct impact_CBus* impact_NewBus();
518
524IMPACT_DECL void impact_FreeBus(struct impact_CBus *bus);
525
535IMPACT_DECL void impact_SetInstanceBus(struct impact_CParameters *params, struct impact_CBus *bus);
536
537
539#endif // IMPACT_HAS_CLOUDBUS
540
541// --------------------------------------------------------------
564// --------------------------------------------------------------
565
566// OS dependent filesystem path char type
567#ifdef _WIN32
568 typedef wchar_t fs_char;
569#else // !_WIN32
570 typedef char fs_char;
571#endif // !_WIN32
572
580typedef char * (*impact_storage_reader) (const fs_char *filename, void* userdata);
581
588typedef void (*impact_storage_reader_free) (char *content, void* userdata);
589
598typedef int (*impact_storage_writer) (const fs_char *filename, const char *content, void* userdata);
599
607typedef int (*impact_storage_exists) (const fs_char *filename, void* userdata);
608
616typedef fs_char** (*impact_storage_getall) (void* userdata);
617
624typedef void (*impact_storage_getall_free) (fs_char**all, void* userdata);
625
633typedef int (*impact_storage_remove) (const fs_char *filename, void* userdata);
634
643typedef int (*impact_storage_rename) (const fs_char *from, const fs_char *to, void* userdata);
644
664 , impact_storage_writer writer
665 , impact_storage_exists exists
667 , impact_storage_remove remove
668 , impact_storage_rename rename
669 , int IsReadOnly
670 , void* userdata
671 );
672
681
690IMPACT_DECL void impact_PresetManager_InformChange(struct impact_CInstance *instance, const fs_char *relative_path, enum impact_PresetChange_Kind change_kind);
691
694// --------------------------------------------------------------
702// --------------------------------------------------------------
703
720IMPACT_DECL void impact_SetMetadata(struct impact_CInstance *instance, const char* key, const char* value);
721
732IMPACT_DECL void impact_SetMetadataMulti(struct impact_CInstance *instance, const char** keyvalue);
733
742
749IMPACT_DECL void impact_FreeMetadataInfos(struct impact_CInstance *instance, const char** infos);
750
753// --------------------------------------------------------------
758// --------------------------------------------------------------
759
772IMPACT_DECL void impact_StartUpdateThread(struct impact_CInstance *instance, unsigned int port);
773
780
788IMPACT_DECL int impact_WaitUpdateThreadReady(struct impact_CInstance *instance, int milliseconds);
789
792// --------------------------------------------------------------
797// --------------------------------------------------------------
819IMPACT_DECL void impact_ProcessAudio(struct impact_CInstance *instance, const float *input, float *output );
820
840 , float const * const *input
841 , float * const *output);
842
856
870
879
882// --------------------------------------------------------------
889// --------------------------------------------------------------
890 #ifdef _MSC_VER
891 #define __BYTE_ORDER__ REG_DWORD
892 #define __ORDER_LITTLE_ENDIAN__ REG_DWORD_LITTLE_ENDIAN
893 #define __ORDER_BIG_ENDIAN__ REG_DWORD_BIG_ENDIAN
894 #endif
895
909
910 // Native definitions, only links to the physical ones
911 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
916 #else
921 #endif
922};
923
931
939
947
948
956
967IMPACT_DECL unsigned int impact_AddAudio(struct impact_CInstance *instance, const uint8_t *payload, unsigned int nFrame, enum impact_SampleFormat fmt );
968
975IMPACT_DECL unsigned int impact_AddPadAudio(struct impact_CInstance *instance);
976
984
994IMPACT_DECL unsigned int impact_GetAudio(struct impact_CInstance *instance, uint8_t *payload, unsigned int max_nFrame, enum impact_SampleFormat fmt );
995
999// --------------------------------------------------------------
1003// --------------------------------------------------------------
1014IMPACT_DECL void impact_AudioConvertFrom(const uint8_t *payload, float *output, size_t nSpl, enum impact_SampleFormat fmt);
1015
1026IMPACT_DECL void impact_AudioConvertTo(const float *input, uint8_t *payload, size_t nSpl, enum impact_SampleFormat fmt);
1027
1037IMPACT_DECL void impact_StereoToMono(const float *input, float *output, size_t nFrame);
1038
1048IMPACT_DECL void impact_MonoToStereo(const float *input, float *output, size_t nFrame);
1049
1060IMPACT_DECL void impact_StereoToMono_Planar(const float *inputL, const float *inputR, float *output, size_t nFrame);
1061
1072IMPACT_DECL void impact_MonoToStereo_Planar(const float *input, float *outputL, float *outputR, size_t nFrame);
1073
1080IMPACT_DECL void impact_AudioMonoFromLiveStereo(const uint8_t *payload, float *output);
1081
1088IMPACT_DECL void impact_AudioMonoToLiveStereo(const float *input, uint8_t *payload);
1089
1092// --------------------------------------------------------------
1097// --------------------------------------------------------------
1102
1112
1119
1133IMPACT_DECL const char *impact_ProcessJson(struct impact_CClientInstance *client, const char *json_str, int *need_save);
1134
1140IMPACT_DECL void impact_FreeJsonAnswer(const char *json_str);
1141
1154
1450#if IMPACT_HAS_WEBSERVER
1451// --------------------------------------------------------------
1464// --------------------------------------------------------------
1483IMPACT_DECL uint64_t impact_Webserver_tcp(unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port);
1484
1485// --------------------------------------------------------------
1505IMPACT_DECL uint64_t impact_Webserver_tcp2(unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port, const struct impact_CParameters *parameters);
1506
1524IMPACT_DECL uint64_t impact_Webserver(unsigned int listenport, unsigned int listenport_secure, struct impact_CInstance *instance);
1525
1535IMPACT_DECL int impact_Webserver_Stop(uint64_t id, int timeout_ms);
1536
1546
1557IMPACT_DECL void impact_Webserver_SetAppHealth(struct impact_CInstance *instance, int httpcode, const char *contenttype, const char *content);
1558
1567IMPACT_DECL void impact_Webserver_GetAppHealth(struct impact_CInstance *instance, int* httpcode, char** contenttype, char** content);
1568
1575
1580#define SOUND4_INVALID_WEBSERVER_ID ((uint64_t)-1)
1581
1585#define SOUND4_WEBSERVER_HTTP_OK (1<<0)
1589#define SOUND4_WEBSERVER_HTTPS_OK (1<<1)
1590
1592#endif // IMPACT_HAS_WEBSERVER
1593
1594#ifdef __cplusplus
1595} // extern "C"
1596#endif // __cplusplus
unsigned int impact_GetBytesFromFormat(const enum impact_SampleFormat fmt)
unsigned int impact_AddAudio(struct impact_CInstance *instance, const uint8_t *payload, unsigned int nFrame, enum impact_SampleFormat fmt)
const char * impact_GetFormatName(const enum impact_SampleFormat fmt)
impact_SampleFormat
enum impact_SampleFormat impact_GetFormatFromName(const char *name)
unsigned int impact_AddPadAudio(struct impact_CInstance *instance)
unsigned int impact_GetOutputCount(struct impact_CInstance *instance)
unsigned int impact_GetMaxPacketFrame(struct impact_CInstance *instance)
unsigned int impact_GetAudio(struct impact_CInstance *instance, uint8_t *payload, unsigned int max_nFrame, enum impact_SampleFormat fmt)
@ F32_NATIVE
32-bit floating-point, native
@ INVALID_FORMAT
Invalid.
@ S16_NATIVE
16-bit signed integer, native
@ 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
@ S24_LE
24-bit signed integer, little-endian
@ S32_LE
32-bit signed integer, little-endian
@ S24_NATIVE
24-bit signed integer, native
void impact_FreeJsonAnswer(const char *json_str)
const char * impact_ProcessJson(struct impact_CClientInstance *client, const char *json_str, int *need_save)
void impact_DeleteClient(struct impact_CClientInstance *client)
int impact_SaveState(struct impact_CInstance *instance)
struct impact_CClientInstance * impact_NewClient(struct impact_CInstance *instance)
void impact_AudioMonoFromLiveStereo(const uint8_t *payload, float *output)
void impact_AudioConvertFrom(const uint8_t *payload, float *output, size_t nSpl, enum impact_SampleFormat fmt)
void impact_MonoToStereo(const float *input, float *output, size_t nFrame)
void impact_MonoToStereo_Planar(const float *input, float *outputL, float *outputR, size_t nFrame)
void impact_AudioMonoToLiveStereo(const float *input, uint8_t *payload)
void impact_StereoToMono(const float *input, float *output, size_t nFrame)
void impact_StereoToMono_Planar(const float *inputL, const float *inputR, float *output, size_t nFrame)
void impact_AudioConvertTo(const float *input, uint8_t *payload, size_t nSpl, enum impact_SampleFormat fmt)
void impact_ProcessAudio(struct impact_CInstance *instance, const float *input, float *output)
unsigned int impact_GetEstimatedDelay(struct impact_CInstance *instance)
float * impact_GetBufferIn(struct impact_CInstance *instance)
float * impact_GetBufferOut(struct impact_CInstance *instance)
void impact_ProcessAudio_Planar(struct impact_CInstance *instance, float const *const *input, float *const *output)
unsigned int * impact_GetPossibleChunkSizeInFrames()
const struct SOUND4_ProcessInfo * SOUND4_GetProcessInfo()
unsigned int impact_GetAudioOutputCount()
const char * impact_GetVersion()
unsigned int impact_GetChunkSizeInFrames()
void impact_SetLoggerCallback(impact_loggerfn logger)
impact_LogSeverity
unsigned int impact_GetChannelCount()
void impact_SetLogSeverity(enum impact_LogSeverity severity)
unsigned int impact_GetSampleRate()
unsigned int impact_GetAudioInputCount()
void(* impact_loggerfn)(enum impact_LogSeverity, const char *)
@ verbose5
@ fatal
@ warning
@ verbose4
@ error
@ verbose2
@ verbose3
@ verbose
struct impact_CParameters * impact_NewParameters()
void impact_SetParameter(struct impact_CParameters *params, const char *name, const char *value)
struct impact_CInstance * impact_InitProcess2(const char *LoginKey, const char *RadioName, const char *Access_Key_ID, const char *Access_Key_Secret, const char *save_path, const struct impact_CParameters *parameters)
struct impact_CInstance * impact_InitProcess3(const char *LoginKey, const char *RadioName, const char *Access_Key_ID, const char *Access_Key_Secret, const char *save_path, const struct impact_CParameters *parameters, unsigned int frames_per_chunk)
int impact_TerminateProcess(struct impact_CInstance *instance)
void impact_FreeParameters(struct impact_CParameters *params)
void impact_ExitProcess(struct impact_CInstance *instance)
void impact_FreeParameterValue(const char *value)
unsigned int impact_GetProcessChunkFrames(struct impact_CInstance *instance)
const char * impact_GetParameter(struct impact_CParameters *params, const char *name)
struct impact_CInstance * impact_InitProcess(const char *LoginKey, const char *RadioName, const char *Access_Key_ID, const char *Access_Key_Secret, const char *save_path)
void impact_FreeMetadataInfos(struct impact_CInstance *instance, const char **infos)
const char ** impact_GetMetadataInfos(struct impact_CInstance *instance)
void impact_SetMetadataMulti(struct impact_CInstance *instance, const char **keyvalue)
void impact_SetMetadata(struct impact_CInstance *instance, const char *key, const char *value)
void impact_SetPresetManager(struct impact_CParameters *params, impact_storage_reader reader, impact_storage_reader_free, impact_storage_writer writer, impact_storage_exists exists, impact_storage_getall getall, impact_storage_getall_free getall_free, impact_storage_remove remove, impact_storage_rename rename, int IsReadOnly, void *userdata)
void impact_PresetManager_InformChange(struct impact_CInstance *instance, const fs_char *relative_path, enum impact_PresetChange_Kind change_kind)
int(* impact_storage_exists)(const fs_char *filename, void *userdata)
int(* impact_storage_remove)(const fs_char *filename, void *userdata)
int(* impact_storage_writer)(const fs_char *filename, const char *content, void *userdata)
fs_char **(* impact_storage_getall)(void *userdata)
void(* impact_storage_getall_free)(fs_char **all, void *userdata)
impact_PresetChange_Kind
void(* impact_storage_reader_free)(char *content, void *userdata)
char *(* impact_storage_reader)(const fs_char *filename, void *userdata)
wchar_t fs_char
int(* impact_storage_rename)(const fs_char *from, const fs_char *to, void *userdata)
@ change_kind_modified
Path has been modified.
@ change_kind_created
Path has been created.
@ change_kind_deleted
Path has been deleted.
void impact_StopUpdateThread(struct impact_CInstance *instance)
void impact_StartUpdateThread(struct impact_CInstance *instance, unsigned int port)
int impact_WaitUpdateThreadReady(struct impact_CInstance *instance, int milliseconds)
int impact_Webserver_Stop(uint64_t id, int timeout_ms)
uint64_t impact_Webserver(unsigned int listenport, unsigned int listenport_secure, struct impact_CInstance *instance)
void impact_Webserver_GetAppHealth(struct impact_CInstance *instance, int *httpcode, char **contenttype, char **content)
int impact_Webserver_Status(uint64_t id)
uint64_t impact_Webserver_tcp(unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port)
void impact_Webserver_SetAppHealth(struct impact_CInstance *instance, int httpcode, const char *contenttype, const char *content)
void impact_Webserver_FreeString(char *str)
uint64_t impact_Webserver_tcp2(unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port, const struct impact_CParameters *parameters)
#define IMPACT_DECL
const char * version
Library version.
const char * shortname
A short name of the processor, single word.
const char * prefix
The prefix of this processor functions.
size_t struct_size
The size of total this structure, for compatibility checking.
const char * name
The name of the processor.