# Options

The following table shows all options available to set and get by `camera.setOptions` and `camera.getOptions`. An option cannot be changed when its corresponding support is empty or contains only one option.

> [!NOTE]
> **Note:** The camera is responsible for updating the currently supported options whenever needed. For example, when isoSupport is empty (auto mode), clients cannot setOptions for iso. This can happen when exposureProgram is set to Shutter Priority. Clients *can not* set support options.

| Name | Type | Description | Read/Write |
|---|---|---|---|
| `captureMode` | String | Current capture mode. Default to `image.` | rw |
| `captureModeSupport` | String Array | List of capture modes currently available. Minimum requirement for API level 1 is `["image"]`, and minimum requirement for API level 2 is `["image", "interval"]`, where `"interval"` represents the mode of capturing a series of images spaced at a certain interval, please see also `captureInterval` and `captureIntervalSupport`. Two additional modes `("video" and "walkaround")`are supported by API level 2, so the complete supported set by API level 2 is `["image", "interval", "video", "walkaround"]`, where `"video"` represents the video capture mode and `"walkaround"` represents the mode of capturing two images in sequence, the first with the users standing anywhere relative to the camera and the second with the users standing on the opposite side (relative to the first standing point) of the camera. This allows the camera to remove the users from the final image by combining the two images. When `"walkaround"` is supported by the camera and set to be the current capture mode, the client should expect to send two takePicture commands to the camera, where the response of the first command (when it finishes) indicates the camera is ready to take the second image while the second command should return the final image when it finishes. To add more capture modes not supported yet, please prefix vendor-specific modes with an underscore ( _ ). **This option was modified in API level 2.** | r |
| `captureStatus` | String | Current capture status. Default to `"idle"`. This is useful to determine the camera's status when it is first connected to an app. If the camera is in the middle of shooting a video, it may need to be stopped before commanded to do other things, e.g. another video shooting. **This option was added in API level 2.1.** | rw |
| `captureStatusSupport` | String Array | List of capture statuses currently available; By default, it should be `["idle", "shooting"]` if video shooting is supported. Other statues can be provided too, e.g. `"downloading"`. **This option was added in API level 2.1.** | r |
| `exposureProgram` | Number | Current exposure program. | rw |
| `exposureProgramSupport` | Number Array | List of exposure programs currently available; for example, `[0, 1, 2, 3, 4]`. Each integer represents a different exposure program: - 0 = Not defined - 1 = Manual - 2 = Normal program - 3 = Aperture priority - 4 = Shutter priority Select the following link to download further details about `http://www.exiv2.org/Exif2-2.PDF`. **Note:** Use 9 for "ISO priority" if needed. | r |
| `iso` | Number | Current ISO speed setting. | rw |
| `isoSupport` | Number Array | **API level 1:** List of ISO settings currently available; for example, `[100, 200, 400, 800,1600]` or `[]` when it is in `auto` mode. **API level 2:** List of ISO settings currently available; for example, `[0, 100, 200, 400, 800, 1600]`, where `0` represents `auto` mode. **This option was modified in API level 2.** | r |
| `shutterSpeed` | Number | Current shutter speed setting. | rw |
| `shutterSpeedSupport` | Number Array | **API level 1:** List of shutter speeds currently available; for example, `[0.067, 0.033, 0.017,0.008]` or `[]` when it is in `auto` mode. **API level 2:** List of shutter speeds currently available; for example, `[0, 0.067, 0.033, 0.017, 0.008]`, where `0` represents `auto` mode. **This option was modified in API level 2.** | r |
| `aperture` | Number | Current aperture setting, in f-stops. | rw |
| `apertureSupport` | Number Array | **API level 1:** List of aperture settings currently available, expressed in `f/number`; for example, `[1.4, 2, 2.8, 4, 5.6, 8, 11]` or `[]` when it is `auto` mode. **API level 2:** List of aperture settings currently available, expressed in `f/number`; for example, `[0, 1.4, 2, 2.8, 4, 5.6, 8, 11]`, where `0` represents `auto` mode. | r |
| `whiteBalance` | String | Current white balance setting; for example, `daylight`. Default to `auto`. | rw |
| `whiteBalanceSupport` | String Array | List of white balance settings currently available, can be a subset of the predefined list:`[ "auto", "incandescent", "fluorescent", "daylight", "cloudy-daylight", "shade", "twilight"]`. Values for each: - `incandescent`, around 3200K - `fluorescent`, around 4000K - `datalight`, around 5200K - `cloudy-daylight`, around 6000K - `shade`, around 7000K - `twilight`, around 12000K Prefix vendor-specific setting names with an underscore; for example: `_vendor-setting` | r |
| `exposureCompensation` | Number | Current exposure compensation. | rw |
| `exposureCompensationSupport` | Number Array | List of of exposure compensations currently available, usually in step 0.33 or 0.5; for example: `[-1, -0.67, -0.33, 0, 0.33, 0.67, 1]` | r |
| `fileFormat` | Object | Current file type and resolution. The format should reflect the current value of `captureMode`. For example, if `captureMode` is `image`, an appropriate response could be: ``` { "type": "jpeg", "width": 2000, "height": 1000 } ``` If `captureMode` is `video`, an appropriate response could be: ``` { "type": "mp4", "width": 1920, "height": 1080, "framerate": 30 } ``` **This option was modified in API level 2.** | rw |
| `fileFormatSupport` | Object Array | List of the file formats currently available; for example: ``` [ { "type": "jpeg", "width": 2000, "height": 1000 }, { "type": "jpeg", "width": 200, "height": 100 }, { "type": "mp4", "width": 1920, "height": 1080, "framerate": 24 }, { "type": "mp4", "width": 1280, "height": 720, "framerate": 30 }, ... ] ``` Select the following link for more information about [all types](http://www.feedforall.com/mime-types.htm). **This option was modified in API level 2.** | r |
| `exposureDelay` | Number | Current delay between the `takePicture` command and when the exposure is started, in seconds. | rw |
| `exposureDelaySupport` | Number Array | List of exposure delays currently available, in seconds; for example: `[0, 1, 2, 5, 10, 30, 60]` | r |
| `sleepDelay` | Number | Current delay before the camera goes to sleep, in seconds. | rw |
| `sleepDelaySupport` | Number Array | List of the sleep delays currently available, in seconds; for example, `[30, 60, 120, 300, 600, 1800, 65535]`, where `65535` *disables* sleep mode (the camera doesn't sleep until powered off) and must be supported. | r |
| `offDelay` | Number | Current delay in seconds before the camera powers off. | rw |
| `offDelaySupport` | Number Array | List of power off delays currently available, in seconds; for example, `[1800, 3600, 7200, 65535]`, where `65535` *disables* power off mode (the camera doesn't power off until the battery is depleted or powered off manually) and must be supported. | r |
| `totalSpace` | Number | Read-only: Number of bytes of total storage. | r |
| `remainingSpace` | Number | Read-only: Number of bytes of free storage. | r |
| `remainingPictures` | Number | Read-only: Estimated number of remaining pictures based on current capture setting. | r |
| `gpsInfo` | Object | Current GPS information. Set using `setOptions` using phone's GPS: ``` { "lat": 23.532, "lng": -132.35 } ``` The `lat` and `lng` properties are decimal degrees, with `lat` in the range, `[-90, 90]`, and `lng` in the range, `[-180, 180]`. When provided by a phone, please note that each GPS location is valid only until the next update from the phone. The phone must determine when to update the GPS location; for example, right before each `takePicture` command. `65535` notifies the camera that the current GPS location is invalid and the camera should ignore it and use its own GPS if it exists; for example, `setOptions({"gpsInfo": {"lat": 65535, "lng": 65535}})` means the GPS location is invalid. | rw |
| `dateTimeZone` | String | Current date and time information. Set by `setOptions` using phone's date, time, and time zone. The format is, `YYYY:MM:DD HH:MM:SS+(-)HH:MM`. Time is in 24-hour format, date and time are separated by a blank space, andtime zone is an offset from UTC time; for example, `2014:05:18 01:04:29+8:00` is China Time Zone (UTC+8:00) | rw |
| `hdr` | **API level 1:** Boolean **API level 2:** String | **API level 1:** Enable/disable HDR capture mode. Value is `true` to enable HDR, or `false` to disable it. Default value is `false`. Setting can be `true` only when `hdrSupport` is also `true`. **API level 2:** Current HDR mode of String type. **This option was modified in API level 2.** | rw |
| `hdrSupport` | **API level 1:** Boolean **API level 2:** String Array | **API level 1:** A value of `true` signifies that the camera supports HDR. A `false` setting identifies a camera without HDR. **API level 2:** If you don't support HDR mode, it is `["off"]`; if you supports one HDR mode, it is `["off", "hdr"]`, if multiple HDR modes (different algorithms based) are supported, then it is `["off", "hdr", "hdr1", "hdr2", ...]` **This option was modified in API level 2.** | r |
| `exposureBracket` | Object | Current exposure bracket setting. Available only when `hdrSupport == true` **(API level 1)** or `hdrSupport` contains at least one HDR mode **(API level 2)** . If the camera uses manual exposure bracketing, the object contains two entries: 1. `shots`, an integer containing the number of shots to be taken. 2. `increment`, a number containing an EV increment between shots. For example: ``` { "shots": 3, "increment": 1.33 } ``` If the camera uses auto exposure bracketing, the object contains: ``` { "autoMode": true } ``` **API level 1:** Default to empty `{}` when `hdrSupport == false`. Manufacturers decide default values (for example, auto exposure bracketing), when `hdr` is `true`. **API level 2:** Default to empty {} when `hdrSupport` contains only `"off"`. Otherwise, manufacturers decide default values (for example, auto exposure bracketing). **This option was modified in API level 2.** | rw |
| `exposureBracketSupport` | Object | Exposure bracket settings currently available; for example: ``` { "autoMode": true, "shotsSupport": [1, 3, 5, 7], "incrementSupport": [0.33, 0.67, 1, 1.33, 1.67, 2] } ``` **API level 1:** Default to empty `{}` if `hdrSupport == false`. When `hdrSupport == true`, but auto exposure bracketing is not supported, then `autoMode` will be `false`. **API level 2:** Default to empty `{}` if `hdrSupport` contains only `"off"`. When `hdrSupport` contains any HDR mode, but auto exposure bracketing is not supported, then `autoMode` will be `false`. **This option was modified in API level 2.** | r |
| `gyro` | Boolean | Set to `true` to enable the camera's gyroscope module, or `false` to disable this feature. Default to `true` if the camera supports it, otherwise `false`. This setting can be `true` only when `gyroSupport == true`. | rw |
| `gyroSupport` | Boolean | If the camera has a gyroscope this value should be `true`, otherwise, `false`. | r |
| `gps` | Boolean | Enables/disables the camera GPS module. Value must be `true` to enable, or `false` to disable. Default value is `true` if the camera supports it, otherwise `false`. Setting is `true` only when `gpsSupport == true`. | rw |
| `gpsSupport` | Boolean | This value should be `true` if the camera has its own GPS module, otherwise `false`. | r |
| `imageStabilization` | String | Current image stabilization operation; for example, `off`. | rw |
| `imageStabilizationSupport` | String Array | Image stabilization options currently available. The pre-defined list is, `["off", "on"]`.If the camera doesn't support image stabilization, return `["off"]`, otherwise return `["off", "on"]`. Prefix vendor-specific strings with an underscore ( _ ); for example, `[ "off", "_horizontal_stabilization", "_vibration_correction" ]`. | r |
| `wifiPassword` | String | At least 8 characters long, containing letters, numbers, symbols, but no spaces. It can be changed only when the camera is connected to a client device. Once it is changed, the camera must disconnect so the user must reconnect using the new `wifiPassword`. The camera must provide a reset mechanism in case the password is forgotten; for example, a reset button to restore the factory default password. | w |
| `previewFormat` | Object | Current live preview resolution; for example: ``` { "width": 640, "height": 320, "framerate": 24 } ``` **This option was added in API level 2.** | rw |
| `previewFormatSupport` | Object Array | Currently supported live preview formats; for example: ``` [ { "width": 640, "height": 320, "framerate": 24 }, ... { "width": 1280, "height": 720, "framerate": 24 } ] ``` **This option was added in API level 2.** | r |
| `captureInterval` | Number | Current interval between capturing two consecutive images, in `seconds`. **This option was added in API level 2.** | rw |
| `captureIntervalSupport` | Object | Minimum and maximum intervals allowed between capturing two consecutive images, in seconds; for example: ``` { "minInterval": 10, "maxInterval": 60 } ``` It might vary depending on `fileFormat`. **This option was added in API level 2.** | r |
| `captureNumber` | Number | Number of images to be captured for one interval capture session. Default to `0`, which means the capture needs to be terminated explicitly by [stopCapture](https://developers.google.com/streetview/open-spherical-camera/reference/camera/stopcapture) command; otherwise, the capture stops automatically after it captures images of the specified number. The capture can also be interrupted when the camera is out of battery or when it is turned off intentionally. **This option was added in API level 2.** | rw |
| `captureNumberSupport` | Object | Minimum and maximum number of images that can be captured during an interval capture; for example: ``` { "minNumber": 2, "maxNumber": 50 } ``` It might change depending on remaining storage. **This option was added in API level 2.** | r |
| `remainingVideoSeconds` | Number | Estimated number of `seconds` for remaining video based on current capture setting. **This option was added in API level 2.** | r |
| `pollingDelay` | Number | Minimum interval in seconds between two consecutive status polling requests. Clients should use this field to guide their status polling behavior; for example, when it is stitching an image, clients might need to poll the camera periodically to see if it finishes stitching. Different cameras have different support; for example, some cameras can handle status polling every one second while others support longer interval. **This option was added in API level 2.** | r |
| `delayProcessing` | Boolean | `True` when processing (e.g. stitching) has a lower priority than capturing, or in other words, another capture is allowed before the processing of the previous captured image is finished. This is highly recommended, especially for cameras that require long processing time. **This option was added in API level 2.** | rw |
| `delayProcessingSupport` | Boolean Array | `[true]` means processing (e.g. stitching) has a lower priority than capturing, and is always delayed by default. `[false]` means processing happens right after capturing. `[true, false]` means there is a choice between these two modes. **This option was added in API level 2.** | r |
| `clientVersion` | Number | The API level the client decides to use. Default to 1 if the camera supports both API level 1 and 2 so that clients written for API level 1 still works with the camera without any change; default to 2 if the camera only supports API level 2, which is not recommended before clients migrate to API level 2. If the camera only supports API level 2, the request trying to set it to 1 should fail. If `clientVersion` is set to 2 successfullly and a deprecated command from API level 1 is requested, the request should fail with error code [unknownCommand](https://developers.google.com/streetview/open-spherical-camera/guides/osc/commands/execute#error). **This option was added in API level 2.** | rw |
| `photoStitchingSupport` | String Array | List of stitching options for photos. Return `[ondevice]` if photos are always stitched on the camera, `[none]` if the camera cannot stitch photos, and `[none,ondevice]` if stitching is user configurable. Prefix vendor-specific setting names with an underscore, e.g. `_vendor-setting`. **This option was added in API level 2.1.** | r |
| `photoStitching` | String | Current stitching option for photos, e.g. `ondevice`. Default to `ondevice` if it is supported. **This option was added in API level 2.1.** | rw |
| `videoStitchingSupport` | String Array | List of stitching options for videos. Return `[ondevice]` if videos are always stitched on the camera, `[none]` if the camera cannot stitch videos, and `[none,ondevice]` if stitching is user configurable. Prefix vendor-specific setting names with an underscore, e.g. `_vendor-setting`. **This option was added in API level 2.1.** | r |
| `videoStitching` | String | Current stitching option for videos, e.g. `ondevice`. Default to `ondevice` if it is supported. **This option was added in API level 2.1.** | rw |
| `videoGPSSupport` | String Array | List of GPS options during video capture. Return `[continuous]` if the camera can continuously capture GPS during video capture and embed the locations in the video. Return `[none]` if it cannot and `[none,continuous]` if video GPS support is user configurable. Prefix vendor-specific setting names with an underscore, e.g. `_vendor-setting`. **This option was added in API level 2.1.** | r |
| `videoGPS` | String | Current option for GPS support during video capture, e.g. `continuous`. Default to `continuous` if it is supported. **This option was added in API level 2.1.** | rw |
| `_vendorSpecific` | \[type\] (optional) | Vendor-specific additional camera options. Prefix vendor-specific strings with an underscore ( _ ). |