3
\$\begingroup\$

Many third-party applications on iOS (or Android) enable us to manually set the shutter speed, but they often only provide a limited set of shutter speed. For example, a common-used list of predefined shutter speed values is [1/2, 1/4, 1/8, 1/12, 1/16, ...].

However, I notice that the iOS API actually provides a function that takes a continuous exposure duration as input. (ref. iOS AVCaptureDevice)

setExposureModeCustomWithDuration(_ duration: CMTime, iso ISO: Float, completionHandler handler: ((CMTime) -> Void)!)

Parameters

duration: The exposure duration.

A value of AVCaptureExposureDurationCurrent can be used to indicate that the caller does not wish to specify a value for exposureDuration. Note that changes to this property may result in changes to activeVideoMinFrameDuration and/or activeVideoMaxFrameDuration.

Similar function can also be found on the Android. (ref. SENSOR_EXPOSURE_TIME)

Key< long > SENSOR_EXPOSURE_TIME

Duration each pixel is exposed to light.

If the sensor can't expose this exact duration, it will shorten the duration exposed to the nearest possible value (rather than expose longer). The final exposure time used will be available in the output capture result.

This control is only effective if android.control.aeMode or android.control.mode is set to OFF; otherwise the auto-exposure algorithm will override this value.

Units: Nanoseconds

Range of valid values: android.sensor.info.exposureTimeRange

Now, my question is why most camera apps use a limited set of shutter speed values instead of a continuous value.

Is it a conversion of photography? or due to some other factors, e.g., the support of underlying CMOS sensor?

\$\endgroup\$
3
  • \$\begingroup\$ Voting to close because this question is not about photo. \$\endgroup\$
    – Zenit
    Commented Dec 6, 2016 at 8:51
  • 2
    \$\begingroup\$ @Alex.S It is about photography. It might also fit in the ux SE, but, I think it fits photography much better \$\endgroup\$
    – 10 Replies
    Commented Dec 7, 2016 at 2:19
  • 1
    \$\begingroup\$ Which question are you asking here? The title - "What is the granularity of speed shutter on iPhone (or other mobile phone)?" or the Q posed in bold - "Why most camera apps use a limited set of shutter speed values instead of a continuous value."? \$\endgroup\$
    – dpollitt
    Commented Dec 7, 2016 at 2:32

2 Answers 2

3
\$\begingroup\$

Now, my question is why most camera apps use a limited set of shutter speed values instead of a continuous value.

Using discrete values rather than a continuous range makes it easier for photographers to select the right value, predict the result, and reproduce any given setting. The usual range of speeds provides enough granularity to achieve any exposure level the photographer is likely to want, so there's little benefit to being able to choose an arbitrary value along a continuous scale. The scale is (approximately) exponential, with the difference between any two full stops being a factor of 2, and that corresponds to the scales for aperture, sensitivity (ISO), and flash power, so it's easy to understand how to compensate for a change in one of the parameters. Read up on the exposure triangle if you're unfamiliar with that concept.

or due to some other factors, e.g., the support of underlying CMOS sensor?

The range of shutter speeds in use today is about the same as what you'll find on a camera that dates back 75 years or more.

I notice that the iOS API provides a function that takes a continuous exposure duration as input.

Tiny cameras like the ones in iPhones have fixed apertures, so the only parameters available for controlling exposure are shutter speed, ISO, and the LED "flash". Also, the exposure parameters are mostly controlled by the computer rather than by the photographer, so there's no reason to use a set of discrete values. That's a very different situation from what you have with a dedicated camera that's meant to be controlled by the photographer.

\$\endgroup\$
1
\$\begingroup\$

AVCaptureExposureDurationCurrent

This value indicates that the caller does not wish to specify a value for the exposureDuration property, and that it should instead be set to its current value.

Nowhere dos it say "continuous". That value just means that you don't care about the set duration.

Any camera must set some value for exposure duration, the question is just whether you set it, or let the camera's automatic decide.

Granularity-wise, the duration is a CMTime, an int64/int32, so, pretty fine.
I don't know the actual hardware limitations, and i suspect Apple won't tell. (probably depends on model anyway)

Edit for changed question:

Cameras expose a limited set of exposure speeds through their use interfaces because anything else would be unwieldy for the user. Usually, you can change exposure and aperture (and ISO) in half or third stops, often with a scroll wheel. One click on one parameter corresppnds to one click in the other direction for the other.

Also, the hardware has of course a limited precision anyway, and a third of a stop is hardly noticeable, so a finer option isn't useful.

But if you let the camera's automatic set exposure, it actually may choose values you can't set manually.

\$\endgroup\$
2
  • \$\begingroup\$ The API indicates that if we do not want to set the exposureDuration, then we can simply use the AVCaptureExposureDurationCurrent as input. But if we want to change this value, a continuous CMTime value can be set. \$\endgroup\$
    – Jason Yang
    Commented Dec 7, 2016 at 2:21
  • \$\begingroup\$ Why would a continous shutter speed dial be unvieldly? I see a bunch of new manual lenses reviewed that have clickless aparture rings, would the situation for shutterspeed not be similar? \$\endgroup\$
    – lijat
    Commented Jul 2, 2018 at 4:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.