diff options
Diffstat (limited to 'multimedia/wl-screenrec')
-rw-r--r-- | multimedia/wl-screenrec/Makefile | 9 | ||||
-rw-r--r-- | multimedia/wl-screenrec/Makefile.crates | 17 | ||||
-rw-r--r-- | multimedia/wl-screenrec/distinfo | 34 | ||||
-rw-r--r-- | multimedia/wl-screenrec/files/patch-ffmpeg71 | 80 | ||||
-rw-r--r-- | multimedia/wl-screenrec/files/patch-ffmpeg8 | 126 |
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" |