Developer Reference - dariuswak/Aqua-Cam GitHub Wiki
- Investigate deferred photo delivery - currently disabled, problems with missing location in the eventual photo (proxy is fine).
- "If you normally make changes to a photo's pixel buffer like applying a filter, or if you make changes to metadata or other properties of AVCapturePhoto using AVCapturePhoto File Data Representation Customizer, these won't take effect for the finalized photo in the library once processing is complete. You'll need to do this later as adjustments to the photo using the PhotoKit APIs."
https://developer.apple.com/videos/play/wwdc2023/10105/?time=845
- "If you normally make changes to a photo's pixel buffer like applying a filter, or if you make changes to metadata or other properties of AVCapturePhoto using AVCapturePhoto File Data Representation Customizer, these won't take effect for the finalized photo in the library once processing is complete. You'll need to do this later as adjustments to the photo using the PhotoKit APIs."
- Settings: add option to switch off capturing Live Photos
The recommended git workflow uses dev-<username>
and release-<username>
branches beside main
, mainly due to DEVELOPMENT_TEAM
ID must be different for every developer. If this workflow proves too difficult, we can improve it, e.g. by setting DEVELOPMENT_TEAM
as an environment variable, etc.
See also: Binary Distributions#Distribution Guide
This branch purpose is to perform releases only.
- This branch should have set
DEVELOPMENT_TEAM
ID just after it has been created (one-off change). - To release,
main
branch should be merged into this branch, which will automatically trigger release process in Xcode Cloud.- Check out
release-<username>
, pull and create a PR branch:release-<version>-<username>
from it. - Merge
origin/main
- Re-apply team ID changes:
git cherry-pick 6ab6cb2
Example commit - Test the project content - should show team ID, not
""
:
grep DEVELOPMENT_TEAM "Aqua Cam.xcodeproj/project.pbxproj"
- Push, create PR, merge into
release-<username>
.
- Check out
- Beside that, this branch should never get any changes.
See also: Binary Distributions#Distribution Guide
This branch purpose is to perform all development.
- This branch should have merged
release-<username>
into it, withDEVELOPMENT_TEAM
ID set, just after it has been created (one-off change). That way all development and testing can be conveniently done from this branch (i.e. short-lived PR branches created from and merged into it).- After that, this branch should be merged into
main
ignoringDEVELOPMENT_TEAM
ID changes (i.e.git checkout main; git merge --strategy ours dev-<username>
(one-off change). This waydev-<username>
can be frequently merged intomain
without risk of accidentally settingDEVELOPMENT_TEAM
ID inmain
.
- After that, this branch should be merged into
- This branch should be frequently merged into
main
to share changes with others, and to support releases. - Merging
main
intodev-<username>
. As long as there's mainly single contributor, there should rarely be need to mergemain
intodev-<username>
. Therefore this instruction is currently complicated. To be improved as needed.- Merge
main
intodev-<username>
- Check out
dev-<username>
, pull and create a PR branch:update-with-main
from it. - Merge
origin/main
usingours
strategy on the last "Merge branch 'dev-<username>' ignoring changes" commit, e.g.:
git merge --strategy ours 18b008c3
, append "ignoring changes" to the commit message. - Merge
origin/main
(the remaining) - Test the project content - should show team ID, not
""
:
grep DEVELOPMENT_TEAM "Aqua Cam.xcodeproj/project.pbxproj"
- Push, create PR, merge into
dev-<username>
.
- Check out
- Merge
dev-<username>
back intomain
, preparing it for further development merges- Check out
main
, pull and create a PR branch:update-with-dev-<username>
from it. - Merge
origin/dev-<username>
usingours
strategy on the last "Merge commit '...' into update-with-main ignoring changes" commit, e.g.:
git merge --strategy ours d1a5c33
, append "ignoring changes" to the commit message. - Merge
origin/dev-<username>
(the remaining) - Test the project content - should show empty team ID
""
:
grep DEVELOPMENT_TEAM "Aqua Cam.xcodeproj/project.pbxproj"
- Push, create PR - SHOULD SHOW NO CHANGES - merge into
main
.
- Check out
- Merge
This branch purpose is to accumulate changes from all development teams, and to support releases.
- All changes from all
dev-<username>
branches should be frequently merged intomain
.- Except
DEVELOPMENT_TEAM
ID in the project file - which MUST NEVER BE MERGED INTOmain
!
- Except
- This branch is to be merged into
release-<username>
to perform release.- Just before that, it should have incremented release version. Example PR.
- 4K format - NO DEPTH DATA on photos while recording video
'420f' 1920x1080, { 1- 60 fps}, HRSI:4224x2376, fov:106.748, gdc fov:106.440, supports vis, max zoom:123.75 (upscales @2.00), AF System:2, ISO:24.0-2304.0, SS:0.000015-1.000000, supports HDR, supports wide color, supports multicam, supports high photo quality>
'x420' 1920x1080, { 1- 60 fps}, HRSI:4224x2376, fov:106.748, gdc fov:106.440, supports vis, max zoom:123.75 (upscales @2.00), AF System:2, ISO:24.0-2304.0, SS:0.000015-1.000000, supports wide color, supports multicam>
'420f' 1920x1080, { 1-120 fps}, fov:67.850, gdc fov:67.622, supports vis, max zoom:135.00 (upscales @2.00), AF System:2, ISO:24.0-768.0, SS:0.000015-1.000000, supports wide color>
'420f' 1920x1440, { 1- 60 fps}, HRSI:4032x3024, fov:101.896, supports vis, max zoom:157.50 (upscales @1.91), AF System:2, ISO:24.0-2304.0, SS:0.000015-1.000000, supports HDR, supports wide color, supports multicam, supports high photo quality>
'x420' 1920x1440, { 1- 60 fps}, HRSI:4032x3024, fov:101.896, supports vis, max zoom:157.50 (upscales @1.91), AF System:2, ISO:24.0-2304.0, SS:0.000015-1.000000, supports wide color, supports multicam>
'420f' 3840x2160, { 1- 60 fps}, fov:106.748, gdc fov:106.569, supports vis, max zoom:129.12 (upscales @1.00), AF System:2, ISO:24.0-2304.0, SS:0.000015-1.000000, supports HDR, supports wide color>
'x420' 3840x2160, { 1- 60 fps}, fov:106.748, gdc fov:106.569, supports vis, max zoom:129.12 (upscales @1.00), AF System:2, ISO:24.0-2304.0, SS:0.000015-1.000000, supports wide color>
'420f' 4032x3024, { 1- 30 fps}, HRSI:4032x3024, fov:101.896, max zoom:189.00 (upscales @1.00), AF System:2, ISO:24.0-2304.0, SS:0.000015-1.000000, supports HDR, supports wide color, supports highest photo quality>
x420
is 10-bit HDR. supports HDR
relates to photos. Video HDR seem to be tradeoff over photo quality/HDR.
420f 4032x3024 25595440 30fps
x420 3840x2160 52633428
420f 3840x2160 47848568
x420 1920x1440 17141274
420f 1920x1440 15582977
420f 1920x1080 22498560 120fps
x420 1920x1080 12818995
420f 1920x1080 11653631
resolution fps original doubled
========== ===== ======== =========
1920x1080, { 1- 60 11653631 25000000
1920x1080, { 2-120 22498560 50000000
3840x2160, { 1- 60 50366912 100000000
4032x3024, { 1- 30 25595440 73500000
Camera name: AVCaptureDeviceTypeBuiltInTelephotoCamera
'x420' 1920x1080, { 1- 60 fps}, photo dims:{1920x1080,4224x2376}, fov:17.179, supports vis (max strength:Ultra), max zoom:123.75 (upscales @2.00), system zoom range:1.0-3.0, AF System:2, ISO:34.0-8704.0, SS:0.000015-1.000000, system exposure bias range:-2.0-2.0, supports wide color, supports multicam, supports Smart Style>
'x420' 1920x1440, { 1- 60 fps}, photo dims:{1920x1440,4032x3024}, fov:16.409, supports vis (max strength:Low), max zoom:157.50 (upscales @1.91), system zoom range:1.0-3.0, AF System:2, ISO:34.0-8704.0, SS:0.000015-1.000000, system exposure bias range:-2.0-2.0, supports wide color, supports multicam, supports Smart Style>
'x420' 3840x2160, { 1- 60 fps}, photo dims:{3840x2160}, fov:17.179, supports vis (max strength:Ultra), max zoom:129.12 (upscales @1.00), system zoom range:1.0-3.0, AF System:2, ISO:34.0-8704.0, SS:0.000015-1.000000, system exposure bias range:-2.0-2.0, supports wide color, supports Smart Style>
'420f' 1920x1080, { 1-120 fps}, photo dims:{1920x1080}, fov:17.179, supports vis (max strength:Low), max zoom:123.75 (upscales @2.00), system zoom range:1.0-3.0, AF System:2, ISO:34.0-1088.0, SS:0.000012-1.000000, system exposure bias range:-2.0-2.0, supports wide color>
'420f' 4032x3024, { 1- 30 fps}, photo dims:{4032x3024}, fov:16.409, max zoom:189.00 (upscales @1.00), system zoom range:1.0-5.0, AF System:2, ISO:34.0-4352.0, SS:0.000015-1.000000, system exposure bias range:-2.0-2.0, supports HDR, supports wide color, supports responsive capture, supports zero shutter lag, supports highest photo quality, supports Smart Style>
Camera name: AVCaptureDeviceTypeBuiltInUltraWideCamera
'x420' 1920x1080, { 1- 60 fps}, photo dims:{1920x1080,4224x2376}, fov:106.201, supports vis (max strength:Ultra), max zoom:123.75 (upscales @2.00), secondary:1.78, system zoom range:1.0-3.0, AF System:2, ISO:15.0-3600.0, SS:0.000014-1.000000, system exposure bias range:-2.0-2.0, supports wide color, supports multicam, supports Smart Style>
'x420' 1920x1440, { 1- 60 fps}, photo dims:{1920x1440,4032x3024}, fov:103.625, gdc fov:106.201, supports vis (max strength:Low), max zoom:157.50 (upscales @1.91), secondary:1.78, system zoom range:1.0-3.0, AF System:2, ISO:15.0-3600.0, SS:0.000014-1.000000, system exposure bias range:-2.0-2.0, supports wide color, supports multicam, supports Smart Style>
'x420' 3840x2160, { 1- 60 fps}, photo dims:{3840x2160}, fov:106.201, supports vis (max strength:Ultra), max zoom:129.12 (upscales @1.00), secondary:1.78, system zoom range:1.0-3.0, AF System:2, ISO:15.0-3600.0, SS:0.000014-1.000000, system exposure bias range:-2.0-2.0, supports wide color, supports Smart Style>
'420f' 1920x1080, { 1-120 fps}, photo dims:{1920x1080}, fov:106.201, supports vis (max strength:Low), max zoom:123.75 (upscales @2.00), system zoom range:1.0-3.0, AF System:2, ISO:15.0-1200.0, SS:0.000014-1.000000, system exposure bias range:-2.0-2.0, supports wide color>
'420f' 4032x3024, { 1- 30 fps}, photo dims:{4032x3024,8064x6048}, fov:103.625, gdc fov:106.201, max zoom:189.00 (upscales @1.00), secondary:1.78, system zoom range:1.0-5.0, AF System:2, ISO:15.0-3600.0, SS:0.000014-1.000000, system exposure bias range:-2.0-2.0, supports HDR, supports wide color, supports responsive capture, supports zero shutter lag, supports highest photo quality, supports Smart Style>
Camera name: AVCaptureDeviceTypeBuiltInWideAngleCamera
'x420' 1920x1080, { 1- 60 fps}, photo dims:{1920x1080,4224x2376}, fov:74.597, supports vis (max strength:Ultra), max zoom:123.75 (upscales @2.00), secondary:2.00, system zoom range:1.0-6.0, AF System:2, ISO:54.0-5184.0, SS:0.000014-1.000000, system exposure bias range:-2.0-2.0, supports wide color, supports multicam, supports Smart Style>
'x420' 1920x1440, { 1- 60 fps}, photo dims:{1920x1440,4032x3024}, fov:72.044, supports vis (max strength:Low), max zoom:157.50 (upscales @1.91), secondary:2.00, system zoom range:1.0-6.0, AF System:2, ISO:54.0-5184.0, SS:0.000014-1.000000, system exposure bias range:-2.0-2.0, supports wide color, supports multicam, supports Smart Style>
'x420' 3840x2160, { 1- 60 fps}, photo dims:{3840x2160}, fov:74.597, supports vis (max strength:Ultra), max zoom:129.12 (upscales @1.00), secondary:2.00, system zoom range:1.0-6.0, AF System:2, ISO:54.0-5184.0, SS:0.000014-1.000000, system exposure bias range:-2.0-2.0, supports wide color, supports Smart Style>
'x420' 3840x2160, { 1-120 fps}, photo dims:{3840x2160}, fov:74.597, supports vis (max strength:Medium), max zoom:129.12 (upscales @1.00), secondary:2.00, system zoom range:1.0-6.0, AF System:2, ISO:54.0-3456.0, SS:0.000014-1.000000, system exposure bias range:-2.0-2.0, supports wide color>
'x420' 1920x1080, { 1-120 fps}, photo dims:{1920x1080}, fov:74.597, supports vis (max strength:Medium), max zoom:123.75 (upscales @2.00), secondary:2.00, system zoom range:1.0-6.0, AF System:2, ISO:54.0-3456.0, SS:0.000014-1.000000, system exposure bias range:-2.0-2.0, supports wide color>
'420f' 4032x3024, { 1- 30 fps}, photo dims:{4032x3024,8064x6048}, fov:72.044, max zoom:189.00 (upscales @1.00), secondary:2.00, system zoom range:1.0-10.0, AF System:2, ISO:54.0-12096.0, SS:0.000014-1.000000, system exposure bias range:-2.0-2.0, supports HDR, supports wide color, supports responsive capture, supports zero shutter lag, supports highest photo quality, supports Smart Style>
-
Less than HD formats excluded, insufficient quality
-
30fps formats excluded (except 4K), insufficient quality
-
240fps formats excluded, insufficient quality (binned, low light underwater makes long shutter thus motion blur)
-
x422 formats excluded, ProRes only
-
x420 formats are preferred, except 4K and except 120fps for Ultra Wide and Telephoto cameras
-
4K 30 fps 420f formats included to capture highest quality 48MP photos while recording video
-
Telephoto camera doesn't support 48MP photos
-
HD video formats support taking 12MP photos
-
Ultra Wide camera 4/3 photo formats support Geometric Distortion Correction
-
Wide camera supports 120fps in UHD x420 10-bit HDR with "Medium" level of stabilisation (other cameras has "Low")
Camera | Resolution | HDR | Live Photo |
---|---|---|---|
Telephoto | 12MP | ✅ | ✅ |
Ultra Wide | 48MP | ✅ | ✅ |
Wide | 48MP | ✅ | ✅ |
Camera | HD Video | Photo | HD 120fps Video | Photo | HD 4/3 Video | Photo | UHD Video | Photo | UHD 120fps Video | Photo | 4K Video | Photo |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Telephoto | HDR | 6MP | SDR | 2MP | HDR | 8MP | HDR | 8MP | ❌ | ❌ | SDR | 12MP HDR |
Ultra Wide | HDR | 7MP | SDR | 2MP | HDR | 8MP | HDR | 8MP | ❌ | ❌ | SDR | 48MP HDR |
Wide | HDR | 6MP | HDR | 2MP | HDR | 8MP | HDR | 8MP | HDR | 8MP | SDR | 48MP HDR |