summaryrefslogtreecommitdiff
path: root/multimedia/wl-screenrec
diff options
context:
space:
mode:
Diffstat (limited to 'multimedia/wl-screenrec')
-rw-r--r--multimedia/wl-screenrec/Makefile9
-rw-r--r--multimedia/wl-screenrec/Makefile.crates17
-rw-r--r--multimedia/wl-screenrec/distinfo34
-rw-r--r--multimedia/wl-screenrec/files/patch-ffmpeg7180
-rw-r--r--multimedia/wl-screenrec/files/patch-ffmpeg8126
5 files changed, 238 insertions, 28 deletions
diff --git a/multimedia/wl-screenrec/Makefile b/multimedia/wl-screenrec/Makefile
index 9bd743db8223..980f94bfd6b2 100644
--- a/multimedia/wl-screenrec/Makefile
+++ b/multimedia/wl-screenrec/Makefile
@@ -1,15 +1,17 @@
PORTNAME= wl-screenrec
DISTVERSIONPREFIX= v
-DISTVERSION= 0.1.5
-PORTREVISION= 9
+DISTVERSION= 0.1.5 # see PORTSCOUT comment below
+PORTREVISION= 11
CATEGORIES= multimedia wayland
-MAINTAINER= jbeich@FreeBSD.org
+MAINTAINER= ports@FreeBSD.org
COMMENT= High performance wlroots screen recording, featuring hardware encoding
WWW= https://github.com/russelltg/wl-screenrec
LICENSE= APACHE20
+BROKEN_i386= https://github.com/zmwangx/rust-ffmpeg-sys/issues/96
+
LIB_DEPENDS= libdrm.so:graphics/libdrm \
libavformat.so:multimedia/ffmpeg
@@ -22,7 +24,6 @@ PLIST_FILES= bin/${PORTNAME} \
share/zsh/site-functions/_${PORTNAME}
# https://github.com/russelltg/wl-screenrec/issues/99
-# https://github.com/zmwangx/rust-ffmpeg-sys/issues/96
PORTSCOUT= ignore:1
post-patch:
diff --git a/multimedia/wl-screenrec/Makefile.crates b/multimedia/wl-screenrec/Makefile.crates
index 8d51f274deaa..4ca098ac4160 100644
--- a/multimedia/wl-screenrec/Makefile.crates
+++ b/multimedia/wl-screenrec/Makefile.crates
@@ -5,9 +5,9 @@ CARGO_CRATES= aho-corasick-1.1.3 \
anstyle-query-1.1.1 \
anstyle-wincon-3.0.4 \
anyhow-1.0.86 \
- bindgen-0.69.4 \
- bitflags-2.6.0 \
- cc-1.1.7 \
+ bindgen-0.72.1 \
+ bitflags-2.9.4 \
+ cc-1.2.36 \
cexpr-0.6.0 \
cfg-if-1.0.0 \
cfg_aliases-0.2.1 \
@@ -24,11 +24,12 @@ CARGO_CRATES= aho-corasick-1.1.3 \
drm-fourcc-2.2.0 \
either-1.13.0 \
errno-0.3.9 \
- ffmpeg-next-7.0.4 \
- ffmpeg-sys-next-7.0.2 \
+ ffmpeg-next-8.0.0 \
+ ffmpeg-sys-next-8.0.1 \
+ find-msvc-tools-0.1.1 \
glob-0.3.1 \
heck-0.5.0 \
- hermit-abi-0.3.9 \
+ hermit-abi-0.5.2 \
human-size-0.4.3 \
is_terminal_polyfill-1.70.1 \
itertools-0.12.1 \
@@ -44,7 +45,7 @@ CARGO_CRATES= aho-corasick-1.1.3 \
nix-0.29.0 \
nom-7.1.3 \
num-conv-0.1.0 \
- num_cpus-1.16.0 \
+ num_cpus-1.17.0 \
num_threads-0.1.7 \
pkg-config-0.3.30 \
powerfmt-0.2.0 \
@@ -54,7 +55,7 @@ CARGO_CRATES= aho-corasick-1.1.3 \
regex-1.10.6 \
regex-automata-0.4.7 \
regex-syntax-0.8.4 \
- rustc-hash-1.1.0 \
+ rustc-hash-2.1.1 \
rustix-0.38.34 \
ryu-1.0.18 \
scoped-tls-1.0.1 \
diff --git a/multimedia/wl-screenrec/distinfo b/multimedia/wl-screenrec/distinfo
index f88585d6d3d3..5e7b791f8a0e 100644
--- a/multimedia/wl-screenrec/distinfo
+++ b/multimedia/wl-screenrec/distinfo
@@ -13,12 +13,12 @@ SHA256 (rust/crates/anstyle-wincon-3.0.4.crate) = 5bf74e1b6e971609db8ca7a9ce79fd
SIZE (rust/crates/anstyle-wincon-3.0.4.crate) = 12234
SHA256 (rust/crates/anyhow-1.0.86.crate) = b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da
SIZE (rust/crates/anyhow-1.0.86.crate) = 46741
-SHA256 (rust/crates/bindgen-0.69.4.crate) = a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0
-SIZE (rust/crates/bindgen-0.69.4.crate) = 221092
-SHA256 (rust/crates/bitflags-2.6.0.crate) = b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de
-SIZE (rust/crates/bitflags-2.6.0.crate) = 45357
-SHA256 (rust/crates/cc-1.1.7.crate) = 26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc
-SIZE (rust/crates/cc-1.1.7.crate) = 81694
+SHA256 (rust/crates/bindgen-0.72.1.crate) = 993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895
+SIZE (rust/crates/bindgen-0.72.1.crate) = 246071
+SHA256 (rust/crates/bitflags-2.9.4.crate) = 2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394
+SIZE (rust/crates/bitflags-2.9.4.crate) = 47950
+SHA256 (rust/crates/cc-1.2.36.crate) = 5252b3d2648e5eedbc1a6f501e3c795e07025c1e93bbf8bbdd6eef7f447a6d54
+SIZE (rust/crates/cc-1.2.36.crate) = 90198
SHA256 (rust/crates/cexpr-0.6.0.crate) = 6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766
SIZE (rust/crates/cexpr-0.6.0.crate) = 17966
SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
@@ -51,16 +51,18 @@ SHA256 (rust/crates/either-1.13.0.crate) = 60b1af1c220855b6ceac025d3f6ecdd2b7c48
SIZE (rust/crates/either-1.13.0.crate) = 19169
SHA256 (rust/crates/errno-0.3.9.crate) = 534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba
SIZE (rust/crates/errno-0.3.9.crate) = 10690
-SHA256 (rust/crates/ffmpeg-next-7.0.4.crate) = 19a340e3d664ad5f530147cd6d4a86ece739a829fe2d81c369389ef903bd96f6
-SIZE (rust/crates/ffmpeg-next-7.0.4.crate) = 97098
-SHA256 (rust/crates/ffmpeg-sys-next-7.0.2.crate) = db1b7546e70609ead8c06b2b4c618a1ba352364675f81608f431dd4f321fe3f1
-SIZE (rust/crates/ffmpeg-sys-next-7.0.2.crate) = 16174
+SHA256 (rust/crates/ffmpeg-next-8.0.0.crate) = d658424d233cbd993a972dd73a66ca733acd12a494c68995c9ac32ae1fe65b40
+SIZE (rust/crates/ffmpeg-next-8.0.0.crate) = 99824
+SHA256 (rust/crates/ffmpeg-sys-next-8.0.1.crate) = 9bca20aa4ee774fe384c2490096c122b0b23cf524a9910add0686691003d797b
+SIZE (rust/crates/ffmpeg-sys-next-8.0.1.crate) = 23272
+SHA256 (rust/crates/find-msvc-tools-0.1.1.crate) = 7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d
+SIZE (rust/crates/find-msvc-tools-0.1.1.crate) = 30228
SHA256 (rust/crates/glob-0.3.1.crate) = d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b
SIZE (rust/crates/glob-0.3.1.crate) = 18880
SHA256 (rust/crates/heck-0.5.0.crate) = 2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea
SIZE (rust/crates/heck-0.5.0.crate) = 11517
-SHA256 (rust/crates/hermit-abi-0.3.9.crate) = d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024
-SIZE (rust/crates/hermit-abi-0.3.9.crate) = 16165
+SHA256 (rust/crates/hermit-abi-0.5.2.crate) = fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c
+SIZE (rust/crates/hermit-abi-0.5.2.crate) = 17435
SHA256 (rust/crates/human-size-0.4.3.crate) = 9994b79e8c1a39b3166c63ae7823bb2b00831e2a96a31399c50fe69df408eaeb
SIZE (rust/crates/human-size-0.4.3.crate) = 14757
SHA256 (rust/crates/is_terminal_polyfill-1.70.1.crate) = 7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf
@@ -91,8 +93,8 @@ SHA256 (rust/crates/nom-7.1.3.crate) = d273983c5a657a70a3e8f2a01329822f3b8c8172b
SIZE (rust/crates/nom-7.1.3.crate) = 117570
SHA256 (rust/crates/num-conv-0.1.0.crate) = 51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9
SIZE (rust/crates/num-conv-0.1.0.crate) = 7444
-SHA256 (rust/crates/num_cpus-1.16.0.crate) = 4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43
-SIZE (rust/crates/num_cpus-1.16.0.crate) = 15713
+SHA256 (rust/crates/num_cpus-1.17.0.crate) = 91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b
+SIZE (rust/crates/num_cpus-1.17.0.crate) = 15874
SHA256 (rust/crates/num_threads-0.1.7.crate) = 5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9
SIZE (rust/crates/num_threads-0.1.7.crate) = 7455
SHA256 (rust/crates/pkg-config-0.3.30.crate) = d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec
@@ -111,8 +113,8 @@ SHA256 (rust/crates/regex-automata-0.4.7.crate) = 38caf58cc5ef2fed281f89292ef23f
SIZE (rust/crates/regex-automata-0.4.7.crate) = 617582
SHA256 (rust/crates/regex-syntax-0.8.4.crate) = 7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b
SIZE (rust/crates/regex-syntax-0.8.4.crate) = 347577
-SHA256 (rust/crates/rustc-hash-1.1.0.crate) = 08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2
-SIZE (rust/crates/rustc-hash-1.1.0.crate) = 9331
+SHA256 (rust/crates/rustc-hash-2.1.1.crate) = 357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d
+SIZE (rust/crates/rustc-hash-2.1.1.crate) = 14154
SHA256 (rust/crates/rustix-0.38.34.crate) = 70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f
SIZE (rust/crates/rustix-0.38.34.crate) = 365160
SHA256 (rust/crates/ryu-1.0.18.crate) = f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f
diff --git a/multimedia/wl-screenrec/files/patch-ffmpeg71 b/multimedia/wl-screenrec/files/patch-ffmpeg71
new file mode 100644
index 000000000000..f51c41547bf0
--- /dev/null
+++ b/multimedia/wl-screenrec/files/patch-ffmpeg71
@@ -0,0 +1,80 @@
+https://github.com/russelltg/wl-screenrec/commit/36b2c6f570f6
+
+$ wl-screenrec
+Opening libva device from DRM device /dev/dri/renderD128
+[in @ 0x4909a9ab5400] Setting BufferSourceContext.pix_fmt to a HW format requires hw_frames_ctx to be non-NULL!
+
+thread 'main' panicked at src/main.rs:1741:6:
+called `Result::unwrap()` on an `Err` value: ffmpeg::Error(22: Invalid argument)
+
+--- src/main.rs.orig 2024-08-04 17:10:34 UTC
++++ src/main.rs
+@@ -27,8 +27,8 @@ use ffmpeg::{
+ ffi::{
+ av_buffer_ref, av_buffersrc_parameters_alloc, av_buffersrc_parameters_set,
+ av_dict_parse_string, av_free, av_get_pix_fmt_name, av_hwframe_map, avcodec_alloc_context3,
+- avformat_query_codec, AVDRMFrameDescriptor, AVPixelFormat, AV_HWFRAME_MAP_WRITE,
+- FF_COMPLIANCE_STRICT,
++ avfilter_graph_alloc_filter, avfilter_init_dict, avformat_query_codec,
++ AVDRMFrameDescriptor, AVPixelFormat, AV_HWFRAME_MAP_WRITE, FF_COMPLIANCE_STRICT,
+ },
+ filter,
+ format::{self, Pixel},
+@@ -1728,19 +1728,19 @@ fn video_filter(
+ transform: Transform,
+ ) -> (filter::Graph, Rational) {
+ let mut g = ffmpeg::filter::graph::Graph::new();
+- g.add(
+- &filter::find("buffer").unwrap(),
+- "in",
+- // format is bogus, will be replaced below, as we need to pass
+- // hw_frames_ctx which isn't possible with args=
+- &format!(
+- "video_size=2840x2160:pix_fmt={}:time_base=1/1000000000",
+- AVPixelFormat::AV_PIX_FMT_VAAPI as c_int
+- ),
+- )
+- .unwrap();
+
++
++ // src
+ unsafe {
++ let buffersrc_ctx = avfilter_graph_alloc_filter(
++ g.as_mut_ptr(),
++ filter::find("buffer").unwrap().as_mut_ptr(),
++ c"in".as_ptr() as _,
++ );
++ if buffersrc_ctx.is_null() {
++ panic!("faield to alloc buffersrc filter");
++ }
++
+ let p = &mut *av_buffersrc_parameters_alloc();
+
+ p.width = capture_width;
+@@ -1750,21 +1750,17 @@ fn video_filter(
+ p.time_base.den = 1_000_000_000;
+ p.hw_frames_ctx = inctx.as_mut_ptr();
+
+- let sts = av_buffersrc_parameters_set(g.get("in").unwrap().as_mut_ptr(), p as *mut _);
++ let sts = av_buffersrc_parameters_set(buffersrc_ctx, p as *mut _);
+ assert_eq!(sts, 0);
+-
+ av_free(p as *mut _ as *mut _);
++
++ let sts = avfilter_init_dict(buffersrc_ctx, null_mut());
++ assert_eq!(sts, 0);
+ }
+
++ // sink
+ g.add(&filter::find("buffersink").unwrap(), "out", "")
+ .unwrap();
+-
+- let mut out = g.get("out").unwrap();
+-
+- out.set_pixel_format(match pix_fmt {
+- EncodePixelFormat::Vaapi(_) => Pixel::VAAPI,
+- EncodePixelFormat::Sw(sw) => sw,
+- });
+
+ let output_real_pixfmt_name = unsafe {
+ from_utf8_unchecked(
diff --git a/multimedia/wl-screenrec/files/patch-ffmpeg8 b/multimedia/wl-screenrec/files/patch-ffmpeg8
new file mode 100644
index 000000000000..63ee59c399d4
--- /dev/null
+++ b/multimedia/wl-screenrec/files/patch-ffmpeg8
@@ -0,0 +1,126 @@
+https://github.com/russelltg/wl-screenrec/commit/1017db6ffa0d
+
+--- Cargo.lock.orig 2024-08-04 17:10:34 UTC
++++ Cargo.lock
+@@ -68,9 +68,9 @@ name = "bindgen"
+
+ [[package]]
+ name = "bindgen"
+-version = "0.69.4"
++version = "0.72.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0"
++checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895"
+ dependencies = [
+ "bitflags",
+ "cexpr",
+@@ -88,15 +88,19 @@ name = "bitflags"
+
+ [[package]]
+ name = "bitflags"
+-version = "2.6.0"
++version = "2.9.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
++checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394"
+
+ [[package]]
+ name = "cc"
+-version = "1.1.7"
++version = "1.2.36"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc"
++checksum = "5252b3d2648e5eedbc1a6f501e3c795e07025c1e93bbf8bbdd6eef7f447a6d54"
++dependencies = [
++ "find-msvc-tools",
++ "shlex",
++]
+
+ [[package]]
+ name = "cexpr"
+@@ -233,9 +237,9 @@ name = "ffmpeg-next"
+
+ [[package]]
+ name = "ffmpeg-next"
+-version = "7.0.4"
++version = "8.0.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "19a340e3d664ad5f530147cd6d4a86ece739a829fe2d81c369389ef903bd96f6"
++checksum = "d658424d233cbd993a972dd73a66ca733acd12a494c68995c9ac32ae1fe65b40"
+ dependencies = [
+ "bitflags",
+ "ffmpeg-sys-next",
+@@ -244,9 +248,9 @@ name = "ffmpeg-sys-next"
+
+ [[package]]
+ name = "ffmpeg-sys-next"
+-version = "7.0.2"
++version = "8.0.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "db1b7546e70609ead8c06b2b4c618a1ba352364675f81608f431dd4f321fe3f1"
++checksum = "9bca20aa4ee774fe384c2490096c122b0b23cf524a9910add0686691003d797b"
+ dependencies = [
+ "bindgen",
+ "cc",
+@@ -257,6 +261,12 @@ dependencies = [
+ ]
+
+ [[package]]
++name = "find-msvc-tools"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d"
++
++[[package]]
+ name = "glob"
+ version = "0.3.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+@@ -270,9 +280,9 @@ name = "hermit-abi"
+
+ [[package]]
+ name = "hermit-abi"
+-version = "0.3.9"
++version = "0.5.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
++checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
+
+ [[package]]
+ name = "human-size"
+@@ -383,9 +393,9 @@ name = "num_cpus"
+
+ [[package]]
+ name = "num_cpus"
+-version = "1.16.0"
++version = "1.17.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
++checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b"
+ dependencies = [
+ "hermit-abi",
+ "libc",
+@@ -470,9 +480,9 @@ name = "rustc-hash"
+
+ [[package]]
+ name = "rustc-hash"
+-version = "1.1.0"
++version = "2.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
++checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
+
+ [[package]]
+ name = "rustix"
+--- Cargo.toml.orig 2024-08-04 17:10:34 UTC
++++ Cargo.toml
+@@ -27,8 +27,8 @@ wayland-protocols-wlr = { version = "0.3", features =
+ "staging",
+ ] }
+ wayland-protocols-wlr = { version = "0.3", features = ["client"] }
+-ffmpeg-next = "7.0.1"
+-ffmpeg-sys-next = "7.0.0" # need direct dep on -sys to get metadata to consume in build.rs
++ffmpeg-next = "8.0.0"
++ffmpeg-sys-next = "8.0.1" # need direct dep on -sys to get metadata to consume in build.rs
+ thiserror = "1.0.38"
+ drm-fourcc = "2.2.0"
+ human-size = "0.4.2"