/* * codec/opus_codec.h — Opus encode/decode (libopus 1.6). * * Design: docs/voice.md §3–4. Per-channel AudioConfig (mono/stereo, bitrate, frame size, * FEC, DTX, complexity). The server relays Opus payloads unmodified (no transcode). * * STATUS: M0 stub. */ #ifndef VOICECAT_CODEC_OPUS_CODEC_H #define VOICECAT_CODEC_OPUS_CODEC_H #include namespace voicecat::codec { struct OpusParams { uint32_t sample_rate = 48000; uint32_t bitrate_bps = 24000; uint32_t frame_ms = 20; bool stereo = false; bool fec = true; bool dtx = true; uint32_t complexity = 10; uint32_t expected_packet_loss = 0; }; class OpusEncoder { public: // TODO(M2): init(params); encode(pcm, frame) -> opus bytes. }; class OpusDecoder { public: // TODO(M2): init(params); decode(opus, out_pcm); PLC on loss; FEC from next packet. }; } // namespace voicecat::codec #endif // VOICECAT_CODEC_OPUS_CODEC_H