avcapturephotooutput—beyond the basics...avcapturephotooutput—beyond the basics brad ford apple...

115
© 2016 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. Addendum to Session 501 Media #WWDC16 Session 511 AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple

Upload: others

Post on 17-Oct-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

© 2016 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

Addendum to Session 501

Media #WWDC16

Session 511

AVCapturePhotoOutput—Beyond the Basics

Brad Ford Apple

Page 2: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview
Page 3: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview
Page 4: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview
Page 5: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Live Photos

Page 6: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

RAW + DNG

Live Photos

Page 7: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Wide Color

RAW + DNG

Live Photos

Page 8: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Wide Color

Preview Images

RAW + DNG

Live Photos

Page 9: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

What You’ll Learn

AVCapturePhotoOutput—Beyond the Basics

Page 10: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

What You’ll Learn

AVCapturePhotoOutput—Beyond the Basics• Scene Monitoring

Page 11: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

What You’ll Learn

AVCapturePhotoOutput—Beyond the Basics• Scene Monitoring• Resource Preparation and Reclamation

Page 12: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

What You’ll Learn

AVCapturePhotoOutput—Beyond the Basics• Scene Monitoring• Resource Preparation and Reclamation

Camera Privacy Policy Changes

Page 13: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

NEWAVCapturePhotoOutput Design Features

Page 14: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

NEWAVCapturePhotoOutput Design Features

Functional programming model

Page 15: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

NEWAVCapturePhotoOutput Design Features

Functional programming modelPhoto settings encapsulation

Page 16: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

NEWAVCapturePhotoOutput Design Features

Functional programming modelPhoto settings encapsulationA delegate-style interface for tracking the progress of photo capture requests

Page 17: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

NEWAVCapturePhotoOutput Design Features

Functional programming modelPhoto settings encapsulationA delegate-style interface for tracking the progress of photo capture requestsResolving of photo settings to an immutable object

Page 18: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring in AVCapturePhotoOutput

Page 19: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

AVCapturePhotoOutput Scene Monitoring

Page 20: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

AVCapturePhotoOutput Scene Monitoring

Page 21: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

AVCapturePhotoOutput Scene Monitoring

Page 22: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring in AVCapturePhotoOutput

Page 23: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring in AVCapturePhotoOutput

Flash scene

Page 24: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring in AVCapturePhotoOutput

Flash scene• True Tone flash for rear camera

Page 25: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring in AVCapturePhotoOutput

Flash scene• True Tone flash for rear camera• Retina flash for front camera

Page 26: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring in AVCapturePhotoOutput

Page 27: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring in AVCapturePhotoOutput

Still Image Stabilization scene

Page 28: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring in AVCapturePhotoOutput

Still Image Stabilization scene• Multiple image fusion capture

Page 29: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring in AVCapturePhotoOutput

Still Image Stabilization scene• Multiple image fusion capture• Reduces low light blur

Page 30: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring in AVCapturePhotoOutput

Still Image Stabilization scene• Multiple image fusion capture• Reduces low light blur

Time

Page 31: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring in AVCapturePhotoOutput

Still Image Stabilization scene• Multiple image fusion capture• Reduces low light blur

Time

Bright light exposure duration Dark light exposure duration

Page 32: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Applicable Light Ranges for Flash Capture

12.5

25

37.5

50

Lux L

evels

With SIS Without SISDark

erLig

hter

Page 33: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Applicable Light Ranges for Flash Capture

12.5

25

37.5

50

Lux L

evels

With SIS Without SISDark

erLig

hter

Page 34: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Applicable Light Ranges for Flash Capture

12.5

25

37.5

50

Lux L

evels

With SIS Without SISDark

erLig

hter

Page 35: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Applicable Light Ranges for Flash Capture

12.5

25

37.5

50

Lux L

evels

With SIS Without SISDark

erLig

hter

Page 36: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

public var photoSettingsForSceneMonitoring: AVCapturePhotoSettings?

Page 37: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

public var photoSettingsForSceneMonitoring: AVCapturePhotoSettings?

public var isStillImageStabilizationScene: Bool { get }

public var isFlashScene: Bool { get }

Page 38: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

// Scene monitoring support

func setUpSceneMonitoring()

{

let settingsForMonitoring = AVCapturePhotoSettings()

settingsForMonitoring.flashMode = .auto

settingsForMonitoring.isAutoStillImageStabilizationEnabled = true

photoOutput.photoSettingsForSceneMonitoring = settingsForMonitoring

photoOutput.addObserver(self, forKeyPath: "isFlashScene", options: .new, context: nil)

photoOutput.addObserver(self, forKeyPath: "isStillImageStabilizationScene", options: .new, context: nil)

}

Page 39: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

// Scene monitoring support

func setUpSceneMonitoring()

{

let settingsForMonitoring = AVCapturePhotoSettings()

settingsForMonitoring.flashMode = .auto

settingsForMonitoring.isAutoStillImageStabilizationEnabled = true

photoOutput.photoSettingsForSceneMonitoring = settingsForMonitoring

photoOutput.addObserver(self, forKeyPath: "isFlashScene", options: .new, context: nil)

photoOutput.addObserver(self, forKeyPath: "isStillImageStabilizationScene", options: .new, context: nil)

}

Page 40: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

// Scene monitoring support

func setUpSceneMonitoring()

{

let settingsForMonitoring = AVCapturePhotoSettings()

settingsForMonitoring.flashMode = .auto

settingsForMonitoring.isAutoStillImageStabilizationEnabled = true

photoOutput.photoSettingsForSceneMonitoring = settingsForMonitoring

photoOutput.addObserver(self, forKeyPath: "isFlashScene", options: .new, context: nil)

photoOutput.addObserver(self, forKeyPath: "isStillImageStabilizationScene", options: .new, context: nil)

}

Page 41: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

// Scene monitoring support

func setUpSceneMonitoring()

{

let settingsForMonitoring = AVCapturePhotoSettings()

settingsForMonitoring.flashMode = .auto

settingsForMonitoring.isAutoStillImageStabilizationEnabled = true

photoOutput.photoSettingsForSceneMonitoring = settingsForMonitoring

photoOutput.addObserver(self, forKeyPath: "isFlashScene", options: .new, context: nil)

photoOutput.addObserver(self, forKeyPath: "isStillImageStabilizationScene", options: .new, context: nil)

}

Page 42: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring Defaults

Page 43: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring Defaults

photoSettingsForSceneMonitoring is nullable

Page 44: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring Defaults

photoSettingsForSceneMonitoring is nullableisStillImageStabilizationScene = false

Page 45: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring Defaults

photoSettingsForSceneMonitoring is nullableisStillImageStabilizationScene = false

isFlashScene = false

Page 46: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring Defaults

photoSettingsForSceneMonitoring is nullableisStillImageStabilizationScene = false

isFlashScene = false

If flashMode = .off, isFlashScene is always false

Page 47: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring Recommendations

Page 48: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Scene Monitoring Recommendations

Monitor what you intend to capture

Page 49: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Resource Preparation and Reclamation

Page 50: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

AVCaptureDeviceInput

AVCaptureConnection AVCaptureConnection

AVCaptureSession Data Flow

AVCapturePhotoOutput AVCaptureMovieFileOutput

AVCaptureSessionAVCaptureVideoPreviewLayer

AVCaptureDevice (Camera)

Page 51: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

AVCaptureDeviceInput

AVCaptureConnection AVCaptureConnection

AVCaptureSession Data Flow

AVCapturePhotoOutput AVCaptureMovieFileOutput

AVCaptureSessionAVCaptureVideoPreviewLayer .startRunning()

AVCaptureDevice (Camera)

Page 52: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

AVCaptureDeviceInput

AVCaptureConnection AVCaptureConnection

AVCaptureSession Data Flow

AVCapturePhotoOutput AVCaptureMovieFileOutput

AVCaptureSessionAVCaptureVideoPreviewLayer

AVCaptureDevice (Camera)

Page 53: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

AVCaptureDeviceInput

AVCaptureConnection AVCaptureConnection

AVCaptureSession Data Flow

AVCapturePhotoOutput AVCaptureMovieFileOutput

AVCaptureSessionAVCaptureVideoPreviewLayer

AVCaptureDevice (Camera)

Page 54: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

AVCaptureDeviceInput

AVCaptureConnection AVCaptureConnection

AVCaptureSession Data Flow

AVCapturePhotoOutput AVCaptureMovieFileOutput

AVCaptureSessionAVCaptureVideoPreviewLayer

photoOutput.capturePhoto(with:, delegate:)

AVCaptureDevice (Camera)

Page 55: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

AVCaptureDeviceInput

AVCaptureConnection AVCaptureConnection

AVCaptureSession Data Flow

AVCapturePhotoOutput AVCaptureMovieFileOutput

AVCaptureSessionAVCaptureVideoPreviewLayer

photoOutput.capturePhoto(with:, delegate:)

AVCaptureDevice (Camera)

CMSampleBuffer

Page 56: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

So Many Features, So Many Resources

Page 57: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

So Many Features, So Many Resources

Uncompressed 420

Page 58: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

So Many Features, So Many Resources

Uncompressed 420

Processed

Page 59: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

So Many Features, So Many Resources

Uncompressed 420

Processed

Flash

Page 60: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

So Many Features, So Many Resources

Still Image Stabilization

Uncompressed 420

Processed

Flash

Page 61: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

So Many Features, So Many Resources

Still Image Stabilization

RAWUncompressed 420

Processed

Flash

Page 62: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

So Many Features, So Many Resources

Still Image Stabilization

RAWUncompressed 420

Processed

Flash RAW + JPEG

Page 63: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

So Many Features, So Many Resources

Still Image Stabilization

RAWUncompressed 420

Processed

Flash

Exposure Bracket

RAW + JPEG

Page 64: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

So Many Features, So Many Resources

Page 65: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

So Many Features, So Many Resources

RAW + JPEG Exposure Bracket

Page 66: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

How Much to Prepare?

Over-preparing

Page 67: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

How Much to Prepare?

Over-preparing • Bakes a cake every day of the year

Page 68: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

How Much to Prepare?

Over-preparing • Bakes a cake every day of the year

Under-preparing

Page 69: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

How Much to Prepare?

Over-preparing • Bakes a cake every day of the year

Under-preparing• Misses the moment

Page 70: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview
Page 71: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

public func setPreparedPhotoSettingsArray( _ preparedPhotoSettingsArray: [AVCapturePhotoSettings], completionHandler handler: ((Bool, NSError!) -> Swift.Void)!)

Page 72: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

public func setPreparedPhotoSettingsArray( _ preparedPhotoSettingsArray: [AVCapturePhotoSettings], completionHandler handler: ((Bool, NSError!) -> Swift.Void)!)

Page 73: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

public func setPreparedPhotoSettingsArray( _ preparedPhotoSettingsArray: [AVCapturePhotoSettings], completionHandler handler: ((Bool, NSError!) -> Swift.Void)!)

Page 74: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

public func setPreparedPhotoSettingsArray( _ preparedPhotoSettingsArray: [AVCapturePhotoSettings], completionHandler handler: ((Bool, NSError!) -> Swift.Void)!)

public var preparedPhotoSettingsArray: [AVCapturePhotoSettings] { get }

Page 75: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

setPreparedPhotoSettingsArray Specifics

Page 76: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

setPreparedPhotoSettingsArray Specifics

Prepares resources for all the types of capture in your array of settings

Page 77: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

setPreparedPhotoSettingsArray Specifics

Prepares resources for all the types of capture in your array of settingsReclaims unneeded resources if any

Page 78: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

setPreparedPhotoSettingsArray Specifics

Prepares resources for all the types of capture in your array of settingsReclaims unneeded resources if anyReclaims everything if you pass an empty array

Page 79: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

setPreparedPhotoSettingsArray Specifics

Prepares resources for all the types of capture in your array of settingsReclaims unneeded resources if anyReclaims everything if you pass an empty arrayCalls you back when all resources are prepared

Page 80: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

setPreparedPhotoSettingsArray Specifics

Prepares resources for all the types of capture in your array of settingsReclaims unneeded resources if anyReclaims everything if you pass an empty arrayCalls you back when all resources are preparedReturns error if resources couldn’t be prepared

Page 81: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

setPreparedPhotoSettingsArray Specifics

Prepares resources for all the types of capture in your array of settingsReclaims unneeded resources if anyReclaims everything if you pass an empty arrayCalls you back when all resources are preparedReturns error if resources couldn’t be preparedpreparedPhotoSettingsArray default value is [AVCapturePhotoSettings()]

Page 82: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

preparedPhotoSettingsArray Persistence

Page 83: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

preparedPhotoSettingsArray Persistence

preparedPhotoSettingsArray persists across

Page 84: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

preparedPhotoSettingsArray Persistence

preparedPhotoSettingsArray persists across • AVCaptureSession start/stopRunning

Page 85: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

preparedPhotoSettingsArray Persistence

preparedPhotoSettingsArray persists across • AVCaptureSession start/stopRunning• AVCaptureSession begin/commitConfiguration

Page 86: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

preparedPhotoSettingsArray Persistence

preparedPhotoSettingsArray persists across • AVCaptureSession start/stopRunning• AVCaptureSession begin/commitConfiguration

preparedPhotoSettingsArray participates in AVCaptureSession begin/commitConfiguration deferred work semantics

Page 87: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Stopped AVCaptureSession Behavior

Page 88: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Stopped AVCaptureSession Behavior

setPreparedPhotoSettingsArray calls completion handler when you start running

Page 89: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Stopped AVCaptureSession Behavior

setPreparedPhotoSettingsArray calls completion handler when you start runningMultiple setPreparedPhotoSettingsArray calls cancel previous calls

Page 90: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Prepare Recommendations

Page 91: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Prepare Recommendations

Prepare

Page 92: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Prepare Recommendations

Prepare before runningPrepare

Page 93: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Prepare Recommendations

Prepare before running Re-prepare when your UI changesPrepare

Page 94: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Non-Preparable Features

Page 95: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Non-Preparable Features

public var isHighResolutionCaptureEnabled: Bool

Page 96: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Non-Preparable Features

public var isHighResolutionCaptureEnabled: Bool

public var isLivePhotoCaptureEnabled: Bool

Page 97: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Non-Preparable Features

public var isHighResolutionCaptureEnabled: Bool

public var isLivePhotoCaptureEnabled: Bool

public var isLivePhotoAutoTrimmingEnabled: Bool

Page 98: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Camera Privacy Policy Changes

Page 99: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Privacy Review

Page 100: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Privacy Review

Photos and videos are personal, sensitive data

Page 101: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Privacy Review

Photos and videos are personal, sensitive dataBeginning in iOS 7, users are notified when an app uses the Camera or Microphone

Page 102: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Privacy Review

Photos and videos are personal, sensitive dataBeginning in iOS 7, users are notified when an app uses the Camera or Microphone

Page 103: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Starting in iOS 10, apps must provide a reason for accessing sensitive data

Privacy Changes

Page 104: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Privacy Changes

Starting in iOS 10, apps must provide a reason for accessing sensitive data

Page 105: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Starting in iOS 10, apps must provide a reason for accessing sensitive data

Privacy Changes

Page 106: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Privacy Changes

Page 107: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

// Add to Info.plist

<plist version="1.0">

<dict>

<key>NSCameraUsageDescription</key>

<string>to take photos and video</string>

<key>NSMicrophoneUsageDescription</key>

<string>to record Live Photos and movies</string>

<key>NSPhotoLibraryUsageDescription</key>

<string>to save photos and videos</string>

</dict>

</plist>

Page 108: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Summary

Page 109: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Summary

AVCapturePhotoOutput allows fine control of scene monitoring behavior

Page 110: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Summary

AVCapturePhotoOutput allows fine control of scene monitoring behaviorAVCapturePhotoOutput allows on-demand resource allocation and reclamation

Page 111: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Summary

AVCapturePhotoOutput allows fine control of scene monitoring behaviorAVCapturePhotoOutput allows on-demand resource allocation and reclamationCapture clients must provide a reason for camera, mic, and photos use

Page 112: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

More Information

https://developer.apple.com/wwdc16/501

Page 113: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Related Sessions

Advances in iOS Photography Pacific Heights Tuesday 11:00AM

Live Photo Editing and RAW Processing with Core Image Nob Hill Thursday 11:00AM

Working With Wide Color Mission Thursday 1:40PM

Page 114: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview

Labs

Photo Capture Lab Graphics, Games, and Media Lab D Tuesday 1:00PM

PhotoKit Lab Graphics, Games, and Media Lab D Tuesday 4:00PM

Color Lab Frameworks Lab A Wednesday 1:00PM

Photo Capture Lab Graphics, Games, and Media Lab D Thursday 9:00AM

Live Photo & Core Image Lab Graphics, Games, and Media Lab D Thursday 1:30PM

Live Photo & Core Image Lab Graphics, Games, and Media Lab D Friday 9:00AM

Color Lab Graphics, Games, and Media Lab C Friday 4:00PM

Page 115: AVCapturePhotoOutput—Beyond the Basics...AVCapturePhotoOutput—Beyond the Basics Brad Ford Apple Live Photos RAW + DNG Live Photos Wide Color RAW + DNG Live Photos Wide Color Preview