Commit Graph

14 Commits

  • - major change, use lwip netconn instead of socket API to reduce RAM footprint
    o flac works, opus and pcm are untested and not working
    - improve on resyncing issues
    - add wifi logger component submodule
    - optimize stack sizes
  • - completely drop ADF but copy necessary parts
    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
  • - rename a view things
    - 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
  • - clean up code
    - add pre commit using GNU style
    - remove some minor issues regarding the use of global variables and such
  • - add sdkconfig for NO_SPIRAM and SPIRAM situation
    - 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
  • - merge with original master from jorgen
    - 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
  • - change buffer sizes of medians
    - 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
  • - prefer SPIRAM for LWIP
    - 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
  • - add eclipse project configuration
    - use espressif ADF, remove external opus rep
      o uses audio pipelines now
    - change code to use flac decoder
    - remove mersus code
    - add first try of audio synchronization
      o needed to sync timeofday to server on reception of server settings to avoid overflows in timeval calculations (int32_t on esp32 SDK)
      o still a lot of TODO's in the code, but it's almost in sync, although there is quite some chunk skipping which I am currently working on