mirror of https://github.com/wayvr-org/wayvr.git
update to upstream pipewire-rs
This commit is contained in:
parent
9734955ebb
commit
8212202217
|
|
@ -143,6 +143,16 @@ dependencies = [
|
|||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "annotate-snippets"
|
||||
version = "0.11.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "710e8eae58854cdc1790fcb56cca04d712a17be849eeb81da2a724bf4bae2bc4"
|
||||
dependencies = [
|
||||
"anstyle",
|
||||
"unicode-width 0.2.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "anstream"
|
||||
version = "0.6.21"
|
||||
|
|
@ -677,6 +687,7 @@ version = "0.72.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895"
|
||||
dependencies = [
|
||||
"annotate-snippets",
|
||||
"bitflags 2.10.0",
|
||||
"cexpr",
|
||||
"clang-sys",
|
||||
|
|
@ -880,9 +891,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "cfg-expr"
|
||||
version = "0.15.8"
|
||||
version = "0.20.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02"
|
||||
checksum = "3c6b04e07d8080154ed4ac03546d9a2b303cc2fe1901ba0b35b301516e289368"
|
||||
dependencies = [
|
||||
"smallvec",
|
||||
"target-lexicon",
|
||||
|
|
@ -1051,7 +1062,7 @@ dependencies = [
|
|||
"serde-untagged",
|
||||
"serde_core",
|
||||
"serde_json",
|
||||
"toml 0.9.10+spec-1.1.0",
|
||||
"toml",
|
||||
"winnow",
|
||||
"yaml-rust2",
|
||||
]
|
||||
|
|
@ -1096,9 +1107,6 @@ name = "cookie-factory"
|
|||
version = "0.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9885fa71e26b8ab7855e2ec7cae6e9b380edff76cd052e07c683a0319d51b3a2"
|
||||
dependencies = [
|
||||
"futures",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
|
|
@ -2881,24 +2889,23 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "libspa"
|
||||
version = "0.8.0"
|
||||
source = "git+https://gitlab.freedesktop.org/galister/pipewire-rs.git?rev=6ef2cd1af41e5e8844c63c37ea9a01f0758079b0#6ef2cd1af41e5e8844c63c37ea9a01f0758079b0"
|
||||
version = "0.9.2"
|
||||
source = "git+https://gitlab.freedesktop.org/pipewire/pipewire-rs.git?rev=670b0aabf04263ece5dc1e752e5d64aeae3056e8#670b0aabf04263ece5dc1e752e5d64aeae3056e8"
|
||||
dependencies = [
|
||||
"bitflags 2.10.0",
|
||||
"cc",
|
||||
"convert_case 0.6.0",
|
||||
"cookie-factory",
|
||||
"libc",
|
||||
"libspa-sys",
|
||||
"nix 0.27.1",
|
||||
"nom 7.1.3",
|
||||
"nom 8.0.0",
|
||||
"rustix 1.1.3",
|
||||
"system-deps",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libspa-sys"
|
||||
version = "0.8.0"
|
||||
source = "git+https://gitlab.freedesktop.org/galister/pipewire-rs.git?rev=6ef2cd1af41e5e8844c63c37ea9a01f0758079b0#6ef2cd1af41e5e8844c63c37ea9a01f0758079b0"
|
||||
version = "0.9.2"
|
||||
source = "git+https://gitlab.freedesktop.org/pipewire/pipewire-rs.git?rev=670b0aabf04263ece5dc1e752e5d64aeae3056e8#670b0aabf04263ece5dc1e752e5d64aeae3056e8"
|
||||
dependencies = [
|
||||
"bindgen",
|
||||
"cc",
|
||||
|
|
@ -3167,17 +3174,6 @@ version = "1.0.6"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
|
||||
|
||||
[[package]]
|
||||
name = "nix"
|
||||
version = "0.27.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
|
||||
dependencies = [
|
||||
"bitflags 2.10.0",
|
||||
"cfg-if",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nix"
|
||||
version = "0.29.0"
|
||||
|
|
@ -3991,24 +3987,21 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "pipewire"
|
||||
version = "0.8.0"
|
||||
source = "git+https://gitlab.freedesktop.org/galister/pipewire-rs.git?rev=6ef2cd1af41e5e8844c63c37ea9a01f0758079b0#6ef2cd1af41e5e8844c63c37ea9a01f0758079b0"
|
||||
version = "0.9.2"
|
||||
source = "git+https://gitlab.freedesktop.org/pipewire/pipewire-rs.git?rev=670b0aabf04263ece5dc1e752e5d64aeae3056e8#670b0aabf04263ece5dc1e752e5d64aeae3056e8"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"bitflags 2.10.0",
|
||||
"libc",
|
||||
"libspa",
|
||||
"libspa-sys",
|
||||
"nix 0.27.1",
|
||||
"once_cell",
|
||||
"pipewire-sys",
|
||||
"thiserror 1.0.69",
|
||||
"rustix 1.1.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pipewire-sys"
|
||||
version = "0.8.0"
|
||||
source = "git+https://gitlab.freedesktop.org/galister/pipewire-rs.git?rev=6ef2cd1af41e5e8844c63c37ea9a01f0758079b0#6ef2cd1af41e5e8844c63c37ea9a01f0758079b0"
|
||||
version = "0.9.2"
|
||||
source = "git+https://gitlab.freedesktop.org/pipewire/pipewire-rs.git?rev=670b0aabf04263ece5dc1e752e5d64aeae3056e8#670b0aabf04263ece5dc1e752e5d64aeae3056e8"
|
||||
dependencies = [
|
||||
"bindgen",
|
||||
"libspa-sys",
|
||||
|
|
@ -4116,7 +4109,7 @@ version = "3.4.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983"
|
||||
dependencies = [
|
||||
"toml_edit 0.23.10+spec-1.0.0",
|
||||
"toml_edit",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -4946,15 +4939,6 @@ dependencies = [
|
|||
"syn 2.0.113",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_spanned"
|
||||
version = "0.6.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_spanned"
|
||||
version = "1.0.4"
|
||||
|
|
@ -5454,14 +5438,14 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "system-deps"
|
||||
version = "6.2.2"
|
||||
version = "7.0.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349"
|
||||
checksum = "48c8f33736f986f16d69b6cb8b03f55ddcad5c41acc4ccc39dd88e84aa805e7f"
|
||||
dependencies = [
|
||||
"cfg-expr",
|
||||
"heck 0.5.0",
|
||||
"pkg-config",
|
||||
"toml 0.8.23",
|
||||
"toml",
|
||||
"version-compare",
|
||||
]
|
||||
|
||||
|
|
@ -5479,9 +5463,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "target-lexicon"
|
||||
version = "0.12.16"
|
||||
version = "0.13.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
|
||||
checksum = "df7f62577c25e07834649fc3b39fafdc597c0a3527dc1c60129201ccfcbaa50c"
|
||||
|
||||
[[package]]
|
||||
name = "tempfile"
|
||||
|
|
@ -5684,40 +5668,21 @@ dependencies = [
|
|||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
version = "0.8.23"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"serde_spanned 0.6.9",
|
||||
"toml_datetime 0.6.11",
|
||||
"toml_edit 0.22.27",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
version = "0.9.10+spec-1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0825052159284a1a8b4d6c0c86cbc801f2da5afd2b225fa548c72f2e74002f48"
|
||||
dependencies = [
|
||||
"indexmap 2.12.1",
|
||||
"serde_core",
|
||||
"serde_spanned 1.0.4",
|
||||
"toml_datetime 0.7.5+spec-1.1.0",
|
||||
"serde_spanned",
|
||||
"toml_datetime",
|
||||
"toml_parser",
|
||||
"toml_writer",
|
||||
"winnow",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "toml_datetime"
|
||||
version = "0.6.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "toml_datetime"
|
||||
version = "0.7.5+spec-1.1.0"
|
||||
|
|
@ -5727,19 +5692,6 @@ dependencies = [
|
|||
"serde_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "toml_edit"
|
||||
version = "0.22.27"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
|
||||
dependencies = [
|
||||
"indexmap 2.12.1",
|
||||
"serde",
|
||||
"serde_spanned 0.6.9",
|
||||
"toml_datetime 0.6.11",
|
||||
"winnow",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "toml_edit"
|
||||
version = "0.23.10+spec-1.0.0"
|
||||
|
|
@ -5747,7 +5699,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269"
|
||||
dependencies = [
|
||||
"indexmap 2.12.1",
|
||||
"toml_datetime 0.7.5+spec-1.1.0",
|
||||
"toml_datetime",
|
||||
"toml_parser",
|
||||
"winnow",
|
||||
]
|
||||
|
|
@ -5761,6 +5713,12 @@ dependencies = [
|
|||
"winnow",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "toml_writer"
|
||||
version = "1.1.1+spec-1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db"
|
||||
|
||||
[[package]]
|
||||
name = "tracing"
|
||||
version = "0.1.44"
|
||||
|
|
|
|||
|
|
@ -32,8 +32,8 @@ drm-fourcc = "2.2.0"
|
|||
idmap = { workspace = true }
|
||||
libc = "0.2.178"
|
||||
log = { workspace = true }
|
||||
pipewire = { git = "https://gitlab.freedesktop.org/galister/pipewire-rs.git", rev = "6ef2cd1af41e5e8844c63c37ea9a01f0758079b0", features = [
|
||||
"v0_3_33",
|
||||
pipewire = { git = "https://gitlab.freedesktop.org/pipewire/pipewire-rs.git", rev = "670b0aabf04263ece5dc1e752e5d64aeae3056e8", features = [
|
||||
"v0_3_33", "v0_3_65",
|
||||
], optional = true }
|
||||
#pipewire = { version = "0.8.0", features = ["v0_3_33"], optional = true }
|
||||
rxscreen = { version = "0.1.7", features = [
|
||||
|
|
|
|||
|
|
@ -17,14 +17,17 @@ use drm_fourcc::DrmFormat;
|
|||
use drm_fourcc::DrmFourcc;
|
||||
use drm_fourcc::DrmModifier;
|
||||
use pipewire as pw;
|
||||
use pipewire::context::ContextRc;
|
||||
use pipewire::main_loop::MainLoopRc;
|
||||
use pipewire::spa::buffer::meta::MetaVideoTransformValue;
|
||||
use pipewire::spa::buffer::meta::{MetaCursor, MetaHeader, MetaHeaderFlags, MetaVideoTransform};
|
||||
use pipewire::stream::StreamRc;
|
||||
use pw::spa;
|
||||
|
||||
use pw::Error;
|
||||
use pw::properties::properties;
|
||||
use pw::stream::{Stream, StreamFlags};
|
||||
use pw::{Error, context::Context, main_loop::MainLoop};
|
||||
use spa::buffer::DataType;
|
||||
use spa::buffer::MetaData;
|
||||
use spa::buffer::MetaType;
|
||||
use spa::param::ParamType;
|
||||
use spa::param::video::VideoFormat;
|
||||
use spa::param::video::VideoInfoRaw;
|
||||
|
|
@ -278,12 +281,12 @@ where
|
|||
R: Any,
|
||||
{
|
||||
log::debug!("{}: pipewire main_loop start", &name);
|
||||
let main_loop = MainLoop::new(None)?;
|
||||
let context = Context::new(&main_loop)?;
|
||||
let core = context.connect(None)?;
|
||||
let main_loop = MainLoopRc::new(None)?;
|
||||
let context = ContextRc::new(&main_loop, None)?;
|
||||
let core = context.connect_rc(None)?;
|
||||
|
||||
let stream = Stream::new(
|
||||
&core,
|
||||
let stream = StreamRc::new(
|
||||
core,
|
||||
&name,
|
||||
properties! {
|
||||
*pw::keys::MEDIA_TYPE => "Video",
|
||||
|
|
@ -377,36 +380,35 @@ where
|
|||
}
|
||||
|
||||
if let Some(mut buffer) = maybe_buffer {
|
||||
if let MetaData::Header(header) = buffer.find_meta_data(MetaType::Header)
|
||||
&& header.flags & spa::sys::SPA_META_HEADER_FLAG_CORRUPTED != 0
|
||||
if let Some(header) = buffer.find_meta::<MetaHeader>()
|
||||
&& header.flags().contains(MetaHeaderFlags::CORRUPTED)
|
||||
{
|
||||
log::warn!("{}: PipeWire buffer is corrupt.", &name);
|
||||
return;
|
||||
}
|
||||
if let MetaData::VideoTransform(transform) =
|
||||
buffer.find_meta_data(MetaType::VideoTransform)
|
||||
{
|
||||
format.transform = match transform.transform {
|
||||
spa::sys::SPA_META_TRANSFORMATION_None => Transform::Normal,
|
||||
spa::sys::SPA_META_TRANSFORMATION_90 => Transform::Rotated90,
|
||||
spa::sys::SPA_META_TRANSFORMATION_180 => Transform::Rotated180,
|
||||
spa::sys::SPA_META_TRANSFORMATION_270 => Transform::Rotated270,
|
||||
spa::sys::SPA_META_TRANSFORMATION_Flipped => Transform::Flipped,
|
||||
spa::sys::SPA_META_TRANSFORMATION_Flipped90 => Transform::Flipped90,
|
||||
spa::sys::SPA_META_TRANSFORMATION_Flipped180 => Transform::Flipped180,
|
||||
spa::sys::SPA_META_TRANSFORMATION_Flipped270 => Transform::Flipped270,
|
||||
|
||||
if let Some(transform) = buffer.find_meta::<MetaVideoTransform>() {
|
||||
format.transform = match transform.transform() {
|
||||
MetaVideoTransformValue::NONE => Transform::Normal,
|
||||
MetaVideoTransformValue::ROTATED90 => Transform::Rotated90,
|
||||
MetaVideoTransformValue::ROTATED180 => Transform::Rotated180,
|
||||
MetaVideoTransformValue::ROTATED270 => Transform::Rotated270,
|
||||
MetaVideoTransformValue::FLIPPED => Transform::Flipped,
|
||||
MetaVideoTransformValue::FLIPPED90 => Transform::Flipped90,
|
||||
MetaVideoTransformValue::FLIPPED180 => Transform::Flipped180,
|
||||
MetaVideoTransformValue::FLIPPED270 => Transform::Flipped270,
|
||||
_ => Transform::Undefined,
|
||||
};
|
||||
log::debug!("{}: Transform: {:?}", &name, &format.transform);
|
||||
}
|
||||
|
||||
let mouse_meta = match buffer.find_meta_data(MetaType::Cursor) {
|
||||
MetaData::Cursor(cursor) if cursor.id != 0 => Some(MouseMeta {
|
||||
x: cursor.position.x as f32 / format.width as f32,
|
||||
y: cursor.position.y as f32 / format.height as f32,
|
||||
}),
|
||||
_ => None,
|
||||
};
|
||||
let mouse_meta = buffer
|
||||
.find_meta::<MetaCursor>()
|
||||
.filter(|c| c.is_valid())
|
||||
.map(|c| MouseMeta {
|
||||
x: c.position().x as f32 / format.width as f32,
|
||||
y: c.position().y as f32 / format.height as f32,
|
||||
});
|
||||
|
||||
let datas = buffer.datas_mut();
|
||||
if datas.is_empty() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue