iOS 17.4 breaks 48 MP capture in certain scenarios

The methods described in https://developer.apple.com/forums/thread/715452?answerId=729571022#729571022 to obtain 48 MP image captures no longer seem to work on iOS 17.4 under certain circumstances.

Previously, the following steps were sufficient to get 48 MP capture from AVFoundation:

Configuration

  • Set the active AVCaptureDevice.Format to a format where supportedMaxPhotoDimensions contains the (8064, 6048) size
  • Set AVCapturePhotoOutput.maxPhotoDimensions to (8064, 6048)
  • Set AVCapturePhotoOutput.maxPhotoQualityPrioritization to .quality

Taking a photo

  • Set AVCapturePhotoSettings.maxPhotoDimensions to (8064, 6048)
  • Set AVCapturePhotoSettings.photoQualityPrioritization to .quality

As of iOS 17.4, the exact same code that worked through 17.3 no longer works if the session was configured manually (resulting in the .inputPriority session preset) rather than using a session preset (like .high). When configuring the session manually, all the intervening steps work (an active format can be found with the appropriate dimensions, the photo output settings can be set to 8064x6048 successfully, etc.), but the resulting photo is 4032x3024. Again, these same steps worked flawlessly prior to iOS 17.4.

Am I missing something? Did iOS 17.4 change the requirements for 48 MP capture, or is this a bug?

Replies

Hello,

Please file a bug report for this issue using Feedback Assistant, and then post the FB number here for reference. Thank you!

  • Already filed! FB 13683293. Just wanted to post here to see if there would be better insights as I haven't had the best luck with Feedback Assistant in the past.

Add a Comment

You can not do that Set AVCapturePhotoOutput.maxPhotoQualityPrioritization to .quality

I dont know why,but it also happened on ios16

  • Sorry, I misunderstood the question, it's not usefully

Add a Comment

@gchiste I looked into this some more today and was able to create a reproducible example with a few modifications to the AVCam sample code. I attached this example project in my report (FB 13683293).

The key factor for reproduction (apart from the manual configuration described in my original post) is to have an AVCaptureVideoDataOutput attached to the session. On iOS 17.3, this makes no difference and 48 MP images are captured regardless of the presence or absence of the AVCaptureVideoDataOutput. On iOS 17.4, the presence of the video data output causes photos to revert to 12 MP, and removing the AVCaptureVideoDataOutput allows 48 MP capture once again.