1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
mod callbacks; #[allow(clippy::module_inception)] mod encoder; mod config; mod state; mod error; #[cfg(feature = "flac")] use flac_sys::{FLAC__StreamEncoder, FLAC__stream_encoder_delete}; #[cfg(feature = "libflac")] use libflac_sys::{FLAC__StreamEncoder, FLAC__stream_encoder_delete}; use std::{mem, ptr}; pub use self::callbacks::{WriteWrapper, flac_encoder_write_write_callback}; pub use self::error::FlacEncoderInitError; pub use self::config::FlacEncoderConfig; pub use self::state::FlacEncoderState; pub use self::encoder::FlacEncoder; #[derive(Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] struct StreamEncoderContainer(pub *mut FLAC__StreamEncoder); impl Drop for StreamEncoderContainer { fn drop(&mut self) { let ptr = mem::replace(&mut self.0, ptr::null_mut()); if !ptr.is_null() { unsafe { FLAC__stream_encoder_delete(ptr) }; } } }