pub struct Encoder { /* private fields */ }Implementations§
Source§impl Encoder
impl Encoder
Sourcepub fn new(config: EncoderConfig) -> Result<Self>
pub fn new(config: EncoderConfig) -> Result<Self>
Examples found in repository?
examples/convert_wav_to_aac.rs (lines 22-32)
8fn main() -> Result<(), Box<dyn std::error::Error>> {
9 let mut args = env::args().skip(1);
10 let input = args.next().ok_or_else(usage)?;
11 let output = args.next().ok_or_else(usage)?;
12 let bitrate = match args.next() {
13 Some(value) => value
14 .parse::<u32>()
15 .map_err(|_| "bitrate must be an integer number of bits per second")?,
16 None => 128_000,
17 };
18
19 let wav_bytes = fs::read(&input)?;
20 let wav = WavFile::parse(&wav_bytes)?;
21
22 let mut encoder = Encoder::new(EncoderConfig {
23 profile: Profile::AacLc,
24 sample_rate: wav.sample_rate,
25 native_sample_rate: Some(wav.sample_rate),
26 channels: wav.channels,
27 channel_mask: wav.channel_mask.unwrap_or(0),
28 bitrate,
29 pcm_word_size: wav.bits_per_sample,
30 output_format: OutputFormat::Adts,
31 ..EncoderConfig::default()
32 })?;
33
34 let mut out = fs::File::create(Path::new(&output))?;
35 let frame_bytes = encoder.input_frame_bytes();
36 let mut offset = 0usize;
37 while offset + frame_bytes <= wav.pcm_data.len() {
38 let packet = encoder.encode_pcm_bytes(&wav.pcm_data[offset..offset + frame_bytes])?;
39 out.write_all(&packet.data)?;
40 offset += frame_bytes;
41 }
42
43 if offset < wav.pcm_data.len() {
44 let frame = encoder.encode_pcm_bytes_with_padding(&wav.pcm_data[offset..])?;
45 out.write_all(&frame.packet.data)?;
46 }
47
48 eprintln!(
49 "encoded {} Hz, {} channels, {}-bit PCM to ADTS AAC at {} bps",
50 wav.sample_rate, wav.channels, wav.bits_per_sample, bitrate
51 );
52
53 Ok(())
54}pub fn config(&self) -> &EncoderConfig
pub fn version(&self) -> &VersionInfo
Sourcepub fn input_frame_bytes(&self) -> usize
pub fn input_frame_bytes(&self) -> usize
Examples found in repository?
examples/convert_wav_to_aac.rs (line 35)
8fn main() -> Result<(), Box<dyn std::error::Error>> {
9 let mut args = env::args().skip(1);
10 let input = args.next().ok_or_else(usage)?;
11 let output = args.next().ok_or_else(usage)?;
12 let bitrate = match args.next() {
13 Some(value) => value
14 .parse::<u32>()
15 .map_err(|_| "bitrate must be an integer number of bits per second")?,
16 None => 128_000,
17 };
18
19 let wav_bytes = fs::read(&input)?;
20 let wav = WavFile::parse(&wav_bytes)?;
21
22 let mut encoder = Encoder::new(EncoderConfig {
23 profile: Profile::AacLc,
24 sample_rate: wav.sample_rate,
25 native_sample_rate: Some(wav.sample_rate),
26 channels: wav.channels,
27 channel_mask: wav.channel_mask.unwrap_or(0),
28 bitrate,
29 pcm_word_size: wav.bits_per_sample,
30 output_format: OutputFormat::Adts,
31 ..EncoderConfig::default()
32 })?;
33
34 let mut out = fs::File::create(Path::new(&output))?;
35 let frame_bytes = encoder.input_frame_bytes();
36 let mut offset = 0usize;
37 while offset + frame_bytes <= wav.pcm_data.len() {
38 let packet = encoder.encode_pcm_bytes(&wav.pcm_data[offset..offset + frame_bytes])?;
39 out.write_all(&packet.data)?;
40 offset += frame_bytes;
41 }
42
43 if offset < wav.pcm_data.len() {
44 let frame = encoder.encode_pcm_bytes_with_padding(&wav.pcm_data[offset..])?;
45 out.write_all(&frame.packet.data)?;
46 }
47
48 eprintln!(
49 "encoded {} Hz, {} channels, {}-bit PCM to ADTS AAC at {} bps",
50 wav.sample_rate, wav.channels, wav.bits_per_sample, bitrate
51 );
52
53 Ok(())
54}pub fn input_samples_per_channel(&self) -> usize
pub fn expected_frame_count(&self) -> usize
pub fn audio_specific_config(&self) -> &[u8] ⓘ
Sourcepub fn encode_pcm_bytes(&mut self, pcm: &[u8]) -> Result<EncodedPacket>
pub fn encode_pcm_bytes(&mut self, pcm: &[u8]) -> Result<EncodedPacket>
Examples found in repository?
examples/convert_wav_to_aac.rs (line 38)
8fn main() -> Result<(), Box<dyn std::error::Error>> {
9 let mut args = env::args().skip(1);
10 let input = args.next().ok_or_else(usage)?;
11 let output = args.next().ok_or_else(usage)?;
12 let bitrate = match args.next() {
13 Some(value) => value
14 .parse::<u32>()
15 .map_err(|_| "bitrate must be an integer number of bits per second")?,
16 None => 128_000,
17 };
18
19 let wav_bytes = fs::read(&input)?;
20 let wav = WavFile::parse(&wav_bytes)?;
21
22 let mut encoder = Encoder::new(EncoderConfig {
23 profile: Profile::AacLc,
24 sample_rate: wav.sample_rate,
25 native_sample_rate: Some(wav.sample_rate),
26 channels: wav.channels,
27 channel_mask: wav.channel_mask.unwrap_or(0),
28 bitrate,
29 pcm_word_size: wav.bits_per_sample,
30 output_format: OutputFormat::Adts,
31 ..EncoderConfig::default()
32 })?;
33
34 let mut out = fs::File::create(Path::new(&output))?;
35 let frame_bytes = encoder.input_frame_bytes();
36 let mut offset = 0usize;
37 while offset + frame_bytes <= wav.pcm_data.len() {
38 let packet = encoder.encode_pcm_bytes(&wav.pcm_data[offset..offset + frame_bytes])?;
39 out.write_all(&packet.data)?;
40 offset += frame_bytes;
41 }
42
43 if offset < wav.pcm_data.len() {
44 let frame = encoder.encode_pcm_bytes_with_padding(&wav.pcm_data[offset..])?;
45 out.write_all(&frame.packet.data)?;
46 }
47
48 eprintln!(
49 "encoded {} Hz, {} channels, {}-bit PCM to ADTS AAC at {} bps",
50 wav.sample_rate, wav.channels, wav.bits_per_sample, bitrate
51 );
52
53 Ok(())
54}Sourcepub fn encode_pcm_bytes_with_padding(
&mut self,
pcm: &[u8],
) -> Result<EncodedFrame>
pub fn encode_pcm_bytes_with_padding( &mut self, pcm: &[u8], ) -> Result<EncodedFrame>
Examples found in repository?
examples/convert_wav_to_aac.rs (line 44)
8fn main() -> Result<(), Box<dyn std::error::Error>> {
9 let mut args = env::args().skip(1);
10 let input = args.next().ok_or_else(usage)?;
11 let output = args.next().ok_or_else(usage)?;
12 let bitrate = match args.next() {
13 Some(value) => value
14 .parse::<u32>()
15 .map_err(|_| "bitrate must be an integer number of bits per second")?,
16 None => 128_000,
17 };
18
19 let wav_bytes = fs::read(&input)?;
20 let wav = WavFile::parse(&wav_bytes)?;
21
22 let mut encoder = Encoder::new(EncoderConfig {
23 profile: Profile::AacLc,
24 sample_rate: wav.sample_rate,
25 native_sample_rate: Some(wav.sample_rate),
26 channels: wav.channels,
27 channel_mask: wav.channel_mask.unwrap_or(0),
28 bitrate,
29 pcm_word_size: wav.bits_per_sample,
30 output_format: OutputFormat::Adts,
31 ..EncoderConfig::default()
32 })?;
33
34 let mut out = fs::File::create(Path::new(&output))?;
35 let frame_bytes = encoder.input_frame_bytes();
36 let mut offset = 0usize;
37 while offset + frame_bytes <= wav.pcm_data.len() {
38 let packet = encoder.encode_pcm_bytes(&wav.pcm_data[offset..offset + frame_bytes])?;
39 out.write_all(&packet.data)?;
40 offset += frame_bytes;
41 }
42
43 if offset < wav.pcm_data.len() {
44 let frame = encoder.encode_pcm_bytes_with_padding(&wav.pcm_data[offset..])?;
45 out.write_all(&frame.packet.data)?;
46 }
47
48 eprintln!(
49 "encoded {} Hz, {} channels, {}-bit PCM to ADTS AAC at {} bps",
50 wav.sample_rate, wav.channels, wav.bits_per_sample, bitrate
51 );
52
53 Ok(())
54}pub fn encode_i16_interleaved(&mut self, pcm: &[i16]) -> Result<EncodedPacket>
pub fn encode_i24_interleaved( &mut self, pcm: &[[u8; 3]], ) -> Result<EncodedPacket>
pub fn encode_i32_interleaved(&mut self, pcm: &[i32]) -> Result<EncodedPacket>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Encoder
impl RefUnwindSafe for Encoder
impl !Send for Encoder
impl !Sync for Encoder
impl Unpin for Encoder
impl UnsafeUnpin for Encoder
impl UnwindSafe for Encoder
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