ref: f2c806cb2ade67461ccb8d05c604ff2ad715e75a
dir: /src/pt2_sync.h/
#pragma once #include <stdint.h> #include <stdbool.h> #include "pt2_header.h" // AMIGA_VOICES enum // flags { UPDATE_VOLUME = 1, UPDATE_PERIOD = 2, TRIGGER_SAMPLE = 4, UPDATE_DATA = 8, UPDATE_LENGTH = 16, UPDATE_VUMETER = 32, UPDATE_ANALYZER = 64 }; // 2^n-1 - don't change this! Queue buffer is already ~1MB in size #define SYNC_QUEUE_LEN 8191 typedef struct syncedChannel_t { uint8_t flags; const int8_t *triggerData, *newData; uint16_t triggerLength, newLength; uint8_t volume, vuVolume, analyzerVolume; uint16_t period, analyzerPeriod; } syncedChannel_t; typedef struct chSyncData_t { syncedChannel_t channels[AMIGA_VOICES]; uint64_t timestamp; } chSyncData_t; typedef struct chSync_t { volatile int32_t readPos, writePos; chSyncData_t data[SYNC_QUEUE_LEN + 1]; } chSync_t; void resetChSyncQueue(void); bool chQueuePush(chSyncData_t t); void updateChannelSyncBuffer(void); extern chSyncData_t *chSyncEntry; // pt2_sync.c extern chSync_t chSync; // pt2_sync.c