@overwolf/ow-electron-packages-types 1.1.8 → 1.1.10-beta.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 (2) hide show
  1. package/package.json +1 -1
  2. package/types.d.ts +362 -41
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@overwolf/ow-electron-packages-types",
3
- "version": "1.1.8",
3
+ "version": "1.1.10-beta.0",
4
4
  "description": "Type definition file for autocompletion and documentation purposes for ow-electron packages",
5
5
  "license": "MIT",
6
6
  "types": "types.d.ts",
package/types.d.ts CHANGED
@@ -242,6 +242,21 @@ type AudioDeviceType = 'input' | 'output';
242
242
  * Note that older `jim_*` encoder types were deprecated as of OBS version 0.31.0
243
243
  * and have been replaced by the `obs_nvenc_*` family of encoders.
244
244
  *
245
+ * | Value | Description |
246
+ * | ---------------------- | ---------------------------------------------------------------------------------- |
247
+ * | `'ffmpeg_svt_av1'` | Software AV1 encoder using Intel's SVT-AV1 via FFmpeg. |
248
+ * | `'ffmpeg_aom_av1'` | Software AV1 encoder using AOMedia's libaom via FFmpeg. |
249
+ * | `'obs_x264'` | Software H.264 encoder using the x264 library (CPU-based). |
250
+ * | `'h264_texture_amf'` | Hardware-accelerated H.264 encoder using AMD's AMF with texture input. |
251
+ * | `'h265_texture_amf'` | Hardware-accelerated H.265 (HEVC) encoder using AMD's AMF with texture input. |
252
+ * | `'av1_texture_amf'` | Hardware-accelerated AV1 encoder using AMD's AMF with texture input. |
253
+ * | `'obs_qsv11_v2'` | Hardware-accelerated H.264 encoder using Intel's QSV 1.1 API. |
254
+ * | `'obs_qsv11_hevc'` | Hardware-accelerated H.265 (HEVC) encoder using Intel's QSV 1.1 API. |
255
+ * | `'obs_qsv11_av1'` | Hardware-accelerated AV1 encoder using Intel's QSV 1.1 API. |
256
+ * | `'obs_nvenc_h264_tex'` | Hardware-accelerated H.264 encoder using NVIDIA's NVENC with texture input. |
257
+ * | `'obs_nvenc_hevc_tex'` | Hardware-accelerated H.265 (HEVC) encoder using NVIDIA's NVENC with texture input. |
258
+ * | `'obs_nvenc_av1_tex'` | Hardware-accelerated AV1 encoder using NVIDIA's NVENC with texture input. |
259
+ *
245
260
  * @remarks
246
261
  * This type includes software-based encoders (like `obs_x264`) and
247
262
  * hardware-accelerated encoders for various platforms (e.g., NVENC, QSV, AMF).
@@ -306,6 +321,17 @@ type kSupportedEncodersTypes =
306
321
  * Typically used for exporting or streaming audio content in different formats.
307
322
  * Each variant maps to a specific FFmpeg audio codec.
308
323
  *
324
+ * | Value | Description |
325
+ * | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
326
+ * | `'ffmpeg_aac'` | AAC (Advanced Audio Coding) encoder using FFmpeg. Widely supported across platforms; good balance of quality and compression. |
327
+ * | `'ffmpeg_opus'` | Opus encoder using FFmpeg. High-efficiency codec commonly used for voice and streaming (e.g., Discord, WebRTC). |
328
+ * | `'ffmpeg_pcm_s16le'` | PCM (Pulse-code Modulation) 16-bit signed little-endian. Uncompressed audio with moderate file size; excellent compatibility. |
329
+ * | `'ffmpeg_pcm_s24le'` | PCM 24-bit signed little-endian. Higher-resolution uncompressed audio format, often used in professional audio applications. |
330
+ * | `'ffmpeg_pcm_f32le'` | PCM 32-bit floating-point little-endian. Offers high dynamic range; used for precision in audio processing workflows. |
331
+ * | `'ffmpeg_alac'` | Apple Lossless Audio Codec (ALAC) encoder via FFmpeg. Provides lossless compression; typically used in the Apple ecosystem. |
332
+ * | `'ffmpeg_flac'` | FLAC (Free Lossless Audio Codec) encoder via FFmpeg. Popular open-source lossless format with good compression and widespread support. |
333
+ * | `string` | Custom or unknown encoder type represented as a string. |
334
+ *
309
335
  * @remarks
310
336
  * If a custom encoder is used that is not in this predefined list, it can be specified as a `string`.
311
337
  *
@@ -391,6 +417,16 @@ type kSampleRate441kHz = 44100;
391
417
  * These layout identifiers correspond to common channel arrangements used in audio output systems.
392
418
  * They are typically used to configure spatial audio or multichannel playback environments.
393
419
  *
420
+ * | Value | Description |
421
+ * | -------------------- | ----------------------------------------------------------------------------------------------- |
422
+ * | `'SPEAKERS_MONO'` | Mono output — single audio channel. |
423
+ * | `'SPEAKERS_STEREO'` | Stereo output — standard left and right channels. |
424
+ * | `'SPEAKERS_2POINT1'` | 2.1 output — stereo plus one subwoofer (LFE) channel. |
425
+ * | `'SPEAKERS_4POINT0'` | 4.0 output — quadraphonic layout with front and rear left/right channels. |
426
+ * | `'SPEAKERS_4POINT1'` | 4.1 output — quadraphonic layout plus one subwoofer channel. |
427
+ * | `'SPEAKERS_5POINT1'` | 5.1 surround — front left/right, center, rear left/right, and subwoofer (LFE). |
428
+ * | `'SPEAKERS_7POINT1'` | 7.1 surround — front left/right, center, rear left/right, side left/right, and subwoofer (LFE). |
429
+ *
394
430
  * @example
395
431
  * const layout: kSpeakerLayout = 'SPEAKERS_5POINT1';
396
432
  */
@@ -422,6 +458,7 @@ type kSpeakerLayout =
422
458
  /**
423
459
  * 7.1 surround — front left/right, center, rear left/right, side left/right, and subwoofer (LFE).
424
460
  */
461
+ | 'SPEAKERS_7POINT1';
425
462
 
426
463
 
427
464
  /**
@@ -446,6 +483,18 @@ type kSpeakerLayout =
446
483
  * Each value corresponds to a specific audio track using a bitmask format.
447
484
  * You can combine tracks using bitwise OR operations. For example, `Track1 | Track2` is `3`.
448
485
  *
486
+ * | Value | Description |
487
+ * | -------- | ------------------------------------------- |
488
+ * | `0` | No audio track selected. |
489
+ * | `1` | Select audio Track 1. |
490
+ * | `2` | Select audio Track 2. |
491
+ * | `4` | Select audio Track 3. |
492
+ * | `8` | Select audio Track 4. |
493
+ * | `16` | Select audio Track 5. |
494
+ * | `32` | Select audio Track 6. |
495
+ * | `0xff` | Select all available tracks (bitmask 0xff). |
496
+ * | `number` | Any custom or combined track. |
497
+ *
449
498
  * @remarks
450
499
  * - This format is useful when routing or encoding specific audio channels.
451
500
  * - The `number` type is included to allow for custom or combined values not explicitly listed.
@@ -499,6 +548,13 @@ type AudioTracks =
499
548
  * These values determine the underlying capture technology used for grabbing screen content.
500
549
  * Selection may depend on hardware support, performance, or compatibility.
501
550
  *
551
+ * | Value | Description |
552
+ * | ---------- | ------------------------------------------------------------------------------------------------------- |
553
+ * | `'Auto'` | Automatically select the best capture method based on the system's capabilities. |
554
+ * | `'DXGI'` | Use DXGI (DirectX Graphics Infrastructure) for capturing. Offers high performance on supported systems. |
555
+ * | `'BitBlt'` | Use BitBlt (Bit Block Transfer), a legacy GDI-based capture method. May be less performant. |
556
+ * | `'WGC'` | Use Windows Graphics Capture (WGC), available on Windows 10+ with improved performance and stability. |
557
+ *
502
558
  * @example
503
559
  * const captureType: DisplayCaptureType = "DXGI";
504
560
  */
@@ -522,6 +578,12 @@ type DisplayCaptureType =
522
578
 
523
579
  /**
524
580
  * Type of window capture method.
581
+ *
582
+ * | Value | Description |
583
+ * | ---------- | ----------------------------------------------------------------------------------------------------- |
584
+ * | `'Auto'` | Automatically select the best window capture method. |
585
+ * | `'BitBlt'` | Use BitBlt (Bit Block Transfer), a legacy GDI-based capture method. May be less performant. |
586
+ * | `'WGC'` | Use Windows Graphics Capture (WGC), available on Windows 10+ with improved performance and stability. |
525
587
  */
526
588
  type WindowCaptureType =
527
589
  /**
@@ -542,6 +604,14 @@ type WindowCaptureType =
542
604
  *
543
605
  * These source types determine what part of the system the capture engine will target.
544
606
  *
607
+ * | Value | Description |
608
+ * | ----------- | ----------------------------------------------------------------------------- |
609
+ * | `'Display'` | Capture the entire display (monitor/screen). |
610
+ * | `'Game'` | Capture a game process or window, often using optimized game capture methods. |
611
+ * | `'Window'` | Capture a specific application window. |
612
+ * | `'Image'` | Capture a specific image. |
613
+ * | `'Color'` | Capture a solid color screen. |
614
+ *
545
615
  * @example
546
616
  * const source: CaptureSourceType = 'Game';
547
617
  */
@@ -627,6 +697,17 @@ interface EncoderInfoBase {
627
697
  * A human-readable name for the encoder (e.g., shown in UI).
628
698
  */
629
699
  readonly name: string;
700
+
701
+ /**
702
+ * Optional map of encoder-specific configuration properties, keyed by
703
+ * setting name (e.g. `bitrate`, `rate_control`). Each property describes a
704
+ * setting that can be adjusted for this encoder.
705
+ *
706
+ * Reported for both video and audio encoders.
707
+ *
708
+ * @see {@link EncoderProperty}
709
+ */
710
+ readonly properties?: Record<string, EncoderProperty>;
630
711
  }
631
712
 
632
713
  /**
@@ -636,14 +717,22 @@ interface EncoderInfoBase {
636
717
  * Provides metadata to help display options in a UI or validate configuration.
637
718
  *
638
719
  * @example
639
- * const bitrateProperty: EncoderProperty = {
640
- * default: 4500,
641
- * description: 'Target video bitrate in kbps.',
642
- * values: {
643
- * 3000: 'Low quality',
644
- * 4500: 'Medium quality (default)',
645
- * 6000: 'High quality'
646
- * }
720
+ * // An enum-like setting - `values` lists every accepted value.
721
+ * const rateControl: EncoderProperty = {
722
+ * default: 'CBR',
723
+ * description: 'Rate Control',
724
+ * values: ['CBR', 'CQP', 'VBR', 'CQVBR'],
725
+ * valuesDesc: ['CBR', 'CQP', 'VBR', 'CQVBR']
726
+ * };
727
+ *
728
+ * @example
729
+ * // A numeric range setting - no `values`; the range is min/max/step.
730
+ * const bitrate: EncoderProperty = {
731
+ * default: 10000,
732
+ * description: 'Bitrate',
733
+ * min: 50,
734
+ * max: 4294967,
735
+ * step: 50
647
736
  * };
648
737
  */
649
738
  interface EncoderProperty {
@@ -658,8 +747,14 @@ interface EncoderProperty {
658
747
  readonly description: string;
659
748
 
660
749
  /**
661
- * Optional array of possible values for this property.
750
+ * The complete set of accepted values for this property, present only for
751
+ * enum-like settings (e.g. `rate_control`, `preset`, `profile`, `tune`).
662
752
  * Useful for dropdowns or presets.
753
+ *
754
+ * Numeric range settings such as `bitrate`, `max_bitrate` or `keyint_sec`
755
+ * do **not** report `values` - they describe their range through `min`,
756
+ * `max` and `step` instead. An absent or single-entry `values` array
757
+ * therefore does not mean the setting is restricted to one option.
663
758
  */
664
759
  readonly values?: (string | number)[];
665
760
 
@@ -668,6 +763,29 @@ interface EncoderProperty {
668
763
  * Helps provide additional context for each option.
669
764
  */
670
765
  readonly valuesDesc?: string[];
766
+
767
+ /**
768
+ * The smallest value this setting accepts.
769
+ *
770
+ * Reported for numeric settings only (`bitrate`, `keyint_sec`, `cqp`, ...);
771
+ * enum-like settings use `values` instead.
772
+ */
773
+ readonly min?: number;
774
+
775
+ /**
776
+ * The largest value this setting accepts.
777
+ *
778
+ * Reported for numeric settings only.
779
+ */
780
+ readonly max?: number;
781
+
782
+ /**
783
+ * The granularity between accepted values.
784
+ *
785
+ * Reported for numeric settings only. A `bitrate` with a `step` of 50
786
+ * accepts 50, 100, 150 and so on.
787
+ */
788
+ readonly step?: number;
671
789
  }
672
790
 
673
791
  /**
@@ -682,7 +800,10 @@ interface EncoderProperty {
682
800
  * const audioEncoder: AudioEncoderInfo = {
683
801
  * codec: 'aac',
684
802
  * name: 'FFmpeg AAC Encoder',
685
- * type: 'ffmpeg_aac'
803
+ * type: 'ffmpeg_aac',
804
+ * properties: {
805
+ * bitrate: { default: 128, description: 'Bitrate' }
806
+ * }
686
807
  * };
687
808
  */
688
809
  interface AudioEncoderInfo extends EncoderInfoBase {
@@ -699,8 +820,9 @@ interface AudioEncoderInfo extends EncoderInfoBase {
699
820
  /**
700
821
  * Information for a supported video encoder.
701
822
  *
702
- * This interface extends `EncoderInfoBase` and adds specific information
703
- * about the video encoder type and any configurable encoder properties.
823
+ * This interface extends `EncoderInfoBase` and adds the specific video encoder
824
+ * type identifier. Configurable encoder settings are reported through the
825
+ * inherited `properties` map.
704
826
  *
705
827
  * @extends EncoderInfoBase
706
828
  *
@@ -710,14 +832,11 @@ interface AudioEncoderInfo extends EncoderInfoBase {
710
832
  * name: 'NVIDIA NVENC H.264',
711
833
  * type: 'obs_nvenc_h264_tex',
712
834
  * properties: {
713
- * bitrate: {
714
- * default: 6000,
715
- * description: 'Target video bitrate in kbps.',
716
- * values: {
717
- * 4000: 'Low quality',
718
- * 6000: 'Medium quality',
719
- * 8000: 'High quality'
720
- * }
835
+ * bitrate: { default: 10000, description: 'Bitrate' },
836
+ * rate_control: {
837
+ * default: 'CBR',
838
+ * description: 'Rate Control',
839
+ * values: ['CBR', 'CQP', 'VBR', 'CQVBR']
721
840
  * }
722
841
  * }
723
842
  * };
@@ -725,19 +844,10 @@ interface AudioEncoderInfo extends EncoderInfoBase {
725
844
  interface VideoEncoderInfo extends EncoderInfoBase {
726
845
  /**
727
846
  * The identifier for the specific video encoder type.
728
- *
847
+ *
729
848
  * @see {@link kSupportedEncodersTypes}
730
849
  */
731
850
  readonly type: kSupportedEncodersTypes;
732
-
733
- /**
734
- * Optional map of encoder-specific configuration properties.
735
- * Each property defines a setting that can be adjusted,
736
- * such as bitrate, profile, or keyframe interval.
737
- *
738
- * @see {@link EncoderProperty}
739
- */
740
- readonly properties?: Record<string, EncoderProperty>;
741
851
  }
742
852
 
743
853
 
@@ -841,7 +951,7 @@ interface AudioInformation {
841
951
  * adapterIndex: 0,
842
952
  * id: 'MONITOR\\GSM5B10\\{4d36e96e-e325-11ce-bfc1-08002be10318}_0',
843
953
  * altId: 'DISPLAY1',
844
- * dpi: 96,
954
+ * dpi: 1.25,
845
955
  * attachedToDesktop: true,
846
956
  * friendlyName: 'LG UltraFine 4K',
847
957
  * refreshRate: 60,
@@ -867,7 +977,8 @@ interface MonitorInfo {
867
977
  readonly altId: string;
868
978
 
869
979
  /**
870
- * The DPI (dots per inch) value of the monitor.
980
+ * Display scale factor (system DPI / 96), not a DPI value.
981
+ * `1` = 100%, `1.25` = 125%, `2` = 200%.
871
982
  */
872
983
  readonly dpi: number;
873
984
 
@@ -1025,6 +1136,18 @@ interface RecordingInformation {
1025
1136
  * Each format may offer different tradeoffs in terms of compatibility, streaming support,
1026
1137
  * compression, or support for advanced features like fragmentation or hybrid modes.
1027
1138
  *
1139
+ * | Value | Description |
1140
+ * | ------------------ | -------------------------------------------------------------------------------------- |
1141
+ * | `'fragmented_mp4'` | Fragmented MP4 — Ideal for adaptive streaming and progressive download scenarios. |
1142
+ * | `'fragmented_mov'` | Fragmented MOV — Similar to fragmented MP4 but uses the .mov container format. |
1143
+ * | `'mp4'` | Standard MP4 — Widely supported container for high-quality compressed video and audio. |
1144
+ * | `'flv'` | FLV — Flash Video format, legacy support for some live streaming services. |
1145
+ * | `'mkv'` | MKV — Matroska container supporting multiple audio, video, and subtitle tracks. |
1146
+ * | `'mov'` | MOV — Apple's QuickTime format, often used in macOS video workflows. |
1147
+ * | `'mpegts'` | MPEG-TS — Transport stream format suitable for broadcasting or continuous streaming. |
1148
+ * | `'hls'` | HLS — HTTP Live Streaming; produces a playlist with segmented video chunks. |
1149
+ * | `'hybrid_mp4'` | Hybrid MP4 — A format combining fragmented and standard MP4 traits for compatibility. |
1150
+ *
1028
1151
  * @example
1029
1152
  * const format: kFileFormat = 'mp4';
1030
1153
  */
@@ -1080,6 +1203,17 @@ type kFileFormat =
1080
1203
  * Each format defines how color and luminance information is represented in memory.
1081
1204
  * Choice of format can affect performance, quality, and hardware compatibility.
1082
1205
  *
1206
+ * | Value | Description |
1207
+ * | -------- | --------------------------------------------------------------------------------------------------------------------------- |
1208
+ * | `'NV12'` | 8-bit YUV format with planar Y and interleaved UV planes. Commonly used in hardware-accelerated video processing. |
1209
+ * | `'I420'` | 8-bit planar YUV format with 4:2:0 chroma subsampling. Widely supported and efficient for compression. |
1210
+ * | `'I444'` | 8-bit planar YUV format with full 4:4:4 chroma (no subsampling). Offers highest color fidelity, useful for post-production. |
1211
+ * | `'P010'` | 10-bit packed YUV 4:2:0 format. Suitable for high dynamic range (HDR) workflows. |
1212
+ * | `'I010'` | 10-bit planar YUV 4:2:0 format. Provides better color depth while retaining planar layout. |
1213
+ * | `'P216'` | 16-bit packed YUV 4:2:2 format. Offers higher color resolution, used in professional capture scenarios. |
1214
+ * | `'P416'` | 16-bit packed YUV 4:4:4 format. Ideal for precise color reproduction and advanced editing. |
1215
+ * | `'BGRA'` | 8-bit packed RGB format with alpha channel. Used in real-time rendering and desktop capture. |
1216
+ *
1083
1217
  * @example
1084
1218
  * const colorFormat: kVideoColorFormat = 'NV12';
1085
1219
  */
@@ -1140,6 +1274,14 @@ type kVideoColorFormat =
1140
1274
  * used in video encoding pipelines. Choosing the appropriate spec impacts color
1141
1275
  * accuracy and display compatibility, especially for HDR or broadcast workflows.
1142
1276
  *
1277
+ * | Value | Description |
1278
+ * | ----------- | ------------------------------------------------------------------------------------------------------------------------------ |
1279
+ * | `'sRGB'` | Standard RGB color space used for web content and computer monitors. Matches the typical display profile of non-HDR screens. |
1280
+ * | `'709'` | Rec. 709 color space used for HDTV and most modern video production. Offers better color range and gamma than older standards. |
1281
+ * | `'601'` | Rec. 601 color space used in standard-definition television (SDTV). Suitable for legacy content or older broadcast systems. |
1282
+ * | `'2100PQ'` | Rec. 2100 color spec using PQ (Perceptual Quantizer) transfer function. Used for HDR10 and other HDR video delivery standards. |
1283
+ * | `'2100HLG'` | Rec. 2100 color spec using HLG (Hybrid Log-Gamma) transfer function. HDR-compatible and backward-compatible with SDR displays. |
1284
+ *
1143
1285
  * @example
1144
1286
  * const colorSpec: kVideoColorSpec = '709';
1145
1287
  */
@@ -1181,6 +1323,11 @@ type kVideoColorSpec =
1181
1323
  * and contrast. It is important to match the color range to the target display
1182
1324
  * or encoder to avoid washed-out or crushed colors.
1183
1325
  *
1326
+ * | Value | Description |
1327
+ * | ----------- | -------------------------------------------------------------------------------------------------------- |
1328
+ * | `'Partial'` | Uses limited color range (typically 16–235 for luma), common in broadcast and traditional video content. |
1329
+ * | `'Full'` | Uses the full color range (0–255), typical for computer monitors and PC gaming content. |
1330
+ *
1184
1331
  * @example
1185
1332
  * const range: kVideoColorRange = 'Full';
1186
1333
  */
@@ -1204,6 +1351,16 @@ type kVideoColorRange =
1204
1351
  * affecting quality, file size, and encoding performance.
1205
1352
  * These values are specific to AMD's video encoding capabilities.
1206
1353
  *
1354
+ * | Value | Description |
1355
+ * | ----------- | ----------------------------------------------------------------------------------------------------------------------- |
1356
+ * | `'CBR'` | Constant Bitrate. Maintains a fixed bitrate for consistent file size and streaming bandwidth. |
1357
+ * | `'CQP'` | Constant Quantization Parameter. Uses a fixed quantizer value, offering consistent visual quality but variable bitrate. |
1358
+ * | `'VBR'` | Variable Bitrate. Bitrate adjusts based on complexity of the content, balancing quality and size. |
1359
+ * | `'VBR_LAT'` | Variable Bitrate with low-latency tuning. Optimized for low-latency scenarios like real-time streaming. |
1360
+ * | `'QVBR'` | Quality-defined Variable Bitrate. Maintains a target visual quality level rather than a specific bitrate. |
1361
+ * | `'HQVBR'` | High-Quality Variable Bitrate. Prioritizes visual fidelity while allowing variable bitrate. |
1362
+ * | `'HQCBR'` | High-Quality Constant Bitrate. Delivers consistent bitrate while maximizing encoding quality. |
1363
+ *
1207
1364
  * @example
1208
1365
  * const rateControl: kAMDEncoderRateControl = 'CBR';
1209
1366
  */
@@ -1256,6 +1413,12 @@ type kAMDEncoderRateControl =
1256
1413
  * These presets control the balance between encoding speed and visual quality.
1257
1414
  * Useful when tuning encoder behavior for different use cases such as streaming or local recording.
1258
1415
  *
1416
+ * | Value | Description |
1417
+ * | ------------ | ----------------------------------------------------------------------------------------------------------------- |
1418
+ * | `'quality'` | Prioritizes the best possible image quality. May result in slower encoding speeds. |
1419
+ * | `'balanced'` | Offers a tradeoff between quality and speed. Suitable for most general-purpose use cases. |
1420
+ * | `'speed'` | Optimized for fastest encoding performance. May reduce image quality in favor of lower latency and CPU/GPU usage. |
1421
+ *
1259
1422
  * @example
1260
1423
  * const preset: kAMDEncoderPreset = 'balanced';
1261
1424
  */
@@ -1314,6 +1477,12 @@ type kAMDEncoderProfileAV1 = 'main';
1314
1477
  * impacting compatibility, quality, and efficiency. This type includes standard H.264 profiles,
1315
1478
  * as well as the AV1 `main` profile reused for structural consistency.
1316
1479
  *
1480
+ * | Value | Description |
1481
+ * | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
1482
+ * | `kAMDEncoderProfileAV1` (`'main'`) | The AV1 main profile reused here for structural consistency. Typically not used with H.264 but may appear in shared configuration types. |
1483
+ * | `'high'` | Offers the best visual quality and compression efficiency. Commonly used for high-definition video applications. |
1484
+ * | `'baseline'` | Provides the most basic H.264 features. Suitable for low-complexity or real-time encoding scenarios. |
1485
+ *
1317
1486
  * @example
1318
1487
  * const profile: kAMDEncoderProfile264 = 'high';
1319
1488
  *
@@ -1344,6 +1513,19 @@ type kAMDEncoderProfile264 =
1344
1513
  * Rate control modes define how the encoder manages bitrate and quality.
1345
1514
  * Choosing the appropriate mode depends on the desired balance between quality, file size, and real-time performance.
1346
1515
  *
1516
+ * | Value | Description |
1517
+ * | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------ |
1518
+ * | `'CBR'` | Constant Bitrate. Maintains a consistent bitrate throughout the recording. Useful for streaming and bandwidth-limited scenarios. |
1519
+ * | `'CQP'` | Constant Quantization Parameter. Prioritizes visual quality by keeping a consistent quantization level. File sizes may vary significantly. |
1520
+ * | `'VBR'` | Variable Bitrate. Adjusts bitrate dynamically based on scene complexity. Provides better compression but less predictability in file size. |
1521
+ * | `'CQVBR'` | Constrained Quality VBR. Targets a quality level (`target_quality`) while respecting `max_bitrate`. |
1522
+ * | `'lossless'` | Encodes without compression loss. Produces very high-quality output at the cost of large file sizes. |
1523
+ *
1524
+ * These values are **case-sensitive**: NVENC compares `CQP` and `lossless`
1525
+ * exactly as spelled here. Any value it does not recognize falls back to `CBR`
1526
+ * silently, with no error - so pass these strings verbatim and do not
1527
+ * upper- or lower-case them.
1528
+ *
1347
1529
  * @example
1348
1530
  * const rateControl: kNVENCEncoderRateControl = 'CQP';
1349
1531
  */
@@ -1367,10 +1549,18 @@ type kNVENCEncoderRateControl =
1367
1549
  | 'VBR'
1368
1550
 
1369
1551
  /**
1370
- * `Lossless` — Encodes without compression loss.
1552
+ * `CQVBR` — Constrained Quality VBR. Targets the quality level given by
1553
+ * `target_quality` while keeping within `max_bitrate`.
1554
+ */
1555
+ | 'CQVBR'
1556
+
1557
+ /**
1558
+ * `lossless` — Encodes without compression loss.
1371
1559
  * Produces very high-quality output at the cost of large file sizes.
1560
+ *
1561
+ * Lower-case by design: NVENC matches this value case-sensitively.
1372
1562
  */
1373
- | 'Lossless';
1563
+ | 'lossless';
1374
1564
 
1375
1565
  /**
1376
1566
  * Specifies the multipass encoding mode for NVIDIA's NVENC encoder.
@@ -1378,6 +1568,12 @@ type kNVENCEncoderRateControl =
1378
1568
  * Multipass encoding improves visual quality by analyzing the video in multiple passes
1379
1569
  * to better allocate bitrate and compression decisions.
1380
1570
  *
1571
+ * | Value | Description |
1572
+ * | ------------ | ----------------------------------------------------------------------------------------------------------------------------- |
1573
+ * | `'qres'` | Quarter-resolution first pass followed by full-resolution encoding. Offers a good balance between speed and improved quality. |
1574
+ * | `'fullres'` | Full-resolution multipass encoding. Produces the highest quality results but increases encoding time. |
1575
+ * | `'disabled'` | Multipass is turned off. Results in faster encoding at the potential cost of lower quality. |
1576
+ *
1381
1577
  * @example
1382
1578
  * const multipass: kNVENCEncoderMultipass = 'qres';
1383
1579
  */
@@ -1406,6 +1602,12 @@ type kNVENCEncoderMultipass =
1406
1602
  * Tuning presets allow the encoder to optimize for specific use cases like high quality or low latency,
1407
1603
  * adjusting internal settings accordingly.
1408
1604
  *
1605
+ * | Value | Description |
1606
+ * | ------- | ------------------------------------------------------------------------------------------------------------------------------ |
1607
+ * | `'hq'` | High Quality. Prioritizes visual quality over latency. Ideal for recording or broadcasting when minimal delay is not critical. |
1608
+ * | `'ll'` | Low Latency. Balances quality and latency. Suitable for interactive streaming and real-time applications. |
1609
+ * | `'ull'` | Ultra Low Latency. Minimizes delay as much as possible. Best used in competitive gaming or remote control scenarios. |
1610
+ *
1409
1611
  * @example
1410
1612
  * const tuning: kNVENCEncoderTuning = 'll';
1411
1613
  */
@@ -1441,6 +1643,12 @@ type kNVENCEncoderProfile = 'main';
1441
1643
  * These profiles determine the features used in encoding and the compatibility of the resulting stream or file.
1442
1644
  * This type extends the base `kNVENCEncoderProfile` and includes commonly used H.264 profiles.
1443
1645
  *
1646
+ * | Value | Description |
1647
+ * | --------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
1648
+ * | `kNVENCEncoderProfile` (`'main'`) | Base set of encoder profiles (e.g., `main`). May include additional shared or AV1-specific variants. |
1649
+ * | `'high'` | Supports the most advanced H.264 features. Recommended for high-definition video with better compression efficiency. |
1650
+ * | `'baseline'` | Basic H.264 profile with minimal compression features. Best for low-latency and real-time video applications. |
1651
+ *
1444
1652
  * @example
1445
1653
  * const profile: kNVENCEncoderProfile264 = 'high';
1446
1654
  *
@@ -1471,6 +1679,11 @@ type kNVENCEncoderProfile264 =
1471
1679
  * These profiles determine the compression capabilities, color depth, and compatibility of the HEVC stream.
1472
1680
  * This type extends `kNVENCEncoderProfile` and includes 10-bit support via `main10`.
1473
1681
  *
1682
+ * | Value | Description |
1683
+ * | --------------------------------- | ---------------------------------------------------------------------------------------- |
1684
+ * | `kNVENCEncoderProfile` (`'main'`) | Base HEVC profile, typically includes `main`. Suitable for standard 8-bit HEVC encoding. |
1685
+ * | `'main10'` | Enables 10-bit color depth for enhanced video quality and HDR compatibility. |
1686
+ *
1474
1687
  * @example
1475
1688
  * const profile: kNVENCEncoderProfileHEVC = 'main10';
1476
1689
  *
@@ -1494,6 +1707,13 @@ type kNVENCEncoderProfileHEVC =
1494
1707
  * Rate control modes determine how the encoder manages bitrate and quality over time.
1495
1708
  * Each mode offers a different balance between output file size, quality, and encoding speed.
1496
1709
  *
1710
+ * | Value | Description |
1711
+ * | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
1712
+ * | `'CBR'` | Constant Bitrate. Maintains a fixed bitrate throughout encoding. Useful for streaming where bandwidth predictability is important. |
1713
+ * | `'ABR'` | Average Bitrate. Tries to maintain a target average bitrate across the whole stream. Balances quality and file size over long durations. |
1714
+ * | `'VBR'` | Variable Bitrate. Allows the bitrate to vary depending on frame complexity. Offers better quality at lower file sizes, but less predictable bandwidth usage. |
1715
+ * | `'CRF'` | Constant Rate Factor. Targets a consistent visual quality instead of bitrate. Ideal for scenarios where quality is more important than file size. |
1716
+ *
1497
1717
  * @example
1498
1718
  * const rateControl: kX264EncoderRateControl = 'CRF';
1499
1719
  */
@@ -1528,6 +1748,13 @@ type kX264EncoderRateControl =
1528
1748
  * Encoding profiles define the set of features used for compression and compatibility
1529
1749
  * with various playback devices and streaming platforms.
1530
1750
  *
1751
+ * | Value | Description |
1752
+ * | ------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
1753
+ * | `''` | Default profile. Lets the encoder decide which profile to use automatically. |
1754
+ * | `'baseline'` | Provides basic H.264 features. Suitable for low-complexity, real-time, or legacy device compatibility scenarios. |
1755
+ * | `'main'` | Supports interlaced video and enhanced compression. Recommended for general-purpose encoding with balanced quality and performance. |
1756
+ * | `'high'` | Enables advanced compression features for better video quality. Ideal for HD content, streaming, or high-quality recording. |
1757
+ *
1531
1758
  * @example
1532
1759
  * const profile: kX264EncoderProfile = 'high';
1533
1760
  */
@@ -1563,6 +1790,18 @@ type kX264EncoderProfile =
1563
1790
  * Tuning options help optimize the encoder's performance for specific types of content or use cases.
1564
1791
  * These settings adjust internal compression behavior and rate-distortion tradeoffs.
1565
1792
  *
1793
+ * | Value | Description |
1794
+ * | --------------- | ------------------------------------------------------------------------------------------------------------ |
1795
+ * | `''` | Default. No tuning applied; encoder uses standard compression behavior. |
1796
+ * | `'film'` | Optimizes for live-action, natural footage. Preserves fine grain and cinematic detail. |
1797
+ * | `'animation'` | Optimizes for animated content. Enhances compression of solid colors and repetitive patterns. |
1798
+ * | `'grain'` | Preserves film grain. Reduces temporal blurring at the cost of larger file sizes. |
1799
+ * | `'stillimage'` | Optimizes for individual image compression. Suitable for slideshow or low-motion content. |
1800
+ * | `'psnr'` | Optimizes for peak signal-to-noise ratio (PSNR). Prioritizes objective video quality metrics. |
1801
+ * | `'ssim'` | Optimizes for structural similarity index (SSIM). Targets better perceptual quality over raw pixel accuracy. |
1802
+ * | `'fastdecode'` | Reduces computational load on decoders. Disables features that are hard to decode quickly. |
1803
+ * | `'zerolatency'` | Minimizes latency for real-time streaming. Reduces buffering and introduces faster frame delivery. |
1804
+ *
1566
1805
  * @example
1567
1806
  * const tune: kX264EncoderTune = 'animation';
1568
1807
  */
@@ -1626,6 +1865,19 @@ type kX264EncoderTune =
1626
1865
  * Faster presets use less CPU but result in lower compression efficiency (larger files),
1627
1866
  * while slower presets use more CPU to produce better compression and quality.
1628
1867
  *
1868
+ * | Value | Description |
1869
+ * | ------------- | ------------------------------------------------------------------------------------------------------------- |
1870
+ * | `'ultrafast'` | Lowest CPU usage and fastest encoding speed. Produces larger file sizes and lower compression quality. |
1871
+ * | `'superfast'` | Very fast encoding with slightly better compression than `ultrafast`. |
1872
+ * | `'veryfast'` | A good balance between speed and quality. Commonly used default setting. |
1873
+ * | `'faster'` | Slightly slower than `veryfast` with improved compression. |
1874
+ * | `'fast'` | Offers better compression efficiency than `faster` at the cost of more CPU. |
1875
+ * | `'medium'` | Default preset for x264. Balances speed and quality effectively. |
1876
+ * | `'slow'` | Slower encoding for better compression and video quality. |
1877
+ * | `'slower'` | Even better compression at the cost of more processing time. |
1878
+ * | `'veryslow'` | Maximizes compression efficiency and visual quality. Suitable for archival or final delivery. |
1879
+ * | `'placebo'` | Insanely slow with minimal improvement over `veryslow`. Generally not recommended due to diminishing returns. |
1880
+ *
1629
1881
  * @example
1630
1882
  * const preset: kX264EncoderPreset = 'veryfast';
1631
1883
  */
@@ -1721,6 +1973,16 @@ type kQuickSyncEncoderProfile264 = kNVENCEncoderProfile264;
1721
1973
  * Target usage defines a trade-off between encoding speed and output quality.
1722
1974
  * Lower TU values result in better quality but slower performance, while higher values favor speed.
1723
1975
  *
1976
+ * | Value | Description |
1977
+ * | ------- | --------------------------------------------------- |
1978
+ * | `'TU1'` | Slowest encoding, best possible quality. |
1979
+ * | `'TU2'` | Slower encoding with slightly reduced quality. |
1980
+ * | `'TU3'` | Slow encoding with good quality. |
1981
+ * | `'TU4'` | Balanced setting offering medium quality and speed. |
1982
+ * | `'TU5'` | Fast encoding with reduced quality. |
1983
+ * | `'TU6'` | Faster encoding with further quality tradeoffs. |
1984
+ * | `'TU7'` | Fastest encoding, lowest quality. |
1985
+ *
1724
1986
  * @example
1725
1987
  * const usage: kQuickSyncTargetUsage = 'TU4'; // Balanced
1726
1988
  */
@@ -1748,6 +2010,13 @@ type kQuickSyncTargetUsage =
1748
2010
  *
1749
2011
  * Rate control determines how the bitrate is managed during encoding, impacting quality, file size, and performance.
1750
2012
  *
2013
+ * | Value | Description |
2014
+ * | ------- | ----------------------------------------------------------------------------------------------------- |
2015
+ * | `'CBR'` | Constant Bitrate. Maintains a fixed bitrate for predictable file sizes. |
2016
+ * | `'CQP'` | Constant Quantization Parameter. Prioritizes consistent quality over bitrate. |
2017
+ * | `'VBR'` | Variable Bitrate. Adjusts bitrate dynamically for efficient encoding with acceptable quality. |
2018
+ * | `'ICQ'` | Intelligent Constant Quality. Balances quality and bitrate automatically using an internal algorithm. |
2019
+ *
1751
2020
  * @example
1752
2021
  * const rateControl: kQuickSyncEncoderRateControl = 'CBR';
1753
2022
  */
@@ -1766,6 +2035,12 @@ type kQuickSyncEncoderRateControl =
1766
2035
  *
1767
2036
  * Splitting can be useful for managing file sizes, organizing segments, or controlling recording behavior dynamically.
1768
2037
  *
2038
+ * | Value | Description |
2039
+ * | ---------- | ------------------------------------------------------------------------------ |
2040
+ * | `'byTime'` | Automatically splits the recording into segments based on elapsed time. |
2041
+ * | `'bySize'` | Automatically splits the recording once a specific file size limit is reached. |
2042
+ * | `'manual'` | Splitting is controlled programmatically or by user input. |
2043
+ *
1769
2044
  * @example
1770
2045
  * const splitType: VideoRecordingSplitType = 'bySize';
1771
2046
  */
@@ -3832,6 +4107,13 @@ interface EncoderInformation {
3832
4107
  */
3833
4108
  type CrashDumpType = 'off' | 'mini' | 'full';
3834
4109
 
4110
+ /**
4111
+ * How OBS is hosted.
4112
+ * - `process`: OBS runs as its own standalone process; the default.
4113
+ * - `dll`: OBS runs inside a helper process launched by the app.
4114
+ */
4115
+ type ObsHostMode = 'process' | 'dll';
4116
+
3835
4117
  /**
3836
4118
  * Crash dump configuration for the OBS host process.
3837
4119
  */
@@ -3893,6 +4175,16 @@ interface RecordingAppOptions {
3893
4175
  * @see {@link CrashDumpOptions}
3894
4176
  */
3895
4177
  crashDumps?: CrashDumpOptions;
4178
+
4179
+ /**
4180
+ * How to host OBS. Defaults to `process`.
4181
+ *
4182
+ * Applied the next time OBS starts, so changing it while a recording is
4183
+ * running does not affect that recording.
4184
+ *
4185
+ * @see {@link ObsHostMode}
4186
+ */
4187
+ hostMode?: ObsHostMode;
3896
4188
  }
3897
4189
 
3898
4190
 
@@ -3903,6 +4195,25 @@ interface RecordingAppOptions {
3903
4195
  *
3904
4196
  * These codes help in identifying and handling recording-related issues.
3905
4197
  *
4198
+ * | Code | Name | Description |
4199
+ * | ------- | ---------------------------- | -------------------------------------------------------------------------------- |
4200
+ * | `-1001` | `Unknown` | Generic unknown error. |
4201
+ * | `-1000` | `ProcessTerminated` | OBS process crashed. |
4202
+ * | `-999` | `MissingBinaries` | Missing binaries required for recording. |
4203
+ * | `-998` | `ConnectionOBSError` | Failed to connect to the OBS process. |
4204
+ * | `-997` | `AlreadyRunning` | Operation attempted while recording is already running. |
4205
+ * | `-996` | `ElevationHelperMissing` | Elevated game capture requested while the High Elevation Helper isn't installed. |
4206
+ * | `-12` | `SplitRecordingDisabled` | Attempted to split recording when split recording is disabled. |
4207
+ * | `-11` | `MissingOrInvalidParameters` | One or more required parameters are missing or invalid. |
4208
+ * | `-10` | `NoActiveRecording` | No active recording session found. |
4209
+ * | `-8` | `EncoderError` | Encoder encountered an error. |
4210
+ * | `-7` | `NoDiskSpaceError` | Not enough disk space to complete the recording. |
4211
+ * | `-4` | `ProcessOutputError` | Failed to process or finalize the output video file. |
4212
+ * | `-1` | `BadPathError` | Invalid or inaccessible output file path. |
4213
+ * | `0` | `Success` | Operation succeeded. |
4214
+ * | `1` | `SuccessLowDiskSpace` | Operation succeeded but stopped early due to low disk space. |
4215
+ * | `2` | `SuccessWithError` | Replay stopped while creating replay. |
4216
+ *
3906
4217
  * @example
3907
4218
  * ```ts
3908
4219
  * function handleError(code: ErrorCode) {
@@ -3928,9 +4239,7 @@ type ErrorCode =
3928
4239
  | -1 // Invalid or inaccessible output file path. 'BadPathError'
3929
4240
  | 0 // Operation succeeded. 'Success'
3930
4241
  | 1 // Operation succeeded but stopped early due to low disk space. 'SuccessLowDiskSpace'
3931
- | 2; // Reserved or undefined success code.
3932
-
3933
- // Replay stopped while creating replay 'SuccessWithError'
4242
+ | 2; // Replay stopped while creating replay. 'SuccessWithError'
3934
4243
 
3935
4244
  /**
3936
4245
  * Base configuration options for video recording.
@@ -5036,8 +5345,8 @@ type GpuPreference = "default" | "highPerformance";
5036
5345
  * received in-game. The overlay retried, then fell back to the CPU copy path.
5037
5346
  * {@link IOverwolfOverlayApi.setGpuPreference} may help when the root cause is
5038
5347
  * adapter-related.
5039
- * - `handleTransportBlocked`&mdash;The GPU textures could not be shared with the game
5040
- * process.
5348
+ * - `handleTransportBlocked`&mdash;The GPU textures could not be handed to the game process
5349
+ * at all. Nothing the application can do; the overlay uses the CPU copy path for this game.
5041
5350
  *
5042
5351
  * @see {@link IOverwolfOverlayApi.on} `shared-texture-unavailable`.
5043
5352
  *
@@ -6212,8 +6521,8 @@ interface IOverwolfOverlayApi extends EventEmitter {
6212
6521
  * received in-game**. The overlay retried, then abandoned the path for this game.
6213
6522
  * {@link IOverwolfOverlayApi.setGpuPreference} may help when the root cause is
6214
6523
  * adapter-related; details are in the overlay log.
6215
- * - `handleTransportBlocked`&mdash;the GPU textures **could not be shared with the game
6216
- * process**.
6524
+ * - `handleTransportBlocked`&mdash;the GPU textures **could not be handed to the game
6525
+ * process at all**. Nothing the application can do.
6217
6526
  *
6218
6527
  * Fires at most **once per injected game**. The first two reasons are detected when the
6219
6528
  * game's graphics are detected, before any frame is sent; `copyFailure` and
@@ -6487,6 +6796,18 @@ export interface ICRNEvent {
6487
6796
  * handling UI state changes, or triggering specific behavior based on
6488
6797
  * user intent or automated conditions.
6489
6798
  *
6799
+ * | Value | Description |
6800
+ * | ------------------------------------------- | ------------------------------------------------------------------------------------------------ |
6801
+ * | `'Dismissed'` | User clicked on the `X` button to dismiss the notification. |
6802
+ * | `'IgnoredByLaunchingGame'` | Notification closed due to launching another game while the notification is displayed. |
6803
+ * | `'Timeout'` | Notification automatically closed after no user action was registered. |
6804
+ * | `'TurnOffNotificationsRequested'` | User clicked on `Turn off notifications` from the cogwheel icon. |
6805
+ * | `'OpenExternalUrl'` | User clicked on a notification that opens an external URL (e.g., newsletter site). |
6806
+ * | `'DownloadExternalApp'` | User clicked on a notification that downloads an external app. |
6807
+ * | `'CancelDownloadExternalApp'` | User clicked on the `Cancel` button while the external app was downloading. |
6808
+ * | `'CloseClickedWhileDownloadingExternalApp'` | User clicked on the `X` button while the external app was downloading. |
6809
+ * | `'ForceClosed'` | Developer programmatically closed the notification using the `closeNotificationWindow()` method. |
6810
+ *
6490
6811
  * @example
6491
6812
  * crnApi.on('notification-action', (action: CRNActionType) => {
6492
6813
  * if (action === 'Dismissed') {