60#ifndef WHITEBOARD_POSTER_STRING_CONVERSION
61#define WHITEBOARD_POSTER_STRING_CONVERSION
73#pragma clang diagnostic push
74#pragma clang diagnostic ignored "-Wunused-macros"
78#elif defined(__APPLE__)
79# include <machine/endian.h>
80# include <architecture/byte_order.h>
81# define bswap_16(x) NXSwapShort(x)
82# define bswap_32(x) NXSwapInt(x)
83# define bswap_64(x) NXSwapLongLong(x)
85# define bswap_16(x) __builtin_bswap16(x)
86# define bswap_32(x) __builtin_bswap32(x)
87# define bswap_64(x) __builtin_bswap64(x)
92#if (!defined(__BYTE_ORDER) && !defined(__LITTLE_ENDIAN)) || (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && __BYTE_ORDER == __LITTLE_ENDIAN)
93# if !defined(htonll) && !defined(ntohll)
94# define htonll(x) bswap_64(x)
95# define ntohll(x) bswap_64(x)
97# if !defined(htonl) && !defined(ntohl)
98# define htonl(x) bswap_32(x)
99# define ntohl(x) bswap_32(x)
101# if !defined(htons) && !defined(ntohs)
102# define htons(x) bswap_16(x)
103# define ntohs(x) bswap_16(x)
106# if !defined(htonll) && !defined(ntohll)
107# define htonll(x) (x)
108# define ntohll(x) (x)
110# if !defined(htonl) && !defined(ntohl)
114# if !defined(htons) && !defined(ntohs)
119#pragma clang diagnostic pop
128#pragma clang diagnostic push
129#pragma clang diagnostic ignored "-Wunused-variable"
131 if (len >= bufferSize) {
134 len = gu_strlcat(descString,
"rms={", bufferSize);
135 if (len >= bufferSize) {
139 char* rms_p = rms_buffer;
141 len = gu_strlcat(descString, rms_p, bufferSize);
142 if (len >= bufferSize) {
145 len = gu_strlcat(descString,
"}", bufferSize);
146 if (len >= bufferSize) {
149 len = gu_strlcat(descString,
", ", bufferSize);
150 if (len >= bufferSize) {
153 len = gu_strlcat(descString,
"frequencies={", bufferSize);
155 if (len >= bufferSize) {
158 if (frequencies_index > 0) {
159 len = gu_strlcat(descString,
", ", bufferSize);
161 len = gu_strlcat(descString,
"{", bufferSize);
162 if (len >= bufferSize) {
166 char* frequencies_1_p = frequencies_1_buffer;
168 len = gu_strlcat(descString, frequencies_1_p, bufferSize);
169 if (len >= bufferSize) {
172 len = gu_strlcat(descString,
"}", bufferSize);
174 if (len >= bufferSize) {
177 len = gu_strlcat(descString,
"}", bufferSize);
179#pragma clang diagnostic pop
187#pragma clang diagnostic push
188#pragma clang diagnostic ignored "-Wunused-variable"
190 if (len >= bufferSize) {
193 len = gu_strlcat(toString,
"{", bufferSize);
194 if (len >= bufferSize) {
198 char* rms_p = rms_buffer;
200 len = gu_strlcat(toString, rms_p, bufferSize);
201 if (len >= bufferSize) {
204 len = gu_strlcat(toString,
"}", bufferSize);
205 if (len >= bufferSize) {
208 len = gu_strlcat(toString,
", ", bufferSize);
209 if (len >= bufferSize) {
212 len = gu_strlcat(toString,
"{", bufferSize);
214 if (len >= bufferSize) {
217 if (frequencies_index > 0) {
218 len = gu_strlcat(toString,
", ", bufferSize);
220 len = gu_strlcat(toString,
"{", bufferSize);
221 if (len >= bufferSize) {
225 char* frequencies_1_p = frequencies_1_buffer;
227 len = gu_strlcat(toString, frequencies_1_p, bufferSize);
228 if (len >= bufferSize) {
231 len = gu_strlcat(toString,
"}", bufferSize);
233 if (len >= bufferSize) {
236 len = gu_strlcat(toString,
"}", bufferSize);
238#pragma clang diagnostic pop
246 size_t temp_length = strlen(str);
247 int length = (temp_length <= INT_MAX) ? ((
int)((ssize_t)temp_length)) : -1;
252 char* var_str = &var_str_buffer[0];
254 char* key = &key_buffer[0];
262 if (index == 0 && str[0] ==
'{') {
268 for (
int i = index; i < length; i++) {
270 if (bracecount == 0 && str[i] ==
'=') {
275 if (bracecount == 0 && isspace(str[i])) {
282 if (bracecount == 0 && str[i] ==
',') {
288 if (bracecount == 1) {
295 if (bracecount < 0) {
300 if (i == length - 1) {
304 if (endKey >= startKey && endKey - startKey < length) {
305 strncpy(key, str + startKey, ((
size_t)(endKey - startKey) + 1));
306 key[(endKey - startKey) + 1] = 0;
310 strncpy(var_str, str + startVar, ((
size_t)(index - startVar) + 1));
311 var_str[(index - startVar) + 1] = 0;
317 if (strlen(key) > 0) {
318 if (0 == strcmp(
"rms", key)) {
320 }
else if (0 == strcmp(
"frequencies", key)) {
335 int restartIndex = index;
336 index = lastBrace + 1;
342 for (
int i = index; i < length; i++) {
344 if (bracecount == 0 && str[i] ==
'=') {
349 if (bracecount == 0 && isspace(str[i])) {
356 if (bracecount == 0 && str[i] ==
',') {
366 if (bracecount < 0) {
371 if (i == length - 1) {
375 if (endKey >= startKey && endKey - startKey < length) {
376 strncpy(key, str + startKey, ((
size_t)(endKey - startKey) + 1));
377 key[(endKey - startKey) + 1] = 0;
381 strncpy(var_str, str + startVar, ((
size_t)(index - startVar) + 1));
382 var_str[(index - startVar) + 1] = 0;
390 self->frequencies[frequencies_0_index] = frequencies_0;
392 index = restartIndex;
399 }
while(index < length);
410 uint16_t bit_offset = 0;
416 const char *buf = (
const char *)&self->frequencies[0];
419 for (c = 0; c < bytes; c++) {
420 for (b = 7; b >= 0; b--) {
422 uint16_t
byte = bit_offset / 8;
423 uint16_t bit = 7 - (bit_offset % 8);
424 unsigned long newbit = !!((buf[c] >> b) & 1U);
425 dst[byte] ^= (-newbit ^ dst[byte]) & (1UL << bit);
426 bit_offset = bit_offset + 1;
442 uint16_t bit_offset = 0;
448 char *buf = (
char *)malloc(bytes);
451 for (c = 0; c < bytes; c++) {
452 for (b = 7; b >= 0; b--) {
454 uint16_t
byte = bit_offset / 8;
455 uint16_t bit = 7 - (bit_offset % 8);
456 char dataByte = src[byte];
457 unsigned char bitValue = (dataByte >> bit) & 1U;
458 buf[c] ^= (-bitValue ^ buf[c]) & (1UL << b);
459 bit_offset = bit_offset + 1;
Frequency quadruple for rear and front stereo channels.
struct wb_microphone_frequencies frequencies[static_cast< int >(((GU_SIMPLE_WHITEBOARD_BUFSIZE - sizeof(struct wb_r_m_s_levels))/sizeof(struct wb_microphone_frequencies)))]
dominant frequencies
WHITEBOARD_POSTER_STRING_CONVERSION.
size_t wb_dominant_frequencies_from_network_serialised(const char *src, struct wb_dominant_frequencies *dst)
Convert from a compressed, serialised, network byte order byte stream.
const char * wb_dominant_frequencies_description(const struct wb_dominant_frequencies *self, char *descString, size_t bufferSize)
Convert to a description string.
const char * wb_dominant_frequencies_to_string(const struct wb_dominant_frequencies *self, char *toString, size_t bufferSize)
Convert to a string.
struct wb_dominant_frequencies * wb_dominant_frequencies_from_string(struct wb_dominant_frequencies *self, const char *str)
Convert from a string.
size_t wb_dominant_frequencies_to_network_serialised(const struct wb_dominant_frequencies *self, char *dst)
Convert to a compressed, serialised, network byte order byte stream.
#define DOMINANT_NUMFREQi
#define DOMINANT_FREQUENCIES_FREQUENCIES_ARRAY_SIZE
WHITEBOARD_POSTER_STRING_CONVERSION.
#define DOMINANT_FREQUENCIES_DESC_BUFFER_SIZE
struct wb_microphone_frequencies * wb_microphone_frequencies_from_string(struct wb_microphone_frequencies *self, const char *str)
Convert from a string.
const char * wb_microphone_frequencies_to_string(const struct wb_microphone_frequencies *self, char *toString, size_t bufferSize)
Convert to a string.
const char * wb_microphone_frequencies_description(const struct wb_microphone_frequencies *self, char *descString, size_t bufferSize)
Convert to a description string.
#define MICROPHONE_FREQUENCIES_TO_STRING_BUFFER_SIZE
#define MICROPHONE_FREQUENCIES_DESC_BUFFER_SIZE
const char * wb_r_m_s_levels_to_string(const struct wb_r_m_s_levels *self, char *toString, size_t bufferSize)
Convert to a string.
struct wb_r_m_s_levels * wb_r_m_s_levels_from_string(struct wb_r_m_s_levels *self, const char *str)
Convert from a string.
const char * wb_r_m_s_levels_description(const struct wb_r_m_s_levels *self, char *descString, size_t bufferSize)
Convert to a description string.
#define RMS_LEVELS_DESC_BUFFER_SIZE
#define RMS_LEVELS_TO_STRING_BUFFER_SIZE