From e040f7fbc760aa9998528c11d8319cda4c52afd5 Mon Sep 17 00:00:00 2001 From: krakotay <96355165+krakotay@users.noreply.github.com> Date: Sat, 29 Aug 2026 08:31:43 +0800 Subject: [PATCH 1/5] fix: playback of malformed MP4 files with invalid framerates - [x] I have disclosed use of any AI generated code in my commit messages. - If you are using an LLM, and do not fully understand the changes it is making to the code base, do not create a PR. - In our experience, AI generated code often results in overly complex code that lacks enough context for a proper fix or feature inclusion. This results in considerably longer code reviews. Due to this, AI authored or partially authored PRs may be closed without comment. - [x] I understand these changes in full and will be able to respond to review comments. - [x] My change is accurately described in the commit message. - [x] My contribution is tested and working as described. - [x] I have read the [Developer Certificate of Origin](https://developercertificate.org/) and certify my contribution under its conditions. Some malformed MP4 files previously wouldn't play at all because they reported a 0/1 framerate. Other files suffered from severe audio stuttering caused by repeated long GAP events emitted from malformed edit lists. This patch treats invalid framerates as unknown (allowing the existing fallback to be used) and suppresses suspicious long audio GAP events before they reach the audio sink. As a result, both kinds of videos now play correctly. --- .gitignore | 2 +- Cargo.lock | 2 +- src/main.rs | 27 +++++++++++++++++++- src/video.rs | 69 ++++++++++++++++++++++++++++++++++++++++++++++++---- 4 files changed, 92 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 624d569..dbad015 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,4 @@ /target/ /vendor/ /vendor.tar -.idea/ +.idea/ \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 17dd3db..7cb4cff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2808,7 +2808,7 @@ dependencies = [ [[package]] name = "iced_video_player" version = "0.6.0" -source = "git+https://github.com/wash2/iced_video_player.git?branch=iced-rebase#cb3635192f3dec37619855c904a168ca37a3dac3" +source = "git+https://github.com/wash2/iced_video_player.git?branch=iced-rebase#2e82b6b08d1751924b7b21b8c56683cdbc57bc33" dependencies = [ "glib", "gstreamer", diff --git a/src/main.rs b/src/main.rs index 145a7d9..1947cee 100644 --- a/src/main.rs +++ b/src/main.rs @@ -81,7 +81,32 @@ fn get_framerate(video: &Video) -> Option { let caps = pad.current_caps()?; let structure = caps.structure(0)?; let framerate = structure.get::("framerate").ok()?; - Some(framerate.numer() as f64 / framerate.denom() as f64) + positive_framerate(framerate) +} + +fn positive_framerate(framerate: gst::Fraction) -> Option { + if framerate.numer() <= 0 || framerate.denom() <= 0 { + return None; + } + + let fps = framerate.numer() as f64 / framerate.denom() as f64; + fps.is_finite().then_some(fps) +} + +#[cfg(test)] +mod tests { + use super::positive_framerate; + use iced_video_player::gst; + + #[test] + fn variable_framerate_uses_fallback() { + assert_eq!(positive_framerate(gst::Fraction::new(0, 1)), None); + } + + #[test] + fn fixed_framerate_is_preserved() { + assert_eq!(positive_framerate(gst::Fraction::new(30, 1)), Some(30.0)); + } } /// Runs application with these settings diff --git a/src/video.rs b/src/video.rs index 1953fe5..9df43f2 100644 --- a/src/video.rs +++ b/src/video.rs @@ -4,6 +4,40 @@ use iced_video_player::{Video, gst, gst_app, gst_pbutils}; use cosmic::action; use cosmic::app::Task; +const SUSPICIOUS_AUDIO_GAP_DURATION: gst::ClockTime = gst::ClockTime::SECOND; + +fn is_suspicious_audio_gap(duration: Option) -> bool { + duration.is_some_and(|duration| duration >= SUSPICIOUS_AUDIO_GAP_DURATION) +} + +fn suppress_suspicious_audio_gaps(audio_filter: &gst::Element) { + let Some(src_pad) = audio_filter.static_pad("src") else { + log::warn!("audio filter has no source pad; malformed audio gaps will not be suppressed"); + return; + }; + + let _ = src_pad.add_probe(gst::PadProbeType::EVENT_DOWNSTREAM, |_, info| { + let Some(event) = info.event() else { + return gst::PadProbeReturn::Ok; + }; + let gst::EventView::Gap(gap) = event.view() else { + return gst::PadProbeReturn::Ok; + }; + let (timestamp, duration) = gap.get(); + if !is_suspicious_audio_gap(duration) { + return gst::PadProbeReturn::Ok; + } + + // Some malformed MP4 edit lists cause streamsynchronizer to emit a + // long GAP before almost every audio buffer. The next buffer's PTS is + // still continuous, so forwarding those events makes audio sinks + // repeatedly wait or resynchronise and produces choppy playback. + log::debug!("suppressing audio GAP at {timestamp} with duration {duration:?}"); + drop(info.take_event()); + gst::PadProbeReturn::Handled + }); +} + #[derive(Debug, Default)] pub struct VideoSettings { pub mute: bool, @@ -27,11 +61,14 @@ pub fn new_video( .downcast::() .map_err(|_| iced_video_player::Error::Cast) .unwrap(); - if let Ok(scaletempo) = gst::ElementFactory::make("scaletempo").build() { - pipeline.set_property("audio-filter", &scaletempo); - } else { - log::warn!("scaletempo element not available; speed changes will affect pitch"); - } + let audio_filter = gst::ElementFactory::make("scaletempo") + .build() + .unwrap_or_else(|_| { + log::warn!("scaletempo element not available; speed changes will affect pitch"); + gst::ElementFactory::make("identity").build().unwrap() + }); + suppress_suspicious_audio_gaps(&audio_filter); + pipeline.set_property("audio-filter", &audio_filter); pipeline.connect("element-setup", false, |vals| { let Ok(elem) = vals[1].get::() else { return None; @@ -84,3 +121,25 @@ pub fn new_video( } } } + +#[cfg(test)] +mod tests { + use super::is_suspicious_audio_gap; + use iced_video_player::gst; + + #[test] + fn long_audio_gap_is_suspicious() { + assert!(is_suspicious_audio_gap(Some(gst::ClockTime::SECOND))); + assert!(is_suspicious_audio_gap(Some( + gst::ClockTime::from_seconds(3) + ))); + } + + #[test] + fn short_or_unknown_audio_gap_is_preserved() { + assert!(!is_suspicious_audio_gap(Some( + gst::ClockTime::from_mseconds(999) + ))); + assert!(!is_suspicious_audio_gap(None)); + } +} From f0365d411bd488ebd01b4a9e6909fb35899553f6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 2 Sep 2026 08:15:29 -0600 Subject: [PATCH 2/5] Epoch 1.8.0 version update Generated by cosmic-epoch scripts/version-update.sh --- Cargo.lock | 176 +++++++++++++++++++++++++++-------------------- Cargo.toml | 2 +- debian/changelog | 6 ++ 3 files changed, 110 insertions(+), 74 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7cb4cff..7acff01 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -729,9 +729,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a88b7ea17d208c4193f2c1e6de3c35fe71f98c96982d5ced308bdcc749ff6e1f" +checksum = "553c5d846a6ba5150c65e3b1b8ec073bcf1abc20f9b7220de384a4443ea4e20a" dependencies = [ "bytes", "cfg_aliases", @@ -760,7 +760,7 @@ dependencies = [ [[package]] name = "build_helpers" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "cfg_aliases", ] @@ -973,9 +973,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "combine" -version = "4.6.7" +version = "4.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +checksum = "cfc320937d09e6de266b31b9afb480f197d7a861be86be7cb2ea7e5d1bfffc5e" dependencies = [ "bytes", "memchr", @@ -1088,7 +1088,7 @@ dependencies = [ [[package]] name = "cosmic-config" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1109,7 +1109,7 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "quote", "syn 2.0.119", @@ -1131,7 +1131,7 @@ dependencies = [ [[package]] name = "cosmic-player" -version = "1.7.0" +version = "1.8.0" dependencies = [ "ashpd 0.12.3", "clap_lex", @@ -1205,7 +1205,7 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "almost", "configparser", @@ -1222,9 +1222,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" dependencies = [ "libc", ] @@ -1711,7 +1711,7 @@ dependencies = [ "bit_field", "half", "lebe", - "miniz_oxide", + "miniz_oxide 0.8.9", "num-complex", "pulp", "rayon-core", @@ -1757,12 +1757,13 @@ checksum = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890" [[package]] name = "flate2" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.9.1", + "zlib-rs", ] [[package]] @@ -2121,14 +2122,14 @@ dependencies = [ [[package]] name = "gio-sys" -version = "0.22.8" +version = "0.22.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "353fdc7da7cd16da916104b1e0e4e7de380ec9c8aaa20d4d742d66310ab4b0d5" +checksum = "6c28739f914c15b87a9856000bed9cbd5b3a8afbca5e982d9a299e1601422cb5" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps", + "system-deps 9.0.0", "windows-sys 0.61.2", ] @@ -2151,9 +2152,9 @@ checksum = "151665d9be52f9bb40fc7966565d39666f2d1e69233571b71b87791c7e0528b3" [[package]] name = "glib" -version = "0.22.8" +version = "0.22.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddbcf514bd1881fc1b960e4e52b4e82873f4da3bceddbd58d42827b508888100" +checksum = "18b9b8d350db41f690ec1b87109f202782748bbd8ab2f2ede17cb40d29e2838c" dependencies = [ "bitflags 2.13.1", "futures-channel", @@ -2172,24 +2173,24 @@ dependencies = [ [[package]] name = "glib-macros" -version = "0.22.6" +version = "0.22.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "506d23499707c7142898429757e8d9a3871d965239a2cb66dfa05052be6d6f19" +checksum = "c9597c68fa7bdf4154a3079642cd21c4dccac0b0bdd2897d82861523bf91e7b9" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.4", ] [[package]] name = "glib-sys" -version = "0.22.8" +version = "0.22.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "030967459f9f676851872c6304adea7825c6d462ec9b72554c733cf0c5952233" +checksum = "99b38907e67e40dec9b60f858bcada952598719cb512a13eb13d6cdcd16f8295" dependencies = [ "libc", - "system-deps", + "system-deps 9.0.0", ] [[package]] @@ -2215,13 +2216,13 @@ dependencies = [ [[package]] name = "gobject-sys" -version = "0.22.6" +version = "0.22.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a861859b887a79cf461359c192c97a57d8fb0229dd291232e57aa11f6fa72c" +checksum = "07595c9ba696bd9819cb6a8df39f08078f3dd679508fe052dd558492c2053834" dependencies = [ "glib-sys", "libc", - "system-deps", + "system-deps 9.0.0", ] [[package]] @@ -2314,7 +2315,7 @@ dependencies = [ "gstreamer-base-sys", "gstreamer-sys", "libc", - "system-deps", + "system-deps 7.0.8", ] [[package]] @@ -2343,7 +2344,7 @@ dependencies = [ "gstreamer-base-sys", "gstreamer-sys", "libc", - "system-deps", + "system-deps 7.0.8", ] [[package]] @@ -2370,7 +2371,7 @@ dependencies = [ "gobject-sys", "gstreamer-sys", "libc", - "system-deps", + "system-deps 7.0.8", ] [[package]] @@ -2400,7 +2401,7 @@ dependencies = [ "gstreamer-sys", "gstreamer-video-sys", "libc", - "system-deps", + "system-deps 7.0.8", ] [[package]] @@ -2413,7 +2414,7 @@ dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps", + "system-deps 7.0.8", ] [[package]] @@ -2438,7 +2439,7 @@ dependencies = [ "gobject-sys", "gstreamer-sys", "libc", - "system-deps", + "system-deps 7.0.8", ] [[package]] @@ -2468,7 +2469,7 @@ dependencies = [ "gstreamer-base-sys", "gstreamer-sys", "libc", - "system-deps", + "system-deps 7.0.8", ] [[package]] @@ -2540,9 +2541,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" +checksum = "e17592d60ebacc7d5e169f4663c5f84f9161cc90328abcfe8456f41e4dfcb284" [[package]] name = "hex" @@ -2652,7 +2653,7 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "build_helpers", "dnd", @@ -2674,7 +2675,7 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "accesskit", "accesskit_winit", @@ -2683,7 +2684,7 @@ dependencies = [ [[package]] name = "iced_core" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "bitflags 2.13.1", "build_helpers", @@ -2709,7 +2710,7 @@ dependencies = [ [[package]] name = "iced_debug" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "iced_core", "iced_futures", @@ -2719,7 +2720,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "futures", "iced_core", @@ -2733,7 +2734,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "bitflags 2.13.1", "bytemuck", @@ -2754,7 +2755,7 @@ dependencies = [ [[package]] name = "iced_program" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "iced_graphics", "iced_runtime", @@ -2763,7 +2764,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -2775,7 +2776,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "build_helpers", "bytes", @@ -2791,7 +2792,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "bytemuck", "cosmic-text", @@ -2826,7 +2827,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "as-raw-xcb-connection", "bitflags 2.13.1", @@ -2858,7 +2859,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.14.2" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "build_helpers", "cosmic-client-toolkit", @@ -2877,7 +2878,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "build_helpers", "cosmic-client-toolkit", @@ -3131,9 +3132,9 @@ checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285" [[package]] name = "imgref" -version = "1.12.2" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89194689a993ab15268672e99e7b0e19da2da3268ac682e8f02d29d4d1434cd7" +checksum = "6e44b0a4eaa4c82f441d50a963f2d5f05a787240aeee097597033e72accfd22f" [[package]] name = "indexmap" @@ -3467,7 +3468,7 @@ checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "libcosmic" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic.git#2a73fbc0edfe1525381bf999e241d73def79b222" +source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" dependencies = [ "apply", "ashpd 0.12.3", @@ -3540,9 +3541,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.20" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d0a00925a9f930d679b6789b721e3a7f9ed110f41b86d2497caa780c3a070a" +checksum = "8d8f1ea3f21fd3405dcaf6c9b5c1630af9afc422d9073ea39c5f6d6c772e08ed" dependencies = [ "bitflags 2.13.1", "libc", @@ -3637,9 +3638,9 @@ dependencies = [ [[package]] name = "lyon_algorithms" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8575c0d003ae459399623c4def180c63b77f343b1a7fee64f249b349e7699a31" +checksum = "cdfa8785f95e57914ddb35e3b59994aeba6f5e79e9cfd03da1c269f010f36009" dependencies = [ "lyon_path", "num-traits", @@ -3668,9 +3669,9 @@ dependencies = [ [[package]] name = "lyon_tessellation" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e43b7e44161571868f5c931d12583592c223c5583eef86b08aa02b7048a3552" +checksum = "dabea159dc6eea9171a541b458134b70ca95e3162d068132b2b3b9bc01aad06e" dependencies = [ "float_next_after", "lyon_path", @@ -3779,10 +3780,20 @@ dependencies = [ ] [[package]] -name = "mio" -version = "1.2.2" +name = "miniz_oxide" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b18443e9c262bfe8fa82f51666e2642c53393f7e5c27b3e1aeab922cff5b9d8" dependencies = [ "libc", "log", @@ -4533,7 +4544,7 @@ dependencies = [ "crc32fast", "fdeflate", "flate2", - "miniz_oxide", + "miniz_oxide 0.8.9", ] [[package]] @@ -4546,7 +4557,7 @@ dependencies = [ "crc32fast", "fdeflate", "flate2", - "miniz_oxide", + "miniz_oxide 0.8.9", ] [[package]] @@ -4627,9 +4638,9 @@ dependencies = [ [[package]] name = "proc-macro-error-attr3" -version = "3.1.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0084e6206a967a2dad822180626b2f6b07a3b379325e8f1ec0438e33a469ba7" +checksum = "9e564d14133360e1ae169ffde5da25881b5fa47261665b8e5713c212c27799da" dependencies = [ "proc-macro2", "quote", @@ -4637,9 +4648,9 @@ dependencies = [ [[package]] name = "proc-macro-error3" -version = "3.1.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cf066225f2373bc711684792b69bdeac0356019b007e721090c24d92d5d5a50" +checksum = "8f0d4471b3436c22106b21913b1dda531558918ae9b7ec55d58aa84b43552233" dependencies = [ "proc-macro-error-attr3", "proc-macro2", @@ -5416,9 +5427,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.15.2" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" +checksum = "b9be42f50aa861c555654aa3a37f52f4b1074bacf4e48fe0ef7fa584e80f1f0f" [[package]] name = "smithay-client-toolkit" @@ -5629,6 +5640,19 @@ dependencies = [ "version-compare", ] +[[package]] +name = "system-deps" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0dae2cbca1f0ff93795713cfe0a4c02f760e3c0b8ae2ab4ec4045808ff429f" +dependencies = [ + "cfg-expr", + "heck 0.5.0", + "pkg-config", + "toml 1.1.0+spec-1.1.0", + "version-compare", +] + [[package]] name = "taffy" version = "0.9.2" @@ -6188,9 +6212,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.25.0" +version = "1.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f053576934f05a761a402421fbbe3d425d9366f75f978806a037b3ca481abecc" +checksum = "b5772d71c9be8a8a6ac2117d949c5b224c1b72241bb611d9a3012edcf8af7812" dependencies = [ "js-sys", "serde_core", @@ -7728,6 +7752,12 @@ dependencies = [ "syn 3.0.4", ] +[[package]] +name = "zlib-rs" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b31d188d9d685a4f9c7b46d6e36631b07058d2cfe190267adce54dc230bf12" + [[package]] name = "zmij" version = "1.0.23" diff --git a/Cargo.toml b/Cargo.toml index 071b0ca..01a592d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmic-player" -version = "1.7.0" +version = "1.8.0" edition = "2024" rust-version = "1.93" diff --git a/debian/changelog b/debian/changelog index 13ec616..5dee624 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cosmic-player (1.8.0) noble; urgency=medium + + * Epoch 1.8.0 version update + + -- Jeremy Soller Wed, 02 Sep 2026 08:15:23 -0600 + cosmic-player (1.7.0) noble; urgency=medium * Epoch 1.7.0 version update From 78b806a34755c0c355e9ac4b343431915f919a30 Mon Sep 17 00:00:00 2001 From: Lionel DARNIS Date: Thu, 10 Sep 2026 18:11:31 +0200 Subject: [PATCH 3/5] chore: fige Cargo.lock --- Cargo.lock | 82 ++---------------------------------------------------- 1 file changed, 2 insertions(+), 80 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b32d567..60a6ee8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -754,10 +754,6 @@ dependencies = [ [[package]] name = "build_helpers" version = "0.14.0" -<<<<<<< HEAD -======= -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "cfg_aliases", ] @@ -1073,10 +1069,6 @@ dependencies = [ [[package]] name = "cosmic-config" version = "1.0.0" -<<<<<<< HEAD -======= -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1097,10 +1089,6 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "1.0.0" -<<<<<<< HEAD -======= -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "quote", "syn 2.0.119", @@ -1193,10 +1181,6 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "1.0.0" -<<<<<<< HEAD -======= -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "almost", "configparser", @@ -2577,10 +2561,6 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0" -<<<<<<< HEAD -======= -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "build_helpers", "dnd", @@ -2602,10 +2582,6 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -<<<<<<< HEAD -======= -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "accesskit", "accesskit_winit", @@ -2614,10 +2590,6 @@ dependencies = [ [[package]] name = "iced_core" version = "0.14.0" -<<<<<<< HEAD -======= -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "bitflags 2.13.1", "build_helpers", @@ -2643,10 +2615,6 @@ dependencies = [ [[package]] name = "iced_debug" version = "0.14.0" -<<<<<<< HEAD -======= -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "iced_core", "iced_futures", @@ -2656,10 +2624,6 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0" -<<<<<<< HEAD -======= -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "futures", "iced_core", @@ -2673,10 +2637,6 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0" -<<<<<<< HEAD -======= -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "bitflags 2.13.1", "bytemuck", @@ -2697,10 +2657,6 @@ dependencies = [ [[package]] name = "iced_program" version = "0.14.0" -<<<<<<< HEAD -======= -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "iced_graphics", "iced_runtime", @@ -2709,10 +2665,6 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0" -<<<<<<< HEAD -======= -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -2724,10 +2676,6 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0" -<<<<<<< HEAD -======= -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "build_helpers", "bytes", @@ -2743,10 +2691,6 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0" -<<<<<<< HEAD -======= -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "bytemuck", "cosmic-text", @@ -2763,10 +2707,6 @@ dependencies = [ [[package]] name = "iced_video_player" version = "0.6.0" -<<<<<<< HEAD -======= -source = "git+https://github.com/wash2/iced_video_player.git?branch=iced-rebase#2e82b6b08d1751924b7b21b8c56683cdbc57bc33" ->>>>>>> epoch-1.8.0 dependencies = [ "glib", "gstreamer", @@ -2784,10 +2724,6 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0" -<<<<<<< HEAD -======= -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "bitflags 2.13.1", "build_helpers", @@ -2816,10 +2752,6 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.14.2" -<<<<<<< HEAD -======= -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "build_helpers", "cosmic-client-toolkit", @@ -2838,10 +2770,6 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.14.0" -<<<<<<< HEAD -======= -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "build_helpers", "cosmic-client-toolkit", @@ -3448,14 +3376,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] -<<<<<<< HEAD name = "libcosmic-yoda" version = "0.1.0-yoda.2" -======= -name = "libcosmic" -version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic.git#9cc82abd9ca5601bb0341edd12a9acbc97e77801" ->>>>>>> epoch-1.8.0 dependencies = [ "apply", "ashpd 0.12.3", @@ -4249,9 +4171,9 @@ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "open" -version = "5.4.2" +version = "5.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade3be4664bc1ef537ce133015f04c176b737815c2ba9fd60edf212d6e90dd55" +checksum = "aa576c76302b7b808eecc68061e67336c47833ef9d22caa74dda10fa9675eebc" dependencies = [ "is-wsl", "libc", From 3d8af19ac48bb1139afbd4c2aa3e79862192d4e3 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sat, 12 Sep 2026 13:51:35 +0200 Subject: [PATCH 4/5] i18n: translation updates from weblate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Amadɣas Co-authored-by: Hosted Weblate Co-authored-by: Kurt Harren Catindig Co-authored-by: Quentin PAGÈS Co-authored-by: Satakun Utama Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-player/kab/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-player/oc/ Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-player/th/ Translation: Pop OS/COSMIC Player --- i18n/fil/cosmic_player.ftl | 0 i18n/kab/cosmic_player.ftl | 4 ++-- i18n/oc/cosmic_player.ftl | 5 +++-- i18n/th/cosmic_player.ftl | 4 ++++ 4 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 i18n/fil/cosmic_player.ftl diff --git a/i18n/fil/cosmic_player.ftl b/i18n/fil/cosmic_player.ftl new file mode 100644 index 0000000..e69de29 diff --git a/i18n/kab/cosmic_player.ftl b/i18n/kab/cosmic_player.ftl index 28347ef..5d3cdb7 100644 --- a/i18n/kab/cosmic_player.ftl +++ b/i18n/kab/cosmic_player.ftl @@ -2,13 +2,13 @@ open-file = Ldi afaylu open-folder = Ldi akaram repeat-disabled = Allus yensa repeat-track = Ales tazribt -quit = Tuffɣa +quit = Ffeɣ settings = Iɣewwaṛen appearance = Timeẓri theme = Asentel dark = Aɣmayan light = Aceɛlal -match-desktop = Amṣada d tnarit +match-desktop = Semṣada akked tnarit file = Afaylu close-file = Mdel afaylu album = Album: { $album } diff --git a/i18n/oc/cosmic_player.ftl b/i18n/oc/cosmic_player.ftl index 1c1f1cc..6fb8575 100644 --- a/i18n/oc/cosmic_player.ftl +++ b/i18n/oc/cosmic_player.ftl @@ -1,4 +1,4 @@ -settings = Paramètres +settings = Configuracion album = Album : { $album } audio = Àudio no-video-or-audio-file-open = Cap de fichièr vidèo o àudio pas dobèrt @@ -9,7 +9,7 @@ untitled = Sens títol appearance = Aparéncia theme = Tèma match-desktop = Assortir al burèu -dark = Fosc +dark = Escur light = Clar file = Fichièr open-media = Dorbir mèdia... @@ -31,3 +31,4 @@ ab-repeat-clear = Escafar la repeticion A-B xdg-name = Lector multimèdia COSMIC xdg-comment = Lector multimèdia pel burèu COSMIC xdg-keywords = Àudio;Musica;Vidèo;Film;Son; +quit = Quitar diff --git a/i18n/th/cosmic_player.ftl b/i18n/th/cosmic_player.ftl index e69de29..b9a15c3 100644 --- a/i18n/th/cosmic_player.ftl +++ b/i18n/th/cosmic_player.ftl @@ -0,0 +1,4 @@ +settings = การตั้งค่า +dark = มืด +light = สว่าง +appearance = ลักษณะ From 3ee781bfc2e523fa1970ae6c58900b2f644e4e45 Mon Sep 17 00:00:00 2001 From: Lionel DARNIS Date: Thu, 24 Sep 2026 21:03:54 +0200 Subject: [PATCH 5/5] chore: fige Cargo.lock (epoch-1.9.0, [patch] locaux) Co-Authored-By: Claude Opus 5.5 (1M context) --- Cargo.lock | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 60a6ee8..0600cb2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -21,7 +21,7 @@ checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" [[package]] name = "accesskit" version = "0.22.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" +source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" dependencies = [ "uuid", ] @@ -29,7 +29,7 @@ dependencies = [ [[package]] name = "accesskit_atspi_common" version = "0.15.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" +source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" dependencies = [ "accesskit", "accesskit_consumer", @@ -41,7 +41,7 @@ dependencies = [ [[package]] name = "accesskit_consumer" version = "0.32.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" +source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" dependencies = [ "accesskit", "hashbrown 0.16.1", @@ -50,7 +50,7 @@ dependencies = [ [[package]] name = "accesskit_macos" version = "0.23.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" +source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" dependencies = [ "accesskit", "accesskit_consumer", @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "accesskit_unix" version = "0.18.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" +source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" dependencies = [ "accesskit", "accesskit_atspi_common", @@ -78,7 +78,7 @@ dependencies = [ [[package]] name = "accesskit_windows" version = "0.30.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" +source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" dependencies = [ "accesskit", "accesskit_consumer", @@ -91,7 +91,7 @@ dependencies = [ [[package]] name = "accesskit_winit" version = "0.30.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" +source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" dependencies = [ "accesskit", "accesskit_macos", @@ -3410,6 +3410,7 @@ dependencies = [ "palette", "phf", "rfd", + "roxmltree", "rust-embed", "serde", "slotmap",