SOUND4 IMPACT.CL Library [1.2.6]
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 #endif
17 
18 #define IMPACT_HAS_WEBSERVER 1
19 #define IMPACT_HAS_CLOUDBUS 0
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif // __cplusplus
24 
68 // --------------------------------------------------------------
87 // --------------------------------------------------------------
140 // --------------------------------------------------------------
141 
142 // --------------------------------------------------------------
154 #define IMPACT_AUDIOFRAME_COUNT 64
160 #define IMPACT_CHANNEL_COUNT 2
166 #define IMPACT_AUDIO_INPUT_COUNT 1
172 #define IMPACT_AUDIO_OUTPUT_COUNT 1
178 #define IMPACT_SAMPLE_RATE 48000
179 
186 
200 
210 
219 
229 
239 
248 
253  none = 0,
254  fatal = 1,
255  error = 2,
256  warning = 3,
257  info = 4,
258  verbose = 5,
259  verbose2 = 6,
260  verbose3 = 7,
261  verbose4 = 8,
262  verbose5 = 9,
263 };
264 
271 typedef void (*impact_loggerfn) (enum impact_LogSeverity, const char *);
272 
283 
292 
295 // --------------------------------------------------------------
301 // --------------------------------------------------------------
305 struct impact_CInstance;
306 
310 struct impact_CParameters;
311 
320 
325 
337 IMPACT_DECL void impact_SetParameter(struct impact_CParameters *params, const char *name, const char *value);
338 
344 IMPACT_DECL const char *impact_GetParameter(struct impact_CParameters *params, const char *name);
345 
351 IMPACT_DECL void impact_FreeParameterValue(const char *value);
352 
361  const char *LoginKey,
362  const char *RadioName,
363  const char *AWS_Access_ID,
364  const char *AWS_Access_Secret,
365  const char *save_path
366  );
367 
376  const char *LoginKey,
377  const char *RadioName,
378  const char *AWS_Access_ID,
379  const char *AWS_Access_Secret,
380  const char *save_path,
381  const struct impact_CParameters *parameters
382  );
383 
429  const char *LoginKey,
430  const char *RadioName,
431  const char *AWS_Access_ID,
432  const char *AWS_Access_Secret,
433  const char *save_path,
434  const struct impact_CParameters *parameters,
435  unsigned int frames_per_chunk
436  );
437 
450 
461 
468 
471 #if IMPACT_HAS_CLOUDBUS
472 // --------------------------------------------------------------
481 struct impact_CBus;
482 
488 IMPACT_DECL struct impact_CBus* impact_NewBus();
489 
495 IMPACT_DECL void impact_FreeBus(struct impact_CBus *bus);
496 
506 IMPACT_DECL void impact_SetInstanceBus(struct impact_CParameters *params, struct impact_CBus *bus);
507 
508 
510 #endif // IMPACT_HAS_CLOUDBUS
511 
512 // --------------------------------------------------------------
535 // --------------------------------------------------------------
536 
537 // OS dependent filesystem path char type
538 #ifdef _WIN32
539  typedef wchar_t fs_char;
540 #else // !_WIN32
541  typedef char fs_char;
542 #endif // !_WIN32
543 
551 typedef char * (*impact_storage_reader) (const fs_char *filename, void* userdata);
552 
559 typedef void (*impact_storage_reader_free) (char *content, void* userdata);
560 
569 typedef int (*impact_storage_writer) (const fs_char *filename, const char *content, void* userdata);
570 
578 typedef int (*impact_storage_exists) (const fs_char *filename, void* userdata);
579 
587 typedef fs_char** (*impact_storage_getall) (void* userdata);
588 
595 typedef void (*impact_storage_getall_free) (fs_char**all, void* userdata);
596 
604 typedef int (*impact_storage_remove) (const fs_char *filename, void* userdata);
605 
614 typedef int (*impact_storage_rename) (const fs_char *from, const fs_char *to, void* userdata);
615 
635  , impact_storage_writer writer
636  , impact_storage_exists exists
638  , impact_storage_remove remove
639  , impact_storage_rename rename
640  , int IsReadOnly
641  , void* userdata
642  );
643 
651 };
652 
661 IMPACT_DECL void impact_PresetManager_InformChange(struct impact_CInstance *instance, const fs_char *relative_path, enum impact_PresetChange_Kind change_kind);
662 
665 // --------------------------------------------------------------
673 // --------------------------------------------------------------
674 
691 IMPACT_DECL void impact_SetMetadata(struct impact_CInstance *instance, const char* key, const char* value);
692 
703 IMPACT_DECL void impact_SetMetadataMulti(struct impact_CInstance *instance, const char** keyvalue);
704 
712 IMPACT_DECL const char** impact_GetMetadataInfos(struct impact_CInstance *instance);
713 
720 IMPACT_DECL void impact_FreeMetadataInfos(struct impact_CInstance *instance, const char** infos);
721 
724 // --------------------------------------------------------------
729 // --------------------------------------------------------------
730 
743 IMPACT_DECL void impact_StartUpdateThread(struct impact_CInstance *instance, unsigned int port);
744 
751 
759 IMPACT_DECL int impact_WaitUpdateThreadReady(struct impact_CInstance *instance, int milliseconds);
760 
763 // --------------------------------------------------------------
768 // --------------------------------------------------------------
790 IMPACT_DECL void impact_ProcessAudio(struct impact_CInstance *instance, const float *input, float *output );
791 
811  , float const * const *input
812  , float * const *output);
813 
827 
841 
850 
853 // --------------------------------------------------------------
860 // --------------------------------------------------------------
861  #ifdef _MSC_VER
862  #define __BYTE_ORDER__ REG_DWORD
863  #define __ORDER_LITTLE_ENDIAN__ REG_DWORD_LITTLE_ENDIAN
864  #define __ORDER_BIG_ENDIAN__ REG_DWORD_BIG_ENDIAN
865  #endif
866 
880 
881  // Native definitions, only links to the physical ones
882  #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
887  #else
892  #endif
893 };
894 
902 
910 
918 
919 
927 
938 IMPACT_DECL unsigned int impact_AddAudio(struct impact_CInstance *instance, const uint8_t *payload, unsigned int nFrame, enum impact_SampleFormat fmt );
939 
946 IMPACT_DECL unsigned int impact_AddPadAudio(struct impact_CInstance *instance);
947 
954 IMPACT_DECL unsigned int impact_GetOutputCount(struct impact_CInstance *instance);
955 
965 IMPACT_DECL unsigned int impact_GetAudio(struct impact_CInstance *instance, uint8_t *payload, unsigned int max_nFrame, enum impact_SampleFormat fmt );
966 
970 // --------------------------------------------------------------
974 // --------------------------------------------------------------
985 IMPACT_DECL void impact_AudioConvertFrom(const uint8_t *payload, float *output, size_t nSpl, enum impact_SampleFormat fmt);
986 
997 IMPACT_DECL void impact_AudioConvertTo(const float *input, uint8_t *payload, size_t nSpl, enum impact_SampleFormat fmt);
998 
1008 IMPACT_DECL void impact_StereoToMono(const float *input, float *output, size_t nFrame);
1009 
1019 IMPACT_DECL void impact_MonoToStereo(const float *input, float *output, size_t nFrame);
1020 
1031 IMPACT_DECL void impact_StereoToMono_Planar(const float *inputL, const float *inputR, float *output, size_t nFrame);
1032 
1043 IMPACT_DECL void impact_MonoToStereo_Planar(const float *input, float *outputL, float *outputR, size_t nFrame);
1044 
1051 IMPACT_DECL void impact_AudioMonoFromLiveStereo(const uint8_t *payload, float *output);
1052 
1059 IMPACT_DECL void impact_AudioMonoToLiveStereo(const float *input, uint8_t *payload);
1060 
1063 // --------------------------------------------------------------
1068 // --------------------------------------------------------------
1072 struct impact_CClientInstance;
1073 
1083 
1090 
1104 IMPACT_DECL const char *impact_ProcessJson(struct impact_CClientInstance *client, const char *json_str, int *need_save);
1105 
1111 IMPACT_DECL void impact_FreeJsonAnswer(const char *json_str);
1112 
1125 
1421 #if IMPACT_HAS_WEBSERVER
1422 // --------------------------------------------------------------
1430 // --------------------------------------------------------------
1449 IMPACT_DECL uint64_t impact_Webserver_tcp(unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port);
1450 
1451 // --------------------------------------------------------------
1471 IMPACT_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);
1472 
1490 IMPACT_DECL uint64_t impact_Webserver(unsigned int listenport, unsigned int listenport_secure, struct impact_CInstance *instance);
1491 
1501 IMPACT_DECL int impact_Webserver_Stop(uint64_t id, int timeout_ms);
1502 
1512 
1517 #define SOUND4_INVALID_WEBSERVER_ID ((uint64_t)-1)
1518 
1522 #define SOUND4_WEBSERVER_HTTP_OK (1<<0)
1526 #define SOUND4_WEBSERVER_HTTPS_OK (1<<1)
1527 
1529 #endif // IMPACT_HAS_WEBSERVER
1530 
1531 #ifdef __cplusplus
1532 } // extern "C"
1533 #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)
impact_SampleFormat
enum impact_SampleFormat impact_GetFormatFromName(const char *name)
const char * impact_GetFormatName(const enum impact_SampleFormat fmt)
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)
void impact_DeleteClient(struct impact_CClientInstance *client)
int impact_SaveState(struct impact_CInstance *instance)
const char * impact_ProcessJson(struct impact_CClientInstance *client, const char *json_str, int *need_save)
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)
float * impact_GetBufferIn(struct impact_CInstance *instance)
void impact_ProcessAudio(struct impact_CInstance *instance, const float *input, float *output)
unsigned int impact_GetEstimatedDelay(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)
const char * impact_GetVersion()
unsigned int impact_GetAudioOutputCount()
unsigned int impact_GetChunkSizeInFrames()
void impact_SetLoggerCallback(impact_loggerfn logger)
impact_LogSeverity
unsigned int impact_GetChannelCount()
unsigned int * impact_GetPossibleChunkSizeInFrames()
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
@ info
@ none
@ error
@ verbose2
@ verbose3
@ verbose
void impact_SetParameter(struct impact_CParameters *params, const char *name, const char *value)
int impact_TerminateProcess(struct impact_CInstance *instance)
struct impact_CParameters * impact_NewParameters()
void impact_FreeParameters(struct impact_CParameters *params)
void impact_ExitProcess(struct impact_CInstance *instance)
struct impact_CInstance * impact_InitProcess(const char *LoginKey, const char *RadioName, const char *AWS_Access_ID, const char *AWS_Access_Secret, const char *save_path)
const char * impact_GetParameter(struct impact_CParameters *params, const char *name)
void impact_FreeParameterValue(const char *value)
unsigned int impact_GetProcessChunkFrames(struct impact_CInstance *instance)
struct impact_CInstance * impact_InitProcess2(const char *LoginKey, const char *RadioName, const char *AWS_Access_ID, const char *AWS_Access_Secret, const char *save_path, const struct impact_CParameters *parameters)
struct impact_CInstance * impact_InitProcess3(const char *LoginKey, const char *RadioName, const char *AWS_Access_ID, const char *AWS_Access_Secret, const char *save_path, const struct impact_CParameters *parameters, unsigned int frames_per_chunk)
void impact_FreeMetadataInfos(struct impact_CInstance *instance, const char **infos)
void impact_SetMetadataMulti(struct impact_CInstance *instance, const char **keyvalue)
void impact_SetMetadata(struct impact_CInstance *instance, const char *key, const char *value)
const char ** impact_GetMetadataInfos(struct impact_CInstance *instance)
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)
char *(* impact_storage_reader)(const fs_char *filename, void *userdata)
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)
void(* impact_storage_getall_free)(fs_char **all, void *userdata)
fs_char **(* impact_storage_getall)(void *userdata)
impact_PresetChange_Kind
void(* impact_storage_reader_free)(char *content, 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)
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)
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