Skip to main content

Crate flexaudio_core

Crate flexaudio_core 

Source
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