1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #include "squeezelite.h"
- #define VISUEXPORT_SIZE 2048
- EXT_BSS struct visu_export_s visu_export;
- static struct visu_export_s *visu = &visu_export;
- static log_level loglevel = lINFO;
- void output_visu_export(s16_t *frames, frames_t out_frames, u32_t rate, bool silence, u32_t gain) {
-
-
- if (silence) {
- visu->running = false;
- return;
- }
-
-
- if (!pthread_mutex_trylock(&visu->mutex)) {
-
- if (visu->rate != rate) visu->level = 0;
-
-
- if (visu->level < visu->size) {
- u32_t space = min(visu->size - visu->level, out_frames * 2) * 2;
- memcpy(visu->buffer + visu->level, frames, space);
-
- visu->level += space / 2;
- visu->running = true;
- visu->rate = rate ? rate : 44100;
- visu->gain = gain;
- }
-
-
- pthread_mutex_unlock(&visu->mutex);
- }
- }
- void output_visu_close(void) {
- pthread_mutex_lock(&visu->mutex);
- visu->running = false;
- free(visu->buffer);
- pthread_mutex_unlock(&visu->mutex);
- }
- void output_visu_init(log_level level) {
- loglevel = level;
- pthread_mutex_init(&visu->mutex, NULL);
- visu->size = VISUEXPORT_SIZE;
- visu->running = false;
- visu->rate = 44100;
- visu->buffer = malloc(VISUEXPORT_SIZE * sizeof(s16_t) * 2);
- LOG_INFO("Initialize VISUEXPORT %u 16 bits samples", VISUEXPORT_SIZE);
- }
|