noobs 0.0.89 → 0.0.130

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 (215) hide show
  1. package/dist/data/obs-plugins/obs-filters/LUTs/black_and_white.png +0 -0
  2. package/dist/data/obs-plugins/obs-filters/LUTs/grayscale.cube +32769 -0
  3. package/dist/data/obs-plugins/obs-filters/LUTs/grayscale.png +0 -0
  4. package/dist/data/obs-plugins/obs-filters/LUTs/invert.png +0 -0
  5. package/dist/data/obs-plugins/obs-filters/LUTs/original.cube +33 -0
  6. package/dist/data/obs-plugins/obs-filters/LUTs/original.png +0 -0
  7. package/dist/data/obs-plugins/obs-filters/LUTs/posterize.png +0 -0
  8. package/dist/data/obs-plugins/obs-filters/LUTs/red_isolated.png +0 -0
  9. package/dist/data/obs-plugins/obs-filters/LUTs/teal_lows_orange_highs.png +0 -0
  10. package/dist/data/obs-plugins/obs-filters/blend_add_filter.effect +54 -0
  11. package/dist/data/obs-plugins/obs-filters/blend_mul_filter.effect +54 -0
  12. package/dist/data/obs-plugins/obs-filters/blend_sub_filter.effect +54 -0
  13. package/dist/data/obs-plugins/obs-filters/chroma_key_filter.effect +99 -0
  14. package/dist/data/obs-plugins/obs-filters/chroma_key_filter_v2.effect +111 -0
  15. package/dist/data/obs-plugins/obs-filters/color.effect +95 -0
  16. package/dist/data/obs-plugins/obs-filters/color_correction_filter.effect +74 -0
  17. package/dist/data/obs-plugins/obs-filters/color_grade_filter.effect +177 -0
  18. package/dist/data/obs-plugins/obs-filters/color_key_filter.effect +65 -0
  19. package/dist/data/obs-plugins/obs-filters/color_key_filter_v2.effect +77 -0
  20. package/dist/data/obs-plugins/obs-filters/crop_filter.effect +95 -0
  21. package/dist/data/obs-plugins/obs-filters/hdr_tonemap_filter.effect +97 -0
  22. package/dist/data/obs-plugins/obs-filters/locale/af-ZA.ini +89 -0
  23. package/dist/data/obs-plugins/obs-filters/locale/ar-SA.ini +133 -0
  24. package/dist/data/obs-plugins/obs-filters/locale/az-AZ.ini +1 -0
  25. package/dist/data/obs-plugins/obs-filters/locale/ba-RU.ini +19 -0
  26. package/dist/data/obs-plugins/obs-filters/locale/be-BY.ini +134 -0
  27. package/dist/data/obs-plugins/obs-filters/locale/bg-BG.ini +71 -0
  28. package/dist/data/obs-plugins/obs-filters/locale/bn-BD.ini +106 -0
  29. package/dist/data/obs-plugins/obs-filters/locale/ca-ES.ini +128 -0
  30. package/dist/data/obs-plugins/obs-filters/locale/cs-CZ.ini +130 -0
  31. package/dist/data/obs-plugins/obs-filters/locale/da-DK.ini +119 -0
  32. package/dist/data/obs-plugins/obs-filters/locale/de-DE.ini +113 -0
  33. package/dist/data/obs-plugins/obs-filters/locale/el-GR.ini +128 -0
  34. package/dist/data/obs-plugins/obs-filters/locale/en-GB.ini +12 -0
  35. package/dist/data/obs-plugins/obs-filters/locale/en-US.ini +138 -0
  36. package/dist/data/obs-plugins/obs-filters/locale/eo-UY.ini +1 -0
  37. package/dist/data/obs-plugins/obs-filters/locale/es-ES.ini +129 -0
  38. package/dist/data/obs-plugins/obs-filters/locale/et-EE.ini +132 -0
  39. package/dist/data/obs-plugins/obs-filters/locale/eu-ES.ini +127 -0
  40. package/dist/data/obs-plugins/obs-filters/locale/fa-IR.ini +137 -0
  41. package/dist/data/obs-plugins/obs-filters/locale/fi-FI.ini +127 -0
  42. package/dist/data/obs-plugins/obs-filters/locale/fil-PH.ini +111 -0
  43. package/dist/data/obs-plugins/obs-filters/locale/fr-FR.ini +124 -0
  44. package/dist/data/obs-plugins/obs-filters/locale/gd-GB.ini +94 -0
  45. package/dist/data/obs-plugins/obs-filters/locale/gl-ES.ini +132 -0
  46. package/dist/data/obs-plugins/obs-filters/locale/he-IL.ini +135 -0
  47. package/dist/data/obs-plugins/obs-filters/locale/hi-IN.ini +134 -0
  48. package/dist/data/obs-plugins/obs-filters/locale/hr-HR.ini +80 -0
  49. package/dist/data/obs-plugins/obs-filters/locale/hu-HU.ini +131 -0
  50. package/dist/data/obs-plugins/obs-filters/locale/hy-AM.ini +130 -0
  51. package/dist/data/obs-plugins/obs-filters/locale/id-ID.ini +112 -0
  52. package/dist/data/obs-plugins/obs-filters/locale/it-IT.ini +130 -0
  53. package/dist/data/obs-plugins/obs-filters/locale/ja-JP.ini +134 -0
  54. package/dist/data/obs-plugins/obs-filters/locale/ka-GE.ini +133 -0
  55. package/dist/data/obs-plugins/obs-filters/locale/kaa.ini +41 -0
  56. package/dist/data/obs-plugins/obs-filters/locale/kab-KAB.ini +56 -0
  57. package/dist/data/obs-plugins/obs-filters/locale/kmr-TR.ini +126 -0
  58. package/dist/data/obs-plugins/obs-filters/locale/ko-KR.ini +134 -0
  59. package/dist/data/obs-plugins/obs-filters/locale/ms-MY.ini +131 -0
  60. package/dist/data/obs-plugins/obs-filters/locale/nb-NO.ini +115 -0
  61. package/dist/data/obs-plugins/obs-filters/locale/nl-NL.ini +111 -0
  62. package/dist/data/obs-plugins/obs-filters/locale/nn-NO.ini +19 -0
  63. package/dist/data/obs-plugins/obs-filters/locale/pl-PL.ini +127 -0
  64. package/dist/data/obs-plugins/obs-filters/locale/pt-BR.ini +128 -0
  65. package/dist/data/obs-plugins/obs-filters/locale/pt-PT.ini +130 -0
  66. package/dist/data/obs-plugins/obs-filters/locale/ro-RO.ini +125 -0
  67. package/dist/data/obs-plugins/obs-filters/locale/ru-RU.ini +135 -0
  68. package/dist/data/obs-plugins/obs-filters/locale/si-LK.ini +44 -0
  69. package/dist/data/obs-plugins/obs-filters/locale/sk-SK.ini +131 -0
  70. package/dist/data/obs-plugins/obs-filters/locale/sl-SI.ini +133 -0
  71. package/dist/data/obs-plugins/obs-filters/locale/sr-CS.ini +90 -0
  72. package/dist/data/obs-plugins/obs-filters/locale/sr-SP.ini +97 -0
  73. package/dist/data/obs-plugins/obs-filters/locale/sv-SE.ini +129 -0
  74. package/dist/data/obs-plugins/obs-filters/locale/szl-PL.ini +94 -0
  75. package/dist/data/obs-plugins/obs-filters/locale/ta-IN.ini +28 -0
  76. package/dist/data/obs-plugins/obs-filters/locale/th-TH.ini +132 -0
  77. package/dist/data/obs-plugins/obs-filters/locale/tl-PH.ini +64 -0
  78. package/dist/data/obs-plugins/obs-filters/locale/tr-TR.ini +129 -0
  79. package/dist/data/obs-plugins/obs-filters/locale/tt-RU.ini +27 -0
  80. package/dist/data/obs-plugins/obs-filters/locale/ug-CN.ini +133 -0
  81. package/dist/data/obs-plugins/obs-filters/locale/uk-UA.ini +135 -0
  82. package/dist/data/obs-plugins/obs-filters/locale/vi-VN.ini +131 -0
  83. package/dist/data/obs-plugins/obs-filters/locale/zh-CN.ini +138 -0
  84. package/dist/data/obs-plugins/obs-filters/locale/zh-TW.ini +136 -0
  85. package/dist/data/obs-plugins/obs-filters/luma_key_filter.effect +52 -0
  86. package/dist/data/obs-plugins/obs-filters/luma_key_filter_v2.effect +54 -0
  87. package/dist/data/obs-plugins/obs-filters/mask_alpha_filter.effect +54 -0
  88. package/dist/data/obs-plugins/obs-filters/mask_color_filter.effect +55 -0
  89. package/dist/data/obs-plugins/obs-filters/rtx_greenscreen.effect +183 -0
  90. package/dist/data/obs-plugins/obs-filters/sharpness.effect +76 -0
  91. package/dist/data/obs-plugins/obs-nvenc/locale/ar-SA.ini +60 -0
  92. package/dist/data/obs-plugins/obs-nvenc/locale/be-BY.ini +59 -0
  93. package/dist/data/obs-plugins/obs-nvenc/locale/bg-BG.ini +2 -0
  94. package/dist/data/obs-plugins/obs-nvenc/locale/ca-ES.ini +59 -0
  95. package/dist/data/obs-plugins/obs-nvenc/locale/cs-CZ.ini +55 -0
  96. package/dist/data/obs-plugins/obs-nvenc/locale/da-DK.ini +54 -0
  97. package/dist/data/obs-plugins/obs-nvenc/locale/de-DE.ini +55 -0
  98. package/dist/data/obs-plugins/obs-nvenc/locale/en-GB.ini +9 -0
  99. package/dist/data/obs-plugins/obs-nvenc/locale/en-US.ini +75 -0
  100. package/dist/data/obs-plugins/obs-nvenc/locale/es-ES.ini +59 -0
  101. package/dist/data/obs-plugins/obs-nvenc/locale/et-EE.ini +36 -0
  102. package/dist/data/obs-plugins/obs-nvenc/locale/fa-IR.ini +60 -0
  103. package/dist/data/obs-plugins/obs-nvenc/locale/fi-FI.ini +59 -0
  104. package/dist/data/obs-plugins/obs-nvenc/locale/fr-FR.ini +59 -0
  105. package/dist/data/obs-plugins/obs-nvenc/locale/gl-ES.ini +60 -0
  106. package/dist/data/obs-plugins/obs-nvenc/locale/he-IL.ini +60 -0
  107. package/dist/data/obs-plugins/obs-nvenc/locale/hi-IN.ini +60 -0
  108. package/dist/data/obs-plugins/obs-nvenc/locale/hu-HU.ini +60 -0
  109. package/dist/data/obs-plugins/obs-nvenc/locale/id-ID.ini +55 -0
  110. package/dist/data/obs-plugins/obs-nvenc/locale/is-IS.ini +2 -0
  111. package/dist/data/obs-plugins/obs-nvenc/locale/it-IT.ini +60 -0
  112. package/dist/data/obs-plugins/obs-nvenc/locale/ja-JP.ini +59 -0
  113. package/dist/data/obs-plugins/obs-nvenc/locale/ka-GE.ini +60 -0
  114. package/dist/data/obs-plugins/obs-nvenc/locale/kaa.ini +13 -0
  115. package/dist/data/obs-plugins/obs-nvenc/locale/kmr-TR.ini +20 -0
  116. package/dist/data/obs-plugins/obs-nvenc/locale/ko-KR.ini +58 -0
  117. package/dist/data/obs-plugins/obs-nvenc/locale/ms-MY.ini +58 -0
  118. package/dist/data/obs-plugins/obs-nvenc/locale/nb-NO.ini +24 -0
  119. package/dist/data/obs-plugins/obs-nvenc/locale/nl-NL.ini +54 -0
  120. package/dist/data/obs-plugins/obs-nvenc/locale/nn-NO.ini +1 -0
  121. package/dist/data/obs-plugins/obs-nvenc/locale/pl-PL.ini +55 -0
  122. package/dist/data/obs-plugins/obs-nvenc/locale/pt-BR.ini +58 -0
  123. package/dist/data/obs-plugins/obs-nvenc/locale/pt-PT.ini +60 -0
  124. package/dist/data/obs-plugins/obs-nvenc/locale/ru-RU.ini +60 -0
  125. package/dist/data/obs-plugins/obs-nvenc/locale/sk-SK.ini +56 -0
  126. package/dist/data/obs-plugins/obs-nvenc/locale/sv-SE.ini +58 -0
  127. package/dist/data/obs-plugins/obs-nvenc/locale/th-TH.ini +59 -0
  128. package/dist/data/obs-plugins/obs-nvenc/locale/tr-TR.ini +60 -0
  129. package/dist/data/obs-plugins/obs-nvenc/locale/tt-RU.ini +2 -0
  130. package/dist/data/obs-plugins/obs-nvenc/locale/ug-CN.ini +60 -0
  131. package/dist/data/obs-plugins/obs-nvenc/locale/uk-UA.ini +60 -0
  132. package/dist/data/obs-plugins/obs-nvenc/locale/vi-VN.ini +60 -0
  133. package/dist/data/obs-plugins/obs-nvenc/locale/zh-CN.ini +60 -0
  134. package/dist/data/obs-plugins/obs-nvenc/locale/zh-TW.ini +60 -0
  135. package/dist/data/obs-plugins/obs-qsv11/locale/af-ZA.ini +19 -0
  136. package/dist/data/obs-plugins/obs-qsv11/locale/ar-SA.ini +20 -0
  137. package/dist/data/obs-plugins/obs-qsv11/locale/ba-RU.ini +2 -0
  138. package/dist/data/obs-plugins/obs-qsv11/locale/be-BY.ini +20 -0
  139. package/dist/data/obs-plugins/obs-qsv11/locale/bg-BG.ini +7 -0
  140. package/dist/data/obs-plugins/obs-qsv11/locale/bn-BD.ini +8 -0
  141. package/dist/data/obs-plugins/obs-qsv11/locale/ca-ES.ini +20 -0
  142. package/dist/data/obs-plugins/obs-qsv11/locale/cs-CZ.ini +19 -0
  143. package/dist/data/obs-plugins/obs-qsv11/locale/da-DK.ini +19 -0
  144. package/dist/data/obs-plugins/obs-qsv11/locale/de-DE.ini +19 -0
  145. package/dist/data/obs-plugins/obs-qsv11/locale/el-GR.ini +20 -0
  146. package/dist/data/obs-plugins/obs-qsv11/locale/en-GB.ini +1 -0
  147. package/dist/data/obs-plugins/obs-qsv11/locale/en-US.ini +21 -0
  148. package/dist/data/obs-plugins/obs-qsv11/locale/es-ES.ini +19 -0
  149. package/dist/data/obs-plugins/obs-qsv11/locale/et-EE.ini +20 -0
  150. package/dist/data/obs-plugins/obs-qsv11/locale/eu-ES.ini +11 -0
  151. package/dist/data/obs-plugins/obs-qsv11/locale/fa-IR.ini +20 -0
  152. package/dist/data/obs-plugins/obs-qsv11/locale/fi-FI.ini +20 -0
  153. package/dist/data/obs-plugins/obs-qsv11/locale/fil-PH.ini +11 -0
  154. package/dist/data/obs-plugins/obs-qsv11/locale/fr-FR.ini +20 -0
  155. package/dist/data/obs-plugins/obs-qsv11/locale/gd-GB.ini +8 -0
  156. package/dist/data/obs-plugins/obs-qsv11/locale/gl-ES.ini +20 -0
  157. package/dist/data/obs-plugins/obs-qsv11/locale/he-IL.ini +20 -0
  158. package/dist/data/obs-plugins/obs-qsv11/locale/hi-IN.ini +20 -0
  159. package/dist/data/obs-plugins/obs-qsv11/locale/hr-HR.ini +14 -0
  160. package/dist/data/obs-plugins/obs-qsv11/locale/hu-HU.ini +20 -0
  161. package/dist/data/obs-plugins/obs-qsv11/locale/hy-AM.ini +13 -0
  162. package/dist/data/obs-plugins/obs-qsv11/locale/id-ID.ini +18 -0
  163. package/dist/data/obs-plugins/obs-qsv11/locale/is-IS.ini +1 -0
  164. package/dist/data/obs-plugins/obs-qsv11/locale/it-IT.ini +20 -0
  165. package/dist/data/obs-plugins/obs-qsv11/locale/ja-JP.ini +16 -0
  166. package/dist/data/obs-plugins/obs-qsv11/locale/ka-GE.ini +20 -0
  167. package/dist/data/obs-plugins/obs-qsv11/locale/kaa.ini +10 -0
  168. package/dist/data/obs-plugins/obs-qsv11/locale/kab-KAB.ini +5 -0
  169. package/dist/data/obs-plugins/obs-qsv11/locale/kmr-TR.ini +12 -0
  170. package/dist/data/obs-plugins/obs-qsv11/locale/ko-KR.ini +20 -0
  171. package/dist/data/obs-plugins/obs-qsv11/locale/ms-MY.ini +20 -0
  172. package/dist/data/obs-plugins/obs-qsv11/locale/nb-NO.ini +16 -0
  173. package/dist/data/obs-plugins/obs-qsv11/locale/nl-NL.ini +18 -0
  174. package/dist/data/obs-plugins/obs-qsv11/locale/nn-NO.ini +2 -0
  175. package/dist/data/obs-plugins/obs-qsv11/locale/oc-FR.ini +1 -0
  176. package/dist/data/obs-plugins/obs-qsv11/locale/pl-PL.ini +16 -0
  177. package/dist/data/obs-plugins/obs-qsv11/locale/pt-BR.ini +20 -0
  178. package/dist/data/obs-plugins/obs-qsv11/locale/pt-PT.ini +20 -0
  179. package/dist/data/obs-plugins/obs-qsv11/locale/ro-RO.ini +20 -0
  180. package/dist/data/obs-plugins/obs-qsv11/locale/ru-RU.ini +20 -0
  181. package/dist/data/obs-plugins/obs-qsv11/locale/si-LK.ini +8 -0
  182. package/dist/data/obs-plugins/obs-qsv11/locale/sk-SK.ini +19 -0
  183. package/dist/data/obs-plugins/obs-qsv11/locale/sl-SI.ini +20 -0
  184. package/dist/data/obs-plugins/obs-qsv11/locale/sr-CS.ini +6 -0
  185. package/dist/data/obs-plugins/obs-qsv11/locale/sr-SP.ini +10 -0
  186. package/dist/data/obs-plugins/obs-qsv11/locale/sv-SE.ini +20 -0
  187. package/dist/data/obs-plugins/obs-qsv11/locale/ta-IN.ini +2 -0
  188. package/dist/data/obs-plugins/obs-qsv11/locale/th-TH.ini +20 -0
  189. package/dist/data/obs-plugins/obs-qsv11/locale/tl-PH.ini +5 -0
  190. package/dist/data/obs-plugins/obs-qsv11/locale/tr-TR.ini +20 -0
  191. package/dist/data/obs-plugins/obs-qsv11/locale/tt-RU.ini +3 -0
  192. package/dist/data/obs-plugins/obs-qsv11/locale/ug-CN.ini +20 -0
  193. package/dist/data/obs-plugins/obs-qsv11/locale/uk-UA.ini +20 -0
  194. package/dist/data/obs-plugins/obs-qsv11/locale/vi-VN.ini +20 -0
  195. package/dist/data/obs-plugins/obs-qsv11/locale/zh-CN.ini +20 -0
  196. package/dist/data/obs-plugins/obs-qsv11/locale/zh-TW.ini +20 -0
  197. package/dist/data/obs-plugins/win-capture/get-graphics-offsets32.exe +0 -0
  198. package/dist/data/obs-plugins/win-capture/get-graphics-offsets64.exe +0 -0
  199. package/dist/data/obs-plugins/win-capture/graphics-hook32.dll +0 -0
  200. package/dist/data/obs-plugins/win-capture/graphics-hook64.dll +0 -0
  201. package/dist/data/obs-plugins/win-capture/inject-helper32.exe +0 -0
  202. package/dist/data/obs-plugins/win-capture/inject-helper64.exe +0 -0
  203. package/dist/noobs.node +0 -0
  204. package/dist/obs-plugins/image-source.dll +0 -0
  205. package/dist/obs-plugins/obs-filters.dll +0 -0
  206. package/dist/obs-plugins/obs-nvenc.dll +0 -0
  207. package/dist/obs-plugins/obs-qsv11.dll +0 -0
  208. package/dist/obs-plugins/obs-x264.dll +0 -0
  209. package/dist/obs-plugins/win-capture.dll +0 -0
  210. package/dist/obs-plugins/win-wasapi.dll +0 -0
  211. package/index.d.ts +24 -18
  212. package/package.json +1 -1
  213. package/src/main.cpp +215 -33
  214. package/src/obs_interface.cpp +598 -288
  215. package/src/obs_interface.h +85 -38
@@ -4,10 +4,35 @@
4
4
  #include <napi.h>
5
5
  #include <windows.h>
6
6
  #include <map>
7
+ #include <string>
8
+ #include <optional>
9
+
10
+ #define AUDIO_INPUT "wasapi_input_capture"
11
+ #define AUDIO_OUTPUT "wasapi_output_capture"
12
+ #define AUDIO_PROCESS "wasapi_process_output_capture"
13
+
14
+ class ObsInterface;
7
15
 
8
16
  struct SignalData {
17
+ std::string type;
9
18
  std::string id;
10
19
  long long code;
20
+ std::optional<float> value;
21
+ };
22
+
23
+ struct SignalContext {
24
+ ObsInterface* self;
25
+ std::string id;
26
+ };
27
+
28
+ struct PreviewInfo {
29
+ uint32_t canvasWidth, canvasHeight;
30
+ uint32_t displayWidth, displayHeight;
31
+ };
32
+
33
+ struct SourceSize {
34
+ uint32_t width;
35
+ uint32_t height;
11
36
  };
12
37
 
13
38
  class ObsInterface {
@@ -15,24 +40,30 @@ class ObsInterface {
15
40
  ObsInterface(
16
41
  const std::string& distPath, // Where to look for plugins and data
17
42
  const std::string& logPath, // Where to write logs to
18
- const std::string& recordingPath, // Where to save recordings
19
43
  Napi::ThreadSafeFunction cb // JavaScript callback
20
44
  );
21
45
 
22
46
  ~ObsInterface();
23
47
 
24
- bool setBuffering(bool buffering); // In buffering mode, the recording is stored in memory and can be converted to a file later.
25
- void startBuffering(); // Start buffering to memory.
26
- void startRecording(int offset); // Convert the active buffered recording to a real one.
27
- void stopRecording(); // Stop the recording.
28
- std::string getLastRecording(); // Get the last recorded file path.
29
- void setRecordingDir(const std::string& recordingPath); // Output must not be active when calling this.
48
+ void startBuffering(); // Start buffering to memory.
49
+ void startRecording(int offset); // Convert the active buffered recording to a real one.
50
+ void stopRecording(); // Stop the recording.
51
+ void forceStopRecording(); // Force stop the recording, this will not save the current recording.
52
+ std::string getLastRecording(); // Get the last recorded file path.
53
+ void setBuffering(bool buffer); // Enable or disable buffering.
54
+ void setRecordingDir(const std::string& recordingPath); // Set the recording path.
55
+ void setVideoContext(int fps, int width, int height); // Reset video settings.
30
56
 
31
- void createSource(std::string name, std::string type); // Create a new source
32
- void deleteSource(std::string name); // Release a source.
33
- obs_data_t* getSourceSettings(std::string name); // Get the current settings.
57
+ std::string createSource(std::string name, std::string type); // Create a new source, returns the name of the source which can vary from the requested.
58
+ void deleteSource(std::string name); // Release a source.
59
+ obs_data_t* getSourceSettings(std::string name); // Get the current settings.
34
60
  void setSourceSettings(std::string name, obs_data_t* settings); // Set settings.
35
- obs_properties_t* getSourceProperties(std::string name); // Get the settings schema.
61
+ obs_properties_t* getSourceProperties(std::string name); // Get the settings schema.
62
+ void setMuteAudioInputs(bool mute); // Mute or unmute all audio inputs.
63
+ void setSourceVolume(std::string name, float volume); // Set the volume of an audio source.
64
+ void setVolmeterEnabled(bool enabled); // Enable volmeters.
65
+ void setAudioSuppression(bool enabled); // Enable audio suppression.
66
+ void setForceMono(bool enabled); // Enable force mono audio.
36
67
 
37
68
  void addSourceToScene(std::string name); // Add source to scene.
38
69
  void removeSourceFromScene(std::string name); // Remove source from scene.
@@ -40,49 +71,52 @@ class ObsInterface {
40
71
  void setSourcePos(std::string name, vec2* pos, vec2* scale); // Size does not get set here because it's set by the source itself.
41
72
 
42
73
  void initPreview(HWND parent); // Must call this before showPreview to setup resources.
43
- void showPreview(int x, int y, int width, int height); // Also used for moving and resizing.
44
- void hidePreview(); // Hide the preview display.
45
- float getPreviewScaleFactor(); // Get the current scale factor of the preview.
74
+ void configurePreview(int x, int y, int width, int height); // Move and resize the preview display.
75
+ void showPreview(); // Show the preview display.
76
+ void hidePreview(); // Hide the preview display, but leave it running.
77
+ void disablePreview(); // Disable the preview display, to save resources.
78
+ PreviewInfo getPreviewInfo(); // Get the dimensions of the display, and the base canvas.
46
79
  void setDrawSourceOutline(bool enabled); // Red box around source
47
80
  bool getDrawSourceOutlineEnabled();
48
81
 
49
- std::vector<std::string> get_available_video_encoders();
82
+ std::vector<std::string> listAvailableVideoEncoders(); // Return a list of available video encoders.
83
+ void setVideoEncoder(std::string id, obs_data_t* settings); // Set the video encoder to use.
84
+
85
+ std::map<std::string, obs_source_t*> sources; // Map of source names to obs_source_t pointers.
86
+ std::map<std::string, SourceSize> sizes; // Map of source names to their last known size, used for firing callbacks on size changes.
87
+ std::map<std::string, obs_volmeter_t*> volmeters; // Map of source names to obs_volmeter_t pointers.
88
+ std::map<std::string, obs_source_t*> filters; // Map of source names to obs_source_t filter pointers.
89
+
90
+ void sourceCallback(std::string name); // Send callback for source change.
91
+ void zeroVolmeter(std::string name); // Zero the volmeter for a source.
50
92
 
51
- // TODO
52
- // Configure video
53
- // Configure audio
54
- // List audio source
55
- // Reconfigure audio sources
56
- // Reconfigure video sources
57
-
58
93
  private:
59
- obs_output_t *file_output = nullptr;
60
- obs_output_t *buffer_output = nullptr;
94
+ obs_output_t *output = nullptr;
61
95
  obs_scene_t *scene = nullptr;
62
- obs_encoder_t *file_video_encoder = nullptr;
63
- obs_encoder_t *file_audio_encoder = nullptr;
64
- obs_encoder_t *buffer_video_encoder = nullptr;
65
- obs_encoder_t *buffer_audio_encoder = nullptr;
96
+
97
+ obs_encoder_t *video_encoder = nullptr;
98
+ obs_encoder_t *audio_encoder = nullptr;
99
+
66
100
  obs_display_t *display = nullptr;
67
101
  HWND preview_hwnd = nullptr; // window handle for scene preview
68
102
  Napi::ThreadSafeFunction jscb; // javascript callback
69
103
  std::string recording_path = "";
104
+ std::string unbuffered_output_filename = "";
105
+
70
106
  bool buffering = false; // Whether we are buffering the recording in memory.
71
107
  bool drawSourceOutline = false; // Draw red outline around source
72
- std::map<std::string, obs_source_t*> sources; // Map of source names to obs_source_t pointers.
73
-
74
108
  void init_obs(const std::string& distPath);
75
- void reset_video();
76
- void reset_audio();
77
- void load_module(const char* module, const char* data); // Load a module, data is optional.
109
+ int reset_video(int fps, int width, int height);
110
+ bool reset_audio();
111
+ void load_module(const char* module, const char* data, bool allowFail); // Load a module, data is optional.
78
112
  void connect_signal_handlers(obs_output_t *output);
79
113
  void disconnect_signal_handlers(obs_output_t *output);
80
114
 
81
- static void output_signal_handler_starting(void *data, calldata_t *cd);
82
- static void output_signal_handler_start(void *data, calldata_t *cd);
83
- static void output_signal_handler_stop(void *data, calldata_t *cd);
84
- static void output_signal_handler_stopping(void *data, calldata_t *cd);
85
- static void output_signal_handler_saved(void *data, calldata_t *cd);
115
+ SignalContext* starting_ctx;
116
+ SignalContext* start_ctx;
117
+ SignalContext* stopping_ctx;
118
+ SignalContext* stop_ctx;
119
+ static void output_signal_handler(void *data, calldata_t *cd);
86
120
 
87
121
  void list_encoders(obs_encoder_type type = OBS_ENCODER_VIDEO);
88
122
  void list_source_types();
@@ -92,6 +126,19 @@ class ObsInterface {
92
126
  void create_scene();
93
127
  void create_output();
94
128
 
129
+ std::string video_encoder_id = "obs_x264"; // The video encoder ID to use.
130
+ obs_data_t* video_encoder_settings = obs_data_create(); // Settings for the video encoder.
95
131
  void create_video_encoders();
96
132
  void create_audio_encoders();
133
+
134
+ bool volmeter_enabled = false; // Whether the volmeter callback is enabled.
135
+ bool audio_suppression = false; // Whether audio suppression is enabled.
136
+ bool force_mono = false; // Whether force mono audio is enabled.
137
+
138
+ static void volmeter_callback(
139
+ void *data,
140
+ const float magnitude[MAX_AUDIO_CHANNELS],
141
+ const float peak[MAX_AUDIO_CHANNELS],
142
+ const float inputPeak[MAX_AUDIO_CHANNELS]
143
+ );
97
144
  };