diff --git a/Cargo.lock b/Cargo.lock index 50d23a83..dc4b1f91 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2288,7 +2288,6 @@ dependencies = [ "hrtf", "nnnoiseless", "num-traits", - "once_cell", "rayon", "smallvec", ] @@ -2316,7 +2315,6 @@ dependencies = [ "gstreamer-base", "gstreamer-check", "gstreamer-video", - "once_cell", "percent-encoding", "rand", "serde", @@ -2340,7 +2338,6 @@ dependencies = [ "gstreamer-base", "gstreamer-video", "image", - "once_cell", ] [[package]] @@ -2354,7 +2351,6 @@ dependencies = [ "gstreamer", "gstreamer-audio", "gstreamer-check", - "once_cell", ] [[package]] @@ -2374,7 +2370,6 @@ dependencies = [ "gstreamer-base", "gstreamer-check", "gstreamer-video", - "once_cell", "pango", "pangocairo", "pretty_assertions", @@ -2397,7 +2392,6 @@ dependencies = [ "gstreamer-audio", "gstreamer-base", "gstreamer-check", - "once_cell", ] [[package]] @@ -2410,7 +2404,6 @@ dependencies = [ "gstreamer-base", "gstreamer-video", "num_cpus", - "once_cell", ] [[package]] @@ -2427,7 +2420,6 @@ dependencies = [ "gstreamer-check", "gstreamer-video", "gtk4", - "once_cell", "parking_lot", ] @@ -2441,7 +2433,6 @@ dependencies = [ "gstreamer", "gstreamer-check", "gstreamer-video", - "once_cell", ] [[package]] @@ -2451,7 +2442,6 @@ dependencies = [ "gst-plugin-version-helper", "gstreamer", "gstreamer-base", - "once_cell", "url", ] @@ -2467,7 +2457,6 @@ dependencies = [ "gstreamer-base", "nom", "num-rational", - "once_cell", "smallvec", ] @@ -2488,7 +2477,6 @@ dependencies = [ "gstreamer-pbutils", "gstreamer-video", "m3u8-rs", - "once_cell", "quick-xml 0.31.0", "serde", ] @@ -2503,7 +2491,6 @@ dependencies = [ "gstreamer", "gstreamer-check", "gstreamer-video", - "once_cell", ] [[package]] @@ -2516,7 +2503,6 @@ dependencies = [ "gstreamer-app", "gstreamer-check", "gstreamer-video", - "once_cell", ] [[package]] @@ -2537,7 +2523,6 @@ dependencies = [ "gstreamer-gl-x11", "gstreamer-video", "gtk4", - "once_cell", "windows-sys 0.52.0", ] @@ -2556,7 +2541,6 @@ dependencies = [ "gstreamer-pbutils", "gstreamer-video", "m3u8-rs", - "once_cell", "sprintf", ] @@ -2572,7 +2556,6 @@ dependencies = [ "gstreamer-check", "gstreamer-video", "num-traits", - "once_cell", ] [[package]] @@ -2586,7 +2569,6 @@ dependencies = [ "gstreamer-app", "gstreamer-check", "gstreamer-utils", - "once_cell", "pretty_assertions", "serial_test", "tokio", @@ -2600,7 +2582,6 @@ dependencies = [ "gst-plugin-version-helper", "gstreamer", "gstreamer-check", - "once_cell", "serde", "serde_json", ] @@ -2616,7 +2597,6 @@ dependencies = [ "gstreamer-audio", "gstreamer-check", "lewton", - "once_cell", ] [[package]] @@ -2631,7 +2611,6 @@ dependencies = [ "gstreamer-check", "gtk4", "num-rational", - "once_cell", "parking_lot", ] @@ -2647,7 +2626,6 @@ dependencies = [ "gstreamer-base", "gstreamer-pbutils", "gstreamer-video", - "once_cell", "tempfile", "url", ] @@ -2660,7 +2638,6 @@ dependencies = [ "bitstream-io", "gst-plugin-version-helper", "gstreamer", - "once_cell", ] [[package]] @@ -2678,7 +2655,6 @@ dependencies = [ "gstreamer-base", "gstreamer-video", "libloading", - "once_cell", "quick-xml 0.31.0", "smallvec", "thiserror", @@ -2695,7 +2671,6 @@ dependencies = [ "gstreamer-base", "gstreamer-rtp", "gstreamer-video", - "once_cell", "pango", "pangocairo", "xmlparser", @@ -2711,7 +2686,6 @@ dependencies = [ "gst-plugin-version-helper", "gstreamer", "gstreamer-video", - "once_cell", ] [[package]] @@ -2722,7 +2696,6 @@ dependencies = [ "gstreamer", "gstreamer-check", "gstreamer-video", - "once_cell", "parking_lot", "png", ] @@ -2737,7 +2710,6 @@ dependencies = [ "gstreamer", "gstreamer-base", "gstreamer-check", - "once_cell", "quinn", "quinn-proto", "rcgen", @@ -2758,7 +2730,6 @@ dependencies = [ "gstreamer-base", "gstreamer-check", "gstreamer-rtp", - "once_cell", "rand", "raptorq", ] @@ -2772,7 +2743,6 @@ dependencies = [ "gstreamer", "gstreamer-check", "gstreamer-video", - "once_cell", "rav1e", ] @@ -2783,7 +2753,6 @@ dependencies = [ "gst-plugin-version-helper", "gstreamer", "gstreamer-check", - "once_cell", "regex", ] @@ -2800,7 +2769,6 @@ dependencies = [ "http-body-util", "hyper 1.5.0", "mime", - "once_cell", "pin-project-lite", "reqwest 0.12.8", "tokio", @@ -2829,7 +2797,6 @@ dependencies = [ "gstreamer-video", "hex", "log", - "once_cell", "rand", "rtcp-types", "rtp-types", @@ -2854,7 +2821,6 @@ dependencies = [ "gstreamer-net", "gstreamer-pbutils", "lru", - "once_cell", "rtsp-types", "sdp-types", "socket2", @@ -2875,7 +2841,6 @@ dependencies = [ "gstreamer-base", "gstreamer-check", "hex", - "once_cell", "pretty_assertions", "rand", "serde", @@ -2896,7 +2861,6 @@ dependencies = [ "gstreamer-audio", "gstreamer-base", "http 1.1.0", - "once_cell", "serde", "serde_json", "tokio", @@ -2914,7 +2878,6 @@ dependencies = [ "gstreamer-base", "librespot-core", "librespot-playback", - "once_cell", "tokio", "url", ] @@ -2925,7 +2888,6 @@ version = "0.14.0-alpha.1" dependencies = [ "gst-plugin-version-helper", "gstreamer", - "once_cell", ] [[package]] @@ -2936,7 +2898,6 @@ dependencies = [ "gstreamer", "gstreamer-check", "hyphenation", - "once_cell", "textwrap", ] @@ -2959,7 +2920,6 @@ dependencies = [ "gstreamer-check", "gstreamer-net", "gstreamer-rtp", - "once_cell", "pin-project-lite", "pkg-config", "polling", @@ -2984,7 +2944,6 @@ dependencies = [ "gstreamer-check", "gstreamer-video", "gtk4", - "once_cell", "parking_lot", ] @@ -2997,7 +2956,6 @@ dependencies = [ "etherparse", "gst-plugin-version-helper", "gstreamer", - "once_cell", "pcap-file", "regex", "signal-hook", @@ -3014,7 +2972,6 @@ dependencies = [ "gstreamer-base", "gstreamer-video", "num-traits", - "once_cell", ] [[package]] @@ -3027,7 +2984,6 @@ dependencies = [ "gstreamer", "gstreamer-app", "more-asserts", - "once_cell", "thiserror", "url", ] @@ -3056,7 +3012,6 @@ dependencies = [ "gstreamer-video", "image", "image_hasher", - "once_cell", "rgb", ] @@ -3069,7 +3024,6 @@ dependencies = [ "gstreamer-check", "gstreamer-video", "libwebp-sys2", - "once_cell", "pretty_assertions", ] @@ -3113,7 +3067,6 @@ dependencies = [ "itertools 0.12.1", "livekit-api", "livekit-protocol", - "once_cell", "parse_link_header", "rand", "regex", @@ -3174,7 +3127,6 @@ dependencies = [ "gstreamer", "gstreamer-sdp", "gstreamer-webrtc", - "once_cell", "parse_link_header", "reqwest 0.12.8", "tokio", diff --git a/Cargo.toml b/Cargo.toml index 91d7735d..d7b9ba8d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -129,7 +129,6 @@ edition = "2021" rust-version = "1.80" [workspace.dependencies] -once_cell = "1" glib = { git = "https://github.com/gtk-rs/gtk-rs-core", branch = "master" } gio = { git = "https://github.com/gtk-rs/gtk-rs-core", branch = "master" } cairo-rs = { git = "https://github.com/gtk-rs/gtk-rs-core", branch = "master", features=["use_glib"] } diff --git a/audio/audiofx/Cargo.toml b/audio/audiofx/Cargo.toml index 99e400dc..5d504215 100644 --- a/audio/audiofx/Cargo.toml +++ b/audio/audiofx/Cargo.toml @@ -21,7 +21,6 @@ nnnoiseless = { version = "0.5", default-features = false } smallvec = "1" atomic_refcell = "0.1" rayon = "1.5" -once_cell.workspace = true [lib] name = "gstrsaudiofx" diff --git a/audio/audiofx/src/audioecho/imp.rs b/audio/audiofx/src/audioecho/imp.rs index c369a4ab..cb7e8997 100644 --- a/audio/audiofx/src/audioecho/imp.rs +++ b/audio/audiofx/src/audioecho/imp.rs @@ -19,8 +19,8 @@ use byte_slice_cast::*; use num_traits::cast::{FromPrimitive, ToPrimitive}; use num_traits::float::Float; -use once_cell::sync::Lazy; -static _CAT: Lazy = Lazy::new(|| { +use std::sync::LazyLock; +static _CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rsaudioecho", gst::DebugColorFlags::empty(), @@ -94,7 +94,7 @@ impl ObjectSubclass for AudioEcho { impl ObjectImpl for AudioEcho { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecUInt64::builder("max-delay") .nick("Maximum Delay") @@ -183,7 +183,7 @@ impl GstObjectImpl for AudioEcho {} impl ElementImpl for AudioEcho { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Audio echo", "Filter/Effect/Audio", @@ -236,7 +236,7 @@ impl BaseTransformImpl for AudioEcho { impl AudioFilterImpl for AudioEcho { fn allowed_caps() -> &'static gst::Caps { - static CAPS: Lazy = Lazy::new(|| { + static CAPS: LazyLock = LazyLock::new(|| { gst_audio::AudioCapsBuilder::new_interleaved() .format_list([gst_audio::AUDIO_FORMAT_F32, gst_audio::AUDIO_FORMAT_F64]) .build() diff --git a/audio/audiofx/src/audioloudnorm/imp.rs b/audio/audiofx/src/audioloudnorm/imp.rs index 44d3b5e5..02d2b18a 100644 --- a/audio/audiofx/src/audioloudnorm/imp.rs +++ b/audio/audiofx/src/audioloudnorm/imp.rs @@ -21,11 +21,11 @@ use std::sync::Mutex; use byte_slice_cast::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use atomic_refcell::AtomicRefCell; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "audioloudnorm", gst::DebugColorFlags::empty(), @@ -1722,7 +1722,7 @@ impl ObjectSubclass for AudioLoudNorm { impl ObjectImpl for AudioLoudNorm { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecDouble::builder("loudness-target") .nick("Loudness Target") @@ -1819,7 +1819,7 @@ impl GstObjectImpl for AudioLoudNorm {} impl ElementImpl for AudioLoudNorm { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Audio loudness normalizer", "Filter/Effect/Audio", @@ -1832,7 +1832,7 @@ impl ElementImpl for AudioLoudNorm { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst_audio::AudioCapsBuilder::new_interleaved() .format(gst_audio::AUDIO_FORMAT_F64) .rate(192_000) diff --git a/audio/audiofx/src/audiornnoise/imp.rs b/audio/audiofx/src/audiornnoise/imp.rs index 592bef8e..a610db50 100644 --- a/audio/audiofx/src/audiornnoise/imp.rs +++ b/audio/audiofx/src/audiornnoise/imp.rs @@ -21,11 +21,11 @@ use nnnoiseless::DenoiseState; use byte_slice_cast::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use atomic_refcell::AtomicRefCell; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "audiornnoise", gst::DebugColorFlags::empty(), @@ -257,7 +257,7 @@ impl ObjectSubclass for AudioRNNoise { impl ObjectImpl for AudioRNNoise { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecFloat::builder("voice-activity-threshold") .nick("Voice activity threshold") .blurb("Threshold of the voice activity detector below which to mute the output") @@ -296,7 +296,7 @@ impl GstObjectImpl for AudioRNNoise {} impl ElementImpl for AudioRNNoise { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Audio denoise", "Filter/Effect/Audio", @@ -389,7 +389,7 @@ impl BaseTransformImpl for AudioRNNoise { impl AudioFilterImpl for AudioRNNoise { fn allowed_caps() -> &'static gst::Caps { - static CAPS: Lazy = Lazy::new(|| { + static CAPS: LazyLock = LazyLock::new(|| { gst_audio::AudioCapsBuilder::new_interleaved() .format(gst_audio::AUDIO_FORMAT_F32) .rate(48000) diff --git a/audio/audiofx/src/ebur128level/imp.rs b/audio/audiofx/src/ebur128level/imp.rs index 4daaca09..8dcab522 100644 --- a/audio/audiofx/src/ebur128level/imp.rs +++ b/audio/audiofx/src/ebur128level/imp.rs @@ -15,7 +15,7 @@ use gst_base::prelude::*; use std::sync::atomic; use std::sync::Mutex; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use byte_slice_cast::*; @@ -23,7 +23,7 @@ use smallvec::SmallVec; use atomic_refcell::AtomicRefCell; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ebur128level", gst::DebugColorFlags::empty(), @@ -122,7 +122,7 @@ impl ObjectSubclass for EbuR128Level { impl ObjectImpl for EbuR128Level { fn signals() -> &'static [glib::subclass::Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![glib::subclass::Signal::builder("reset") .action() .class_handler(|_token, args| { @@ -141,7 +141,7 @@ impl ObjectImpl for EbuR128Level { } fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecFlags::builder::("mode") .nick("Mode") @@ -223,7 +223,7 @@ impl GstObjectImpl for EbuR128Level {} impl ElementImpl for EbuR128Level { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "EBU R128 Loudness Level Measurement", "Filter/Analyzer/Audio", @@ -236,7 +236,7 @@ impl ElementImpl for EbuR128Level { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst_audio::AudioCapsBuilder::new() .format_list([ gst_audio::AUDIO_FORMAT_S16, @@ -486,7 +486,7 @@ impl BaseTransformImpl for EbuR128Level { impl AudioFilterImpl for EbuR128Level { fn allowed_caps() -> &'static gst::Caps { - static CAPS: Lazy = Lazy::new(|| { + static CAPS: LazyLock = LazyLock::new(|| { gst_audio::AudioCapsBuilder::new() .format_list([ gst_audio::AUDIO_FORMAT_S16, diff --git a/audio/audiofx/src/hrtfrender/imp.rs b/audio/audiofx/src/hrtfrender/imp.rs index d6aeaa8d..718816ec 100644 --- a/audio/audiofx/src/hrtfrender/imp.rs +++ b/audio/audiofx/src/hrtfrender/imp.rs @@ -23,8 +23,8 @@ use byte_slice_cast::*; use rayon::prelude::*; use rayon::{ThreadPool, ThreadPoolBuilder}; -use once_cell::sync::Lazy; -static CAT: Lazy = Lazy::new(|| { +use std::sync::LazyLock; +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "hrtfrender", gst::DebugColorFlags::empty(), @@ -32,7 +32,7 @@ static CAT: Lazy = Lazy::new(|| { ) }); -static THREAD_POOL: Lazy>> = Lazy::new(|| Mutex::new(Weak::new())); +static THREAD_POOL: LazyLock>> = LazyLock::new(|| Mutex::new(Weak::new())); const DEFAULT_INTERPOLATION_STEPS: u64 = 8; const DEFAULT_BLOCK_LENGTH: u64 = 512; @@ -400,7 +400,7 @@ impl HrtfRender { impl ObjectImpl for HrtfRender { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoxed::builder::("hrir-raw") .nick("Head Transform Impulse Response") @@ -533,7 +533,7 @@ impl GstObjectImpl for HrtfRender {} impl ElementImpl for HrtfRender { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Head-Related Transfer Function (HRTF) renderer", "Filter/Effect/Audio", @@ -546,7 +546,7 @@ impl ElementImpl for HrtfRender { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_caps = gst_audio::AudioCapsBuilder::new_interleaved() .channels(2) .format(gst_audio::AUDIO_FORMAT_F32) diff --git a/audio/audiofx/tests/hrtfrender.rs b/audio/audiofx/tests/hrtfrender.rs index 1c4ff997..0c3fbff7 100644 --- a/audio/audiofx/tests/hrtfrender.rs +++ b/audio/audiofx/tests/hrtfrender.rs @@ -9,9 +9,9 @@ use gst::glib; use gst::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; -static CONFIG: Lazy = Lazy::new(|| { +static CONFIG: LazyLock = LazyLock::new(|| { let buff = include_bytes!("test.hrir"); glib::Bytes::from_owned(buff) }); diff --git a/audio/claxon/Cargo.toml b/audio/claxon/Cargo.toml index 2c5e18d0..52b7351f 100644 --- a/audio/claxon/Cargo.toml +++ b/audio/claxon/Cargo.toml @@ -14,7 +14,6 @@ gst-audio.workspace = true claxon = { version = "0.4" } byte-slice-cast = "1.0" atomic_refcell = "0.1" -once_cell.workspace = true [dev-dependencies] gst-check.workspace = true diff --git a/audio/claxon/src/claxondec/imp.rs b/audio/claxon/src/claxondec/imp.rs index 830ce4c9..677d9586 100644 --- a/audio/claxon/src/claxondec/imp.rs +++ b/audio/claxon/src/claxondec/imp.rs @@ -19,9 +19,9 @@ use atomic_refcell::AtomicRefCell; use byte_slice_cast::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "claxondec", gst::DebugColorFlags::empty(), @@ -51,7 +51,7 @@ impl GstObjectImpl for ClaxonDec {} impl ElementImpl for ClaxonDec { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Claxon FLAC decoder", "Decoder/Audio", @@ -64,7 +64,7 @@ impl ElementImpl for ClaxonDec { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_caps = gst::Caps::builder("audio/x-flac") .field("framed", true) .build(); diff --git a/audio/csound/Cargo.toml b/audio/csound/Cargo.toml index 1b9e52f9..df0827f3 100644 --- a/audio/csound/Cargo.toml +++ b/audio/csound/Cargo.toml @@ -14,7 +14,6 @@ gst-base.workspace = true gst-audio.workspace = true csound = "0.1.8" byte-slice-cast = "1.0" -once_cell.workspace = true [dev-dependencies] gst-check.workspace = true diff --git a/audio/csound/src/filter/imp.rs b/audio/csound/src/filter/imp.rs index dfe0d9f7..a82bee15 100644 --- a/audio/csound/src/filter/imp.rs +++ b/audio/csound/src/filter/imp.rs @@ -22,9 +22,9 @@ use byte_slice_cast::*; use csound::{Csound, MessageType}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "csoundfilter", gst::DebugColorFlags::empty(), @@ -323,7 +323,7 @@ impl ObjectSubclass for CsoundFilter { impl ObjectImpl for CsoundFilter { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoolean::builder("loop") .nick("Loop") @@ -415,7 +415,7 @@ impl GstObjectImpl for CsoundFilter {} impl ElementImpl for CsoundFilter { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Audio filter", "Filter/Effect/Audio", @@ -428,7 +428,7 @@ impl ElementImpl for CsoundFilter { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst_audio::AudioCapsBuilder::new_interleaved() .format(gst_audio::AUDIO_FORMAT_F64) .build(); diff --git a/audio/lewton/Cargo.toml b/audio/lewton/Cargo.toml index 2c7a6d53..cc5ac2a7 100644 --- a/audio/lewton/Cargo.toml +++ b/audio/lewton/Cargo.toml @@ -14,7 +14,6 @@ gst-audio.workspace = true lewton = { version = "0.10", default-features = false } byte-slice-cast = "1.0" atomic_refcell = "0.1" -once_cell.workspace = true [dev-dependencies] gst-check.workspace = true diff --git a/audio/lewton/src/lewtondec/imp.rs b/audio/lewton/src/lewtondec/imp.rs index 7b61a271..3a102fe5 100644 --- a/audio/lewton/src/lewtondec/imp.rs +++ b/audio/lewton/src/lewtondec/imp.rs @@ -18,7 +18,7 @@ use atomic_refcell::AtomicRefCell; use byte_slice_cast::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; struct State { header_bufs: ( @@ -37,7 +37,7 @@ pub struct LewtonDec { state: AtomicRefCell>, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "lewtondec", gst::DebugColorFlags::empty(), @@ -58,7 +58,7 @@ impl GstObjectImpl for LewtonDec {} impl ElementImpl for LewtonDec { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "lewton Vorbis decoder", "Decoder/Audio", @@ -71,7 +71,7 @@ impl ElementImpl for LewtonDec { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_caps = gst::Caps::builder("audio/x-vorbis").build(); let sink_pad_template = gst::PadTemplate::new( "sink", diff --git a/audio/speechmatics/Cargo.toml b/audio/speechmatics/Cargo.toml index 676d0c9e..5e76bb56 100644 --- a/audio/speechmatics/Cargo.toml +++ b/audio/speechmatics/Cargo.toml @@ -15,7 +15,6 @@ gst-base.workspace = true gst-audio = { workspace = true, features = ["v1_16"] } tokio = { version = "1", features = [ "full" ] } async-tungstenite = { version = "0.28", features = ["tokio", "tokio-runtime", "tokio-native-tls"] } -once_cell.workspace = true serde = { version = "1", features = ["derive"] } serde_json = "1" atomic_refcell = "0.1" diff --git a/audio/speechmatics/src/transcriber/imp.rs b/audio/speechmatics/src/transcriber/imp.rs index 11cfcce6..32d0028e 100644 --- a/audio/speechmatics/src/transcriber/imp.rs +++ b/audio/speechmatics/src/transcriber/imp.rs @@ -27,7 +27,7 @@ use std::time::Duration; use atomic_refcell::AtomicRefCell; -use once_cell::sync::Lazy; +use std::sync::LazyLock; #[derive(serde::Deserialize, Debug)] #[allow(dead_code)] @@ -141,7 +141,7 @@ struct EndOfStream { last_seq_no: u64, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "speechmaticstranscribe", gst::DebugColorFlags::empty(), @@ -149,7 +149,7 @@ static CAT: Lazy = Lazy::new(|| { ) }); -static RUNTIME: Lazy = Lazy::new(|| { +static RUNTIME: LazyLock = LazyLock::new(|| { runtime::Builder::new_multi_thread() .enable_all() .worker_threads(1) @@ -1351,7 +1351,7 @@ impl GstObjectImpl for Transcriber {} impl ObjectImpl for Transcriber { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("language-code") .nick("Language Code") @@ -1545,7 +1545,7 @@ impl ObjectImpl for Transcriber { impl ElementImpl for Transcriber { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Transcriber", "Audio/Text/Filter", @@ -1558,7 +1558,7 @@ impl ElementImpl for Transcriber { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_caps = gst::Caps::builder("text/x-raw") .field("format", "utf8") .build(); @@ -1751,7 +1751,7 @@ const DEFAULT_OUTPUT_LANG_CODE: Option<&str> = None; impl ObjectImpl for TranscriberSrcPad { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecString::builder(OUTPUT_LANG_CODE_PROPERTY) .nick("Language Code") .blurb("The Language the Stream must be translated to") diff --git a/audio/spotify/Cargo.toml b/audio/spotify/Cargo.toml index 593115bf..334f6784 100644 --- a/audio/spotify/Cargo.toml +++ b/audio/spotify/Cargo.toml @@ -17,7 +17,6 @@ tokio = { version = "1", features = ["rt-multi-thread"] } futures = "0.3" anyhow = "1.0" url = "2.3" -once_cell.workspace = true [lib] name = "gstspotify" diff --git a/audio/spotify/src/spotifyaudiosrc/imp.rs b/audio/spotify/src/spotifyaudiosrc/imp.rs index 6f429682..7be6d6db 100644 --- a/audio/spotify/src/spotifyaudiosrc/imp.rs +++ b/audio/spotify/src/spotifyaudiosrc/imp.rs @@ -9,7 +9,7 @@ use std::sync::{mpsc, Arc, Mutex}; use futures::future::{AbortHandle, Abortable, Aborted}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use tokio::{runtime, task::JoinHandle}; use gst::glib; @@ -28,7 +28,7 @@ use librespot_playback::{ use super::Bitrate; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "spotifyaudiosrc", gst::DebugColorFlags::empty(), @@ -36,7 +36,7 @@ static CAT: Lazy = Lazy::new(|| { ) }); -static RUNTIME: Lazy = Lazy::new(|| { +static RUNTIME: LazyLock = LazyLock::new(|| { runtime::Builder::new_multi_thread() .enable_all() .worker_threads(1) @@ -112,7 +112,7 @@ impl ObjectSubclass for SpotifyAudioSrc { impl ObjectImpl for SpotifyAudioSrc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { let mut props = crate::common::Settings::properties(); let default = Settings::default(); @@ -154,7 +154,7 @@ impl GstObjectImpl for SpotifyAudioSrc {} impl ElementImpl for SpotifyAudioSrc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Spotify source", "Source/Audio", @@ -167,7 +167,7 @@ impl ElementImpl for SpotifyAudioSrc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder("application/ogg").build(); let src_pad_template = gst::PadTemplate::new( diff --git a/generic/file/Cargo.toml b/generic/file/Cargo.toml index cf24bb6c..ed2f2954 100644 --- a/generic/file/Cargo.toml +++ b/generic/file/Cargo.toml @@ -12,7 +12,6 @@ rust-version.workspace = true url = "2" gst.workspace = true gst-base.workspace = true -once_cell.workspace = true [lib] name = "gstrsfile" diff --git a/generic/file/src/filesink/imp.rs b/generic/file/src/filesink/imp.rs index f96a88e0..0a0c7eda 100644 --- a/generic/file/src/filesink/imp.rs +++ b/generic/file/src/filesink/imp.rs @@ -55,8 +55,8 @@ pub struct FileSink { state: Mutex, } -use once_cell::sync::Lazy; -static CAT: Lazy = Lazy::new(|| { +use std::sync::LazyLock; +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rsfilesink", gst::DebugColorFlags::empty(), @@ -119,7 +119,7 @@ impl ObjectImpl for FileSink { } fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecString::builder("location") .nick("File Location") .blurb("Location of the file to write") @@ -172,7 +172,7 @@ impl GstObjectImpl for FileSink {} impl ElementImpl for FileSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "File Sink", "Sink/File", @@ -185,7 +185,7 @@ impl ElementImpl for FileSink { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let sink_pad_template = gst::PadTemplate::new( "sink", diff --git a/generic/file/src/filesrc/imp.rs b/generic/file/src/filesrc/imp.rs index 46cc0059..9fb51a2a 100644 --- a/generic/file/src/filesrc/imp.rs +++ b/generic/file/src/filesrc/imp.rs @@ -54,8 +54,8 @@ pub struct FileSrc { state: Mutex, } -use once_cell::sync::Lazy; -static CAT: Lazy = Lazy::new(|| { +use std::sync::LazyLock; +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rsfilesrc", gst::DebugColorFlags::empty(), @@ -126,7 +126,7 @@ impl ObjectSubclass for FileSrc { impl ObjectImpl for FileSrc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecString::builder("location") .nick("File Location") .blurb("Location of the file to read from") @@ -186,7 +186,7 @@ impl GstObjectImpl for FileSrc {} impl ElementImpl for FileSrc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "File Source", "Source/File", @@ -199,7 +199,7 @@ impl ElementImpl for FileSrc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let src_pad_template = gst::PadTemplate::new( "src", diff --git a/generic/gopbuffer/Cargo.toml b/generic/gopbuffer/Cargo.toml index 89775b97..51537924 100644 --- a/generic/gopbuffer/Cargo.toml +++ b/generic/gopbuffer/Cargo.toml @@ -12,7 +12,6 @@ rust-version.workspace = true anyhow = "1" gst = { workspace = true, features = ["v1_18"] } gst-video = { workspace = true, features = ["v1_18"] } -once_cell.workspace = true [lib] name = "gstgopbuffer" diff --git a/generic/gopbuffer/src/gopbuffer/imp.rs b/generic/gopbuffer/src/gopbuffer/imp.rs index 6f76fdd0..e62d33a2 100644 --- a/generic/gopbuffer/src/gopbuffer/imp.rs +++ b/generic/gopbuffer/src/gopbuffer/imp.rs @@ -32,9 +32,9 @@ use gst::subclass::prelude::*; use std::collections::VecDeque; use std::sync::Mutex; -use once_cell::sync::Lazy; +use std::sync::LazyLock; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "gopbuffer", gst::DebugColorFlags::empty(), @@ -662,7 +662,7 @@ impl ObjectSubclass for GopBuffer { impl ObjectImpl for GopBuffer { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecUInt64::builder("minimum-duration") .nick("Minimum Duration") @@ -804,7 +804,7 @@ impl GstObjectImpl for GopBuffer {} impl ElementImpl for GopBuffer { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "GopBuffer", "Video", @@ -817,7 +817,7 @@ impl ElementImpl for GopBuffer { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { // This element is designed to implement multiple streams but it has not been // implemented. // diff --git a/generic/inter/Cargo.toml b/generic/inter/Cargo.toml index b8879162..1a9ce882 100644 --- a/generic/inter/Cargo.toml +++ b/generic/inter/Cargo.toml @@ -13,7 +13,6 @@ anyhow = "1" gst = { workspace = true, features = ["v1_18"] } gst-utils.workspace = true gst-app.workspace = true -once_cell = "1.0" [dev-dependencies] pretty_assertions = "1" diff --git a/generic/inter/src/sink/imp.rs b/generic/inter/src/sink/imp.rs index 2057e6c6..eb5c699a 100644 --- a/generic/inter/src/sink/imp.rs +++ b/generic/inter/src/sink/imp.rs @@ -8,7 +8,7 @@ use gst::subclass::prelude::*; use std::sync::Mutex; -use once_cell::sync::Lazy; +use std::sync::LazyLock; const DEFAULT_PRODUCER_NAME: &str = "default"; @@ -52,7 +52,7 @@ impl InterSink { } } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "intersink", gst::DebugColorFlags::empty(), @@ -82,7 +82,7 @@ impl ObjectSubclass for InterSink { impl ObjectImpl for InterSink { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecString::builder("producer-name") .nick("Producer Name") .blurb("Producer Name to use") @@ -158,7 +158,7 @@ impl GstObjectImpl for InterSink {} impl ElementImpl for InterSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Inter Sink", "Generic/Sink", @@ -171,7 +171,7 @@ impl ElementImpl for InterSink { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let sink_pad_template = gst::PadTemplate::new( diff --git a/generic/inter/src/src/imp.rs b/generic/inter/src/src/imp.rs index 5bf7ba06..fd099e8b 100644 --- a/generic/inter/src/src/imp.rs +++ b/generic/inter/src/src/imp.rs @@ -8,7 +8,7 @@ use gst::subclass::prelude::*; use std::sync::Mutex; -use once_cell::sync::Lazy; +use std::sync::LazyLock; const DEFAULT_PRODUCER_NAME: &str = "default"; @@ -54,7 +54,7 @@ impl InterSrc { } } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new("intersrc", gst::DebugColorFlags::empty(), Some("Inter Src")) }); @@ -81,7 +81,7 @@ impl ObjectSubclass for InterSrc { impl ObjectImpl for InterSrc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecString::builder("producer-name") .nick("Producer Name") .blurb("Producer Name to consume from") @@ -144,7 +144,7 @@ impl GstObjectImpl for InterSrc {} impl ElementImpl for InterSrc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Inter Src", "Generic/Src", @@ -157,7 +157,7 @@ impl ElementImpl for InterSrc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let src_pad_template = gst::PadTemplate::new( diff --git a/generic/inter/src/streamproducer/mod.rs b/generic/inter/src/streamproducer/mod.rs index fc83e1a0..90bfca1c 100644 --- a/generic/inter/src/streamproducer/mod.rs +++ b/generic/inter/src/streamproducer/mod.rs @@ -3,7 +3,7 @@ use std::collections::{HashMap, HashSet}; use std::sync::Mutex; use anyhow::{anyhow, Error}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; pub enum InterStreamProducer { Pending { @@ -15,8 +15,8 @@ pub enum InterStreamProducer { }, } -static PRODUCERS: Lazy>> = - Lazy::new(|| Mutex::new(HashMap::new())); +static PRODUCERS: LazyLock>> = + LazyLock::new(|| Mutex::new(HashMap::new())); fn toplevel(obj: &gst::Object) -> gst::Object { if let Some(parent) = obj.parent() { diff --git a/generic/originalbuffer/Cargo.toml b/generic/originalbuffer/Cargo.toml index d1a7b4e1..9057b1ff 100644 --- a/generic/originalbuffer/Cargo.toml +++ b/generic/originalbuffer/Cargo.toml @@ -13,7 +13,6 @@ glib.workspace = true gst.workspace = true gst-video.workspace = true atomic_refcell = "0.1" -once_cell.workspace = true [lib] name = "gstoriginalbuffer" diff --git a/generic/originalbuffer/src/originalbuffermeta.rs b/generic/originalbuffer/src/originalbuffermeta.rs index c94adcda..d6a6a3a9 100644 --- a/generic/originalbuffer/src/originalbuffermeta.rs +++ b/generic/originalbuffer/src/originalbuffermeta.rs @@ -71,9 +71,9 @@ impl fmt::Debug for OriginalBufferMeta { mod imp { use gst::glib::translate::*; - use once_cell::sync::Lazy; use std::mem; use std::ptr; + use std::sync::LazyLock; pub(super) struct OriginalBufferMetaParams { pub original: gst::Buffer, @@ -88,7 +88,7 @@ mod imp { } pub(super) fn original_buffer_meta_api_get_type() -> glib::Type { - static TYPE: Lazy = Lazy::new(|| unsafe { + static TYPE: LazyLock = LazyLock::new(|| unsafe { let t = from_glib(gst::ffi::gst_meta_api_type_register( b"GstOriginalBufferMetaAPI\0".as_ptr() as *const _, [ptr::null::()].as_ptr() as *mut *const _, @@ -157,7 +157,7 @@ mod imp { unsafe impl Send for MetaInfo {} unsafe impl Sync for MetaInfo {} - static META_INFO: Lazy = Lazy::new(|| unsafe { + static META_INFO: LazyLock = LazyLock::new(|| unsafe { MetaInfo( ptr::NonNull::new(gst::ffi::gst_meta_register( original_buffer_meta_api_get_type().into_glib(), diff --git a/generic/originalbuffer/src/originalbufferrestore/imp.rs b/generic/originalbuffer/src/originalbufferrestore/imp.rs index ff43cb68..c28a9858 100644 --- a/generic/originalbuffer/src/originalbufferrestore/imp.rs +++ b/generic/originalbuffer/src/originalbufferrestore/imp.rs @@ -43,9 +43,9 @@ pub struct OriginalBufferRestore { sink_pad: gst::Pad, } -use once_cell::sync::Lazy; +use std::sync::LazyLock; #[allow(dead_code)] -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "originalbufferrestore", gst::DebugColorFlags::empty(), @@ -119,7 +119,7 @@ impl GstObjectImpl for OriginalBufferRestore {} impl ElementImpl for OriginalBufferRestore { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Original Buffer Restore", "Generic", @@ -132,7 +132,7 @@ impl ElementImpl for OriginalBufferRestore { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let src_pad_template = gst::PadTemplate::new( "src", diff --git a/generic/originalbuffer/src/originalbuffersave/imp.rs b/generic/originalbuffer/src/originalbuffersave/imp.rs index d9518cd8..fab3a979 100644 --- a/generic/originalbuffer/src/originalbuffersave/imp.rs +++ b/generic/originalbuffer/src/originalbuffersave/imp.rs @@ -18,9 +18,9 @@ pub struct OriginalBufferSave { sink_pad: gst::Pad, } -use once_cell::sync::Lazy; +use std::sync::LazyLock; #[allow(dead_code)] -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "originalbuffersave", gst::DebugColorFlags::empty(), @@ -84,7 +84,7 @@ impl GstObjectImpl for OriginalBufferSave {} impl ElementImpl for OriginalBufferSave { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Original Buffer Save", "Generic", @@ -97,7 +97,7 @@ impl ElementImpl for OriginalBufferSave { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let src_pad_template = gst::PadTemplate::new( "src", diff --git a/generic/sodium/Cargo.toml b/generic/sodium/Cargo.toml index 98e3d023..483ea8ee 100644 --- a/generic/sodium/Cargo.toml +++ b/generic/sodium/Cargo.toml @@ -12,7 +12,6 @@ rust-version.workspace = true gst.workspace = true gst-base.workspace = true sodiumoxide = "0.2.1" -once_cell = "1.3.0" hex = "0.4" smallvec = "1.0" diff --git a/generic/sodium/src/decrypter/imp.rs b/generic/sodium/src/decrypter/imp.rs index 63e511dd..5704fbe9 100644 --- a/generic/sodium/src/decrypter/imp.rs +++ b/generic/sodium/src/decrypter/imp.rs @@ -29,8 +29,8 @@ use sodiumoxide::crypto::box_; use std::sync::Mutex; -use once_cell::sync::Lazy; -static CAT: Lazy = Lazy::new(|| { +use std::sync::LazyLock; +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "sodiumdecrypter", gst::DebugColorFlags::empty(), @@ -581,7 +581,7 @@ impl ObjectSubclass for Decrypter { impl ObjectImpl for Decrypter { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoxed::builder::("receiver-key") .nick("Receiver Key") @@ -638,7 +638,7 @@ impl GstObjectImpl for Decrypter {} impl ElementImpl for Decrypter { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Decrypter", "Generic", @@ -651,7 +651,7 @@ impl ElementImpl for Decrypter { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_pad_template = gst::PadTemplate::new( "src", gst::PadDirection::Src, diff --git a/generic/sodium/src/encrypter/imp.rs b/generic/sodium/src/encrypter/imp.rs index c922120b..bc79f8c2 100644 --- a/generic/sodium/src/encrypter/imp.rs +++ b/generic/sodium/src/encrypter/imp.rs @@ -32,8 +32,8 @@ type BufferVec = SmallVec<[gst::Buffer; 16]>; use std::sync::Mutex; -use once_cell::sync::Lazy; -static CAT: Lazy = Lazy::new(|| { +use std::sync::LazyLock; +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "sodiumencrypter", gst::DebugColorFlags::empty(), @@ -377,7 +377,7 @@ impl ObjectSubclass for Encrypter { impl ObjectImpl for Encrypter { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoxed::builder::("receiver-key") .nick("Receiver Key") @@ -450,7 +450,7 @@ impl GstObjectImpl for Encrypter {} impl ElementImpl for Encrypter { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Encrypter", "Generic", @@ -463,7 +463,7 @@ impl ElementImpl for Encrypter { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_caps = gst::Caps::builder("application/x-sodium-encrypted").build(); let src_pad_template = gst::PadTemplate::new( "src", diff --git a/generic/sodium/tests/decrypter.rs b/generic/sodium/tests/decrypter.rs index a8a154ca..ebec6965 100644 --- a/generic/sodium/tests/decrypter.rs +++ b/generic/sodium/tests/decrypter.rs @@ -31,15 +31,15 @@ use std::path::PathBuf; use pretty_assertions::assert_eq; -use once_cell::sync::Lazy; -static SENDER_PUBLIC: Lazy = Lazy::new(|| { +use std::sync::LazyLock; +static SENDER_PUBLIC: LazyLock = LazyLock::new(|| { let public = [ 66, 248, 199, 74, 216, 55, 228, 116, 52, 17, 147, 56, 65, 130, 134, 148, 157, 153, 235, 171, 179, 147, 120, 71, 100, 243, 133, 120, 160, 14, 111, 65, ]; glib::Bytes::from_owned(public) }); -static RECEIVER_PRIVATE: Lazy = Lazy::new(|| { +static RECEIVER_PRIVATE: LazyLock = LazyLock::new(|| { let secret = [ 54, 221, 217, 54, 94, 235, 167, 2, 187, 249, 71, 31, 59, 27, 19, 166, 78, 236, 102, 48, 29, 142, 41, 189, 22, 146, 218, 69, 147, 165, 240, 235, diff --git a/generic/sodium/tests/encrypter.rs b/generic/sodium/tests/encrypter.rs index e0c18faf..dc527444 100644 --- a/generic/sodium/tests/encrypter.rs +++ b/generic/sodium/tests/encrypter.rs @@ -25,11 +25,11 @@ use gst::glib; use gst::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use pretty_assertions::assert_eq; -static RECEIVER_PUBLIC: Lazy = Lazy::new(|| { +static RECEIVER_PUBLIC: LazyLock = LazyLock::new(|| { let public = [ 28, 95, 33, 124, 28, 103, 80, 78, 7, 28, 234, 40, 226, 179, 253, 166, 169, 64, 78, 5, 57, 92, 151, 179, 221, 89, 68, 70, 44, 225, 219, 19, @@ -37,14 +37,14 @@ static RECEIVER_PUBLIC: Lazy = Lazy::new(|| { glib::Bytes::from_owned(public) }); -static SENDER_PRIVATE: Lazy = Lazy::new(|| { +static SENDER_PRIVATE: LazyLock = LazyLock::new(|| { let secret = [ 154, 227, 90, 239, 206, 184, 202, 234, 176, 161, 14, 91, 218, 98, 142, 13, 145, 223, 210, 222, 224, 240, 98, 51, 142, 165, 255, 1, 159, 100, 242, 162, ]; glib::Bytes::from_owned(secret) }); -static NONCE: Lazy = Lazy::new(|| { +static NONCE: LazyLock = LazyLock::new(|| { let nonce = [ 144, 187, 179, 230, 15, 4, 241, 15, 37, 133, 22, 30, 50, 106, 70, 159, 243, 218, 173, 22, 18, 36, 4, 45, diff --git a/generic/threadshare/Cargo.toml b/generic/threadshare/Cargo.toml index f69cc47f..fda531ac 100644 --- a/generic/threadshare/Cargo.toml +++ b/generic/threadshare/Cargo.toml @@ -19,7 +19,6 @@ gst.workspace = true gst-audio.workspace = true gst-net.workspace = true gst-rtp.workspace = true -once_cell.workspace = true pin-project-lite = "0.2.0" polling = "3.1.0" rand = "0.8" diff --git a/generic/threadshare/examples/benchmark.rs b/generic/threadshare/examples/benchmark.rs index 4b380edb..963b666f 100644 --- a/generic/threadshare/examples/benchmark.rs +++ b/generic/threadshare/examples/benchmark.rs @@ -19,7 +19,7 @@ use gst::glib; use gst::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::env; use std::sync::atomic::{AtomicU64, Ordering}; @@ -29,7 +29,7 @@ use std::time::{Duration, Instant}; const THROUGHPUT_PERIOD: Duration = Duration::from_secs(20); -pub static CAT: Lazy = Lazy::new(|| { +pub static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-benchmark", gst::DebugColorFlags::empty(), diff --git a/generic/threadshare/examples/standalone/main.rs b/generic/threadshare/examples/standalone/main.rs index 1cc43e29..35de8483 100644 --- a/generic/threadshare/examples/standalone/main.rs +++ b/generic/threadshare/examples/standalone/main.rs @@ -1,5 +1,5 @@ use gst::glib; -use once_cell::sync::Lazy; +use std::sync::LazyLock; mod args; use args::*; @@ -13,7 +13,7 @@ mod src; use std::sync::atomic::{AtomicU32, Ordering}; use std::sync::Arc; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-standalone-main", gst::DebugColorFlags::empty(), diff --git a/generic/threadshare/examples/standalone/sink/async_mutex/imp.rs b/generic/threadshare/examples/standalone/sink/async_mutex/imp.rs index df27d33d..d65643d6 100644 --- a/generic/threadshare/examples/standalone/sink/async_mutex/imp.rs +++ b/generic/threadshare/examples/standalone/sink/async_mutex/imp.rs @@ -14,7 +14,7 @@ use gst::prelude::*; use gst::subclass::prelude::*; use gst::EventView; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use gstthreadshare::runtime::executor::block_on_or_add_sub_task; use gstthreadshare::runtime::{prelude::*, PadSink}; @@ -257,7 +257,7 @@ impl ObjectSubclass for AsyncMutexSink { impl ObjectImpl for AsyncMutexSink { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(Settings::properties); + static PROPERTIES: LazyLock> = LazyLock::new(Settings::properties); PROPERTIES.as_ref() } @@ -282,7 +282,7 @@ impl GstObjectImpl for AsyncMutexSink {} impl ElementImpl for AsyncMutexSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Thread-sharing standalone test async mutex sink", "Sink/Test", @@ -295,7 +295,7 @@ impl ElementImpl for AsyncMutexSink { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let sink_pad_template = gst::PadTemplate::new( diff --git a/generic/threadshare/examples/standalone/sink/mod.rs b/generic/threadshare/examples/standalone/sink/mod.rs index bf9b7aae..ecdc5acd 100644 --- a/generic/threadshare/examples/standalone/sink/mod.rs +++ b/generic/threadshare/examples/standalone/sink/mod.rs @@ -12,8 +12,8 @@ pub const ASYNC_MUTEX_ELEMENT_NAME: &str = "ts-standalone-async-mutex-sink"; pub const SYNC_MUTEX_ELEMENT_NAME: &str = "ts-standalone-sync-mutex-sink"; pub const TASK_ELEMENT_NAME: &str = "ts-standalone-task-sink"; -use once_cell::sync::Lazy; -static CAT: Lazy = Lazy::new(|| { +use std::sync::LazyLock; +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-standalone-sink", gst::DebugColorFlags::empty(), diff --git a/generic/threadshare/examples/standalone/sink/sync_mutex/imp.rs b/generic/threadshare/examples/standalone/sink/sync_mutex/imp.rs index 6b86471b..7c6edec6 100644 --- a/generic/threadshare/examples/standalone/sink/sync_mutex/imp.rs +++ b/generic/threadshare/examples/standalone/sink/sync_mutex/imp.rs @@ -14,7 +14,7 @@ use gst::prelude::*; use gst::subclass::prelude::*; use gst::EventView; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use gstthreadshare::runtime::{prelude::*, PadSink}; @@ -250,7 +250,7 @@ impl ObjectSubclass for DirectSink { impl ObjectImpl for DirectSink { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(Settings::properties); + static PROPERTIES: LazyLock> = LazyLock::new(Settings::properties); PROPERTIES.as_ref() } @@ -275,7 +275,7 @@ impl GstObjectImpl for DirectSink {} impl ElementImpl for DirectSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Thread-sharing standalone test direct sink", "Sink/Test", @@ -288,7 +288,7 @@ impl ElementImpl for DirectSink { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let sink_pad_template = gst::PadTemplate::new( diff --git a/generic/threadshare/examples/standalone/sink/task/imp.rs b/generic/threadshare/examples/standalone/sink/task/imp.rs index bb82cfde..425617b6 100644 --- a/generic/threadshare/examples/standalone/sink/task/imp.rs +++ b/generic/threadshare/examples/standalone/sink/task/imp.rs @@ -15,7 +15,7 @@ use gst::prelude::*; use gst::subclass::prelude::*; use gst::EventView; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use gstthreadshare::runtime::prelude::*; use gstthreadshare::runtime::{Context, PadSink, Task}; @@ -317,7 +317,7 @@ impl ObjectSubclass for TaskSink { impl ObjectImpl for TaskSink { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(Settings::properties); + static PROPERTIES: LazyLock> = LazyLock::new(Settings::properties); PROPERTIES.as_ref() } @@ -342,7 +342,7 @@ impl GstObjectImpl for TaskSink {} impl ElementImpl for TaskSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Thread-sharing standalone test task sink", "Sink/Test", @@ -355,7 +355,7 @@ impl ElementImpl for TaskSink { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let sink_pad_template = gst::PadTemplate::new( diff --git a/generic/threadshare/examples/standalone/src/imp.rs b/generic/threadshare/examples/standalone/src/imp.rs index e1bc56fa..35c5839d 100644 --- a/generic/threadshare/examples/standalone/src/imp.rs +++ b/generic/threadshare/examples/standalone/src/imp.rs @@ -13,7 +13,7 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; use std::time::Duration; @@ -21,7 +21,7 @@ use std::time::Duration; use gstthreadshare::runtime::prelude::*; use gstthreadshare::runtime::{task, timer, Context, PadSrc, Task}; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( super::ELEMENT_NAME, gst::DebugColorFlags::empty(), @@ -338,7 +338,7 @@ impl ObjectSubclass for TestSrc { impl ObjectImpl for TestSrc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("context") .nick("Context") @@ -429,7 +429,7 @@ impl GstObjectImpl for TestSrc {} impl ElementImpl for TestSrc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Thread-sharing standalone test source", "Source/Test", @@ -442,7 +442,7 @@ impl ElementImpl for TestSrc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let src_pad_template = gst::PadTemplate::new( "src", diff --git a/generic/threadshare/examples/udpsrc_benchmark_sender.rs b/generic/threadshare/examples/udpsrc_benchmark_sender.rs index 42130ba4..51351de0 100644 --- a/generic/threadshare/examples/udpsrc_benchmark_sender.rs +++ b/generic/threadshare/examples/udpsrc_benchmark_sender.rs @@ -20,13 +20,13 @@ use gst::glib; use gst::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::net; use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::{env, thread, time}; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-udpsrc-benchmark-sender", gst::DebugColorFlags::empty(), diff --git a/generic/threadshare/src/appsrc/imp.rs b/generic/threadshare/src/appsrc/imp.rs index f056b62a..8e8620db 100644 --- a/generic/threadshare/src/appsrc/imp.rs +++ b/generic/threadshare/src/appsrc/imp.rs @@ -26,7 +26,7 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; use std::time::Duration; @@ -61,7 +61,7 @@ impl Default for Settings { } } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-appsrc", gst::DebugColorFlags::empty(), @@ -444,7 +444,7 @@ impl ObjectSubclass for AppSrc { impl ObjectImpl for AppSrc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("context") .nick("Context") @@ -479,7 +479,7 @@ impl ObjectImpl for AppSrc { } fn signals() -> &'static [glib::subclass::Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![ glib::subclass::Signal::builder("push-buffer") .param_types([gst::Buffer::static_type()]) @@ -565,7 +565,7 @@ impl GstObjectImpl for AppSrc {} impl ElementImpl for AppSrc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Thread-sharing app source", "Source/Generic", @@ -578,7 +578,7 @@ impl ElementImpl for AppSrc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let src_pad_template = gst::PadTemplate::new( "src", diff --git a/generic/threadshare/src/audiotestsrc/imp.rs b/generic/threadshare/src/audiotestsrc/imp.rs index b633686e..d86dcce7 100644 --- a/generic/threadshare/src/audiotestsrc/imp.rs +++ b/generic/threadshare/src/audiotestsrc/imp.rs @@ -13,7 +13,7 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::mem::size_of; use std::sync::Mutex; @@ -24,7 +24,7 @@ use std::time::Instant; use crate::runtime::prelude::*; use crate::runtime::{self, task, timer, PadSrc, Task}; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-audiotestsrc", gst::DebugColorFlags::empty(), @@ -49,7 +49,7 @@ const RAMPUP_BUFFER_COUNT: u32 = 500; #[cfg(feature = "tuning")] const LOG_BUFFER_INTERVAL: u32 = 2000; -static DEFAULT_CAPS: Lazy = Lazy::new(|| { +static DEFAULT_CAPS: LazyLock = LazyLock::new(|| { gst_audio::AudioCapsBuilder::new_interleaved() .format(gst_audio::AUDIO_FORMAT_S16) .rate_range(8_000..i32::MAX) @@ -554,7 +554,7 @@ impl ObjectSubclass for AudioTestSrc { impl ObjectImpl for AudioTestSrc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("context") .nick("Context") @@ -663,7 +663,7 @@ impl GstObjectImpl for AudioTestSrc {} impl ElementImpl for AudioTestSrc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Thread-sharing audio test source", "Source/Test", @@ -676,7 +676,7 @@ impl ElementImpl for AudioTestSrc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_pad_template = gst::PadTemplate::new( "src", gst::PadDirection::Src, diff --git a/generic/threadshare/src/dataqueue.rs b/generic/threadshare/src/dataqueue.rs index 9ca33ba8..e2c0b991 100644 --- a/generic/threadshare/src/dataqueue.rs +++ b/generic/threadshare/src/dataqueue.rs @@ -21,13 +21,13 @@ use futures::future::{self, abortable, AbortHandle}; use gst::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::collections::VecDeque; use std::sync::Arc; use std::sync::Mutex as StdMutex; -static DATA_QUEUE_CAT: Lazy = Lazy::new(|| { +static DATA_QUEUE_CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-dataqueue", gst::DebugColorFlags::empty(), diff --git a/generic/threadshare/src/inputselector/imp.rs b/generic/threadshare/src/inputselector/imp.rs index bef6d7f5..2f9f9a7e 100644 --- a/generic/threadshare/src/inputselector/imp.rs +++ b/generic/threadshare/src/inputselector/imp.rs @@ -25,7 +25,7 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::collections::HashMap; use std::sync::{Arc, Mutex}; @@ -328,7 +328,7 @@ pub struct InputSelector { pads: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-input-selector", gst::DebugColorFlags::empty(), @@ -366,7 +366,7 @@ impl ObjectSubclass for InputSelector { impl ObjectImpl for InputSelector { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("context") .nick("Context") @@ -474,7 +474,7 @@ impl GstObjectImpl for InputSelector {} impl ElementImpl for InputSelector { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Thread-sharing input selector", "Generic", @@ -487,7 +487,7 @@ impl ElementImpl for InputSelector { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let sink_pad_template = gst::PadTemplate::new( "sink_%u", diff --git a/generic/threadshare/src/jitterbuffer/imp.rs b/generic/threadshare/src/jitterbuffer/imp.rs index 2e72f9b7..7e46e635 100644 --- a/generic/threadshare/src/jitterbuffer/imp.rs +++ b/generic/threadshare/src/jitterbuffer/imp.rs @@ -26,7 +26,7 @@ use gst::prelude::*; use gst::subclass::prelude::*; use gst_rtp::RTPBuffer; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::cmp::Ordering; use std::collections::{BTreeSet, VecDeque}; @@ -1243,7 +1243,7 @@ pub struct JitterBuffer { settings: StdMutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-jitterbuffer", gst::DebugColorFlags::empty(), @@ -1331,7 +1331,7 @@ impl ObjectSubclass for JitterBuffer { impl ObjectImpl for JitterBuffer { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("context") .nick("Context") @@ -1376,7 +1376,7 @@ impl ObjectImpl for JitterBuffer { } fn signals() -> &'static [glib::subclass::Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![ glib::subclass::Signal::builder("clear-pt-map") .action() @@ -1497,7 +1497,7 @@ impl GstObjectImpl for JitterBuffer {} impl ElementImpl for JitterBuffer { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Thread-sharing jitterbuffer", "Generic", @@ -1510,7 +1510,7 @@ impl ElementImpl for JitterBuffer { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let sink_pad_template = gst::PadTemplate::new( diff --git a/generic/threadshare/src/proxy/imp.rs b/generic/threadshare/src/proxy/imp.rs index bb68c7f4..0d781849 100644 --- a/generic/threadshare/src/proxy/imp.rs +++ b/generic/threadshare/src/proxy/imp.rs @@ -25,7 +25,7 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::collections::{HashMap, VecDeque}; use std::sync::{Arc, Weak}; @@ -37,12 +37,12 @@ use crate::runtime::{Context, PadSink, PadSinkWeak, PadSrc, PadSrcWeak, Task}; use crate::dataqueue::{DataQueue, DataQueueItem}; -static PROXY_CONTEXTS: Lazy>>>> = - Lazy::new(|| Mutex::new(HashMap::new())); -static PROXY_SRC_PADS: Lazy>> = - Lazy::new(|| Mutex::new(HashMap::new())); -static PROXY_SINK_PADS: Lazy>> = - Lazy::new(|| Mutex::new(HashMap::new())); +static PROXY_CONTEXTS: LazyLock>>>> = + LazyLock::new(|| Mutex::new(HashMap::new())); +static PROXY_SRC_PADS: LazyLock>> = + LazyLock::new(|| Mutex::new(HashMap::new())); +static PROXY_SINK_PADS: LazyLock>> = + LazyLock::new(|| Mutex::new(HashMap::new())); const DEFAULT_PROXY_CONTEXT: &str = ""; @@ -304,7 +304,7 @@ pub struct ProxySink { settings: Mutex, } -static SINK_CAT: Lazy = Lazy::new(|| { +static SINK_CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-proxysink", gst::DebugColorFlags::empty(), @@ -552,7 +552,7 @@ impl ObjectSubclass for ProxySink { impl ObjectImpl for ProxySink { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecString::builder("proxy-context") .nick("Proxy Context") .blurb("Context name of the proxy to share with") @@ -597,7 +597,7 @@ impl GstObjectImpl for ProxySink {} impl ElementImpl for ProxySink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Thread-sharing proxy sink", "Sink/Generic", @@ -610,7 +610,7 @@ impl ElementImpl for ProxySink { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let sink_pad_template = gst::PadTemplate::new( @@ -927,7 +927,7 @@ pub struct ProxySrc { settings: Mutex, } -static SRC_CAT: Lazy = Lazy::new(|| { +static SRC_CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-proxysrc", gst::DebugColorFlags::empty(), @@ -1057,7 +1057,7 @@ impl ObjectSubclass for ProxySrc { impl ObjectImpl for ProxySrc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("context") .nick("Context") @@ -1156,7 +1156,7 @@ impl GstObjectImpl for ProxySrc {} impl ElementImpl for ProxySrc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Thread-sharing proxy source", "Source/Generic", @@ -1169,7 +1169,7 @@ impl ElementImpl for ProxySrc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let src_pad_template = gst::PadTemplate::new( diff --git a/generic/threadshare/src/queue/imp.rs b/generic/threadshare/src/queue/imp.rs index 5a291e79..2409eb98 100644 --- a/generic/threadshare/src/queue/imp.rs +++ b/generic/threadshare/src/queue/imp.rs @@ -25,7 +25,7 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::collections::VecDeque; use std::sync::Mutex; @@ -396,7 +396,7 @@ pub struct Queue { settings: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-queue", gst::DebugColorFlags::empty(), @@ -648,7 +648,7 @@ impl ObjectSubclass for Queue { impl ObjectImpl for Queue { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("context") .nick("Context") @@ -735,7 +735,7 @@ impl GstObjectImpl for Queue {} impl ElementImpl for Queue { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Thread-sharing queue", "Generic", @@ -748,7 +748,7 @@ impl ElementImpl for Queue { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let sink_pad_template = gst::PadTemplate::new( diff --git a/generic/threadshare/src/runtime/executor/context.rs b/generic/threadshare/src/runtime/executor/context.rs index 06f74364..baec03f6 100644 --- a/generic/threadshare/src/runtime/executor/context.rs +++ b/generic/threadshare/src/runtime/executor/context.rs @@ -5,7 +5,7 @@ use futures::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::collections::HashMap; use std::io; @@ -27,8 +27,8 @@ use crate::runtime::RUNTIME_CAT; // // Also, we want to be able to `acquire` a `Context` outside of an `async` context. // These `Mutex`es must be `lock`ed for a short period. -static CONTEXTS: Lazy, ContextWeak>>> = - Lazy::new(|| Mutex::new(HashMap::new())); +static CONTEXTS: LazyLock, ContextWeak>>> = + LazyLock::new(|| Mutex::new(HashMap::new())); /// Blocks on `future` in one way or another if possible. /// diff --git a/generic/threadshare/src/runtime/mod.rs b/generic/threadshare/src/runtime/mod.rs index 4d77f78f..dba39b18 100644 --- a/generic/threadshare/src/runtime/mod.rs +++ b/generic/threadshare/src/runtime/mod.rs @@ -44,9 +44,9 @@ pub mod prelude { pub use super::task::TaskImpl; } -use once_cell::sync::Lazy; +use std::sync::LazyLock; -static RUNTIME_CAT: Lazy = Lazy::new(|| { +static RUNTIME_CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-runtime", gst::DebugColorFlags::empty(), diff --git a/generic/threadshare/src/socket.rs b/generic/threadshare/src/socket.rs index 4e8f4900..c79320ef 100644 --- a/generic/threadshare/src/socket.rs +++ b/generic/threadshare/src/socket.rs @@ -23,7 +23,7 @@ use futures::future::BoxFuture; use gst::glib; use gst::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::error; use std::fmt; @@ -41,7 +41,7 @@ use std::os::{ #[cfg(windows)] use std::os::windows::io::{AsRawSocket, FromRawSocket, IntoRawSocket, RawSocket}; -static SOCKET_CAT: Lazy = Lazy::new(|| { +static SOCKET_CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-socket", gst::DebugColorFlags::empty(), diff --git a/generic/threadshare/src/tcpclientsrc/imp.rs b/generic/threadshare/src/tcpclientsrc/imp.rs index 20d4be14..6ad494c0 100644 --- a/generic/threadshare/src/tcpclientsrc/imp.rs +++ b/generic/threadshare/src/tcpclientsrc/imp.rs @@ -25,7 +25,7 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::io; use std::net::{IpAddr, SocketAddr, TcpStream}; @@ -453,7 +453,7 @@ pub struct TcpClientSrc { state: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-tcpclientsrc", gst::DebugColorFlags::empty(), @@ -584,7 +584,7 @@ impl ObjectSubclass for TcpClientSrc { impl ObjectImpl for TcpClientSrc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("context") .nick("Context") @@ -680,7 +680,7 @@ impl GstObjectImpl for TcpClientSrc {} impl ElementImpl for TcpClientSrc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Thread-sharing TCP client source", "Source/Network", @@ -693,7 +693,7 @@ impl ElementImpl for TcpClientSrc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let src_pad_template = gst::PadTemplate::new( "src", diff --git a/generic/threadshare/src/udpsink/imp.rs b/generic/threadshare/src/udpsink/imp.rs index 6cf802ef..97fb498b 100644 --- a/generic/threadshare/src/udpsink/imp.rs +++ b/generic/threadshare/src/udpsink/imp.rs @@ -26,7 +26,7 @@ use gst::subclass::prelude::*; use gst::EventView; use gst::{element_error, error_msg}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::runtime::executor::block_on_or_add_sub_task; use crate::runtime::prelude::*; @@ -114,7 +114,7 @@ impl Default for Settings { } } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-udpsink", gst::DebugColorFlags::empty(), @@ -858,7 +858,7 @@ impl ObjectSubclass for UdpSink { impl ObjectImpl for UdpSink { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("context") .nick("Context") @@ -959,7 +959,7 @@ impl ObjectImpl for UdpSink { } fn signals() -> &'static [glib::subclass::Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![ glib::subclass::Signal::builder("add") .param_types([String::static_type(), i32::static_type()]) @@ -1181,7 +1181,7 @@ impl GstObjectImpl for UdpSink {} impl ElementImpl for UdpSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Thread-sharing UDP sink", "Sink/Network", @@ -1194,7 +1194,7 @@ impl ElementImpl for UdpSink { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let sink_pad_template = gst::PadTemplate::new( diff --git a/generic/threadshare/src/udpsrc/imp.rs b/generic/threadshare/src/udpsrc/imp.rs index a4b92908..bff3eb02 100644 --- a/generic/threadshare/src/udpsrc/imp.rs +++ b/generic/threadshare/src/udpsrc/imp.rs @@ -25,7 +25,7 @@ use gst::prelude::*; use gst::subclass::prelude::*; use gst_net::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::io; use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, UdpSocket}; @@ -677,7 +677,7 @@ pub struct UdpSrc { state: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-udpsrc", gst::DebugColorFlags::empty(), @@ -769,7 +769,7 @@ impl ObjectSubclass for UdpSrc { impl ObjectImpl for UdpSrc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { let mut properties = vec![ glib::ParamSpecString::builder("context") .nick("Context") @@ -942,7 +942,7 @@ impl GstObjectImpl for UdpSrc {} impl ElementImpl for UdpSrc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Thread-sharing UDP source", "Source/Network", @@ -955,7 +955,7 @@ impl ElementImpl for UdpSrc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let src_pad_template = gst::PadTemplate::new( "src", diff --git a/generic/threadshare/tests/jitterbuffer.rs b/generic/threadshare/tests/jitterbuffer.rs index 851d66a3..1280672e 100644 --- a/generic/threadshare/tests/jitterbuffer.rs +++ b/generic/threadshare/tests/jitterbuffer.rs @@ -21,9 +21,9 @@ use gst::prelude::*; use std::sync::mpsc; -use once_cell::sync::Lazy; +use std::sync::LazyLock; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-test", gst::DebugColorFlags::empty(), diff --git a/generic/threadshare/tests/pad.rs b/generic/threadshare/tests/pad.rs index f7bece0b..1c5767b5 100644 --- a/generic/threadshare/tests/pad.rs +++ b/generic/threadshare/tests/pad.rs @@ -29,7 +29,7 @@ use gst::prelude::*; use gst::subclass::prelude::*; use gst::EventView; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::Mutex; @@ -73,7 +73,7 @@ mod imp_src { context: String, } - pub static SRC_CAT: Lazy = Lazy::new(|| { + pub static SRC_CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-element-src-test", gst::DebugColorFlags::empty(), @@ -294,7 +294,7 @@ mod imp_src { impl ObjectImpl for ElementSrcTest { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecString::builder("context") .nick("Context") .blurb("Context name to share threads with") @@ -333,20 +333,21 @@ mod imp_src { impl ElementImpl for ElementSrcTest { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { - gst::subclass::ElementMetadata::new( - "Thread-sharing Test Src Element", - "Generic", - "Src Element for Pad Src Test", - "François Laignel ", - ) - }); + static ELEMENT_METADATA: LazyLock = + LazyLock::new(|| { + gst::subclass::ElementMetadata::new( + "Thread-sharing Test Src Element", + "Generic", + "Src Element for Pad Src Test", + "François Laignel ", + ) + }); Some(&*ELEMENT_METADATA) } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let src_pad_template = gst::PadTemplate::new( "src", @@ -558,7 +559,7 @@ mod imp_sink { } } - static SINK_CAT: Lazy = Lazy::new(|| { + static SINK_CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-element-sink-test", gst::DebugColorFlags::empty(), @@ -586,7 +587,7 @@ mod imp_sink { impl ObjectImpl for ElementSinkTest { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecBoxed::builder::("sender") .nick("Sender") .blurb("Channel sender to forward the incoming items to") @@ -624,20 +625,21 @@ mod imp_sink { impl ElementImpl for ElementSinkTest { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { - gst::subclass::ElementMetadata::new( - "Thread-sharing Test Sink Element", - "Generic", - "Sink Element for Pad Test", - "François Laignel ", - ) - }); + static ELEMENT_METADATA: LazyLock = + LazyLock::new(|| { + gst::subclass::ElementMetadata::new( + "Thread-sharing Test Sink Element", + "Generic", + "Sink Element for Pad Test", + "François Laignel ", + ) + }); Some(&*ELEMENT_METADATA) } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let sink_pad_template = gst::PadTemplate::new( "sink", diff --git a/generic/threadshare/tests/pipeline.rs b/generic/threadshare/tests/pipeline.rs index afb9c895..0c2b964c 100644 --- a/generic/threadshare/tests/pipeline.rs +++ b/generic/threadshare/tests/pipeline.rs @@ -20,11 +20,11 @@ use gst::glib; use gst::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::mpsc; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ts-test", gst::DebugColorFlags::empty(), diff --git a/mux/flavors/Cargo.toml b/mux/flavors/Cargo.toml index 3bea986f..baf40ada 100644 --- a/mux/flavors/Cargo.toml +++ b/mux/flavors/Cargo.toml @@ -17,7 +17,6 @@ nom = "7" flavors = { git = "https://github.com/rust-av/flavors" } byteorder = "1.0" smallvec = "1.0" -once_cell.workspace = true [lib] name = "gstrsflv" diff --git a/mux/flavors/src/flvdemux/imp.rs b/mux/flavors/src/flvdemux/imp.rs index 7d0d411a..ba18dd79 100644 --- a/mux/flavors/src/flvdemux/imp.rs +++ b/mux/flavors/src/flvdemux/imp.rs @@ -21,11 +21,11 @@ use gst::subclass::prelude::*; use num_rational::Rational32; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use smallvec::SmallVec; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rsflvdemux", gst::DebugColorFlags::empty(), @@ -191,7 +191,7 @@ impl GstObjectImpl for FlvDemux {} impl ElementImpl for FlvDemux { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "FLV Demuxer", "Codec/Demuxer", @@ -204,7 +204,7 @@ impl ElementImpl for FlvDemux { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let mut caps = gst::Caps::new_empty(); { let caps = caps.get_mut().unwrap(); diff --git a/mux/fmp4/Cargo.toml b/mux/fmp4/Cargo.toml index 7276cbba..d27305c6 100644 --- a/mux/fmp4/Cargo.toml +++ b/mux/fmp4/Cargo.toml @@ -15,7 +15,6 @@ gst-base = { workspace = true, features = ["v1_18"] } gst-audio = { workspace = true, features = ["v1_18"] } gst-video = { workspace = true, features = ["v1_18"] } gst-pbutils = { workspace = true, features = ["v1_20"] } -once_cell.workspace = true bitstream-io = "2.3" [lib] diff --git a/mux/fmp4/src/fmp4mux/imp.rs b/mux/fmp4/src/fmp4mux/imp.rs index 6b3496b4..a4fe4395 100644 --- a/mux/fmp4/src/fmp4mux/imp.rs +++ b/mux/fmp4/src/fmp4mux/imp.rs @@ -21,7 +21,7 @@ use std::sync::Mutex; use crate::fmp4mux::obu::read_seq_header_obu_bytes; use crate::fmp4mux::ImageOrientation; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use super::boxes; use super::Buffer; @@ -40,10 +40,12 @@ const UNIX_1601_OFFSET: u64 = 11_644_473_600; const NTP_UNIX_OFFSET: u64 = 2_208_988_800; /// Reference timestamp meta caps for NTP timestamps. -static NTP_CAPS: Lazy = Lazy::new(|| gst::Caps::builder("timestamp/x-ntp").build()); +static NTP_CAPS: LazyLock = + LazyLock::new(|| gst::Caps::builder("timestamp/x-ntp").build()); /// Reference timestamp meta caps for UNIX timestamps. -static UNIX_CAPS: Lazy = Lazy::new(|| gst::Caps::builder("timestamp/x-unix").build()); +static UNIX_CAPS: LazyLock = + LazyLock::new(|| gst::Caps::builder("timestamp/x-unix").build()); /// Returns the UTC time of the buffer in the UNIX epoch. fn get_utc_time_from_buffer(buffer: &gst::BufferRef) -> Option { @@ -92,7 +94,7 @@ fn utc_time_to_running_time( .and_then(|res| res.positive()) } -pub static CAT: Lazy = Lazy::new(|| { +pub static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "fmp4mux", gst::DebugColorFlags::empty(), @@ -3254,7 +3256,7 @@ static FMP4_SIGNAL_SPLIT_AT_RUNNING_TIME: &str = "split-at-running-time"; impl ObjectImpl for FMP4Mux { fn signals() -> &'static [glib::subclass::Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![ glib::subclass::Signal::builder(FMP4_SIGNAL_SEND_HEADERS) .action() @@ -3298,7 +3300,7 @@ impl ObjectImpl for FMP4Mux { } fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecUInt64::builder("fragment-duration") .nick("Fragment Duration") @@ -3971,7 +3973,7 @@ impl ObjectSubclass for ISOFMP4Mux { impl ObjectImpl for ISOFMP4Mux { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecBoolean::builder("offset-to-zero") .nick("Offset to Zero") .blurb("Offsets all streams so that the earliest stream starts at 0") @@ -4015,7 +4017,7 @@ impl GstObjectImpl for ISOFMP4Mux {} impl ElementImpl for ISOFMP4Mux { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "ISOFMP4Mux", "Codec/Muxer", @@ -4028,7 +4030,7 @@ impl ElementImpl for ISOFMP4Mux { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_pad_template = gst::PadTemplate::new( "src", gst::PadDirection::Src, @@ -4133,7 +4135,7 @@ impl GstObjectImpl for CMAFMux {} impl ElementImpl for CMAFMux { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "CMAFMux", "Codec/Muxer", @@ -4146,7 +4148,7 @@ impl ElementImpl for CMAFMux { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_pad_template = gst::PadTemplate::new( "src", gst::PadDirection::Src, @@ -4234,7 +4236,7 @@ impl GstObjectImpl for DASHMP4Mux {} impl ElementImpl for DASHMP4Mux { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "DASHMP4Mux", "Codec/Muxer", @@ -4247,7 +4249,7 @@ impl ElementImpl for DASHMP4Mux { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_pad_template = gst::PadTemplate::new( "src", gst::PadDirection::Src, @@ -4347,7 +4349,7 @@ impl GstObjectImpl for ONVIFFMP4Mux {} impl ElementImpl for ONVIFFMP4Mux { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "ONVIFFMP4Mux", "Codec/Muxer", @@ -4360,7 +4362,7 @@ impl ElementImpl for ONVIFFMP4Mux { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_pad_template = gst::PadTemplate::new( "src", gst::PadDirection::Src, @@ -4461,7 +4463,7 @@ impl ObjectSubclass for FMP4MuxPad { impl ObjectImpl for FMP4MuxPad { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecUInt::builder("trak-timescale") .nick("Track Timescale") .blurb("Timescale to use for the track (units per second, 0 is automatic)") diff --git a/mux/fmp4/src/fmp4mux/obu.rs b/mux/fmp4/src/fmp4mux/obu.rs index a9ecd420..94fded82 100644 --- a/mux/fmp4/src/fmp4mux/obu.rs +++ b/mux/fmp4/src/fmp4mux/obu.rs @@ -204,11 +204,11 @@ impl From for u8 { mod tests { use super::*; use bitstream_io::{BigEndian, BitReader}; - use once_cell::sync::Lazy; use std::io::Cursor; + use std::sync::LazyLock; #[allow(clippy::type_complexity)] - static OBUS: Lazy)>> = Lazy::new(|| { + static OBUS: LazyLock)>> = LazyLock::new(|| { vec![ ( SizedObu { diff --git a/mux/mp4/Cargo.toml b/mux/mp4/Cargo.toml index 85424eec..f15520d8 100644 --- a/mux/mp4/Cargo.toml +++ b/mux/mp4/Cargo.toml @@ -15,7 +15,6 @@ gst-base = { workspace = true, features = ["v1_18"] } gst-audio = { workspace = true, features = ["v1_18"] } gst-video = { workspace = true, features = ["v1_18"] } gst-pbutils = { workspace = true, features = ["v1_18"] } -once_cell.workspace = true bitstream-io = "2.3" [lib] diff --git a/mux/mp4/src/mp4mux/imp.rs b/mux/mp4/src/mp4mux/imp.rs index 83437969..7d82f25f 100644 --- a/mux/mp4/src/mp4mux/imp.rs +++ b/mux/mp4/src/mp4mux/imp.rs @@ -17,7 +17,7 @@ use std::collections::VecDeque; use std::sync::Mutex; use crate::mp4mux::obu::read_seq_header_obu_bytes; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use super::{boxes, ImageOrientation}; @@ -26,10 +26,12 @@ use super::{boxes, ImageOrientation}; const NTP_UNIX_OFFSET: u64 = 2_208_988_800; /// Reference timestamp meta caps for NTP timestamps. -static NTP_CAPS: Lazy = Lazy::new(|| gst::Caps::builder("timestamp/x-ntp").build()); +static NTP_CAPS: LazyLock = + LazyLock::new(|| gst::Caps::builder("timestamp/x-ntp").build()); /// Reference timestamp meta caps for UNIX timestamps. -static UNIX_CAPS: Lazy = Lazy::new(|| gst::Caps::builder("timestamp/x-unix").build()); +static UNIX_CAPS: LazyLock = + LazyLock::new(|| gst::Caps::builder("timestamp/x-unix").build()); /// Returns the UTC time of the buffer in the UNIX epoch. fn get_utc_time_from_buffer(buffer: &gst::BufferRef) -> Option { @@ -62,7 +64,7 @@ fn running_time_to_utc_time( .and_then(|res| res.positive()) } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "mp4mux", gst::DebugColorFlags::empty(), @@ -1268,7 +1270,7 @@ impl ObjectSubclass for MP4Mux { impl ObjectImpl for MP4Mux { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecUInt64::builder("interleave-bytes") .nick("Interleave Bytes") @@ -1805,7 +1807,7 @@ impl GstObjectImpl for ISOMP4Mux {} impl ElementImpl for ISOMP4Mux { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "ISOMP4Mux", "Codec/Muxer", @@ -1818,7 +1820,7 @@ impl ElementImpl for ISOMP4Mux { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_pad_template = gst::PadTemplate::new( "src", gst::PadDirection::Src, @@ -1923,7 +1925,7 @@ impl GstObjectImpl for ONVIFMP4Mux {} impl ElementImpl for ONVIFMP4Mux { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "ONVIFMP4Mux", "Codec/Muxer", @@ -1936,7 +1938,7 @@ impl ElementImpl for ONVIFMP4Mux { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_pad_template = gst::PadTemplate::new( "src", gst::PadDirection::Src, @@ -2030,7 +2032,7 @@ impl ObjectSubclass for MP4MuxPad { impl ObjectImpl for MP4MuxPad { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecUInt::builder("trak-timescale") .nick("Track Timescale") .blurb("Timescale to use for the track (units per second, 0 is automatic)") diff --git a/mux/mp4/src/mp4mux/obu.rs b/mux/mp4/src/mp4mux/obu.rs index a9ecd420..94fded82 100644 --- a/mux/mp4/src/mp4mux/obu.rs +++ b/mux/mp4/src/mp4mux/obu.rs @@ -204,11 +204,11 @@ impl From for u8 { mod tests { use super::*; use bitstream_io::{BigEndian, BitReader}; - use once_cell::sync::Lazy; use std::io::Cursor; + use std::sync::LazyLock; #[allow(clippy::type_complexity)] - static OBUS: Lazy)>> = Lazy::new(|| { + static OBUS: LazyLock)>> = LazyLock::new(|| { vec![ ( SizedObu { diff --git a/net/aws/Cargo.toml b/net/aws/Cargo.toml index 375ba99f..7f00b9df 100644 --- a/net/aws/Cargo.toml +++ b/net/aws/Cargo.toml @@ -31,7 +31,6 @@ serde = "1" serde_derive = "1" serde_json = "1" url = "2" -once_cell.workspace = true gst-video = { workspace = true, features = ["v1_22"] } sprintf = "0.2" diff --git a/net/aws/src/s3hlssink/imp.rs b/net/aws/src/s3hlssink/imp.rs index b09a12c3..e4f47d9d 100644 --- a/net/aws/src/s3hlssink/imp.rs +++ b/net/aws/src/s3hlssink/imp.rs @@ -8,10 +8,10 @@ // // SPDX-License-Identifier: MPL-2.0 -use once_cell::sync::Lazy; use std::io::Write; use std::str::FromStr; use std::sync::mpsc::{self, Receiver, SyncSender}; +use std::sync::LazyLock; use std::sync::Mutex; use std::thread::{spawn, JoinHandle}; use std::time::Duration; @@ -92,7 +92,7 @@ pub struct S3HlsSink { canceller: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "awss3hlssink", gst::DebugColorFlags::empty(), @@ -474,7 +474,7 @@ impl ObjectSubclass for S3HlsSink { impl ObjectImpl for S3HlsSink { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("access-key") .nick("Access Key") @@ -777,7 +777,7 @@ impl GstObjectImpl for S3HlsSink {} impl ElementImpl for S3HlsSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "S3 HLS Sink", "Generic", @@ -790,7 +790,7 @@ impl ElementImpl for S3HlsSink { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let audio_sink_pad_template = gst::PadTemplate::new( diff --git a/net/aws/src/s3sink/multipartsink.rs b/net/aws/src/s3sink/multipartsink.rs index 0ff7113d..9467d5f9 100644 --- a/net/aws/src/s3sink/multipartsink.rs +++ b/net/aws/src/s3sink/multipartsink.rs @@ -25,9 +25,9 @@ use aws_sdk_s3::{ Client, }; -use once_cell::sync::Lazy; use std::collections::HashMap; use std::convert::From; +use std::sync::LazyLock; use std::sync::Mutex; use std::time::Duration; @@ -188,7 +188,7 @@ pub struct S3Sink { abort_multipart_canceller: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "awss3sink", gst::DebugColorFlags::empty(), @@ -665,7 +665,7 @@ impl ObjectImpl for S3Sink { } fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("bucket") .nick("S3 Bucket") @@ -978,7 +978,7 @@ impl GstObjectImpl for S3Sink {} impl ElementImpl for S3Sink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { #[cfg(feature = "doc")] OnError::static_type().mark_as_plugin_api(gst::PluginAPIFlags::empty()); gst::subclass::ElementMetadata::new( @@ -993,7 +993,7 @@ impl ElementImpl for S3Sink { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let sink_pad_template = gst::PadTemplate::new( "sink", diff --git a/net/aws/src/s3sink/putobjectsink.rs b/net/aws/src/s3sink/putobjectsink.rs index 5cb16604..150e67a0 100644 --- a/net/aws/src/s3sink/putobjectsink.rs +++ b/net/aws/src/s3sink/putobjectsink.rs @@ -21,9 +21,9 @@ use aws_sdk_s3::{ }; use super::NextFile; -use once_cell::sync::Lazy; use std::collections::HashMap; use std::convert::From; +use std::sync::LazyLock; use std::sync::Mutex; use std::time::Duration; @@ -176,7 +176,7 @@ pub struct S3PutObjectSink { canceller: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "awss3putobjectsink", gst::DebugColorFlags::empty(), @@ -534,7 +534,7 @@ impl ObjectSubclass for S3PutObjectSink { impl ObjectImpl for S3PutObjectSink { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("bucket") .nick("S3 Bucket") @@ -819,7 +819,7 @@ impl GstObjectImpl for S3PutObjectSink {} impl ElementImpl for S3PutObjectSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { #[cfg(feature = "doc")] NextFile::static_type().mark_as_plugin_api(gst::PluginAPIFlags::empty()); gst::subclass::ElementMetadata::new( @@ -834,7 +834,7 @@ impl ElementImpl for S3PutObjectSink { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let sink_pad_template = gst::PadTemplate::new( "sink", diff --git a/net/aws/src/s3src/imp.rs b/net/aws/src/s3src/imp.rs index e34ceeac..31551862 100644 --- a/net/aws/src/s3src/imp.rs +++ b/net/aws/src/s3src/imp.rs @@ -7,7 +7,7 @@ // SPDX-License-Identifier: MPL-2.0 use bytes::Bytes; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; use std::time::Duration; @@ -78,7 +78,7 @@ pub struct S3Src { canceller: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "awss3src", gst::DebugColorFlags::empty(), @@ -265,7 +265,7 @@ impl ObjectSubclass for S3Src { impl ObjectImpl for S3Src { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("uri") .nick("URI") @@ -412,7 +412,7 @@ impl GstObjectImpl for S3Src {} impl ElementImpl for S3Src { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Amazon S3 source", "Source/Network", @@ -425,7 +425,7 @@ impl ElementImpl for S3Src { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let src_pad_template = gst::PadTemplate::new( "src", diff --git a/net/aws/src/s3utils.rs b/net/aws/src/s3utils.rs index a8993924..3a2b58b2 100644 --- a/net/aws/src/s3utils.rs +++ b/net/aws/src/s3utils.rs @@ -16,8 +16,8 @@ use aws_types::sdk_config::SdkConfig; use bytes::{buf::BufMut, Bytes, BytesMut}; use futures::{future, Future}; -use once_cell::sync::Lazy; use std::fmt; +use std::sync::LazyLock; use std::sync::Mutex; use std::time::Duration; use tokio::runtime; @@ -25,10 +25,10 @@ use tokio::runtime; pub const DEFAULT_S3_REGION: &str = "us-west-2"; #[allow(deprecated)] -pub static AWS_BEHAVIOR_VERSION: Lazy = - Lazy::new(aws_config::BehaviorVersion::v2023_11_09); +pub static AWS_BEHAVIOR_VERSION: LazyLock = + LazyLock::new(aws_config::BehaviorVersion::v2023_11_09); -static RUNTIME: Lazy = Lazy::new(|| { +static RUNTIME: LazyLock = LazyLock::new(|| { runtime::Builder::new_multi_thread() .enable_all() .worker_threads(2) diff --git a/net/aws/src/transcribe_parse/imp.rs b/net/aws/src/transcribe_parse/imp.rs index 42ea99e2..dec54c8f 100644 --- a/net/aws/src/transcribe_parse/imp.rs +++ b/net/aws/src/transcribe_parse/imp.rs @@ -11,11 +11,11 @@ use gst::subclass::prelude::*; use gst::{element_imp_error, error_msg}; use serde_derive::Deserialize; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "awstranscribeparse", gst::DebugColorFlags::empty(), @@ -294,7 +294,7 @@ impl GstObjectImpl for TranscribeParse {} impl ElementImpl for TranscribeParse { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "AWS transcript parser", "Text/Subtitle", @@ -307,7 +307,7 @@ impl ElementImpl for TranscribeParse { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder("application/x-json").build(); let sink_pad_template = gst::PadTemplate::new( "sink", diff --git a/net/aws/src/transcriber/imp.rs b/net/aws/src/transcriber/imp.rs index d90fd6f3..897a5428 100644 --- a/net/aws/src/transcriber/imp.rs +++ b/net/aws/src/transcriber/imp.rs @@ -32,7 +32,7 @@ use tokio::{runtime, sync::broadcast, task}; use std::collections::{BTreeSet, VecDeque}; use std::sync::{Arc, Mutex}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use super::transcribe::{TranscriberSettings, TranscriberStream, TranscriptEvent, TranscriptItem}; use super::translate::{TranslateLoop, TranslatedItem}; @@ -41,7 +41,7 @@ use super::{ TranslationTokenizationMethod, CAT, }; -static RUNTIME: Lazy = Lazy::new(|| { +static RUNTIME: LazyLock = LazyLock::new(|| { runtime::Builder::new_multi_thread() .enable_all() .build() @@ -49,8 +49,8 @@ static RUNTIME: Lazy = Lazy::new(|| { }); #[allow(deprecated)] -static AWS_BEHAVIOR_VERSION: Lazy = - Lazy::new(aws_config::BehaviorVersion::v2023_11_09); +static AWS_BEHAVIOR_VERSION: LazyLock = + LazyLock::new(aws_config::BehaviorVersion::v2023_11_09); const DEFAULT_TRANSCRIBER_REGION: &str = "us-east-1"; @@ -688,7 +688,7 @@ impl ObjectSubclass for Transcriber { impl ObjectImpl for Transcriber { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("language-code") .nick("Language Code") @@ -931,7 +931,7 @@ impl GstObjectImpl for Transcriber {} impl ElementImpl for Transcriber { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Transcriber", "Audio/Text/Filter", @@ -944,7 +944,7 @@ impl ElementImpl for Transcriber { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_caps = gst::Caps::builder("text/x-raw") .field("format", "utf8") .build(); @@ -1771,7 +1771,7 @@ impl ObjectSubclass for TranslateSrcPad { impl ObjectImpl for TranslateSrcPad { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder(OUTPUT_LANG_CODE_PROPERTY) .nick("Language Code") diff --git a/net/aws/src/transcriber/mod.rs b/net/aws/src/transcriber/mod.rs index f64585ce..c12386d4 100644 --- a/net/aws/src/transcriber/mod.rs +++ b/net/aws/src/transcriber/mod.rs @@ -13,9 +13,9 @@ mod imp; mod transcribe; mod translate; -use once_cell::sync::Lazy; +use std::sync::LazyLock; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "awstranscribe", gst::DebugColorFlags::empty(), diff --git a/net/hlssink3/Cargo.toml b/net/hlssink3/Cargo.toml index 5f78943f..d197e497 100644 --- a/net/hlssink3/Cargo.toml +++ b/net/hlssink3/Cargo.toml @@ -12,7 +12,6 @@ rust-version.workspace = true gst.workspace = true gst-app.workspace = true gio.workspace = true -once_cell = "1.7.2" m3u8-rs = "5.0" chrono = "0.4" sprintf = "0.2" diff --git a/net/hlssink3/src/hlsbasesink.rs b/net/hlssink3/src/hlsbasesink.rs index b825e766..ff4e6007 100644 --- a/net/hlssink3/src/hlsbasesink.rs +++ b/net/hlssink3/src/hlsbasesink.rs @@ -14,10 +14,10 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; use m3u8_rs::MediaSegment; -use once_cell::sync::Lazy; use std::fs; use std::io::Write; use std::path; +use std::sync::LazyLock; use std::sync::Mutex; const DEFAULT_PLAYLIST_LOCATION: &str = "playlist.m3u8"; @@ -31,7 +31,7 @@ const SIGNAL_GET_PLAYLIST_STREAM: &str = "get-playlist-stream"; const SIGNAL_GET_FRAGMENT_STREAM: &str = "get-fragment-stream"; const SIGNAL_DELETE_FRAGMENT: &str = "delete-fragment"; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "hlsbasesink", gst::DebugColorFlags::empty(), @@ -106,7 +106,7 @@ impl ObjectImpl for HlsBaseSink { } fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("playlist-location") .nick("Playlist Location") @@ -199,7 +199,7 @@ impl ObjectImpl for HlsBaseSink { } fn signals() -> &'static [glib::subclass::Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![ glib::subclass::Signal::builder(SIGNAL_GET_PLAYLIST_STREAM) .param_types([String::static_type()]) diff --git a/net/hlssink3/src/hlscmafsink/imp.rs b/net/hlssink3/src/hlscmafsink/imp.rs index ae97f2f7..0d11575e 100644 --- a/net/hlssink3/src/hlscmafsink/imp.rs +++ b/net/hlssink3/src/hlscmafsink/imp.rs @@ -15,8 +15,8 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; use m3u8_rs::{MediaPlaylist, MediaPlaylistType, MediaSegment}; -use once_cell::sync::Lazy; use std::io::Write; +use std::sync::LazyLock; use std::sync::Mutex; const DEFAULT_INIT_LOCATION: &str = "init%05d.mp4"; @@ -29,7 +29,7 @@ const DEFAULT_LATENCY: gst::ClockTime = const SIGNAL_GET_INIT_STREAM: &str = "get-init-stream"; const SIGNAL_NEW_PLAYLIST: &str = "new-playlist"; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "hlscmafsink", gst::DebugColorFlags::empty(), @@ -110,7 +110,7 @@ impl ObjectSubclass for HlsCmafSink { impl ObjectImpl for HlsCmafSink { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("init-location") .nick("Init Location") @@ -220,7 +220,7 @@ impl ObjectImpl for HlsCmafSink { } fn signals() -> &'static [glib::subclass::Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![ glib::subclass::Signal::builder(SIGNAL_GET_INIT_STREAM) .param_types([String::static_type()]) @@ -315,7 +315,7 @@ impl GstObjectImpl for HlsCmafSink {} impl ElementImpl for HlsCmafSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "HTTP Live Streaming CMAF Sink", "Sink/Muxer", @@ -328,7 +328,7 @@ impl ElementImpl for HlsCmafSink { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/hlssink3/src/hlssink3/imp.rs b/net/hlssink3/src/hlssink3/imp.rs index b28e0e65..b6f8cbf8 100644 --- a/net/hlssink3/src/hlssink3/imp.rs +++ b/net/hlssink3/src/hlssink3/imp.rs @@ -16,7 +16,7 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; use m3u8_rs::{MediaPlaylist, MediaPlaylistType, MediaSegment}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; const DEFAULT_TS_LOCATION: &str = "segment%05d.ts"; @@ -25,7 +25,7 @@ const DEFAULT_PLAYLIST_TYPE: HlsSink3PlaylistType = HlsSink3PlaylistType::Unspec const DEFAULT_I_FRAMES_ONLY_PLAYLIST: bool = false; const DEFAULT_SEND_KEYFRAME_REQUESTS: bool = true; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new("hlssink3", gst::DebugColorFlags::empty(), Some("HLS sink")) }); @@ -142,7 +142,7 @@ impl ObjectSubclass for HlsSink3 { impl ObjectImpl for HlsSink3 { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("location") .nick("File Location") @@ -288,7 +288,7 @@ impl GstObjectImpl for HlsSink3 {} impl ElementImpl for HlsSink3 { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "HTTP Live Streaming sink", "Sink/Muxer", @@ -303,7 +303,7 @@ impl ElementImpl for HlsSink3 { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let video_pad_template = gst::PadTemplate::new( "video", diff --git a/net/hlssink3/tests/hlssink3.rs b/net/hlssink3/tests/hlssink3.rs index d22abad8..34366ed3 100644 --- a/net/hlssink3/tests/hlssink3.rs +++ b/net/hlssink3/tests/hlssink3.rs @@ -9,12 +9,12 @@ use gio::prelude::*; use gst::prelude::*; use gsthlssink3::hlssink3::HlsSink3PlaylistType; -use once_cell::sync::Lazy; use std::io::Write; +use std::sync::LazyLock; use std::sync::{mpsc, Arc, Mutex}; use std::time::Duration; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "hlssink3-test", gst::DebugColorFlags::empty(), diff --git a/net/mpegtslive/Cargo.toml b/net/mpegtslive/Cargo.toml index 8889137c..ce3238c8 100644 --- a/net/mpegtslive/Cargo.toml +++ b/net/mpegtslive/Cargo.toml @@ -10,7 +10,6 @@ rust-version.workspace = true [dependencies] gst.workspace = true -once_cell = "1.19" bitstream-io = "2.3" anyhow = "1" diff --git a/net/mpegtslive/src/mpegtslive/imp.rs b/net/mpegtslive/src/mpegtslive/imp.rs index 6964d5cf..bb831aea 100644 --- a/net/mpegtslive/src/mpegtslive/imp.rs +++ b/net/mpegtslive/src/mpegtslive/imp.rs @@ -31,9 +31,9 @@ use std::ops::Add; use std::ops::ControlFlow; use std::sync::Mutex; -use once_cell::sync::Lazy; +use std::sync::LazyLock; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "mpegtslivesrc", gst::DebugColorFlags::empty(), @@ -508,7 +508,7 @@ impl ObjectSubclass for MpegTsLiveSource { impl ObjectImpl for MpegTsLiveSource { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecObject::builder::("source") .nick("Source") @@ -670,7 +670,7 @@ impl ElementImpl for MpegTsLiveSource { } fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "MpegTsLiveSource", "Network", @@ -683,7 +683,7 @@ impl ElementImpl for MpegTsLiveSource { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_pad_template = gst::PadTemplate::new( "src", gst::PadDirection::Src, diff --git a/net/ndi/Cargo.toml b/net/ndi/Cargo.toml index 99687d3b..8ee98736 100644 --- a/net/ndi/Cargo.toml +++ b/net/ndi/Cargo.toml @@ -22,7 +22,6 @@ libloading = "0.8" quick-xml = "0.31" smallvec = { version = "1.11", features = ["const_generics"] } thiserror = "1.0" -once_cell.workspace = true [build-dependencies] gst-plugin-version-helper.workspace = true diff --git a/net/ndi/src/device_provider/imp.rs b/net/ndi/src/device_provider/imp.rs index f499321e..9f8e207f 100644 --- a/net/ndi/src/device_provider/imp.rs +++ b/net/ndi/src/device_provider/imp.rs @@ -8,11 +8,11 @@ use std::{ thread, }; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::ndi; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ndideviceprovider", gst::DebugColorFlags::empty(), @@ -50,7 +50,7 @@ impl GstObjectImpl for DeviceProvider {} impl DeviceProviderImpl for DeviceProvider { fn metadata() -> Option<&'static gst::subclass::DeviceProviderMetadata> { - static METADATA: Lazy = Lazy::new(|| { + static METADATA: LazyLock = LazyLock::new(|| { gst::subclass::DeviceProviderMetadata::new("NewTek NDI Device Provider", "Source/Audio/Video/Network", "NewTek NDI Device Provider", diff --git a/net/ndi/src/lib.rs b/net/ndi/src/lib.rs index 7072ee9c..247dc0b4 100644 --- a/net/ndi/src/lib.rs +++ b/net/ndi/src/lib.rs @@ -30,7 +30,7 @@ mod ndi_cc_meta; #[cfg(feature = "doc")] use gst::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy, glib::Enum, Default)] #[repr(u32)] @@ -152,10 +152,10 @@ fn plugin_init(plugin: &gst::Plugin) -> Result<(), glib::BoolError> { Ok(()) } -static TIMECODE_CAPS: Lazy = - Lazy::new(|| gst::Caps::new_empty_simple("timestamp/x-ndi-timecode")); -static TIMESTAMP_CAPS: Lazy = - Lazy::new(|| gst::Caps::new_empty_simple("timestamp/x-ndi-timestamp")); +static TIMECODE_CAPS: LazyLock = + LazyLock::new(|| gst::Caps::new_empty_simple("timestamp/x-ndi-timecode")); +static TIMESTAMP_CAPS: LazyLock = + LazyLock::new(|| gst::Caps::new_empty_simple("timestamp/x-ndi-timestamp")); gst::plugin_define!( ndi, diff --git a/net/ndi/src/ndi_cc_meta.rs b/net/ndi/src/ndi_cc_meta.rs index a33f642d..2be828b4 100644 --- a/net/ndi/src/ndi_cc_meta.rs +++ b/net/ndi/src/ndi_cc_meta.rs @@ -13,12 +13,12 @@ use gst::glib::translate::IntoGlib; #[cfg(feature = "sink")] use gst_video::VideoVBIEncoder; use gst_video::{VideoAncillary, VideoAncillaryDID16, VideoVBIParser}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; #[cfg(feature = "sink")] use std::ffi::CString; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ndiccmeta", gst::DebugColorFlags::empty(), diff --git a/net/ndi/src/ndisink/imp.rs b/net/ndi/src/ndisink/imp.rs index b3a7a7e5..b72b8fff 100644 --- a/net/ndi/src/ndisink/imp.rs +++ b/net/ndi/src/ndisink/imp.rs @@ -8,12 +8,12 @@ use gst_base::subclass::prelude::*; use std::sync::Mutex; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::ndi::SendInstance; use crate::ndi_cc_meta::NDICCMetaEncoder; -static DEFAULT_SENDER_NDI_NAME: Lazy = Lazy::new(|| { +static DEFAULT_SENDER_NDI_NAME: LazyLock = LazyLock::new(|| { format!( "GStreamer NewTek NDI Sink {}-{}", env!("CARGO_PKG_VERSION"), @@ -46,7 +46,7 @@ pub struct NdiSink { state: Mutex>, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new("ndisink", gst::DebugColorFlags::empty(), Some("NDI Sink")) }); @@ -66,7 +66,7 @@ impl ObjectSubclass for NdiSink { impl ObjectImpl for NdiSink { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecString::builder("ndi-name") .nick("NDI Name") .blurb("NDI Name to use") @@ -104,7 +104,7 @@ impl GstObjectImpl for NdiSink {} impl ElementImpl for NdiSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "NewTek NDI Sink", "Sink/Audio/Video", @@ -117,7 +117,7 @@ impl ElementImpl for NdiSink { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder_full() .structure( gst::Structure::builder("video/x-raw") diff --git a/net/ndi/src/ndisinkcombiner/imp.rs b/net/ndi/src/ndisinkcombiner/imp.rs index d49fb6f3..3b199a5c 100644 --- a/net/ndi/src/ndisinkcombiner/imp.rs +++ b/net/ndi/src/ndisinkcombiner/imp.rs @@ -7,12 +7,12 @@ use gst::subclass::prelude::*; use gst_base::prelude::*; use gst_base::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::mem; use std::sync::Mutex; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ndisinkcombiner", gst::DebugColorFlags::empty(), @@ -75,7 +75,7 @@ impl GstObjectImpl for NdiSinkCombiner {} impl ElementImpl for NdiSinkCombiner { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "NewTek NDI Sink Combiner", "Combiner/Audio/Video", @@ -88,7 +88,7 @@ impl ElementImpl for NdiSinkCombiner { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst_video::VideoCapsBuilder::new() .format_list([ gst_video::VideoFormat::Uyvy, diff --git a/net/ndi/src/ndisinkmeta.rs b/net/ndi/src/ndisinkmeta.rs index cbacdb06..5a5a573b 100644 --- a/net/ndi/src/ndisinkmeta.rs +++ b/net/ndi/src/ndisinkmeta.rs @@ -53,9 +53,9 @@ impl fmt::Debug for NdiSinkAudioMeta { mod imp { use glib::translate::*; - use once_cell::sync::Lazy; use std::mem; use std::ptr; + use std::sync::LazyLock; pub(super) struct NdiSinkAudioMetaParams { pub buffers: Vec<(gst::Buffer, gst_audio::AudioInfo, i64)>, @@ -68,7 +68,7 @@ mod imp { } pub(super) fn ndi_sink_audio_meta_api_get_type() -> glib::Type { - static TYPE: Lazy = Lazy::new(|| unsafe { + static TYPE: LazyLock = LazyLock::new(|| unsafe { let t = from_glib(gst::ffi::gst_meta_api_type_register( b"GstNdiSinkAudioMetaAPI\0".as_ptr() as *const _, [ptr::null::()].as_ptr() as *mut *const _, @@ -125,7 +125,7 @@ mod imp { unsafe impl Send for MetaInfo {} unsafe impl Sync for MetaInfo {} - static META_INFO: Lazy = Lazy::new(|| unsafe { + static META_INFO: LazyLock = LazyLock::new(|| unsafe { MetaInfo( ptr::NonNull::new(gst::ffi::gst_meta_register( ndi_sink_audio_meta_api_get_type().into_glib(), diff --git a/net/ndi/src/ndisrc/imp.rs b/net/ndi/src/ndisrc/imp.rs index 6f2cc7fd..099179e9 100644 --- a/net/ndi/src/ndisrc/imp.rs +++ b/net/ndi/src/ndisrc/imp.rs @@ -10,7 +10,7 @@ use std::cmp; use std::collections::VecDeque; use std::sync::Mutex; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::ndisrcmeta::NdiSrcMeta; use crate::ndisys; @@ -20,7 +20,7 @@ use crate::TimestampMode; use super::receiver::{Receiver, ReceiverControlHandle, ReceiverItem}; use crate::ndisrcmeta::Buffer; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ndisrc", gst::DebugColorFlags::empty(), @@ -28,7 +28,7 @@ static CAT: Lazy = Lazy::new(|| { ) }); -static DEFAULT_RECEIVER_NDI_NAME: Lazy = Lazy::new(|| { +static DEFAULT_RECEIVER_NDI_NAME: LazyLock = LazyLock::new(|| { format!( "GStreamer NewTek NDI Source {}-{}", env!("CARGO_PKG_VERSION"), @@ -113,7 +113,7 @@ impl ObjectSubclass for NdiSrc { impl ObjectImpl for NdiSrc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { let receiver = glib::ParamSpecString::builder("receiver-ndi-name") .nick("Receiver NDI Name") .blurb("NDI stream name of this receiver"); @@ -350,7 +350,7 @@ impl GstObjectImpl for NdiSrc {} impl ElementImpl for NdiSrc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "NewTek NDI Source", "Source/Audio/Video/Network", @@ -363,7 +363,7 @@ impl ElementImpl for NdiSrc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_pad_template = gst::PadTemplate::new( "src", gst::PadDirection::Src, diff --git a/net/ndi/src/ndisrc/receiver.rs b/net/ndi/src/ndisrc/receiver.rs index dae70c99..8421914a 100644 --- a/net/ndi/src/ndisrc/receiver.rs +++ b/net/ndi/src/ndisrc/receiver.rs @@ -8,13 +8,13 @@ use std::sync::{Arc, Condvar, Mutex, Weak}; use std::thread; use std::time; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::ndi::*; use crate::ndisrcmeta::Buffer; use crate::ndisys::*; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ndireceiver", gst::DebugColorFlags::empty(), diff --git a/net/ndi/src/ndisrcdemux/imp.rs b/net/ndi/src/ndisrcdemux/imp.rs index 2a645d3c..4545f3ce 100644 --- a/net/ndi/src/ndisrcdemux/imp.rs +++ b/net/ndi/src/ndisrcdemux/imp.rs @@ -3,7 +3,7 @@ use gst::prelude::*; use gst::subclass::prelude::*; use gst_video::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; @@ -15,7 +15,7 @@ use crate::{ ndisys, }; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ndisrcdemux", gst::DebugColorFlags::empty(), @@ -115,7 +115,7 @@ impl GstObjectImpl for NdiSrcDemux {} impl ElementImpl for NdiSrcDemux { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "NewTek NDI Source Demuxer", "Demuxer/Audio/Video", @@ -128,7 +128,7 @@ impl ElementImpl for NdiSrcDemux { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/ndi/src/ndisrcmeta.rs b/net/ndi/src/ndisrcmeta.rs index 86b83ce4..db613500 100644 --- a/net/ndi/src/ndisrcmeta.rs +++ b/net/ndi/src/ndisrcmeta.rs @@ -78,9 +78,9 @@ impl fmt::Debug for NdiSrcMeta { mod imp { use super::Buffer; use glib::translate::*; - use once_cell::sync::Lazy; use std::mem; use std::ptr; + use std::sync::LazyLock; pub(super) struct NdiSrcMetaParams { pub ndi_buffer: Buffer, @@ -93,7 +93,7 @@ mod imp { } pub(super) fn ndi_src_meta_api_get_type() -> glib::Type { - static TYPE: Lazy = Lazy::new(|| unsafe { + static TYPE: LazyLock = LazyLock::new(|| unsafe { let t = from_glib(gst::ffi::gst_meta_api_type_register( b"GstNdiSrcMetaAPI\0".as_ptr() as *const _, [ptr::null::()].as_ptr() as *mut *const _, @@ -146,7 +146,7 @@ mod imp { unsafe impl Send for MetaInfo {} unsafe impl Sync for MetaInfo {} - static META_INFO: Lazy = Lazy::new(|| unsafe { + static META_INFO: LazyLock = LazyLock::new(|| unsafe { MetaInfo( ptr::NonNull::new(gst::ffi::gst_meta_register( ndi_src_meta_api_get_type().into_glib(), diff --git a/net/ndi/src/ndisys.rs b/net/ndi/src/ndisys.rs index 6336081d..4fb7a023 100644 --- a/net/ndi/src/ndisys.rs +++ b/net/ndi/src/ndisys.rs @@ -8,7 +8,7 @@ clippy::missing_safety_doc )] -use once_cell::sync::{Lazy, OnceCell}; +use std::sync::{LazyLock, OnceLock}; #[cfg(unix)] use libloading::os::unix::{Library, Symbol}; @@ -326,13 +326,14 @@ pub const NDIlib_compressed_packet_flags_keyframe: u32 = 1; #[cfg(feature = "advanced-sdk")] pub const NDIlib_compressed_packet_version_0: u32 = 44; -static CAT: Lazy = - Lazy::new(|| gst::DebugCategory::new("ndi", gst::DebugColorFlags::empty(), Some("NewTek NDI"))); +static CAT: LazyLock = LazyLock::new(|| { + gst::DebugCategory::new("ndi", gst::DebugColorFlags::empty(), Some("NewTek NDI")) +}); -static FFI: OnceCell = OnceCell::new(); +static FFI: OnceLock = OnceLock::new(); pub fn load() -> Result<(), glib::BoolError> { - static ERR: OnceCell> = OnceCell::new(); + static ERR: OnceLock> = OnceLock::new(); ERR.get_or_init(|| unsafe { use std::env; @@ -447,58 +448,58 @@ pub fn load() -> Result<(), glib::BoolError> { } pub unsafe fn NDIlib_initialize() -> bool { - (FFI.get_unchecked().initialize)() + (FFI.get().unwrap_unchecked().initialize)() } pub unsafe fn NDIlib_destroy() { - (FFI.get_unchecked().destroy)() + (FFI.get().unwrap_unchecked().destroy)() } pub unsafe fn NDIlib_find_create_v2( p_create_settings: *const NDIlib_find_create_t, ) -> NDIlib_find_instance_t { - (FFI.get_unchecked().find_create_v2)(p_create_settings) + (FFI.get().unwrap_unchecked().find_create_v2)(p_create_settings) } pub unsafe fn NDIlib_find_destroy(p_instance: NDIlib_find_instance_t) { - (FFI.get_unchecked().find_destroy)(p_instance) + (FFI.get().unwrap_unchecked().find_destroy)(p_instance) } pub unsafe fn NDIlib_find_wait_for_sources( p_instance: NDIlib_find_instance_t, timeout_in_ms: u32, ) -> bool { - (FFI.get_unchecked().find_wait_for_sources)(p_instance, timeout_in_ms) + (FFI.get().unwrap_unchecked().find_wait_for_sources)(p_instance, timeout_in_ms) } pub unsafe fn NDIlib_find_get_current_sources( p_instance: NDIlib_find_instance_t, p_no_sources: *mut u32, ) -> *const NDIlib_source_t { - (FFI.get_unchecked().find_get_current_sources)(p_instance, p_no_sources) + (FFI.get().unwrap_unchecked().find_get_current_sources)(p_instance, p_no_sources) } pub unsafe fn NDIlib_recv_create_v3( p_create_settings: *const NDIlib_recv_create_v3_t, ) -> NDIlib_recv_instance_t { - (FFI.get_unchecked().recv_create_v3)(p_create_settings) + (FFI.get().unwrap_unchecked().recv_create_v3)(p_create_settings) } pub unsafe fn NDIlib_recv_destroy(p_instance: NDIlib_recv_instance_t) { - (FFI.get_unchecked().recv_destroy)(p_instance) + (FFI.get().unwrap_unchecked().recv_destroy)(p_instance) } pub unsafe fn NDIlib_recv_set_tally( p_instance: NDIlib_recv_instance_t, p_tally: *const NDIlib_tally_t, ) -> bool { - (FFI.get_unchecked().recv_set_tally)(p_instance, p_tally) + (FFI.get().unwrap_unchecked().recv_set_tally)(p_instance, p_tally) } pub unsafe fn NDIlib_recv_send_metadata( p_instance: NDIlib_recv_instance_t, p_metadata: *const NDIlib_metadata_frame_t, ) -> bool { - (FFI.get_unchecked().recv_send_metadata)(p_instance, p_metadata) + (FFI.get().unwrap_unchecked().recv_send_metadata)(p_instance, p_metadata) } pub unsafe fn NDIlib_recv_capture_v3( @@ -508,7 +509,7 @@ pub unsafe fn NDIlib_recv_capture_v3( p_metadata: *mut NDIlib_metadata_frame_t, timeout_in_ms: u32, ) -> NDIlib_frame_type_e { - (FFI.get_unchecked().recv_capture_v3)( + (FFI.get().unwrap_unchecked().recv_capture_v3)( p_instance, p_video_data, p_audio_data, @@ -521,57 +522,57 @@ pub unsafe fn NDIlib_recv_free_video_v2( p_instance: NDIlib_recv_instance_t, p_video_data: *mut NDIlib_video_frame_v2_t, ) { - (FFI.get_unchecked().recv_free_video_v2)(p_instance, p_video_data) + (FFI.get().unwrap_unchecked().recv_free_video_v2)(p_instance, p_video_data) } pub unsafe fn NDIlib_recv_free_audio_v3( p_instance: NDIlib_recv_instance_t, p_audio_data: *mut NDIlib_audio_frame_v3_t, ) { - (FFI.get_unchecked().recv_free_audio_v3)(p_instance, p_audio_data) + (FFI.get().unwrap_unchecked().recv_free_audio_v3)(p_instance, p_audio_data) } pub unsafe fn NDIlib_recv_free_metadata( p_instance: NDIlib_recv_instance_t, p_metadata: *mut NDIlib_metadata_frame_t, ) { - (FFI.get_unchecked().recv_free_metadata)(p_instance, p_metadata) + (FFI.get().unwrap_unchecked().recv_free_metadata)(p_instance, p_metadata) } pub unsafe fn NDIlib_recv_get_queue( p_instance: NDIlib_recv_instance_t, p_total: *mut NDIlib_recv_queue_t, ) { - (FFI.get_unchecked().recv_get_queue)(p_instance, p_total) + (FFI.get().unwrap_unchecked().recv_get_queue)(p_instance, p_total) } pub unsafe fn NDIlib_send_create( p_create_settings: *const NDIlib_send_create_t, ) -> NDIlib_send_instance_t { - (FFI.get_unchecked().send_create)(p_create_settings) + (FFI.get().unwrap_unchecked().send_create)(p_create_settings) } pub unsafe fn NDIlib_send_destroy(p_instance: NDIlib_send_instance_t) { - (FFI.get_unchecked().send_destroy)(p_instance) + (FFI.get().unwrap_unchecked().send_destroy)(p_instance) } pub unsafe fn NDIlib_send_send_video_v2( p_instance: NDIlib_send_instance_t, p_video_data: *const NDIlib_video_frame_v2_t, ) { - (FFI.get_unchecked().send_send_video_v2)(p_instance, p_video_data) + (FFI.get().unwrap_unchecked().send_send_video_v2)(p_instance, p_video_data) } pub unsafe fn NDIlib_send_send_audio_v3( p_instance: NDIlib_send_instance_t, p_audio_data: *const NDIlib_audio_frame_v3_t, ) { - (FFI.get_unchecked().send_send_audio_v3)(p_instance, p_audio_data) + (FFI.get().unwrap_unchecked().send_send_audio_v3)(p_instance, p_audio_data) } pub unsafe fn NDIlib_send_send_metadata( p_instance: NDIlib_send_instance_t, p_metadata: *const NDIlib_metadata_frame_t, ) { - (FFI.get_unchecked().send_send_metadata)(p_instance, p_metadata) + (FFI.get().unwrap_unchecked().send_send_metadata)(p_instance, p_metadata) } diff --git a/net/onvif/Cargo.toml b/net/onvif/Cargo.toml index b6e9094c..3a05649a 100644 --- a/net/onvif/Cargo.toml +++ b/net/onvif/Cargo.toml @@ -19,7 +19,6 @@ cairo-rs.workspace = true pango.workspace = true pangocairo.workspace = true xmltree = "0.10" -once_cell.workspace = true [lib] name = "gstrsonvif" diff --git a/net/onvif/src/lib.rs b/net/onvif/src/lib.rs index 1b5b7887..61f3f581 100644 --- a/net/onvif/src/lib.rs +++ b/net/onvif/src/lib.rs @@ -13,7 +13,7 @@ * Since: plugins-rs-0.9.0 */ use gst::glib; -use once_cell::sync::Lazy; +use std::sync::LazyLock; mod onvifmetadatacombiner; mod onvifmetadatadepay; @@ -28,10 +28,10 @@ pub(crate) const ONVIF_METADATA_SCHEMA: &str = "http://www.onvif.org/ver10/schem // midnight 01-01-1970 (UNIX epoch) pub(crate) const PRIME_EPOCH_OFFSET: gst::ClockTime = gst::ClockTime::from_seconds(2_208_988_800); -pub(crate) static NTP_CAPS: Lazy = - Lazy::new(|| gst::Caps::builder("timestamp/x-ntp").build()); -pub(crate) static UNIX_CAPS: Lazy = - Lazy::new(|| gst::Caps::builder("timestamp/x-unix").build()); +pub(crate) static NTP_CAPS: LazyLock = + LazyLock::new(|| gst::Caps::builder("timestamp/x-ntp").build()); +pub(crate) static UNIX_CAPS: LazyLock = + LazyLock::new(|| gst::Caps::builder("timestamp/x-unix").build()); pub(crate) fn lookup_reference_timestamp(buffer: &gst::Buffer) -> Option { for meta in buffer.iter_meta::() { diff --git a/net/onvif/src/onvifmetadatacombiner/imp.rs b/net/onvif/src/onvifmetadatacombiner/imp.rs index 2c6a3256..46de02b5 100644 --- a/net/onvif/src/onvifmetadatacombiner/imp.rs +++ b/net/onvif/src/onvifmetadatacombiner/imp.rs @@ -4,7 +4,7 @@ use gst::subclass::prelude::*; use gst_base::prelude::*; use gst_base::subclass::prelude::*; use gst_base::AGGREGATOR_FLOW_NEED_DATA; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; #[derive(Default)] @@ -25,7 +25,7 @@ pub struct OnvifMetadataCombiner { state: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "onvifmetadatacombiner", gst::DebugColorFlags::empty(), @@ -70,7 +70,7 @@ impl GstObjectImpl for OnvifMetadataCombiner {} impl ElementImpl for OnvifMetadataCombiner { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "ONVIF metadata combiner", "Video/Metadata/Combiner", @@ -83,7 +83,7 @@ impl ElementImpl for OnvifMetadataCombiner { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let media_caps = gst::Caps::new_any(); let media_sink_pad_template = gst::PadTemplate::with_gtype( "media", diff --git a/net/onvif/src/onvifmetadatadepay/imp.rs b/net/onvif/src/onvifmetadatadepay/imp.rs index 58542d49..9d40b5b4 100644 --- a/net/onvif/src/onvifmetadatadepay/imp.rs +++ b/net/onvif/src/onvifmetadatadepay/imp.rs @@ -2,7 +2,7 @@ use gst::glib; use gst::subclass::prelude::*; use gst_rtp::prelude::*; use gst_rtp::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; #[derive(Default)] @@ -16,7 +16,7 @@ pub struct OnvifMetadataDepay { state: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtponvifmetadatadepay", gst::DebugColorFlags::empty(), @@ -37,7 +37,7 @@ impl GstObjectImpl for OnvifMetadataDepay {} impl ElementImpl for OnvifMetadataDepay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "ONVIF metadata RTP depayloader", "Depayloader/Network/RTP", @@ -50,7 +50,7 @@ impl ElementImpl for OnvifMetadataDepay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_caps = gst::Caps::builder("application/x-rtp") .field("media", "application") .field("payload", gst::IntRange::new(96, 127)) diff --git a/net/onvif/src/onvifmetadataoverlay/imp.rs b/net/onvif/src/onvifmetadataoverlay/imp.rs index b9514230..f6d79624 100644 --- a/net/onvif/src/onvifmetadataoverlay/imp.rs +++ b/net/onvif/src/onvifmetadataoverlay/imp.rs @@ -4,12 +4,12 @@ use gst::subclass::prelude::*; use gst_video::prelude::*; use pango::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::collections::HashSet; use std::sync::Mutex; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "onvifmetadataoverlay", gst::DebugColorFlags::empty(), @@ -751,7 +751,7 @@ impl ObjectSubclass for OnvifMetadataOverlay { impl ObjectImpl for OnvifMetadataOverlay { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecString::builder("font-desc") .nick("Font Description") .blurb("Pango font description of font to be used for rendering") @@ -795,7 +795,7 @@ impl GstObjectImpl for OnvifMetadataOverlay {} impl ElementImpl for OnvifMetadataOverlay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "ONVIF Metadata overlay", "Video/Overlay", @@ -808,7 +808,7 @@ impl ElementImpl for OnvifMetadataOverlay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst_video::VideoFormat::iter_raw() .into_video_caps() .unwrap() diff --git a/net/onvif/src/onvifmetadataparse/imp.rs b/net/onvif/src/onvifmetadataparse/imp.rs index fb91940f..167ea22e 100644 --- a/net/onvif/src/onvifmetadataparse/imp.rs +++ b/net/onvif/src/onvifmetadataparse/imp.rs @@ -10,7 +10,7 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::collections::BTreeMap; use std::sync::{Condvar, Mutex}; @@ -51,7 +51,7 @@ fn running_time_to_utc_time( } } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "onvifmetadataparse", gst::DebugColorFlags::empty(), @@ -1492,7 +1492,7 @@ impl ObjectSubclass for OnvifMetadataParse { impl ObjectImpl for OnvifMetadataParse { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecUInt64::builder("latency") .nick("Latency") @@ -1563,7 +1563,7 @@ impl GstObjectImpl for OnvifMetadataParse {} impl ElementImpl for OnvifMetadataParse { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "ONVIF Metadata Parser", "Metadata/Parser", @@ -1576,7 +1576,7 @@ impl ElementImpl for OnvifMetadataParse { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder("application/x-onvif-metadata") .field("parsed", true) .build(); diff --git a/net/onvif/src/onvifmetadatapay/imp.rs b/net/onvif/src/onvifmetadatapay/imp.rs index c6969dec..417f60f6 100644 --- a/net/onvif/src/onvifmetadatapay/imp.rs +++ b/net/onvif/src/onvifmetadatapay/imp.rs @@ -2,9 +2,9 @@ use gst::glib; use gst::subclass::prelude::*; use gst_rtp::prelude::*; use gst_rtp::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtponvifmetadatapay", gst::DebugColorFlags::empty(), @@ -28,7 +28,7 @@ impl GstObjectImpl for OnvifMetadataPay {} impl ElementImpl for OnvifMetadataPay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "ONVIF metadata RTP payloader", "Payloader/Network/RTP", @@ -41,7 +41,7 @@ impl ElementImpl for OnvifMetadataPay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_caps = gst::Caps::builder("application/x-onvif-metadata").build(); let sink_pad_template = gst::PadTemplate::new( "sink", diff --git a/net/quinn/Cargo.toml b/net/quinn/Cargo.toml index 21c5f44f..a3d761ac 100644 --- a/net/quinn/Cargo.toml +++ b/net/quinn/Cargo.toml @@ -13,7 +13,6 @@ rust-version.workspace = true [dependencies] gst.workspace = true gst-base.workspace = true -once_cell.workspace = true tokio = { version = "1.36.0", default-features = false, features = ["time", "rt-multi-thread"] } futures = "0.3.30" quinn = { version = "0.11.2", default-features = true, features = ["ring"]} diff --git a/net/quinn/src/quinnquicsink/imp.rs b/net/quinn/src/quinnquicsink/imp.rs index 052f1a70..39ec6c54 100644 --- a/net/quinn/src/quinnquicsink/imp.rs +++ b/net/quinn/src/quinnquicsink/imp.rs @@ -16,14 +16,14 @@ use bytes::Bytes; use futures::future; use gst::{glib, prelude::*, subclass::prelude::*}; use gst_base::subclass::prelude::*; -use once_cell::sync::Lazy; use quinn::{Connection, SendStream, TransportConfig}; use std::path::PathBuf; +use std::sync::LazyLock; use std::sync::Mutex; const DEFAULT_ROLE: QuinnQuicRole = QuinnQuicRole::Client; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "quinnquicsink", gst::DebugColorFlags::empty(), @@ -104,7 +104,7 @@ impl GstObjectImpl for QuinnQuicSink {} impl ElementImpl for QuinnQuicSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Quinn QUIC Sink", "Source/Network/QUIC", @@ -116,7 +116,7 @@ impl ElementImpl for QuinnQuicSink { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, @@ -164,7 +164,7 @@ impl ObjectImpl for QuinnQuicSink { } fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("server-name") .nick("QUIC server name") diff --git a/net/quinn/src/quinnquicsrc/imp.rs b/net/quinn/src/quinnquicsrc/imp.rs index a677c440..5aeaabaf 100644 --- a/net/quinn/src/quinnquicsrc/imp.rs +++ b/net/quinn/src/quinnquicsrc/imp.rs @@ -18,14 +18,14 @@ use gst::{glib, prelude::*, subclass::prelude::*}; use gst_base::prelude::*; use gst_base::subclass::base_src::CreateSuccess; use gst_base::subclass::prelude::*; -use once_cell::sync::Lazy; use quinn::{Connection, ConnectionError, ReadError, RecvStream, TransportConfig}; use std::path::PathBuf; +use std::sync::LazyLock; use std::sync::Mutex; const DEFAULT_ROLE: QuinnQuicRole = QuinnQuicRole::Server; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "quinnquicsrc", gst::DebugColorFlags::empty(), @@ -106,7 +106,7 @@ impl GstObjectImpl for QuinnQuicSrc {} impl ElementImpl for QuinnQuicSrc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Quinn QUIC Source", "Source/Network/QUIC", @@ -118,7 +118,7 @@ impl ElementImpl for QuinnQuicSrc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_pad_template = gst::PadTemplate::new( "src", gst::PadDirection::Src, @@ -167,7 +167,7 @@ impl ObjectImpl for QuinnQuicSrc { } fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("server-name") .nick("QUIC server name") diff --git a/net/quinn/src/utils.rs b/net/quinn/src/utils.rs index 5811b836..938708ec 100644 --- a/net/quinn/src/utils.rs +++ b/net/quinn/src/utils.rs @@ -11,7 +11,6 @@ use crate::common::*; use futures::future; use futures::prelude::*; use gst::ErrorMessage; -use once_cell::sync::Lazy; use quinn::{ crypto::rustls::QuicClientConfig, crypto::rustls::QuicServerConfig, default_runtime, ClientConfig, Connection, Endpoint, EndpointConfig, MtuDiscoveryConfig, ServerConfig, @@ -23,6 +22,7 @@ use std::fs::File; use std::io::BufReader; use std::net::SocketAddr; use std::path::PathBuf; +use std::sync::LazyLock; use std::sync::{Arc, Mutex}; use std::time::Duration; use thiserror::Error; @@ -52,7 +52,7 @@ pub enum WaitError { FutureError(ErrorMessage), } -pub static RUNTIME: Lazy = Lazy::new(|| { +pub static RUNTIME: LazyLock = LazyLock::new(|| { runtime::Builder::new_multi_thread() .enable_all() .worker_threads(1) diff --git a/net/raptorq/Cargo.toml b/net/raptorq/Cargo.toml index ab3dfc43..c1886850 100644 --- a/net/raptorq/Cargo.toml +++ b/net/raptorq/Cargo.toml @@ -12,7 +12,6 @@ rust-version.workspace = true gst.workspace = true gst-base.workspace = true gst-rtp.workspace = true -once_cell.workspace = true raptorq = "1.7" [dev-dependencies] diff --git a/net/raptorq/src/raptorqdec/imp.rs b/net/raptorq/src/raptorqdec/imp.rs index a6ff2544..38032338 100644 --- a/net/raptorq/src/raptorqdec/imp.rs +++ b/net/raptorq/src/raptorqdec/imp.rs @@ -11,7 +11,7 @@ use gst::subclass::prelude::*; use gst_rtp::RTPBuffer; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::collections::BTreeMap; use std::iter; @@ -22,7 +22,7 @@ use raptorq::{EncodingPacket, ObjectTransmissionInformation, PayloadId, SourceBl use crate::fecscheme::{self, DataUnitHeader, RepairPayloadId}; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "raptorqdec", gst::DebugColorFlags::empty(), @@ -635,7 +635,7 @@ impl ObjectSubclass for RaptorqDec { impl ObjectImpl for RaptorqDec { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecUInt::builder("repair-window-tolerance") .nick("Repair Window Tolerance (ms)") @@ -729,7 +729,7 @@ impl GstObjectImpl for RaptorqDec {} impl ElementImpl for RaptorqDec { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP RaptorQ FEC Decoder", "RTP RaptorQ FEC Decoding", @@ -742,7 +742,7 @@ impl ElementImpl for RaptorqDec { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder("application/x-rtp").build(); let srcpad_template = gst::PadTemplate::new( diff --git a/net/raptorq/src/raptorqenc/imp.rs b/net/raptorq/src/raptorqenc/imp.rs index 42092adc..d374e036 100644 --- a/net/raptorq/src/raptorqenc/imp.rs +++ b/net/raptorq/src/raptorqenc/imp.rs @@ -12,7 +12,7 @@ use gst::subclass::prelude::*; use gst_rtp::rtp_buffer::*; use gst_rtp::RTPBuffer; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::collections::HashSet; use std::sync::{mpsc, Mutex}; @@ -24,7 +24,7 @@ use raptorq::{ use crate::fecscheme::{self, DataUnitHeader, RepairPayloadId}; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "raptorqenc", gst::DebugColorFlags::empty(), @@ -729,7 +729,7 @@ impl ObjectSubclass for RaptorqEnc { impl ObjectImpl for RaptorqEnc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecUInt::builder("protected-packets") .nick("Protected Packets") @@ -863,7 +863,7 @@ impl GstObjectImpl for RaptorqEnc {} impl ElementImpl for RaptorqEnc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP RaptorQ FEC Encoder", "RTP RaptorQ FEC Encoding", @@ -876,7 +876,7 @@ impl ElementImpl for RaptorqEnc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder("application/x-rtp") .field("clock-rate", gst::IntRange::new(0, i32::MAX)) .build(); diff --git a/net/reqwest/Cargo.toml b/net/reqwest/Cargo.toml index 607d5cb2..3ceceb49 100644 --- a/net/reqwest/Cargo.toml +++ b/net/reqwest/Cargo.toml @@ -17,7 +17,6 @@ mime = "0.3" gst.workspace = true gst-base.workspace = true tokio = { version = "1.0", default-features = false, features = ["time", "rt-multi-thread"] } -once_cell.workspace = true [dev-dependencies] hyper = { version = "1.0", features = ["server"] } diff --git a/net/reqwest/src/reqwesthttpsrc/imp.rs b/net/reqwest/src/reqwesthttpsrc/imp.rs index ec0cfafb..705432a3 100644 --- a/net/reqwest/src/reqwesthttpsrc/imp.rs +++ b/net/reqwest/src/reqwesthttpsrc/imp.rs @@ -16,7 +16,7 @@ use reqwest::{Client, Response, StatusCode}; use tokio::runtime; use url::Url; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use gst::glib; use gst::prelude::*; @@ -162,7 +162,7 @@ pub struct ReqwestHttpSrc { canceller: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "reqwesthttpsrc", gst::DebugColorFlags::empty(), @@ -170,7 +170,7 @@ static CAT: Lazy = Lazy::new(|| { ) }); -static RUNTIME: Lazy = Lazy::new(|| { +static RUNTIME: LazyLock = LazyLock::new(|| { runtime::Builder::new_multi_thread() .enable_all() .worker_threads(1) @@ -683,7 +683,7 @@ impl ReqwestHttpSrc { impl ObjectImpl for ReqwestHttpSrc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { #[allow(unused_mut)] let mut user_agent_pspec = glib::ParamSpecString::builder("user-agent") .nick("User-Agent") @@ -975,7 +975,7 @@ impl GstObjectImpl for ReqwestHttpSrc {} impl ElementImpl for ReqwestHttpSrc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "HTTP Source", "Source/Network/HTTP", @@ -988,7 +988,7 @@ impl ElementImpl for ReqwestHttpSrc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let src_pad_template = gst::PadTemplate::new( "src", diff --git a/net/rtp/Cargo.toml b/net/rtp/Cargo.toml index 4c4e52cd..306d7024 100644 --- a/net/rtp/Cargo.toml +++ b/net/rtp/Cargo.toml @@ -24,7 +24,6 @@ futures = "0.3" gio.workspace = true hex = "0.4.3" log = "0.4" -once_cell.workspace = true rand = { version = "0.8", default-features = false, features = ["std", "std_rng" ] } rtp-types = { version = "0.1" } rtcp-types = { version = "0.1" } diff --git a/net/rtp/src/ac3/depay/imp.rs b/net/rtp/src/ac3/depay/imp.rs index eabf98cd..cd1a95e8 100644 --- a/net/rtp/src/ac3/depay/imp.rs +++ b/net/rtp/src/ac3/depay/imp.rs @@ -29,7 +29,7 @@ use atomic_refcell::AtomicRefCell; use gst::{glib, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::basedepay::{ Packet, PacketToBufferRelation, RtpBaseDepay2Ext, RtpBaseDepay2Impl, TimestampOffset, @@ -64,7 +64,7 @@ struct State { clock_rate: Option, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpac3depay2", gst::DebugColorFlags::empty(), @@ -85,7 +85,7 @@ impl GstObjectImpl for RtpAc3Depay {} impl ElementImpl for RtpAc3Depay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP AC-3 Audio Depayloader", "Codec/Depayloader/Network/RTP", @@ -98,7 +98,7 @@ impl ElementImpl for RtpAc3Depay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/ac3/pay/imp.rs b/net/rtp/src/ac3/pay/imp.rs index 3528f036..b6339d8b 100644 --- a/net/rtp/src/ac3/pay/imp.rs +++ b/net/rtp/src/ac3/pay/imp.rs @@ -47,7 +47,7 @@ use std::sync::{Arc, Mutex}; use gst::{glib, prelude::*, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::basepay::{ PacketToBufferRelation, RtpBasePay2Ext, RtpBasePay2Impl, RtpBasePay2ImplExt, TimestampOffset, @@ -124,7 +124,7 @@ struct State { max_ptime: Option, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpac3pay2", gst::DebugColorFlags::empty(), @@ -141,7 +141,7 @@ impl ObjectSubclass for RtpAc3Pay { impl ObjectImpl for RtpAc3Pay { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecEnum::builder_with_default("aggregate-mode", Settings::default().aggregate_mode) .nick("Aggregate Mode") @@ -217,7 +217,7 @@ impl GstObjectImpl for RtpAc3Pay {} impl ElementImpl for RtpAc3Pay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP AC-3 Audio Payloader", "Codec/Payloader/Network/RTP", @@ -230,7 +230,7 @@ impl ElementImpl for RtpAc3Pay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/av1/common/obu.rs b/net/rtp/src/av1/common/obu.rs index c9e406a0..faedaca5 100644 --- a/net/rtp/src/av1/common/obu.rs +++ b/net/rtp/src/av1/common/obu.rs @@ -235,89 +235,90 @@ impl From for u8 { mod tests { use super::*; use bitstream_io::{BigEndian, BitRead, BitReader}; - use once_cell::sync::Lazy; use std::io::Cursor; + use std::sync::LazyLock; #[allow(clippy::type_complexity)] - static OBUS: Lazy, u64, UnsizedObu, Vec)>> = Lazy::new(|| { - vec![ - ( - SizedObu { - obu_type: ObuType::TemporalDelimiter, - has_extension: false, - has_size_field: true, - temporal_id: 0, - spatial_id: 0, - size: 0, - leb_size: 1, - header_len: 1, - is_fragment: false, - }, - vec![0b0001_0010, 0b0000_0000], - 2, - UnsizedObu { - obu_type: ObuType::TemporalDelimiter, - has_extension: false, - temporal_id: 0, - spatial_id: 0, - header_len: 1, - is_fragment: false, - size: None, - }, - vec![0b0001_0000], - ), - ( - SizedObu { - obu_type: ObuType::Padding, - has_extension: false, - has_size_field: true, - temporal_id: 0, - spatial_id: 0, - size: 10, - leb_size: 1, - header_len: 1, - is_fragment: false, - }, - vec![0b0111_1010, 0b0000_1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - 2, - UnsizedObu { - obu_type: ObuType::Padding, - has_extension: false, - temporal_id: 0, - spatial_id: 0, - header_len: 1, - is_fragment: false, - size: None, - }, - vec![0b0111_1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - ), - ( - SizedObu { - obu_type: ObuType::Frame, - has_extension: true, - has_size_field: true, - temporal_id: 4, - spatial_id: 3, - size: 5, - leb_size: 1, - header_len: 2, - is_fragment: false, - }, - vec![0b0011_0110, 0b1001_1000, 0b0000_0101, 1, 2, 3, 4, 5], - 3, - UnsizedObu { - obu_type: ObuType::Frame, - has_extension: true, - temporal_id: 4, - spatial_id: 3, - header_len: 2, - is_fragment: false, - size: None, - }, - vec![0b0011_0100, 0b1001_1000, 1, 2, 3, 4, 5], - ), - ] - }); + static OBUS: LazyLock, u64, UnsizedObu, Vec)>> = + LazyLock::new(|| { + vec![ + ( + SizedObu { + obu_type: ObuType::TemporalDelimiter, + has_extension: false, + has_size_field: true, + temporal_id: 0, + spatial_id: 0, + size: 0, + leb_size: 1, + header_len: 1, + is_fragment: false, + }, + vec![0b0001_0010, 0b0000_0000], + 2, + UnsizedObu { + obu_type: ObuType::TemporalDelimiter, + has_extension: false, + temporal_id: 0, + spatial_id: 0, + header_len: 1, + is_fragment: false, + size: None, + }, + vec![0b0001_0000], + ), + ( + SizedObu { + obu_type: ObuType::Padding, + has_extension: false, + has_size_field: true, + temporal_id: 0, + spatial_id: 0, + size: 10, + leb_size: 1, + header_len: 1, + is_fragment: false, + }, + vec![0b0111_1010, 0b0000_1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 2, + UnsizedObu { + obu_type: ObuType::Padding, + has_extension: false, + temporal_id: 0, + spatial_id: 0, + header_len: 1, + is_fragment: false, + size: None, + }, + vec![0b0111_1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + ), + ( + SizedObu { + obu_type: ObuType::Frame, + has_extension: true, + has_size_field: true, + temporal_id: 4, + spatial_id: 3, + size: 5, + leb_size: 1, + header_len: 2, + is_fragment: false, + }, + vec![0b0011_0110, 0b1001_1000, 0b0000_0101, 1, 2, 3, 4, 5], + 3, + UnsizedObu { + obu_type: ObuType::Frame, + has_extension: true, + temporal_id: 4, + spatial_id: 3, + header_len: 2, + is_fragment: false, + size: None, + }, + vec![0b0011_0100, 0b1001_1000, 1, 2, 3, 4, 5], + ), + ] + }); #[test] fn test_parse() { diff --git a/net/rtp/src/av1/depay/imp.rs b/net/rtp/src/av1/depay/imp.rs index 0cd54dee..f4d22d04 100644 --- a/net/rtp/src/av1/depay/imp.rs +++ b/net/rtp/src/av1/depay/imp.rs @@ -17,7 +17,7 @@ use std::{ }; use bitstream_io::{BitReader, BitWriter}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::{ av1::common::{ @@ -73,7 +73,7 @@ pub struct RTPAv1Depay { settings: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpav1depay", gst::DebugColorFlags::empty(), @@ -100,7 +100,7 @@ impl ObjectSubclass for RTPAv1Depay { impl ObjectImpl for RTPAv1Depay { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoolean::builder("request-keyframe") .nick("Request Keyframe") @@ -145,7 +145,7 @@ impl GstObjectImpl for RTPAv1Depay {} impl ElementImpl for RTPAv1Depay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP AV1 Depayloader", "Codec/Depayloader/Network/RTP", @@ -158,7 +158,7 @@ impl ElementImpl for RTPAv1Depay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/av1/pay/imp.rs b/net/rtp/src/av1/pay/imp.rs index 797e3252..3eee85aa 100644 --- a/net/rtp/src/av1/pay/imp.rs +++ b/net/rtp/src/av1/pay/imp.rs @@ -15,14 +15,14 @@ use std::{ }; use bitstream_io::{BitReader, BitWriter}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::{ av1::common::{err_flow, leb128_size, write_leb128, ObuType, SizedObu, CLOCK_RATE, ENDIANNESS}, basepay::{PacketToBufferRelation, RtpBasePay2Ext}, }; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpav1pay", gst::DebugColorFlags::empty(), @@ -504,7 +504,7 @@ impl GstObjectImpl for RTPAv1Pay {} impl ElementImpl for RTPAv1Pay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP AV1 payloader", "Codec/Payloader/Network/RTP", @@ -517,7 +517,7 @@ impl ElementImpl for RTPAv1Pay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/baseaudiopay/imp.rs b/net/rtp/src/baseaudiopay/imp.rs index 9af5c751..b5a748bb 100644 --- a/net/rtp/src/baseaudiopay/imp.rs +++ b/net/rtp/src/baseaudiopay/imp.rs @@ -12,7 +12,7 @@ use std::{cmp, collections::VecDeque, sync::Mutex}; use atomic_refcell::AtomicRefCell; use gst::{glib, prelude::*, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::{ audio_discont::{AudioDiscont, AudioDiscontConfiguration}, @@ -72,7 +72,7 @@ pub struct RtpBaseAudioPay2 { state: AtomicRefCell, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpbaseaudiopay2", gst::DebugColorFlags::empty(), @@ -90,7 +90,7 @@ impl ObjectSubclass for RtpBaseAudioPay2 { impl ObjectImpl for RtpBaseAudioPay2 { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { let mut properties = vec![ // Using same type/semantics as C payloaders glib::ParamSpecInt64::builder("max-ptime") diff --git a/net/rtp/src/basedepay/imp.rs b/net/rtp/src/basedepay/imp.rs index ff941ad5..052bb10f 100644 --- a/net/rtp/src/basedepay/imp.rs +++ b/net/rtp/src/basedepay/imp.rs @@ -11,7 +11,7 @@ use atomic_refcell::AtomicRefCell; use gst::{glib, prelude::*, subclass::prelude::*}; use gst_rtp::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::{ collections::{BTreeMap, VecDeque}, @@ -21,7 +21,7 @@ use std::{ use super::{PacketToBufferRelation, TimestampOffset}; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpbasedepay2", gst::DebugColorFlags::empty(), @@ -1886,7 +1886,7 @@ impl ObjectSubclass for RtpBaseDepay2 { impl ObjectImpl for RtpBaseDepay2 { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoxed::builder::("stats") .nick("Statistics") @@ -1931,7 +1931,7 @@ impl ObjectImpl for RtpBaseDepay2 { } fn signals() -> &'static [glib::subclass::Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![ glib::subclass::Signal::builder("add-extension") .action() diff --git a/net/rtp/src/basepay/imp.rs b/net/rtp/src/basepay/imp.rs index d5816da5..f21add7e 100644 --- a/net/rtp/src/basepay/imp.rs +++ b/net/rtp/src/basepay/imp.rs @@ -11,8 +11,8 @@ use atomic_refcell::AtomicRefCell; use gst::{glib, prelude::*, subclass::prelude::*}; use gst_rtp::prelude::*; -use once_cell::sync::Lazy; use smallvec::SmallVec; +use std::sync::LazyLock; use std::{ collections::{BTreeMap, VecDeque}, @@ -23,7 +23,7 @@ use std::{ use super::PacketToBufferRelation; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpbasepay2", gst::DebugColorFlags::empty(), @@ -1857,7 +1857,7 @@ impl ObjectSubclass for RtpBasePay2 { impl ObjectImpl for RtpBasePay2 { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecUInt::builder("mtu") .nick("MTU") @@ -1969,7 +1969,7 @@ impl ObjectImpl for RtpBasePay2 { } fn signals() -> &'static [glib::subclass::Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![ glib::subclass::Signal::builder("add-extension") .action() diff --git a/net/rtp/src/gcc/imp.rs b/net/rtp/src/gcc/imp.rs index 5023cd1c..b2bc0397 100644 --- a/net/rtp/src/gcc/imp.rs +++ b/net/rtp/src/gcc/imp.rs @@ -18,8 +18,8 @@ * */ use gst::{glib, prelude::*, subclass::prelude::*}; -use once_cell::sync::Lazy; use smallvec::SmallVec; +use std::sync::LazyLock; use std::{ collections::{BTreeMap, VecDeque}, fmt, @@ -37,7 +37,7 @@ const DEFAULT_MIN_BITRATE: Bitrate = 1000; const DEFAULT_ESTIMATED_BITRATE: Bitrate = 2_048_000; const DEFAULT_MAX_BITRATE: Bitrate = 8_192_000; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpgccbwe", gst::DebugColorFlags::empty(), @@ -1269,7 +1269,7 @@ impl ObjectImpl for BandwidthEstimator { } fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ /* * gcc:estimated-bitrate: @@ -1367,7 +1367,7 @@ impl GstObjectImpl for BandwidthEstimator {} impl ElementImpl for BandwidthEstimator { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Google Congestion Control bandwidth estimator", "Network/WebRTC/RTP/Filter", @@ -1381,7 +1381,7 @@ impl ElementImpl for BandwidthEstimator { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder_full() .structure(gst::Structure::builder("application/x-rtp").build()) .build(); diff --git a/net/rtp/src/jpeg/depay/imp.rs b/net/rtp/src/jpeg/depay/imp.rs index 65261685..6493f46e 100644 --- a/net/rtp/src/jpeg/depay/imp.rs +++ b/net/rtp/src/jpeg/depay/imp.rs @@ -30,7 +30,7 @@ use bitstream_io::{BigEndian, ByteRead, ByteReader, ByteWrite as _, ByteWriter}; */ use gst::{glib, prelude::*, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::{ basedepay::{RtpBaseDepay2Ext, RtpBaseDepay2Impl}, @@ -75,7 +75,7 @@ pub struct RtpJpegDepay { state: AtomicRefCell, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpjpegdepay2", gst::DebugColorFlags::empty(), @@ -96,7 +96,7 @@ impl GstObjectImpl for RtpJpegDepay {} impl ElementImpl for RtpJpegDepay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP JPEG Depayloader", "Codec/Depayloader/Network/RTP", @@ -109,7 +109,7 @@ impl ElementImpl for RtpJpegDepay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/jpeg/pay/imp.rs b/net/rtp/src/jpeg/pay/imp.rs index 8b23566d..e468b825 100644 --- a/net/rtp/src/jpeg/pay/imp.rs +++ b/net/rtp/src/jpeg/pay/imp.rs @@ -30,14 +30,14 @@ use smallvec::SmallVec; use std::{cmp, io}; use bitstream_io::{BigEndian, ByteRead as _, ByteReader, ByteWrite as _, ByteWriter}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::{ basepay::RtpBasePay2Ext, jpeg::header::{detect_static_quant_table, JpegHeader, MainHeader, QuantizationTableHeader}, }; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpjpegpay2", gst::DebugColorFlags::empty(), @@ -70,7 +70,7 @@ impl GstObjectImpl for RtpJpegPay {} impl ElementImpl for RtpJpegPay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP JPEG payloader", "Codec/Payloader/Network/RTP", @@ -83,7 +83,7 @@ impl ElementImpl for RtpJpegPay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/klv/depay/imp.rs b/net/rtp/src/klv/depay/imp.rs index 3fded00e..76bfc570 100644 --- a/net/rtp/src/klv/depay/imp.rs +++ b/net/rtp/src/klv/depay/imp.rs @@ -29,7 +29,7 @@ use atomic_refcell::AtomicRefCell; use gst::{glib, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::basedepay::{ Packet, PacketToBufferRelation, RtpBaseDepay2Ext, RtpBaseDepay2Impl, RtpBaseDepay2ImplExt, @@ -67,7 +67,7 @@ impl State { } } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpklvdepay2", gst::DebugColorFlags::empty(), @@ -88,7 +88,7 @@ impl GstObjectImpl for RtpKlvDepay {} impl ElementImpl for RtpKlvDepay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP KLV Metadata Depayloader", "Codec/Depayloader/Network/RTP", @@ -101,7 +101,7 @@ impl ElementImpl for RtpKlvDepay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/klv/pay/imp.rs b/net/rtp/src/klv/pay/imp.rs index a9b23698..84f575b5 100644 --- a/net/rtp/src/klv/pay/imp.rs +++ b/net/rtp/src/klv/pay/imp.rs @@ -30,7 +30,7 @@ */ use gst::{glib, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::basepay::{RtpBasePay2Ext, RtpBasePay2Impl}; @@ -39,7 +39,7 @@ use crate::klv::klv_utils; #[derive(Default)] pub struct RtpKlvPay; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpklvpay2", gst::DebugColorFlags::empty(), @@ -60,7 +60,7 @@ impl GstObjectImpl for RtpKlvPay {} impl ElementImpl for RtpKlvPay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP KLV Metadata Payloader", "Codec/Payloader/Network/RTP", @@ -73,7 +73,7 @@ impl ElementImpl for RtpKlvPay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/mp2t/depay/imp.rs b/net/rtp/src/mp2t/depay/imp.rs index d7924429..398da5f2 100644 --- a/net/rtp/src/mp2t/depay/imp.rs +++ b/net/rtp/src/mp2t/depay/imp.rs @@ -29,7 +29,7 @@ use atomic_refcell::AtomicRefCell; use gst::{glib, prelude::*, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::num::NonZeroUsize; use std::sync::Mutex; @@ -65,7 +65,7 @@ impl Default for Settings { } } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpmp2tdepay2", gst::DebugColorFlags::empty(), @@ -82,7 +82,7 @@ impl ObjectSubclass for RtpMP2TDepay { impl ObjectImpl for RtpMP2TDepay { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecUInt::builder("skip-first-bytes") .nick("Skip first bytes") .blurb("Number of bytes to skip at the beginning of the payload") @@ -118,7 +118,7 @@ impl GstObjectImpl for RtpMP2TDepay {} impl ElementImpl for RtpMP2TDepay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP MPEG-TS Depayloader", "Codec/Depayloader/Network/RTP", @@ -131,7 +131,7 @@ impl ElementImpl for RtpMP2TDepay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/mp2t/pay/imp.rs b/net/rtp/src/mp2t/pay/imp.rs index e770f854..dfc20d6e 100644 --- a/net/rtp/src/mp2t/pay/imp.rs +++ b/net/rtp/src/mp2t/pay/imp.rs @@ -28,7 +28,7 @@ use atomic_refcell::AtomicRefCell; use gst::{glib, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::num::NonZeroUsize; @@ -98,7 +98,7 @@ impl State { } } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpmp2tpay2", gst::DebugColorFlags::empty(), @@ -119,7 +119,7 @@ impl GstObjectImpl for RtpMP2TPay {} impl ElementImpl for RtpMP2TPay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP MPEG-TS Payloader", "Codec/Payloader/Network/RTP", @@ -132,7 +132,7 @@ impl ElementImpl for RtpMP2TPay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_pad_template = gst::PadTemplate::new( "src", gst::PadDirection::Src, diff --git a/net/rtp/src/mp4a/depay/imp.rs b/net/rtp/src/mp4a/depay/imp.rs index 6a6938b7..0e269431 100644 --- a/net/rtp/src/mp4a/depay/imp.rs +++ b/net/rtp/src/mp4a/depay/imp.rs @@ -28,7 +28,7 @@ */ use atomic_refcell::AtomicRefCell; use bitstream_io::{BigEndian, BitRead, BitReader}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use gst::{glib, prelude::*, subclass::prelude::*}; @@ -38,7 +38,7 @@ use crate::basedepay::{Packet, PacketToBufferRelation, RtpBaseDepay2Ext, Timesta use crate::mp4a::parsers::{StreamMuxConfig, Subframes}; use crate::mp4a::{DEFAULT_CLOCK_RATE, ENCODING_NAME}; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpmp4adepay2", gst::DebugColorFlags::empty(), @@ -64,7 +64,7 @@ impl GstObjectImpl for RtpMpeg4AudioDepay {} impl ElementImpl for RtpMpeg4AudioDepay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP MPEG-4 Audio Depayloader", "Codec/Depayloader/Network/RTP", @@ -77,7 +77,7 @@ impl ElementImpl for RtpMpeg4AudioDepay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/mp4a/pay/imp.rs b/net/rtp/src/mp4a/pay/imp.rs index 9cf8b6b6..558f6494 100644 --- a/net/rtp/src/mp4a/pay/imp.rs +++ b/net/rtp/src/mp4a/pay/imp.rs @@ -30,8 +30,8 @@ * Since: plugins-rs-0.13.0 */ use bitstream_io::{BigEndian, BitRead, BitReader, BitWrite, BitWriter}; -use once_cell::sync::Lazy; use smallvec::SmallVec; +use std::sync::LazyLock; use gst::{glib, subclass::prelude::*}; @@ -43,7 +43,7 @@ use crate::mp4a::ENCODING_NAME; #[derive(Default)] pub struct RtpMpeg4AudioPay; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpmp4apay2", gst::DebugColorFlags::empty(), @@ -63,7 +63,7 @@ impl GstObjectImpl for RtpMpeg4AudioPay {} impl ElementImpl for RtpMpeg4AudioPay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP MPEG-4 Audio Payloader", "Codec/Payloader/Network/RTP", @@ -76,7 +76,7 @@ impl ElementImpl for RtpMpeg4AudioPay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/mp4g/depay/imp.rs b/net/rtp/src/mp4g/depay/imp.rs index 510528ad..baa8b993 100644 --- a/net/rtp/src/mp4g/depay/imp.rs +++ b/net/rtp/src/mp4g/depay/imp.rs @@ -28,7 +28,7 @@ */ use anyhow::Context; use atomic_refcell::AtomicRefCell; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use gst::{glib, prelude::*, subclass::prelude::*}; @@ -43,7 +43,7 @@ use super::{ AccessUnit, DeinterleaveAuBuffer, MaybeSingleAuOrList, Mpeg4GenericDepayError, SingleAuOrList, }; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpmp4gdepay2", gst::DebugColorFlags::empty(), @@ -69,7 +69,7 @@ impl GstObjectImpl for RtpMpeg4GenericDepay {} impl ElementImpl for RtpMpeg4GenericDepay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP MPEG-4 Generic ES Depayloader", "Codec/Depayloader/Network/RTP", @@ -82,7 +82,7 @@ impl ElementImpl for RtpMpeg4GenericDepay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/mp4g/pay/imp.rs b/net/rtp/src/mp4g/pay/imp.rs index b1f318b0..594be2fe 100644 --- a/net/rtp/src/mp4g/pay/imp.rs +++ b/net/rtp/src/mp4g/pay/imp.rs @@ -40,7 +40,7 @@ */ use atomic_refcell::AtomicRefCell; use bitstream_io::{BigEndian, BitCounter, BitRead, BitReader, BitWrite, BitWriter}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use gst::{glib, prelude::*, subclass::prelude::*}; use smallvec::SmallVec; @@ -125,7 +125,7 @@ impl State { } } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpmp4gpay2", gst::DebugColorFlags::empty(), @@ -142,7 +142,7 @@ impl ObjectSubclass for RtpMpeg4GenericPay { impl ObjectImpl for RtpMpeg4GenericPay { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecEnum::builder_with_default( "aggregate-mode", @@ -223,7 +223,7 @@ impl GstObjectImpl for RtpMpeg4GenericPay {} impl ElementImpl for RtpMpeg4GenericPay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP MPEG-4 Generic Payloader", "Codec/Payloader/Network/RTP", @@ -236,7 +236,7 @@ impl ElementImpl for RtpMpeg4GenericPay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/opus/depay/imp.rs b/net/rtp/src/opus/depay/imp.rs index 74500b38..6474c26a 100644 --- a/net/rtp/src/opus/depay/imp.rs +++ b/net/rtp/src/opus/depay/imp.rs @@ -28,14 +28,14 @@ */ use gst::{glib, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::basedepay::{RtpBaseDepay2Ext, RtpBaseDepay2Impl}; #[derive(Default)] pub struct RtpOpusDepay {} -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpopusdepay2", gst::DebugColorFlags::empty(), @@ -56,7 +56,7 @@ impl GstObjectImpl for RtpOpusDepay {} impl ElementImpl for RtpOpusDepay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP Opus Depayloader", "Codec/Depayloader/Network/RTP", @@ -69,7 +69,7 @@ impl ElementImpl for RtpOpusDepay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/opus/pay/imp.rs b/net/rtp/src/opus/pay/imp.rs index 48e91a0f..da87ce20 100644 --- a/net/rtp/src/opus/pay/imp.rs +++ b/net/rtp/src/opus/pay/imp.rs @@ -39,7 +39,7 @@ use atomic_refcell::AtomicRefCell; use gst::{glib, prelude::*, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::basepay::{RtpBasePay2Ext, RtpBasePay2Impl, RtpBasePay2ImplExt}; @@ -79,7 +79,7 @@ pub struct RtpOpusPay { settings: Settings, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpopuspay2", gst::DebugColorFlags::empty(), @@ -96,7 +96,7 @@ impl ObjectSubclass for RtpOpusPay { impl ObjectImpl for RtpOpusPay { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecBoolean::builder("dtx") .nick("Discontinuous Transmission") .blurb("Do not send out empty packets for transmission (requires opusenc dtx=true)") @@ -133,7 +133,7 @@ impl GstObjectImpl for RtpOpusPay {} impl ElementImpl for RtpOpusPay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP Opus Payloader", "Codec/Payloader/Network/RTP", @@ -146,7 +146,7 @@ impl ElementImpl for RtpOpusPay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/pcmau/depay/imp.rs b/net/rtp/src/pcmau/depay/imp.rs index 71e4c6ca..6c9f6ddf 100644 --- a/net/rtp/src/pcmau/depay/imp.rs +++ b/net/rtp/src/pcmau/depay/imp.rs @@ -10,7 +10,7 @@ use atomic_refcell::AtomicRefCell; use gst::{glib, prelude::*, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::basedepay::RtpBaseDepay2Ext; @@ -24,7 +24,7 @@ struct State { clock_rate: Option, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtppcmaudepay2", gst::DebugColorFlags::empty(), @@ -133,7 +133,7 @@ impl GstObjectImpl for RtpPcmaDepay {} impl ElementImpl for RtpPcmaDepay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP PCMA Depayloader", "Codec/Depayloader/Network/RTP", @@ -146,7 +146,7 @@ impl ElementImpl for RtpPcmaDepay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, @@ -226,7 +226,7 @@ impl GstObjectImpl for RtpPcmuDepay {} impl ElementImpl for RtpPcmuDepay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP PCMU Depayloader", "Codec/Depayloader/Network/RTP", @@ -239,7 +239,7 @@ impl ElementImpl for RtpPcmuDepay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/pcmau/pay/imp.rs b/net/rtp/src/pcmau/pay/imp.rs index 4f26c488..d693ebd6 100644 --- a/net/rtp/src/pcmau/pay/imp.rs +++ b/net/rtp/src/pcmau/pay/imp.rs @@ -9,7 +9,7 @@ use gst::{glib, prelude::*, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::{ baseaudiopay::RtpBaseAudioPay2Ext, @@ -121,7 +121,7 @@ impl GstObjectImpl for RtpPcmaPay {} impl ElementImpl for RtpPcmaPay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP PCMA Payloader", "Codec/Payloader/Network/RTP", @@ -134,7 +134,7 @@ impl ElementImpl for RtpPcmaPay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, @@ -218,7 +218,7 @@ impl GstObjectImpl for RtpPcmuPay {} impl ElementImpl for RtpPcmuPay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP PCMU Payloader", "Codec/Payloader/Network/RTP", @@ -231,7 +231,7 @@ impl ElementImpl for RtpPcmuPay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/rtpbin2/config.rs b/net/rtp/src/rtpbin2/config.rs index debb4c10..42cdd959 100644 --- a/net/rtp/src/rtpbin2/config.rs +++ b/net/rtp/src/rtpbin2/config.rs @@ -3,12 +3,12 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::{Mutex, Weak}; use crate::rtpbin2::internal::SharedSessionInner; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtp2-config", gst::DebugColorFlags::empty(), @@ -113,7 +113,7 @@ mod imp { impl ObjectImpl for Rtp2Session { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecBoxed::builder::("pt-map") .nick("RTP Payload Type Map") .blurb("Mapping of RTP payload type to caps") @@ -143,7 +143,7 @@ mod imp { } fn signals() -> &'static [glib::subclass::Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![ glib::subclass::Signal::builder("new-ssrc") .param_types([u32::static_type()]) diff --git a/net/rtp/src/rtpbin2/internal.rs b/net/rtp/src/rtpbin2/internal.rs index 033311a8..4188bed3 100644 --- a/net/rtp/src/rtpbin2/internal.rs +++ b/net/rtp/src/rtpbin2/internal.rs @@ -8,13 +8,13 @@ use std::{ }; use gst::glib; -use once_cell::sync::{Lazy, OnceCell}; +use std::sync::{LazyLock, OnceLock}; use super::config::Rtp2Session; use super::session::{RtpProfile, Session}; use super::source::ReceivedRb; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpinternalsession", gst::DebugColorFlags::empty(), @@ -22,7 +22,7 @@ static CAT: Lazy = Lazy::new(|| { ) }); -static SHARED_RTP_STATE: OnceCell>> = OnceCell::new(); +static SHARED_RTP_STATE: OnceLock>> = OnceLock::new(); #[derive(Debug, Clone)] pub struct SharedRtpState { @@ -369,7 +369,7 @@ pub fn pt_clock_rate_from_caps(caps: &gst::CapsRef) -> Option<(u8, u32)> { } } -static RUST_CAT: Lazy = Lazy::new(|| { +static RUST_CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rust-log", gst::DebugColorFlags::empty(), @@ -377,7 +377,7 @@ static RUST_CAT: Lazy = Lazy::new(|| { ) }); -static GST_RUST_LOGGER_ONCE: once_cell::sync::OnceCell<()> = once_cell::sync::OnceCell::new(); +static GST_RUST_LOGGER_ONCE: std::sync::OnceLock<()> = std::sync::OnceLock::new(); static GST_RUST_LOGGER: GstRustLogger = GstRustLogger {}; pub(crate) struct GstRustLogger {} diff --git a/net/rtp/src/rtpbin2/mod.rs b/net/rtp/src/rtpbin2/mod.rs index e2dd7e5c..e1a22e2c 100644 --- a/net/rtp/src/rtpbin2/mod.rs +++ b/net/rtp/src/rtpbin2/mod.rs @@ -2,7 +2,7 @@ use gst::glib; use gst::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; mod config; mod internal; mod jitterbuffer; @@ -44,7 +44,7 @@ pub fn register(plugin: &gst::Plugin) -> Result<(), glib::BoolError> { ) } -pub static RUNTIME: Lazy = Lazy::new(|| { +pub static RUNTIME: LazyLock = LazyLock::new(|| { tokio::runtime::Builder::new_multi_thread() .enable_time() .worker_threads(1) diff --git a/net/rtp/src/rtpbin2/rtprecv.rs b/net/rtp/src/rtpbin2/rtprecv.rs index 82459ab5..bcd6711d 100644 --- a/net/rtp/src/rtpbin2/rtprecv.rs +++ b/net/rtp/src/rtpbin2/rtprecv.rs @@ -10,7 +10,7 @@ use std::time::{Duration, Instant, SystemTime}; use futures::StreamExt; use gst::{glib, prelude::*, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use super::internal::{pt_clock_rate_from_caps, GstRustLogger, SharedRtpState, SharedSession}; use super::jitterbuffer::{self, JitterBuffer}; @@ -25,7 +25,7 @@ use crate::rtpbin2::RUNTIME; const DEFAULT_LATENCY: gst::ClockTime = gst::ClockTime::from_mseconds(200); -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtprecv", gst::DebugColorFlags::empty(), @@ -1572,7 +1572,7 @@ impl ObjectSubclass for RtpRecv { impl ObjectImpl for RtpRecv { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("rtp-id") .nick("The RTP Connection ID") @@ -1654,7 +1654,7 @@ impl ObjectImpl for RtpRecv { } fn signals() -> &'static [glib::subclass::Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![glib::subclass::Signal::builder("get-session") .param_types([u32::static_type()]) .return_type::() @@ -1679,7 +1679,7 @@ impl GstObjectImpl for RtpRecv {} impl ElementImpl for RtpRecv { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP Session receiver", "Network/RTP/Filter", @@ -1692,7 +1692,7 @@ impl ElementImpl for RtpRecv { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let rtp_caps = gst::Caps::builder_full() .structure(gst::Structure::builder("application/x-rtp").build()) .build(); diff --git a/net/rtp/src/rtpbin2/rtpsend.rs b/net/rtp/src/rtpbin2/rtpsend.rs index f3c4cd57..a6251ab5 100644 --- a/net/rtp/src/rtpbin2/rtpsend.rs +++ b/net/rtp/src/rtpbin2/rtpsend.rs @@ -9,7 +9,7 @@ use std::time::{Duration, Instant, SystemTime}; use futures::future::{AbortHandle, Abortable}; use futures::StreamExt; use gst::{glib, prelude::*, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use super::internal::{pt_clock_rate_from_caps, GstRustLogger, SharedRtpState, SharedSession}; use super::session::{RtcpSendReply, RtpProfile, SendReply, RTCP_MIN_REPORT_INTERVAL}; @@ -20,7 +20,7 @@ use crate::rtpbin2::RUNTIME; const DEFAULT_MIN_RTCP_INTERVAL: Duration = RTCP_MIN_REPORT_INTERVAL; const DEFAULT_REDUCED_SIZE_RTCP: bool = false; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpsend", gst::DebugColorFlags::empty(), @@ -503,7 +503,7 @@ impl ObjectSubclass for RtpSend { impl ObjectImpl for RtpSend { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("rtp-id") .nick("The RTP Connection ID") @@ -590,7 +590,7 @@ impl ObjectImpl for RtpSend { } fn signals() -> &'static [glib::subclass::Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![glib::subclass::Signal::builder("get-session") .param_types([u32::static_type()]) .return_type::() @@ -615,7 +615,7 @@ impl GstObjectImpl for RtpSend {} impl ElementImpl for RtpSend { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP Session Sender", "Network/RTP/Filter", @@ -628,7 +628,7 @@ impl ElementImpl for RtpSend { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let rtp_caps = gst::Caps::builder_full() .structure(gst::Structure::builder("application/x-rtp").build()) .build(); diff --git a/net/rtp/src/rtpbin2/source.rs b/net/rtp/src/rtpbin2/source.rs index a4f0f22e..d636dafe 100644 --- a/net/rtp/src/rtpbin2/source.rs +++ b/net/rtp/src/rtpbin2/source.rs @@ -433,7 +433,7 @@ pub struct RemoteSendSource { } // The first time we recev a packet for jitter calculations -static INITIAL_RECV_TIME: once_cell::sync::OnceCell = once_cell::sync::OnceCell::new(); +static INITIAL_RECV_TIME: std::sync::OnceLock = std::sync::OnceLock::new(); impl RemoteSendSource { pub fn new(ssrc: u32) -> Self { diff --git a/net/rtp/src/vp8/depay/imp.rs b/net/rtp/src/vp8/depay/imp.rs index 55c3cfc0..60659957 100644 --- a/net/rtp/src/vp8/depay/imp.rs +++ b/net/rtp/src/vp8/depay/imp.rs @@ -33,7 +33,7 @@ use bitstream_io::{BigEndian, ByteRead as _, ByteReader}; use gst::{glib, prelude::*, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::basedepay::{PacketToBufferRelation, RtpBaseDepay2Ext}; use crate::vp8::frame_header::UncompressedFrameHeader; @@ -93,7 +93,7 @@ pub struct RtpVp8Depay { settings: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpvp8depay2", gst::DebugColorFlags::empty(), @@ -118,7 +118,7 @@ impl ObjectSubclass for RtpVp8Depay { impl ObjectImpl for RtpVp8Depay { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoolean::builder("request-keyframe") .nick("Request Keyframe") @@ -163,7 +163,7 @@ impl GstObjectImpl for RtpVp8Depay {} impl ElementImpl for RtpVp8Depay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP VP8 Depayloader", "Codec/Depayloader/Network/RTP", @@ -176,7 +176,7 @@ impl ElementImpl for RtpVp8Depay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/vp8/pay/imp.rs b/net/rtp/src/vp8/pay/imp.rs index 3851b815..615189f8 100644 --- a/net/rtp/src/vp8/pay/imp.rs +++ b/net/rtp/src/vp8/pay/imp.rs @@ -30,7 +30,7 @@ use smallvec::SmallVec; use std::{cmp, sync::Mutex}; use bitstream_io::{BigEndian, ByteWrite as _, ByteWriter}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::{ basepay::{RtpBasePay2Ext, RtpBasePay2ImplExt}, @@ -40,7 +40,7 @@ use crate::{ }, }; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpvp8pay2", gst::DebugColorFlags::empty(), @@ -82,7 +82,7 @@ impl ObjectSubclass for RtpVp8Pay { impl ObjectImpl for RtpVp8Pay { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecEnum::builder::("picture-id-mode") .nick("Picture ID Mode") @@ -169,7 +169,7 @@ impl GstObjectImpl for RtpVp8Pay {} impl ElementImpl for RtpVp8Pay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP VP8 payloader", "Codec/Payloader/Network/RTP", @@ -182,7 +182,7 @@ impl ElementImpl for RtpVp8Pay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/vp9/depay/imp.rs b/net/rtp/src/vp9/depay/imp.rs index 612fa5a5..acbdd7b1 100644 --- a/net/rtp/src/vp9/depay/imp.rs +++ b/net/rtp/src/vp9/depay/imp.rs @@ -33,7 +33,7 @@ use bitstream_io::{BigEndian, BitRead as _, BitReader, ByteRead as _, ByteReader use gst::{glib, prelude::*, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::basedepay::{PacketToBufferRelation, RtpBaseDepay2Ext}; use crate::vp9::frame_header::FrameHeader; @@ -108,7 +108,7 @@ pub struct RtpVp9Depay { settings: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpvp9depay2", gst::DebugColorFlags::empty(), @@ -133,7 +133,7 @@ impl ObjectSubclass for RtpVp9Depay { impl ObjectImpl for RtpVp9Depay { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoolean::builder("request-keyframe") .nick("Request Keyframe") @@ -178,7 +178,7 @@ impl GstObjectImpl for RtpVp9Depay {} impl ElementImpl for RtpVp9Depay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP VP9 Depayloader", "Codec/Depayloader/Network/RTP", @@ -191,7 +191,7 @@ impl ElementImpl for RtpVp9Depay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtp/src/vp9/pay/imp.rs b/net/rtp/src/vp9/pay/imp.rs index 12d457c1..80fe34d8 100644 --- a/net/rtp/src/vp9/pay/imp.rs +++ b/net/rtp/src/vp9/pay/imp.rs @@ -29,7 +29,7 @@ use smallvec::SmallVec; use std::{cmp, sync::Mutex}; use bitstream_io::{BigEndian, BitRead as _, BitReader, ByteWrite as _, ByteWriter}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::{ basepay::{RtpBasePay2Ext, RtpBasePay2ImplExt}, @@ -39,7 +39,7 @@ use crate::{ }, }; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtpvp9pay2", gst::DebugColorFlags::empty(), @@ -72,7 +72,7 @@ impl ObjectSubclass for RtpVp9Pay { impl ObjectImpl for RtpVp9Pay { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecEnum::builder::("picture-id-mode") .nick("Picture ID Mode") @@ -149,7 +149,7 @@ impl GstObjectImpl for RtpVp9Pay {} impl ElementImpl for RtpVp9Pay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTP VP9 payloader", "Codec/Payloader/Network/RTP", @@ -162,7 +162,7 @@ impl ElementImpl for RtpVp9Pay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_pad_template = gst::PadTemplate::new( "sink", gst::PadDirection::Sink, diff --git a/net/rtsp/Cargo.toml b/net/rtsp/Cargo.toml index af1a63e4..14026381 100644 --- a/net/rtsp/Cargo.toml +++ b/net/rtsp/Cargo.toml @@ -17,7 +17,6 @@ gst = { workspace = true, features = ["v1_20"] } gst-app = { workspace = true, features = ["v1_20"] } gst-net = { workspace = true, features = ["v1_20"] } gst-pbutils = { workspace = true, features = ["v1_20"] } -once_cell.workspace = true lru = "0.12" rtsp-types = "0.1" sdp-types = "0.1" diff --git a/net/rtsp/src/rtspsrc/imp.rs b/net/rtsp/src/rtspsrc/imp.rs index 15d2140d..5cc2e802 100644 --- a/net/rtsp/src/rtspsrc/imp.rs +++ b/net/rtsp/src/rtspsrc/imp.rs @@ -21,7 +21,7 @@ use std::sync::Mutex; use std::time::Duration; use anyhow::Result; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use futures::{Sink, SinkExt, Stream, StreamExt}; use socket2::Socket; @@ -65,8 +65,8 @@ const MAX_BIND_PORT_RETRY: u16 = 100; const UDP_PACKET_MAX_SIZE: u32 = 65535 - 8; const RTCP_ADDR_CACHE_SIZE: usize = 100; -static RTCP_CAPS: Lazy = - Lazy::new(|| gst::Caps::from(gst::Structure::new_empty("application/x-rtcp"))); +static RTCP_CAPS: LazyLock = + LazyLock::new(|| gst::Caps::from(gst::Structure::new_empty("application/x-rtcp"))); // Hardcoded for now const DEFAULT_USER_AGENT: &str = concat!( @@ -147,7 +147,7 @@ pub enum RtspError { Fatal(String), } -pub(crate) static CAT: Lazy = Lazy::new(|| { +pub(crate) static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rtspsrc2", gst::DebugColorFlags::empty(), @@ -155,7 +155,7 @@ pub(crate) static CAT: Lazy = Lazy::new(|| { ) }); -static RUNTIME: Lazy = Lazy::new(|| { +static RUNTIME: LazyLock = LazyLock::new(|| { runtime::Builder::new_multi_thread() .enable_all() .worker_threads(1) @@ -270,7 +270,7 @@ impl RtspSrc { impl ObjectImpl for RtspSrc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecUInt::builder("receive-mtu") .nick("Receive packet size") @@ -409,7 +409,7 @@ impl GstObjectImpl for RtspSrc {} impl ElementImpl for RtspSrc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RTSP Source", "Source/Network", @@ -422,7 +422,7 @@ impl ElementImpl for RtspSrc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_pad_template = gst::PadTemplate::new( "stream_%u", gst::PadDirection::Src, diff --git a/net/webrtc/Cargo.toml b/net/webrtc/Cargo.toml index 4dc2fde8..7058809e 100644 --- a/net/webrtc/Cargo.toml +++ b/net/webrtc/Cargo.toml @@ -36,7 +36,6 @@ fastrand = "2.0" gst_plugin_webrtc_protocol = { path="protocol", package = "gst-plugin-webrtc-signalling-protocol" } gst_plugin_webrtc_signalling = { path="signalling", package = "gst-plugin-webrtc-signalling" } human_bytes = "0.4" -once_cell.workspace = true rand = "0.8" url = "2" diff --git a/net/webrtc/examples/webrtcsink-custom-signaller/signaller/imp.rs b/net/webrtc/examples/webrtcsink-custom-signaller/signaller/imp.rs index 363702e9..ab0a753e 100644 --- a/net/webrtc/examples/webrtcsink-custom-signaller/signaller/imp.rs +++ b/net/webrtc/examples/webrtcsink-custom-signaller/signaller/imp.rs @@ -5,7 +5,7 @@ use gst_webrtc::WebRTCSessionDescription; use gstrswebrtc::signaller::{Signallable, SignallableImpl}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; #[derive(Default)] pub struct Signaller {} @@ -50,7 +50,7 @@ impl ObjectSubclass for Signaller { impl ObjectImpl for Signaller { fn properties() -> &'static [glib::ParamSpec] { - static PROPS: Lazy> = Lazy::new(|| { + static PROPS: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecBoolean::builder("manual-sdp-munging") .nick("Manual SDP munging") .blurb("Whether the signaller manages SDP munging itself") diff --git a/net/webrtc/src/aws_kvs_signaller/imp.rs b/net/webrtc/src/aws_kvs_signaller/imp.rs index ce46113d..ee346cc9 100644 --- a/net/webrtc/src/aws_kvs_signaller/imp.rs +++ b/net/webrtc/src/aws_kvs_signaller/imp.rs @@ -10,8 +10,8 @@ use futures::prelude::*; use gst::glib; use gst::glib::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; use std::path::PathBuf; +use std::sync::LazyLock; use std::sync::Mutex; use tokio::task; @@ -34,10 +34,10 @@ const DEFAULT_AWS_REGION: &str = "us-east-1"; const DEFAULT_PING_TIMEOUT: i32 = 30; #[allow(deprecated)] -pub static AWS_BEHAVIOR_VERSION: Lazy = - Lazy::new(aws_config::BehaviorVersion::v2023_11_09); +pub static AWS_BEHAVIOR_VERSION: LazyLock = + LazyLock::new(aws_config::BehaviorVersion::v2023_11_09); -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "webrtc-aws-kvs-signaller", gst::DebugColorFlags::empty(), @@ -654,7 +654,7 @@ impl ObjectSubclass for Signaller { impl ObjectImpl for Signaller { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoolean::builder("manual-sdp-munging") .nick("Manual SDP munging") diff --git a/net/webrtc/src/janusvr_signaller/imp.rs b/net/webrtc/src/janusvr_signaller/imp.rs index bbe07fd5..48dde814 100644 --- a/net/webrtc/src/janusvr_signaller/imp.rs +++ b/net/webrtc/src/janusvr_signaller/imp.rs @@ -16,16 +16,16 @@ use gst::glib::{subclass::Signal, Properties}; use gst::prelude::*; use gst::subclass::prelude::*; use http::Uri; -use once_cell::sync::Lazy; use rand::prelude::*; use serde::{Deserialize, Serialize}; use std::ops::ControlFlow; +use std::sync::LazyLock; use std::sync::Mutex; use std::time::Duration; use tokio::{task, time::timeout}; use tungstenite::Message as WsMessage; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "webrtc-janusvr-signaller", gst::DebugColorFlags::empty(), @@ -896,7 +896,7 @@ impl ObjectSubclass for Signaller { #[glib::derived_properties] impl ObjectImpl for Signaller { fn signals() -> &'static [glib::subclass::Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![ /** * GstJanusVRWebRTCSignaller::state-updated: @@ -941,7 +941,7 @@ pub mod signaller_u64 { #[glib::derived_properties] impl ObjectImpl for SignallerU64 { fn signals() -> &'static [Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![ /** * GstJanusVRWebRTCSignallerU64::talking: @@ -1032,7 +1032,7 @@ pub mod signaller_str { #[glib::derived_properties] impl ObjectImpl for SignallerStr { fn signals() -> &'static [Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![ /** * GstJanusVRWebRTCSignallerStr::talking: diff --git a/net/webrtc/src/lib.rs b/net/webrtc/src/lib.rs index cb8e993b..9f6ee8c4 100644 --- a/net/webrtc/src/lib.rs +++ b/net/webrtc/src/lib.rs @@ -11,7 +11,7 @@ * Since: plugins-rs-0.9 */ use gst::glib; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use tokio::runtime; #[cfg(feature = "aws")] @@ -46,7 +46,7 @@ gst::plugin_define!( env!("BUILD_REL_DATE") ); -pub static RUNTIME: Lazy = Lazy::new(|| { +pub static RUNTIME: LazyLock = LazyLock::new(|| { runtime::Builder::new_multi_thread() .enable_all() .worker_threads(1) diff --git a/net/webrtc/src/livekit_signaller/imp.rs b/net/webrtc/src/livekit_signaller/imp.rs index 1d8c68f2..1ff934d7 100644 --- a/net/webrtc/src/livekit_signaller/imp.rs +++ b/net/webrtc/src/livekit_signaller/imp.rs @@ -10,10 +10,10 @@ use futures::executor::block_on; use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; use serde::{Deserialize, Serialize}; use std::collections::HashMap; use std::str::FromStr; +use std::sync::LazyLock; use std::sync::{Arc, Mutex}; use tokio::sync::oneshot; use tokio::task::JoinHandle; @@ -22,7 +22,7 @@ use livekit_api::access_token::{AccessToken, VideoGrants}; use livekit_api::signal_client; use livekit_protocol::{self as proto, UpdateTrackSettings}; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "webrtc-livekit-signaller", gst::DebugColorFlags::empty(), @@ -823,7 +823,7 @@ impl ObjectSubclass for Signaller { impl ObjectImpl for Signaller { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoolean::builder("manual-sdp-munging") .nick("Manual SDP munging") diff --git a/net/webrtc/src/signaller/iface.rs b/net/webrtc/src/signaller/iface.rs index cb1ef826..4624f280 100644 --- a/net/webrtc/src/signaller/iface.rs +++ b/net/webrtc/src/signaller/iface.rs @@ -2,7 +2,7 @@ use gst::glib; use gst::glib::subclass::*; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; #[derive(Copy, Clone)] #[repr(C)] @@ -59,7 +59,7 @@ impl prelude::ObjectInterface for Signallable { } fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecBoolean::builder("manual-sdp-munging") .nick("Manual SDP munging") .blurb("Whether the signaller manages SDP munging itself") @@ -72,7 +72,7 @@ impl prelude::ObjectInterface for Signallable { } fn signals() -> &'static [Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![ /** * GstRSWebRTCSignallableIface::session-ended: diff --git a/net/webrtc/src/signaller/imp.rs b/net/webrtc/src/signaller/imp.rs index ea9950d5..2aae4a3a 100644 --- a/net/webrtc/src/signaller/imp.rs +++ b/net/webrtc/src/signaller/imp.rs @@ -13,10 +13,10 @@ use gst::glib; use gst::glib::prelude::*; use gst::subclass::prelude::*; use gst_plugin_webrtc_protocol as p; -use once_cell::sync::Lazy; use std::collections::{HashMap, HashSet}; use std::ops::ControlFlow; use std::str::FromStr; +use std::sync::LazyLock; use std::sync::Mutex; use std::time::Duration; use tokio::{task, time::timeout}; @@ -540,7 +540,7 @@ impl ObjectSubclass for Signaller { impl ObjectImpl for Signaller { fn properties() -> &'static [glib::ParamSpec] { - static PROPS: Lazy> = Lazy::new(|| { + static PROPS: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoolean::builder("manual-sdp-munging") .nick("Manual SDP munging") diff --git a/net/webrtc/src/signaller/mod.rs b/net/webrtc/src/signaller/mod.rs index 245a1587..64bb90f5 100644 --- a/net/webrtc/src/signaller/mod.rs +++ b/net/webrtc/src/signaller/mod.rs @@ -8,7 +8,7 @@ use gst::glib; * * Interface that WebRTC elements can implement their own protocol with. */ -use once_cell::sync::Lazy; +use std::sync::LazyLock; // Expose traits and objects from the module itself so it exactly looks like // generated bindings pub use imp::WebRTCSignallerRole; @@ -16,7 +16,7 @@ pub mod prelude { pub use {super::SignallableExt, super::SignallableImpl}; } -pub static CAT: Lazy = Lazy::new(|| { +pub static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "webrtc-signaller", gst::DebugColorFlags::empty(), diff --git a/net/webrtc/src/utils.rs b/net/webrtc/src/utils.rs index 0bd0fae9..32b4e210 100644 --- a/net/webrtc/src/utils.rs +++ b/net/webrtc/src/utils.rs @@ -6,9 +6,9 @@ use std::{ use anyhow::{anyhow, Context, Error}; use gst::{glib, prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "webrtcutils", gst::DebugColorFlags::empty(), @@ -787,22 +787,29 @@ impl Codec { } } -pub static AUDIO_CAPS: Lazy = Lazy::new(|| gst::Caps::new_empty_simple("audio/x-raw")); -pub static OPUS_CAPS: Lazy = Lazy::new(|| gst::Caps::new_empty_simple("audio/x-opus")); +pub static AUDIO_CAPS: LazyLock = + LazyLock::new(|| gst::Caps::new_empty_simple("audio/x-raw")); +pub static OPUS_CAPS: LazyLock = + LazyLock::new(|| gst::Caps::new_empty_simple("audio/x-opus")); -pub static VIDEO_CAPS: Lazy = Lazy::new(|| { +pub static VIDEO_CAPS: LazyLock = LazyLock::new(|| { gst::Caps::builder_full_with_any_features() .structure(gst::Structure::new_empty("video/x-raw")) .build() }); -pub static VP8_CAPS: Lazy = Lazy::new(|| gst::Caps::new_empty_simple("video/x-vp8")); -pub static VP9_CAPS: Lazy = Lazy::new(|| gst::Caps::new_empty_simple("video/x-vp9")); -pub static H264_CAPS: Lazy = Lazy::new(|| gst::Caps::new_empty_simple("video/x-h264")); -pub static H265_CAPS: Lazy = Lazy::new(|| gst::Caps::new_empty_simple("video/x-h265")); -pub static AV1_CAPS: Lazy = Lazy::new(|| gst::Caps::new_empty_simple("video/x-av1")); +pub static VP8_CAPS: LazyLock = + LazyLock::new(|| gst::Caps::new_empty_simple("video/x-vp8")); +pub static VP9_CAPS: LazyLock = + LazyLock::new(|| gst::Caps::new_empty_simple("video/x-vp9")); +pub static H264_CAPS: LazyLock = + LazyLock::new(|| gst::Caps::new_empty_simple("video/x-h264")); +pub static H265_CAPS: LazyLock = + LazyLock::new(|| gst::Caps::new_empty_simple("video/x-h265")); +pub static AV1_CAPS: LazyLock = + LazyLock::new(|| gst::Caps::new_empty_simple("video/x-av1")); -pub static RTP_CAPS: Lazy = - Lazy::new(|| gst::Caps::new_empty_simple("application/x-rtp")); +pub static RTP_CAPS: LazyLock = + LazyLock::new(|| gst::Caps::new_empty_simple("application/x-rtp")); #[derive(Debug, Clone)] pub struct Codecs(Vec); @@ -834,7 +841,7 @@ impl Codecs { } } -static CODECS: Lazy = Lazy::new(|| { +static CODECS: LazyLock = LazyLock::new(|| { let decoders = gst::ElementFactory::factories_with_type( gst::ElementFactoryType::DECODER, gst::Rank::MARGINAL, diff --git a/net/webrtc/src/webrtcsink/homegrown_cc.rs b/net/webrtc/src/webrtcsink/homegrown_cc.rs index 34954807..99767bd9 100644 --- a/net/webrtc/src/webrtcsink/homegrown_cc.rs +++ b/net/webrtc/src/webrtcsink/homegrown_cc.rs @@ -4,11 +4,11 @@ use gst::{ glib::{self, value::FromValue}, prelude::*, }; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use super::imp::VideoEncoder; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "webrtcsink-homegrowncc", gst::DebugColorFlags::empty(), diff --git a/net/webrtc/src/webrtcsink/imp.rs b/net/webrtc/src/webrtcsink/imp.rs index 82aa2482..73fc82eb 100644 --- a/net/webrtc/src/webrtcsink/imp.rs +++ b/net/webrtc/src/webrtcsink/imp.rs @@ -21,8 +21,8 @@ use futures::prelude::*; use anyhow::{anyhow, Error}; use itertools::Itertools; -use once_cell::sync::Lazy; use std::collections::HashMap; +use std::sync::LazyLock; use std::ops::DerefMut; use std::ops::Mul; @@ -37,7 +37,7 @@ use crate::{utils, RUNTIME}; use std::collections::{BTreeMap, HashSet}; use tracing_subscriber::prelude::*; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "webrtcsink", gst::DebugColorFlags::empty(), @@ -4318,7 +4318,7 @@ pub(crate) trait BaseWebRTCSinkImpl: BinImpl {} impl ObjectImpl for BaseWebRTCSink { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoxed::builder::("video-caps") .nick("Video encoder caps") @@ -4799,7 +4799,7 @@ impl ObjectImpl for BaseWebRTCSink { } fn signals() -> &'static [glib::subclass::Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![ /** * GstBaseWebRTCSink::consumer-added: @@ -5028,7 +5028,7 @@ impl GstObjectImpl for BaseWebRTCSink {} impl ElementImpl for BaseWebRTCSink { fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let mut caps_builder = gst::Caps::builder_full() .structure(gst::Structure::builder("video/x-raw").build()) .structure_with_features( @@ -5318,8 +5318,8 @@ fn initialize_logging(envvar_name: &str) -> Result<(), Error> { Ok(()) } -pub static SIGNALLING_LOGGING: Lazy> = - Lazy::new(|| initialize_logging("WEBRTCSINK_SIGNALLING_SERVER_LOG")); +pub static SIGNALLING_LOGGING: LazyLock> = + LazyLock::new(|| initialize_logging("WEBRTCSINK_SIGNALLING_SERVER_LOG")); #[cfg(feature = "web_server")] use warp::Filter; @@ -5401,7 +5401,7 @@ impl WebRTCSink { let settings = self.settings.lock().unwrap().clone(); if settings.run_signalling_server { - if let Err(err) = Lazy::force(&SIGNALLING_LOGGING) { + if let Err(err) = LazyLock::force(&SIGNALLING_LOGGING) { Err(anyhow!( "failed signalling server logging initialization: {}", err @@ -5443,7 +5443,7 @@ impl WebRTCSink { impl ObjectImpl for WebRTCSink { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ /** * GstWebRTCSink:run-signalling-server: @@ -5587,7 +5587,7 @@ impl GstObjectImpl for WebRTCSink {} impl ElementImpl for WebRTCSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "WebRTCSink", "Sink/Network/WebRTC", @@ -5659,14 +5659,15 @@ pub(super) mod aws { impl ElementImpl for AwsKvsWebRTCSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { - gst::subclass::ElementMetadata::new( - "AwsKvsWebRTCSink", - "Sink/Network/WebRTC", - "WebRTC sink with kinesis video streams signaller", - "Mathieu Duponchelle ", - ) - }); + static ELEMENT_METADATA: LazyLock = + LazyLock::new(|| { + gst::subclass::ElementMetadata::new( + "AwsKvsWebRTCSink", + "Sink/Network/WebRTC", + "WebRTC sink with kinesis video streams signaller", + "Mathieu Duponchelle ", + ) + }); Some(&*ELEMENT_METADATA) } @@ -5707,14 +5708,15 @@ pub(super) mod whip { impl ElementImpl for WhipWebRTCSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { - gst::subclass::ElementMetadata::new( - "WhipWebRTCSink", - "Sink/Network/WebRTC", - "WebRTC sink with WHIP client signaller", - "Taruntej Kanakamalla ", - ) - }); + static ELEMENT_METADATA: LazyLock = + LazyLock::new(|| { + gst::subclass::ElementMetadata::new( + "WhipWebRTCSink", + "Sink/Network/WebRTC", + "WebRTC sink with WHIP client signaller", + "Taruntej Kanakamalla ", + ) + }); Some(&*ELEMENT_METADATA) } @@ -5755,14 +5757,15 @@ pub(super) mod livekit { impl ElementImpl for LiveKitWebRTCSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { - gst::subclass::ElementMetadata::new( - "LiveKitWebRTCSink", - "Sink/Network/WebRTC", - "WebRTC sink with LiveKit signaller", - "Olivier Crête ", - ) - }); + static ELEMENT_METADATA: LazyLock = + LazyLock::new(|| { + gst::subclass::ElementMetadata::new( + "LiveKitWebRTCSink", + "Sink/Network/WebRTC", + "WebRTC sink with LiveKit signaller", + "Olivier Crête ", + ) + }); Some(&*ELEMENT_METADATA) } @@ -5868,14 +5871,15 @@ pub(super) mod janus { impl ElementImpl for JanusVRWebRTCSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { - gst::subclass::ElementMetadata::new( - "JanusVRWebRTCSink", - "Sink/Network/WebRTC", - "WebRTC sink with Janus Video Room signaller", - "Eva Pace ", - ) - }); + static ELEMENT_METADATA: LazyLock = + LazyLock::new(|| { + gst::subclass::ElementMetadata::new( + "JanusVRWebRTCSink", + "Sink/Network/WebRTC", + "WebRTC sink with Janus Video Room signaller", + "Eva Pace ", + ) + }); Some(&*ELEMENT_METADATA) } diff --git a/net/webrtc/src/webrtcsink/pad.rs b/net/webrtc/src/webrtcsink/pad.rs index 55d12ac7..c8b2f5ca 100644 --- a/net/webrtc/src/webrtcsink/pad.rs +++ b/net/webrtc/src/webrtcsink/pad.rs @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MPL-2.0 use gst::{glib, prelude::*, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; #[derive(Default)] @@ -23,7 +23,7 @@ impl ObjectSubclass for WebRTCSinkPad { impl ObjectImpl for WebRTCSinkPad { fn properties() -> &'static [glib::ParamSpec] { - static PROPS: Lazy> = Lazy::new(|| { + static PROPS: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecString::builder("msid") .flags(glib::ParamFlags::READWRITE | gst::PARAM_FLAG_MUTABLE_READY) .blurb("Remote MediaStream ID in use for this pad") diff --git a/net/webrtc/src/webrtcsrc/imp.rs b/net/webrtc/src/webrtcsrc/imp.rs index 584c9934..b8cfda9b 100644 --- a/net/webrtc/src/webrtcsrc/imp.rs +++ b/net/webrtc/src/webrtcsrc/imp.rs @@ -10,13 +10,13 @@ use gst::glib; use gst::subclass::prelude::*; use gst_webrtc::WebRTCDataChannel; use itertools::Itertools; -use once_cell::sync::Lazy; use std::borrow::BorrowMut; use std::collections::{HashMap, HashSet}; use std::mem; use std::str::FromStr; use std::sync::atomic::AtomicU16; use std::sync::atomic::Ordering; +use std::sync::LazyLock; use std::sync::Mutex; use url::Url; @@ -25,7 +25,7 @@ const DEFAULT_ENABLE_DATA_CHANNEL_NAVIGATION: bool = false; const DEFAULT_ENABLE_CONTROL_DATA_CHANNEL: bool = false; const DEFAULT_DO_RETRANSMISSION: bool = true; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "webrtcsrc", gst::DebugColorFlags::empty(), @@ -68,7 +68,7 @@ pub(crate) trait BaseWebRTCSrcImpl: BinImpl {} impl ObjectImpl for BaseWebRTCSrc { fn properties() -> &'static [glib::ParamSpec] { - static PROPS: Lazy> = Lazy::new(|| { + static PROPS: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("stun-server") .nick("The STUN server to use") @@ -254,7 +254,7 @@ impl ObjectImpl for BaseWebRTCSrc { } fn signals() -> &'static [glib::subclass::Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![ /** * GstBaseWebRTCSrc::request-encoded-filter: @@ -1490,7 +1490,7 @@ impl BaseWebRTCSrc { impl ElementImpl for BaseWebRTCSrc { fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { // Ignore specific raw caps from Codecs: they are covered by VIDEO_CAPS & AUDIO_CAPS let mut video_caps_builder = gst::Caps::builder_full() @@ -1692,7 +1692,7 @@ impl BinImpl for WebRTCSrc {} impl ElementImpl for WebRTCSrc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "WebRTCSrc", "Source/Network/WebRTC", @@ -1789,14 +1789,15 @@ pub(super) mod whip { impl ElementImpl for WhipServerSrc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { - gst::subclass::ElementMetadata::new( - "WhipServerSrc", - "Source/Network/WebRTC", - "WebRTC source element using WHIP Server as the signaller", - "Taruntej Kanakamalla ", - ) - }); + static ELEMENT_METADATA: LazyLock = + LazyLock::new(|| { + gst::subclass::ElementMetadata::new( + "WhipServerSrc", + "Source/Network/WebRTC", + "WebRTC source element using WHIP Server as the signaller", + "Taruntej Kanakamalla ", + ) + }); Some(&*ELEMENT_METADATA) } @@ -1838,7 +1839,7 @@ pub(super) mod livekit { impl ElementImpl for LiveKitWebRTCSrc { fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { super::BaseWebRTCSrc::pad_templates() .iter() .map(|pad_templ| { @@ -1858,14 +1859,15 @@ pub(super) mod livekit { } fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { - gst::subclass::ElementMetadata::new( - "LiveKitWebRTCSrc", - "Source/Network/WebRTC", - "WebRTC source with LiveKit signaller", - "Jordan Yelloz ", - ) - }); + static ELEMENT_METADATA: LazyLock = + LazyLock::new(|| { + gst::subclass::ElementMetadata::new( + "LiveKitWebRTCSrc", + "Source/Network/WebRTC", + "WebRTC source with LiveKit signaller", + "Jordan Yelloz ", + ) + }); Some(&*ELEMENT_METADATA) } @@ -2052,7 +2054,7 @@ pub(super) mod livekit { impl ObjectImpl for LiveKitWebRTCSrcPad { fn signals() -> &'static [glib::subclass::Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![glib::subclass::Signal::builder("set-track-disabled") .param_types([bool::static_type()]) .action() @@ -2073,7 +2075,7 @@ pub(super) mod livekit { } fn properties() -> &'static [glib::ParamSpec] { - static PROPS: Lazy> = Lazy::new(|| { + static PROPS: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoxed::builder::("participant-info") .flags(glib::ParamFlags::READABLE) diff --git a/net/webrtc/src/webrtcsrc/pad.rs b/net/webrtc/src/webrtcsrc/pad.rs index 9b14283e..b62583a9 100644 --- a/net/webrtc/src/webrtcsrc/pad.rs +++ b/net/webrtc/src/webrtcsrc/pad.rs @@ -3,9 +3,9 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; use std::sync::atomic::AtomicBool; use std::sync::atomic::Ordering; +use std::sync::LazyLock; use std::sync::Mutex; #[derive(Default)] @@ -47,7 +47,7 @@ impl ObjectSubclass for WebRTCSrcPad { impl ObjectImpl for WebRTCSrcPad { fn properties() -> &'static [glib::ParamSpec] { - static PROPS: Lazy> = Lazy::new(|| { + static PROPS: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecString::builder("msid") .flags(glib::ParamFlags::READABLE) .blurb("Remote MediaStream ID in use for this pad") diff --git a/net/webrtc/src/whip_signaller/imp.rs b/net/webrtc/src/whip_signaller/imp.rs index 8a2241b3..dd365a3b 100644 --- a/net/webrtc/src/whip_signaller/imp.rs +++ b/net/webrtc/src/whip_signaller/imp.rs @@ -12,10 +12,10 @@ use gst::prelude::*; use gst::subclass::prelude::*; use gst_sdp::SDPMessage; use gst_webrtc::{WebRTCICEGatheringState, WebRTCSessionDescription}; -use once_cell::sync::Lazy; use reqwest::header::HeaderMap; use reqwest::header::HeaderValue; use reqwest::StatusCode; +use std::sync::LazyLock; use std::sync::Mutex; use std::net::SocketAddr; @@ -30,7 +30,7 @@ use warp::{ Filter, Reply, }; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "webrtc-whip-signaller", gst::DebugColorFlags::empty(), @@ -534,7 +534,7 @@ impl ObjectSubclass for WhipClient { impl ObjectImpl for WhipClient { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoolean::builder("manual-sdp-munging") .nick("Manual SDP munging") @@ -1099,7 +1099,7 @@ impl ObjectSubclass for WhipServer { impl ObjectImpl for WhipServer { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoolean::builder("manual-sdp-munging") .nick("Manual SDP munging") diff --git a/net/webrtchttp/Cargo.toml b/net/webrtchttp/Cargo.toml index e4479b91..255dafc6 100644 --- a/net/webrtchttp/Cargo.toml +++ b/net/webrtchttp/Cargo.toml @@ -20,7 +20,6 @@ tokio = { version = "1.20.1", default-features = false, features = ["time", "rt- futures = "0.3.23" bytes = "1" async-recursion = "1.0.0" -once_cell.workspace = true [lib] name = "gstwebrtchttp" diff --git a/net/webrtchttp/src/utils.rs b/net/webrtchttp/src/utils.rs index b64d0d25..72c204a1 100644 --- a/net/webrtchttp/src/utils.rs +++ b/net/webrtchttp/src/utils.rs @@ -1,9 +1,9 @@ use futures::future; use futures::prelude::*; use gst::{prelude::*, ErrorMessage}; -use once_cell::sync::Lazy; use reqwest::header::HeaderMap; use reqwest::redirect::Policy; +use std::sync::LazyLock; use std::sync::Mutex; use std::time::Duration; use tokio::runtime; @@ -14,7 +14,7 @@ pub enum WaitError { FutureError(ErrorMessage), } -pub static RUNTIME: Lazy = Lazy::new(|| { +pub static RUNTIME: LazyLock = LazyLock::new(|| { runtime::Builder::new_multi_thread() .enable_all() .worker_threads(1) diff --git a/net/webrtchttp/src/whepsrc/imp.rs b/net/webrtchttp/src/whepsrc/imp.rs index 31031b62..81c91d6d 100644 --- a/net/webrtchttp/src/whepsrc/imp.rs +++ b/net/webrtchttp/src/whepsrc/imp.rs @@ -17,12 +17,12 @@ use bytes::Bytes; use gst::{glib, prelude::*, subclass::prelude::*}; use gst_sdp::*; use gst_webrtc::*; -use once_cell::sync::Lazy; use reqwest::header::{HeaderMap, HeaderValue}; use reqwest::StatusCode; +use std::sync::LazyLock; use std::sync::Mutex; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "whepsrc", gst::DebugColorFlags::empty(), @@ -144,7 +144,7 @@ impl GstObjectImpl for WhepSrc {} impl ElementImpl for WhepSrc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "WHEP Source Bin", "Source/Network/WebRTC", @@ -156,7 +156,7 @@ impl ElementImpl for WhepSrc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let src_pad_template = gst::PadTemplate::new( "src_%u", gst::PadDirection::Src, @@ -256,7 +256,7 @@ impl ElementImpl for WhepSrc { impl ObjectImpl for WhepSrc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoxed::builder::("video-caps") .nick("Video caps") diff --git a/net/webrtchttp/src/whipsink/imp.rs b/net/webrtchttp/src/whipsink/imp.rs index 36514d1f..ea04014a 100644 --- a/net/webrtchttp/src/whipsink/imp.rs +++ b/net/webrtchttp/src/whipsink/imp.rs @@ -18,13 +18,13 @@ use gst::prelude::*; use gst::subclass::prelude::*; use gst_sdp::*; use gst_webrtc::*; -use once_cell::sync::Lazy; use reqwest::header::HeaderMap; use reqwest::header::HeaderValue; use reqwest::StatusCode; +use std::sync::LazyLock; use std::sync::Mutex; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new("whipsink", gst::DebugColorFlags::empty(), Some("WHIP Sink")) }); @@ -99,7 +99,7 @@ impl GstObjectImpl for WhipSink {} impl ElementImpl for WhipSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "WHIP Sink Bin", "Sink/Network/WebRTC", @@ -111,7 +111,7 @@ impl ElementImpl for WhipSink { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_caps = gst::Caps::builder("application/x-rtp").build(); let sink_pad_template = gst::PadTemplate::new( "sink_%u", @@ -218,7 +218,7 @@ impl ElementImpl for WhipSink { impl ObjectImpl for WhipSink { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecString::builder("whip-endpoint") .nick("WHIP Endpoint") .blurb("The WHIP server endpoint to POST SDP offer to. diff --git a/text/ahead/Cargo.toml b/text/ahead/Cargo.toml index cba957b9..7e5712e3 100644 --- a/text/ahead/Cargo.toml +++ b/text/ahead/Cargo.toml @@ -10,7 +10,6 @@ rust-version.workspace = true [dependencies] gst.workspace = true -once_cell.workspace = true [lib] name = "gsttextahead" diff --git a/text/ahead/src/textahead/imp.rs b/text/ahead/src/textahead/imp.rs index fc922177..3c43f200 100644 --- a/text/ahead/src/textahead/imp.rs +++ b/text/ahead/src/textahead/imp.rs @@ -9,13 +9,13 @@ use std::collections::VecDeque; use std::sync::{Mutex, MutexGuard}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "textahead", gst::DebugColorFlags::empty(), @@ -109,7 +109,7 @@ impl ObjectSubclass for TextAhead { impl ObjectImpl for TextAhead { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { let default = Settings::default(); vec![ @@ -219,7 +219,7 @@ impl GstObjectImpl for TextAhead {} impl ElementImpl for TextAhead { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Text Ahead", "Text/Filter", @@ -232,7 +232,7 @@ impl ElementImpl for TextAhead { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_caps = gst::Caps::builder("text/x-raw") .field("format", gst::List::new(["utf8", "pango-markup"])) .build(); diff --git a/text/json/Cargo.toml b/text/json/Cargo.toml index 8bf865c3..35c47a05 100644 --- a/text/json/Cargo.toml +++ b/text/json/Cargo.toml @@ -9,7 +9,6 @@ description = "GStreamer JSON Plugin" repository.workspace = true [dependencies] -once_cell.workspace = true serde = { version = "1.0", features = ["derive"] } serde_json = { version = "1.0", features = ["raw_value"] } gst = { workspace = true, features = ["serde"]} diff --git a/text/json/src/jsongstenc/imp.rs b/text/json/src/jsongstenc/imp.rs index 3451605e..454912d4 100644 --- a/text/json/src/jsongstenc/imp.rs +++ b/text/json/src/jsongstenc/imp.rs @@ -10,7 +10,7 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; @@ -29,7 +29,7 @@ enum Line<'a> { }, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "jsongstenc", gst::DebugColorFlags::empty(), @@ -222,7 +222,7 @@ impl GstObjectImpl for JsonGstEnc {} impl ElementImpl for JsonGstEnc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "GStreamer buffers to JSON", "Encoder/JSON", @@ -236,7 +236,7 @@ impl ElementImpl for JsonGstEnc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder("application/x-json").build(); let sink_pad_template = gst::PadTemplate::new( "sink", diff --git a/text/json/src/jsongstparse/imp.rs b/text/json/src/jsongstparse/imp.rs index b78a3ced..7d3b2d72 100644 --- a/text/json/src/jsongstparse/imp.rs +++ b/text/json/src/jsongstparse/imp.rs @@ -10,7 +10,7 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::cmp; use std::sync::{Mutex, MutexGuard}; @@ -19,7 +19,7 @@ use serde::Deserialize; use crate::line_reader::LineReader; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "jsongstparse", gst::DebugColorFlags::empty(), @@ -906,7 +906,7 @@ impl GstObjectImpl for JsonGstParse {} impl ElementImpl for JsonGstParse { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "JSON GStreamer parser", "Parser/JSON", @@ -919,7 +919,7 @@ impl ElementImpl for JsonGstParse { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder("application/x-json").build(); let src_pad_template = gst::PadTemplate::new( "src", diff --git a/text/regex/Cargo.toml b/text/regex/Cargo.toml index 81aae920..25d50b18 100644 --- a/text/regex/Cargo.toml +++ b/text/regex/Cargo.toml @@ -9,7 +9,6 @@ description = "GStreamer Regular Expression Plugin" repository.workspace = true [dependencies] -once_cell.workspace = true regex = "1.5" gst.workspace = true diff --git a/text/regex/src/gstregex/imp.rs b/text/regex/src/gstregex/imp.rs index afcdad1d..f2917932 100644 --- a/text/regex/src/gstregex/imp.rs +++ b/text/regex/src/gstregex/imp.rs @@ -14,9 +14,9 @@ use regex::{Regex, RegexBuilder}; use std::default::Default; use std::sync::Mutex; -use once_cell::sync::Lazy; +use std::sync::LazyLock; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "regex", gst::DebugColorFlags::empty(), @@ -138,7 +138,7 @@ impl ObjectSubclass for RegEx { impl ObjectImpl for RegEx { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![gst::ParamSpecArray::builder("commands") .nick("Commands") .blurb("A set of commands to apply on input text") @@ -284,7 +284,7 @@ impl GstObjectImpl for RegEx {} impl ElementImpl for RegEx { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Regular Expression processor", "Text/Filter", @@ -297,7 +297,7 @@ impl ElementImpl for RegEx { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder("text/x-raw") .field("format", "utf8") .build(); diff --git a/text/wrap/Cargo.toml b/text/wrap/Cargo.toml index 36185ed1..9d42e93c 100644 --- a/text/wrap/Cargo.toml +++ b/text/wrap/Cargo.toml @@ -11,7 +11,6 @@ repository.workspace = true [dependencies] textwrap = { version = "0.16", features = ["hyphenation"] } hyphenation = "0.8" -once_cell.workspace = true gst.workspace = true [lib] diff --git a/text/wrap/src/gsttextwrap/imp.rs b/text/wrap/src/gsttextwrap/imp.rs index ffe2ebb4..f0ecec60 100644 --- a/text/wrap/src/gsttextwrap/imp.rs +++ b/text/wrap/src/gsttextwrap/imp.rs @@ -16,11 +16,11 @@ use std::io; use std::mem; use std::sync::Mutex; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use hyphenation::{Load, Standard}; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "textwrap", gst::DebugColorFlags::empty(), @@ -483,8 +483,8 @@ impl ObjectSubclass for TextWrap { impl ObjectImpl for TextWrap { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = - Lazy::new(|| { + static PROPERTIES: LazyLock> = + LazyLock::new(|| { vec![ glib::ParamSpecString::builder("dictionary") .nick("Dictionary") @@ -592,7 +592,7 @@ impl GstObjectImpl for TextWrap {} impl ElementImpl for TextWrap { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Text Wrapper", "Text/Filter", @@ -605,7 +605,7 @@ impl ElementImpl for TextWrap { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder("text/x-raw") .field("format", "utf8") .build(); diff --git a/tutorial/Cargo.toml b/tutorial/Cargo.toml index 9b14da76..f1b985d6 100644 --- a/tutorial/Cargo.toml +++ b/tutorial/Cargo.toml @@ -15,7 +15,6 @@ gst-video.workspace = true gst-audio.workspace = true byte-slice-cast = "1.0" num-traits = "0.2" -once_cell.workspace = true [lib] name = "gstrstutorial" diff --git a/tutorial/src/identity/imp.rs b/tutorial/src/identity/imp.rs index b6bed807..54925272 100644 --- a/tutorial/src/identity/imp.rs +++ b/tutorial/src/identity/imp.rs @@ -12,11 +12,11 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; // This module contains the private implementation details of our element -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rsidentity", gst::DebugColorFlags::empty(), @@ -196,7 +196,7 @@ impl ElementImpl for Identity { // retrieved from the gst::Registry after initial registration // without having to load the plugin in memory. fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Identity", "Generic", @@ -215,7 +215,7 @@ impl ElementImpl for Identity { // // Actual instances can create pads based on those pad templates fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { // Our element can accept any possible caps on both pads let caps = gst::Caps::new_any(); let src_pad_template = gst::PadTemplate::new( diff --git a/tutorial/src/progressbin/imp.rs b/tutorial/src/progressbin/imp.rs index 47727c0d..5307f709 100644 --- a/tutorial/src/progressbin/imp.rs +++ b/tutorial/src/progressbin/imp.rs @@ -13,7 +13,7 @@ use gst::prelude::*; use gst::subclass::prelude::*; use std::sync::Mutex; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use super::ProgressBinOutput; @@ -21,7 +21,7 @@ use super::ProgressBinOutput; const DEFAULT_OUTPUT_TYPE: ProgressBinOutput = ProgressBinOutput::Println; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rsprogressbin", gst::DebugColorFlags::empty(), @@ -84,7 +84,7 @@ impl ObjectSubclass for ProgressBin { impl ObjectImpl for ProgressBin { // Metadata for the element's properties fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecEnum::builder_with_default("output", DEFAULT_OUTPUT_TYPE) .nick("Output") @@ -167,7 +167,7 @@ impl ElementImpl for ProgressBin { // retrieved from the gst::Registry after initial registration // without having to load the plugin in memory. fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "ProgressBin", "Generic", @@ -186,7 +186,7 @@ impl ElementImpl for ProgressBin { // Actual instances can create pads based on those pad templates // with a subset of the caps given here. fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { // Our element can accept any possible caps on both pads let caps = gst::Caps::new_any(); let src_pad_template = gst::PadTemplate::new( diff --git a/tutorial/src/rgb2gray/imp.rs b/tutorial/src/rgb2gray/imp.rs index fc386b44..48895e4b 100644 --- a/tutorial/src/rgb2gray/imp.rs +++ b/tutorial/src/rgb2gray/imp.rs @@ -17,11 +17,11 @@ use gst_video::subclass::prelude::*; use std::sync::Mutex; -use once_cell::sync::Lazy; +use std::sync::LazyLock; // This module contains the private implementation details of our element // -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rsrgb2gray", gst::DebugColorFlags::empty(), @@ -96,7 +96,7 @@ impl ObjectSubclass for Rgb2Gray { impl ObjectImpl for Rgb2Gray { fn properties() -> &'static [glib::ParamSpec] { // Metadata for the properties - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoolean::builder("invert") .nick("Invert") @@ -175,7 +175,7 @@ impl ElementImpl for Rgb2Gray { // retrieved from the gst::Registry after initial registration // without having to load the plugin in memory. fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "RGB-GRAY Converter", "Filter/Effect/Converter/Video", @@ -194,7 +194,7 @@ impl ElementImpl for Rgb2Gray { // // Our element here can convert BGRx to BGRx or GRAY8, both being grayscale. fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { // On the src pad, we can produce BGRx and GRAY8 of any // width/height and with any framerate let caps = gst_video::VideoCapsBuilder::new() diff --git a/tutorial/src/sinesrc/imp.rs b/tutorial/src/sinesrc/imp.rs index f47f0f8c..df1abfb7 100644 --- a/tutorial/src/sinesrc/imp.rs +++ b/tutorial/src/sinesrc/imp.rs @@ -23,11 +23,11 @@ use std::sync::Mutex; use num_traits::cast::NumCast; use num_traits::float::Float; -use once_cell::sync::Lazy; +use std::sync::LazyLock; // This module contains the private implementation details of our element -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rssinesrc", gst::DebugColorFlags::empty(), @@ -165,7 +165,7 @@ impl ObjectSubclass for SineSrc { impl ObjectImpl for SineSrc { // Metadata for the properties fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecUInt::builder("samples-per-buffer") .nick("Samples Per Buffer") @@ -329,7 +329,7 @@ impl ElementImpl for SineSrc { // retrieved from the gst::Registry after initial registration // without having to load the plugin in memory. fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Sine Wave Source", "Source/Audio", @@ -346,7 +346,7 @@ impl ElementImpl for SineSrc { // already provide information to GStreamer about all possible // pads that could exist for this type. fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { // On the src pad, we can produce F32/F64 with any sample rate // and any number of channels let caps = gst_audio::AudioCapsBuilder::new_interleaved() diff --git a/utils/fallbackswitch/Cargo.toml b/utils/fallbackswitch/Cargo.toml index dd9187e1..834bbf42 100644 --- a/utils/fallbackswitch/Cargo.toml +++ b/utils/fallbackswitch/Cargo.toml @@ -17,7 +17,6 @@ gst-plugin-gtk4 = { path = "../../video/gtk4", optional = true } gtk = { workspace = true, optional = true } gio = { workspace = true, optional = true } parking_lot = "0.12" -once_cell.workspace = true [dev-dependencies] gst-app.workspace = true diff --git a/utils/fallbackswitch/src/fallbacksrc/custom_source/imp.rs b/utils/fallbackswitch/src/fallbacksrc/custom_source/imp.rs index c917cef5..96f37110 100644 --- a/utils/fallbackswitch/src/fallbacksrc/custom_source/imp.rs +++ b/utils/fallbackswitch/src/fallbacksrc/custom_source/imp.rs @@ -16,9 +16,9 @@ use std::{ sync::{Mutex, OnceLock}, }; -use once_cell::sync::Lazy; +use std::sync::LazyLock; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "fallbacksrc-custom-source", gst::DebugColorFlags::empty(), @@ -58,7 +58,7 @@ impl ObjectSubclass for CustomSource { impl ObjectImpl for CustomSource { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecObject::builder::("source") .nick("Source") .blurb("Source") @@ -95,7 +95,7 @@ impl GstObjectImpl for CustomSource {} impl ElementImpl for CustomSource { fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let audio_src_pad_template = gst::PadTemplate::new( "audio_%u", gst::PadDirection::Src, diff --git a/utils/fallbackswitch/src/fallbacksrc/imp.rs b/utils/fallbackswitch/src/fallbacksrc/imp.rs index bdefefef..58cd59c6 100644 --- a/utils/fallbackswitch/src/fallbacksrc/imp.rs +++ b/utils/fallbackswitch/src/fallbacksrc/imp.rs @@ -14,12 +14,12 @@ use parking_lot::Mutex; use std::time::Instant; use std::{cmp, mem}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use super::custom_source::CustomSource; use super::{RetryReason, Status}; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "fallbacksrc", gst::DebugColorFlags::empty(), @@ -230,7 +230,7 @@ impl ObjectSubclass for FallbackSrc { impl ObjectImpl for FallbackSrc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoolean::builder("enable-audio") .nick("Enable Audio") @@ -657,7 +657,7 @@ impl ObjectImpl for FallbackSrc { } fn signals() -> &'static [glib::subclass::Signal] { - static SIGNALS: Lazy> = Lazy::new(|| { + static SIGNALS: LazyLock> = LazyLock::new(|| { vec![ glib::subclass::Signal::builder("update-uri") .param_types([String::static_type()]) @@ -716,7 +716,7 @@ impl GstObjectImpl for FallbackSrc {} impl ElementImpl for FallbackSrc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { #[cfg(feature = "doc")] Status::static_type().mark_as_plugin_api(gst::PluginAPIFlags::empty()); gst::subclass::ElementMetadata::new( @@ -731,7 +731,7 @@ impl ElementImpl for FallbackSrc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let audio_src_pad_template = gst::PadTemplate::new( "audio", gst::PadDirection::Src, diff --git a/utils/fallbackswitch/src/fallbackswitch/imp.rs b/utils/fallbackswitch/src/fallbackswitch/imp.rs index 73f7c521..db71d754 100644 --- a/utils/fallbackswitch/src/fallbackswitch/imp.rs +++ b/utils/fallbackswitch/src/fallbackswitch/imp.rs @@ -12,7 +12,7 @@ use gst::prelude::*; use gst::subclass::prelude::*; use gst::{debug, log, trace}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use parking_lot::{Condvar, Mutex, MutexGuard}; use std::sync::atomic::{AtomicU32, Ordering}; @@ -28,7 +28,7 @@ const PROP_MIN_UPSTREAM_LATENCY: &str = "min-upstream-latency"; const PROP_TIMEOUT: &str = "timeout"; const PROP_STOP_ON_EOS: &str = "stop-on-eos"; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "fallbackswitch", gst::DebugColorFlags::empty(), @@ -151,7 +151,7 @@ impl GstObjectImpl for FallbackSwitchSinkPad {} impl ObjectImpl for FallbackSwitchSinkPad { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecUInt::builder(PROP_PRIORITY) .nick("Stream Priority") @@ -1319,7 +1319,7 @@ impl ObjectSubclass for FallbackSwitch { impl ObjectImpl for FallbackSwitch { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecObject::builder::(PROP_ACTIVE_PAD) .nick("Active Pad") @@ -1492,7 +1492,7 @@ impl ObjectImpl for FallbackSwitch { impl ElementImpl for FallbackSwitch { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Priority-based input selector", "Generic", @@ -1505,7 +1505,7 @@ impl ElementImpl for FallbackSwitch { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let sink_pad_template = gst::PadTemplate::with_gtype( "sink_%u", diff --git a/utils/fallbackswitch/tests/fallbackswitch.rs b/utils/fallbackswitch/tests/fallbackswitch.rs index 89ca5afb..c5eb4174 100644 --- a/utils/fallbackswitch/tests/fallbackswitch.rs +++ b/utils/fallbackswitch/tests/fallbackswitch.rs @@ -10,11 +10,11 @@ use gst::debug; use gst::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; const LATENCY: gst::ClockTime = gst::ClockTime::from_mseconds(10); -static TEST_CAT: Lazy = Lazy::new(|| { +static TEST_CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "fallbackswitch-test", gst::DebugColorFlags::empty(), diff --git a/utils/livesync/Cargo.toml b/utils/livesync/Cargo.toml index 5caf6f7f..ab70a4e8 100644 --- a/utils/livesync/Cargo.toml +++ b/utils/livesync/Cargo.toml @@ -15,7 +15,6 @@ gst-audio.workspace = true gst-plugin-gtk4 = { path = "../../video/gtk4", optional = true } gtk = { workspace = true, optional = true } num-rational = { version = "0.4", default-features = false, features = [] } -once_cell.workspace = true parking_lot = "0.12" [dev-dependencies] diff --git a/utils/livesync/src/livesync/imp.rs b/utils/livesync/src/livesync/imp.rs index 105a982b..94e71969 100644 --- a/utils/livesync/src/livesync/imp.rs +++ b/utils/livesync/src/livesync/imp.rs @@ -12,14 +12,14 @@ use gst::{ prelude::*, subclass::prelude::*, }; -use once_cell::sync::Lazy; use parking_lot::{Condvar, Mutex, MutexGuard}; +use std::sync::LazyLock; use std::{collections::VecDeque, sync::mpsc}; /// Offset for the segment in single-segment mode, to handle negative DTS const SEGMENT_OFFSET: gst::ClockTime = gst::ClockTime::from_seconds(60 * 60 * 1000); -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "livesync", gst::DebugColorFlags::empty(), @@ -296,7 +296,7 @@ impl ObjectSubclass for LiveSync { impl ObjectImpl for LiveSync { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy<[glib::ParamSpec; 8]> = Lazy::new(|| { + static PROPERTIES: LazyLock<[glib::ParamSpec; 8]> = LazyLock::new(|| { [ glib::ParamSpecUInt64::builder(PROP_LATENCY) .nick("Latency") @@ -407,7 +407,7 @@ impl GstObjectImpl for LiveSync {} impl ElementImpl for LiveSync { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Live Synchronizer", "Filter", @@ -420,7 +420,7 @@ impl ElementImpl for LiveSync { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy<[gst::PadTemplate; 2]> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock<[gst::PadTemplate; 2]> = LazyLock::new(|| { let caps = gst::Caps::new_any(); [ diff --git a/utils/togglerecord/Cargo.toml b/utils/togglerecord/Cargo.toml index 8c05252e..69f7bce3 100644 --- a/utils/togglerecord/Cargo.toml +++ b/utils/togglerecord/Cargo.toml @@ -16,7 +16,6 @@ gst-plugin-gtk4 = { path = "../../video/gtk4", optional = true } gtk = { workspace = true, optional = true } gio = { workspace = true, optional = true } parking_lot = "0.12" -once_cell.workspace = true [dev-dependencies] either = "1.0" diff --git a/utils/togglerecord/src/togglerecord/imp.rs b/utils/togglerecord/src/togglerecord/imp.rs index d7e764a6..20d2f0ed 100644 --- a/utils/togglerecord/src/togglerecord/imp.rs +++ b/utils/togglerecord/src/togglerecord/imp.rs @@ -16,12 +16,12 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; use parking_lot::{Condvar, Mutex, MutexGuard}; use std::cmp; use std::collections::HashMap; use std::iter; use std::sync::Arc; +use std::sync::LazyLock; const DEFAULT_RECORD: bool = false; const DEFAULT_LIVE: bool = false; @@ -338,7 +338,7 @@ pub struct ToggleRecord { pads: Mutex>, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "togglerecord", gst::DebugColorFlags::empty(), @@ -1949,7 +1949,7 @@ impl ObjectSubclass for ToggleRecord { impl ObjectImpl for ToggleRecord { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoolean::builder("record") .nick("Record") @@ -2043,7 +2043,7 @@ impl GstObjectImpl for ToggleRecord {} impl ElementImpl for ToggleRecord { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Toggle Record", "Generic", @@ -2058,7 +2058,7 @@ impl ElementImpl for ToggleRecord { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::new_any(); let src_pad_template = gst::PadTemplate::new( "src", diff --git a/utils/tracers/Cargo.toml b/utils/tracers/Cargo.toml index 65e70688..eae5b4bf 100644 --- a/utils/tracers/Cargo.toml +++ b/utils/tracers/Cargo.toml @@ -12,7 +12,6 @@ rust-version.workspace = true gst.workspace = true anyhow = "1" regex = "1" -once_cell.workspace = true atomic_refcell = "0.1" pcap-file = "1.1.1" etherparse = "0.16.0" diff --git a/utils/tracers/src/buffer_lateness/imp.rs b/utils/tracers/src/buffer_lateness/imp.rs index 7fb00594..7196f566 100644 --- a/utils/tracers/src/buffer_lateness/imp.rs +++ b/utils/tracers/src/buffer_lateness/imp.rs @@ -52,10 +52,10 @@ use std::sync::{Arc, Mutex}; use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; use regex::Regex; +use std::sync::LazyLock; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "buffer-lateness", gst::DebugColorFlags::empty(), diff --git a/utils/tracers/src/pad_push_timings/imp.rs b/utils/tracers/src/pad_push_timings/imp.rs index ac3132a0..321328a1 100644 --- a/utils/tracers/src/pad_push_timings/imp.rs +++ b/utils/tracers/src/pad_push_timings/imp.rs @@ -51,10 +51,10 @@ use std::sync::{Arc, Mutex}; use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; use regex::Regex; +use std::sync::LazyLock; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "pad-push-timings", gst::DebugColorFlags::empty(), diff --git a/utils/tracers/src/pcap_writer/imp.rs b/utils/tracers/src/pcap_writer/imp.rs index 14cea75d..36058320 100644 --- a/utils/tracers/src/pcap_writer/imp.rs +++ b/utils/tracers/src/pcap_writer/imp.rs @@ -56,11 +56,11 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; static MAX_PACKET_LEN: usize = 65535; static MAX_FAKE_HEADERS_LEN: usize = 54; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "pcap-writer", gst::DebugColorFlags::empty(), diff --git a/utils/tracers/src/pipeline_snapshot/imp.rs b/utils/tracers/src/pipeline_snapshot/imp.rs index 20e3b5e0..4851f11f 100644 --- a/utils/tracers/src/pipeline_snapshot/imp.rs +++ b/utils/tracers/src/pipeline_snapshot/imp.rs @@ -45,9 +45,9 @@ use gst::glib; use gst::glib::translate::ToGlibPtr; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "pipeline-snapshot", gst::DebugColorFlags::empty(), diff --git a/utils/tracers/src/queue_levels/imp.rs b/utils/tracers/src/queue_levels/imp.rs index bc17455f..65c5fe74 100644 --- a/utils/tracers/src/queue_levels/imp.rs +++ b/utils/tracers/src/queue_levels/imp.rs @@ -52,10 +52,10 @@ use std::sync::{Arc, Mutex}; use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; use regex::Regex; +use std::sync::LazyLock; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "queue-levels", gst::DebugColorFlags::empty(), @@ -63,7 +63,7 @@ static CAT: Lazy = Lazy::new(|| { ) }); -static QUEUE_TYPE: Lazy = Lazy::new(|| { +static QUEUE_TYPE: LazyLock = LazyLock::new(|| { if let Some(queue) = gst::ElementFactory::find("queue").and_then(|f| f.load().ok()) { queue.element_type() } else { @@ -72,7 +72,7 @@ static QUEUE_TYPE: Lazy = Lazy::new(|| { } }); -static QUEUE2_TYPE: Lazy = Lazy::new(|| { +static QUEUE2_TYPE: LazyLock = LazyLock::new(|| { if let Some(queue) = gst::ElementFactory::find("queue2").and_then(|f| f.load().ok()) { queue.element_type() } else { @@ -81,7 +81,7 @@ static QUEUE2_TYPE: Lazy = Lazy::new(|| { } }); -static MULTIQUEUE_TYPE: Lazy = Lazy::new(|| { +static MULTIQUEUE_TYPE: LazyLock = LazyLock::new(|| { if let Some(queue) = gst::ElementFactory::find("multiqueue").and_then(|f| f.load().ok()) { queue.element_type() } else { @@ -90,7 +90,7 @@ static MULTIQUEUE_TYPE: Lazy = Lazy::new(|| { } }); -static APPSRC_TYPE: Lazy = Lazy::new(|| { +static APPSRC_TYPE: LazyLock = LazyLock::new(|| { if let Some(queue) = gst::ElementFactory::find("appsrc").and_then(|f| f.load().ok()) { queue.element_type() } else { @@ -215,9 +215,9 @@ impl ObjectImpl for QueueLevels { state.settings.update_from_params(self, params); } - Lazy::force(&QUEUE_TYPE); - Lazy::force(&QUEUE2_TYPE); - Lazy::force(&MULTIQUEUE_TYPE); + LazyLock::force(&QUEUE_TYPE); + LazyLock::force(&QUEUE2_TYPE); + LazyLock::force(&MULTIQUEUE_TYPE); self.register_hook(TracerHook::ElementNew); self.register_hook(TracerHook::ObjectDestroyed); diff --git a/utils/uriplaylistbin/Cargo.toml b/utils/uriplaylistbin/Cargo.toml index e8745d20..566b84ff 100644 --- a/utils/uriplaylistbin/Cargo.toml +++ b/utils/uriplaylistbin/Cargo.toml @@ -13,7 +13,6 @@ gst = { workspace = true, features = ["v1_24"] } anyhow = "1" clap = { version = "4", optional = true, features = ["derive"] } thiserror = "1" -once_cell.workspace = true [dev-dependencies] gst-app.workspace = true diff --git a/utils/uriplaylistbin/src/uriplaylistbin/imp.rs b/utils/uriplaylistbin/src/uriplaylistbin/imp.rs index c62d7b35..3a7e57be 100644 --- a/utils/uriplaylistbin/src/uriplaylistbin/imp.rs +++ b/utils/uriplaylistbin/src/uriplaylistbin/imp.rs @@ -15,9 +15,9 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "uriplaylistbin", gst::DebugColorFlags::empty(), @@ -182,7 +182,7 @@ impl ObjectSubclass for UriPlaylistBin { impl ObjectImpl for UriPlaylistBin { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoxed::builder::>("uris") .nick("URIs") @@ -335,7 +335,7 @@ impl BinImpl for UriPlaylistBin { impl ElementImpl for UriPlaylistBin { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Playlist Source", "Generic/Source", @@ -348,7 +348,7 @@ impl ElementImpl for UriPlaylistBin { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let audio_src_pad_template = gst::PadTemplate::new( "audio_%u", gst::PadDirection::Src, diff --git a/video/cdg/Cargo.toml b/video/cdg/Cargo.toml index 32ebe44d..508995c2 100644 --- a/video/cdg/Cargo.toml +++ b/video/cdg/Cargo.toml @@ -15,7 +15,6 @@ gst-video.workspace = true cdg = "0.1" cdg_renderer = "0.8" image = { version = "0.25", default-features = false } -once_cell.workspace = true [dev-dependencies] gst-app.workspace = true diff --git a/video/cdg/src/cdgdec/imp.rs b/video/cdg/src/cdgdec/imp.rs index 1473bed5..c0ca7a08 100644 --- a/video/cdg/src/cdgdec/imp.rs +++ b/video/cdg/src/cdgdec/imp.rs @@ -13,12 +13,12 @@ use gst::subclass::prelude::*; use gst_video::prelude::*; use gst_video::subclass::prelude::*; use image::GenericImageView; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; use crate::constants::{CDG_HEIGHT, CDG_WIDTH}; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new("cdgdec", gst::DebugColorFlags::empty(), Some("CDG decoder")) }); @@ -41,7 +41,7 @@ impl GstObjectImpl for CdgDec {} impl ElementImpl for CdgDec { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "CDG decoder", "Decoder/Video", @@ -54,7 +54,7 @@ impl ElementImpl for CdgDec { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_caps = gst::Caps::builder("video/x-cdg") .field("parsed", true) .build(); diff --git a/video/cdg/src/cdgparse/imp.rs b/video/cdg/src/cdgparse/imp.rs index f7749f22..36247b3c 100644 --- a/video/cdg/src/cdgparse/imp.rs +++ b/video/cdg/src/cdgparse/imp.rs @@ -13,7 +13,7 @@ use gst::glib; use gst::subclass::prelude::*; use gst_base::prelude::*; use gst_base::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::constants::{ CDG_COMMAND, CDG_HEIGHT, CDG_MASK, CDG_PACKET_PERIOD, CDG_PACKET_SIZE, CDG_WIDTH, @@ -26,7 +26,7 @@ const CDG_CMD_MEMORY_LOAD_COLOR_TABLE_2: u8 = 31; #[derive(Default)] pub struct CdgParse; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "cdgparse", gst::DebugColorFlags::empty(), @@ -47,7 +47,7 @@ impl GstObjectImpl for CdgParse {} impl ElementImpl for CdgParse { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "CDG parser", "Codec/Parser/Video", @@ -60,7 +60,7 @@ impl ElementImpl for CdgParse { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_caps = gst::Caps::builder("video/x-cdg").build(); let sink_pad_template = gst::PadTemplate::new( "sink", diff --git a/video/closedcaption/Cargo.toml b/video/closedcaption/Cargo.toml index 7cf70f0d..262cd733 100644 --- a/video/closedcaption/Cargo.toml +++ b/video/closedcaption/Cargo.toml @@ -22,7 +22,6 @@ serde = { version = "1.0", features = ["derive"] } serde_json = { version = "1.0", features = ["raw_value"] } cea708-types = "0.3.2" cea608-types = "0.1.1" -once_cell.workspace = true gst = { workspace = true, features = ["v1_16"]} gst-base = { workspace = true, features = ["v1_18"]} gst-video = { workspace = true, features = ["v1_16"]} diff --git a/video/closedcaption/src/ccdetect/imp.rs b/video/closedcaption/src/ccdetect/imp.rs index 1267f7b2..fd6dc1e6 100644 --- a/video/closedcaption/src/ccdetect/imp.rs +++ b/video/closedcaption/src/ccdetect/imp.rs @@ -12,11 +12,11 @@ use gst::subclass::prelude::*; use gst_base::subclass::prelude::*; use crate::ccutils::{extract_cdp, ParseError, ParseErrorCode}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ccdetect", gst::DebugColorFlags::empty(), @@ -226,7 +226,7 @@ impl ObjectSubclass for CCDetect { impl ObjectImpl for CCDetect { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecUInt64::builder("window") .nick("Window") @@ -286,7 +286,7 @@ impl GstObjectImpl for CCDetect {} impl ElementImpl for CCDetect { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Closed Caption Detect", "Filter/Video/ClosedCaption/Detect", @@ -299,7 +299,7 @@ impl ElementImpl for CCDetect { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let mut caps = gst::Caps::new_empty(); { let caps = caps.get_mut().unwrap(); diff --git a/video/closedcaption/src/cea608overlay/imp.rs b/video/closedcaption/src/cea608overlay/imp.rs index 93f5d9d4..af3b21d3 100644 --- a/video/closedcaption/src/cea608overlay/imp.rs +++ b/video/closedcaption/src/cea608overlay/imp.rs @@ -11,14 +11,14 @@ use gst::prelude::*; use gst::subclass::prelude::*; use gst_video::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; use crate::ccutils::extract_cdp; use crate::cea608utils::Cea608Renderer; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "cea608overlay", gst::DebugColorFlags::empty(), @@ -388,7 +388,7 @@ impl ObjectSubclass for Cea608Overlay { impl ObjectImpl for Cea608Overlay { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecInt::builder("field") .nick("Field") @@ -487,7 +487,7 @@ impl GstObjectImpl for Cea608Overlay {} impl ElementImpl for Cea608Overlay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Cea 608 overlay", "Video/Overlay/Subtitle", @@ -500,7 +500,7 @@ impl ElementImpl for Cea608Overlay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst_video::VideoFormat::iter_raw() .into_video_caps() .unwrap() diff --git a/video/closedcaption/src/cea608tocea708/imp.rs b/video/closedcaption/src/cea608tocea708/imp.rs index 13d6f3b1..95b4ddc9 100644 --- a/video/closedcaption/src/cea608tocea708/imp.rs +++ b/video/closedcaption/src/cea608tocea708/imp.rs @@ -22,7 +22,7 @@ use crate::cea708utils::{ use cea608_types::{Cea608, Cea608State as Cea608StateTracker}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; #[derive(Debug, Copy, Clone)] enum Cea608Format { @@ -481,7 +481,7 @@ pub struct Cea608ToCea708 { state: AtomicRefCell, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "cea608tocea708", gst::DebugColorFlags::empty(), @@ -702,7 +702,7 @@ impl GstObjectImpl for Cea608ToCea708 {} impl ElementImpl for Cea608ToCea708 { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "CEA-608 to CEA-708", "Converter", @@ -715,7 +715,7 @@ impl ElementImpl for Cea608ToCea708 { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder("closedcaption/x-cea-708") .field("format", "cc_data") .build(); diff --git a/video/closedcaption/src/cea608tojson/imp.rs b/video/closedcaption/src/cea608tojson/imp.rs index f37aa1dc..a80453e1 100644 --- a/video/closedcaption/src/cea608tojson/imp.rs +++ b/video/closedcaption/src/cea608tojson/imp.rs @@ -38,7 +38,7 @@ use crate::ttutils::{Chunk, Line, Lines}; use atomic_refcell::AtomicRefCell; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::collections::BTreeMap; use std::sync::Mutex; @@ -242,7 +242,7 @@ pub struct Cea608ToJson { settings: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "cea608tojson", gst::DebugColorFlags::empty(), @@ -821,7 +821,7 @@ impl ObjectImpl for Cea608ToJson { } fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecBoolean::builder("unbuffered") .nick("Unbuffered") .blurb( @@ -861,7 +861,7 @@ impl GstObjectImpl for Cea608ToJson {} impl ElementImpl for Cea608ToJson { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "CEA-608 to TT", "Generic", @@ -874,7 +874,7 @@ impl ElementImpl for Cea608ToJson { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder("application/x-json").build(); let src_pad_template = gst::PadTemplate::new( diff --git a/video/closedcaption/src/cea608tott/imp.rs b/video/closedcaption/src/cea608tott/imp.rs index b913fc27..be494308 100644 --- a/video/closedcaption/src/cea608tott/imp.rs +++ b/video/closedcaption/src/cea608tott/imp.rs @@ -13,7 +13,7 @@ use gst::subclass::prelude::*; use atomic_refcell::AtomicRefCell; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::cea608utils::Cea608Frame; @@ -53,7 +53,7 @@ pub struct Cea608ToTt { state: AtomicRefCell, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "cea608tott", gst::DebugColorFlags::empty(), @@ -443,7 +443,7 @@ impl GstObjectImpl for Cea608ToTt {} impl ElementImpl for Cea608ToTt { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "CEA-608 to TT", "Generic", @@ -456,7 +456,7 @@ impl ElementImpl for Cea608ToTt { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let mut caps = gst::Caps::new_empty(); { let caps = caps.get_mut().unwrap(); diff --git a/video/closedcaption/src/cea608utils.rs b/video/closedcaption/src/cea608utils.rs index a210a843..e34fca71 100644 --- a/video/closedcaption/src/cea608utils.rs +++ b/video/closedcaption/src/cea608utils.rs @@ -13,8 +13,8 @@ use cea608_types::{ Cea608, Cea608State, Mode, }; use gst::glib; -use once_cell::sync::Lazy; use serde::{Deserialize, Serialize}; +use std::sync::LazyLock; use pango::prelude::*; @@ -22,7 +22,7 @@ use crate::ccutils::recalculate_pango_layout; use gst::prelude::MulDiv; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "cea608utils", gst::DebugColorFlags::empty(), diff --git a/video/closedcaption/src/cea708mux/imp.rs b/video/closedcaption/src/cea708mux/imp.rs index 6c57ce33..b5eb887c 100644 --- a/video/closedcaption/src/cea708mux/imp.rs +++ b/video/closedcaption/src/cea708mux/imp.rs @@ -17,7 +17,7 @@ use gst::subclass::prelude::*; use gst_base::prelude::*; use gst_base::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; #[derive(Default, Copy, Clone, PartialEq, Eq)] enum CeaFormat { @@ -95,7 +95,7 @@ pub struct Cea708Mux { state: Mutex, } -pub(crate) static CAT: Lazy = Lazy::new(|| { +pub(crate) static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "cea708mux", gst::DebugColorFlags::empty(), @@ -455,7 +455,7 @@ impl AggregatorImpl for Cea708Mux { impl ElementImpl for Cea708Mux { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "CEA-708 Mux", "Muxer", @@ -468,7 +468,7 @@ impl ElementImpl for Cea708Mux { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let framerates = gst::List::new([ gst::Fraction::new(60, 1), gst::Fraction::new(60000, 1001), diff --git a/video/closedcaption/src/cea708overlay/imp.rs b/video/closedcaption/src/cea708overlay/imp.rs index 94a806f5..6e5a603e 100644 --- a/video/closedcaption/src/cea708overlay/imp.rs +++ b/video/closedcaption/src/cea708overlay/imp.rs @@ -11,14 +11,14 @@ use gst::prelude::*; use gst::subclass::prelude::*; use gst_video::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; use crate::ccutils::extract_cdp; use crate::cea708utils::{Cea708Renderer, ServiceOrChannel}; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "cea708overlay", gst::DebugColorFlags::empty(), @@ -491,7 +491,7 @@ impl ObjectSubclass for Cea708Overlay { impl ObjectImpl for Cea708Overlay { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecInt::builder("cea608-channel") .nick("CEA-608 Channel") @@ -590,7 +590,7 @@ impl GstObjectImpl for Cea708Overlay {} impl ElementImpl for Cea708Overlay { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "CEA 708 overlay", "Video/Overlay/Subtitle", @@ -603,7 +603,7 @@ impl ElementImpl for Cea708Overlay { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst_video::VideoFormat::iter_raw() .into_video_caps() .unwrap() diff --git a/video/closedcaption/src/cea708utils.rs b/video/closedcaption/src/cea708utils.rs index 9f3f855b..0492138b 100644 --- a/video/closedcaption/src/cea708utils.rs +++ b/video/closedcaption/src/cea708utils.rs @@ -12,15 +12,15 @@ use std::collections::VecDeque; use gst::glib; use gst::prelude::MulDiv; -use once_cell::sync::Lazy; use serde::{Deserialize, Serialize}; +use std::sync::LazyLock; use pango::prelude::*; use crate::ccutils::recalculate_pango_layout; use crate::cea608utils::{Cea608Renderer, TextStyle}; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "cea708utils", gst::DebugColorFlags::empty(), diff --git a/video/closedcaption/src/jsontovtt/imp.rs b/video/closedcaption/src/jsontovtt/imp.rs index 892b561d..553a116a 100644 --- a/video/closedcaption/src/jsontovtt/imp.rs +++ b/video/closedcaption/src/jsontovtt/imp.rs @@ -14,7 +14,7 @@ use gst::subclass::prelude::*; use crate::jsontovtt::fku::ForceKeyUnitRequest; use crate::ttutils::Lines; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::collections::{BinaryHeap, VecDeque}; use std::sync::Mutex; @@ -71,7 +71,7 @@ pub struct JsonToVtt { settings: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "jsontovtt", gst::DebugColorFlags::empty(), @@ -577,7 +577,7 @@ impl ObjectSubclass for JsonToVtt { impl ObjectImpl for JsonToVtt { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecUInt64::builder("timeout") .nick("Timeout") .blurb("Duration after which to erase text when no data has arrived") @@ -635,7 +635,7 @@ impl GstObjectImpl for JsonToVtt {} impl ElementImpl for JsonToVtt { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "JSON to WebVTT", "Generic", @@ -648,7 +648,7 @@ impl ElementImpl for JsonToVtt { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder("application/x-json") .field("format", "cea608") .build(); diff --git a/video/closedcaption/src/mcc_enc/imp.rs b/video/closedcaption/src/mcc_enc/imp.rs index ee899baf..675ed39d 100644 --- a/video/closedcaption/src/mcc_enc/imp.rs +++ b/video/closedcaption/src/mcc_enc/imp.rs @@ -14,7 +14,7 @@ use gst::subclass::prelude::*; use chrono::prelude::*; use uuid::Uuid; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::io::Write; use std::sync::Mutex; @@ -55,7 +55,7 @@ pub struct MccEnc { settings: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "mccenc", gst::DebugColorFlags::empty(), @@ -458,7 +458,7 @@ impl ObjectSubclass for MccEnc { impl ObjectImpl for MccEnc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecString::builder("uuid") .nick("UUID") @@ -517,7 +517,7 @@ impl GstObjectImpl for MccEnc {} impl ElementImpl for MccEnc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Mcc Encoder", "Encoder/ClosedCaption", @@ -530,7 +530,7 @@ impl ElementImpl for MccEnc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let mut caps = gst::Caps::new_empty(); { let caps = caps.get_mut().unwrap(); diff --git a/video/closedcaption/src/mcc_parse/imp.rs b/video/closedcaption/src/mcc_parse/imp.rs index 689c79bd..4626da3b 100644 --- a/video/closedcaption/src/mcc_parse/imp.rs +++ b/video/closedcaption/src/mcc_parse/imp.rs @@ -14,13 +14,13 @@ use gst_video::ValidVideoTimeCode; use std::cmp; use std::sync::{Mutex, MutexGuard}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use super::parser::{MccLine, MccParser}; use crate::line_reader::LineReader; use crate::parser_utils::TimeCode; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "mccparse", gst::DebugColorFlags::empty(), @@ -1142,7 +1142,7 @@ impl GstObjectImpl for MccParse {} impl ElementImpl for MccParse { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Mcc Parse", "Parser/ClosedCaption", @@ -1155,7 +1155,7 @@ impl ElementImpl for MccParse { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let mut caps = gst::Caps::new_empty(); { let caps = caps.get_mut().unwrap(); diff --git a/video/closedcaption/src/scc_enc/imp.rs b/video/closedcaption/src/scc_enc/imp.rs index 55c4f8b5..c03c7e3e 100644 --- a/video/closedcaption/src/scc_enc/imp.rs +++ b/video/closedcaption/src/scc_enc/imp.rs @@ -13,14 +13,14 @@ use gst::structure; use gst::subclass::prelude::*; use gst_video::{self, ValidVideoTimeCode}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::io::Write; use std::sync::Mutex; const DEFAULT_OUTPUT_PADDING: bool = true; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "sccenc", gst::DebugColorFlags::empty(), @@ -402,7 +402,7 @@ impl ObjectImpl for SccEnc { } fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecBoolean::builder("output-padding") .nick("Output padding") .blurb( @@ -443,7 +443,7 @@ impl GstObjectImpl for SccEnc {} impl ElementImpl for SccEnc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Scc Encoder", "Encoder/ClosedCaption", @@ -456,7 +456,7 @@ impl ElementImpl for SccEnc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let framerates = gst::List::new([gst::Fraction::new(30000, 1001), gst::Fraction::new(30, 1)]); let caps = gst::Caps::builder("closedcaption/x-cea-608") diff --git a/video/closedcaption/src/scc_parse/imp.rs b/video/closedcaption/src/scc_parse/imp.rs index 9e72f579..1d1d9718 100644 --- a/video/closedcaption/src/scc_parse/imp.rs +++ b/video/closedcaption/src/scc_parse/imp.rs @@ -14,13 +14,13 @@ use gst::subclass::prelude::*; use std::cmp; use std::sync::{Mutex, MutexGuard}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use super::parser::{SccLine, SccParser}; use crate::line_reader::LineReader; use crate::parser_utils::TimeCode; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "sccparse", gst::DebugColorFlags::empty(), @@ -1043,7 +1043,7 @@ impl GstObjectImpl for SccParse {} impl ElementImpl for SccParse { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Scc Parse", "Parser/ClosedCaption", @@ -1056,7 +1056,7 @@ impl ElementImpl for SccParse { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder("closedcaption/x-cea-608") .field("format", "raw") .field( diff --git a/video/closedcaption/src/transcriberbin/imp.rs b/video/closedcaption/src/transcriberbin/imp.rs index d4b2a7b8..0ff8d3ae 100644 --- a/video/closedcaption/src/transcriberbin/imp.rs +++ b/video/closedcaption/src/transcriberbin/imp.rs @@ -15,11 +15,11 @@ use gst::subclass::prelude::*; use std::collections::HashMap; use std::sync::Mutex; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use super::{CaptionSource, MuxMethod}; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "transcriberbin", gst::DebugColorFlags::empty(), @@ -1271,7 +1271,7 @@ impl ObjectSubclass for TranscriberBin { impl ObjectImpl for TranscriberBin { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoolean::builder("passthrough") .nick("Passthrough") @@ -1502,7 +1502,7 @@ impl GstObjectImpl for TranscriberBin {} impl ElementImpl for TranscriberBin { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "TranscriberBin", "Audio / Video / Text", @@ -1515,7 +1515,7 @@ impl ElementImpl for TranscriberBin { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder("video/x-raw").any_features().build(); let video_src_pad_template = gst::PadTemplate::new( "src_video", @@ -1907,7 +1907,7 @@ impl ObjectSubclass for TranscriberSinkPad { impl ObjectImpl for TranscriberSinkPad { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecBoxed::builder::("translation-languages") .nick("Translation languages") diff --git a/video/closedcaption/src/tttocea608/imp.rs b/video/closedcaption/src/tttocea608/imp.rs index 6afe20de..f31fd053 100644 --- a/video/closedcaption/src/tttocea608/imp.rs +++ b/video/closedcaption/src/tttocea608/imp.rs @@ -10,7 +10,7 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; @@ -66,7 +66,7 @@ impl Default for State { } } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "tttocea608", gst::DebugColorFlags::empty(), @@ -406,7 +406,7 @@ impl ObjectSubclass for TtToCea608 { impl ObjectImpl for TtToCea608 { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecEnum::builder_with_default("mode", DEFAULT_MODE) .nick("Mode") @@ -516,7 +516,7 @@ impl GstObjectImpl for TtToCea608 {} impl ElementImpl for TtToCea608 { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "TT to CEA-608", "Generic", @@ -529,7 +529,7 @@ impl ElementImpl for TtToCea608 { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let mut caps = gst::Caps::new_empty(); { let caps = caps.get_mut().unwrap(); diff --git a/video/closedcaption/src/tttocea608/translate.rs b/video/closedcaption/src/tttocea608/translate.rs index d2cb557e..1f98d4ec 100644 --- a/video/closedcaption/src/tttocea608/translate.rs +++ b/video/closedcaption/src/tttocea608/translate.rs @@ -7,8 +7,8 @@ // SPDX-License-Identifier: MPL-2.0 use gst::prelude::*; -use once_cell::sync::Lazy; use std::collections::VecDeque; +use std::sync::LazyLock; use crate::cea608utils::{Cea608Mode, TextStyle}; use crate::ttutils::{Chunk, Lines}; @@ -16,7 +16,7 @@ use crate::ttutils::{Chunk, Lines}; pub const DEFAULT_FPS_N: i32 = 30; pub const DEFAULT_FPS_D: i32 = 1; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "tttocea608translator", gst::DebugColorFlags::empty(), diff --git a/video/closedcaption/src/tttocea708/imp.rs b/video/closedcaption/src/tttocea708/imp.rs index 31156f8c..95bcd694 100644 --- a/video/closedcaption/src/tttocea708/imp.rs +++ b/video/closedcaption/src/tttocea708/imp.rs @@ -11,7 +11,7 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::cea608utils::Cea608Mode; use crate::tttocea708::translate::DEFAULT_FPS_D; @@ -77,7 +77,7 @@ impl Default for State { } } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "tttocea708", gst::DebugColorFlags::empty(), @@ -422,7 +422,7 @@ impl ObjectSubclass for TtToCea708 { impl ObjectImpl for TtToCea708 { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecEnum::builder_with_default("mode", DEFAULT_MODE) .nick("Mode") @@ -594,7 +594,7 @@ impl GstObjectImpl for TtToCea708 {} impl ElementImpl for TtToCea708 { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "TT to CEA-708", "Generic", @@ -607,7 +607,7 @@ impl ElementImpl for TtToCea708 { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let mut caps = gst::Caps::new_empty(); { let caps = caps.get_mut().unwrap(); diff --git a/video/closedcaption/src/tttocea708/translate.rs b/video/closedcaption/src/tttocea708/translate.rs index 60fcfee2..43b98cb7 100644 --- a/video/closedcaption/src/tttocea708/translate.rs +++ b/video/closedcaption/src/tttocea708/translate.rs @@ -13,7 +13,7 @@ use cea708_types::tables::*; use cea708_types::*; use gst::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::cea608utils::{Cea608Mode, TextStyle}; use crate::cea708utils::{ @@ -25,7 +25,7 @@ use crate::ttutils::{Chunk, Lines}; pub const DEFAULT_FPS_N: i32 = 30; pub const DEFAULT_FPS_D: i32 = 1; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "tttocea708translator", gst::DebugColorFlags::empty(), diff --git a/video/closedcaption/src/tttojson/imp.rs b/video/closedcaption/src/tttojson/imp.rs index 2a69196c..e592320d 100644 --- a/video/closedcaption/src/tttojson/imp.rs +++ b/video/closedcaption/src/tttojson/imp.rs @@ -10,7 +10,7 @@ use gst::glib; use gst::prelude::*; use gst::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::cmp::min; use std::sync::Mutex; @@ -18,7 +18,7 @@ use std::sync::Mutex; use crate::cea608utils::*; use crate::ttutils::{Chunk, Line, Lines}; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "tttojson", gst::DebugColorFlags::empty(), @@ -143,7 +143,7 @@ impl GstObjectImpl for TtToJson {} impl ElementImpl for TtToJson { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Timed text to JSON encoder", "Encoder/ClosedCaption", @@ -156,7 +156,7 @@ impl ElementImpl for TtToJson { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder("text/x-raw") .field("format", "utf8") .build(); @@ -222,7 +222,7 @@ impl ObjectSubclass for TtToJson { impl ObjectImpl for TtToJson { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecEnum::builder_with_default("mode", DEFAULT_MODE) .nick("Mode") diff --git a/video/dav1d/Cargo.toml b/video/dav1d/Cargo.toml index d29e8364..6331d11f 100644 --- a/video/dav1d/Cargo.toml +++ b/video/dav1d/Cargo.toml @@ -14,7 +14,6 @@ gst = { workspace = true, features = ["v1_18"] } gst-base = { workspace = true, features = ["v1_18"] } gst-video = { workspace = true, features = ["v1_18"] } num_cpus = "1.0" -once_cell.workspace = true [lib] name = "gstdav1d" diff --git a/video/dav1d/src/dav1ddec/imp.rs b/video/dav1d/src/dav1ddec/imp.rs index 955a8309..5dfe0096 100644 --- a/video/dav1d/src/dav1ddec/imp.rs +++ b/video/dav1d/src/dav1ddec/imp.rs @@ -14,7 +14,7 @@ use gst::subclass::prelude::*; use gst_video::prelude::*; use gst_video::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::{Mutex, MutexGuard}; @@ -86,7 +86,7 @@ pub struct Dav1dDec { settings: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "dav1ddec", gst::DebugColorFlags::empty(), @@ -676,7 +676,7 @@ impl ObjectSubclass for Dav1dDec { impl ObjectImpl for Dav1dDec { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecUInt::builder("n-threads") .nick("Number of threads") @@ -748,7 +748,7 @@ impl GstObjectImpl for Dav1dDec {} impl ElementImpl for Dav1dDec { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Dav1d AV1 Decoder", "Codec/Decoder/Video", @@ -761,7 +761,7 @@ impl ElementImpl for Dav1dDec { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_caps = if gst::version() >= (1, 19, 0, 0) { gst::Caps::builder("video/x-av1") .field("stream-format", "obu-stream") diff --git a/video/ffv1/Cargo.toml b/video/ffv1/Cargo.toml index 44e20f76..9a32cf38 100644 --- a/video/ffv1/Cargo.toml +++ b/video/ffv1/Cargo.toml @@ -13,7 +13,6 @@ byte-slice-cast = "1" ffv1 = { git = "https://github.com/rust-av/ffv1.git", rev = "2afb025a327173ce891954c052e804d0f880368a" } gst = { workspace = true, features = ["v1_18"] } gst-video = { workspace = true, features = ["v1_18"] } -once_cell.workspace = true [dev-dependencies] gst-check = { workspace = true, features = ["v1_18"] } diff --git a/video/ffv1/src/ffv1dec/imp.rs b/video/ffv1/src/ffv1dec/imp.rs index 8911f6e1..187cf664 100644 --- a/video/ffv1/src/ffv1dec/imp.rs +++ b/video/ffv1/src/ffv1dec/imp.rs @@ -18,7 +18,7 @@ use gst_video::prelude::*; use gst_video::subclass::prelude::*; use gst_video::VideoFormat; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; #[derive(Default)] @@ -277,7 +277,7 @@ impl Ffv1Dec { } } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "ffv1dec", gst::DebugColorFlags::empty(), @@ -298,7 +298,7 @@ impl GstObjectImpl for Ffv1Dec {} impl ElementImpl for Ffv1Dec { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "FFV1 Decoder", "Codec/Decoder/Video", @@ -311,7 +311,7 @@ impl ElementImpl for Ffv1Dec { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_caps = gst::Caps::builder("video/x-ffv") .field("ffvversion", 1) .field("width", gst::IntRange::new(1, i32::MAX)) diff --git a/video/gif/Cargo.toml b/video/gif/Cargo.toml index 69f82218..920b7f76 100644 --- a/video/gif/Cargo.toml +++ b/video/gif/Cargo.toml @@ -13,7 +13,6 @@ gst.workspace = true gst-video.workspace = true gif = "0.13" atomic_refcell = "0.1" -once_cell.workspace = true [dev-dependencies] gst-check.workspace = true diff --git a/video/gif/src/gifenc/imp.rs b/video/gif/src/gifenc/imp.rs index 887184bf..02f5ce2d 100644 --- a/video/gif/src/gifenc/imp.rs +++ b/video/gif/src/gifenc/imp.rs @@ -14,7 +14,7 @@ use gst::subclass::prelude::*; use gst_video::prelude::*; use gst_video::subclass::prelude::*; use gst_video::VideoFormat; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::{ io, io::Write, @@ -131,7 +131,7 @@ pub struct GifEnc { settings: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new("gifenc", gst::DebugColorFlags::empty(), Some("GIF encoder")) }); @@ -144,7 +144,7 @@ impl ObjectSubclass for GifEnc { impl ObjectImpl for GifEnc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecInt::builder("repeat") .nick("Repeat") @@ -201,7 +201,7 @@ impl GstObjectImpl for GifEnc {} impl ElementImpl for GifEnc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "GIF encoder", "Encoder/Video", @@ -214,7 +214,7 @@ impl ElementImpl for GifEnc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_caps = gst_video::VideoCapsBuilder::new() .format_list([VideoFormat::Rgb, VideoFormat::Rgba]) // frame-delay timing in gif is a multiple of 10ms -> max 100fps diff --git a/video/gtk4/Cargo.toml b/video/gtk4/Cargo.toml index 94b8d54a..a05157df 100644 --- a/video/gtk4/Cargo.toml +++ b/video/gtk4/Cargo.toml @@ -23,8 +23,6 @@ gst-gl-wayland = { workspace = true, features = ["v1_16"], optional = true } gst-gl-x11 = { workspace = true, features = ["v1_16"], optional = true } gst-gl-egl = { workspace = true, features = ["v1_16"], optional = true } async-channel = "2.0.0" -once_cell.workspace = true - [target.'cfg(target_os = "macos")'.dependencies] gst-gl = { workspace = true, features = ["v1_16"] } diff --git a/video/gtk4/src/sink/imp.rs b/video/gtk4/src/sink/imp.rs index 5ab2a5ca..31357868 100644 --- a/video/gtk4/src/sink/imp.rs +++ b/video/gtk4/src/sink/imp.rs @@ -22,7 +22,7 @@ use gst_base::subclass::prelude::*; use gst_gl::prelude::{GLContextExt as _, *}; use gst_video::subclass::prelude::*; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::{ atomic::{self, AtomicBool}, Mutex, @@ -46,7 +46,7 @@ enum GLContext { static GL_CONTEXT: Mutex = Mutex::new(GLContext::Uninitialized); -pub(crate) static CAT: Lazy = Lazy::new(|| { +pub(crate) static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "gtk4paintablesink", gst::DebugColorFlags::empty(), @@ -109,7 +109,7 @@ impl ObjectSubclass for PaintableSink { impl ObjectImpl for PaintableSink { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecObject::builder::("paintable") .nick("Paintable") @@ -224,7 +224,7 @@ impl GstObjectImpl for PaintableSink {} impl ElementImpl for PaintableSink { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "GTK 4 Paintable Sink", "Sink/Video", @@ -237,7 +237,7 @@ impl ElementImpl for PaintableSink { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { // Those are the supported formats by a gdk::Texture let mut caps = gst::Caps::new_empty(); { diff --git a/video/gtk4/src/sink/paintable/imp.rs b/video/gtk4/src/sink/paintable/imp.rs index e14064b7..935224be 100644 --- a/video/gtk4/src/sink/paintable/imp.rs +++ b/video/gtk4/src/sink/paintable/imp.rs @@ -18,9 +18,9 @@ use crate::sink::frame::{self, Frame, Texture}; use std::cell::{Cell, RefCell}; use std::collections::HashMap; -use once_cell::sync::Lazy; +use std::sync::LazyLock; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "gtk4paintable", gst::DebugColorFlags::empty(), @@ -72,7 +72,7 @@ impl ObjectSubclass for Paintable { impl ObjectImpl for Paintable { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecObject::builder::("gl-context") .nick("GL Context") diff --git a/video/gtk4/src/sink/render_widget/imp.rs b/video/gtk4/src/sink/render_widget/imp.rs index fbc47e29..1c8bf4bd 100644 --- a/video/gtk4/src/sink/render_widget/imp.rs +++ b/video/gtk4/src/sink/render_widget/imp.rs @@ -10,7 +10,7 @@ use std::cell::{Cell, RefCell}; use gtk::{gdk, glib, prelude::*, subclass::prelude::*}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; #[derive(Default)] pub struct RenderWidget { @@ -31,7 +31,7 @@ impl ObjectSubclass for RenderWidget { impl ObjectImpl for RenderWidget { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecObject::builder::("element") .nick("Element") diff --git a/video/hsv/Cargo.toml b/video/hsv/Cargo.toml index 899f3588..da30b5b6 100644 --- a/video/hsv/Cargo.toml +++ b/video/hsv/Cargo.toml @@ -15,7 +15,6 @@ gst-video.workspace = true gst-audio.workspace = true byte-slice-cast = "1.0" num-traits = "0.2" -once_cell.workspace = true [dev-dependencies] gst-check.workspace = true diff --git a/video/hsv/src/hsvdetector/imp.rs b/video/hsv/src/hsvdetector/imp.rs index db36a1e2..9a634ee8 100644 --- a/video/hsv/src/hsvdetector/imp.rs +++ b/video/hsv/src/hsvdetector/imp.rs @@ -18,7 +18,7 @@ use gst_video::subclass::prelude::*; use std::sync::Mutex; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use super::super::hsvutils; @@ -60,7 +60,7 @@ pub struct HsvDetector { settings: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "hsvdetector", gst::DebugColorFlags::empty(), @@ -162,7 +162,7 @@ impl HsvDetector { impl ObjectImpl for HsvDetector { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecFloat::builder("hue-ref") .nick("Hue reference") @@ -331,7 +331,7 @@ impl GstObjectImpl for HsvDetector {} impl ElementImpl for HsvDetector { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "HSV detector", "Filter/Effect/Converter/Video", @@ -344,7 +344,7 @@ impl ElementImpl for HsvDetector { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst_video::VideoCapsBuilder::new() .format_list(video_output_formats()) .build(); diff --git a/video/hsv/src/hsvfilter/imp.rs b/video/hsv/src/hsvfilter/imp.rs index 3c577f1f..25fda22d 100644 --- a/video/hsv/src/hsvfilter/imp.rs +++ b/video/hsv/src/hsvfilter/imp.rs @@ -17,7 +17,7 @@ use gst_video::subclass::prelude::*; use std::sync::Mutex; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use super::super::hsvutils; @@ -56,7 +56,7 @@ pub struct HsvFilter { settings: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "hsvfilter", gst::DebugColorFlags::empty(), @@ -122,7 +122,7 @@ impl HsvFilter { impl ObjectImpl for HsvFilter { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecFloat::builder("hue-shift") .nick("Hue shift") @@ -259,7 +259,7 @@ impl GstObjectImpl for HsvFilter {} impl ElementImpl for HsvFilter { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "HSV filter", "Filter/Effect/Converter/Video", @@ -272,7 +272,7 @@ impl ElementImpl for HsvFilter { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { // src pad capabilities let caps = gst_video::VideoCapsBuilder::new() .format_list([ diff --git a/video/png/Cargo.toml b/video/png/Cargo.toml index ea93b038..317db3e7 100644 --- a/video/png/Cargo.toml +++ b/video/png/Cargo.toml @@ -12,7 +12,6 @@ description = "GStreamer Rust PNG encoder/decoder" gst.workspace = true gst-video.workspace = true png = "0.17.2" -once_cell.workspace = true parking_lot = "0.12" [dev-dependencies] diff --git a/video/png/src/pngenc/imp.rs b/video/png/src/pngenc/imp.rs index d9477e1d..f37cb57d 100644 --- a/video/png/src/pngenc/imp.rs +++ b/video/png/src/pngenc/imp.rs @@ -14,8 +14,8 @@ use gst::subclass::prelude::*; use gst_video::prelude::*; use gst_video::subclass::prelude::*; -use once_cell::sync::Lazy; use parking_lot::Mutex; +use std::sync::LazyLock; use super::CompressionLevel; use super::FilterType; @@ -23,7 +23,7 @@ use super::FilterType; const DEFAULT_COMPRESSION_LEVEL: CompressionLevel = CompressionLevel::Default; const DEFAULT_FILTER_TYPE: FilterType = FilterType::NoFilter; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rspngenc", gst::DebugColorFlags::empty(), @@ -65,7 +65,7 @@ impl ObjectSubclass for PngEncoder { impl ObjectImpl for PngEncoder { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecEnum::builder_with_default( "compression-level", @@ -121,7 +121,7 @@ impl GstObjectImpl for PngEncoder {} impl ElementImpl for PngEncoder { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "PNG encoder", "Encoder/Video", @@ -134,7 +134,7 @@ impl ElementImpl for PngEncoder { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_caps = gst_video::VideoCapsBuilder::new() .format_list([ gst_video::VideoFormat::Gray8, diff --git a/video/rav1e/Cargo.toml b/video/rav1e/Cargo.toml index f659678d..d922fc98 100644 --- a/video/rav1e/Cargo.toml +++ b/video/rav1e/Cargo.toml @@ -13,7 +13,6 @@ gst.workspace = true gst-video.workspace = true rav1e = { version = "0.7", default-features = false, features = ["threading"] } atomic_refcell = "0.1" -once_cell.workspace = true [dev-dependencies] gst-check.workspace = true diff --git a/video/rav1e/src/rav1enc/imp.rs b/video/rav1e/src/rav1enc/imp.rs index e178ba05..965d699d 100644 --- a/video/rav1e/src/rav1enc/imp.rs +++ b/video/rav1e/src/rav1enc/imp.rs @@ -13,10 +13,10 @@ use gst::glib; use gst::subclass::prelude::*; use gst_video::prelude::*; use gst_video::subclass::prelude::*; -use once_cell::sync::Lazy; use rav1e::color; use rav1e::config; use rav1e::data; +use std::sync::LazyLock; use std::sync::Mutex; #[derive(Debug, PartialEq, Eq, Clone, Copy, glib::Enum)] @@ -226,7 +226,7 @@ pub struct Rav1Enc { settings: Mutex, } -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rav1enc", gst::DebugColorFlags::empty(), @@ -243,7 +243,7 @@ impl ObjectSubclass for Rav1Enc { impl ObjectImpl for Rav1Enc { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecUInt::builder("speed-preset") .nick("Speed Preset") @@ -495,7 +495,7 @@ impl GstObjectImpl for Rav1Enc {} impl ElementImpl for Rav1Enc { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "rav1e AV1 encoder", "Encoder/Video", @@ -508,7 +508,7 @@ impl ElementImpl for Rav1Enc { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_caps = gst_video::VideoCapsBuilder::new() .format_list([ gst_video::VideoFormat::I420, diff --git a/video/videofx/Cargo.toml b/video/videofx/Cargo.toml index 007c93c5..fd4c5d4e 100644 --- a/video/videofx/Cargo.toml +++ b/video/videofx/Cargo.toml @@ -17,7 +17,6 @@ image = { version = "0.25", default-features = false } image_hasher = "2.0.0" dssim-core = { version = "3.2.3", optional = true } rgb = { version = "0.8", optional = true } -once_cell.workspace = true gst = { workspace = true, features = ["v1_16"] } gst-base = { workspace = true, features = ["v1_16"] } gst-video = { workspace = true, features = ["v1_16"] } diff --git a/video/videofx/src/border/imp.rs b/video/videofx/src/border/imp.rs index eabeb786..371804c5 100644 --- a/video/videofx/src/border/imp.rs +++ b/video/videofx/src/border/imp.rs @@ -14,12 +14,12 @@ use gst_base::{ }; use gst_video::{subclass::prelude::*, VideoFormat}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; const DEFAULT_BORDER_RADIUS: u32 = 0; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "roundedcorners", gst::DebugColorFlags::empty(), @@ -277,7 +277,7 @@ impl ObjectSubclass for RoundedCorners { impl ObjectImpl for RoundedCorners { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![glib::ParamSpecUInt::builder("border-radius-px") .nick("Border radius in pixels") .blurb("Draw rounded corners with given border radius") @@ -326,7 +326,7 @@ impl GstObjectImpl for RoundedCorners {} impl ElementImpl for RoundedCorners { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Rounded Corners", "Filter/Effect/Converter/Video", @@ -339,7 +339,7 @@ impl ElementImpl for RoundedCorners { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let sink_caps = gst_video::VideoCapsBuilder::new() .format(VideoFormat::I420) .build(); diff --git a/video/videofx/src/colordetect/imp.rs b/video/videofx/src/colordetect/imp.rs index 9132d999..f020e91d 100644 --- a/video/videofx/src/colordetect/imp.rs +++ b/video/videofx/src/colordetect/imp.rs @@ -13,13 +13,13 @@ use color_thief::{get_palette, Color, ColorFormat}; use gst::{glib, subclass::prelude::*}; use gst_base::prelude::*; use gst_video::{subclass::prelude::*, VideoFormat}; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; const DEFAULT_QUALITY: u32 = 10; const DEFAULT_MAX_COLORS: u32 = 2; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "colordetect", gst::DebugColorFlags::empty(), @@ -128,7 +128,7 @@ impl ObjectSubclass for ColorDetect { impl ObjectImpl for ColorDetect { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecUInt::builder("quality") .nick("Quality of an output colors") @@ -204,7 +204,7 @@ impl GstObjectImpl for ColorDetect {} impl ElementImpl for ColorDetect { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Dominant color detection", "Filter/Video", @@ -217,7 +217,7 @@ impl ElementImpl for ColorDetect { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst_video::VideoCapsBuilder::new() .format_list([ VideoFormat::Rgb, diff --git a/video/videofx/src/videocompare/imp.rs b/video/videofx/src/videocompare/imp.rs index 41c91d7a..19137658 100644 --- a/video/videofx/src/videocompare/imp.rs +++ b/video/videofx/src/videocompare/imp.rs @@ -17,10 +17,10 @@ use gst_video::prelude::*; use gst_video::subclass::prelude::*; use gst_video::subclass::AggregateFramesToken; use gst_video::VideoFormat; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::{Arc, Mutex}; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "videocompare", gst::DebugColorFlags::empty(), @@ -73,7 +73,7 @@ impl ObjectSubclass for VideoCompare { impl ObjectImpl for VideoCompare { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { + static PROPERTIES: LazyLock> = LazyLock::new(|| { vec![ glib::ParamSpecEnum::builder_with_default("hash-algo", DEFAULT_HASH_ALGO) .nick("Hashing Algorithm") @@ -143,7 +143,7 @@ impl GstObjectImpl for VideoCompare {} impl ElementImpl for VideoCompare { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "Image comparison", "Filter/Video", @@ -156,7 +156,7 @@ impl ElementImpl for VideoCompare { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst_video::VideoCapsBuilder::new() .format_list([VideoFormat::Rgb, VideoFormat::Rgba]) .build(); diff --git a/video/webp/Cargo.toml b/video/webp/Cargo.toml index d7271e32..f20c6ad5 100644 --- a/video/webp/Cargo.toml +++ b/video/webp/Cargo.toml @@ -10,7 +10,6 @@ repository.workspace = true [dependencies] libwebp-sys2 = { version = "0.1.2", features = ["demux", "0_5"] } -once_cell.workspace = true gst.workspace = true gst-video.workspace = true diff --git a/video/webp/src/dec/imp.rs b/video/webp/src/dec/imp.rs index 3e8eea01..48fc9000 100644 --- a/video/webp/src/dec/imp.rs +++ b/video/webp/src/dec/imp.rs @@ -11,13 +11,13 @@ use gst::prelude::*; use gst::subclass::prelude::*; use libwebp_sys as ffi; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use std::sync::Mutex; use std::marker::PhantomData; -static CAT: Lazy = Lazy::new(|| { +static CAT: LazyLock = LazyLock::new(|| { gst::DebugCategory::new( "rswebpdec", gst::DebugColorFlags::empty(), @@ -319,7 +319,7 @@ impl GstObjectImpl for WebPDec {} impl ElementImpl for WebPDec { fn metadata() -> Option<&'static gst::subclass::ElementMetadata> { - static ELEMENT_METADATA: Lazy = Lazy::new(|| { + static ELEMENT_METADATA: LazyLock = LazyLock::new(|| { gst::subclass::ElementMetadata::new( "WebP decoder", "Codec/Decoder/Video", @@ -332,7 +332,7 @@ impl ElementImpl for WebPDec { } fn pad_templates() -> &'static [gst::PadTemplate] { - static PAD_TEMPLATES: Lazy> = Lazy::new(|| { + static PAD_TEMPLATES: LazyLock> = LazyLock::new(|| { let caps = gst::Caps::builder("image/webp").build(); let sink_pad_template = gst::PadTemplate::new(