pub struct FlacWriter { /* private fields */ }Expand description
録音チャンクを逐次 FLAC ファイルへ書き出すライター。
interleaved f32(flexaudio の AudioChunk.data と同じ形)を
write_chunk に流し、終わったら
finalize でヘッダを確定する。エンコードは呼び出し
スレッド上で同期的に行う。
finalize を呼ばずに drop した場合もベストエフォートで閉じる(端数の書き出しと ヘッダ確定を試み、エラーは握りつぶす)。確実に完結させたいときは finalize を 呼ぶこと。
Implementations§
Source§impl FlacWriter
impl FlacWriter
Sourcepub fn create<P: AsRef<Path>>(
path: P,
sample_rate: u32,
channels: u16,
) -> Result<FlacWriter>
pub fn create<P: AsRef<Path>>( path: P, sample_rate: u32, channels: u16, ) -> Result<FlacWriter>
path に 16bit FLAC ファイルを新規作成する(既存ファイルは上書き)。
対応範囲は channels 1..=2、sample_rate 1..=96,000 Hz。範囲外は
EncodeError::Unsupported(ファイルは作られない)。
Sourcepub fn write_chunk(&mut self, interleaved: &[f32]) -> Result<()>
pub fn write_chunk(&mut self, interleaved: &[f32]) -> Result<()>
interleaved f32 サンプルを追記する。
長さは channels の倍数であること(flexaudio の AudioChunk.data は
そのまま渡せる)。倍数でなければ EncodeError::Unsupported を返し、
何も書かない。ブロックに満たない端数は内部に持ち越し、次の呼び出しか
finalize で書かれる。
Sourcepub fn finalize(self) -> Result<()>
pub fn finalize(self) -> Result<()>
端数フレームの書き出しとヘッダ確定を行い、ファイルを閉じる。
self を消費するので、以後の write_chunk は型で
不可能。Drop でも同じ処理をベストエフォートで行うが、書き込みエラーを
検知できるのはこちらだけなので finalize 推奨。
Trait Implementations§
Source§impl Debug for FlacWriter
impl Debug for FlacWriter
Source§impl Drop for FlacWriter
impl Drop for FlacWriter
Auto Trait Implementations§
impl Freeze for FlacWriter
impl RefUnwindSafe for FlacWriter
impl Send for FlacWriter
impl Sync for FlacWriter
impl Unpin for FlacWriter
impl UnsafeUnpin for FlacWriter
impl UnwindSafe for FlacWriter
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