summaryrefslogtreecommitdiff
path: root/multimedia/wl-screenrec/files
diff options
context:
space:
mode:
Diffstat (limited to 'multimedia/wl-screenrec/files')
-rw-r--r--multimedia/wl-screenrec/files/patch-ffmpeg7180
-rw-r--r--multimedia/wl-screenrec/files/patch-ffmpeg8126
2 files changed, 206 insertions, 0 deletions
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"