Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement PLC #731

Closed
33 tasks done
gavv opened this issue Jun 17, 2024 · 0 comments
Closed
33 tasks done

Implement PLC #731

gavv opened this issue Jun 17, 2024 · 0 comments
Assignees
Labels
c api Task affects public C API enhancement
Milestone

Comments

@gavv
Copy link
Member

gavv commented Jun 17, 2024

  • Finish dependency tasks

  • Update Depacketizer

  • 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
@gavv gavv self-assigned this Jun 17, 2024
@gavv gavv added this to the next milestone Jun 17, 2024
@gavv gavv added the c api Task affects public C API label Jun 20, 2024
@gavv gavv added this to Roc Toolkit Jul 6, 2024
@gavv gavv moved this to In work in Roc Toolkit Jul 6, 2024
@gavv gavv closed this as completed Jul 17, 2024
@github-project-automation github-project-automation bot moved this from In work to Done in Roc Toolkit Jul 17, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Jul 17, 2024
- forward status codes from packet reader
- support soft reads
- generate partial reads to separate signal and losses into
  different frames
- use ModePeek to avoid advancing pipeline when next available
  packet is too far, and in soft read
- remove beeping support

These changes also fix issues roc-streaminggh-54 and roc-streaminggh-210

Sponsored-by: waspd
gavv added a commit to gavv/roc-toolkit that referenced this issue Jul 17, 2024
Expose decoded & dropped packet counters and check that they
have correct values in depacketizer tests.

Sponsored-by: waspd
gavv added a commit to gavv/roc-toolkit that referenced this issue Jul 17, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Jul 17, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Jul 17, 2024
…anges

- describe packet read modes (fetch, peek) and status codes
- describe new design of frames (pools, partial reads)
- describe frame read modes (hard, soft) and codes
- describe frame fields and formats

Sponsored-by: waspd
gavv added a commit to gavv/roc-toolkit that referenced this issue Jul 17, 2024
- replace audio::ResamplerMap with audio::ProcessorMap
- make ProcessorMap non-singleton and use hashtable
- unify fec::CodecMap, rtp::EncodingMap, audio::ProcessorMap
- return status code when registering encoding

Sponsored-by: waspd
gavv added a commit to gavv/roc-toolkit that referenced this issue Jul 17, 2024
Add PlcReader (pipeline element) and IPlc (PLC backend).
They are used to fill lost samples with something better
than silence, e.g. interpolated data.

Also add a dummy PLC backend "BeepPlc", that replaces
losses with a loud beep (useful for debugging).

Sponsored-by: waspd
gavv added a commit to gavv/roc-toolkit that referenced this issue Jul 17, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Jul 17, 2024
Built-in PLC support:

- add roc_plc_backend
- add roc_receiver_config.plc_backend

Custom PLC support:

- add plugin.h
- add ROC_ENCODING_ID_MIN, ROC_ENCODING_ID_MAX
- add ROC_PLUGIN_ID_MIN, ROC_PLUGIN_ID_MAX
- add roc_plugin_plc
- add roc_context_register_plc

Extra:

- add API usage example
- add API integration test

Sponsored-by: waspd
gavv added a commit to gavv/roc-toolkit that referenced this issue Jul 20, 2024
- add native_alias and portable_alias
- renames

Sponsored-by: waspd
gavv added a commit to gavv/roc-toolkit that referenced this issue Jul 20, 2024
PLC sample rate & channel layout actually match network
encoding, not local frame encoding. So now we pass
roc_media_encoding dynamically to PLC instead of stating that
encoding is the same as receiver_config.frame_encoding.

Since PLC encoding does not match frame encoding, we don't
use format from frame encoding, but instead we always use
ROC_FORMAT_PCM_FLOAT32 and state this in documentation.

Sponsored-by: waspd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c api Task affects public C API enhancement
Projects
Status: Done
Development

No branches or pull requests

1 participant