@revizly/node-av 5.2.2-beta.1

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 (254) hide show
  1. package/BUILD_LINUX.md +61 -0
  2. package/LICENSE.md +22 -0
  3. package/README.md +662 -0
  4. package/build_mac_local.sh +69 -0
  5. package/dist/api/audio-frame-buffer.d.ts +205 -0
  6. package/dist/api/audio-frame-buffer.js +287 -0
  7. package/dist/api/audio-frame-buffer.js.map +1 -0
  8. package/dist/api/bitstream-filter.d.ts +820 -0
  9. package/dist/api/bitstream-filter.js +1242 -0
  10. package/dist/api/bitstream-filter.js.map +1 -0
  11. package/dist/api/constants.d.ts +44 -0
  12. package/dist/api/constants.js +45 -0
  13. package/dist/api/constants.js.map +1 -0
  14. package/dist/api/data/test_av1.ivf +0 -0
  15. package/dist/api/data/test_h264.h264 +0 -0
  16. package/dist/api/data/test_hevc.h265 +0 -0
  17. package/dist/api/data/test_mjpeg.mjpeg +0 -0
  18. package/dist/api/data/test_vp8.ivf +0 -0
  19. package/dist/api/data/test_vp9.ivf +0 -0
  20. package/dist/api/decoder.d.ts +1088 -0
  21. package/dist/api/decoder.js +1775 -0
  22. package/dist/api/decoder.js.map +1 -0
  23. package/dist/api/demuxer.d.ts +1219 -0
  24. package/dist/api/demuxer.js +2081 -0
  25. package/dist/api/demuxer.js.map +1 -0
  26. package/dist/api/device.d.ts +586 -0
  27. package/dist/api/device.js +961 -0
  28. package/dist/api/device.js.map +1 -0
  29. package/dist/api/encoder.d.ts +1132 -0
  30. package/dist/api/encoder.js +1988 -0
  31. package/dist/api/encoder.js.map +1 -0
  32. package/dist/api/filter-complex.d.ts +821 -0
  33. package/dist/api/filter-complex.js +1604 -0
  34. package/dist/api/filter-complex.js.map +1 -0
  35. package/dist/api/filter-presets.d.ts +1286 -0
  36. package/dist/api/filter-presets.js +2152 -0
  37. package/dist/api/filter-presets.js.map +1 -0
  38. package/dist/api/filter.d.ts +1234 -0
  39. package/dist/api/filter.js +1976 -0
  40. package/dist/api/filter.js.map +1 -0
  41. package/dist/api/fmp4-stream.d.ts +426 -0
  42. package/dist/api/fmp4-stream.js +739 -0
  43. package/dist/api/fmp4-stream.js.map +1 -0
  44. package/dist/api/hardware.d.ts +651 -0
  45. package/dist/api/hardware.js +1260 -0
  46. package/dist/api/hardware.js.map +1 -0
  47. package/dist/api/index.d.ts +17 -0
  48. package/dist/api/index.js +32 -0
  49. package/dist/api/index.js.map +1 -0
  50. package/dist/api/io-stream.d.ts +307 -0
  51. package/dist/api/io-stream.js +282 -0
  52. package/dist/api/io-stream.js.map +1 -0
  53. package/dist/api/muxer.d.ts +957 -0
  54. package/dist/api/muxer.js +2002 -0
  55. package/dist/api/muxer.js.map +1 -0
  56. package/dist/api/pipeline.d.ts +607 -0
  57. package/dist/api/pipeline.js +1145 -0
  58. package/dist/api/pipeline.js.map +1 -0
  59. package/dist/api/utilities/async-queue.d.ts +120 -0
  60. package/dist/api/utilities/async-queue.js +211 -0
  61. package/dist/api/utilities/async-queue.js.map +1 -0
  62. package/dist/api/utilities/audio-sample.d.ts +117 -0
  63. package/dist/api/utilities/audio-sample.js +112 -0
  64. package/dist/api/utilities/audio-sample.js.map +1 -0
  65. package/dist/api/utilities/channel-layout.d.ts +76 -0
  66. package/dist/api/utilities/channel-layout.js +80 -0
  67. package/dist/api/utilities/channel-layout.js.map +1 -0
  68. package/dist/api/utilities/electron-shared-texture.d.ts +328 -0
  69. package/dist/api/utilities/electron-shared-texture.js +503 -0
  70. package/dist/api/utilities/electron-shared-texture.js.map +1 -0
  71. package/dist/api/utilities/image.d.ts +207 -0
  72. package/dist/api/utilities/image.js +213 -0
  73. package/dist/api/utilities/image.js.map +1 -0
  74. package/dist/api/utilities/index.d.ts +12 -0
  75. package/dist/api/utilities/index.js +25 -0
  76. package/dist/api/utilities/index.js.map +1 -0
  77. package/dist/api/utilities/media-type.d.ts +49 -0
  78. package/dist/api/utilities/media-type.js +53 -0
  79. package/dist/api/utilities/media-type.js.map +1 -0
  80. package/dist/api/utilities/pixel-format.d.ts +89 -0
  81. package/dist/api/utilities/pixel-format.js +97 -0
  82. package/dist/api/utilities/pixel-format.js.map +1 -0
  83. package/dist/api/utilities/sample-format.d.ts +129 -0
  84. package/dist/api/utilities/sample-format.js +141 -0
  85. package/dist/api/utilities/sample-format.js.map +1 -0
  86. package/dist/api/utilities/scheduler.d.ts +138 -0
  87. package/dist/api/utilities/scheduler.js +98 -0
  88. package/dist/api/utilities/scheduler.js.map +1 -0
  89. package/dist/api/utilities/streaming.d.ts +186 -0
  90. package/dist/api/utilities/streaming.js +309 -0
  91. package/dist/api/utilities/streaming.js.map +1 -0
  92. package/dist/api/utilities/timestamp.d.ts +193 -0
  93. package/dist/api/utilities/timestamp.js +206 -0
  94. package/dist/api/utilities/timestamp.js.map +1 -0
  95. package/dist/api/utilities/whisper-model.d.ts +310 -0
  96. package/dist/api/utilities/whisper-model.js +528 -0
  97. package/dist/api/utilities/whisper-model.js.map +1 -0
  98. package/dist/api/utils.d.ts +19 -0
  99. package/dist/api/utils.js +39 -0
  100. package/dist/api/utils.js.map +1 -0
  101. package/dist/api/whisper.d.ts +324 -0
  102. package/dist/api/whisper.js +362 -0
  103. package/dist/api/whisper.js.map +1 -0
  104. package/dist/constants/channel-layouts.d.ts +53 -0
  105. package/dist/constants/channel-layouts.js +57 -0
  106. package/dist/constants/channel-layouts.js.map +1 -0
  107. package/dist/constants/constants.d.ts +2325 -0
  108. package/dist/constants/constants.js +1887 -0
  109. package/dist/constants/constants.js.map +1 -0
  110. package/dist/constants/decoders.d.ts +633 -0
  111. package/dist/constants/decoders.js +641 -0
  112. package/dist/constants/decoders.js.map +1 -0
  113. package/dist/constants/encoders.d.ts +295 -0
  114. package/dist/constants/encoders.js +308 -0
  115. package/dist/constants/encoders.js.map +1 -0
  116. package/dist/constants/hardware.d.ts +26 -0
  117. package/dist/constants/hardware.js +27 -0
  118. package/dist/constants/hardware.js.map +1 -0
  119. package/dist/constants/index.d.ts +5 -0
  120. package/dist/constants/index.js +6 -0
  121. package/dist/constants/index.js.map +1 -0
  122. package/dist/ffmpeg/index.d.ts +99 -0
  123. package/dist/ffmpeg/index.js +115 -0
  124. package/dist/ffmpeg/index.js.map +1 -0
  125. package/dist/ffmpeg/utils.d.ts +31 -0
  126. package/dist/ffmpeg/utils.js +68 -0
  127. package/dist/ffmpeg/utils.js.map +1 -0
  128. package/dist/ffmpeg/version.d.ts +6 -0
  129. package/dist/ffmpeg/version.js +7 -0
  130. package/dist/ffmpeg/version.js.map +1 -0
  131. package/dist/index.d.ts +4 -0
  132. package/dist/index.js +9 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/lib/audio-fifo.d.ts +399 -0
  135. package/dist/lib/audio-fifo.js +431 -0
  136. package/dist/lib/audio-fifo.js.map +1 -0
  137. package/dist/lib/binding.d.ts +228 -0
  138. package/dist/lib/binding.js +60 -0
  139. package/dist/lib/binding.js.map +1 -0
  140. package/dist/lib/bitstream-filter-context.d.ts +379 -0
  141. package/dist/lib/bitstream-filter-context.js +441 -0
  142. package/dist/lib/bitstream-filter-context.js.map +1 -0
  143. package/dist/lib/bitstream-filter.d.ts +140 -0
  144. package/dist/lib/bitstream-filter.js +154 -0
  145. package/dist/lib/bitstream-filter.js.map +1 -0
  146. package/dist/lib/codec-context.d.ts +1071 -0
  147. package/dist/lib/codec-context.js +1354 -0
  148. package/dist/lib/codec-context.js.map +1 -0
  149. package/dist/lib/codec-parameters.d.ts +616 -0
  150. package/dist/lib/codec-parameters.js +761 -0
  151. package/dist/lib/codec-parameters.js.map +1 -0
  152. package/dist/lib/codec-parser.d.ts +201 -0
  153. package/dist/lib/codec-parser.js +213 -0
  154. package/dist/lib/codec-parser.js.map +1 -0
  155. package/dist/lib/codec.d.ts +586 -0
  156. package/dist/lib/codec.js +713 -0
  157. package/dist/lib/codec.js.map +1 -0
  158. package/dist/lib/device.d.ts +291 -0
  159. package/dist/lib/device.js +324 -0
  160. package/dist/lib/device.js.map +1 -0
  161. package/dist/lib/dictionary.d.ts +333 -0
  162. package/dist/lib/dictionary.js +372 -0
  163. package/dist/lib/dictionary.js.map +1 -0
  164. package/dist/lib/error.d.ts +242 -0
  165. package/dist/lib/error.js +303 -0
  166. package/dist/lib/error.js.map +1 -0
  167. package/dist/lib/fifo.d.ts +416 -0
  168. package/dist/lib/fifo.js +453 -0
  169. package/dist/lib/fifo.js.map +1 -0
  170. package/dist/lib/filter-context.d.ts +712 -0
  171. package/dist/lib/filter-context.js +789 -0
  172. package/dist/lib/filter-context.js.map +1 -0
  173. package/dist/lib/filter-graph-segment.d.ts +160 -0
  174. package/dist/lib/filter-graph-segment.js +171 -0
  175. package/dist/lib/filter-graph-segment.js.map +1 -0
  176. package/dist/lib/filter-graph.d.ts +641 -0
  177. package/dist/lib/filter-graph.js +704 -0
  178. package/dist/lib/filter-graph.js.map +1 -0
  179. package/dist/lib/filter-inout.d.ts +198 -0
  180. package/dist/lib/filter-inout.js +257 -0
  181. package/dist/lib/filter-inout.js.map +1 -0
  182. package/dist/lib/filter.d.ts +243 -0
  183. package/dist/lib/filter.js +272 -0
  184. package/dist/lib/filter.js.map +1 -0
  185. package/dist/lib/format-context.d.ts +1254 -0
  186. package/dist/lib/format-context.js +1379 -0
  187. package/dist/lib/format-context.js.map +1 -0
  188. package/dist/lib/frame-utils.d.ts +116 -0
  189. package/dist/lib/frame-utils.js +98 -0
  190. package/dist/lib/frame-utils.js.map +1 -0
  191. package/dist/lib/frame.d.ts +1222 -0
  192. package/dist/lib/frame.js +1435 -0
  193. package/dist/lib/frame.js.map +1 -0
  194. package/dist/lib/hardware-device-context.d.ts +362 -0
  195. package/dist/lib/hardware-device-context.js +383 -0
  196. package/dist/lib/hardware-device-context.js.map +1 -0
  197. package/dist/lib/hardware-frames-context.d.ts +419 -0
  198. package/dist/lib/hardware-frames-context.js +477 -0
  199. package/dist/lib/hardware-frames-context.js.map +1 -0
  200. package/dist/lib/index.d.ts +35 -0
  201. package/dist/lib/index.js +60 -0
  202. package/dist/lib/index.js.map +1 -0
  203. package/dist/lib/input-format.d.ts +249 -0
  204. package/dist/lib/input-format.js +306 -0
  205. package/dist/lib/input-format.js.map +1 -0
  206. package/dist/lib/io-context.d.ts +696 -0
  207. package/dist/lib/io-context.js +769 -0
  208. package/dist/lib/io-context.js.map +1 -0
  209. package/dist/lib/log.d.ts +174 -0
  210. package/dist/lib/log.js +184 -0
  211. package/dist/lib/log.js.map +1 -0
  212. package/dist/lib/native-types.d.ts +946 -0
  213. package/dist/lib/native-types.js +2 -0
  214. package/dist/lib/native-types.js.map +1 -0
  215. package/dist/lib/option.d.ts +927 -0
  216. package/dist/lib/option.js +1583 -0
  217. package/dist/lib/option.js.map +1 -0
  218. package/dist/lib/output-format.d.ts +180 -0
  219. package/dist/lib/output-format.js +213 -0
  220. package/dist/lib/output-format.js.map +1 -0
  221. package/dist/lib/packet.d.ts +501 -0
  222. package/dist/lib/packet.js +590 -0
  223. package/dist/lib/packet.js.map +1 -0
  224. package/dist/lib/rational.d.ts +251 -0
  225. package/dist/lib/rational.js +278 -0
  226. package/dist/lib/rational.js.map +1 -0
  227. package/dist/lib/software-resample-context.d.ts +552 -0
  228. package/dist/lib/software-resample-context.js +592 -0
  229. package/dist/lib/software-resample-context.js.map +1 -0
  230. package/dist/lib/software-scale-context.d.ts +344 -0
  231. package/dist/lib/software-scale-context.js +366 -0
  232. package/dist/lib/software-scale-context.js.map +1 -0
  233. package/dist/lib/stream.d.ts +379 -0
  234. package/dist/lib/stream.js +526 -0
  235. package/dist/lib/stream.js.map +1 -0
  236. package/dist/lib/sync-queue.d.ts +179 -0
  237. package/dist/lib/sync-queue.js +197 -0
  238. package/dist/lib/sync-queue.js.map +1 -0
  239. package/dist/lib/types.d.ts +34 -0
  240. package/dist/lib/types.js +2 -0
  241. package/dist/lib/types.js.map +1 -0
  242. package/dist/lib/utilities.d.ts +1127 -0
  243. package/dist/lib/utilities.js +1225 -0
  244. package/dist/lib/utilities.js.map +1 -0
  245. package/dist/utils/electron.d.ts +49 -0
  246. package/dist/utils/electron.js +63 -0
  247. package/dist/utils/electron.js.map +1 -0
  248. package/dist/utils/index.d.ts +4 -0
  249. package/dist/utils/index.js +5 -0
  250. package/dist/utils/index.js.map +1 -0
  251. package/install/check.js +121 -0
  252. package/install/ffmpeg.js +66 -0
  253. package/jellyfin-ffmpeg.patch +181 -0
  254. package/package.json +129 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/lib/codec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,291 @@
1
+ import type { AVPixelFormat, AVSampleFormat } from '../constants/constants.js';
2
+ /**
3
+ * Screen bounds rectangle
4
+ */
5
+ export interface ScreenBounds {
6
+ x: number;
7
+ y: number;
8
+ width: number;
9
+ height: number;
10
+ }
11
+ /**
12
+ * Base device information
13
+ */
14
+ export interface BaseDeviceInfo {
15
+ name: string;
16
+ description: string;
17
+ isDefault: boolean;
18
+ }
19
+ /**
20
+ * Device information for video capture devices
21
+ */
22
+ export interface VideoDeviceInfo extends BaseDeviceInfo {
23
+ type: 'video';
24
+ }
25
+ /**
26
+ * Device information for audio capture devices
27
+ */
28
+ export interface AudioDeviceInfo extends BaseDeviceInfo {
29
+ type: 'audio';
30
+ }
31
+ /**
32
+ * Device information for screen capture devices
33
+ */
34
+ export interface ScreenDeviceInfo extends BaseDeviceInfo {
35
+ type: 'screen';
36
+ bounds: ScreenBounds;
37
+ }
38
+ /**
39
+ * Device information for capture devices
40
+ */
41
+ export type DeviceInfo = VideoDeviceInfo | AudioDeviceInfo | ScreenDeviceInfo;
42
+ /**
43
+ * Device capture mode
44
+ */
45
+ export interface DeviceMode {
46
+ width: number;
47
+ height: number;
48
+ minFrameRate: number;
49
+ maxFrameRate: number;
50
+ pixelFormat: AVPixelFormat;
51
+ }
52
+ /**
53
+ * Audio device capture mode
54
+ */
55
+ export interface AudioDeviceMode {
56
+ sampleRate: number;
57
+ channels: number;
58
+ sampleFormat: AVSampleFormat;
59
+ }
60
+ /**
61
+ * Low-level device enumeration and format detection.
62
+ *
63
+ * Provides direct access to system capture devices (cameras, microphones)
64
+ * and platform-specific input format names for FFmpeg.
65
+ *
66
+ * Direct mapping to platform-specific APIs:
67
+ * - macOS: AVFoundation
68
+ * - Linux: V4L2/ALSA
69
+ * - Windows: DirectShow
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * import { Device } from 'node-av/lib';
74
+ *
75
+ * // List all capture devices
76
+ * const devices = await Device.list();
77
+ * for (const device of devices) {
78
+ * console.log(`[${device.type}] ${device.name}: ${device.description}`);
79
+ * }
80
+ *
81
+ * // Get platform-specific format names
82
+ * console.log(`Video format: ${Device.getVideoFormat()}`);
83
+ * console.log(`Audio format: ${Device.getAudioFormat()}`);
84
+ * console.log(`Screen format: ${Device.getScreenFormat()}`);
85
+ * ```
86
+ *
87
+ * @see {@link DeviceInfo} For device structure
88
+ */
89
+ export declare class Device {
90
+ /**
91
+ * List all available capture devices.
92
+ *
93
+ * Enumerates video and audio capture devices on the system.
94
+ * Uses platform-specific APIs for device discovery.
95
+ *
96
+ * @returns Array of device information
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * const devices = await Device.list();
101
+ * const cameras = devices.filter(d => d.type === 'video');
102
+ * const microphones = devices.filter(d => d.type === 'audio');
103
+ * ```
104
+ */
105
+ static list(): Promise<DeviceInfo[]>;
106
+ /**
107
+ * List all available capture devices synchronously.
108
+ *
109
+ * @returns Array of device information
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * const devices = Device.listSync();
114
+ * ```
115
+ *
116
+ * @see {@link list} For async version
117
+ */
118
+ static listSync(): DeviceInfo[];
119
+ /**
120
+ * Query supported capture modes for a video device.
121
+ *
122
+ * Returns supported resolutions and frame rate ranges for the specified device.
123
+ * Modes are sorted descending by resolution (area), then by max frame rate.
124
+ *
125
+ * @param deviceName - Device name as returned by `list()` (e.g. uniqueID on macOS, /dev/video0 on Linux)
126
+ *
127
+ * @returns Array of supported device modes
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * const devices = await Device.list();
132
+ * const camera = devices.find(d => d.type === 'video');
133
+ * if (camera) {
134
+ * const modes = await Device.modes(camera.name);
135
+ * console.log('Supported modes:', modes);
136
+ * }
137
+ * ```
138
+ */
139
+ static modes(deviceName: string): Promise<DeviceMode[]>;
140
+ /**
141
+ * Query supported capture modes for a video device synchronously.
142
+ *
143
+ * @param deviceName - Device name as returned by `listSync()`
144
+ *
145
+ * @returns Array of supported device modes
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * const devices = Device.listSync();
150
+ * const camera = devices.find(d => d.type === 'video');
151
+ * if (camera) {
152
+ * const modes = Device.modesSync(camera.name);
153
+ * console.log('Supported modes:', modes);
154
+ * }
155
+ * ```
156
+ *
157
+ * @see {@link modes} For async version
158
+ */
159
+ static modesSync(deviceName: string): DeviceMode[];
160
+ /**
161
+ * Query supported audio capture modes for an audio device.
162
+ *
163
+ * Returns supported sample rates, channel counts and sample formats for the specified device.
164
+ * Modes are sorted descending by sample rate, then by channel count.
165
+ *
166
+ * @param deviceName - Device name as returned by `list()` (e.g. uniqueID on macOS, hw:0 on Linux)
167
+ *
168
+ * @returns Array of supported audio device modes
169
+ *
170
+ * @example
171
+ * ```typescript
172
+ * const devices = await Device.list();
173
+ * const mic = devices.find(d => d.type === 'audio');
174
+ * if (mic) {
175
+ * const modes = await Device.audioModes(mic.name);
176
+ * console.log('Supported audio modes:', modes);
177
+ * }
178
+ * ```
179
+ */
180
+ static audioModes(deviceName: string): Promise<AudioDeviceMode[]>;
181
+ /**
182
+ * Query supported audio capture modes for an audio device synchronously.
183
+ *
184
+ * @param deviceName - Device name as returned by `listSync()`
185
+ *
186
+ * @returns Array of supported audio device modes
187
+ *
188
+ * @example
189
+ * ```typescript
190
+ * const devices = Device.listSync();
191
+ * const mic = devices.find(d => d.type === 'audio');
192
+ * if (mic) {
193
+ * const modes = Device.audioModesSync(mic.name);
194
+ * console.log('Supported audio modes:', modes);
195
+ * }
196
+ * ```
197
+ *
198
+ * @see {@link audioModes} For async version
199
+ */
200
+ static audioModesSync(deviceName: string): AudioDeviceMode[];
201
+ /**
202
+ * Get platform-specific video input format name.
203
+ *
204
+ * @returns Format name for FFmpeg input
205
+ *
206
+ * | Platform | Format |
207
+ * |----------|--------|
208
+ * | macOS | avfoundation |
209
+ * | Linux | v4l2 |
210
+ * | Windows | dshow |
211
+ *
212
+ * @example
213
+ * ```typescript
214
+ * const format = Device.getVideoFormat();
215
+ * // Use with Demuxer.open(deviceName, { format })
216
+ * ```
217
+ */
218
+ static getVideoFormat(): string;
219
+ /**
220
+ * Get platform-specific audio input format name.
221
+ *
222
+ * @returns Format name for FFmpeg input
223
+ *
224
+ * | Platform | Format |
225
+ * |----------|--------|
226
+ * | macOS | avfoundation |
227
+ * | Linux | alsa |
228
+ * | Windows | dshow |
229
+ *
230
+ * @example
231
+ * ```typescript
232
+ * const format = Device.getAudioFormat(); // 'avfoundation' on macOS
233
+ * ```
234
+ */
235
+ static getAudioFormat(): string;
236
+ /**
237
+ * Get platform-specific screen capture format name.
238
+ *
239
+ * @returns Format name for FFmpeg input
240
+ *
241
+ * | Platform | Format |
242
+ * |----------|--------|
243
+ * | macOS | avfoundation |
244
+ * | Linux | x11grab |
245
+ * | Windows | gdigrab |
246
+ *
247
+ * @example
248
+ * ```typescript
249
+ * const format = Device.getScreenFormat(); // 'avfoundation' on macOS
250
+ * ```
251
+ */
252
+ static getScreenFormat(): string;
253
+ /**
254
+ * Check if the application has screen capture permission (macOS only).
255
+ *
256
+ * Uses `CGPreflightScreenCaptureAccess()` on macOS 11+.
257
+ * Always returns `true` on Linux, Windows, and macOS < 11.
258
+ *
259
+ * @returns `true` if screen capture is permitted
260
+ *
261
+ * @example
262
+ * ```typescript
263
+ * if (Device.hasScreenCapturePermission()) {
264
+ * console.log('Screen capture is permitted');
265
+ * } else {
266
+ * console.log('Screen capture permission not granted');
267
+ * }
268
+ * ```
269
+ */
270
+ static hasScreenCapturePermission(): boolean;
271
+ /**
272
+ * Request screen capture permission from the user (macOS only).
273
+ *
274
+ * Uses `CGRequestScreenCaptureAccess()` on macOS 11+.
275
+ * This will trigger the system permission dialog if not already granted.
276
+ * Always returns `true` on Linux, Windows, and macOS < 11.
277
+ *
278
+ * @returns `true` if permission was already granted (does not wait for dialog)
279
+ *
280
+ * @example
281
+ * ```typescript
282
+ * const granted = Device.requestScreenCaptureAccess();
283
+ * if (granted) {
284
+ * console.log('Screen capture permission already granted');
285
+ * } else {
286
+ * console.log('Screen capture permission dialog shown to user');
287
+ * }
288
+ * ```
289
+ */
290
+ static requestScreenCaptureAccess(): boolean;
291
+ }
@@ -0,0 +1,324 @@
1
+ import { bindings } from './binding.js';
2
+ /**
3
+ * Low-level device enumeration and format detection.
4
+ *
5
+ * Provides direct access to system capture devices (cameras, microphones)
6
+ * and platform-specific input format names for FFmpeg.
7
+ *
8
+ * Direct mapping to platform-specific APIs:
9
+ * - macOS: AVFoundation
10
+ * - Linux: V4L2/ALSA
11
+ * - Windows: DirectShow
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * import { Device } from 'node-av/lib';
16
+ *
17
+ * // List all capture devices
18
+ * const devices = await Device.list();
19
+ * for (const device of devices) {
20
+ * console.log(`[${device.type}] ${device.name}: ${device.description}`);
21
+ * }
22
+ *
23
+ * // Get platform-specific format names
24
+ * console.log(`Video format: ${Device.getVideoFormat()}`);
25
+ * console.log(`Audio format: ${Device.getAudioFormat()}`);
26
+ * console.log(`Screen format: ${Device.getScreenFormat()}`);
27
+ * ```
28
+ *
29
+ * @see {@link DeviceInfo} For device structure
30
+ */
31
+ export class Device {
32
+ /**
33
+ * List all available capture devices.
34
+ *
35
+ * Enumerates video and audio capture devices on the system.
36
+ * Uses platform-specific APIs for device discovery.
37
+ *
38
+ * @returns Array of device information
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const devices = await Device.list();
43
+ * const cameras = devices.filter(d => d.type === 'video');
44
+ * const microphones = devices.filter(d => d.type === 'audio');
45
+ * ```
46
+ */
47
+ static async list() {
48
+ const nativeDevices = await bindings.Device.listDevices();
49
+ return nativeDevices.map((d) => {
50
+ if (d.type === 'screen') {
51
+ return {
52
+ name: d.name,
53
+ description: d.description,
54
+ type: 'screen',
55
+ isDefault: d.isDefault,
56
+ bounds: {
57
+ x: d.screenX ?? 0,
58
+ y: d.screenY ?? 0,
59
+ width: d.screenWidth ?? 0,
60
+ height: d.screenHeight ?? 0,
61
+ },
62
+ };
63
+ }
64
+ return {
65
+ name: d.name,
66
+ description: d.description,
67
+ type: d.type,
68
+ isDefault: d.isDefault,
69
+ };
70
+ });
71
+ }
72
+ /**
73
+ * List all available capture devices synchronously.
74
+ *
75
+ * @returns Array of device information
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * const devices = Device.listSync();
80
+ * ```
81
+ *
82
+ * @see {@link list} For async version
83
+ */
84
+ static listSync() {
85
+ const nativeDevices = bindings.Device.listDevicesSync();
86
+ return nativeDevices.map((d) => {
87
+ if (d.type === 'screen') {
88
+ return {
89
+ name: d.name,
90
+ description: d.description,
91
+ type: 'screen',
92
+ isDefault: d.isDefault,
93
+ bounds: {
94
+ x: d.screenX ?? 0,
95
+ y: d.screenY ?? 0,
96
+ width: d.screenWidth ?? 0,
97
+ height: d.screenHeight ?? 0,
98
+ },
99
+ };
100
+ }
101
+ return {
102
+ name: d.name,
103
+ description: d.description,
104
+ type: d.type,
105
+ isDefault: d.isDefault,
106
+ };
107
+ });
108
+ }
109
+ /**
110
+ * Query supported capture modes for a video device.
111
+ *
112
+ * Returns supported resolutions and frame rate ranges for the specified device.
113
+ * Modes are sorted descending by resolution (area), then by max frame rate.
114
+ *
115
+ * @param deviceName - Device name as returned by `list()` (e.g. uniqueID on macOS, /dev/video0 on Linux)
116
+ *
117
+ * @returns Array of supported device modes
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * const devices = await Device.list();
122
+ * const camera = devices.find(d => d.type === 'video');
123
+ * if (camera) {
124
+ * const modes = await Device.modes(camera.name);
125
+ * console.log('Supported modes:', modes);
126
+ * }
127
+ * ```
128
+ */
129
+ static async modes(deviceName) {
130
+ const nativeModes = await bindings.Device.listDeviceModes(deviceName);
131
+ return nativeModes.map((m) => ({
132
+ width: m.width,
133
+ height: m.height,
134
+ minFrameRate: m.minFrameRate,
135
+ maxFrameRate: m.maxFrameRate,
136
+ pixelFormat: m.pixelFormat,
137
+ }));
138
+ }
139
+ /**
140
+ * Query supported capture modes for a video device synchronously.
141
+ *
142
+ * @param deviceName - Device name as returned by `listSync()`
143
+ *
144
+ * @returns Array of supported device modes
145
+ *
146
+ * @example
147
+ * ```typescript
148
+ * const devices = Device.listSync();
149
+ * const camera = devices.find(d => d.type === 'video');
150
+ * if (camera) {
151
+ * const modes = Device.modesSync(camera.name);
152
+ * console.log('Supported modes:', modes);
153
+ * }
154
+ * ```
155
+ *
156
+ * @see {@link modes} For async version
157
+ */
158
+ static modesSync(deviceName) {
159
+ const nativeModes = bindings.Device.listDeviceModesSync(deviceName);
160
+ return nativeModes.map((m) => ({
161
+ width: m.width,
162
+ height: m.height,
163
+ minFrameRate: m.minFrameRate,
164
+ maxFrameRate: m.maxFrameRate,
165
+ pixelFormat: m.pixelFormat,
166
+ }));
167
+ }
168
+ /**
169
+ * Query supported audio capture modes for an audio device.
170
+ *
171
+ * Returns supported sample rates, channel counts and sample formats for the specified device.
172
+ * Modes are sorted descending by sample rate, then by channel count.
173
+ *
174
+ * @param deviceName - Device name as returned by `list()` (e.g. uniqueID on macOS, hw:0 on Linux)
175
+ *
176
+ * @returns Array of supported audio device modes
177
+ *
178
+ * @example
179
+ * ```typescript
180
+ * const devices = await Device.list();
181
+ * const mic = devices.find(d => d.type === 'audio');
182
+ * if (mic) {
183
+ * const modes = await Device.audioModes(mic.name);
184
+ * console.log('Supported audio modes:', modes);
185
+ * }
186
+ * ```
187
+ */
188
+ static async audioModes(deviceName) {
189
+ const nativeModes = await bindings.Device.listAudioDeviceModes(deviceName);
190
+ return nativeModes.map((m) => ({
191
+ sampleRate: m.sampleRate,
192
+ channels: m.channels,
193
+ sampleFormat: m.sampleFormat,
194
+ }));
195
+ }
196
+ /**
197
+ * Query supported audio capture modes for an audio device synchronously.
198
+ *
199
+ * @param deviceName - Device name as returned by `listSync()`
200
+ *
201
+ * @returns Array of supported audio device modes
202
+ *
203
+ * @example
204
+ * ```typescript
205
+ * const devices = Device.listSync();
206
+ * const mic = devices.find(d => d.type === 'audio');
207
+ * if (mic) {
208
+ * const modes = Device.audioModesSync(mic.name);
209
+ * console.log('Supported audio modes:', modes);
210
+ * }
211
+ * ```
212
+ *
213
+ * @see {@link audioModes} For async version
214
+ */
215
+ static audioModesSync(deviceName) {
216
+ const nativeModes = bindings.Device.listAudioDeviceModesSync(deviceName);
217
+ return nativeModes.map((m) => ({
218
+ sampleRate: m.sampleRate,
219
+ channels: m.channels,
220
+ sampleFormat: m.sampleFormat,
221
+ }));
222
+ }
223
+ /**
224
+ * Get platform-specific video input format name.
225
+ *
226
+ * @returns Format name for FFmpeg input
227
+ *
228
+ * | Platform | Format |
229
+ * |----------|--------|
230
+ * | macOS | avfoundation |
231
+ * | Linux | v4l2 |
232
+ * | Windows | dshow |
233
+ *
234
+ * @example
235
+ * ```typescript
236
+ * const format = Device.getVideoFormat();
237
+ * // Use with Demuxer.open(deviceName, { format })
238
+ * ```
239
+ */
240
+ static getVideoFormat() {
241
+ return bindings.Device.getVideoFormat();
242
+ }
243
+ /**
244
+ * Get platform-specific audio input format name.
245
+ *
246
+ * @returns Format name for FFmpeg input
247
+ *
248
+ * | Platform | Format |
249
+ * |----------|--------|
250
+ * | macOS | avfoundation |
251
+ * | Linux | alsa |
252
+ * | Windows | dshow |
253
+ *
254
+ * @example
255
+ * ```typescript
256
+ * const format = Device.getAudioFormat(); // 'avfoundation' on macOS
257
+ * ```
258
+ */
259
+ static getAudioFormat() {
260
+ return bindings.Device.getAudioFormat();
261
+ }
262
+ /**
263
+ * Get platform-specific screen capture format name.
264
+ *
265
+ * @returns Format name for FFmpeg input
266
+ *
267
+ * | Platform | Format |
268
+ * |----------|--------|
269
+ * | macOS | avfoundation |
270
+ * | Linux | x11grab |
271
+ * | Windows | gdigrab |
272
+ *
273
+ * @example
274
+ * ```typescript
275
+ * const format = Device.getScreenFormat(); // 'avfoundation' on macOS
276
+ * ```
277
+ */
278
+ static getScreenFormat() {
279
+ return bindings.Device.getScreenFormat();
280
+ }
281
+ /**
282
+ * Check if the application has screen capture permission (macOS only).
283
+ *
284
+ * Uses `CGPreflightScreenCaptureAccess()` on macOS 11+.
285
+ * Always returns `true` on Linux, Windows, and macOS < 11.
286
+ *
287
+ * @returns `true` if screen capture is permitted
288
+ *
289
+ * @example
290
+ * ```typescript
291
+ * if (Device.hasScreenCapturePermission()) {
292
+ * console.log('Screen capture is permitted');
293
+ * } else {
294
+ * console.log('Screen capture permission not granted');
295
+ * }
296
+ * ```
297
+ */
298
+ static hasScreenCapturePermission() {
299
+ return bindings.Device.hasScreenCapturePermission();
300
+ }
301
+ /**
302
+ * Request screen capture permission from the user (macOS only).
303
+ *
304
+ * Uses `CGRequestScreenCaptureAccess()` on macOS 11+.
305
+ * This will trigger the system permission dialog if not already granted.
306
+ * Always returns `true` on Linux, Windows, and macOS < 11.
307
+ *
308
+ * @returns `true` if permission was already granted (does not wait for dialog)
309
+ *
310
+ * @example
311
+ * ```typescript
312
+ * const granted = Device.requestScreenCaptureAccess();
313
+ * if (granted) {
314
+ * console.log('Screen capture permission already granted');
315
+ * } else {
316
+ * console.log('Screen capture permission dialog shown to user');
317
+ * }
318
+ * ```
319
+ */
320
+ static requestScreenCaptureAccess() {
321
+ return bindings.Device.requestScreenCaptureAccess();
322
+ }
323
+ }
324
+ //# sourceMappingURL=device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/lib/device.ts"],"names":[],"mappings":"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"}