Skip to main content

CaptureBackend

Trait CaptureBackend 

Source
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 を構成し、startRawSink を渡してキャプチャを開始する。バックエンドは自身の RT コールバック 内で sink.push(...) を呼ぶ。

Stream::openBox<dyn CaptureBackend> を渡せば独自 backend を差し込める。

独自 backend を実装するときに守ること:

  • キャプチャスレッド / RT コールバックで panic させない(panic するとキャプチャが 静かに止まりうる)。
  • RT コールバックからの RawSink::push は RT 安全に呼ぶ(ヒープ確保・ロック・ ブロッキング・システムコールなし。詳細は RawSink::push を参照)。
  • start / stop を冪等にする(動作中の二重 start は no-op で Ok、未起動の stop も no-op)。

Required Methods§

Source

fn native_format(&self) -> (u32, u16)

バックエンドのネイティブフォーマット (sample_rate, channels)

Source

fn start(&mut self, sink: RawSink) -> Result<()>

指定シンクへ生フレームを流し始める。

Source

fn stop(&mut self)

キャプチャを停止する。

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§