edge-impulse-linux 1.3.7 → 1.3.8

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.
@@ -121,8 +121,7 @@ GST_ARGUS: Done Success
121
121
  assert_1.default.equal(devices.length, 1);
122
122
  assert_1.default.equal(devices[0].id, 'nvarguscamerasrc');
123
123
  assert_1.default.equal(devices[0].name, 'CSI camera');
124
- assert_1.default.equal(JSON.stringify(devices[0].caps), JSON.stringify([
125
- {
124
+ assert_1.default.equal(JSON.stringify(devices[0].caps), JSON.stringify([{
126
125
  framerate: 21,
127
126
  height: 2464,
128
127
  width: 3264,
@@ -160,6 +159,330 @@ GST_ARGUS: Done Success
160
159
  }
161
160
  ]));
162
161
  });
162
+ // Tested locally (Jan)
163
+ it("nvidia jetson w/ Logitech C922", async () => {
164
+ const gstOutput = `Probing devices...
165
+
166
+
167
+ Device found:
168
+
169
+ name : C922 Pro Stream Webcam Analog Stereo
170
+ class : Audio/Source
171
+ caps : audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, S24LE, S24BE, S24_32LE, S24_32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
172
+ audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
173
+ audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
174
+ properties:
175
+ alsa.resolution_bits = 16
176
+ device.api = alsa
177
+ device.class = sound
178
+ alsa.class = generic
179
+ alsa.subclass = generic-mix
180
+ alsa.name = "USB\ Audio"
181
+ alsa.id = "USB\ Audio"
182
+ alsa.subdevice = 0
183
+ alsa.subdevice_name = "subdevice\ \#0"
184
+ alsa.device = 0
185
+ alsa.card = 2
186
+ alsa.card_name = "C922\ Pro\ Stream\ Webcam"
187
+ alsa.long_card_name = "C922\ Pro\ Stream\ Webcam\ at\ usb-70090000.xusb-2.1\,\ high\ speed"
188
+ alsa.driver_name = snd_usb_audio
189
+ device.bus_path = platform-70090000.xusb-usb-0:2.1:1.2
190
+ sysfs.path = /devices/70090000.xusb/usb1/1-2/1-2.1/1-2.1:1.2/sound/card2
191
+ udev.id = usb-046d_C922_Pro_Stream_Webcam_C72F6EDF-02
192
+ device.bus = usb
193
+ device.vendor.id = 046d
194
+ device.vendor.name = "Logitech\,\ Inc."
195
+ device.product.id = 085c
196
+ device.product.name = "C922\ Pro\ Stream\ Webcam"
197
+ device.serial = 046d_C922_Pro_Stream_Webcam_C72F6EDF
198
+ device.form_factor = webcam
199
+ device.string = front:2
200
+ device.buffering.buffer_size = 256000
201
+ device.buffering.fragment_size = 128000
202
+ device.access_mode = mmap+timer
203
+ device.profile.name = analog-stereo
204
+ device.profile.description = "Analog\ Stereo"
205
+ device.description = "C922\ Pro\ Stream\ Webcam\ Analog\ Stereo"
206
+ alsa.mixer_name = "USB\ Mixer"
207
+ alsa.components = USB046d:085c
208
+ module-udev-detect.discovered = 1
209
+ device.icon_name = camera-web-usb
210
+ gst-launch-1.0 pulsesrc device=alsa_input.usb-046d_C922_Pro_Stream_Webcam_C72F6EDF-02.analog-stereo ! ...
211
+
212
+
213
+ Device found:
214
+
215
+ name : Monitor of Built-in Audio Analog Stereo
216
+ class : Audio/Source
217
+ caps : audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, S24LE, S24BE, S24_32LE, S24_32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
218
+ audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
219
+ audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
220
+ properties:
221
+ device.description = "Monitor\ of\ Built-in\ Audio\ Analog\ Stereo"
222
+ device.class = monitor
223
+ alsa.card = 1
224
+ alsa.card_name = tegra-snd-t210ref-mobile-rt565x
225
+ alsa.long_card_name = tegra-snd-t210ref-mobile-rt565x
226
+ device.bus_path = platform-sound
227
+ sysfs.path = /devices/sound/sound/card1
228
+ device.form_factor = internal
229
+ device.string = 1
230
+ module-udev-detect.discovered = 1
231
+ device.icon_name = audio-card
232
+ gst-launch-1.0 pulsesrc device=alsa_output.platform-sound.analog-stereo.monitor ! ...
233
+
234
+
235
+ Device found:
236
+
237
+ name : Built-in Audio Analog Stereo
238
+ class : Audio/Source
239
+ caps : audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, S24LE, S24BE, S24_32LE, S24_32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
240
+ audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
241
+ audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
242
+ properties:
243
+ alsa.resolution_bits = 16
244
+ device.api = alsa
245
+ device.class = sound
246
+ alsa.class = generic
247
+ alsa.subclass = generic-mix
248
+ alsa.name = ""
249
+ alsa.id = "ADMAIF1\ CIF\ ADMAIF1-0"
250
+ alsa.subdevice = 0
251
+ alsa.subdevice_name = "subdevice\ \#0"
252
+ alsa.device = 0
253
+ alsa.card = 1
254
+ alsa.card_name = tegra-snd-t210ref-mobile-rt565x
255
+ alsa.long_card_name = tegra-snd-t210ref-mobile-rt565x
256
+ device.bus_path = platform-sound
257
+ sysfs.path = /devices/sound/sound/card1
258
+ device.form_factor = internal
259
+ device.string = front:1
260
+ device.buffering.buffer_size = 32768
261
+ device.buffering.fragment_size = 16384
262
+ device.access_mode = mmap+timer
263
+ device.profile.name = analog-stereo
264
+ device.profile.description = "Analog\ Stereo"
265
+ device.description = "Built-in\ Audio\ Analog\ Stereo"
266
+ module-udev-detect.discovered = 1
267
+ device.icon_name = audio-card
268
+ gst-launch-1.0 pulsesrc device=alsa_input.platform-sound.analog-stereo ! ...
269
+
270
+
271
+ Device found:
272
+
273
+ name : Built-in Audio Analog Stereo
274
+ class : Audio/Sink
275
+ caps : audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, S24LE, S24BE, S24_32LE, S24_32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
276
+ audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
277
+ audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
278
+ properties:
279
+ alsa.resolution_bits = 16
280
+ device.api = alsa
281
+ device.class = sound
282
+ alsa.class = generic
283
+ alsa.subclass = generic-mix
284
+ alsa.name = ""
285
+ alsa.id = "ADMAIF1\ CIF\ ADMAIF1-0"
286
+ alsa.subdevice = 0
287
+ alsa.subdevice_name = "subdevice\ \#0"
288
+ alsa.device = 0
289
+ alsa.card = 1
290
+ alsa.card_name = tegra-snd-t210ref-mobile-rt565x
291
+ alsa.long_card_name = tegra-snd-t210ref-mobile-rt565x
292
+ device.bus_path = platform-sound
293
+ sysfs.path = /devices/sound/sound/card1
294
+ device.form_factor = internal
295
+ device.string = front:1
296
+ device.buffering.buffer_size = 32768
297
+ device.buffering.fragment_size = 16384
298
+ device.access_mode = mmap+timer
299
+ device.profile.name = analog-stereo
300
+ device.profile.description = "Analog\ Stereo"
301
+ device.description = "Built-in\ Audio\ Analog\ Stereo"
302
+ module-udev-detect.discovered = 1
303
+ device.icon_name = audio-card
304
+ gst-launch-1.0 ... ! pulsesink device=alsa_output.platform-sound.analog-stereo
305
+
306
+
307
+ Device found:
308
+
309
+ name : C922 Pro Stream Webcam
310
+ class : Video/Source
311
+ caps : video/x-raw, format=(string)YUY2, width=(int)2304, height=(int)1536, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)2/1;
312
+ video/x-raw, format=(string)YUY2, width=(int)2304, height=(int)1296, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)2/1;
313
+ video/x-raw, format=(string)YUY2, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)5/1;
314
+ video/x-raw, format=(string)YUY2, width=(int)1600, height=(int)896, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 15/2, 5/1 };
315
+ video/x-raw, format=(string)YUY2, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 10/1, 15/2, 5/1 };
316
+ video/x-raw, format=(string)YUY2, width=(int)960, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 15/1, 10/1, 15/2, 5/1 };
317
+ video/x-raw, format=(string)YUY2, width=(int)1024, height=(int)576, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 15/1, 10/1, 15/2, 5/1 };
318
+ video/x-raw, format=(string)YUY2, width=(int)800, height=(int)600, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
319
+ video/x-raw, format=(string)YUY2, width=(int)864, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
320
+ video/x-raw, format=(string)YUY2, width=(int)800, height=(int)448, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
321
+ video/x-raw, format=(string)YUY2, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
322
+ video/x-raw, format=(string)YUY2, width=(int)640, height=(int)360, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
323
+ video/x-raw, format=(string)YUY2, width=(int)432, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
324
+ video/x-raw, format=(string)YUY2, width=(int)352, height=(int)288, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
325
+ video/x-raw, format=(string)YUY2, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
326
+ video/x-raw, format=(string)YUY2, width=(int)320, height=(int)180, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
327
+ video/x-raw, format=(string)YUY2, width=(int)176, height=(int)144, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
328
+ video/x-raw, format=(string)YUY2, width=(int)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
329
+ video/x-raw, format=(string)YUY2, width=(int)160, height=(int)90, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
330
+ image/jpeg, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
331
+ image/jpeg, width=(int)1600, height=(int)896, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
332
+ image/jpeg, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 60/1, 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
333
+ image/jpeg, width=(int)960, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
334
+ image/jpeg, width=(int)1024, height=(int)576, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
335
+ image/jpeg, width=(int)800, height=(int)600, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
336
+ image/jpeg, width=(int)864, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
337
+ image/jpeg, width=(int)800, height=(int)448, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
338
+ image/jpeg, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
339
+ image/jpeg, width=(int)640, height=(int)360, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
340
+ image/jpeg, width=(int)432, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
341
+ image/jpeg, width=(int)352, height=(int)288, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
342
+ image/jpeg, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
343
+ image/jpeg, width=(int)320, height=(int)180, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
344
+ image/jpeg, width=(int)176, height=(int)144, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
345
+ image/jpeg, width=(int)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
346
+ image/jpeg, width=(int)160, height=(int)90, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };
347
+ properties:
348
+ udev-probed = true
349
+ device.bus_path = platform-70090000.xusb-usb-0:2.1:1.0
350
+ sysfs.path = /sys/devices/70090000.xusb/usb1/1-2/1-2.1/1-2.1:1.0/video4linux/video0
351
+ device.bus = usb
352
+ device.subsystem = video4linux
353
+ device.vendor.id = 046d
354
+ device.vendor.name = 046d
355
+ device.product.id = 085c
356
+ device.product.name = "C922\ Pro\ Stream\ Webcam"
357
+ device.serial = 046d_C922_Pro_Stream_Webcam_C72F6EDF
358
+ device.capabilities = :capture:
359
+ device.api = v4l2
360
+ device.path = /dev/video0
361
+ v4l2.device.driver = uvcvideo
362
+ v4l2.device.card = "C922\ Pro\ Stream\ Webcam"
363
+ v4l2.device.bus_info = usb-70090000.xusb-2.1
364
+ v4l2.device.version = 264649 (0x000409c9)
365
+ v4l2.device.capabilities = 2216689665 (0x84200001)
366
+ v4l2.device.device_caps = 69206017 (0x04200001)
367
+ gst-launch-1.0 v4l2src ! ...`;
368
+ const gstLaunchNvargusCameraSrcOutput = `Setting pipeline to PAUSED ...
369
+ Pipeline is live and does not need PREROLL ...
370
+ Setting pipeline to PLAYING ...
371
+ New clock: GstSystemClock
372
+ Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, execute:645 No cameras available
373
+
374
+ (gst-launch-1.0:17101): GStreamer-CRITICAL **: 11:58:19.104: gst_mini_object_set_qdata: assertion 'object != NULL' failed
375
+ ^Chandling interrupt.
376
+ Interrupt: Stopping pipeline ...
377
+ Execution ended after 0:00:03.636570581
378
+ Setting pipeline to PAUSED ...
379
+ Setting pipeline to READY ...
380
+ Setting pipeline to NULL ...
381
+ Freeing pipeline ...
382
+ `;
383
+ const devices = await testGetDevices(gstOutput, gstLaunchNvargusCameraSrcOutput);
384
+ assert_1.default.equal(devices.length, 1);
385
+ assert_1.default.equal(devices[0].id, '/dev/video0');
386
+ assert_1.default.equal(devices[0].name, 'C922 Pro Stream Webcam');
387
+ assert_1.default.equal(JSON.stringify(devices[0].caps), JSON.stringify([
388
+ {
389
+ type: "video/x-raw",
390
+ width: 2304,
391
+ height: 1536,
392
+ framerate: 2
393
+ }, {
394
+ type: "video/x-raw",
395
+ width: 2304,
396
+ height: 1296,
397
+ framerate: 2
398
+ }, {
399
+ type: "video/x-raw",
400
+ width: 1920,
401
+ height: 1080,
402
+ framerate: 5
403
+ }, {
404
+ type: "video/x-raw",
405
+ width: 1600,
406
+ height: 896,
407
+ framerate: 15
408
+ }, {
409
+ type: "video/x-raw",
410
+ width: 1280,
411
+ height: 720,
412
+ framerate: 10
413
+ }, {
414
+ type: "video/x-raw",
415
+ width: 960,
416
+ height: 720,
417
+ framerate: 15
418
+ }, {
419
+ type: "video/x-raw",
420
+ width: 1024,
421
+ height: 576,
422
+ framerate: 15
423
+ }, {
424
+ type: "video/x-raw",
425
+ width: 800,
426
+ height: 600,
427
+ framerate: 24
428
+ }, {
429
+ type: "video/x-raw",
430
+ width: 864,
431
+ height: 480,
432
+ framerate: 24
433
+ }, {
434
+ type: "video/x-raw",
435
+ width: 800,
436
+ height: 448,
437
+ framerate: 30
438
+ }, {
439
+ type: "video/x-raw",
440
+ width: 640,
441
+ height: 480,
442
+ framerate: 30
443
+ }, {
444
+ type: "video/x-raw",
445
+ width: 640,
446
+ height: 360,
447
+ framerate: 30
448
+ }, {
449
+ type: "video/x-raw",
450
+ width: 432,
451
+ height: 240,
452
+ framerate: 30
453
+ }, {
454
+ type: "video/x-raw",
455
+ width: 352,
456
+ height: 288,
457
+ framerate: 30
458
+ }, {
459
+ type: "video/x-raw",
460
+ width: 320,
461
+ height: 240,
462
+ framerate: 30
463
+ }, {
464
+ type: "video/x-raw",
465
+ width: 320,
466
+ height: 180,
467
+ framerate: 30
468
+ }, {
469
+ type: "video/x-raw",
470
+ width: 176,
471
+ height: 144,
472
+ framerate: 30
473
+ }, {
474
+ type: "video/x-raw",
475
+ width: 160,
476
+ height: 120,
477
+ framerate: 30
478
+ }, {
479
+ type: "video/x-raw",
480
+ width: 160,
481
+ height: 90,
482
+ framerate: 30
483
+ }
484
+ ]));
485
+ });
163
486
  // https://forum.edgeimpulse.com/t/usb-camera-on-raspberry-pi/1758
164
487
  it("usb camera on rpi w/ image/jpeg", async () => {
165
488
  const gstOutput = `Probing devices...
@@ -338,8 +661,7 @@ Device found:
338
661
  assert_1.default.equal(devices.length, 1);
339
662
  assert_1.default.equal(devices[0].id, '/dev/video0');
340
663
  assert_1.default.equal(devices[0].name, 'i.MX6S_CSI');
341
- assert_1.default.equal(JSON.stringify(devices[0].caps), JSON.stringify([
342
- {
664
+ assert_1.default.equal(JSON.stringify(devices[0].caps), JSON.stringify([{
343
665
  type: "video/x-raw",
344
666
  width: 2592,
345
667
  height: 1944,
@@ -709,8 +1031,7 @@ Device found:
709
1031
  assert_1.default.equal(devices.length, 1);
710
1032
  assert_1.default.equal(devices[0].id, '/dev/video0');
711
1033
  assert_1.default.equal(devices[0].name, 'UvcH264 Video Capture 4 (/dev/video0)');
712
- assert_1.default.equal(JSON.stringify(devices[0].caps), JSON.stringify([
713
- {
1034
+ assert_1.default.equal(JSON.stringify(devices[0].caps), JSON.stringify([{
714
1035
  type: "video/x-raw",
715
1036
  width: 2304,
716
1037
  height: 1536,
@@ -915,8 +1236,7 @@ Device found:
915
1236
  assert_1.default.equal(devices.length, 1);
916
1237
  assert_1.default.equal(devices[0].id, '/dev/video1');
917
1238
  assert_1.default.equal(devices[0].name, 'HD Pro Webcam C920');
918
- assert_1.default.equal(JSON.stringify(devices[0].caps), JSON.stringify([
919
- {
1239
+ assert_1.default.equal(JSON.stringify(devices[0].caps), JSON.stringify([{
920
1240
  type: "video/x-raw",
921
1241
  width: 2304,
922
1242
  height: 1536,
@@ -1074,19 +1394,395 @@ Device found:
1074
1394
  assert_1.default.equal(devices.length, 1);
1075
1395
  assert_1.default.equal(devices[0].id, '/dev/video0');
1076
1396
  assert_1.default.equal(devices[0].name, 'RZG2L_CRU');
1077
- assert_1.default.equal(JSON.stringify(devices[0].caps), JSON.stringify([
1078
- {
1397
+ assert_1.default.equal(JSON.stringify(devices[0].caps), JSON.stringify([{
1079
1398
  type: "video/x-raw",
1080
1399
  width: 640,
1081
1400
  height: 480,
1082
1401
  framerate: 0
1402
+ }]));
1403
+ });
1404
+ // Tested locally (Jan)
1405
+ it("logitech c922 on rpi bullseye #2", async () => {
1406
+ const gstOutput = `Probing devices...
1407
+
1408
+ [1698:57:08.508902920] [22184] INFO Camera camera_manager.cpp:293 libcamera v0.0.0+3156-f4070274
1409
+
1410
+ Device found:
1411
+
1412
+ name : /base/scb/pcie@7d500000/pci@1,0/usb@1,0-1.1:1.0-046d:085c
1413
+ class : Source/Video
1414
+ caps : image/jpeg, width=160, height=90
1415
+ image/jpeg, width=160, height=120
1416
+ image/jpeg, width=176, height=144
1417
+ image/jpeg, width=320, height=180
1418
+ image/jpeg, width=320, height=240
1419
+ image/jpeg, width=352, height=288
1420
+ image/jpeg, width=432, height=240
1421
+ image/jpeg, width=640, height=360
1422
+ image/jpeg, width=640, height=480
1423
+ image/jpeg, width=800, height=448
1424
+ image/jpeg, width=864, height=480
1425
+ image/jpeg, width=800, height=600
1426
+ image/jpeg, width=1024, height=576
1427
+ image/jpeg, width=960, height=720
1428
+ image/jpeg, width=1280, height=720
1429
+ image/jpeg, width=1600, height=896
1430
+ image/jpeg, width=1920, height=1080
1431
+ video/x-raw, format=YUY2, width=160, height=90
1432
+ video/x-raw, format=YUY2, width=160, height=120
1433
+ video/x-raw, format=YUY2, width=176, height=144
1434
+ video/x-raw, format=YUY2, width=320, height=180
1435
+ video/x-raw, format=YUY2, width=320, height=240
1436
+ video/x-raw, format=YUY2, width=352, height=288
1437
+ video/x-raw, format=YUY2, width=432, height=240
1438
+ video/x-raw, format=YUY2, width=640, height=360
1439
+ video/x-raw, format=YUY2, width=640, height=480
1440
+ video/x-raw, format=YUY2, width=800, height=448
1441
+ video/x-raw, format=YUY2, width=864, height=480
1442
+ video/x-raw, format=YUY2, width=800, height=600
1443
+ video/x-raw, format=YUY2, width=1024, height=576
1444
+ video/x-raw, format=YUY2, width=960, height=720
1445
+ video/x-raw, format=YUY2, width=1280, height=720
1446
+ video/x-raw, format=YUY2, width=1600, height=896
1447
+ video/x-raw, format=YUY2, width=1920, height=1080
1448
+ video/x-raw, format=YUY2, width=2304, height=1296
1449
+ video/x-raw, format=YUY2, width=2304, height=1536
1450
+ gst-launch-1.0 libcamerasrc camera-name="/base/scb/pcie\@7d500000/pci\@1\,0/usb\@1\,0-1.1:1.0-046d:085c" ! ...
1451
+
1452
+
1453
+ Device found:
1454
+
1455
+ name : Monitor of Built-in Audio Analog Stereo
1456
+ class : Audio/Source
1457
+ caps : audio/x-raw, format={ (string)S16LE, (string)S16BE, (string)F32LE, (string)F32BE, (string)S32LE, (string)S32BE, (string)S24LE, (string)S24BE, (string)S24_32LE, (string)S24_32BE, (string)U8 }, layout=interleaved, rate=[ 1, 384000 ], channels=[ 1, 32 ]
1458
+ audio/x-alaw, rate=[ 1, 384000 ], channels=[ 1, 32 ]
1459
+ audio/x-mulaw, rate=[ 1, 384000 ], channels=[ 1, 32 ]
1460
+ properties:
1461
+ device.description = "Monitor\ of\ Built-in\ Audio\ Analog\ Stereo"
1462
+ device.class = monitor
1463
+ alsa.card = 0
1464
+ alsa.card_name = "bcm2835\ Headphones"
1465
+ alsa.long_card_name = "bcm2835\ Headphones"
1466
+ alsa.driver_name = snd_bcm2835
1467
+ device.bus_path = platform-bcm2835_audio
1468
+ sysfs.path = /devices/platform/soc/fe00b840.mailbox/bcm2835_audio/sound/card0
1469
+ device.form_factor = internal
1470
+ device.string = 0
1471
+ module-udev-detect.discovered = 1
1472
+ device.icon_name = audio-card
1473
+ is-default = false
1474
+ gst-launch-1.0 pulsesrc device=alsa_output.platform-bcm2835_audio.analog-stereo.monitor ! ...
1475
+
1476
+
1477
+ Device found:
1478
+
1479
+ name : C922 Pro Stream Webcam Analog Stereo
1480
+ class : Audio/Source
1481
+ caps : audio/x-raw, format={ (string)S16LE, (string)S16BE, (string)F32LE, (string)F32BE, (string)S32LE, (string)S32BE, (string)S24LE, (string)S24BE, (string)S24_32LE, (string)S24_32BE, (string)U8 }, layout=interleaved, rate=[ 1, 384000 ], channels=[ 1, 32 ]
1482
+ audio/x-alaw, rate=[ 1, 384000 ], channels=[ 1, 32 ]
1483
+ audio/x-mulaw, rate=[ 1, 384000 ], channels=[ 1, 32 ]
1484
+ properties:
1485
+ alsa.resolution_bits = 16
1486
+ device.api = alsa
1487
+ device.class = sound
1488
+ alsa.class = generic
1489
+ alsa.subclass = generic-mix
1490
+ alsa.name = "USB\ Audio"
1491
+ alsa.id = "USB\ Audio"
1492
+ alsa.subdevice = 0
1493
+ alsa.subdevice_name = "subdevice\ \#0"
1494
+ alsa.device = 0
1495
+ alsa.card = 3
1496
+ alsa.card_name = "C922\ Pro\ Stream\ Webcam"
1497
+ alsa.long_card_name = "C922\ Pro\ Stream\ Webcam\ at\ usb-0000:01:00.0-1.1\,\ high\ speed"
1498
+ alsa.driver_name = snd_usb_audio
1499
+ device.bus_path = platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.1:1.2
1500
+ sysfs.path = /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1/1-1.1:1.2/sound/card3
1501
+ udev.id = usb-046d_C922_Pro_Stream_Webcam_C72F6EDF-02
1502
+ device.bus = usb
1503
+ device.vendor.id = 046d
1504
+ device.vendor.name = "Logitech\,\ Inc."
1505
+ device.product.id = 085c
1506
+ device.product.name = "C922\ Pro\ Stream\ Webcam"
1507
+ device.serial = 046d_C922_Pro_Stream_Webcam_C72F6EDF
1508
+ device.form_factor = webcam
1509
+ device.string = front:3
1510
+ device.buffering.buffer_size = 7672
1511
+ device.buffering.fragment_size = 1916
1512
+ device.access_mode = mmap
1513
+ device.profile.name = analog-stereo
1514
+ device.profile.description = "Analog\ Stereo"
1515
+ device.description = "C922\ Pro\ Stream\ Webcam\ Analog\ Stereo"
1516
+ module-udev-detect.discovered = 1
1517
+ device.icon_name = camera-web-usb
1518
+ is-default = true
1519
+ gst-launch-1.0 pulsesrc device=alsa_input.usb-046d_C922_Pro_Stream_Webcam_C72F6EDF-02.analog-stereo ! ...
1520
+
1521
+
1522
+ Device found:
1523
+
1524
+ name : Built-in Audio Analog Stereo
1525
+ class : Audio/Sink
1526
+ caps : audio/x-raw, format={ (string)S16LE, (string)S16BE, (string)F32LE, (string)F32BE, (string)S32LE, (string)S32BE, (string)S24LE, (string)S24BE, (string)S24_32LE, (string)S24_32BE, (string)U8 }, layout=interleaved, rate=[ 1, 384000 ], channels=[ 1, 32 ]
1527
+ audio/x-alaw, rate=[ 1, 384000 ], channels=[ 1, 32 ]
1528
+ audio/x-mulaw, rate=[ 1, 384000 ], channels=[ 1, 32 ]
1529
+ properties:
1530
+ alsa.resolution_bits = 16
1531
+ device.api = alsa
1532
+ device.class = sound
1533
+ alsa.class = generic
1534
+ alsa.subclass = generic-mix
1535
+ alsa.name = "bcm2835\ Headphones"
1536
+ alsa.id = "bcm2835\ Headphones"
1537
+ alsa.subdevice = 0
1538
+ alsa.subdevice_name = "subdevice\ \#0"
1539
+ alsa.device = 0
1540
+ alsa.card = 0
1541
+ alsa.card_name = "bcm2835\ Headphones"
1542
+ alsa.long_card_name = "bcm2835\ Headphones"
1543
+ alsa.driver_name = snd_bcm2835
1544
+ device.bus_path = platform-bcm2835_audio
1545
+ sysfs.path = /devices/platform/soc/fe00b840.mailbox/bcm2835_audio/sound/card0
1546
+ device.form_factor = internal
1547
+ device.string = hw:0
1548
+ device.buffering.buffer_size = 10576
1549
+ device.buffering.fragment_size = 2640
1550
+ device.access_mode = mmap
1551
+ device.profile.name = analog-stereo
1552
+ device.profile.description = "Analog\ Stereo"
1553
+ device.description = "Built-in\ Audio\ Analog\ Stereo"
1554
+ module-udev-detect.discovered = 1
1555
+ device.icon_name = audio-card
1556
+ is-default = true
1557
+ gst-launch-1.0 ... ! pulsesink device=alsa_output.platform-bcm2835_audio.analog-stereo
1558
+
1559
+
1560
+ Device found:
1561
+
1562
+ name : UvcH264 C922 Pro Stream Webcam
1563
+ class : Video/CameraSource
1564
+ caps : video/x-raw, format=YUY2, width=2304, height=1536, pixel-aspect-ratio=1/1, framerate=2/1
1565
+ video/x-raw, format=YUY2, width=2304, height=1296, pixel-aspect-ratio=1/1, framerate=2/1
1566
+ video/x-raw, format=YUY2, width=1920, height=1080, pixel-aspect-ratio=1/1, framerate=5/1
1567
+ video/x-raw, format=YUY2, width=1600, height=896, pixel-aspect-ratio=1/1, framerate={ (fraction)15/2, (fraction)5/1 }
1568
+ video/x-raw, format=YUY2, width=1280, height=720, pixel-aspect-ratio=1/1, framerate={ (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1569
+ video/x-raw, format=YUY2, width=960, height=720, pixel-aspect-ratio=1/1, framerate={ (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1570
+ video/x-raw, format=YUY2, width=1024, height=576, pixel-aspect-ratio=1/1, framerate={ (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1571
+ video/x-raw, format=YUY2, width=800, height=600, pixel-aspect-ratio=1/1, framerate={ (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1572
+ video/x-raw, format=YUY2, width=864, height=480, pixel-aspect-ratio=1/1, framerate={ (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1573
+ video/x-raw, format=YUY2, width=800, height=448, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1574
+ video/x-raw, format=YUY2, width=640, height=480, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1575
+ video/x-raw, format=YUY2, width=640, height=360, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1576
+ video/x-raw, format=YUY2, width=432, height=240, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1577
+ video/x-raw, format=YUY2, width=352, height=288, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1578
+ video/x-raw, format=YUY2, width=320, height=240, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1579
+ video/x-raw, format=YUY2, width=320, height=180, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1580
+ video/x-raw, format=YUY2, width=176, height=144, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1581
+ video/x-raw, format=YUY2, width=160, height=120, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1582
+ video/x-raw, format=YUY2, width=160, height=90, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1583
+ image/jpeg, width=1920, height=1080, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1584
+ image/jpeg, width=1600, height=896, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1585
+ image/jpeg, width=1280, height=720, pixel-aspect-ratio=1/1, framerate={ (fraction)60/1, (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1586
+ image/jpeg, width=960, height=720, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1587
+ image/jpeg, width=1024, height=576, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1588
+ image/jpeg, width=800, height=600, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1589
+ image/jpeg, width=864, height=480, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1590
+ image/jpeg, width=800, height=448, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1591
+ image/jpeg, width=640, height=480, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1592
+ image/jpeg, width=640, height=360, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1593
+ image/jpeg, width=432, height=240, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1594
+ image/jpeg, width=352, height=288, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1595
+ image/jpeg, width=320, height=240, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1596
+ image/jpeg, width=320, height=180, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1597
+ image/jpeg, width=176, height=144, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1598
+ image/jpeg, width=160, height=120, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1599
+ image/jpeg, width=160, height=90, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1600
+ properties:
1601
+ device.path = /dev/video0
1602
+ udev-probed = false
1603
+ device.api = uvch264
1604
+ v4l2.device.driver = uvcvideo
1605
+ v4l2.device.card = "C922\ Pro\ Stream\ Webcam"
1606
+ v4l2.device.bus_info = usb-0000:01:00.0-1.1
1607
+ v4l2.device.version = 330303 (0x00050a3f)
1608
+ v4l2.device.capabilities = 2225078273 (0x84a00001)
1609
+ v4l2.device.device_caps = 69206017 (0x04200001)
1610
+ device.is-camerasrc = true
1611
+ gst-launch-1.0 uvch264src.vfsrc name=camerasrc ! ... camerasrc.vidsrc ! [video/x-h264] ...
1612
+
1613
+
1614
+ Device found:
1615
+
1616
+ name : UvcH264 C922 Pro Stream Webcam
1617
+ class : Video/CameraSource
1618
+ caps : video/x-raw, format=YUY2, width=2304, height=1536, pixel-aspect-ratio=1/1, framerate=2/1
1619
+ video/x-raw, format=YUY2, width=2304, height=1296, pixel-aspect-ratio=1/1, framerate=2/1
1620
+ video/x-raw, format=YUY2, width=1920, height=1080, pixel-aspect-ratio=1/1, framerate=5/1
1621
+ video/x-raw, format=YUY2, width=1600, height=896, pixel-aspect-ratio=1/1, framerate={ (fraction)15/2, (fraction)5/1 }
1622
+ video/x-raw, format=YUY2, width=1280, height=720, pixel-aspect-ratio=1/1, framerate={ (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1623
+ video/x-raw, format=YUY2, width=960, height=720, pixel-aspect-ratio=1/1, framerate={ (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1624
+ video/x-raw, format=YUY2, width=1024, height=576, pixel-aspect-ratio=1/1, framerate={ (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1625
+ video/x-raw, format=YUY2, width=800, height=600, pixel-aspect-ratio=1/1, framerate={ (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1626
+ video/x-raw, format=YUY2, width=864, height=480, pixel-aspect-ratio=1/1, framerate={ (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1627
+ video/x-raw, format=YUY2, width=800, height=448, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1628
+ video/x-raw, format=YUY2, width=640, height=480, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1629
+ video/x-raw, format=YUY2, width=640, height=360, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1630
+ video/x-raw, format=YUY2, width=432, height=240, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1631
+ video/x-raw, format=YUY2, width=352, height=288, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1632
+ video/x-raw, format=YUY2, width=320, height=240, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1633
+ video/x-raw, format=YUY2, width=320, height=180, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1634
+ video/x-raw, format=YUY2, width=176, height=144, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1635
+ video/x-raw, format=YUY2, width=160, height=120, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1636
+ video/x-raw, format=YUY2, width=160, height=90, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1637
+ image/jpeg, width=1920, height=1080, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1638
+ image/jpeg, width=1600, height=896, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1639
+ image/jpeg, width=1280, height=720, pixel-aspect-ratio=1/1, framerate={ (fraction)60/1, (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1640
+ image/jpeg, width=960, height=720, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1641
+ image/jpeg, width=1024, height=576, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1642
+ image/jpeg, width=800, height=600, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1643
+ image/jpeg, width=864, height=480, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1644
+ image/jpeg, width=800, height=448, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1645
+ image/jpeg, width=640, height=480, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1646
+ image/jpeg, width=640, height=360, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1647
+ image/jpeg, width=432, height=240, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1648
+ image/jpeg, width=352, height=288, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1649
+ image/jpeg, width=320, height=240, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1650
+ image/jpeg, width=320, height=180, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1651
+ image/jpeg, width=176, height=144, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1652
+ image/jpeg, width=160, height=120, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1653
+ image/jpeg, width=160, height=90, pixel-aspect-ratio=1/1, framerate={ (fraction)30/1, (fraction)24/1, (fraction)20/1, (fraction)15/1, (fraction)10/1, (fraction)15/2, (fraction)5/1 }
1654
+ properties:
1655
+ udev-probed = true
1656
+ device.bus_path = platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.1:1.0
1657
+ sysfs.path = /sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1/1-1.1:1.0/video4linux/video0
1658
+ device.bus = usb
1659
+ device.subsystem = video4linux
1660
+ device.vendor.id = 046d
1661
+ device.vendor.name = 046d
1662
+ device.product.id = 085c
1663
+ device.product.name = "C922\ Pro\ Stream\ Webcam"
1664
+ device.serial = 046d_C922_Pro_Stream_Webcam_C72F6EDF
1665
+ device.capabilities = :capture:
1666
+ device.api = uvch264
1667
+ device.path = /dev/video0
1668
+ v4l2.device.driver = uvcvideo
1669
+ v4l2.device.card = "C922\ Pro\ Stream\ Webcam"
1670
+ v4l2.device.bus_info = usb-0000:01:00.0-1.1
1671
+ v4l2.device.version = 330303 (0x00050a3f)
1672
+ v4l2.device.capabilities = 2225078273 (0x84a00001)
1673
+ v4l2.device.device_caps = 69206017 (0x04200001)
1674
+ device.is-camerasrc = true
1675
+ gst-launch-1.0 uvch264src.vfsrc name=camerasrc ! ... camerasrc.vidsrc ! [video/x-h264] ...
1676
+ `;
1677
+ const devices = await testGetDevices(gstOutput, undefined);
1678
+ assert_1.default.equal(devices.length, 1);
1679
+ assert_1.default.equal(devices[0].id, '/dev/video0');
1680
+ assert_1.default.equal(devices[0].name, 'UvcH264 C922 Pro Stream Webcam (/dev/video0)');
1681
+ assert_1.default.equal(JSON.stringify(devices[0].caps), JSON.stringify([
1682
+ {
1683
+ type: "video/x-raw",
1684
+ width: 2304,
1685
+ height: 1536,
1686
+ framerate: 2
1687
+ }, {
1688
+ type: "video/x-raw",
1689
+ width: 2304,
1690
+ height: 1296,
1691
+ framerate: 2
1692
+ }, {
1693
+ type: "video/x-raw",
1694
+ width: 1920,
1695
+ height: 1080,
1696
+ framerate: 5
1697
+ }, {
1698
+ type: "video/x-raw",
1699
+ width: 1600,
1700
+ height: 896,
1701
+ framerate: 15
1702
+ }, {
1703
+ type: "video/x-raw",
1704
+ width: 1280,
1705
+ height: 720,
1706
+ framerate: 10
1707
+ }, {
1708
+ type: "video/x-raw",
1709
+ width: 960,
1710
+ height: 720,
1711
+ framerate: 15
1712
+ }, {
1713
+ type: "video/x-raw",
1714
+ width: 1024,
1715
+ height: 576,
1716
+ framerate: 15
1717
+ }, {
1718
+ type: "video/x-raw",
1719
+ width: 800,
1720
+ height: 600,
1721
+ framerate: 24
1722
+ }, {
1723
+ type: "video/x-raw",
1724
+ width: 864,
1725
+ height: 480,
1726
+ framerate: 24
1727
+ }, {
1728
+ type: "video/x-raw",
1729
+ width: 800,
1730
+ height: 448,
1731
+ framerate: 30
1732
+ }, {
1733
+ type: "video/x-raw",
1734
+ width: 640,
1735
+ height: 480,
1736
+ framerate: 30
1737
+ }, {
1738
+ type: "video/x-raw",
1739
+ width: 640,
1740
+ height: 360,
1741
+ framerate: 30
1742
+ }, {
1743
+ type: "video/x-raw",
1744
+ width: 432,
1745
+ height: 240,
1746
+ framerate: 30
1747
+ }, {
1748
+ type: "video/x-raw",
1749
+ width: 352,
1750
+ height: 288,
1751
+ framerate: 30
1752
+ }, {
1753
+ type: "video/x-raw",
1754
+ width: 320,
1755
+ height: 240,
1756
+ framerate: 30
1757
+ }, {
1758
+ type: "video/x-raw",
1759
+ width: 320,
1760
+ height: 180,
1761
+ framerate: 30
1762
+ }, {
1763
+ type: "video/x-raw",
1764
+ width: 176,
1765
+ height: 144,
1766
+ framerate: 30
1767
+ }, {
1768
+ type: "video/x-raw",
1769
+ width: 160,
1770
+ height: 120,
1771
+ framerate: 30
1772
+ }, {
1773
+ type: "video/x-raw",
1774
+ width: 160,
1775
+ height: 90,
1776
+ framerate: 30
1083
1777
  }
1084
1778
  ]));
1085
1779
  });
1086
1780
  });
1087
1781
  });
1088
1782
  async function testGetDevices(gstOutput, gstLaunchNvargusCameraSrcOutput) {
1089
- const spawnHelper = async (command, args, opts = { ignoreErrors: false }) => {
1783
+ const spawnHelper = async (command, args, opts = {
1784
+ ignoreErrors: false
1785
+ }) => {
1090
1786
  if (command === 'which') {
1091
1787
  return '';
1092
1788
  }