feat: add OBS recording engine and validation probe

clipbin-obs starts the pinned libobs on a dedicated thread, opens exactly the
bundled plugin allowlist, and records official capture sources through one
hardware encoder into keyframe-aligned Matroska segments. Status reaches
Recording only once the source has a picture and the segment grows on disk.

clipbin-probe lists and verifies hardware encoders and records from a real
capture source, printing status, health and segment events for validation.
This commit is contained in:
2026-10-08 14:12:06 +02:00
parent 80b6abdb32
commit f2eb7139da
14 changed files with 2470 additions and 3 deletions
Generated
+48 -2
View File
@@ -496,6 +496,26 @@ dependencies = [
"syn 2.0.119",
]
[[package]]
name = "bindgen"
version = "0.72.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895"
dependencies = [
"bitflags 2.13.2",
"cexpr",
"clang-sys",
"itertools 0.13.0",
"log",
"prettyplease",
"proc-macro2",
"quote",
"regex",
"rustc-hash 2.1.3",
"shlex 1.3.0",
"syn 2.0.119",
]
[[package]]
name = "bit-set"
version = "0.8.0"
@@ -851,6 +871,22 @@ dependencies = [
"gpui",
]
[[package]]
name = "clipbin-obs"
version = "0.1.0"
dependencies = [
"clipbin-core",
"libobs",
]
[[package]]
name = "clipbin-probe"
version = "0.1.0"
dependencies = [
"clipbin-core",
"clipbin-obs",
]
[[package]]
name = "cocoa"
version = "0.25.0"
@@ -2084,7 +2120,7 @@ dependencies = [
"as-raw-xcb-connection",
"ashpd 0.11.1",
"async-task",
"bindgen",
"bindgen 0.71.1",
"blade-graphics",
"blade-macros",
"blade-util",
@@ -2236,7 +2272,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05cb8912ae17371725132d2b7eec6797a255accc95d58ee5c1134b529810f14b"
dependencies = [
"anyhow",
"bindgen",
"bindgen 0.71.1",
"core-foundation 0.10.0",
"core-video",
"ctor",
@@ -2940,6 +2976,16 @@ version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
[[package]]
name = "libobs"
version = "5.0.1+32.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c8956a7534b34783f962fd8f9b16383bcf3a2b535629fd68628b205e849bd17"
dependencies = [
"bindgen 0.72.1",
"pkg-config",
]
[[package]]
name = "libredox"
version = "0.1.25"