pub trait CaptureBackend: Send {
// Required methods
fn native_format(&self) -> (u32, u16);
fn start(&mut self, sink: RawSink) -> Result<()>;
fn stop(&mut self);
}Expand description
OS 固有キャプチャバックエンドが実装するトレイト。
facade は native_format でネイティブフォーマットを
取得して Normalizer を構成し、start に
RawSink を渡してキャプチャを開始する。バックエンドは自身の RT コールバック
内で sink.push(...) を呼ぶ。
Stream::open に Box<dyn CaptureBackend> を渡せば独自 backend を差し込める。
独自 backend を実装するときに守ること:
- キャプチャスレッド / RT コールバックで panic させない(panic するとキャプチャが 静かに止まりうる)。
- RT コールバックからの
RawSink::pushは RT 安全に呼ぶ(ヒープ確保・ロック・ ブロッキング・システムコールなし。詳細はRawSink::pushを参照)。 start/stopを冪等にする(動作中の二重startは no-op でOk、未起動のstopも no-op)。
Required Methods§
Sourcefn native_format(&self) -> (u32, u16)
fn native_format(&self) -> (u32, u16)
バックエンドのネイティブフォーマット (sample_rate, channels)。
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".