Nope. I've played quite a bit with my 4S to find out whether, now that it's also jailbroken under iOS7, 60p recording can be enabled on it. To make a long story short: it doesn't seem to be possible.
First, something you already knew: officially, 60p isn't listed as supported in AVCaptureDevice.formats (more info & background:
https://forums.macrumors.com/threads/1602171/ ). This is the full list of supported video modes (as with all the other iDevice models, the last four entries aren't usable):
51 'vide'/'420v' 192x 144, { 1- 30 fps}, fov: 54.910, binned, max zoom: 1.00 (upscales @1.00)
55 'vide'/'420f' 192x 144, { 1- 30 fps}, fov: 54.910, binned, max zoom: 1.00 (upscales @1.00)
57 'vide'/'420v' 352x 288, { 1- 30 fps}, fov: 50.334, binned, max zoom: 1.00 (upscales @1.00)
59 'vide'/'420f' 352x 288, { 1- 30 fps}, fov: 50.334, binned, max zoom: 1.00 (upscales @1.00)
61 'vide'/'420v' 480x 360, { 1- 30 fps}, fov: 54.910, binned, max zoom: 1.00 (upscales @1.00)
63 'vide'/'420f' 480x 360, { 1- 30 fps}, fov: 54.910, binned, max zoom: 1.00 (upscales @1.00)
65 'vide'/'420v' 640x 480, { 1- 30 fps}, fov: 54.910, binned, max zoom: 1.00 (upscales @1.00)
69 'vide'/'420f' 640x 480, { 1- 30 fps}, fov: 54.910, binned, max zoom: 1.00 (upscales @1.00)
71 'vide'/'420v' 960x 540, { 1- 30 fps}, fov: 48.260, supports vis, max zoom: 1.00 (upscales @1.00)
73 'vide'/'420f' 960x 540, { 1- 30 fps}, fov: 48.260, supports vis, max zoom: 1.00 (upscales @1.00)
76 'vide'/'420v' 1280x 720, { 1- 30 fps}, fov: 48.260, supports vis, max zoom: 1.00 (upscales @1.00)
79 'vide'/'420f' 1280x 720, { 1- 30 fps}, fov: 48.260, supports vis, max zoom: 1.00 (upscales @1.00)
86 'vide'/'420v' 1920x 1080, { 1- 30 fps}, fov: 48.260, supports vis, max zoom: 1.00 (upscales @1.00)
88 'vide'/'420f' 1920x 1080, { 1- 30 fps}, fov: 48.260, supports vis, max zoom: 1.00 (upscales @1.00)
90 'vide'/'420v' 2592x 1936, { 1- 20 fps}, fov: 54.910, max zoom: 153.00 (upscales @1.26)
92 'vide'/'420f' 2592x 1936, { 1- 20 fps}, fov: 54.910, max zoom: 153.00 (upscales @1.26)
96 'vide'/'420v' 3264x 2448, { 1- 20 fps}, fov: 54.910, max zoom: 153.00 (upscales @1.00)
98 'vide'/'420f' 3264x 2448, { 1- 20 fps}, fov: 54.910, max zoom: 153.00 (upscales @1.00)
If you recall (see my above-linked article), the, under iOS7, 720p60-capable iPhone5 had the following two additional records:
'vide'/'420v' 1280x 720, { 1- 60 fps}, fov:51.940, binned, supports vis, max zoom:51.75 (upscales @1.05)
'vide'/'420f' 1280x 720, { 1- 60 fps}, fov:51.940, binned, supports vis, max zoom:51.75 (upscales @1.05)
All in all, without hacking, it's not possible to access any kind of a 60p mode on the 4S.
What about Jailbreaking and Hacking, Then?
I've very thoroughly tried to hack
/System/Library/Frameworks/MediaToolbox.framework/N94/AVCaptureSession.plist. I've tried changing the following (note: below, I've also linked to the edited plist files; feel free to overwrite the original with them. As usual, make sure you kill and restart the stock Camera app to see the changes):
1.
Common parameters applicable to
all video modes:
AVCaptureSessionPresetCommon > LiveSourceOptions > TemporalNoiseReductionMode to 0 from 1 (to speed up particularly low-light performance)
AVCaptureSessionPresetCommon > LiveSourceOptions > MaxFrameRate to 60 (from the default 30) - file:
https://dl.dropboxusercontent.com/u/81986513/012014/20 4s 60p tests/1-AVCaptureSession.plist
AVCaptureSessionPresetCommon > LiveSourceOptions > MinFrameRate to both 55 and 60 (from the default 24) - file:
https://dl.dropboxusercontent.com/u/81986513/012014/20 4s 60p tests/2-AVCaptureSession.plist
Having no success with any of these, I've also redirected
AVCaptureSessionPresetHigh from
AVCaptureSessionPreset1920x1080 to
AVCaptureSessionPreset1280x720. After all, it's at 720p only that the 4S used to be able to record at 60p, not at Full HD. File:
https://dl.dropboxusercontent.com/u/81986513/012014/20 4s 60p tests/3-AVCaptureSession.plist
This didn't help either the above-changed common parameters didn't have any effect on the framerate, which was still a steady 29,97 fps.
I've also tried manually enabling binned mode after all, the higher-framerate modes on all supported iDevices also implicitly use binned mode, essentially halving the resolution in both dimensions, that is, resulting in an effective sensor resolution of 360*640 pixels. No dice. (Interestingly, the recorded footage was of VGA resolution and not 720p - unlike in iOS versions prior to iOS7, where enabling binning didn't result in the resolution change of the encoded footage.) File:
https://dl.dropboxusercontent.com/u/81986513/012014/20 4s 60p tests/4-AVCaptureSession.plist
After this, I've tried adding a local
MinFrameRate/ MaxFrameRate pair under
AVCaptureSessionPreset1280x720 > LiveSourceOptions (with the values 55/60 and, then, 60/60) after all,
AVCaptureSessionPresetiFrame1280x720 also has them (valued 30/30) to override the common 24/30 value in the 40 Mbps iframe mode. This didn't help either. Files:
- non-binned 55-minimal:
https://dl.dropboxusercontent.com/u/81986513/012014/20 4s 60p tests/5-AVCaptureSession.plist
- binned 55-minimal:
https://dl.dropboxusercontent.com/u/81986513/012014/20 4s 60p tests/6-AVCaptureSession.plist
- binned 60-minimal:
https://dl.dropboxusercontent.com/u/81986513/012014/20 4s 60p tests/7-AVCaptureSession.plist