roc-streaming/roc-toolkit

Implement PLC

gavv opened this issue · 0 comments

gavv commented
  • Finish dependency tasks

    • #615 - allow reporting partial read and teach readers to handle it
      • needs #614 - teach readers reporting status codes
      • needs #697 - return frame instead of filling pre-allocated frame, so that reader can define frame size, not caller
    • #730 - allow reading signal and gaps (packet losses) separately (using partial reads mechanism)
      • needs #304 - inspect next packet without dequeuing it
  • Update Depacketizer

    • generate partial reads to distinguish gaps and signal
    • handle soft reads
    • forward errors and StatusDrain from packet reader
    • do peek read before fetch read, and don't do a fetch if it's not needed yet (will fix #54 and #210)
    • unit tests
  • Implement PLC backend & reader

    • ProcessorMap
    • PlcBackend, IPlc
    • PlcReader
    • BeepPlc
    • unit tests
  • Integrate PLC into pipeline

  • Pipeline tests

    • partial reads
    • soft reads
    • big reads
    • plc
  • CLI

    • --plc=none,beep
    • docs
  • Add PLC support to public API

    • add roc_plc_backend (ROC_PLC_DISABLE, ROC_PLC_DEFAULT, ROC_PLC_BEEP)
    • add plc_backend field to roc_receiver_config
    • pass from API to pipeline
    • ProcessorMap::register_plc()
    • PluginPlc
    • add roc_context_register_plc(roc_plc_backend, func_table)
    • header comments
    • sphinx doc
    • usage example
    • integration test