[mediacapture-image] Revisit ExposureMode and FillLightMode data types to better reflect mobile platforms

miguelao has just created a new issue for 
https://github.com/w3c/mediacapture-image:

== Revisit ExposureMode and FillLightMode data types to better reflect
 mobile platforms ==
Current 
[ExposureMode](https://w3c.github.io/mediacapture-image/#ExposureMode)s
 are typical for DSLR cameras (see e.g. [this 
article](http://www.digital-photo-secrets.com/tip/2879/which-is-best-spot-center-weight-or-matrix-metering/)):
``` 
enum ExposureMode {
    "frame-average",
    "center-weighted",
    "spot-metering"
};
```
whereas [Fill Light 
Mode](https://w3c.github.io/mediacapture-image/#FillLightMode)s are:
```
enum FillLightMode {
    "unavailable",
    "auto",
    "off",
    "flash",
    "on"
};
```

These don't correlate strongly for mobile platforms, e.g:

- Android Camera2's [AE 
modes](https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html#CONTROL_AE_MODE)
 and  [flash 
modes](https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html#FLASH_MODE):

``` 
CONTROL_AE_MODE_OFF
CONTROL_AE_MODE_ON
CONTROL_AE_MODE_ON_AUTO_FLASH
CONTROL_AE_MODE_ON_ALWAYS_FLASH
CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE
```
```
FLASH_MODE_OFF
FLASH_MODE_SINGLE
FLASH_MODE_TORCH
```

- Mac AVFoundation's [exposure 
mode](https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVCaptureDevice_Class/#//apple_ref/c/tdef/AVCaptureDevicePosition).
 [flash mode] 
(https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVCaptureDevice_Class/#//apple_ref/c/tdef/AVCaptureFlashMode)
 and [torch 
mode](https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVCaptureDevice_Class/#//apple_ref/c/tdef/AVCaptureTorchMode):

``` 
typedef enum : NSInteger {
   AVCaptureExposureModeLocked                    = 0,
   AVCaptureExposureModeAutoExpose                = 1,
   AVCaptureExposureModeContinuousAutoExposure    = 2,
   AVCaptureExposureModeCustom                    = 3,
} AVCaptureExposureMode;
```
```
typedef enum : NSInteger {
   AVCaptureFlashModeOff    = 0,
   AVCaptureFlashModeOn     = 1,
   AVCaptureFlashModeAuto   = 2
} AVCaptureFlashMode;
```

```
typedef enum : NSInteger {
   AVCaptureTorchModeOff    = 0,
   AVCaptureTorchModeOn     = 1,
   AVCaptureTorchModeAuto   = 2
} AVCaptureTorchMode;
```

So I propose:
- introducing a tristate `{"off", "auto", "on"}` for two new fields of
 `ExposureMode` and `FillLightMode`: `Flash` and `Torch`,
- replacing `ExposureMode` with a data type similar to 
[FocusMode](https://w3c.github.io/mediacapture-image/#FocusMode), 
namely: ```enum { "unavailable", "manual", "single-shot", 
"continuous"};``` in both  `PhotoCapabilities` and `PhotoSettings`

WDYT?

Please view or discuss this issue at 
https://github.com/w3c/mediacapture-image/issues/49 using your GitHub 
account

Received on Tuesday, 23 August 2016 02:11:52 UTC