Expand description
flexaudio-core — OS 非依存コア。
デスクトップ音声キャプチャ抽象化ライブラリ flexaudio の OS 非依存部分。
リングバッファ / SR 変換 / チャンネル mix / 20ms チャンク化 / クロック正規化 /
イベント・型定義を提供する。OS 固有のキャプチャは backend::CaptureBackend を
実装する別 crate(flexaudio-os-*)が担い、facade 層が両者を配線する。
§固定契約
内部処理はすべて interleaved f32 / 48000 Hz / ステレオ 2ch / 20ms = 960
frames/chunk で行う。外部へ出すレート/チャンネルは OutputFormat で変えられ
(Normalizer 第 2 段が再変換。例 16k/1ch は 320 frames/chunk)、出力チャンクは
レートに依らず時間ベースで 20ms。
公開 API にコールバックは無い。RT スレッドは push のみ、消費側は poll する。 RT 経路は非ブロッキング(満杯時は DROP_OLDEST / overflow ドロップ)。PTS は デバイス由来で、ギャップを検知する。
§2 段リングバッファ構成
[RT cb] --push--> RawRing (rtrb, RT安全) --pop--> [取り込み/加工スレッド]
|
Normalizer (mix + rubato SRC + 960切出)
|
v
ChunkRing (ringbuf, DROP_OLDEST) --try_pop--> [poll]Re-exports§
pub use backend::CaptureBackend;pub use backend::RawSink;pub use chunk_ring::chunk_ring;pub use chunk_ring::ChunkConsumer;pub use chunk_ring::ChunkProducer;pub use clock::monotonic_now_ns;pub use clock::ClockNormalizer;pub use normalizer::Normalizer;pub use normalizer::CHUNK_FRAMES;pub use raw_ring::raw_ring;pub use raw_ring::RawConsumer;pub use raw_ring::RawProducer;pub use types::AudioChunk;pub use types::ChunkFlags;pub use types::DeviceEvent;pub use types::DeviceInfo;pub use types::Error;pub use types::Event;pub use types::OutputFormat;pub use types::Result;pub use types::SourceKind;pub use types::StreamConfig;pub use types::CHANNELS;pub use types::SAMPLE_RATE;
Modules§
- backend
- OS バックエンドが実装する
CaptureBackendトレイトと、バックエンドが 生フレームをコアへ渡すためのRawSinkハンドル。 - chunk_
ring - 完成
AudioChunkの SPSC リング(ringbuf バック)。 - clock
- デバイス PTS / 単調クロックを共通の
i64ナノ秒へ正規化するヘルパ。 - normalizer
- 任意のデバイスフレーム(任意 SR / 任意 ch / interleaved f32)を 2 段で 正規化・再変換する。
- raw_
ring - 生 interleaved f32 デバイスフレーム用の SPSC・RT 安全リング(rtrb バック)。
- types
- 共有型: 内部正規形の定数 /
AudioChunk/ChunkFlags/SourceKind/OutputFormat/StreamConfig/Event/Error。