Hey I applied your hack to a 5s. Great job!
Thanks!
Is there any way to lock the frame-rate so it doesn't decrease in low light? - In my instance, I will be shooting outdoors, at night, with a decent amount of artificial light but I can't take any chances on the frame-rate dropping as low as 15fps. I'd rather have an underexposed shot than a shot at 15fps.
Unfortunately, it doesn't seem to be a way to force the camera NOT to lower the framerate to gather as much light as possible.
I've tested this with the following third-party app (source code):
https://dl.dropboxusercontent.com/u/81986513/032014/VideoZoomerWithEISSwitch-forcedminframerate.zip
This app is a slight modification of my app at
https://forums.macrumors.com/threads/1650890/ . It, instead of setting a video mode (
AVCaptureDevice.activeFormat), has the following assignments in
startVideoRecording():
videoDevice.activeVideoMinFrameDuration = CMTimeMake(1,30);
videoDevice.automaticallyEnablesLowLightBoostWhenAvailable = YES;
The first assignment would force the system to raise the minimal framerate to 30 fps; the second, which only works on the 5/5c, enables high ISO (that is, ISO values over 800). I've configured the default mode to be VGA via my separate bitrate setter & default mode switcher tweak at
https://forums.macrumors.com/showthread.php?p=18811094 ; this is why the source code above doesn't directly set the video mode (the above-mentioned
activeFormat) to shoot in, but uses the system default, which, when using my tweak, can be switched to anything. In this case, I've used VGA recording so that the hardware of the iPhone 5 can keep up (unlike with my 1664*1224 tweaked, oversampled mode).
Unfortunately, neither of them works on any iDevices when shooting video in low-light. If you do force the system to shoot with the min. framerate of 30 fps in a third-party app like mine, it won't do it - it'll reduce the framerate. (With VGA recording, to around 20 fps.) And, if it's at all supported on the given platform (again, it's not supported on the 5s, only on the 5 and the 5c), enabling high ISO doesn't have any effect on low-light
video shooting at all - only when you shoot
stills.
All in all, there doesn't seem to be any way of doing what you ask for. It's prolly the best to get, say, the new
Sony RX10 because, thanks to its full sensor oversampling, it produces way better-resolution and brighter, less noisy image in low light than most other cameras out there - and also has some excellent optical image stabilizer. At least, now that the RX10 is out, I'll get it to, finally, have excellent low-light performance and resolution in a "standard" digital camera.