o copy component audio_board from ADF and create custom component from it
o copy component audio_hal from ADF and create custom component from it
o copy component audio_sal from ADF and create custom component from it
o copy component esp_peripherals from ADF and create custom component from it
- add fLaC support through xiph's original repository as a git module
- run player_task on core 1 with max priority
- create/destroy chunk queue as required automatically
- use mutex to access snapcast config and communicate this change by queue with size 1
- increase buffers for WIFI and LWIP in sdkconfig for NO_SPIRAM config
- add some more debug output
- detect snapcast configuration and init everything accordingly, e.g sample rate, chunk duration, ...
o calculate apll predefines in dependence of sample rate
o communicate these settings to interested parties
- remove typos
- minimize RAM usage of all components
- use both IRAM and DRAM in player component so we can buffer up to 1s on modules without SPI RAM
- support fragemented pcm chunks so we can use all available RAM if there isn't a big enough block available but still enough HEAP
- reinclude all components from jorgen's master branch
- add custom i2s driver to get a precise timing of initial sync
- change wrong usage of esp_timer for latency measurement of snapcast protocol
- add player component
- directly write i2s from sync task
o use DMA events to ensure buffer is empty on hard sync
- add i2s playback task
o try synced playback using i2s DMA events and task notifications
- drop short latency buffers
- change syncing to be more predictable using I2S_EVENT_TX_DONE
o also increase DMA length so i2s won't eat up so much processing time
o ensure at least one chunk is in DMA buffer
- add WIFI provisioning using Soft AP
- remove bug in server_now() leading to occasional unneccessary hard resyncs
- use shortMedianFilter to decide about hard resync condition
- drop ADF pipeline stuff related to playback, this introduced too much non deterministic delay
- add fast median calculation component
- increase LWIP buffers
- do apll change only when current setting is different than the wanted one
- improve snapcast_sync_task
- add esp timer to issue time sync messages to server every second
o block on semaphore which is given in timer callback
- start dropping adf piplines for decoding wirechunk part of code
o use write callback for output
o TODO: use read callback for input
- move time stamping of pcm chunks to decoder's write callback
- try to improve synced playback using APLL adjustments
- reduce diffBuf size to 1, bigger values seem to be problematic if packet loss is happening, maybe we need to detect this and clear diffBuf
- do early time syncs on boot to fill diffBuf
- playing with pipline ringbuf sizes and I2S DMA buffer sizes