@desklink/host 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +23 -0
- package/README.md +78 -48
- package/bin/desklink-host.mjs +1 -1
- package/dist/bridge.d.ts +1 -0
- package/dist/bridge.d.ts.map +1 -1
- package/dist/bridge.js +12 -4
- package/dist/bridge.js.map +1 -1
- package/dist/engineProcess.d.ts.map +1 -1
- package/dist/engineProcess.js +1 -0
- package/dist/engineProcess.js.map +1 -1
- package/dist/protocol.d.ts +26 -0
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js.map +1 -1
- package/dist/resolveEngine.d.ts +1 -1
- package/dist/resolveEngine.d.ts.map +1 -1
- package/dist/resolveEngine.js +22 -9
- package/dist/resolveEngine.js.map +1 -1
- package/docs/BOUNDARY.md +15 -7
- package/docs/PROTOCOL.md +150 -23
- package/engine/Cargo.lock +46 -1
- package/engine/Cargo.toml +12 -2
- package/engine/build.rs +28 -2
- package/engine/native/nvenc_shim.c +453 -0
- package/engine/native/vaapi_shim.c +727 -0
- package/engine/native/vpx_shim.c +54 -4
- package/engine/native/vt_shim.c +448 -0
- package/engine/src/capture.rs +75 -55
- package/engine/src/capture_mac.rs +24 -14
- package/engine/src/convert.rs +286 -61
- package/engine/src/encoder.rs +122 -13
- package/engine/src/h264.rs +188 -0
- package/engine/src/h264_nvenc.rs +308 -0
- package/engine/src/h264_openh264.rs +735 -0
- package/engine/src/h264_vaapi.rs +263 -0
- package/engine/src/h264_vt.rs +368 -0
- package/engine/src/mac.rs +6 -3
- package/engine/src/main.rs +22 -4
- package/engine/src/peer.rs +466 -28
- package/engine/src/protocol.rs +15 -2
- package/engine/src/session.rs +790 -93
- package/engine/src/x11.rs +210 -9
- package/engine/src/x11_mac.rs +12 -0
- package/engine/vendor/libva/COPYING +19 -0
- package/engine/vendor/libva/va/va.h +5450 -0
- package/engine/vendor/libva/va/va_dec_av1.h +695 -0
- package/engine/vendor/libva/va/va_dec_hevc.h +616 -0
- package/engine/vendor/libva/va/va_dec_jpeg.h +157 -0
- package/engine/vendor/libva/va/va_dec_vp8.h +249 -0
- package/engine/vendor/libva/va/va_dec_vp9.h +312 -0
- package/engine/vendor/libva/va/va_dec_vvc.h +688 -0
- package/engine/vendor/libva/va/va_drm.h +61 -0
- package/engine/vendor/libva/va/va_enc_av1.h +1010 -0
- package/engine/vendor/libva/va/va_enc_h264.h +659 -0
- package/engine/vendor/libva/va/va_enc_hevc.h +958 -0
- package/engine/vendor/libva/va/va_enc_jpeg.h +162 -0
- package/engine/vendor/libva/va/va_enc_mpeg2.h +308 -0
- package/engine/vendor/libva/va/va_enc_vp8.h +350 -0
- package/engine/vendor/libva/va/va_enc_vp9.h +639 -0
- package/engine/vendor/libva/va/va_fei.h +170 -0
- package/engine/vendor/libva/va/va_fei_h264.h +505 -0
- package/engine/vendor/libva/va/va_fei_hevc.h +254 -0
- package/engine/vendor/libva/va/va_prot.h +525 -0
- package/engine/vendor/libva/va/va_version.h +87 -0
- package/engine/vendor/libva/va/va_vpp.h +1590 -0
- package/engine/vendor/nv-codec-headers/LICENSE +24 -0
- package/engine/vendor/nv-codec-headers/README +7 -0
- package/engine/vendor/nv-codec-headers/include/ffnvcodec/nvEncodeAPI.h +3825 -0
- package/examples/reference-client.html +1 -1
- package/package.json +3 -2
package/engine/src/main.rs
CHANGED
|
@@ -23,6 +23,16 @@ mod encoder;
|
|
|
23
23
|
#[cfg(all(target_os = "macos", desklink_vpx))]
|
|
24
24
|
mod encoder;
|
|
25
25
|
#[cfg(any(target_os = "linux", all(target_os = "macos", desklink_vpx)))]
|
|
26
|
+
mod h264;
|
|
27
|
+
#[cfg(target_os = "linux")]
|
|
28
|
+
mod h264_nvenc;
|
|
29
|
+
#[cfg(target_os = "linux")]
|
|
30
|
+
mod h264_openh264;
|
|
31
|
+
#[cfg(target_os = "linux")]
|
|
32
|
+
mod h264_vaapi;
|
|
33
|
+
#[cfg(all(target_os = "macos", desklink_vpx))]
|
|
34
|
+
mod h264_vt;
|
|
35
|
+
#[cfg(any(target_os = "linux", all(target_os = "macos", desklink_vpx)))]
|
|
26
36
|
mod indicator;
|
|
27
37
|
#[cfg(target_os = "linux")]
|
|
28
38
|
mod input;
|
|
@@ -287,12 +297,19 @@ fn frame_shape(frame: &crate::convert::I420) -> u64 {
|
|
|
287
297
|
async fn probe_portal(seconds: u64) -> Result<()> {
|
|
288
298
|
let portal = portal::open(None).await?;
|
|
289
299
|
eprintln!("portal source: {:?}", portal.source);
|
|
300
|
+
// The source's own size: a zero box converts nothing and reports no frames.
|
|
301
|
+
let (width, height) = crate::convert::fit(
|
|
302
|
+
portal.source.width.max(0) as usize,
|
|
303
|
+
portal.source.height.max(0) as usize,
|
|
304
|
+
usize::MAX,
|
|
305
|
+
usize::MAX,
|
|
306
|
+
);
|
|
290
307
|
|
|
291
308
|
let (tx, rx) = std_mpsc::channel();
|
|
292
309
|
let capture = capture::start(
|
|
293
310
|
portal,
|
|
294
|
-
|
|
295
|
-
|
|
311
|
+
width,
|
|
312
|
+
height,
|
|
296
313
|
30,
|
|
297
314
|
Box::new(move |frame, seq, _raw| {
|
|
298
315
|
let _ = tx.send((frame.width, frame.height, seq));
|
|
@@ -474,9 +491,9 @@ fn render_event(notice: session::Notice) -> Option<String> {
|
|
|
474
491
|
"session.capture.stopped",
|
|
475
492
|
serde_json::json!({ "sessionId": session_id, "reason": reason }),
|
|
476
493
|
),
|
|
477
|
-
session::SessionEvent::Revoked { reason } => (
|
|
494
|
+
session::SessionEvent::Revoked { reason, code } => (
|
|
478
495
|
"session.revoked",
|
|
479
|
-
serde_json::json!({ "sessionId": session_id, "reason": reason }),
|
|
496
|
+
serde_json::json!({ "sessionId": session_id, "reason": reason, "code": code }),
|
|
480
497
|
),
|
|
481
498
|
};
|
|
482
499
|
serde_json::to_string(&Event {
|
|
@@ -538,6 +555,7 @@ async fn dispatch(
|
|
|
538
555
|
ttl: params.ttl_seconds.map(Duration::from_secs),
|
|
539
556
|
loopback_tcp: params.loopback_tcp,
|
|
540
557
|
agent_indicator: params.agent_indicator,
|
|
558
|
+
local_frames: params.local_frames,
|
|
541
559
|
ice_servers: params
|
|
542
560
|
.ice_servers
|
|
543
561
|
.into_iter()
|