Switch to using "opus" and add support for windows
This commit is contained in:
6 files changed
+55
-47
No files matched your search
+3
-8
@@ -1,11 +1,9 @@
|
||||
use crate::udp_connection::OpusUdpConnection;
|
||||
use crate::util::{SAMPLE_RATE, SAMPLE_RATE_RAW, STEREO_FRAME_SIZE, TAP_PACKET_MAX_DATA_LEN};
|
||||
use anyhow::Error;
|
||||
use audiopus::coder::Decoder;
|
||||
use audiopus::packet::Packet;
|
||||
use audiopus::{Channels, MutSignals};
|
||||
use chrono::Utc;
|
||||
use log::{error, warn};
|
||||
use opus::{Channels, Decoder};
|
||||
use prost::Message;
|
||||
use std::io::{ErrorKind, Read};
|
||||
use std::net::SocketAddr;
|
||||
@@ -33,7 +31,6 @@ pub fn record(addr: SocketAddr, output_path: &Path, duration_ms: u64) -> Result<
|
||||
while std::time::Instant::now() < deadline {
|
||||
let mut packet = vec![0; TAP_PACKET_MAX_DATA_LEN];
|
||||
let mut output_buffer = vec![0.0; STEREO_FRAME_SIZE];
|
||||
let signals = MutSignals::try_from(&mut output_buffer)?;
|
||||
|
||||
let new_packet = match udp_connection.read(&mut packet) {
|
||||
Ok(data_len) => Some(&packet[0..data_len]),
|
||||
@@ -67,11 +64,9 @@ pub fn record(addr: SocketAddr, output_path: &Path, duration_ms: u64) -> Result<
|
||||
|
||||
(seq_count, _) = tap_message.seq.overflowing_add(1);
|
||||
|
||||
let packet = Packet::try_from(&tap_message.audio_data)?;
|
||||
|
||||
decoder.decode_float(Some(packet), signals, false)?
|
||||
decoder.decode_float(&packet, &mut output_buffer, false)?
|
||||
} else {
|
||||
decoder.decode_float(None, signals, false)?
|
||||
decoder.decode_float(&[], &mut output_buffer, false)?
|
||||
} * 2;
|
||||
|
||||
for samples in output_buffer[..data_size].chunks(2) {
|
||||
|
||||
+2
-3
@@ -1,13 +1,12 @@
|
||||
use std::io::{stdin, Read};
|
||||
use crate::tx_thread::TxThread;
|
||||
use crate::udp_connection::OpusUdpConnection;
|
||||
use crate::util::{SAMPLE_RATE, SAMPLE_RATE_RAW, STEREO_FRAME_SIZE, ThreadMessage};
|
||||
use anyhow::Error;
|
||||
use audiopus::coder::Encoder;
|
||||
use audiopus::{Application, Bitrate, Channels, Signal};
|
||||
use cpal::traits::{DeviceTrait, HostTrait, StreamTrait};
|
||||
use cpal::{BufferSize, FromSample, Host, Sample, SampleRate, StreamConfig};
|
||||
use log::{error, info};
|
||||
use opus::{Application, Bitrate, Channels, Encoder, Signal};
|
||||
use std::io::{Read, stdin};
|
||||
use std::net::SocketAddr;
|
||||
use std::sync::mpsc::{Sender, channel};
|
||||
use std::thread;
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
use crate::udp_connection::OpusUdpConnection;
|
||||
use crate::util::STEREO_FRAME_SIZE;
|
||||
use crate::util::{CIRC_BUFFER_SIZE, TAP_PACKET_MAX_DATA_LEN, ThreadMessage};
|
||||
use audiopus::coder::Encoder;
|
||||
use chrono::Utc;
|
||||
use circular_buffer::FixedCircularBuffer;
|
||||
use log::{error, info, warn};
|
||||
use opus::Encoder;
|
||||
use prost::Message;
|
||||
use std::io::Write;
|
||||
use std::sync::mpsc::{Receiver, RecvError};
|
||||
@@ -18,7 +18,7 @@ pub enum Error {
|
||||
#[error("IO error on offload: {0}")]
|
||||
IoFailure(#[from] std::io::Error),
|
||||
#[error("Encode error: {0}")]
|
||||
EncodeFailure(#[from] audiopus::Error),
|
||||
EncodeFailure(#[from] opus::Error),
|
||||
}
|
||||
|
||||
pub struct TxThread {
|
||||
|
||||
+3
-2
@@ -1,7 +1,8 @@
|
||||
use audiopus::SampleRate;
|
||||
use cpal::SampleRate;
|
||||
|
||||
pub const SAMPLE_RATE: SampleRate = SampleRate::Hz48000;
|
||||
pub const SAMPLE_RATE_RAW: usize = 48_000;
|
||||
|
||||
pub const SAMPLE_RATE: SampleRate = SAMPLE_RATE_RAW as u32;
|
||||
pub const AUDIO_FRAME_RATE: usize = 50;
|
||||
pub const MONO_FRAME_SIZE: usize = SAMPLE_RATE_RAW / AUDIO_FRAME_RATE;
|
||||
pub const STEREO_FRAME_SIZE: usize = 2 * MONO_FRAME_SIZE;
|
||||
|
||||
Reference in new issue
Block a user