edge-impulse-linux 1.3.5 → 1.3.7

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 (197) hide show
  1. package/build/cli/config.d.ts +10 -1
  2. package/build/cli/config.js +22 -1
  3. package/build/cli/config.js.map +1 -1
  4. package/build/cli/linux/linux.js +3 -3
  5. package/build/cli/linux/linux.js.map +1 -1
  6. package/build/cli/linux/runner.js +2 -1
  7. package/build/cli/linux/runner.js.map +1 -1
  8. package/build/cli/make-image.d.ts +8 -1
  9. package/build/cli/make-image.js +7 -2
  10. package/build/cli/make-image.js.map +1 -1
  11. package/build/library/classifier/linux-impulse-runner.js +1 -1
  12. package/build/library/classifier/linux-impulse-runner.js.map +1 -1
  13. package/build/library/sensors/gstreamer.d.ts +15 -2
  14. package/build/library/sensors/gstreamer.js +96 -33
  15. package/build/library/sensors/gstreamer.js.map +1 -1
  16. package/build/library/sensors/spawn-helper.d.ts +4 -0
  17. package/build/library/sensors/spawn-helper.js.map +1 -1
  18. package/build/sdk/studio/api/adminApi.d.ts +15 -0
  19. package/build/sdk/studio/api/adminApi.js +72 -0
  20. package/build/sdk/studio/api/adminApi.js.map +1 -1
  21. package/build/sdk/studio/api/applicationTestingApi.d.ts +20 -4
  22. package/build/sdk/studio/api/applicationTestingApi.js +79 -4
  23. package/build/sdk/studio/api/applicationTestingApi.js.map +1 -1
  24. package/build/sdk/studio/api/jobsApi.d.ts +1 -1
  25. package/build/sdk/studio/api/jobsApi.js +1 -1
  26. package/build/sdk/studio/api/organizationDataApi.d.ts +47 -1
  27. package/build/sdk/studio/api/organizationDataApi.js +223 -1
  28. package/build/sdk/studio/api/organizationDataApi.js.map +1 -1
  29. package/build/sdk/studio/api/organizationPortalsApi.d.ts +15 -0
  30. package/build/sdk/studio/api/organizationPortalsApi.js +72 -0
  31. package/build/sdk/studio/api/organizationPortalsApi.js.map +1 -1
  32. package/build/sdk/studio/api/projectsApi.d.ts +14 -0
  33. package/build/sdk/studio/api/projectsApi.js +66 -0
  34. package/build/sdk/studio/api/projectsApi.js.map +1 -1
  35. package/build/sdk/studio/api/rawDataApi.d.ts +15 -0
  36. package/build/sdk/studio/api/rawDataApi.js +75 -0
  37. package/build/sdk/studio/api/rawDataApi.js.map +1 -1
  38. package/build/sdk/studio/api/requiresSudoApi.d.ts +15 -0
  39. package/build/sdk/studio/api/requiresSudoApi.js +72 -0
  40. package/build/sdk/studio/api/requiresSudoApi.js.map +1 -1
  41. package/build/sdk/studio/api/uploadPortalApi.d.ts +1 -1
  42. package/build/sdk/studio/api/uploadPortalApi.js +1 -1
  43. package/build/sdk/studio/model/addOrganizationTransferLearningBlockRequest.d.ts +2 -3
  44. package/build/sdk/studio/model/addOrganizationTransferLearningBlockRequest.js +2 -3
  45. package/build/sdk/studio/model/addOrganizationTransferLearningBlockRequest.js.map +1 -1
  46. package/build/sdk/studio/model/adminUpdateUserRequest.d.ts +31 -0
  47. package/build/sdk/studio/model/adminUpdateUserRequest.js +35 -0
  48. package/build/sdk/studio/model/adminUpdateUserRequest.js.map +1 -0
  49. package/build/sdk/studio/model/applicationTestingUploadLabeledAudioRequest.d.ts +33 -0
  50. package/build/sdk/studio/model/applicationTestingUploadLabeledAudioRequest.js +32 -0
  51. package/build/sdk/studio/model/applicationTestingUploadLabeledAudioRequest.js.map +1 -0
  52. package/build/sdk/studio/model/applicationTestingUploadLabeledAudioResponse.d.ts +33 -0
  53. package/build/sdk/studio/model/applicationTestingUploadLabeledAudioResponse.js +42 -0
  54. package/build/sdk/studio/model/applicationTestingUploadLabeledAudioResponse.js.map +1 -0
  55. package/build/sdk/studio/model/applicationTestingUploadLabeledAudioResponseAllOf.d.ts +25 -0
  56. package/build/sdk/studio/model/applicationTestingUploadLabeledAudioResponseAllOf.js +32 -0
  57. package/build/sdk/studio/model/applicationTestingUploadLabeledAudioResponseAllOf.js.map +1 -0
  58. package/build/sdk/studio/model/classifyJobResponseAllOfResult.d.ts +2 -0
  59. package/build/sdk/studio/model/classifyJobResponseAllOfResult.js +5 -0
  60. package/build/sdk/studio/model/classifyJobResponseAllOfResult.js.map +1 -1
  61. package/build/sdk/studio/model/classifySampleResponseClassification.d.ts +2 -0
  62. package/build/sdk/studio/model/classifySampleResponseClassification.js +5 -0
  63. package/build/sdk/studio/model/classifySampleResponseClassification.js.map +1 -1
  64. package/build/sdk/studio/model/dataExplorerSettings.d.ts +2 -9
  65. package/build/sdk/studio/model/dataExplorerSettings.js +1 -16
  66. package/build/sdk/studio/model/dataExplorerSettings.js.map +1 -1
  67. package/build/sdk/studio/model/getApplicationTestingStatusResponse.d.ts +2 -0
  68. package/build/sdk/studio/model/getApplicationTestingStatusResponse.js +5 -0
  69. package/build/sdk/studio/model/getApplicationTestingStatusResponse.js.map +1 -1
  70. package/build/sdk/studio/model/getApplicationTestingStatusResponseAllOf.d.ts +2 -0
  71. package/build/sdk/studio/model/getApplicationTestingStatusResponseAllOf.js +5 -0
  72. package/build/sdk/studio/model/getApplicationTestingStatusResponseAllOf.js.map +1 -1
  73. package/build/sdk/studio/model/getDataExplorerSettingsResponse.d.ts +2 -9
  74. package/build/sdk/studio/model/getDataExplorerSettingsResponse.js +1 -16
  75. package/build/sdk/studio/model/getDataExplorerSettingsResponse.js.map +1 -1
  76. package/build/sdk/studio/model/getOrganizationDatasetResponse.d.ts +34 -0
  77. package/build/sdk/studio/model/getOrganizationDatasetResponse.js +42 -0
  78. package/build/sdk/studio/model/getOrganizationDatasetResponse.js.map +1 -0
  79. package/build/sdk/studio/model/getOrganizationDatasetResponseAllOf.d.ts +26 -0
  80. package/build/sdk/studio/model/getOrganizationDatasetResponseAllOf.js +32 -0
  81. package/build/sdk/studio/model/getOrganizationDatasetResponseAllOf.js.map +1 -0
  82. package/build/sdk/studio/model/kerasModelMetadata.d.ts +2 -6
  83. package/build/sdk/studio/model/kerasModelMetadata.js +2 -3
  84. package/build/sdk/studio/model/kerasModelMetadata.js.map +1 -1
  85. package/build/sdk/studio/model/kerasModelMetadataAllOf.d.ts +2 -6
  86. package/build/sdk/studio/model/kerasModelMetadataAllOf.js +2 -3
  87. package/build/sdk/studio/model/kerasModelMetadataAllOf.js.map +1 -1
  88. package/build/sdk/studio/model/kerasResponse.d.ts +4 -0
  89. package/build/sdk/studio/model/kerasResponse.js +5 -0
  90. package/build/sdk/studio/model/kerasResponse.js.map +1 -1
  91. package/build/sdk/studio/model/kerasResponseAllOf.d.ts +4 -0
  92. package/build/sdk/studio/model/kerasResponseAllOf.js +5 -0
  93. package/build/sdk/studio/model/kerasResponseAllOf.js.map +1 -1
  94. package/build/sdk/studio/model/kerasResponseAllOfTransferLearningModels.d.ts +2 -0
  95. package/build/sdk/studio/model/kerasResponseAllOfTransferLearningModels.js +10 -0
  96. package/build/sdk/studio/model/kerasResponseAllOfTransferLearningModels.js.map +1 -1
  97. package/build/sdk/studio/model/kerasVisualLayerType.d.ts +1 -1
  98. package/build/sdk/studio/model/kerasVisualLayerType.js +1 -1
  99. package/build/sdk/studio/model/kerasVisualLayerType.js.map +1 -1
  100. package/build/sdk/studio/model/lastModificationDateResponse.d.ts +34 -0
  101. package/build/sdk/studio/model/lastModificationDateResponse.js +47 -0
  102. package/build/sdk/studio/model/lastModificationDateResponse.js.map +1 -0
  103. package/build/sdk/studio/model/lastModificationDateResponseAllOf.d.ts +26 -0
  104. package/build/sdk/studio/model/lastModificationDateResponseAllOf.js +37 -0
  105. package/build/sdk/studio/model/lastModificationDateResponseAllOf.js.map +1 -0
  106. package/build/sdk/studio/model/listVersionsResponseAllOfVersions.d.ts +3 -0
  107. package/build/sdk/studio/model/listVersionsResponseAllOfVersions.js +15 -0
  108. package/build/sdk/studio/model/listVersionsResponseAllOfVersions.js.map +1 -1
  109. package/build/sdk/studio/model/models.d.ts +16 -3
  110. package/build/sdk/studio/model/models.js +50 -14
  111. package/build/sdk/studio/model/models.js.map +1 -1
  112. package/build/sdk/studio/model/objectDetectionLastLayer.d.ts +13 -0
  113. package/build/sdk/studio/model/objectDetectionLastLayer.js +16 -0
  114. package/build/sdk/studio/model/objectDetectionLastLayer.js.map +1 -0
  115. package/build/sdk/studio/model/organizationCreateProject.d.ts +4 -0
  116. package/build/sdk/studio/model/organizationCreateProject.js +12 -1
  117. package/build/sdk/studio/model/organizationCreateProject.js.map +1 -1
  118. package/build/sdk/studio/model/organizationCreateProjectRequest.d.ts +1 -0
  119. package/build/sdk/studio/model/organizationCreateProjectRequest.js +5 -0
  120. package/build/sdk/studio/model/organizationCreateProjectRequest.js.map +1 -1
  121. package/build/sdk/studio/model/organizationDataset.d.ts +30 -0
  122. package/build/sdk/studio/model/organizationDataset.js +57 -0
  123. package/build/sdk/studio/model/organizationDataset.js.map +1 -0
  124. package/build/sdk/studio/model/organizationGetCreateProjectsResponseAllOfJobs.d.ts +1 -0
  125. package/build/sdk/studio/model/organizationGetCreateProjectsResponseAllOfJobs.js +5 -0
  126. package/build/sdk/studio/model/organizationGetCreateProjectsResponseAllOfJobs.js.map +1 -1
  127. package/build/sdk/studio/model/organizationInfoResponse.d.ts +2 -2
  128. package/build/sdk/studio/model/organizationInfoResponse.js +1 -1
  129. package/build/sdk/studio/model/organizationInfoResponse.js.map +1 -1
  130. package/build/sdk/studio/model/organizationInfoResponseAllOf.d.ts +2 -2
  131. package/build/sdk/studio/model/organizationInfoResponseAllOf.js +1 -1
  132. package/build/sdk/studio/model/organizationInfoResponseAllOf.js.map +1 -1
  133. package/build/sdk/studio/model/organizationPipeline.d.ts +6 -0
  134. package/build/sdk/studio/model/organizationPipeline.js +17 -1
  135. package/build/sdk/studio/model/organizationPipeline.js.map +1 -1
  136. package/build/sdk/studio/model/organizationPipelineFeedingIntoProject.d.ts +28 -0
  137. package/build/sdk/studio/model/organizationPipelineFeedingIntoProject.js +47 -0
  138. package/build/sdk/studio/model/organizationPipelineFeedingIntoProject.js.map +1 -0
  139. package/build/sdk/studio/model/organizationPipelineRun.d.ts +4 -0
  140. package/build/sdk/studio/model/organizationPipelineRun.js +5 -0
  141. package/build/sdk/studio/model/organizationPipelineRun.js.map +1 -1
  142. package/build/sdk/studio/model/organizationPipelineRunStep.d.ts +1 -0
  143. package/build/sdk/studio/model/organizationPipelineRunStep.js +5 -0
  144. package/build/sdk/studio/model/organizationPipelineRunStep.js.map +1 -1
  145. package/build/sdk/studio/model/organizationPipelineStep.d.ts +1 -0
  146. package/build/sdk/studio/model/organizationPipelineStep.js +5 -0
  147. package/build/sdk/studio/model/organizationPipelineStep.js.map +1 -1
  148. package/build/sdk/studio/model/organizationTransferLearningBlock.d.ts +2 -3
  149. package/build/sdk/studio/model/organizationTransferLearningBlock.js +2 -3
  150. package/build/sdk/studio/model/organizationTransferLearningBlock.js.map +1 -1
  151. package/build/sdk/studio/model/organizationUpdatePipelineBody.d.ts +5 -0
  152. package/build/sdk/studio/model/organizationUpdatePipelineBody.js +17 -1
  153. package/build/sdk/studio/model/organizationUpdatePipelineBody.js.map +1 -1
  154. package/build/sdk/studio/model/project.d.ts +1 -0
  155. package/build/sdk/studio/model/project.js +5 -0
  156. package/build/sdk/studio/model/project.js.map +1 -1
  157. package/build/sdk/studio/model/projectInfoResponse.d.ts +1 -0
  158. package/build/sdk/studio/model/projectInfoResponse.js +5 -0
  159. package/build/sdk/studio/model/projectInfoResponse.js.map +1 -1
  160. package/build/sdk/studio/model/projectInfoResponseAllOf.d.ts +1 -0
  161. package/build/sdk/studio/model/projectInfoResponseAllOf.js +5 -0
  162. package/build/sdk/studio/model/projectInfoResponseAllOf.js.map +1 -1
  163. package/build/sdk/studio/model/startApplicationTestingRequest.d.ts +8 -0
  164. package/build/sdk/studio/model/startApplicationTestingRequest.js +10 -0
  165. package/build/sdk/studio/model/startApplicationTestingRequest.js.map +1 -1
  166. package/build/sdk/studio/model/updateOrganizationDatasetRequest.d.ts +26 -0
  167. package/build/sdk/studio/model/updateOrganizationDatasetRequest.js +37 -0
  168. package/build/sdk/studio/model/updateOrganizationDatasetRequest.js.map +1 -0
  169. package/build/sdk/studio/model/updateOrganizationTransferLearningBlockRequest.d.ts +2 -3
  170. package/build/sdk/studio/model/updateOrganizationTransferLearningBlockRequest.js +2 -3
  171. package/build/sdk/studio/model/updateOrganizationTransferLearningBlockRequest.js.map +1 -1
  172. package/build/sdk/studio/model/uploadImageRequest.d.ts +33 -0
  173. package/build/sdk/studio/model/uploadImageRequest.js +32 -0
  174. package/build/sdk/studio/model/uploadImageRequest.js.map +1 -0
  175. package/build/sdk/studio/model/verifyOrganizationBucketResponse.d.ts +37 -0
  176. package/build/sdk/studio/model/verifyOrganizationBucketResponse.js +42 -0
  177. package/build/sdk/studio/model/verifyOrganizationBucketResponse.js.map +1 -0
  178. package/build/sdk/studio/model/verifyOrganizationBucketResponseAllOf.d.ts +29 -0
  179. package/build/sdk/studio/model/verifyOrganizationBucketResponseAllOf.js +32 -0
  180. package/build/sdk/studio/model/verifyOrganizationBucketResponseAllOf.js.map +1 -0
  181. package/build/sdk/studio/model/verifyOrganizationBucketResponseAllOfFiles.d.ts +27 -0
  182. package/build/sdk/studio/model/verifyOrganizationBucketResponseAllOfFiles.js +42 -0
  183. package/build/sdk/studio/model/verifyOrganizationBucketResponseAllOfFiles.js.map +1 -0
  184. package/build/shared/bounding-box-file-types.d.ts +15 -0
  185. package/build/shared/bounding-box-file-types.js +18 -0
  186. package/build/shared/bounding-box-file-types.js.map +1 -0
  187. package/build/shared/viewmodels/init.d.ts +5 -0
  188. package/build/shared/viewmodels/init.js +2 -0
  189. package/build/shared/viewmodels/init.js.map +1 -1
  190. package/build/test/gstreamer.test.d.ts +1 -0
  191. package/build/test/gstreamer.test.js +1111 -0
  192. package/build/test/gstreamer.test.js.map +1 -0
  193. package/cli/linux/linux.ts +3 -3
  194. package/cli/linux/runner.ts +2 -1
  195. package/package.json +7 -3
  196. package/test/.mocharc.js +5 -0
  197. package/test/gstreamer.test.ts +1130 -0
@@ -0,0 +1,1111 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const assert_1 = __importDefault(require("assert"));
7
+ const gstreamer_1 = require("../library/sensors/gstreamer");
8
+ describe("gstreamer", () => {
9
+ describe("parse devices", () => {
10
+ // https://forum.edgeimpulse.com/t/error-setting-up-jetson-nano-with-a-csi-camera/1794/28
11
+ it("nvidia jetson w/ csi camera", async () => {
12
+ const gstOutput = `Probing devices...
13
+
14
+ Device found:
15
+
16
+ name : Monitor of Built-in Audio Analogue Stereo
17
+ class : Audio/Source
18
+ 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 ];
19
+ audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
20
+ audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
21
+ properties:
22
+ device.description = "Monitor\ of\ Built-in\ Audio\ Analogue\ Stereo"
23
+ device.class = monitor
24
+ alsa.card = 1
25
+ alsa.card_name = tegra-snd-t210ref-mobile-rt565x
26
+ alsa.long_card_name = tegra-snd-t210ref-mobile-rt565x
27
+ device.bus_path = platform-sound
28
+ sysfs.path = /devices/sound/sound/card1
29
+ device.form_factor = internal
30
+ device.string = 1
31
+ module-udev-detect.discovered = 1
32
+ device.icon_name = audio-card
33
+ gst-launch-1.0 pulsesrc device=alsa_output.platform-sound.analog-stereo.monitor ! ...
34
+
35
+
36
+ Device found:
37
+
38
+ name : Built-in Audio Analogue Stereo
39
+ class : Audio/Source
40
+ 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 ];
41
+ audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
42
+ audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
43
+ properties:
44
+ alsa.resolution_bits = 16
45
+ device.api = alsa
46
+ device.class = sound
47
+ alsa.class = generic
48
+ alsa.subclass = generic-mix
49
+ alsa.name = ""
50
+ alsa.id = "ADMAIF1\ CIF\ ADMAIF1-0"
51
+ alsa.subdevice = 0
52
+ alsa.subdevice_name = "subdevice\ \#0"
53
+ alsa.device = 0
54
+ alsa.card = 1
55
+ alsa.card_name = tegra-snd-t210ref-mobile-rt565x
56
+ alsa.long_card_name = tegra-snd-t210ref-mobile-rt565x
57
+ device.bus_path = platform-sound
58
+ sysfs.path = /devices/sound/sound/card1
59
+ device.form_factor = internal
60
+ device.string = front:1
61
+ device.buffering.buffer_size = 32768
62
+ device.buffering.fragment_size = 16384
63
+ device.access_mode = mmap+timer
64
+ device.profile.name = analog-stereo
65
+ device.profile.description = "Analogue\ Stereo"
66
+ device.description = "Built-in\ Audio\ Analogue\ Stereo"
67
+ module-udev-detect.discovered = 1
68
+ device.icon_name = audio-card
69
+ gst-launch-1.0 pulsesrc device=alsa_input.platform-sound.analog-stereo ! ...
70
+
71
+
72
+ Device found:
73
+
74
+ name : Built-in Audio Analogue Stereo
75
+ class : Audio/Sink
76
+ 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 ];
77
+ audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
78
+ audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
79
+ properties:
80
+ alsa.resolution_bits = 16
81
+ device.api = alsa
82
+ device.class = sound
83
+ alsa.class = generic
84
+ alsa.subclass = generic-mix
85
+ alsa.name = ""
86
+ alsa.id = "ADMAIF1\ CIF\ ADMAIF1-0"
87
+ alsa.subdevice = 0
88
+ alsa.subdevice_name = "subdevice\ \#0"
89
+ alsa.device = 0
90
+ alsa.card = 1
91
+ alsa.card_name = tegra-snd-t210ref-mobile-rt565x
92
+ alsa.long_card_name = tegra-snd-t210ref-mobile-rt565x
93
+ device.bus_path = platform-sound
94
+ sysfs.path = /devices/sound/sound/card1
95
+ device.form_factor = internal
96
+ device.string = front:1
97
+ device.buffering.buffer_size = 32768
98
+ device.buffering.fragment_size = 16384
99
+ device.access_mode = mmap+timer
100
+ device.profile.name = analog-stereo
101
+ device.profile.description = "Analogue\ Stereo"
102
+ device.description = "Built-in\ Audio\ Analogue\ Stereo"
103
+ module-udev-detect.discovered = 1
104
+ device.icon_name = audio-card
105
+ gst-launch-1.0 ... ! pulsesink device=alsa_output.platform-sound.analog-stereo`;
106
+ const gstLaunchNvargusCameraSrcOutput = `nvarguscamerasrc options GST_ARGUS: Creating output stream
107
+ GST_ARGUS: Available Sensor modes :
108
+ GST_ARGUS: 3264 x 2464 FR = 21.000000 fps Duration = 47619048 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
109
+ GST_ARGUS: 3264 x 1848 FR = 28.000001 fps Duration = 35714284 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
110
+ GST_ARGUS: 1920 x 1080 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
111
+ GST_ARGUS: 1640 x 1232 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
112
+ GST_ARGUS: 1280 x 720 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
113
+ GST_ARGUS: 1280 x 720 FR = 120.000005 fps Duration = 8333333 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
114
+ GST_ARGUS: Running with following settings:
115
+ GST_ARGUS: Setup Complete, Starting captures for 0 seconds
116
+ GST_ARGUS: Starting repeat capture requests.
117
+ GST_ARGUS: Cleaning up
118
+ GST_ARGUS: Done Success
119
+ `;
120
+ const devices = await testGetDevices(gstOutput, gstLaunchNvargusCameraSrcOutput);
121
+ assert_1.default.equal(devices.length, 1);
122
+ assert_1.default.equal(devices[0].id, 'nvarguscamerasrc');
123
+ assert_1.default.equal(devices[0].name, 'CSI camera');
124
+ assert_1.default.equal(JSON.stringify(devices[0].caps), JSON.stringify([
125
+ {
126
+ framerate: 21,
127
+ height: 2464,
128
+ width: 3264,
129
+ type: 'nvarguscamerasrc'
130
+ },
131
+ {
132
+ framerate: 28.000001,
133
+ height: 1848,
134
+ width: 3264,
135
+ type: 'nvarguscamerasrc'
136
+ },
137
+ {
138
+ framerate: 29.999999,
139
+ height: 1080,
140
+ width: 1920,
141
+ type: 'nvarguscamerasrc'
142
+ },
143
+ {
144
+ framerate: 29.999999,
145
+ height: 1232,
146
+ width: 1640,
147
+ type: 'nvarguscamerasrc'
148
+ },
149
+ {
150
+ framerate: 59.999999,
151
+ height: 720,
152
+ width: 1280,
153
+ type: 'nvarguscamerasrc'
154
+ },
155
+ {
156
+ framerate: 120.000005,
157
+ height: 720,
158
+ width: 1280,
159
+ type: 'nvarguscamerasrc'
160
+ }
161
+ ]));
162
+ });
163
+ // https://forum.edgeimpulse.com/t/usb-camera-on-raspberry-pi/1758
164
+ it("usb camera on rpi w/ image/jpeg", async () => {
165
+ const gstOutput = `Probing devices...
166
+
167
+
168
+ Device found:
169
+
170
+ name : USB : USB
171
+ class : Video/Source
172
+ caps : image/jpeg, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1;
173
+ properties:
174
+ udev-probed = true
175
+ device.bus_path = platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.2:1.0
176
+ sysfs.path = /sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.2/1-1.2:1.0/video4linux/video0
177
+ device.bus = usb
178
+ device.subsystem = video4linux
179
+ device.vendor.id = 1b3f
180
+ device.vendor.name = "USB\\x20\\x20\\x20\\x20"
181
+ device.product.id = 2002
182
+ device.product.name = "USB\ \ \ \ \ \ \ \ \ \ \ :\ USB"
183
+ device.serial = USB_USB_Demo_1.00
184
+ device.capabilities = :capture:
185
+ device.api = v4l2
186
+ device.path = /dev/video0
187
+ v4l2.device.driver = uvcvideo
188
+ v4l2.device.card = "USB\ \ \ \ \ \ \ \ \ \ \ :\ USB\ \ \ \ \ \ \ \ \ \ \ \ "
189
+ v4l2.device.bus_info = usb-0000:01:00.0-1.2
190
+ v4l2.device.version = 328787 (0x00050453)
191
+ v4l2.device.capabilities = 2225078273 (0x84a00001)
192
+ v4l2.device.device_caps = 69206017 (0x04200001)
193
+ gst-launch-1.0 v4l2src ! ...
194
+
195
+
196
+ Device found:
197
+
198
+ name : bcm2835-isp
199
+ class : Video/Sink
200
+ caps : video/x-raw, format=(string)YUY2, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ bt601 };
201
+ video/x-raw, format=(string)UYVY, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ bt601 };
202
+ video/x-raw, format=(string)I420, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ bt601 };
203
+ video/x-raw, format=(string)YV12, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ bt601 };
204
+ video/x-raw, format=(string)BGRA, width=(int)[ 64, 16384 ], height=(int)[ 64, 16384 ], interlace-mode=(string)progressive, colorimetry=(string){ sRGB };
205
+ video/x-raw, format=(string)BGR, width=(int)[ 64, 16384 ], height=(int)[ 64, 16384 ], interlace-mode=(string)progressive, colorimetry=(string){ sRGB };
206
+ video/x-raw, format=(string)RGB, width=(int)[ 64, 16384 ], height=(int)[ 64, 16384 ], interlace-mode=(string)progressive, colorimetry=(string){ sRGB };
207
+ video/x-raw, format=(string)NV21, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ bt601 };
208
+ video/x-raw, format=(string)NV12, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ bt601 };
209
+ video/x-raw, format=(string)RGB16, width=(int)[ 64, 16384 ], height=(int)[ 64, 16384 ], interlace-mode=(string)progressive, colorimetry=(string){ sRGB };
210
+ video/x-bayer, format=(string)grbg, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], colorimetry=(string){ 1:1:0:0 };
211
+ video/x-bayer, format=(string)gbrg, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], colorimetry=(string){ 1:1:0:0 };
212
+ video/x-bayer, format=(string)rggb, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], colorimetry=(string){ 1:1:0:0 };
213
+ video/x-bayer, format=(string)bggr, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], colorimetry=(string){ 1:1:0:0 };
214
+ video/x-raw, format=(string)GRAY8, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ 2:0:0:0 };
215
+ video/x-raw, format=(string)YVYU, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ bt601 };
216
+ video/x-raw, format=(string)GRAY16_LE, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ 2:0:0:0 };
217
+ properties:
218
+ udev-probed = true
219
+ device.bus_path = platform-bcm2835-isp
220
+ sysfs.path = /sys/devices/platform/soc/fe00b840.mailbox/bcm2835-isp/video4linux/video13
221
+ device.subsystem = video4linux
222
+ device.product.name = bcm2835-isp
223
+ device.capabilities = :video_output:
224
+ device.api = v4l2
225
+ device.path = /dev/video13
226
+ v4l2.device.driver = bcm2835-isp
227
+ v4l2.device.card = bcm2835-isp
228
+ v4l2.device.bus_info = platform:bcm2835-isp
229
+ v4l2.device.version = 328787 (0x00050453)
230
+ v4l2.device.capabilities = 2216689666 (0x84200002)
231
+ v4l2.device.device_caps = 69206018 (0x04200002)
232
+ gst-launch-1.0 ... ! v4l2sink device=/dev/video13
233
+
234
+
235
+ Device found:
236
+
237
+ name : bcm2835-isp
238
+ class : Video/Source
239
+ caps : video/x-raw, format=(string)YUY2, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
240
+ video/x-raw, format=(string)UYVY, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
241
+ video/x-raw, format=(string)I420, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
242
+ video/x-raw, format=(string)YV12, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
243
+ video/x-raw, format=(string)BGRA, width=(int)[ 64, 16384 ], height=(int)[ 64, 16384 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
244
+ video/x-raw, format=(string)BGR, width=(int)[ 64, 16384 ], height=(int)[ 64, 16384 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
245
+ video/x-raw, format=(string)RGB, width=(int)[ 64, 16384 ], height=(int)[ 64, 16384 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
246
+ video/x-raw, format=(string)NV21, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
247
+ video/x-raw, format=(string)NV12, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
248
+ video/x-raw, format=(string)RGB16, width=(int)[ 64, 16384 ], height=(int)[ 64, 16384 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
249
+ video/x-raw, format=(string)YVYU, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
250
+ properties:
251
+ udev-probed = true
252
+ device.bus_path = platform-bcm2835-isp
253
+ sysfs.path = /sys/devices/platform/soc/fe00b840.mailbox/bcm2835-isp/video4linux/video14
254
+ device.subsystem = video4linux
255
+ device.product.name = bcm2835-isp
256
+ device.capabilities = :capture:
257
+ device.api = v4l2
258
+ device.path = /dev/video14
259
+ v4l2.device.driver = bcm2835-isp
260
+ v4l2.device.card = bcm2835-isp
261
+ v4l2.device.bus_info = platform:bcm2835-isp
262
+ v4l2.device.version = 328787 (0x00050453)
263
+ v4l2.device.capabilities = 2216689665 (0x84200001)
264
+ v4l2.device.device_caps = 69206017 (0x04200001)
265
+ gst-launch-1.0 v4l2src device=/dev/video14 ! ...
266
+
267
+
268
+ Device found:
269
+
270
+ name : bcm2835-isp
271
+ class : Video/Source
272
+ caps : video/x-raw, format=(string)YUY2, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
273
+ video/x-raw, format=(string)UYVY, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
274
+ video/x-raw, format=(string)I420, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
275
+ video/x-raw, format=(string)YV12, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
276
+ video/x-raw, format=(string)NV21, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
277
+ video/x-raw, format=(string)NV12, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
278
+ video/x-raw, format=(string)YVYU, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
279
+ properties:
280
+ udev-probed = true
281
+ device.bus_path = platform-bcm2835-isp
282
+ sysfs.path = /sys/devices/platform/soc/fe00b840.mailbox/bcm2835-isp/video4linux/video15
283
+ device.subsystem = video4linux
284
+ device.product.name = bcm2835-isp
285
+ device.capabilities = :capture:
286
+ device.api = v4l2
287
+ device.path = /dev/video15
288
+ v4l2.device.driver = bcm2835-isp
289
+ v4l2.device.card = bcm2835-isp
290
+ v4l2.device.bus_info = platform:bcm2835-isp
291
+ v4l2.device.version = 328787 (0x00050453)
292
+ v4l2.device.capabilities = 2216689665 (0x84200001)
293
+ v4l2.device.device_caps = 69206017 (0x04200001)
294
+ gst-launch-1.0 v4l2src device=/dev/video15 ! ...`;
295
+ const devices = await testGetDevices(gstOutput, undefined);
296
+ assert_1.default.equal(devices.length, 1);
297
+ assert_1.default.equal(devices[0].id, '/dev/video0');
298
+ assert_1.default.equal(devices[0].name, 'USB');
299
+ assert_1.default.equal(JSON.stringify(devices[0].caps), JSON.stringify([{
300
+ type: "image/jpeg",
301
+ width: 1280,
302
+ height: 720,
303
+ framerate: 30
304
+ }]));
305
+ });
306
+ // https://forum.edgeimpulse.com/t/edge-impulse-on-coral-edgetpu/2311
307
+ it("coral edge tpu with iMX6S", async () => {
308
+ const gstOutput = `Probing devices...
309
+
310
+
311
+ Device found:
312
+
313
+ name : i.MX6S_CSI
314
+ class : Video/Source
315
+ caps : video/x-raw, format=(string)YUY2, width=(int)2592, height=(int)1944, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)15/1;
316
+ video/x-raw, format=(string)YUY2, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 15/1, 30/1 };
317
+ video/x-raw, format=(string)YUY2, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1;
318
+ video/x-raw, format=(string)YUY2, width=(int)720, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1;
319
+ video/x-raw, format=(string)YUY2, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1;
320
+ properties:
321
+ udev-probed = true
322
+ device.bus_path = platform-30a90000.csi1_bridge
323
+ sysfs.path = /sys/devices/platform/30a90000.csi1_bridge/video4linux/video0
324
+ device.subsystem = video4linux
325
+ device.product.name = i.MX6S_CSI
326
+ device.capabilities = :capture:
327
+ device.api = v4l2
328
+ device.path = /dev/video0
329
+ v4l2.device.driver = mx6s-csi
330
+ v4l2.device.card = i.MX6S_CSI
331
+ v4l2.device.bus_info = platform:30a90000.csi1_bridge
332
+ v4l2.device.version = 265826 (0x00040e62)
333
+ v4l2.device.capabilities = 2216689665 (0x84200001)
334
+ v4l2.device.device_caps = 69206017 (0x04200001)
335
+ gst-launch-1.0 v4l2src ! ...
336
+ `;
337
+ const devices = await testGetDevices(gstOutput, undefined);
338
+ assert_1.default.equal(devices.length, 1);
339
+ assert_1.default.equal(devices[0].id, '/dev/video0');
340
+ assert_1.default.equal(devices[0].name, 'i.MX6S_CSI');
341
+ assert_1.default.equal(JSON.stringify(devices[0].caps), JSON.stringify([
342
+ {
343
+ type: "video/x-raw",
344
+ width: 2592,
345
+ height: 1944,
346
+ framerate: 15
347
+ },
348
+ {
349
+ type: "video/x-raw",
350
+ width: 1920,
351
+ height: 1080,
352
+ framerate: 15
353
+ },
354
+ {
355
+ type: "video/x-raw",
356
+ width: 1280,
357
+ height: 720,
358
+ framerate: 30
359
+ },
360
+ {
361
+ type: "video/x-raw",
362
+ width: 720,
363
+ height: 480,
364
+ framerate: 30
365
+ },
366
+ {
367
+ type: "video/x-raw",
368
+ width: 640,
369
+ height: 480,
370
+ framerate: 30
371
+ }
372
+ ]));
373
+ });
374
+ // https://forum.edgeimpulse.com/t/raspberry-pi-4-logitech-c922-error/3160/3
375
+ it("logitech c922 on rpi bullseye", async () => {
376
+ const gstOutput = `Probing devices...
377
+
378
+ Device found:
379
+
380
+ name : /base/scb/pcie@7d500000/pci@0,0/usb@0,0-1.2:1.0-046d:085c
381
+ class : Source/Video
382
+ caps : image/jpeg, width=160, height=90
383
+ image/jpeg, width=160, height=120
384
+ image/jpeg, width=176, height=144
385
+ image/jpeg, width=320, height=180
386
+ image/jpeg, width=320, height=240
387
+ image/jpeg, width=352, height=288
388
+ image/jpeg, width=432, height=240
389
+ image/jpeg, width=640, height=360
390
+ image/jpeg, width=640, height=480
391
+ image/jpeg, width=800, height=448
392
+ image/jpeg, width=864, height=480
393
+ image/jpeg, width=800, height=600
394
+ image/jpeg, width=1024, height=576
395
+ image/jpeg, width=960, height=720
396
+ image/jpeg, width=1280, height=720
397
+ image/jpeg, width=1600, height=896
398
+ image/jpeg, width=1920, height=1080
399
+ video/x-raw, format=YUY2, width=160, height=90
400
+ video/x-raw, format=YUY2, width=160, height=120
401
+ video/x-raw, format=YUY2, width=176, height=144
402
+ video/x-raw, format=YUY2, width=320, height=180
403
+ video/x-raw, format=YUY2, width=320, height=240
404
+ video/x-raw, format=YUY2, width=352, height=288
405
+ video/x-raw, format=YUY2, width=432, height=240
406
+ video/x-raw, format=YUY2, width=640, height=360
407
+ video/x-raw, format=YUY2, width=640, height=480
408
+ video/x-raw, format=YUY2, width=800, height=448
409
+ video/x-raw, format=YUY2, width=864, height=480
410
+ video/x-raw, format=YUY2, width=800, height=600
411
+ video/x-raw, format=YUY2, width=1024, height=576
412
+ video/x-raw, format=YUY2, width=960, height=720
413
+ video/x-raw, format=YUY2, width=1280, height=720
414
+ video/x-raw, format=YUY2, width=1600, height=896
415
+ video/x-raw, format=YUY2, width=1920, height=1080
416
+ video/x-raw, format=YUY2, width=2304, height=1296
417
+ video/x-raw, format=YUY2, width=2304, height=1536
418
+ gst-launch-1.0 libcamerasrc camera-name="/base/scb/pcie\@7d500000/pci\@0\,0/usb\@0\,0-1.2:1.0-046d:085c" ! ...
419
+
420
+
421
+ Device found:
422
+
423
+ name : C922 Pro Stream Webcam Analog Stereo
424
+ class : Audio/Source
425
+ 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 ]
426
+ audio/x-alaw, rate=[ 1, 384000 ], channels=[ 1, 32 ]
427
+ audio/x-mulaw, rate=[ 1, 384000 ], channels=[ 1, 32 ]
428
+ properties:
429
+ alsa.resolution_bits = 16
430
+ device.api = alsa
431
+ device.class = sound
432
+ alsa.class = generic
433
+ alsa.subclass = generic-mix
434
+ alsa.name = "USB\ Audio"
435
+ alsa.id = "USB\ Audio"
436
+ alsa.subdevice = 0
437
+ alsa.subdevice_name = "subdevice\ \#0"
438
+ alsa.device = 0
439
+ alsa.card = 1
440
+ alsa.card_name = "C922\ Pro\ Stream\ Webcam"
441
+ alsa.long_card_name = "C922\ Pro\ Stream\ Webcam\ at\ usb-0000:01:00.0-1.2\,\ high\ speed"
442
+ alsa.driver_name = snd_usb_audio
443
+ device.bus_path = platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.2:1.2
444
+ sysfs.path = /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.2/1-1.2:1.2/sound/card1
445
+ udev.id = usb-046d_C922_Pro_Stream_Webcam_8BECCCDF-02
446
+ device.bus = usb
447
+ device.vendor.id = 046d
448
+ device.vendor.name = "Logitech\,\ Inc."
449
+ device.product.id = 085c
450
+ device.product.name = "C922\ Pro\ Stream\ Webcam"
451
+ device.serial = 046d_C922_Pro_Stream_Webcam_8BECCCDF
452
+ device.form_factor = webcam
453
+ device.string = front:1
454
+ device.buffering.buffer_size = 7672
455
+ device.buffering.fragment_size = 1916
456
+ device.access_mode = mmap
457
+ device.profile.name = analog-stereo
458
+ device.profile.description = "Analog\ Stereo"
459
+ device.description = "C922\ Pro\ Stream\ Webcam\ Analog\ Stereo"
460
+ module-udev-detect.discovered = 1
461
+ device.icon_name = camera-web-usb
462
+ is-default = true
463
+ gst-launch-1.0 pulsesrc device=alsa_input.usb-046d_C922_Pro_Stream_Webcam_8BECCCDF-02.analog-stereo ! ...
464
+
465
+
466
+ Device found:
467
+
468
+ name : Monitor of Built-in Audio Analog Stereo
469
+ class : Audio/Source
470
+ 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 ]
471
+ audio/x-alaw, rate=[ 1, 384000 ], channels=[ 1, 32 ]
472
+ audio/x-mulaw, rate=[ 1, 384000 ], channels=[ 1, 32 ]
473
+ properties:
474
+ device.description = "Monitor\ of\ Built-in\ Audio\ Analog\ Stereo"
475
+ device.class = monitor
476
+ alsa.card = 0
477
+ alsa.card_name = "bcm2835\ Headphones"
478
+ alsa.long_card_name = "bcm2835\ Headphones"
479
+ alsa.driver_name = snd_bcm2835
480
+ device.bus_path = platform-bcm2835_audio
481
+ sysfs.path = /devices/platform/soc/fe00b840.mailbox/bcm2835_audio/sound/card0
482
+ device.form_factor = internal
483
+ device.string = 0
484
+ module-udev-detect.discovered = 1
485
+ device.icon_name = audio-card
486
+ is-default = false
487
+ gst-launch-1.0 pulsesrc device=alsa_output.platform-bcm2835_audio.analog-stereo.monitor ! ...
488
+
489
+
490
+ Device found:
491
+
492
+ name : Monitor of Built-in Audio Digital Stereo (HDMI)
493
+ class : Audio/Source
494
+ 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 ]
495
+ audio/x-alaw, rate=[ 1, 384000 ], channels=[ 1, 32 ]
496
+ audio/x-mulaw, rate=[ 1, 384000 ], channels=[ 1, 32 ]
497
+ properties:
498
+ device.description = "Monitor\ of\ Built-in\ Audio\ Digital\ Stereo\ \(HDMI\)"
499
+ device.class = monitor
500
+ alsa.card = 2
501
+ alsa.card_name = vc4-hdmi-0
502
+ alsa.long_card_name = vc4-hdmi-0
503
+ alsa.driver_name = vc4
504
+ device.bus_path = platform-fef00700.hdmi
505
+ sysfs.path = /devices/platform/soc/fef00700.hdmi/sound/card2
506
+ device.form_factor = internal
507
+ device.string = 2
508
+ module-udev-detect.discovered = 1
509
+ device.icon_name = audio-card
510
+ is-default = false
511
+ gst-launch-1.0 pulsesrc device=alsa_output.platform-fef00700.hdmi.hdmi-stereo.monitor ! ...
512
+
513
+
514
+ Device found:
515
+
516
+ name : Built-in Audio Analog Stereo
517
+ class : Audio/Sink
518
+ 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 ]
519
+ audio/x-alaw, rate=[ 1, 384000 ], channels=[ 1, 32 ]
520
+ audio/x-mulaw, rate=[ 1, 384000 ], channels=[ 1, 32 ]
521
+ properties:
522
+ alsa.resolution_bits = 16
523
+ device.api = alsa
524
+ device.class = sound
525
+ alsa.class = generic
526
+ alsa.subclass = generic-mix
527
+ alsa.name = "bcm2835\ Headphones"
528
+ alsa.id = "bcm2835\ Headphones"
529
+ alsa.subdevice = 0
530
+ alsa.subdevice_name = "subdevice\ \#0"
531
+ alsa.device = 0
532
+ alsa.card = 0
533
+ alsa.card_name = "bcm2835\ Headphones"
534
+ alsa.long_card_name = "bcm2835\ Headphones"
535
+ alsa.driver_name = snd_bcm2835
536
+ device.bus_path = platform-bcm2835_audio
537
+ sysfs.path = /devices/platform/soc/fe00b840.mailbox/bcm2835_audio/sound/card0
538
+ device.form_factor = internal
539
+ device.string = hw:0
540
+ device.buffering.buffer_size = 10576
541
+ device.buffering.fragment_size = 2640
542
+ device.access_mode = mmap
543
+ device.profile.name = analog-stereo
544
+ device.profile.description = "Analog\ Stereo"
545
+ device.description = "Built-in\ Audio\ Analog\ Stereo"
546
+ module-udev-detect.discovered = 1
547
+ device.icon_name = audio-card
548
+ is-default = true
549
+ gst-launch-1.0 ... ! pulsesink device=alsa_output.platform-bcm2835_audio.analog-stereo
550
+
551
+
552
+ Device found:
553
+
554
+ name : Built-in Audio Digital Stereo (HDMI)
555
+ class : Audio/Sink
556
+ 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 ]
557
+ audio/x-alaw, rate=[ 1, 384000 ], channels=[ 1, 32 ]
558
+ audio/x-mulaw, rate=[ 1, 384000 ], channels=[ 1, 32 ]
559
+ properties:
560
+ alsa.resolution_bits = 16
561
+ device.api = alsa
562
+ device.class = sound
563
+ alsa.class = generic
564
+ alsa.subclass = generic-mix
565
+ alsa.name = "MAI\ PCM\ i2s-hifi-0"
566
+ alsa.id = "MAI\ PCM\ i2s-hifi-0"
567
+ alsa.subdevice = 0
568
+ alsa.subdevice_name = "subdevice\ \#0"
569
+ alsa.device = 0
570
+ alsa.card = 2
571
+ alsa.card_name = vc4-hdmi-0
572
+ alsa.long_card_name = vc4-hdmi-0
573
+ alsa.driver_name = vc4
574
+ device.bus_path = platform-fef00700.hdmi
575
+ sysfs.path = /devices/platform/soc/fef00700.hdmi/sound/card2
576
+ device.form_factor = internal
577
+ device.string = hdmi:2
578
+ device.buffering.buffer_size = 10576
579
+ device.buffering.fragment_size = 2644
580
+ device.access_mode = mmap
581
+ device.profile.name = hdmi-stereo
582
+ device.profile.description = "Digital\ Stereo\ \(HDMI\)"
583
+ device.description = "Built-in\ Audio\ Digital\ Stereo\ \(HDMI\)"
584
+ module-udev-detect.discovered = 1
585
+ device.icon_name = audio-card
586
+ is-default = false
587
+ gst-launch-1.0 ... ! pulsesink device=alsa_output.platform-fef00700.hdmi.hdmi-stereo
588
+
589
+
590
+ Device found:
591
+
592
+ name : UvcH264 Video Capture 4
593
+ class : Video/CameraSource
594
+ caps : video/x-raw, format=YUY2, width=2304, height=1536, pixel-aspect-ratio=1/1, framerate=2/1
595
+ video/x-raw, format=YUY2, width=2304, height=1296, pixel-aspect-ratio=1/1, framerate=2/1
596
+ video/x-raw, format=YUY2, width=1920, height=1080, pixel-aspect-ratio=1/1, framerate=5/1
597
+ video/x-raw, format=YUY2, width=1600, height=896, pixel-aspect-ratio=1/1, framerate={ (fraction)15/2, (fraction)5/1 }
598
+ video/x-raw, format=YUY2, width=1280, height=720, pixel-aspect-ratio=1/1, framerate={ (fraction)10/1, (fraction)15/2, (fraction)5/1 }
599
+ 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 }
600
+ 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 }
601
+ 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 }
602
+ 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 }
603
+ 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 }
604
+ 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 }
605
+ 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 }
606
+ 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 }
607
+ 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 }
608
+ 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 }
609
+ 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 }
610
+ 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 }
611
+ 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 }
612
+ 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 }
613
+ 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 }
614
+ 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 }
615
+ 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 }
616
+ 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 }
617
+ 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 }
618
+ 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 }
619
+ 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 }
620
+ 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 }
621
+ 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 }
622
+ 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 }
623
+ 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 }
624
+ 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 }
625
+ 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 }
626
+ 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 }
627
+ 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 }
628
+ 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 }
629
+ 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 }
630
+ properties:
631
+ device.path = /dev/video0
632
+ udev-probed = false
633
+ device.api = uvch264
634
+ v4l2.device.driver = uvcvideo
635
+ v4l2.device.card = "Video\ Capture\ 4"
636
+ v4l2.device.bus_info = usb-0000:01:00.0-1.2
637
+ v4l2.device.version = 330321 (0x00050a51)
638
+ v4l2.device.capabilities = 2225078273 (0x84a00001)
639
+ v4l2.device.device_caps = 69206017 (0x04200001)
640
+ device.is-camerasrc = true
641
+ gst-launch-1.0 uvch264src.vfsrc name=camerasrc ! ... camerasrc.vidsrc ! [video/x-h264] ...
642
+
643
+
644
+ Device found:
645
+
646
+ name : UvcH264 Video Capture 4
647
+ class : Video/CameraSource
648
+ caps : video/x-raw, format=YUY2, width=2304, height=1536, pixel-aspect-ratio=1/1, framerate=2/1
649
+ video/x-raw, format=YUY2, width=2304, height=1296, pixel-aspect-ratio=1/1, framerate=2/1
650
+ video/x-raw, format=YUY2, width=1920, height=1080, pixel-aspect-ratio=1/1, framerate=5/1
651
+ video/x-raw, format=YUY2, width=1600, height=896, pixel-aspect-ratio=1/1, framerate={ (fraction)15/2, (fraction)5/1 }
652
+ video/x-raw, format=YUY2, width=1280, height=720, pixel-aspect-ratio=1/1, framerate={ (fraction)10/1, (fraction)15/2, (fraction)5/1 }
653
+ 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 }
654
+ 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 }
655
+ 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 }
656
+ 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 }
657
+ 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 }
658
+ 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 }
659
+ 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 }
660
+ 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 }
661
+ 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 }
662
+ 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 }
663
+ 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 }
664
+ 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 }
665
+ 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 }
666
+ 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 }
667
+ 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 }
668
+ 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 }
669
+ 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 }
670
+ 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 }
671
+ 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 }
672
+ 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 }
673
+ 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 }
674
+ 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 }
675
+ 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 }
676
+ 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 }
677
+ 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 }
678
+ 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 }
679
+ 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 }
680
+ 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 }
681
+ 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 }
682
+ 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 }
683
+ 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 }
684
+ properties:
685
+ udev-probed = true
686
+ device.bus_path = platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.2:1.0
687
+ sysfs.path = /sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.2/1-1.2:1.0/video4linux/video0
688
+ device.bus = usb
689
+ device.subsystem = video4linux
690
+ device.vendor.id = 046d
691
+ device.vendor.name = 046d
692
+ device.product.id = 085c
693
+ device.product.name = "Video\ Capture\ 4"
694
+ device.serial = 046d_C922_Pro_Stream_Webcam_8BECCCDF
695
+ device.capabilities = :capture:
696
+ device.api = uvch264
697
+ device.path = /dev/video0
698
+ v4l2.device.driver = uvcvideo
699
+ v4l2.device.card = "Video\ Capture\ 4"
700
+ v4l2.device.bus_info = usb-0000:01:00.0-1.2
701
+ v4l2.device.version = 330321 (0x00050a51)
702
+ v4l2.device.capabilities = 2225078273 (0x84a00001)
703
+ v4l2.device.device_caps = 69206017 (0x04200001)
704
+ device.is-camerasrc = true
705
+ gst-launch-1.0 uvch264src.vfsrc name=camerasrc ! ... camerasrc.vidsrc ! [video/x-h264] ...
706
+
707
+ `;
708
+ const devices = await testGetDevices(gstOutput, undefined);
709
+ assert_1.default.equal(devices.length, 1);
710
+ assert_1.default.equal(devices[0].id, '/dev/video0');
711
+ 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
+ {
714
+ type: "video/x-raw",
715
+ width: 2304,
716
+ height: 1536,
717
+ framerate: 2
718
+ },
719
+ {
720
+ type: "video/x-raw",
721
+ width: 2304,
722
+ height: 1296,
723
+ framerate: 2
724
+ },
725
+ {
726
+ type: "video/x-raw",
727
+ width: 1920,
728
+ height: 1080,
729
+ framerate: 5
730
+ },
731
+ {
732
+ type: "video/x-raw",
733
+ width: 1600,
734
+ height: 896,
735
+ framerate: 15
736
+ },
737
+ {
738
+ type: "video/x-raw",
739
+ width: 1280,
740
+ height: 720,
741
+ framerate: 10
742
+ },
743
+ {
744
+ type: "video/x-raw",
745
+ width: 960,
746
+ height: 720,
747
+ framerate: 15
748
+ },
749
+ {
750
+ type: "video/x-raw",
751
+ width: 1024,
752
+ height: 576,
753
+ framerate: 15
754
+ },
755
+ {
756
+ type: "video/x-raw",
757
+ width: 800,
758
+ height: 600,
759
+ framerate: 24
760
+ },
761
+ {
762
+ type: "video/x-raw",
763
+ width: 864,
764
+ height: 480,
765
+ framerate: 24
766
+ },
767
+ {
768
+ type: "video/x-raw",
769
+ width: 800,
770
+ height: 448,
771
+ framerate: 30
772
+ },
773
+ {
774
+ type: "video/x-raw",
775
+ width: 640,
776
+ height: 480,
777
+ framerate: 30
778
+ },
779
+ {
780
+ type: "video/x-raw",
781
+ width: 640,
782
+ height: 360,
783
+ framerate: 30
784
+ },
785
+ {
786
+ type: "video/x-raw",
787
+ width: 432,
788
+ height: 240,
789
+ framerate: 30
790
+ },
791
+ {
792
+ type: "video/x-raw",
793
+ width: 352,
794
+ height: 288,
795
+ framerate: 30
796
+ },
797
+ {
798
+ type: "video/x-raw",
799
+ width: 320,
800
+ height: 240,
801
+ framerate: 30
802
+ },
803
+ {
804
+ type: "video/x-raw",
805
+ width: 320,
806
+ height: 180,
807
+ framerate: 30
808
+ },
809
+ {
810
+ type: "video/x-raw",
811
+ width: 176,
812
+ height: 144,
813
+ framerate: 30
814
+ },
815
+ {
816
+ type: "video/x-raw",
817
+ width: 160,
818
+ height: 120,
819
+ framerate: 30
820
+ },
821
+ {
822
+ type: "video/x-raw",
823
+ width: 160,
824
+ height: 90,
825
+ framerate: 30
826
+ }
827
+ ]));
828
+ });
829
+ // https://github.com/edgeimpulse/edgeimpulse/issues/3975
830
+ it("renesas w/ usb camera", async () => {
831
+ const gstOutput = `Probing devices...
832
+
833
+
834
+ Device found:
835
+
836
+ name : HD Pro Webcam C920
837
+ class : Video/Source
838
+ caps : video/x-raw, format=(string)YUY2, width=(int)2304, height=(int)1536, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)2/1;
839
+ video/x-raw, format=(string)YUY2, width=(int)2304, height=(int)1296, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)2/1;
840
+ video/x-raw, format=(string)YUY2, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)5/1;
841
+ video/x-raw, format=(string)YUY2, width=(int)1600, height=(int)896, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 15/2, 5/1 };
842
+ 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 };
843
+ 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 };
844
+ 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 };
845
+ 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 };
846
+ 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 };
847
+ 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 };
848
+ 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 };
849
+ 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 };
850
+ 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 };
851
+ 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 };
852
+ 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 };
853
+ 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 };
854
+ 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 };
855
+ 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 };
856
+ 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 };
857
+ 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 };
858
+ 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 };
859
+ image/jpeg, width=(int)1280, 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 };
860
+ 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 };
861
+ 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 };
862
+ 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 };
863
+ 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 };
864
+ 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 };
865
+ 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 };
866
+ 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 };
867
+ 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 };
868
+ 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 };
869
+ 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 };
870
+ 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 };
871
+ 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 };
872
+ 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 };
873
+ 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 };
874
+ video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 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 };
875
+ video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 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 };
876
+ video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, width=(int)1280, 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 };
877
+ video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 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 };
878
+ video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 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 };
879
+ video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 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 };
880
+ video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 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 };
881
+ video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 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 };
882
+ video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 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 };
883
+ video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 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 };
884
+ video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 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 };
885
+ video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 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 };
886
+ video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 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 };
887
+ video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 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 };
888
+ video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 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 };
889
+ video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 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 };
890
+ video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 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 };
891
+ properties:
892
+ udev-probed = true
893
+ device.bus_path = platform-11c70100.usb-usb-0:1:1.0
894
+ sysfs.path = /sys/devices/platform/soc/11c70100.usb/usb2/2-1/2-1:1.0/video4linux/video1
895
+ device.bus = usb
896
+ device.subsystem = video4linux
897
+ device.vendor.id = 046d
898
+ device.vendor.name = 046d
899
+ device.product.id = 082d
900
+ device.product.name = "HD\ Pro\ Webcam\ C920"
901
+ device.serial = 046d_HD_Pro_Webcam_C920_EB8A47AF
902
+ device.capabilities = :capture:
903
+ device.api = v4l2
904
+ device.path = /dev/video1
905
+ v4l2.device.driver = uvcvideo
906
+ v4l2.device.card = "HD\ Pro\ Webcam\ C920"
907
+ v4l2.device.bus_info = usb-11c70100.usb-1
908
+ v4l2.device.version = 267173 (0x000413a5)
909
+ v4l2.device.capabilities = 2225078273 (0x84a00001)
910
+ v4l2.device.device_caps = 69206017 (0x04200001)
911
+ gst-launch-1.0 v4l2src device=/dev/video1 ! ...
912
+
913
+ `;
914
+ const devices = await testGetDevices(gstOutput, undefined);
915
+ assert_1.default.equal(devices.length, 1);
916
+ assert_1.default.equal(devices[0].id, '/dev/video1');
917
+ assert_1.default.equal(devices[0].name, 'HD Pro Webcam C920');
918
+ assert_1.default.equal(JSON.stringify(devices[0].caps), JSON.stringify([
919
+ {
920
+ type: "video/x-raw",
921
+ width: 2304,
922
+ height: 1536,
923
+ framerate: 2
924
+ },
925
+ {
926
+ type: "video/x-raw",
927
+ width: 2304,
928
+ height: 1296,
929
+ framerate: 2
930
+ },
931
+ {
932
+ type: "video/x-raw",
933
+ width: 1920,
934
+ height: 1080,
935
+ framerate: 5
936
+ },
937
+ {
938
+ type: "video/x-raw",
939
+ width: 1600,
940
+ height: 896,
941
+ framerate: 15
942
+ },
943
+ {
944
+ type: "video/x-raw",
945
+ width: 1280,
946
+ height: 720,
947
+ framerate: 10
948
+ },
949
+ {
950
+ type: "video/x-raw",
951
+ width: 960,
952
+ height: 720,
953
+ framerate: 15
954
+ },
955
+ {
956
+ type: "video/x-raw",
957
+ width: 1024,
958
+ height: 576,
959
+ framerate: 15
960
+ },
961
+ {
962
+ type: "video/x-raw",
963
+ width: 800,
964
+ height: 600,
965
+ framerate: 24
966
+ },
967
+ {
968
+ type: "video/x-raw",
969
+ width: 864,
970
+ height: 480,
971
+ framerate: 24
972
+ },
973
+ {
974
+ type: "video/x-raw",
975
+ width: 800,
976
+ height: 448,
977
+ framerate: 30
978
+ },
979
+ {
980
+ type: "video/x-raw",
981
+ width: 640,
982
+ height: 480,
983
+ framerate: 30
984
+ },
985
+ {
986
+ type: "video/x-raw",
987
+ width: 640,
988
+ height: 360,
989
+ framerate: 30
990
+ },
991
+ {
992
+ type: "video/x-raw",
993
+ width: 432,
994
+ height: 240,
995
+ framerate: 30
996
+ },
997
+ {
998
+ type: "video/x-raw",
999
+ width: 352,
1000
+ height: 288,
1001
+ framerate: 30
1002
+ },
1003
+ {
1004
+ type: "video/x-raw",
1005
+ width: 320,
1006
+ height: 240,
1007
+ framerate: 30
1008
+ },
1009
+ {
1010
+ type: "video/x-raw",
1011
+ width: 320,
1012
+ height: 180,
1013
+ framerate: 30
1014
+ },
1015
+ {
1016
+ type: "video/x-raw",
1017
+ width: 176,
1018
+ height: 144,
1019
+ framerate: 30
1020
+ },
1021
+ {
1022
+ type: "video/x-raw",
1023
+ width: 160,
1024
+ height: 120,
1025
+ framerate: 30
1026
+ },
1027
+ {
1028
+ type: "video/x-raw",
1029
+ width: 160,
1030
+ height: 90,
1031
+ framerate: 30
1032
+ }
1033
+ ]));
1034
+ });
1035
+ // https://github.com/edgeimpulse/edgeimpulse/issues/3975
1036
+ it("renesas w/ csi camera", async () => {
1037
+ const gstOutput = `Probing devices...
1038
+
1039
+
1040
+ Device found:
1041
+
1042
+ name : RZG2L_CRU
1043
+ class : Video/Source
1044
+ caps : video/x-raw, format=(string)YUY2, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 320, 2800 ], height=(int)[ 240, 4096 ], pixel-aspect-ratio=(fraction)1/1;
1045
+ video/x-raw, format=(string)UYVY, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 320, 2800 ], height=(int)[ 240, 4096 ], pixel-aspect-ratio=(fraction)1/1;
1046
+ video/x-raw, format=(string)ARGB, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 320, 2800 ], height=(int)[ 240, 4096 ], pixel-aspect-ratio=(fraction)1/1;
1047
+ video/x-raw, format=(string)BGRA, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 320, 2800 ], height=(int)[ 240, 4096 ], pixel-aspect-ratio=(fraction)1/1;
1048
+ video/x-raw, format=(string)BGRx, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 320, 2800 ], height=(int)[ 240, 4096 ], pixel-aspect-ratio=(fraction)1/1;
1049
+ video/x-raw, format=(string)BGR, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 320, 2800 ], height=(int)[ 240, 4096 ], pixel-aspect-ratio=(fraction)1/1;
1050
+ video/x-raw, format=(string)NV16, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 320, 2800 ], height=(int)[ 240, 4096 ], pixel-aspect-ratio=(fraction)1/1;
1051
+ video/x-bayer, format=(string)gbrg, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 320, 2800 ], height=(int)[ 240, 4096 ], pixel-aspect-ratio=(fraction)1/1;
1052
+ video/x-bayer, format=(string)grbg, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 320, 2800 ], height=(int)[ 240, 4096 ], pixel-aspect-ratio=(fraction)1/1;
1053
+ video/x-bayer, format=(string)bggr, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 320, 2800 ], height=(int)[ 240, 4096 ], pixel-aspect-ratio=(fraction)1/1;
1054
+ video/x-bayer, format=(string)rggb, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 320, 2800 ], height=(int)[ 240, 4096 ], pixel-aspect-ratio=(fraction)1/1;
1055
+ video/x-raw, format=(string)GRAY8, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 320, 2800 ], height=(int)[ 240, 4096 ], pixel-aspect-ratio=(fraction)1/1;
1056
+ properties:
1057
+ udev-probed = true
1058
+ device.bus_path = platform-10830000.video
1059
+ sysfs.path = /sys/devices/platform/soc/10830000.video/video4linux/video0
1060
+ device.subsystem = video4linux
1061
+ device.product.name = RZG2L_CRU
1062
+ device.capabilities = :capture:
1063
+ device.api = v4l2
1064
+ device.path = /dev/video0
1065
+ v4l2.device.driver = rzg2l_cru
1066
+ v4l2.device.card = RZG2L_CRU
1067
+ v4l2.device.bus_info = platform:10830000.video
1068
+ v4l2.device.version = 267173 (0x000413a5)
1069
+ v4l2.device.capabilities = 2233466881 (0x85200001)
1070
+ v4l2.device.device_caps = 85983233 (0x05200001)
1071
+ gst-launch-1.0 v4l2src ! ...
1072
+ `;
1073
+ const devices = await testGetDevices(gstOutput, undefined);
1074
+ assert_1.default.equal(devices.length, 1);
1075
+ assert_1.default.equal(devices[0].id, '/dev/video0');
1076
+ assert_1.default.equal(devices[0].name, 'RZG2L_CRU');
1077
+ assert_1.default.equal(JSON.stringify(devices[0].caps), JSON.stringify([
1078
+ {
1079
+ type: "video/x-raw",
1080
+ width: 640,
1081
+ height: 480,
1082
+ framerate: 0
1083
+ }
1084
+ ]));
1085
+ });
1086
+ });
1087
+ });
1088
+ async function testGetDevices(gstOutput, gstLaunchNvargusCameraSrcOutput) {
1089
+ const spawnHelper = async (command, args, opts = { ignoreErrors: false }) => {
1090
+ if (command === 'which') {
1091
+ return '';
1092
+ }
1093
+ else if (command === 'gst-device-monitor-1.0') {
1094
+ return gstOutput;
1095
+ }
1096
+ else if (command === 'gst-inspect-1.0') {
1097
+ return 'nvarguscamerasrc'; // nvidia probing
1098
+ }
1099
+ else if (command === 'gst-launch-1.0' && args[0] === 'nvarguscamerasrc') {
1100
+ return gstLaunchNvargusCameraSrcOutput || '';
1101
+ }
1102
+ else {
1103
+ throw new Error('spawnHelper failed on ' + command + ' ' + args.join(' '));
1104
+ }
1105
+ };
1106
+ const gstreamer = new gstreamer_1.GStreamer(false, spawnHelper);
1107
+ await gstreamer.init();
1108
+ const devices = await gstreamer.getAllDevices();
1109
+ return devices;
1110
+ }
1111
+ //# sourceMappingURL=gstreamer.test.js.map