SOUND4 x1.CLOUD Library [1.4.8]
sound4.x1.cloud.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 CLOUDX1_DECL __attribute__ ((visibility ("default")))
10 #elif defined(_WIN32) || defined(WIN32)
11  #ifdef BUILDING_CLOUDX1_DLL
12  #define CLOUDX1_DECL __declspec(dllexport)
13  #else
14  #define CLOUDX1_DECL __declspec(dllimport)
15  #endif
16 #endif
17 
18 #define CLOUDX1_HAS_WEBSERVER 1
19 #define CLOUDX1_HAS_CLOUDBUS 0
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif // __cplusplus
24 
70 // --------------------------------------------------------------
89 // --------------------------------------------------------------
143 // --------------------------------------------------------------
144 
145 // --------------------------------------------------------------
157 #define CLOUDX1_AUDIOFRAME_COUNT 64
163 #define CLOUDX1_CHANNEL_COUNT 2
169 #define CLOUDX1_AUDIO_INPUT_COUNT 1
175 #define CLOUDX1_AUDIO_OUTPUT_COUNT 1
181 #define CLOUDX1_SAMPLE_RATE 48000
182 
189  size_t struct_size;
190  const char *name;
191  const char *prefix;
192  const char *shortname;
193  const char *version;
194 };
195 
204 
211 
225 
235 
244 
254 
264 
273 
278  none = 0,
279  fatal = 1,
280  error = 2,
281  warning = 3,
282  info = 4,
283  verbose = 5,
284  verbose2 = 6,
285  verbose3 = 7,
286  verbose4 = 8,
287  verbose5 = 9,
288 };
289 
296 typedef void (*cloudx1_loggerfn) (enum cloudx1_LogSeverity, const char *);
297 
308 
317 
320 // --------------------------------------------------------------
326 // --------------------------------------------------------------
330 struct cloudx1_CInstance;
331 
335 struct cloudx1_CParameters;
336 
345 
350 
362 CLOUDX1_DECL void cloudx1_SetParameter(struct cloudx1_CParameters *params, const char *name, const char *value);
363 
369 CLOUDX1_DECL const char *cloudx1_GetParameter(struct cloudx1_CParameters *params, const char *name);
370 
376 CLOUDX1_DECL void cloudx1_FreeParameterValue(const char *value);
377 
386  const char *LoginKey,
387  const char *RadioName,
388  const char *Access_Key_ID,
389  const char *Access_Key_Secret,
390  const char *save_path
391  );
392 
401  const char *LoginKey,
402  const char *RadioName,
403  const char *Access_Key_ID,
404  const char *Access_Key_Secret,
405  const char *save_path,
406  const struct cloudx1_CParameters *parameters
407  );
408 
454  const char *LoginKey,
455  const char *RadioName,
456  const char *Access_Key_ID,
457  const char *Access_Key_Secret,
458  const char *save_path,
459  const struct cloudx1_CParameters *parameters,
460  unsigned int frames_per_chunk
461  );
462 
475 
486 
493 
496 #if CLOUDX1_HAS_CLOUDBUS
497 // --------------------------------------------------------------
506 struct cloudx1_CBus;
507 
513 CLOUDX1_DECL struct cloudx1_CBus* cloudx1_NewBus();
514 
520 CLOUDX1_DECL void cloudx1_FreeBus(struct cloudx1_CBus *bus);
521 
531 CLOUDX1_DECL void cloudx1_SetInstanceBus(struct cloudx1_CParameters *params, struct cloudx1_CBus *bus);
532 
533 
535 #endif // CLOUDX1_HAS_CLOUDBUS
536 
537 // --------------------------------------------------------------
560 // --------------------------------------------------------------
561 
562 // OS dependent filesystem path char type
563 #ifdef _WIN32
564  typedef wchar_t fs_char;
565 #else // !_WIN32
566  typedef char fs_char;
567 #endif // !_WIN32
568 
576 typedef char * (*cloudx1_storage_reader) (const fs_char *filename, void* userdata);
577 
584 typedef void (*cloudx1_storage_reader_free) (char *content, void* userdata);
585 
594 typedef int (*cloudx1_storage_writer) (const fs_char *filename, const char *content, void* userdata);
595 
603 typedef int (*cloudx1_storage_exists) (const fs_char *filename, void* userdata);
604 
612 typedef fs_char** (*cloudx1_storage_getall) (void* userdata);
613 
620 typedef void (*cloudx1_storage_getall_free) (fs_char**all, void* userdata);
621 
629 typedef int (*cloudx1_storage_remove) (const fs_char *filename, void* userdata);
630 
639 typedef int (*cloudx1_storage_rename) (const fs_char *from, const fs_char *to, void* userdata);
640 
660  , cloudx1_storage_writer writer
661  , cloudx1_storage_exists exists
663  , cloudx1_storage_remove remove
664  , cloudx1_storage_rename rename
665  , int IsReadOnly
666  , void* userdata
667  );
668 
676 };
677 
686 CLOUDX1_DECL void cloudx1_PresetManager_InformChange(struct cloudx1_CInstance *instance, const fs_char *relative_path, enum cloudx1_PresetChange_Kind change_kind);
687 
690 // --------------------------------------------------------------
698 // --------------------------------------------------------------
699 
716 CLOUDX1_DECL void cloudx1_SetMetadata(struct cloudx1_CInstance *instance, const char* key, const char* value);
717 
728 CLOUDX1_DECL void cloudx1_SetMetadataMulti(struct cloudx1_CInstance *instance, const char** keyvalue);
729 
738 
745 CLOUDX1_DECL void cloudx1_FreeMetadataInfos(struct cloudx1_CInstance *instance, const char** infos);
746 
749 // --------------------------------------------------------------
754 // --------------------------------------------------------------
755 
768 CLOUDX1_DECL void cloudx1_StartUpdateThread(struct cloudx1_CInstance *instance, unsigned int port);
769 
776 
784 CLOUDX1_DECL int cloudx1_WaitUpdateThreadReady(struct cloudx1_CInstance *instance, int milliseconds);
785 
788 // --------------------------------------------------------------
793 // --------------------------------------------------------------
815 CLOUDX1_DECL void cloudx1_ProcessAudio(struct cloudx1_CInstance *instance, const float *input, float *output );
816 
836  , float const * const *input
837  , float * const *output);
838 
852 
866 
875 
878 // --------------------------------------------------------------
885 // --------------------------------------------------------------
886  #ifdef _MSC_VER
887  #define __BYTE_ORDER__ REG_DWORD
888  #define __ORDER_LITTLE_ENDIAN__ REG_DWORD_LITTLE_ENDIAN
889  #define __ORDER_BIG_ENDIAN__ REG_DWORD_BIG_ENDIAN
890  #endif
891 
905 
906  // Native definitions, only links to the physical ones
907  #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
912  #else
917  #endif
918 };
919 
927 
935 
943 
944 
952 
963 CLOUDX1_DECL unsigned int cloudx1_AddAudio(struct cloudx1_CInstance *instance, const uint8_t *payload, unsigned int nFrame, enum cloudx1_SampleFormat fmt );
964 
971 CLOUDX1_DECL unsigned int cloudx1_AddPadAudio(struct cloudx1_CInstance *instance);
972 
980 
990 CLOUDX1_DECL unsigned int cloudx1_GetAudio(struct cloudx1_CInstance *instance, uint8_t *payload, unsigned int max_nFrame, enum cloudx1_SampleFormat fmt );
991 
995 // --------------------------------------------------------------
999 // --------------------------------------------------------------
1010 CLOUDX1_DECL void cloudx1_AudioConvertFrom(const uint8_t *payload, float *output, size_t nSpl, enum cloudx1_SampleFormat fmt);
1011 
1022 CLOUDX1_DECL void cloudx1_AudioConvertTo(const float *input, uint8_t *payload, size_t nSpl, enum cloudx1_SampleFormat fmt);
1023 
1033 CLOUDX1_DECL void cloudx1_StereoToMono(const float *input, float *output, size_t nFrame);
1034 
1044 CLOUDX1_DECL void cloudx1_MonoToStereo(const float *input, float *output, size_t nFrame);
1045 
1056 CLOUDX1_DECL void cloudx1_StereoToMono_Planar(const float *inputL, const float *inputR, float *output, size_t nFrame);
1057 
1068 CLOUDX1_DECL void cloudx1_MonoToStereo_Planar(const float *input, float *outputL, float *outputR, size_t nFrame);
1069 
1076 CLOUDX1_DECL void cloudx1_AudioMonoFromLiveStereo(const uint8_t *payload, float *output);
1077 
1084 CLOUDX1_DECL void cloudx1_AudioMonoToLiveStereo(const float *input, uint8_t *payload);
1085 
1088 // --------------------------------------------------------------
1093 // --------------------------------------------------------------
1098 
1108 
1115 
1129 CLOUDX1_DECL const char *cloudx1_ProcessJson(struct cloudx1_CClientInstance *client, const char *json_str, int *need_save);
1130 
1136 CLOUDX1_DECL void cloudx1_FreeJsonAnswer(const char *json_str);
1137 
1150 
1446 #if CLOUDX1_HAS_WEBSERVER
1447 // --------------------------------------------------------------
1455 // --------------------------------------------------------------
1474 CLOUDX1_DECL uint64_t cloudx1_Webserver_tcp(unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port);
1475 
1476 // --------------------------------------------------------------
1496 CLOUDX1_DECL uint64_t cloudx1_Webserver_tcp2(unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port, const struct cloudx1_CParameters *parameters);
1497 
1515 CLOUDX1_DECL uint64_t cloudx1_Webserver(unsigned int listenport, unsigned int listenport_secure, struct cloudx1_CInstance *instance);
1516 
1526 CLOUDX1_DECL int cloudx1_Webserver_Stop(uint64_t id, int timeout_ms);
1527 
1537 
1542 #define SOUND4_INVALID_WEBSERVER_ID ((uint64_t)-1)
1543 
1547 #define SOUND4_WEBSERVER_HTTP_OK (1<<0)
1551 #define SOUND4_WEBSERVER_HTTPS_OK (1<<1)
1552 
1554 #endif // CLOUDX1_HAS_WEBSERVER
1555 
1556 #ifdef __cplusplus
1557 } // extern "C"
1558 #endif // __cplusplus
enum cloudx1_SampleFormat cloudx1_GetFormatFromName(const char *name)
cloudx1_SampleFormat
unsigned int cloudx1_GetOutputCount(struct cloudx1_CInstance *instance)
const char * cloudx1_GetFormatName(const enum cloudx1_SampleFormat fmt)
unsigned int cloudx1_AddAudio(struct cloudx1_CInstance *instance, const uint8_t *payload, unsigned int nFrame, enum cloudx1_SampleFormat fmt)
unsigned int cloudx1_AddPadAudio(struct cloudx1_CInstance *instance)
unsigned int cloudx1_GetBytesFromFormat(const enum cloudx1_SampleFormat fmt)
unsigned int cloudx1_GetAudio(struct cloudx1_CInstance *instance, uint8_t *payload, unsigned int max_nFrame, enum cloudx1_SampleFormat fmt)
unsigned int cloudx1_GetMaxPacketFrame(struct cloudx1_CInstance *instance)
@ 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
int cloudx1_SaveState(struct cloudx1_CInstance *instance)
struct cloudx1_CClientInstance * cloudx1_NewClient(struct cloudx1_CInstance *instance)
void cloudx1_DeleteClient(struct cloudx1_CClientInstance *client)
void cloudx1_FreeJsonAnswer(const char *json_str)
const char * cloudx1_ProcessJson(struct cloudx1_CClientInstance *client, const char *json_str, int *need_save)
void cloudx1_AudioConvertTo(const float *input, uint8_t *payload, size_t nSpl, enum cloudx1_SampleFormat fmt)
void cloudx1_AudioMonoToLiveStereo(const float *input, uint8_t *payload)
void cloudx1_MonoToStereo_Planar(const float *input, float *outputL, float *outputR, size_t nFrame)
void cloudx1_StereoToMono(const float *input, float *output, size_t nFrame)
void cloudx1_AudioConvertFrom(const uint8_t *payload, float *output, size_t nSpl, enum cloudx1_SampleFormat fmt)
void cloudx1_MonoToStereo(const float *input, float *output, size_t nFrame)
void cloudx1_AudioMonoFromLiveStereo(const uint8_t *payload, float *output)
void cloudx1_StereoToMono_Planar(const float *inputL, const float *inputR, float *output, size_t nFrame)
float * cloudx1_GetBufferIn(struct cloudx1_CInstance *instance)
void cloudx1_ProcessAudio_Planar(struct cloudx1_CInstance *instance, float const *const *input, float *const *output)
void cloudx1_ProcessAudio(struct cloudx1_CInstance *instance, const float *input, float *output)
unsigned int cloudx1_GetEstimatedDelay(struct cloudx1_CInstance *instance)
float * cloudx1_GetBufferOut(struct cloudx1_CInstance *instance)
unsigned int cloudx1_GetAudioInputCount()
const char * cloudx1_GetVersion()
cloudx1_LogSeverity
unsigned int cloudx1_GetChunkSizeInFrames()
unsigned int * cloudx1_GetPossibleChunkSizeInFrames()
unsigned int cloudx1_GetAudioOutputCount()
unsigned int cloudx1_GetChannelCount()
void cloudx1_SetLoggerCallback(cloudx1_loggerfn logger)
unsigned int cloudx1_GetSampleRate()
const struct SOUND4_ProcessInfo * SOUND4_GetProcessInfo()
void(* cloudx1_loggerfn)(enum cloudx1_LogSeverity, const char *)
void cloudx1_SetLogSeverity(enum cloudx1_LogSeverity severity)
@ verbose5
@ fatal
@ warning
@ verbose4
@ info
@ none
@ error
@ verbose2
@ verbose3
@ verbose
void cloudx1_FreeParameterValue(const char *value)
void cloudx1_ExitProcess(struct cloudx1_CInstance *instance)
void cloudx1_FreeParameters(struct cloudx1_CParameters *params)
struct cloudx1_CParameters * cloudx1_NewParameters()
void cloudx1_SetParameter(struct cloudx1_CParameters *params, const char *name, const char *value)
int cloudx1_TerminateProcess(struct cloudx1_CInstance *instance)
struct cloudx1_CInstance * cloudx1_InitProcess3(const char *LoginKey, const char *RadioName, const char *Access_Key_ID, const char *Access_Key_Secret, const char *save_path, const struct cloudx1_CParameters *parameters, unsigned int frames_per_chunk)
struct cloudx1_CInstance * cloudx1_InitProcess(const char *LoginKey, const char *RadioName, const char *Access_Key_ID, const char *Access_Key_Secret, const char *save_path)
const char * cloudx1_GetParameter(struct cloudx1_CParameters *params, const char *name)
unsigned int cloudx1_GetProcessChunkFrames(struct cloudx1_CInstance *instance)
struct cloudx1_CInstance * cloudx1_InitProcess2(const char *LoginKey, const char *RadioName, const char *Access_Key_ID, const char *Access_Key_Secret, const char *save_path, const struct cloudx1_CParameters *parameters)
const char ** cloudx1_GetMetadataInfos(struct cloudx1_CInstance *instance)
void cloudx1_SetMetadata(struct cloudx1_CInstance *instance, const char *key, const char *value)
void cloudx1_FreeMetadataInfos(struct cloudx1_CInstance *instance, const char **infos)
void cloudx1_SetMetadataMulti(struct cloudx1_CInstance *instance, const char **keyvalue)
int(* cloudx1_storage_remove)(const fs_char *filename, void *userdata)
cloudx1_PresetChange_Kind
int(* cloudx1_storage_writer)(const fs_char *filename, const char *content, void *userdata)
void cloudx1_SetPresetManager(struct cloudx1_CParameters *params, cloudx1_storage_reader reader, cloudx1_storage_reader_free, cloudx1_storage_writer writer, cloudx1_storage_exists exists, cloudx1_storage_getall getall, cloudx1_storage_getall_free getall_free, cloudx1_storage_remove remove, cloudx1_storage_rename rename, int IsReadOnly, void *userdata)
void(* cloudx1_storage_reader_free)(char *content, void *userdata)
int(* cloudx1_storage_rename)(const fs_char *from, const fs_char *to, void *userdata)
fs_char **(* cloudx1_storage_getall)(void *userdata)
int(* cloudx1_storage_exists)(const fs_char *filename, void *userdata)
void cloudx1_PresetManager_InformChange(struct cloudx1_CInstance *instance, const fs_char *relative_path, enum cloudx1_PresetChange_Kind change_kind)
char *(* cloudx1_storage_reader)(const fs_char *filename, void *userdata)
void(* cloudx1_storage_getall_free)(fs_char **all, void *userdata)
wchar_t fs_char
@ change_kind_modified
Path has been modified.
@ change_kind_created
Path has been created.
@ change_kind_deleted
Path has been deleted.
void cloudx1_StartUpdateThread(struct cloudx1_CInstance *instance, unsigned int port)
int cloudx1_WaitUpdateThreadReady(struct cloudx1_CInstance *instance, int milliseconds)
void cloudx1_StopUpdateThread(struct cloudx1_CInstance *instance)
uint64_t cloudx1_Webserver_tcp2(unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port, const struct cloudx1_CParameters *parameters)
uint64_t cloudx1_Webserver(unsigned int listenport, unsigned int listenport_secure, struct cloudx1_CInstance *instance)
uint64_t cloudx1_Webserver_tcp(unsigned int listenport, unsigned int listenport_secure, const char *socket_ip, unsigned int socket_port)
int cloudx1_Webserver_Status(uint64_t id)
int cloudx1_Webserver_Stop(uint64_t id, int timeout_ms)
#define CLOUDX1_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.