1The JSON files in this directory can be overridden by vendors using Runtime 2Resource Overlays. These serve as an optional mechanism for vendors to modify 3DeviceAsWebcam behavior if needed. 4 5The details of the overridable files are as follows: 6 7- `physical_camera_mapping.json`: 8 9 This file contains a mapping of the preferred physical streams that are to be 10 used by DeviceAsWebcam service instead of logical streams, in order to save 11 power during webcam streaming. This mapping is optional. It must be overridden 12 through a static resource overlay by vendors if needed. The format of the 13 mapping is : 14 15 ```json 16 { 17 "<logical-camera-id-1>" : { 18 "<physical-camera-id-1>" : "<camera-label-1>", 19 "<physical-camera-id-2>" : "<camera-label-2>", 20 ... 21 }, 22 "<logical-camera-id-2>" : { 23 "<physical-camera-id-3>" : "<camera-label-3>", 24 "<physical-camera-id-4>" : "<camera-label-4>", 25 ... 26 }, 27 ... 28 } 29 ``` 30 31 The 'camera-label' field here helps DeviceAsWebcam label these physical camera 32 ids in the UI elements of the service. The mapping containing physical camera 33 ids is in order of preference of the physical streams that must be used by 34 DeviceAsWebcam service. Available camera-labels are: 35 36 - `UW`: Ultra-wide 37 - `W`: Wide 38 - `T`: Telephoto 39 - `S`: Standard 40 - `O`: Other 41 42 For example, if a vendor would like to advertise 2 possible physical streams 43 with camera ids 3(Ultra-wide) and 4(Wide) for the back logical camera the 44 mapping could be: 45 ```json 46 { 47 "0" : { 48 "3" : "UW", 49 "4" : "W" 50 } 51 } 52 ``` 53 54- `physical_camera_zoom_ratio_ranges.json`: 55 56 This file contains the mapping of physical cameras to their zoom ratio ranges. 57 When provided, DeviceAsWebcam will use this zoom ratio range instead of that 58 retrieved from camera characteristics. This is useful when the zoom ratio of the 59 physical camera listed in `physical_camera_mapping.json` is different from the 60 logical camera it belongs to. Providing this mapping is optional, and only used 61 if `physical_camera_mapping,json` contains a corresponding entry. The format of 62 the mapping is: 63 64 ```json 65 { 66 "<logical-camera-id-1>" : { 67 "<physical-camera-id-1>" : ["<zoom-ratio-range-lower-1>", "<zoom-ratio-range-upper-1>"], 68 "<physical-camera-id-2>" : ["<zoom-ratio-range-lower-2>", "<zoom-ratio-range-upper-2>"], 69 ... 70 }, 71 "<logical-camera-id-2>" : { 72 "<physical-camera-id-3>" : ["<zoom-ratio-range-lower-3>", "<zoom-ratio-range-upper-3>"], 73 "<physical-camera-id-4>" : ["<zoom-ratio-range-lower-4>", "<zoom-ratio-range-upper-4>"], 74 ... 75 }, 76 ... 77 } 78 ``` 79 80 For example, if a vendor would like to custom 2 possible physical streams' 81 supported zoom ratio ranges with camera ids 3 and 4 for the back logical 82 camera the mapping could be: 83 ```json 84 { 85 "0" : { 86 "3" : ["1.0", "5.0"], 87 "4" : ["1.0", "8.0"] 88 } 89 } 90 ``` 91 92- `ignored_cameras.json`: 93 94 By default, DeviceAsWebcam exposes all backward compatible cameras listed in 95 `CameraManager#getCameraIdList()` as supported cameras to stream webcam frames 96 from. `ignored_cameras.json` provides a way to ignore a predetermined set of 97 cameras if they are not expected to be used with DeviceAsWebcam. 98 99 For example, if a vendor would like to ignore camera ids 22 and 66, the ignored 100 cameras array could be: 101 102 ```json 103 [ 104 "22", 105 "66", 106 ... 107 ] 108 ``` 109 110- `ignored_v4l2_nodes.json`: 111 112 Linux UVC gadget driver mounts a V4L2 node that DeviceAsWebcam service 113 interacts with. To determine this node, DeviceAsWebcam service looks through 114 all `/dev/video*` nodes, looking for the first V4L2 node that advertises 115 `V4L2_CAP_VIDEO_OUTPUT` capability. 116 117 This will run into issues if a device has other V4L2 nodes mounted at 118 `/dev/video*` with `V4L2_CAP_VIDEO_OUTPUT` capability advertised for other 119 processing purposes. 120 121 `ignored_v4l2_nodes.json` provides a way for DeviceAsWebcam service to 122 ignore a predetermined set of V4L2 nodes. 123 124 The file format is as follows: 125 126 ```json 127 [ 128 "/dev/video10", 129 "/dev/video12", 130 ... 131 ] 132 ``` 133 134 **Note:** 135 - `ignored_v4l2_nodes.json` is pulled in via `libDeviceAsWebcam`. 136 - Wildcard patterns are _not_ supported in `ignored_v4l2_nodes.json`. 137