aboutsummaryrefslogtreecommitdiff
path: root/client-native-gui
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-01-27 18:34:29 +0100
committermetamuffin <metamuffin@disroot.org>2024-01-27 18:34:29 +0100
commit0d8a3082fe32e9dd89deea9f051f6e53df591646 (patch)
tree47a2a82d4f38403d3a1945b666210183c8b26a69 /client-native-gui
parent19d21b7e7a96e679e6879529c3afd4a45bbd762b (diff)
downloadkeks-meet-0d8a3082fe32e9dd89deea9f051f6e53df591646.tar
keks-meet-0d8a3082fe32e9dd89deea9f051f6e53df591646.tar.bz2
keks-meet-0d8a3082fe32e9dd89deea9f051f6e53df591646.tar.zst
update client native
Diffstat (limited to 'client-native-gui')
-rw-r--r--client-native-gui/Cargo.toml14
-rw-r--r--client-native-gui/src/main.rs57
2 files changed, 50 insertions, 21 deletions
diff --git a/client-native-gui/Cargo.toml b/client-native-gui/Cargo.toml
index a93c0e6..346343c 100644
--- a/client-native-gui/Cargo.toml
+++ b/client-native-gui/Cargo.toml
@@ -6,15 +6,15 @@ edition = "2021"
[dependencies]
client-native-lib = { path = "../client-native-lib" }
-clap = { version = "4.4.7", features = ["derive"] }
+clap = { version = "4.4.18", features = ["derive"] }
async-std = "1.12.0"
-tokio = { version = "1.33.0", features = ["full"] }
-env_logger = "0.10.0"
+tokio = { version = "1.35.1", features = ["full"] }
+env_logger = "0.11.1"
log = "0.4"
-anyhow = "1.0.75"
-crossbeam-channel = "0.5.8"
+anyhow = "1.0.79"
+crossbeam-channel = "0.5.11"
-egui = "0.23.0"
-eframe = "0.23.0"
+egui = "0.25.0"
+eframe = "0.25.0"
libmpv = { git = "https://github.com/sirno/libmpv-rs.git", branch = "upgrade-libmpv" }
diff --git a/client-native-gui/src/main.rs b/client-native-gui/src/main.rs
index 17a300b..d8543d4 100644
--- a/client-native-gui/src/main.rs
+++ b/client-native-gui/src/main.rs
@@ -6,6 +6,7 @@
pub mod chat;
+use anyhow::bail;
use async_std::task::block_on;
use chat::Chat;
use clap::Parser;
@@ -15,7 +16,10 @@ use client_native_lib::{
protocol::{ProvideInfo, RelayMessage},
webrtc::{
rtcp::payload_feedbacks::picture_loss_indication::PictureLossIndication,
- rtp::{codecs::h264::H264Packet, packetizer::Depacketizer},
+ rtp::{
+ codecs::{h264::H264Packet, h265::H265Packet},
+ packetizer::Depacketizer,
+ },
track::track_remote::TrackRemote,
},
Config, EventHandler,
@@ -476,22 +480,47 @@ async fn track_to_raw(
track: Arc<TrackRemote>,
target: Arc<RwLock<VecDeque<u8>>>,
) -> anyhow::Result<()> {
- let mut cached_packet = H264Packet::default();
- loop {
- let (packet, _) = track.read_rtp().await?;
- if !packet.payload.is_empty() {
- let raw_payload = cached_packet.depacketize(&packet.payload)?;
- // let raw_payload = packet.payload;
- if raw_payload.len() != 0 {
- debug!("writing {} bytes", raw_payload.len());
+ match track.codec().capability.mime_type.as_str() {
+ "video/H265" => {
+ let mut cached_packet = H265Packet::default();
+ loop {
+ let (packet, _) = track.read_rtp().await?;
+ if !packet.payload.is_empty() {
+ let raw_payload = cached_packet.depacketize(&packet.payload)?;
+ // let raw_payload = packet.payload;
+ if raw_payload.len() != 0 {
+ debug!("writing {} bytes", raw_payload.len());
+
+ let mut target = target.write().unwrap();
+ if target.len() < 10_000_000 {
+ target.extend(raw_payload.into_iter());
+ } else {
+ warn!("buffer is getting too big, dropping some data");
+ }
+ }
+ }
+ }
+ }
+ "video/H264" => {
+ let mut cached_packet = H264Packet::default();
+ loop {
+ let (packet, _) = track.read_rtp().await?;
+ if !packet.payload.is_empty() {
+ let raw_payload = cached_packet.depacketize(&packet.payload)?;
+ // let raw_payload = packet.payload;
+ if raw_payload.len() != 0 {
+ debug!("writing {} bytes", raw_payload.len());
- let mut target = target.write().unwrap();
- if target.len() < 10_000_000 {
- target.extend(raw_payload.into_iter());
- } else {
- warn!("buffer is getting too big, dropping some data");
+ let mut target = target.write().unwrap();
+ if target.len() < 10_000_000 {
+ target.extend(raw_payload.into_iter());
+ } else {
+ warn!("buffer is getting too big, dropping some data");
+ }
+ }
}
}
}
+ _ => bail!("codec not supported"),
}
}