pub struct RawSink { /* private fields */ }Expand description
バックエンドが生 interleaved f32 フレームをコアへ渡すためのシンク。
内部に RawProducer を持ち、push は RT 安全な非ブロッキング
書き込み(満杯時 DROP)を行う。SPSC の producer 側で、バックエンドの RT
コールバックスレッドからのみ push する想定。
Implementations§
Source§impl RawSink
impl RawSink
Sourcepub fn new(
producer: RawProducer,
native_rate: u32,
native_channels: u16,
) -> Self
pub fn new( producer: RawProducer, native_rate: u32, native_channels: u16, ) -> Self
バックエンドのネイティブフォーマットと共に生フレームシンクを作る。
Sourcepub fn push(&mut self, interleaved: &[f32], pts_ns: i64) -> usize
pub fn push(&mut self, interleaved: &[f32], pts_ns: i64) -> usize
生 interleaved f32 フレームを非ブロッキングに渡す。
pts_ns はデバイス由来のプレゼンテーションタイムスタンプ。決してブロックせず、
満杯時は内部 overflow カウンタを増やしてドロップする。
PTS の正規化と 20ms チャンク化は取り込みスレッドの責務で、ここでは生フレーム
だけを渡す。生リングはサンプルしか運ばないため pts_ns は配線層が別途取り回す
(将来フレームへ対応付ける用途で、用意できる backend は渡しておく)。
push は backend の RT コールバックから呼ばれる想定。独自 backend では、push
を呼ぶ経路でヒープ確保・ロック・ブロッキング・システムコールをしないこと。
Sourcepub fn native_rate(&self) -> u32
pub fn native_rate(&self) -> u32
バックエンドのネイティブサンプルレート(Hz)。
Sourcepub fn native_channels(&self) -> u16
pub fn native_channels(&self) -> u16
バックエンドのネイティブチャンネル数。
Sourcepub fn overflow_count(&self) -> u64
pub fn overflow_count(&self) -> u64
これまでに(満杯で)ドロップした累計サンプル数。
Auto Trait Implementations§
impl !Freeze for RawSink
impl !RefUnwindSafe for RawSink
impl !Sync for RawSink
impl Send for RawSink
impl Unpin for RawSink
impl UnsafeUnpin for RawSink
impl UnwindSafe for RawSink
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more