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.
- package/dist/data/obs-plugins/obs-filters/LUTs/black_and_white.png +0 -0
- package/dist/data/obs-plugins/obs-filters/LUTs/grayscale.cube +32769 -0
- package/dist/data/obs-plugins/obs-filters/LUTs/grayscale.png +0 -0
- package/dist/data/obs-plugins/obs-filters/LUTs/invert.png +0 -0
- package/dist/data/obs-plugins/obs-filters/LUTs/original.cube +33 -0
- package/dist/data/obs-plugins/obs-filters/LUTs/original.png +0 -0
- package/dist/data/obs-plugins/obs-filters/LUTs/posterize.png +0 -0
- package/dist/data/obs-plugins/obs-filters/LUTs/red_isolated.png +0 -0
- package/dist/data/obs-plugins/obs-filters/LUTs/teal_lows_orange_highs.png +0 -0
- package/dist/data/obs-plugins/obs-filters/blend_add_filter.effect +54 -0
- package/dist/data/obs-plugins/obs-filters/blend_mul_filter.effect +54 -0
- package/dist/data/obs-plugins/obs-filters/blend_sub_filter.effect +54 -0
- package/dist/data/obs-plugins/obs-filters/chroma_key_filter.effect +99 -0
- package/dist/data/obs-plugins/obs-filters/chroma_key_filter_v2.effect +111 -0
- package/dist/data/obs-plugins/obs-filters/color.effect +95 -0
- package/dist/data/obs-plugins/obs-filters/color_correction_filter.effect +74 -0
- package/dist/data/obs-plugins/obs-filters/color_grade_filter.effect +177 -0
- package/dist/data/obs-plugins/obs-filters/color_key_filter.effect +65 -0
- package/dist/data/obs-plugins/obs-filters/color_key_filter_v2.effect +77 -0
- package/dist/data/obs-plugins/obs-filters/crop_filter.effect +95 -0
- package/dist/data/obs-plugins/obs-filters/hdr_tonemap_filter.effect +97 -0
- package/dist/data/obs-plugins/obs-filters/locale/af-ZA.ini +89 -0
- package/dist/data/obs-plugins/obs-filters/locale/ar-SA.ini +133 -0
- package/dist/data/obs-plugins/obs-filters/locale/az-AZ.ini +1 -0
- package/dist/data/obs-plugins/obs-filters/locale/ba-RU.ini +19 -0
- package/dist/data/obs-plugins/obs-filters/locale/be-BY.ini +134 -0
- package/dist/data/obs-plugins/obs-filters/locale/bg-BG.ini +71 -0
- package/dist/data/obs-plugins/obs-filters/locale/bn-BD.ini +106 -0
- package/dist/data/obs-plugins/obs-filters/locale/ca-ES.ini +128 -0
- package/dist/data/obs-plugins/obs-filters/locale/cs-CZ.ini +130 -0
- package/dist/data/obs-plugins/obs-filters/locale/da-DK.ini +119 -0
- package/dist/data/obs-plugins/obs-filters/locale/de-DE.ini +113 -0
- package/dist/data/obs-plugins/obs-filters/locale/el-GR.ini +128 -0
- package/dist/data/obs-plugins/obs-filters/locale/en-GB.ini +12 -0
- package/dist/data/obs-plugins/obs-filters/locale/en-US.ini +138 -0
- package/dist/data/obs-plugins/obs-filters/locale/eo-UY.ini +1 -0
- package/dist/data/obs-plugins/obs-filters/locale/es-ES.ini +129 -0
- package/dist/data/obs-plugins/obs-filters/locale/et-EE.ini +132 -0
- package/dist/data/obs-plugins/obs-filters/locale/eu-ES.ini +127 -0
- package/dist/data/obs-plugins/obs-filters/locale/fa-IR.ini +137 -0
- package/dist/data/obs-plugins/obs-filters/locale/fi-FI.ini +127 -0
- package/dist/data/obs-plugins/obs-filters/locale/fil-PH.ini +111 -0
- package/dist/data/obs-plugins/obs-filters/locale/fr-FR.ini +124 -0
- package/dist/data/obs-plugins/obs-filters/locale/gd-GB.ini +94 -0
- package/dist/data/obs-plugins/obs-filters/locale/gl-ES.ini +132 -0
- package/dist/data/obs-plugins/obs-filters/locale/he-IL.ini +135 -0
- package/dist/data/obs-plugins/obs-filters/locale/hi-IN.ini +134 -0
- package/dist/data/obs-plugins/obs-filters/locale/hr-HR.ini +80 -0
- package/dist/data/obs-plugins/obs-filters/locale/hu-HU.ini +131 -0
- package/dist/data/obs-plugins/obs-filters/locale/hy-AM.ini +130 -0
- package/dist/data/obs-plugins/obs-filters/locale/id-ID.ini +112 -0
- package/dist/data/obs-plugins/obs-filters/locale/it-IT.ini +130 -0
- package/dist/data/obs-plugins/obs-filters/locale/ja-JP.ini +134 -0
- package/dist/data/obs-plugins/obs-filters/locale/ka-GE.ini +133 -0
- package/dist/data/obs-plugins/obs-filters/locale/kaa.ini +41 -0
- package/dist/data/obs-plugins/obs-filters/locale/kab-KAB.ini +56 -0
- package/dist/data/obs-plugins/obs-filters/locale/kmr-TR.ini +126 -0
- package/dist/data/obs-plugins/obs-filters/locale/ko-KR.ini +134 -0
- package/dist/data/obs-plugins/obs-filters/locale/ms-MY.ini +131 -0
- package/dist/data/obs-plugins/obs-filters/locale/nb-NO.ini +115 -0
- package/dist/data/obs-plugins/obs-filters/locale/nl-NL.ini +111 -0
- package/dist/data/obs-plugins/obs-filters/locale/nn-NO.ini +19 -0
- package/dist/data/obs-plugins/obs-filters/locale/pl-PL.ini +127 -0
- package/dist/data/obs-plugins/obs-filters/locale/pt-BR.ini +128 -0
- package/dist/data/obs-plugins/obs-filters/locale/pt-PT.ini +130 -0
- package/dist/data/obs-plugins/obs-filters/locale/ro-RO.ini +125 -0
- package/dist/data/obs-plugins/obs-filters/locale/ru-RU.ini +135 -0
- package/dist/data/obs-plugins/obs-filters/locale/si-LK.ini +44 -0
- package/dist/data/obs-plugins/obs-filters/locale/sk-SK.ini +131 -0
- package/dist/data/obs-plugins/obs-filters/locale/sl-SI.ini +133 -0
- package/dist/data/obs-plugins/obs-filters/locale/sr-CS.ini +90 -0
- package/dist/data/obs-plugins/obs-filters/locale/sr-SP.ini +97 -0
- package/dist/data/obs-plugins/obs-filters/locale/sv-SE.ini +129 -0
- package/dist/data/obs-plugins/obs-filters/locale/szl-PL.ini +94 -0
- package/dist/data/obs-plugins/obs-filters/locale/ta-IN.ini +28 -0
- package/dist/data/obs-plugins/obs-filters/locale/th-TH.ini +132 -0
- package/dist/data/obs-plugins/obs-filters/locale/tl-PH.ini +64 -0
- package/dist/data/obs-plugins/obs-filters/locale/tr-TR.ini +129 -0
- package/dist/data/obs-plugins/obs-filters/locale/tt-RU.ini +27 -0
- package/dist/data/obs-plugins/obs-filters/locale/ug-CN.ini +133 -0
- package/dist/data/obs-plugins/obs-filters/locale/uk-UA.ini +135 -0
- package/dist/data/obs-plugins/obs-filters/locale/vi-VN.ini +131 -0
- package/dist/data/obs-plugins/obs-filters/locale/zh-CN.ini +138 -0
- package/dist/data/obs-plugins/obs-filters/locale/zh-TW.ini +136 -0
- package/dist/data/obs-plugins/obs-filters/luma_key_filter.effect +52 -0
- package/dist/data/obs-plugins/obs-filters/luma_key_filter_v2.effect +54 -0
- package/dist/data/obs-plugins/obs-filters/mask_alpha_filter.effect +54 -0
- package/dist/data/obs-plugins/obs-filters/mask_color_filter.effect +55 -0
- package/dist/data/obs-plugins/obs-filters/rtx_greenscreen.effect +183 -0
- package/dist/data/obs-plugins/obs-filters/sharpness.effect +76 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/ar-SA.ini +60 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/be-BY.ini +59 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/bg-BG.ini +2 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/ca-ES.ini +59 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/cs-CZ.ini +55 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/da-DK.ini +54 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/de-DE.ini +55 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/en-GB.ini +9 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/en-US.ini +75 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/es-ES.ini +59 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/et-EE.ini +36 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/fa-IR.ini +60 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/fi-FI.ini +59 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/fr-FR.ini +59 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/gl-ES.ini +60 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/he-IL.ini +60 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/hi-IN.ini +60 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/hu-HU.ini +60 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/id-ID.ini +55 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/is-IS.ini +2 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/it-IT.ini +60 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/ja-JP.ini +59 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/ka-GE.ini +60 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/kaa.ini +13 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/kmr-TR.ini +20 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/ko-KR.ini +58 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/ms-MY.ini +58 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/nb-NO.ini +24 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/nl-NL.ini +54 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/nn-NO.ini +1 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/pl-PL.ini +55 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/pt-BR.ini +58 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/pt-PT.ini +60 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/ru-RU.ini +60 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/sk-SK.ini +56 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/sv-SE.ini +58 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/th-TH.ini +59 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/tr-TR.ini +60 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/tt-RU.ini +2 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/ug-CN.ini +60 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/uk-UA.ini +60 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/vi-VN.ini +60 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/zh-CN.ini +60 -0
- package/dist/data/obs-plugins/obs-nvenc/locale/zh-TW.ini +60 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/af-ZA.ini +19 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/ar-SA.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/ba-RU.ini +2 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/be-BY.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/bg-BG.ini +7 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/bn-BD.ini +8 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/ca-ES.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/cs-CZ.ini +19 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/da-DK.ini +19 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/de-DE.ini +19 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/el-GR.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/en-GB.ini +1 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/en-US.ini +21 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/es-ES.ini +19 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/et-EE.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/eu-ES.ini +11 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/fa-IR.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/fi-FI.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/fil-PH.ini +11 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/fr-FR.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/gd-GB.ini +8 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/gl-ES.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/he-IL.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/hi-IN.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/hr-HR.ini +14 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/hu-HU.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/hy-AM.ini +13 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/id-ID.ini +18 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/is-IS.ini +1 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/it-IT.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/ja-JP.ini +16 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/ka-GE.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/kaa.ini +10 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/kab-KAB.ini +5 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/kmr-TR.ini +12 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/ko-KR.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/ms-MY.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/nb-NO.ini +16 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/nl-NL.ini +18 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/nn-NO.ini +2 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/oc-FR.ini +1 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/pl-PL.ini +16 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/pt-BR.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/pt-PT.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/ro-RO.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/ru-RU.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/si-LK.ini +8 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/sk-SK.ini +19 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/sl-SI.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/sr-CS.ini +6 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/sr-SP.ini +10 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/sv-SE.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/ta-IN.ini +2 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/th-TH.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/tl-PH.ini +5 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/tr-TR.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/tt-RU.ini +3 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/ug-CN.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/uk-UA.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/vi-VN.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/zh-CN.ini +20 -0
- package/dist/data/obs-plugins/obs-qsv11/locale/zh-TW.ini +20 -0
- package/dist/data/obs-plugins/win-capture/get-graphics-offsets32.exe +0 -0
- package/dist/data/obs-plugins/win-capture/get-graphics-offsets64.exe +0 -0
- package/dist/data/obs-plugins/win-capture/graphics-hook32.dll +0 -0
- package/dist/data/obs-plugins/win-capture/graphics-hook64.dll +0 -0
- package/dist/data/obs-plugins/win-capture/inject-helper32.exe +0 -0
- package/dist/data/obs-plugins/win-capture/inject-helper64.exe +0 -0
- package/dist/noobs.node +0 -0
- package/dist/obs-plugins/image-source.dll +0 -0
- package/dist/obs-plugins/obs-filters.dll +0 -0
- package/dist/obs-plugins/obs-nvenc.dll +0 -0
- package/dist/obs-plugins/obs-qsv11.dll +0 -0
- package/dist/obs-plugins/obs-x264.dll +0 -0
- package/dist/obs-plugins/win-capture.dll +0 -0
- package/dist/obs-plugins/win-wasapi.dll +0 -0
- package/index.d.ts +24 -18
- package/package.json +1 -1
- package/src/main.cpp +215 -33
- package/src/obs_interface.cpp +598 -288
- package/src/obs_interface.h +85 -38
package/index.d.ts
CHANGED
|
@@ -136,8 +136,10 @@ export type ObsProperty =
|
|
|
136
136
|
| ObsGenericProperty;
|
|
137
137
|
|
|
138
138
|
export type Signal = {
|
|
139
|
+
type: string; // Either "output" or "volmeter" or "source".
|
|
139
140
|
id: string; // Signal identifier, e.g. "stop"
|
|
140
141
|
code: number; // 0 for success, other values for errors
|
|
142
|
+
value?: number; // Currently only used for volmeters.
|
|
141
143
|
};
|
|
142
144
|
|
|
143
145
|
export type SceneItemPosition = {
|
|
@@ -156,49 +158,53 @@ interface Noobs {
|
|
|
156
158
|
Init(
|
|
157
159
|
distPath: string,
|
|
158
160
|
logPath: string,
|
|
159
|
-
recordingPath: string,
|
|
160
161
|
cb: (signal: Signal) => void,
|
|
161
162
|
): void;
|
|
162
163
|
|
|
163
164
|
Shutdown(): void;
|
|
164
165
|
|
|
165
|
-
// Recording functions
|
|
166
|
+
// Recording functions.
|
|
166
167
|
SetBuffering(buffering: boolean): void; // In buffering mode, the recording is stored in memory and can be converted to a file later.
|
|
167
168
|
StartBuffer(): void;
|
|
168
169
|
StartRecording(offset: number): void;
|
|
169
170
|
StopRecording(): void;
|
|
171
|
+
ForceStopRecording(): void;
|
|
170
172
|
GetLastRecording(): string;
|
|
171
173
|
SetRecordingDir(recordingPath: string): void;
|
|
174
|
+
ResetVideoContext(fps: number, width: number, height: number): void;
|
|
172
175
|
|
|
173
|
-
//
|
|
174
|
-
|
|
176
|
+
// Encoder functions.
|
|
177
|
+
ListVideoEncoders(): string[]; // Returns a list of available video encoders.
|
|
178
|
+
SetVideoEncoder(id: string, settings: ObsData): void; // Create the video encoder to use.
|
|
179
|
+
|
|
180
|
+
// Source management functions.
|
|
181
|
+
CreateSource(name: string, type: string): string; // Returns the name of the source, which may vary in the event of a name conflict.
|
|
175
182
|
DeleteSource(name: string): void;
|
|
176
183
|
GetSourceSettings(name: string): ObsData;
|
|
177
184
|
SetSourceSettings(name: string, settings: ObsData): void;
|
|
178
185
|
GetSourceProperties(name: string): ObsProperty[];
|
|
179
186
|
|
|
180
|
-
//
|
|
187
|
+
// Audio source management functions.
|
|
188
|
+
SetMuteAudioInputs(mute: boolean): void; // Mute or unmute all audio inputs.
|
|
189
|
+
SetSourceVolume(name: string, volume: number): void; // Set the volume for a specific audio source (0.0 to 1.0).
|
|
190
|
+
SetVolmeterEnabled(enabled: boolean): void; // Enable or disable the volume meter.
|
|
191
|
+
SetAudioSuppression(enabled: boolean): void; // Enable or disable audio suppression (noise gate).
|
|
192
|
+
SetForceMono(enabled: boolean): void; // Enable or disable the force mono audio setting.
|
|
193
|
+
|
|
194
|
+
// Scene management functions.
|
|
181
195
|
AddSourceToScene(sourceName: string): void;
|
|
182
196
|
RemoveSourceFromScene(sourceName: string): void;
|
|
183
197
|
GetSourcePos(name: string): SceneItemPosition & SourceDimensions;
|
|
184
198
|
SetSourcePos(name: string, pos: SceneItemPosition): void;
|
|
185
|
-
// TODO: Cropping?
|
|
186
199
|
|
|
187
|
-
// Preview functions
|
|
200
|
+
// Preview functions.
|
|
188
201
|
InitPreview(hwnd: Buffer): void;
|
|
189
|
-
|
|
202
|
+
ConfigurePreview(x: number, y: number, width: number, height: number): void;
|
|
203
|
+
ShowPreview(): void;
|
|
190
204
|
HidePreview(): void;
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
* Draws a red border around source preview
|
|
194
|
-
* @param enabled
|
|
195
|
-
*/
|
|
205
|
+
DisablePreview(): void;
|
|
206
|
+
GetPreviewInfo(): { canvasWidth: number; canvasHeight: number; previewWidth: number; previewHeight: number };
|
|
196
207
|
SetDrawSourceOutline(enabled: boolean): void;
|
|
197
|
-
/**
|
|
198
|
-
* Gets the current state of the preview outline, a red border around the source preview
|
|
199
|
-
*
|
|
200
|
-
* Default: *false*
|
|
201
|
-
*/
|
|
202
208
|
GetDrawSourceOutlineEnabled(): boolean;
|
|
203
209
|
}
|
|
204
210
|
|
package/package.json
CHANGED
package/src/main.cpp
CHANGED
|
@@ -7,11 +7,10 @@
|
|
|
7
7
|
ObsInterface* obs = nullptr;
|
|
8
8
|
|
|
9
9
|
Napi::Value ObsInit(const Napi::CallbackInfo& info) {
|
|
10
|
-
bool valid = info.Length() ==
|
|
10
|
+
bool valid = info.Length() == 3 &&
|
|
11
11
|
info[0].IsString() && // Dist path
|
|
12
12
|
info[1].IsString() && // Log path
|
|
13
|
-
info[2].
|
|
14
|
-
info[3].IsFunction(); // JavaScript callback
|
|
13
|
+
info[2].IsFunction(); // JavaScript callback
|
|
15
14
|
|
|
16
15
|
if (!valid) {
|
|
17
16
|
Napi::Error::New(info.Env(), "Invalid arguments passed to ObsInit").ThrowAsJavaScriptException();
|
|
@@ -20,13 +19,12 @@ Napi::Value ObsInit(const Napi::CallbackInfo& info) {
|
|
|
20
19
|
|
|
21
20
|
std::string distPath = info[0].As<Napi::String>().Utf8Value();
|
|
22
21
|
std::string logPath = info[1].As<Napi::String>().Utf8Value();
|
|
23
|
-
|
|
24
|
-
Napi::Function fn = info[3].As<Napi::Function>();
|
|
22
|
+
Napi::Function fn = info[2].As<Napi::Function>();
|
|
25
23
|
|
|
26
24
|
Napi::ThreadSafeFunction jscb =
|
|
27
25
|
Napi::ThreadSafeFunction::New(info.Env(), fn, "JavaScript callback", 0, 1);
|
|
28
26
|
|
|
29
|
-
obs = new ObsInterface(distPath, logPath,
|
|
27
|
+
obs = new ObsInterface(distPath, logPath, jscb);
|
|
30
28
|
return info.Env().Undefined();
|
|
31
29
|
}
|
|
32
30
|
|
|
@@ -54,6 +52,74 @@ Napi::Value ObsSetRecordingDir(const Napi::CallbackInfo& info) {
|
|
|
54
52
|
return info.Env().Undefined();
|
|
55
53
|
}
|
|
56
54
|
|
|
55
|
+
Napi::Value ObsResetVideoContext(const Napi::CallbackInfo& info) {
|
|
56
|
+
if (!obs) {
|
|
57
|
+
blog(LOG_ERROR, "ObsResetVideoContext called but obs is not initialized");
|
|
58
|
+
throw std::runtime_error("Obs not initialized");
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
bool valid = info.Length() == 3 && info[0].IsNumber() && info[1].IsNumber() && info[2].IsNumber();
|
|
62
|
+
|
|
63
|
+
if (!valid) {
|
|
64
|
+
Napi::TypeError::New(info.Env(), "Invalid arguments passed to ObsResetVideo").ThrowAsJavaScriptException();
|
|
65
|
+
return info.Env().Undefined();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
int fps = info[0].As<Napi::Number>().Int32Value();
|
|
69
|
+
int width = info[1].As<Napi::Number>().Int32Value();
|
|
70
|
+
int height = info[2].As<Napi::Number>().Int32Value();
|
|
71
|
+
|
|
72
|
+
obs->setVideoContext(fps, width, height);
|
|
73
|
+
return info.Env().Undefined();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
Napi::Value ObsListVideoEncoders(const Napi::CallbackInfo& info) {
|
|
77
|
+
if (!obs) {
|
|
78
|
+
blog(LOG_ERROR, "ObsListVideoEncoders called but obs is not initialized");
|
|
79
|
+
throw std::runtime_error("Obs not initialized");
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
bool valid = info.Length() == 0;
|
|
83
|
+
|
|
84
|
+
if (!valid) {
|
|
85
|
+
Napi::TypeError::New(info.Env(), "Invalid arguments passed to ObsListVideoEncoders").ThrowAsJavaScriptException();
|
|
86
|
+
return info.Env().Undefined();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
auto encoders = obs->listAvailableVideoEncoders();
|
|
90
|
+
Napi::Array result = Napi::Array::New(info.Env(), encoders.size());
|
|
91
|
+
|
|
92
|
+
for (size_t i = 0; i < encoders.size(); ++i) {
|
|
93
|
+
result[i] = Napi::String::New(info.Env(), encoders[i]);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
Napi::Value ObsSetVideoEncoder(const Napi::CallbackInfo& info) {
|
|
100
|
+
if (!obs) {
|
|
101
|
+
blog(LOG_ERROR, "ObsSetVideoEncoder called but obs is not initialized");
|
|
102
|
+
throw std::runtime_error("Obs not initialized");
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
bool valid = info.Length() == 2 &&
|
|
106
|
+
info[0].IsString() && // Encoder ID
|
|
107
|
+
info[1].IsObject(); // Settings object
|
|
108
|
+
|
|
109
|
+
if (!valid) {
|
|
110
|
+
Napi::TypeError::New(info.Env(), "Invalid arguments passed to ObsSetVideoEncoder").ThrowAsJavaScriptException();
|
|
111
|
+
return info.Env().Undefined();
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
std::string id = info[0].As<Napi::String>().Utf8Value();
|
|
115
|
+
Napi::Object obj = info[1].As<Napi::Object>();
|
|
116
|
+
|
|
117
|
+
obs_data_t* settings = napi_to_data(obj);
|
|
118
|
+
obs->setVideoEncoder(id, settings);
|
|
119
|
+
|
|
120
|
+
return info.Env().Undefined();
|
|
121
|
+
}
|
|
122
|
+
|
|
57
123
|
Napi::Value ObsSetBuffering(const Napi::CallbackInfo& info) {
|
|
58
124
|
blog(LOG_INFO, "ObsSetBuffering called");
|
|
59
125
|
|
|
@@ -70,12 +136,7 @@ Napi::Value ObsSetBuffering(const Napi::CallbackInfo& info) {
|
|
|
70
136
|
}
|
|
71
137
|
|
|
72
138
|
bool buffering = info[0].As<Napi::Boolean>().Value();
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
if (!success) {
|
|
76
|
-
Napi::Error::New(info.Env(), "Failed to set buffering mode, is recording active?").ThrowAsJavaScriptException();
|
|
77
|
-
return info.Env().Undefined();
|
|
78
|
-
}
|
|
139
|
+
obs->setBuffering(buffering);
|
|
79
140
|
|
|
80
141
|
return info.Env().Undefined();
|
|
81
142
|
}
|
|
@@ -118,6 +179,16 @@ Napi::Value ObsStopRecording(const Napi::CallbackInfo& info) {
|
|
|
118
179
|
return info.Env().Undefined();
|
|
119
180
|
}
|
|
120
181
|
|
|
182
|
+
Napi::Value ObsForceStopRecording(const Napi::CallbackInfo& info) {
|
|
183
|
+
if (!obs) {
|
|
184
|
+
blog(LOG_ERROR, "ObsForceStopRecording called but obs is not initialized");
|
|
185
|
+
throw std::runtime_error("Obs not initialized");
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
obs->forceStopRecording();
|
|
189
|
+
return info.Env().Undefined();
|
|
190
|
+
}
|
|
191
|
+
|
|
121
192
|
Napi::Value ObsGetLastRecording(const Napi::CallbackInfo& info) {
|
|
122
193
|
if (!obs) {
|
|
123
194
|
blog(LOG_ERROR, "ObsGetLastRecording called but obs is not initialized");
|
|
@@ -155,11 +226,11 @@ Napi::Value ObsInitPreview(const Napi::CallbackInfo& info) {
|
|
|
155
226
|
return info.Env().Undefined();
|
|
156
227
|
}
|
|
157
228
|
|
|
158
|
-
Napi::Value
|
|
159
|
-
blog(LOG_INFO, "
|
|
229
|
+
Napi::Value ObsConfigurePreview(const Napi::CallbackInfo& info) {
|
|
230
|
+
blog(LOG_INFO, "ObsConfigurePreview called");
|
|
160
231
|
|
|
161
232
|
if (!obs) {
|
|
162
|
-
blog(LOG_ERROR, "
|
|
233
|
+
blog(LOG_ERROR, "ObsConfigurePreview called but obs is not initialized");
|
|
163
234
|
throw std::runtime_error("Obs not initialized");
|
|
164
235
|
}
|
|
165
236
|
|
|
@@ -170,7 +241,7 @@ Napi::Value ObsShowPreview(const Napi::CallbackInfo& info) {
|
|
|
170
241
|
info[3].IsNumber(); // Height
|
|
171
242
|
|
|
172
243
|
if (!valid) {
|
|
173
|
-
Napi::TypeError::New(info.Env(), "Invalid arguments passed to
|
|
244
|
+
Napi::TypeError::New(info.Env(), "Invalid arguments passed to ObsConfigurePreview").ThrowAsJavaScriptException();
|
|
174
245
|
return info.Env().Undefined();
|
|
175
246
|
}
|
|
176
247
|
|
|
@@ -179,7 +250,19 @@ Napi::Value ObsShowPreview(const Napi::CallbackInfo& info) {
|
|
|
179
250
|
int width = info[2].As<Napi::Number>().Int32Value();
|
|
180
251
|
int height = info[3].As<Napi::Number>().Int32Value();
|
|
181
252
|
|
|
182
|
-
obs->
|
|
253
|
+
obs->configurePreview(x, y, width, height);
|
|
254
|
+
return info.Env().Undefined();
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
Napi::Value ObsShowPreview(const Napi::CallbackInfo& info) {
|
|
258
|
+
blog(LOG_INFO, "ObsShowPreview called");
|
|
259
|
+
|
|
260
|
+
if (!obs) {
|
|
261
|
+
blog(LOG_ERROR, "ObsShowPreview called but obs is not initialized");
|
|
262
|
+
throw std::runtime_error("Obs not initialized");
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
obs->showPreview();
|
|
183
266
|
return info.Env().Undefined();
|
|
184
267
|
}
|
|
185
268
|
|
|
@@ -193,14 +276,31 @@ Napi::Value ObsHidePreview(const Napi::CallbackInfo& info) {
|
|
|
193
276
|
return info.Env().Undefined();
|
|
194
277
|
}
|
|
195
278
|
|
|
196
|
-
Napi::Value
|
|
279
|
+
Napi::Value ObsDisablePreview(const Napi::CallbackInfo& info) {
|
|
197
280
|
if (!obs) {
|
|
198
|
-
blog(LOG_ERROR, "
|
|
281
|
+
blog(LOG_ERROR, "ObsDisablePreview called but obs is not initialized");
|
|
199
282
|
throw std::runtime_error("Obs not initialized");
|
|
200
283
|
}
|
|
201
284
|
|
|
202
|
-
|
|
203
|
-
return
|
|
285
|
+
obs->disablePreview();
|
|
286
|
+
return info.Env().Undefined();
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
Napi::Value ObsGetPreviewInfo(const Napi::CallbackInfo& info) {
|
|
290
|
+
if (!obs) {
|
|
291
|
+
blog(LOG_ERROR, "ObsGetPreviewInfo called but obs is not initialized");
|
|
292
|
+
throw std::runtime_error("Obs not initialized");
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
PreviewInfo previewInfo = obs->getPreviewInfo();
|
|
296
|
+
|
|
297
|
+
Napi::Object result = Napi::Object::New(info.Env());
|
|
298
|
+
result.Set("canvasWidth", Napi::Number::New(info.Env(), previewInfo.canvasWidth));
|
|
299
|
+
result.Set("canvasHeight", Napi::Number::New(info.Env(), previewInfo.canvasHeight));
|
|
300
|
+
result.Set("previewWidth", Napi::Number::New(info.Env(), previewInfo.displayWidth));
|
|
301
|
+
result.Set("previewHeight", Napi::Number::New(info.Env(), previewInfo.displayHeight));
|
|
302
|
+
|
|
303
|
+
return result;
|
|
204
304
|
}
|
|
205
305
|
|
|
206
306
|
Napi::Value ObsCreateSource(const Napi::CallbackInfo& info) {
|
|
@@ -221,8 +321,8 @@ Napi::Value ObsCreateSource(const Napi::CallbackInfo& info) {
|
|
|
221
321
|
std::string name = info[0].As<Napi::String>().Utf8Value();
|
|
222
322
|
std::string type = info[1].As<Napi::String>().Utf8Value();
|
|
223
323
|
|
|
224
|
-
obs->createSource(name, type);
|
|
225
|
-
return info.Env()
|
|
324
|
+
std::string real_name = obs->createSource(name, type);
|
|
325
|
+
return Napi::String::New(info.Env(), real_name);
|
|
226
326
|
}
|
|
227
327
|
|
|
228
328
|
Napi::Value ObsDeleteSource(const Napi::CallbackInfo& info) {
|
|
@@ -309,25 +409,96 @@ Napi::Value ObsGetSourceProperties(const Napi::CallbackInfo& info) {
|
|
|
309
409
|
return result;
|
|
310
410
|
}
|
|
311
411
|
|
|
312
|
-
|
|
412
|
+
|
|
413
|
+
Napi::Value ObsSetMuteAudioInputs(const Napi::CallbackInfo& info) {
|
|
313
414
|
if (!obs) {
|
|
314
|
-
blog(LOG_ERROR, "
|
|
415
|
+
blog(LOG_ERROR, "ObsSetMuteAudioInputs called but obs is not initialized");
|
|
315
416
|
throw std::runtime_error("Obs not initialized");
|
|
316
417
|
}
|
|
317
418
|
|
|
318
|
-
bool valid = info.Length() ==
|
|
319
|
-
info[0].IsString() && // Scene name
|
|
320
|
-
info[1].IsString(); // Source type
|
|
419
|
+
bool valid = info.Length() == 1 && info[0].IsBoolean();
|
|
321
420
|
|
|
322
421
|
if (!valid) {
|
|
323
|
-
Napi::TypeError::New(info.Env(), "Invalid arguments passed to
|
|
324
|
-
return info.Env().Undefined();
|
|
422
|
+
Napi::TypeError::New(info.Env(), "Invalid arguments passed to ObsSetMuteAudioInputs").ThrowAsJavaScriptException();
|
|
423
|
+
return info.Env().Undefined();
|
|
325
424
|
}
|
|
326
425
|
|
|
426
|
+
bool mute = info[0].As<Napi::Boolean>().Value();
|
|
427
|
+
obs->setMuteAudioInputs(mute);
|
|
428
|
+
return info.Env().Undefined();
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
Napi::Value ObsSetSourceVolume(const Napi::CallbackInfo& info) {
|
|
432
|
+
if (!obs) {
|
|
433
|
+
blog(LOG_ERROR, "ObsSetSourceVolume called but obs is not initialized");
|
|
434
|
+
throw std::runtime_error("Obs not initialized");
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
bool valid = info.Length() == 2 && info[0].IsString() && info[1].IsNumber();
|
|
327
438
|
std::string name = info[0].As<Napi::String>().Utf8Value();
|
|
328
|
-
|
|
439
|
+
float volume = info[1].As<Napi::Number>().FloatValue();
|
|
440
|
+
|
|
441
|
+
if (!valid || (volume < 0.0f || volume > 1.0f)) {
|
|
442
|
+
Napi::TypeError::New(info.Env(), "Invalid arguments passed to ObsSetOutputVolume").ThrowAsJavaScriptException();
|
|
443
|
+
return info.Env().Undefined();
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
obs->setSourceVolume(name,volume);
|
|
447
|
+
return info.Env().Undefined();
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
Napi::Value ObsSetVolmeterEnabled(const Napi::CallbackInfo& info) {
|
|
451
|
+
if (!obs) {
|
|
452
|
+
blog(LOG_ERROR, "ObsSetVolmeterEnabled called but obs is not initialized");
|
|
453
|
+
throw std::runtime_error("Obs not initialized");
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
bool valid = info.Length() == 1 && info[0].IsBoolean();
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
if (!valid) {
|
|
460
|
+
Napi::TypeError::New(info.Env(), "Invalid arguments passed to ObsSetVolmeterEnabled").ThrowAsJavaScriptException();
|
|
461
|
+
return info.Env().Undefined();
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
bool enabled = info[0].As<Napi::Boolean>().Value();
|
|
465
|
+
obs->setVolmeterEnabled(enabled);
|
|
466
|
+
return info.Env().Undefined();
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
Napi::Value ObsSetAudioSuppression(const Napi::CallbackInfo& info) {
|
|
470
|
+
if (!obs) {
|
|
471
|
+
blog(LOG_ERROR, "ObsSetAudioSuppression called but obs is not initialized");
|
|
472
|
+
throw std::runtime_error("Obs not initialized");
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
bool valid = info.Length() == 1 && info[0].IsBoolean();
|
|
476
|
+
|
|
477
|
+
if (!valid) {
|
|
478
|
+
Napi::TypeError::New(info.Env(), "Invalid arguments passed to ObsSetAudioSuppression").ThrowAsJavaScriptException();
|
|
479
|
+
return info.Env().Undefined();
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
bool enabled = info[0].As<Napi::Boolean>().Value();
|
|
483
|
+
obs->setAudioSuppression(enabled);
|
|
484
|
+
return info.Env().Undefined();
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
Napi::Value ObsSetForceMono(const Napi::CallbackInfo& info) {
|
|
488
|
+
if (!obs) {
|
|
489
|
+
blog(LOG_ERROR, "ObsSetForceMono called but obs is not initialized");
|
|
490
|
+
throw std::runtime_error("Obs not initialized");
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
bool valid = info.Length() == 1 && info[0].IsBoolean();
|
|
494
|
+
|
|
495
|
+
if (!valid) {
|
|
496
|
+
Napi::TypeError::New(info.Env(), "Invalid arguments passed to ObsSetForceMono").ThrowAsJavaScriptException();
|
|
497
|
+
return info.Env().Undefined();
|
|
498
|
+
}
|
|
329
499
|
|
|
330
|
-
|
|
500
|
+
bool enabled = info[0].As<Napi::Boolean>().Value();
|
|
501
|
+
obs->setForceMono(enabled);
|
|
331
502
|
return info.Env().Undefined();
|
|
332
503
|
}
|
|
333
504
|
|
|
@@ -447,11 +618,15 @@ Napi::Object Init(Napi::Env env, Napi::Object exports) {
|
|
|
447
618
|
exports.Set("Init", Napi::Function::New(env, ObsInit));
|
|
448
619
|
exports.Set("Shutdown", Napi::Function::New(env, ObsShutdown));
|
|
449
620
|
exports.Set("SetRecordingDir", Napi::Function::New(env, ObsSetRecordingDir));
|
|
621
|
+
exports.Set("ResetVideoContext", Napi::Function::New(env, ObsResetVideoContext));
|
|
622
|
+
exports.Set("ListVideoEncoders", Napi::Function::New(env, ObsListVideoEncoders));
|
|
623
|
+
exports.Set("SetVideoEncoder", Napi::Function::New(env, ObsSetVideoEncoder));
|
|
450
624
|
|
|
451
625
|
exports.Set("SetBuffering", Napi::Function::New(env, ObsSetBuffering));
|
|
452
626
|
exports.Set("StartBuffer", Napi::Function::New(env, ObsStartBuffer));
|
|
453
627
|
exports.Set("StartRecording", Napi::Function::New(env, ObsStartRecording));
|
|
454
628
|
exports.Set("StopRecording", Napi::Function::New(env, ObsStopRecording));
|
|
629
|
+
exports.Set("ForceStopRecording", Napi::Function::New(env, ObsForceStopRecording));
|
|
455
630
|
exports.Set("GetLastRecording", Napi::Function::New(env, ObsGetLastRecording));
|
|
456
631
|
|
|
457
632
|
exports.Set("CreateSource", Napi::Function::New(env, ObsCreateSource));
|
|
@@ -459,6 +634,11 @@ Napi::Object Init(Napi::Env env, Napi::Object exports) {
|
|
|
459
634
|
exports.Set("GetSourceSettings", Napi::Function::New(env, ObsGetSourceSettings));
|
|
460
635
|
exports.Set("SetSourceSettings", Napi::Function::New(env, ObsSetSourceSettings));
|
|
461
636
|
exports.Set("GetSourceProperties", Napi::Function::New(env, ObsGetSourceProperties));
|
|
637
|
+
exports.Set("SetMuteAudioInputs", Napi::Function::New(env, ObsSetMuteAudioInputs));
|
|
638
|
+
exports.Set("SetSourceVolume", Napi::Function::New(env, ObsSetSourceVolume));
|
|
639
|
+
exports.Set("SetVolmeterEnabled", Napi::Function::New(env, ObsSetVolmeterEnabled));
|
|
640
|
+
exports.Set("SetAudioSuppression", Napi::Function::New(env, ObsSetAudioSuppression));
|
|
641
|
+
exports.Set("SetForceMono", Napi::Function::New(env, ObsSetForceMono));
|
|
462
642
|
|
|
463
643
|
exports.Set("AddSourceToScene", Napi::Function::New(env, ObsAddSourceToScene));
|
|
464
644
|
exports.Set("RemoveSourceFromScene", Napi::Function::New(env, ObsRemoveSourceFromScene));
|
|
@@ -466,9 +646,11 @@ Napi::Object Init(Napi::Env env, Napi::Object exports) {
|
|
|
466
646
|
exports.Set("SetSourcePos", Napi::Function::New(env, ObsSetSourcePos));
|
|
467
647
|
|
|
468
648
|
exports.Set("InitPreview", Napi::Function::New(env, ObsInitPreview));
|
|
649
|
+
exports.Set("ConfigurePreview", Napi::Function::New(env, ObsConfigurePreview));
|
|
469
650
|
exports.Set("ShowPreview", Napi::Function::New(env, ObsShowPreview));
|
|
470
651
|
exports.Set("HidePreview", Napi::Function::New(env, ObsHidePreview));
|
|
471
|
-
exports.Set("
|
|
652
|
+
exports.Set("DisablePreview", Napi::Function::New(env, ObsDisablePreview));
|
|
653
|
+
exports.Set("GetPreviewInfo", Napi::Function::New(env, ObsGetPreviewInfo));
|
|
472
654
|
exports.Set("GetDrawSourceOutlineEnabled", Napi::Function::New(env, ObsGetDrawSourceOutlineEnabled));
|
|
473
655
|
exports.Set("SetDrawSourceOutline", Napi::Function::New(env, ObsSetDrawSourceOutline));
|
|
474
656
|
|