chore: update nightly toolchain and dependencies (#455)

pull/447/merge
zijiren 3 weeks ago committed by GitHub
parent dd6428ebca
commit 940d566ff0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -39,7 +39,7 @@ jobs:
- name: Install Rust toolchain - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master uses: dtolnay/rust-toolchain@master
with: with:
toolchain: nightly-2026-08-25 toolchain: nightly-2026-08-31
components: rustfmt components: rustfmt
- name: Check formatting - name: Check formatting
@ -55,7 +55,7 @@ jobs:
- name: Install Rust toolchain - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master uses: dtolnay/rust-toolchain@master
with: with:
toolchain: nightly-2026-08-25 toolchain: nightly-2026-08-31
components: clippy components: clippy
- name: Install build dependencies - name: Install build dependencies
@ -82,7 +82,7 @@ jobs:
- name: Install Rust toolchain - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master uses: dtolnay/rust-toolchain@master
with: with:
toolchain: nightly-2026-08-25 toolchain: nightly-2026-08-31
- name: Install build dependencies - name: Install build dependencies
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev
@ -106,7 +106,7 @@ jobs:
- name: Install Rust toolchain - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master uses: dtolnay/rust-toolchain@master
with: with:
toolchain: nightly-2026-08-25 toolchain: nightly-2026-08-31
- name: Install build dependencies - name: Install build dependencies
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev
@ -128,7 +128,7 @@ jobs:
- name: Install Rust toolchain - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master uses: dtolnay/rust-toolchain@master
with: with:
toolchain: nightly-2026-08-25 toolchain: nightly-2026-08-31
- name: Install build dependencies - name: Install build dependencies
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev
@ -159,7 +159,7 @@ jobs:
- name: Install Rust toolchain - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master uses: dtolnay/rust-toolchain@master
with: with:
toolchain: nightly-2026-08-25 toolchain: nightly-2026-08-31
- name: Install cargo-nextest - name: Install cargo-nextest
uses: taiki-e/install-action@nextest uses: taiki-e/install-action@nextest
@ -211,7 +211,7 @@ jobs:
- name: Install Rust toolchain - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master uses: dtolnay/rust-toolchain@master
with: with:
toolchain: nightly-2026-08-25 toolchain: nightly-2026-08-31
- name: Install cargo-nextest - name: Install cargo-nextest
uses: taiki-e/install-action@nextest uses: taiki-e/install-action@nextest
@ -240,7 +240,7 @@ jobs:
- name: Install Rust toolchain - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master uses: dtolnay/rust-toolchain@master
with: with:
toolchain: nightly-2026-08-25 toolchain: nightly-2026-08-31
- name: Install cargo-audit - name: Install cargo-audit
run: make install-cargo-audit run: make install-cargo-audit
@ -263,7 +263,7 @@ jobs:
- name: Install Rust toolchain - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master uses: dtolnay/rust-toolchain@master
with: with:
toolchain: nightly-2026-08-25 toolchain: nightly-2026-08-31
- name: Install cargo-deny - name: Install cargo-deny
run: make install-cargo-deny run: make install-cargo-deny
@ -297,7 +297,7 @@ jobs:
- name: Install Rust nightly - name: Install Rust nightly
uses: dtolnay/rust-toolchain@master uses: dtolnay/rust-toolchain@master
with: with:
toolchain: nightly-2026-08-25 toolchain: nightly-2026-08-31
- name: Install build dependencies - name: Install build dependencies
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev

@ -82,7 +82,7 @@ jobs:
- name: Install Rust toolchain - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master uses: dtolnay/rust-toolchain@master
with: with:
toolchain: nightly-2026-08-25 toolchain: nightly-2026-08-31
- name: Install Flutter - name: Install Flutter
uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2 # v2 uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2 # v2

@ -47,7 +47,7 @@ jobs:
- name: Install Rust toolchain - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master uses: dtolnay/rust-toolchain@master
with: with:
toolchain: nightly-2026-08-25 toolchain: nightly-2026-08-31
- name: Install build dependencies - name: Install build dependencies
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev

@ -41,7 +41,7 @@ jobs:
- name: Install Rust toolchain - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master uses: dtolnay/rust-toolchain@master
with: with:
toolchain: nightly-2026-08-25 toolchain: nightly-2026-08-31
- name: Install build dependencies - name: Install build dependencies
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev

@ -30,7 +30,7 @@ jobs:
- name: Install Rust toolchain - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master uses: dtolnay/rust-toolchain@master
with: with:
toolchain: nightly-2026-08-25 toolchain: nightly-2026-08-31
- name: Normalize release version - name: Normalize release version
id: version id: version

File diff suppressed because it is too large Load Diff

@ -128,7 +128,7 @@ tower-http = { version = "=0.7.0", features = [
"compression-gzip", "compression-gzip",
"compression-zstd", "compression-zstd",
] } ] }
hyper = { version = "=1.11.0", default-features = false, features = [ hyper = { version = "=1.11.1", default-features = false, features = [
"http1", "http1",
"http2", "http2",
"server", "server",
@ -174,8 +174,8 @@ jsonwebtoken = { version = "=11.0.0", features = ["rust_crypto"] }
oauth2 = { version = "=5.0.0", default-features = false } oauth2 = { version = "=5.0.0", default-features = false }
webauthn-rs = { version = "=0.6.1-dev", features = ["conditional-ui", "danger-allow-state-serialisation"] } webauthn-rs = { version = "=0.6.1-dev", features = ["conditional-ui", "danger-allow-state-serialisation"] }
webauthn-rs-proto = "=0.6.1-dev" webauthn-rs-proto = "=0.6.1-dev"
aes-gcm = "=0.11.0" aes-gcm = "=0.11.1"
aes = "=0.9.2" aes = "=0.9.3"
cbc = { version = "=0.2.1", features = ["alloc", "block-padding"] } cbc = { version = "=0.2.1", features = ["alloc", "block-padding"] }
ammonia = "=4.1.4" ammonia = "=4.1.4"
http-acl = "=0.13.0" http-acl = "=0.13.0"
@ -192,25 +192,25 @@ subtle = "=2.6.1"
# Serialization # Serialization
serde = { version = "=1.0.229", features = ["derive"] } serde = { version = "=1.0.229", features = ["derive"] }
serde_json = "=1.0.151" serde_json = "=1.0.151"
quick-xml = "=0.41.0" quick-xml = "=0.42.0"
serde_yaml = "=0.9.34" serde_yaml = "=0.9.34"
serde_ignored = "=0.1.14" serde_ignored = "=0.1.14"
toml = "=1.1.4" toml = "=1.1.4"
serde_urlencoded = "=0.7.1" serde_urlencoded = "=0.7.1"
serde_html_form = "=0.4.1" serde_html_form = "=0.4.1"
serde_path_to_error = "=0.1.20" serde_path_to_error = "=0.1.20"
indexmap = "=2.14.0" indexmap = "=2.14.1"
# bincode 3.0.0 is an intentionally unbuildable placeholder release. # bincode 3.0.0 is an intentionally unbuildable placeholder release.
bincode = { version = "=2.0.1", features = ["serde"] } bincode = { version = "=2.0.1", features = ["serde"] }
# Caching # Caching
moka = { version = "=0.12.16", features = ["future", "sync"] } moka = { version = "=0.12.16", features = ["future", "sync"] }
dashmap = "=7.0.0-rc2" dashmap = "=7.0.0-rc2"
lru = "=0.18.2" lru = "=0.18.3"
# IDs & Crypto # IDs & Crypto
nanoid = "=0.5.0" nanoid = "=0.5.0"
uuid = { version = "=1.24.1", features = ["v4", "v5", "serde"] } uuid = { version = "=1.26.0", features = ["v4", "v5", "serde"] }
sqids = "=0.4.2" sqids = "=0.4.2"
rand = "=0.10.2" rand = "=0.10.2"
rand_08 = { package = "rand", version = "=0.8.6" } rand_08 = { package = "rand", version = "=0.8.6" }
@ -224,26 +224,27 @@ iana-time-zone = "=0.1.65"
# Streaming (consolidated xiu crate) # Streaming (consolidated xiu crate)
synctv-xiu = { path = "synctv-xiu", default-features = false } synctv-xiu = { path = "synctv-xiu", default-features = false }
webrtc = "=0.17.2" webrtc = "=0.20.4"
rtc = "=0.20.4"
sdp = "=0.17.2" sdp = "=0.17.2"
opus = "=0.4.0" opus = "=0.4.0"
fdk-aac = "=0.8.0" fdk-aac = "=0.8.0"
retina = "=0.4.20" retina = "=0.4.20"
rust_h265 = "=0.1.0" rust_h265 = "=0.1.0"
rusty_aac = { version = "=0.5.0", default-features = false } rusty_aac = { version = "=0.5.0", default-features = false }
rusty_h264 = { version = "=0.10.0", default-features = false } rusty_h264 = { version = "=0.12.0", default-features = false }
ffmpeg-next = { version = "=9.0.0", default-features = false, features = ["build", "format"] } ffmpeg-next = { version = "=9.0.0", default-features = false, features = ["build", "format"] }
ffmpeg-sys-next = { version = "=9.0.0", features = ["build-portable"] } ffmpeg-sys-next = { version = "=9.0.0", features = ["build-portable"] }
# Object Storage # Object Storage
opendal = { version = "=0.58.1", default-features = false, features = [ opendal = { version = "=0.58.2", default-features = false, features = [
"executors-tokio", "executors-tokio",
"services-s3", "services-s3",
"layers-retry", "layers-retry",
"layers-timeout", "layers-timeout",
"layers-concurrent-limit", "layers-concurrent-limit",
] } ] }
opendal-http-transport-reqwest = { version = "=0.58.1", default-features = false, features = ["rustls-no-provider"] } opendal-http-transport-reqwest = { version = "=0.58.2", default-features = false, features = ["rustls-no-provider"] }
# Logging & Tracing # Logging & Tracing
tracing = "=0.1.44" tracing = "=0.1.44"
@ -271,11 +272,11 @@ url = "=2.5.8"
percent-encoding = "=2.3.2" percent-encoding = "=2.3.2"
urlencoding = "=2.1.3" urlencoding = "=2.1.3"
regex = "=1.13.1" regex = "=1.13.1"
oxc_allocator = "=0.144.0" oxc_allocator = "=0.147.0"
oxc_ast = "=0.144.0" oxc_ast = "=0.147.0"
oxc_parser = "=0.144.0" oxc_parser = "=0.147.0"
oxc_span = "=0.144.0" oxc_span = "=0.147.0"
boa_engine = { version = "=0.21.1", default-features = false } boa_engine = { version = "=0.22.0", default-features = false }
paste = "=1.0.15" paste = "=1.0.15"
byteorder = "=1.5.0" byteorder = "=1.5.0"
http = "=1.5.0" http = "=1.5.0"
@ -318,7 +319,7 @@ lettre = { version = "=0.11.23", default-features = false, features = [
handlebars = { version = "=6.4.4", features = ["no_logging"] } handlebars = { version = "=6.4.4", features = ["no_logging"] }
# Compression # Compression
flate2 = { version = "=1.1.9", default-features = false, features = ["zlib-rs"] } flate2 = { version = "=1.1.10", default-features = false, features = ["zlib-rs"] }
brotli = "=8.0.4" brotli = "=8.0.4"
lz4_flex = { version = "=0.14.0", default-features = false, features = [ lz4_flex = { version = "=0.14.0", default-features = false, features = [
"alloc", "alloc",

2154
docs/package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -14,16 +14,16 @@
"validate": "npm run diagrams && npm run validate:content && astro check && astro build" "validate": "npm run diagrams && npm run validate:content && astro check && astro build"
}, },
"dependencies": { "dependencies": {
"@astrojs/starlight": "0.41.7", "@astrojs/starlight": "0.41.10",
"astro": "7.2.0", "astro": "7.2.9",
"sharp": "0.35.3", "sharp": "0.35.4",
"tar-js": "0.3.0" "tar-js": "0.3.0"
}, },
"devDependencies": { "devDependencies": {
"@astrojs/check": "0.9.9", "@astrojs/check": "0.9.10",
"@mermaid-js/mermaid-cli": "11.14.0", "@mermaid-js/mermaid-cli": "11.16.0",
"starlight-codeblock-fullscreen": "1.0.0", "starlight-codeblock-fullscreen": "2.0.0",
"starlight-links-validator": "0.24.0", "starlight-links-validator": "0.25.3",
"typescript": "5.9.3" "typescript": "6.0.3"
} }
} }

@ -1,4 +1,4 @@
[toolchain] [toolchain]
channel = "nightly-2026-08-25" channel = "nightly-2026-08-31"
profile = "minimal" profile = "minimal"
components = ["clippy", "rustfmt"] components = ["clippy", "rustfmt"]

@ -70,9 +70,7 @@ pub fn parse_multistatus(
} }
Ok(Event::Text(text)) if in_response => { Ok(Event::Text(text)) if in_response => {
if let Some(field) = current_field.as_ref() { if let Some(field) = current_field.as_ref() {
let value = text let value = text.xml_content(quick_xml::XmlVersion::Implicit1_0);
.decode()
.map_err(|error| ProviderClientError::Parse(error.to_string()))?;
fields fields
.entry(field.clone()) .entry(field.clone())
.and_modify(|existing| existing.push_str(&value)) .and_modify(|existing| existing.push_str(&value))
@ -81,9 +79,7 @@ pub fn parse_multistatus(
} }
Ok(Event::GeneralRef(reference)) if in_response => { Ok(Event::GeneralRef(reference)) if in_response => {
if let Some(field) = current_field.as_ref() { if let Some(field) = current_field.as_ref() {
let decoded = reference let decoded = reference.xml_content(quick_xml::XmlVersion::Implicit1_0);
.decode()
.map_err(|error| ProviderClientError::Parse(error.to_string()))?;
let value = match decoded.as_ref() { let value = match decoded.as_ref() {
"amp" => '&', "amp" => '&',
"lt" => '<', "lt" => '<',
@ -187,9 +183,8 @@ fn boolean(fields: &HashMap<String, String>, key: &str) -> bool {
.is_some_and(|value| matches!(value.as_str(), "1" | "true")) .is_some_and(|value| matches!(value.as_str(), "1" | "true"))
} }
fn local_name(name: &[u8]) -> String { fn local_name(name: &str) -> String {
let name = name.rsplit(|byte| *byte == b':').next().unwrap_or(name); name.rsplit(':').next().unwrap_or(name).to_owned()
String::from_utf8_lossy(name).into_owned()
} }
fn dav_scope(user_id: &str, path: &str) -> String { fn dav_scope(user_id: &str, path: &str) -> String {

@ -50,12 +50,7 @@ where
} }
}, },
); );
let rewritten = rewrite_start( let rewritten = rewrite_start(&start, &inherited_base, &mut proxy_scope_for)?;
&start,
reader.decoder(),
&inherited_base,
&mut proxy_scope_for,
)?;
writer.write_event(Event::Start(rewritten))?; writer.write_event(Event::Start(rewritten))?;
let mut context = ElementContext { let mut context = ElementContext {
@ -89,12 +84,7 @@ where
let inherited_base = contexts let inherited_base = contexts
.last() .last()
.map_or_else(|| source.clone(), |context| context.descendant_base.clone()); .map_or_else(|| source.clone(), |context| context.descendant_base.clone());
let rewritten = rewrite_start( let rewritten = rewrite_start(&start, &inherited_base, &mut proxy_scope_for)?;
&start,
reader.decoder(),
&inherited_base,
&mut proxy_scope_for,
)?;
writer.write_event(Event::Empty(rewritten))?; writer.write_event(Event::Empty(rewritten))?;
} }
Event::Text(text) => { Event::Text(text) => {
@ -106,7 +96,7 @@ where
writer.write_event(Event::Text(text.into_owned()))?; writer.write_event(Event::Text(text.into_owned()))?;
continue; continue;
}; };
let decoded = text.decode()?; let decoded = text.xml_content(quick_xml::XmlVersion::Implicit1_0);
let unescaped = quick_xml::escape::unescape(&decoded)?; let unescaped = quick_xml::escape::unescape(&decoded)?;
url_text.push_str(&unescaped); url_text.push_str(&unescaped);
} }
@ -119,7 +109,7 @@ where
writer.write_event(Event::CData(cdata.into_owned()))?; writer.write_event(Event::CData(cdata.into_owned()))?;
continue; continue;
}; };
let decoded = cdata.decode()?; let decoded = cdata.xml_content(quick_xml::XmlVersion::Implicit1_0);
url_text.push_str(&decoded); url_text.push_str(&decoded);
} }
Event::GeneralRef(reference) => { Event::GeneralRef(reference) => {
@ -130,7 +120,7 @@ where
writer.write_event(Event::GeneralRef(reference.into_owned()))?; writer.write_event(Event::GeneralRef(reference.into_owned()))?;
continue; continue;
}; };
let reference = reference.decode()?; let reference = reference.xml_content(quick_xml::XmlVersion::Implicit1_0);
url_text.push_str(match reference.as_ref() { url_text.push_str(match reference.as_ref() {
"amp" => "&", "amp" => "&",
"lt" => "<", "lt" => "<",
@ -219,22 +209,20 @@ fn root_has_base_url(mpd: &str) -> Result<bool, anyhow::Error> {
fn rewrite_start<F>( fn rewrite_start<F>(
start: &BytesStart<'_>, start: &BytesStart<'_>,
decoder: quick_xml::encoding::Decoder,
inherited_base: &Url, inherited_base: &Url,
proxy_scope_for: &mut F, proxy_scope_for: &mut F,
) -> Result<BytesStart<'static>, anyhow::Error> ) -> Result<BytesStart<'static>, anyhow::Error>
where where
F: FnMut(&str, MpdResourceKind) -> String, F: FnMut(&str, MpdResourceKind) -> String,
{ {
let qualified_name = String::from_utf8(start.name().as_ref().to_vec())?; let qualified_name = start.name().as_ref().to_owned();
let element_name = local_name(start.name().as_ref()); let element_name = local_name(start.name().as_ref());
let mut rewritten = BytesStart::new(qualified_name); let mut rewritten = BytesStart::new(qualified_name);
for attribute in start.attributes() { for attribute in start.attributes() {
let attribute = attribute?; let attribute = attribute?;
let qualified_key = String::from_utf8(attribute.key.as_ref().to_vec())?; let qualified_key = attribute.key.as_ref().to_owned();
let attribute_name = local_name(attribute.key.as_ref()); let attribute_name = local_name(attribute.key.as_ref());
let value = let value = attribute.normalized_value(quick_xml::XmlVersion::Implicit1_0)?;
attribute.decoded_and_normalized_value(quick_xml::XmlVersion::Implicit1_0, decoder)?;
let kind = uri_attribute_kind(&element_name, &qualified_key, &attribute_name); let kind = uri_attribute_kind(&element_name, &qualified_key, &attribute_name);
let rewritten_value = match kind { let rewritten_value = match kind {
Some(MpdResourceKind::Media) if safe_relative_media_reference(&value) => value, Some(MpdResourceKind::Media) if safe_relative_media_reference(&value) => value,
@ -360,9 +348,8 @@ fn ensure_trailing_slash(mut value: String) -> String {
value value
} }
fn local_name(name: &[u8]) -> String { fn local_name(name: &str) -> String {
let name = name.rsplit(|byte| *byte == b':').next().unwrap_or(name); name.rsplit(':').next().unwrap_or(name).to_owned()
String::from_utf8_lossy(name).into_owned()
} }
#[cfg(test)] #[cfg(test)]

@ -36,6 +36,7 @@ futures.workspace = true
async-trait.workspace = true async-trait.workspace = true
retina.workspace = true retina.workspace = true
webrtc.workspace = true webrtc.workspace = true
rtc.workspace = true
sdp.workspace = true sdp.workspace = true
opus.workspace = true opus.workspace = true
fdk-aac.workspace = true fdk-aac.workspace = true

@ -1,11 +1,11 @@
use bytes::{BufMut as _, Bytes, BytesMut}; use bytes::{BufMut as _, Bytes, BytesMut};
use fdk_aac::enc::{AudioObjectType, BitRate, ChannelMode, Encoder as AacEncoder, EncoderParams}; use fdk_aac::enc::{AudioObjectType, BitRate, ChannelMode, Encoder as AacEncoder, EncoderParams};
use opus::{Channels, Decoder as OpusDecoder}; use opus::{Channels, Decoder as OpusDecoder};
use std::collections::VecDeque; use rtc::{
use webrtc::{ rtp::{codec::h264::H264Packet, packet::Packet, packetizer::Depacketizer},
rtp::{codecs::h264::H264Packet, packet::Packet, packetizer::Depacketizer}, rtp_transceiver::rtp_sender::RtpCodecKind,
rtp_transceiver::rtp_codec::RTPCodecType,
}; };
use std::collections::VecDeque;
use crate::{ use crate::{
flv::define::{self, aac_packet_type, avc_packet_type}, flv::define::{self, aac_packet_type, avc_packet_type},
@ -44,13 +44,13 @@ pub(crate) enum TrackFrameEncoder {
impl TrackFrameEncoder { impl TrackFrameEncoder {
pub(crate) fn new( pub(crate) fn new(
kind: RTPCodecType, kind: RtpCodecKind,
mime_type: &str, mime_type: &str,
channels: u16, channels: u16,
) -> Result<Self, MediaConversionError> { ) -> Result<Self, MediaConversionError> {
match (kind, mime_type.to_ascii_lowercase().as_str()) { match (kind, mime_type.to_ascii_lowercase().as_str()) {
(RTPCodecType::Video, "video/h264") => Ok(Self::Video(VideoFrameEncoder::default())), (RtpCodecKind::Video, "video/h264") => Ok(Self::Video(VideoFrameEncoder::default())),
(RTPCodecType::Audio, "audio/opus") => { (RtpCodecKind::Audio, "audio/opus") => {
AudioFrameEncoder::new(channels).map(Self::Audio) AudioFrameEncoder::new(channels).map(Self::Audio)
} }
_ => Err(MediaConversionError::UnsupportedCodec( _ => Err(MediaConversionError::UnsupportedCodec(
@ -427,7 +427,7 @@ mod tests {
let payload_len = opus_encoder.encode(&pcm, &mut payload)?; let payload_len = opus_encoder.encode(&pcm, &mut payload)?;
payload.truncate(payload_len); payload.truncate(payload_len);
let packet = Packet { let packet = Packet {
header: webrtc::rtp::header::Header { header: rtc::rtp::header::Header {
timestamp: index * 960, timestamp: index * 960,
..Default::default() ..Default::default()
}, },
@ -463,7 +463,7 @@ mod tests {
let payload_len = opus_encoder.encode(&pcm, &mut payload)?; let payload_len = opus_encoder.encode(&pcm, &mut payload)?;
payload.truncate(payload_len); payload.truncate(payload_len);
let packet = Packet { let packet = Packet {
header: webrtc::rtp::header::Header { header: rtc::rtp::header::Header {
timestamp, timestamp,
..Default::default() ..Default::default()
}, },

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save