@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.
Files changed (69) hide show
  1. package/NOTICE +23 -0
  2. package/README.md +78 -48
  3. package/bin/desklink-host.mjs +1 -1
  4. package/dist/bridge.d.ts +1 -0
  5. package/dist/bridge.d.ts.map +1 -1
  6. package/dist/bridge.js +12 -4
  7. package/dist/bridge.js.map +1 -1
  8. package/dist/engineProcess.d.ts.map +1 -1
  9. package/dist/engineProcess.js +1 -0
  10. package/dist/engineProcess.js.map +1 -1
  11. package/dist/protocol.d.ts +26 -0
  12. package/dist/protocol.d.ts.map +1 -1
  13. package/dist/protocol.js.map +1 -1
  14. package/dist/resolveEngine.d.ts +1 -1
  15. package/dist/resolveEngine.d.ts.map +1 -1
  16. package/dist/resolveEngine.js +22 -9
  17. package/dist/resolveEngine.js.map +1 -1
  18. package/docs/BOUNDARY.md +15 -7
  19. package/docs/PROTOCOL.md +150 -23
  20. package/engine/Cargo.lock +46 -1
  21. package/engine/Cargo.toml +12 -2
  22. package/engine/build.rs +28 -2
  23. package/engine/native/nvenc_shim.c +453 -0
  24. package/engine/native/vaapi_shim.c +727 -0
  25. package/engine/native/vpx_shim.c +54 -4
  26. package/engine/native/vt_shim.c +448 -0
  27. package/engine/src/capture.rs +75 -55
  28. package/engine/src/capture_mac.rs +24 -14
  29. package/engine/src/convert.rs +286 -61
  30. package/engine/src/encoder.rs +122 -13
  31. package/engine/src/h264.rs +188 -0
  32. package/engine/src/h264_nvenc.rs +308 -0
  33. package/engine/src/h264_openh264.rs +735 -0
  34. package/engine/src/h264_vaapi.rs +263 -0
  35. package/engine/src/h264_vt.rs +368 -0
  36. package/engine/src/mac.rs +6 -3
  37. package/engine/src/main.rs +22 -4
  38. package/engine/src/peer.rs +466 -28
  39. package/engine/src/protocol.rs +15 -2
  40. package/engine/src/session.rs +790 -93
  41. package/engine/src/x11.rs +210 -9
  42. package/engine/src/x11_mac.rs +12 -0
  43. package/engine/vendor/libva/COPYING +19 -0
  44. package/engine/vendor/libva/va/va.h +5450 -0
  45. package/engine/vendor/libva/va/va_dec_av1.h +695 -0
  46. package/engine/vendor/libva/va/va_dec_hevc.h +616 -0
  47. package/engine/vendor/libva/va/va_dec_jpeg.h +157 -0
  48. package/engine/vendor/libva/va/va_dec_vp8.h +249 -0
  49. package/engine/vendor/libva/va/va_dec_vp9.h +312 -0
  50. package/engine/vendor/libva/va/va_dec_vvc.h +688 -0
  51. package/engine/vendor/libva/va/va_drm.h +61 -0
  52. package/engine/vendor/libva/va/va_enc_av1.h +1010 -0
  53. package/engine/vendor/libva/va/va_enc_h264.h +659 -0
  54. package/engine/vendor/libva/va/va_enc_hevc.h +958 -0
  55. package/engine/vendor/libva/va/va_enc_jpeg.h +162 -0
  56. package/engine/vendor/libva/va/va_enc_mpeg2.h +308 -0
  57. package/engine/vendor/libva/va/va_enc_vp8.h +350 -0
  58. package/engine/vendor/libva/va/va_enc_vp9.h +639 -0
  59. package/engine/vendor/libva/va/va_fei.h +170 -0
  60. package/engine/vendor/libva/va/va_fei_h264.h +505 -0
  61. package/engine/vendor/libva/va/va_fei_hevc.h +254 -0
  62. package/engine/vendor/libva/va/va_prot.h +525 -0
  63. package/engine/vendor/libva/va/va_version.h +87 -0
  64. package/engine/vendor/libva/va/va_vpp.h +1590 -0
  65. package/engine/vendor/nv-codec-headers/LICENSE +24 -0
  66. package/engine/vendor/nv-codec-headers/README +7 -0
  67. package/engine/vendor/nv-codec-headers/include/ffnvcodec/nvEncodeAPI.h +3825 -0
  68. package/examples/reference-client.html +1 -1
  69. package/package.json +3 -2
@@ -139,6 +139,15 @@ pub struct OpenParams {
139
139
  /// Show local, capture-excluded feedback for an agent controlling this session.
140
140
  #[serde(default)]
141
141
  pub agent_indicator: bool,
142
+ /// Keep the latest pre-encode frame for `session.frame` and emit
143
+ /// `session.frame.changed`. A consumer that only streams turns it off, and
144
+ /// the engine then spends nothing per frame on either.
145
+ #[serde(default = "default_local_frames")]
146
+ pub local_frames: bool,
147
+ }
148
+
149
+ fn default_local_frames() -> bool {
150
+ true
142
151
  }
143
152
 
144
153
  /// The encode box when the consumer names none: a desktop's own pixels up to
@@ -153,8 +162,10 @@ fn default_max_height() -> usize {
153
162
  fn default_bitrate() -> u32 {
154
163
  0
155
164
  }
165
+ /// A still desktop costs nothing at 60: frames are only produced on change,
166
+ /// so consumers get the smooth path without naming a rate.
156
167
  fn default_fps() -> u32 {
157
- 30
168
+ 60
158
169
  }
159
170
 
160
171
  #[derive(Debug, Deserialize)]
@@ -366,6 +377,7 @@ pub enum ControlReply<'a> {
366
377
  },
367
378
  Revoked {
368
379
  reason: &'a str,
380
+ code: &'a str,
369
381
  },
370
382
  }
371
383
 
@@ -501,7 +513,8 @@ mod tests {
501
513
  params.bitrate_kbps, 0,
502
514
  "the engine sizes the rate to the surface"
503
515
  );
504
- assert_eq!(params.max_fps, 30);
516
+ assert_eq!(params.max_fps, 60);
517
+ assert!(params.local_frames, "session.frame works unless turned off");
505
518
  assert!(
506
519
  !params.agent_indicator,
507
520
  "human control has no overlay by default"