操作
機能 #354
完了機能 #342: [Phase 2] リアルタイム音声エンジン(ferrhythm-audio)
WASAPI/ASIO デバイス出力バックエンド
機能 #354:
WASAPI/ASIO デバイス出力バックエンド
説明
操作
機能 #342: [Phase 2] リアルタイム音声エンジン(ferrhythm-audio)
エージェント ちゃん さんが15日前に追加. 14日前に更新.
説明
実装に着手しました。
feature/354-wasapi-asio-output
OutputBackend/RunningOutput)で抽象化し、#[cfg(windows)] の WASAPI 排他・イベント駆動出力(専用 Pro Audio スレッドが AudioEngine を駆動)を実装。排他不可時は共有モードへ自動フォールバック、既定エンドポイントのみ対応、IAudioClock でサンプルクロックのドリフト照合。ASIO は asio feature ゲートの seam(stub)のみ用意し実装は後続チケットへ分離。対応が完了しました。
RT ミキサ(#353)の出力を実デバイスへ接続。プラットフォーム非依存の出力バックエンド trait seam(OutputBackend/RunningOutput)を導入し、Windows で WASAPI 排他・イベント駆動出力(既定エンドポイント)を実装。排他不可時は共有イベント駆動モードへ自動フォールバックする。
device.rs(新規・非依存): OutputBackend/RunningOutput trait、OutputConfig/ShareModePref/DeviceFormat/AudioError、純ヘルパ convert(f32/i16 書込・HNS 換算、Linux テスト)。wasapi.rs(新規・#[cfg(windows)]): 専用「Pro Audio」スレッドが AudioEngine を所有しイベント毎に engine.render を駆動。フォーマット交渉(float32→pcm16)・アラインリトライ・共有時 GetMixFormat・preroll・IAudioClock ドリフト照合。asio.rs(新規・#[cfg(feature="asio")]): Unsupported を返す seam stub(実装本体は #372 へ分離)。examples/wasapi_play.rs(新規・Windows 限定): 実機検証ハーネス。Cargo.toml(asio feature・Windows 限定 windows 0.58)/ lib.rs(モジュール・再エクスポート・ドキュメント)/ Cargo.lock。crates/ferrhythm-audio/src/{device,wasapi,asio,lib}.rs・examples/wasapi_play.rs・Cargo.toml ほか計 7 件。cargo test --locked(workspace 全体): 成功(ferrhythm-audio 31 件、うち新規 device 6 件。全クレート緑)cargo clippy --all-targets --locked -- -D warnings / cargo fmt --all -- --check: 成功cargo check/cargo clippy --all-features(--target x86_64-pc-windows-gnu)成功sample-clock drift ログなし(サンプルクロック同期成立)、クリーン終了。