WWDC - Appareil photo numérique APPLE - Notice d'utilisation et mode d'emploi gratuit
Retrouvez gratuitement la notice de l'appareil WWDC APPLE au format PDF.
| Marque | Apple |
| Gamme | QuickTake |
| Résolution maximale | 640 x 480 pixels (0,3 Mp) |
| Capteur | CCD Kodak, pixels 9 microns, filtre Bayer |
| Objectif | 8 mm (équivalent 50 mm en 35 mm), fixe |
| Stockage interne | 1 Mo Flash EPROM |
| Capacité photos (haute qualité) | 8 photos |
| Connectivité | GeoPort, RS-232C |
| Alimentation | 3 piles AA |
| Flash | Intégré automatique |
| Compatibilité | Macintosh, Windows (via logiciel fourni) |
| Année de lancement | 1994 |
FOIRE AUX QUESTIONS - WWDC APPLE
Questions des utilisateurs sur WWDC APPLE
0 question sur cet appareil. Repondez a celles que vous connaissez ou posez la votre.
Poser une nouvelle question sur cet appareil
Téléchargez la notice de votre Appareil photo numérique au format PDF gratuitement ! Retrouvez votre notice WWDC - APPLE et reprennez votre appareil électronique en main. Sur cette page sont publiés tous les documents nécessaires à l'utilisation de votre appareil WWDC de la marque APPLE.
MODE D'EMPLOI WWDC APPLE
Camera Capture: Manual Controls
Power to the people
Session 508
Brad Ford
Camera Software




Past Sessions
developer.apple.com
WWDC 2011 Session 419—Capturing from the Camera on iOS 5
WWDC 2011 Session 417—Introducing AV Foundation Capture for Lion
WWDC 2012 Session 520—What's New in Camera Capture (iOS 6)
WWDC 2013 Session 610—What's New in Camera Capture (iOS 7)

Appetizer
AVCaptureView on Yosemite
iOS Screen Recording
Barcode Update
Main Course
Manual Camera Controls
Focus / Exposure / White Balance
Desser
Bracketed Capture


Appetizer
AVCaptureView on Yosemite iOS Screen Recording Barcode Update
Main Course
Manual Camera Controls
Focus / Exposure / White Balance
Desser
Bracketed Capture

Capture in AVKit
Standard user interface for capture on Yosemite
AVKit

AVCaptureView


AVCaptureView


AVCaptureView


AVCaptureView


Camera
FaceTime HD Camera (Built-in) Camera
Microphone
Built-in Microphone: Internal Microphone Mic
Quality
High Maximum
AVFoundation Capture Objects
AVFoundation Capture Objects
AVCaptureSession
AVFoundation Capture Objects
AVCaptureDevice (Camera)
AVCaptureDeviceInput
AVCaptureDevice (Microphone)
AVCaptureDeviceInput
AVCaptureSession
AVFoundation Capture Objects
AVCaptureDevice (Camera)
AVCaptureDeviceInput
AVCaptureDevice (Microphone)
AVCaptureDeviceInput
AVCaptureSession
AVCaptureMovieFileOutput
AVFoundation Capture Objects

AVCaptureView
Default AVCaptureSession

AVCaptureView
Default AVCaptureSession
AVCaptureView
AVCaptureDevice (Camera)
AVCaptureDeviceInput
AVCaptureConnection
AVCaptureSession
AVCaptureMovieFileOutput
Recording Delegate
AVCaptureView
Default AVCaptureSession
// Need to be delegate of AVCaptureView to start recording @interface MyClass : NSObject
// When user clicks record button, tell the file output to start recording
- (void)captureView: (AVCaptureView *)view startRecordingToFileOutput:
(AVCaptureFileOutput *)fileOutput
{
[fileOutput startRecordingToFile:URL recordingDelegate:self];
}
AVCaptureView
Custom AVCaptureSession

AVCaptureView
Custom AVCaptureSession
AVCaptureView
AVCaptureDevice (Camera)
AVCaptureDeviceInput
AVCaptureConnection
AVCaptureSession
AVCaptureMovieFileOutput
AVCaptureDevice (Microphone)
AVCaptureDeviceInput
AVCaptureConnection
Recording Delegate
iOS Screen Recording on OS X
App previewsandmore
iOS Screen Recording
QuickTime Player File Edit View Window Help

iOS Screen Recording
QuickTime Player File Edit View Window Help

iOS Screen Recording
Special considerations
iOS Screen Recording
Special considerations
iOS devices are presented as CoreMedia IO "DAL" plug-ins
iOS Screen Recording
Special considerations
iOS devices are presented as CoreMedia IO "DAL" plug-ins
You must opt in to see iOS screen devices in your OS X app
CMIO0bjectPropertyAddress prop =
{ kCMIOHardwarePropertyAllowScreenCaptureDevices, kCMIO0objectPropertyScopeGlobal, kCMIO0objectPropertyElementMaster };
UInt32 allow = 1;
CMIO0objectSetPropertyData( kCMIO0objectSystem0bject, &prop, 0, NULL, sizeof(allow), &allow );
Related Sessions
- Creating Great App Previews
Russian Hill
Thursday 3:15PM
iOS 8 Capture Enhancements
Machine-Readable Codes
iOS 7 support
UPC-E
Code 39 and Code 39 mod 43
EAN-13 (including UPC-A)
EAN-8
Code 93
Code 128
PDF417
QR
Aztec

Data Matrix

Interleaved 2 of 5

ITF14
Greater Transparency for Users
Greater Transparency for Users
"Wavy" Would Like to Access the Microphone
Don't Allow
OK
"VideoSnake" Would Like to Access the Camera
Don't Allow
OK
Greater Transparency for Users
User consent to use the camera or mic extends to all regions
"Wavy" Would Like to Access the Microphone
Don't Allow
OK
"VideoSnake" Would Like to Access the Camera
Don't Allow
OK
Greater Transparency for Users
User consent to use the camera or mic extends to all regions
Refer to WWDC 2013 Session 610 for coding examples
"Wavy" Would Like to Access the Microphone
Don't Allow
OK
"VideoSnake" Would Like to Access the Camera
Don't Allow
OK

Appetizer
AVCaptureView on Yosemite
iOS Screen Recording
Barcode Update
Main Course
Manual Camera Controls
Focus / Exposure / White Balance
Desser
Bracketed Capture


Appetizer
AVCaptureView on Yosemite
iOS Screen Recording
Barcode Update
Main Course
Manual Camera Controls
Focus / Exposure / White Balance
Desser
Bracketed Capture

(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC + BD
(2) AD = AC = 1
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
ID:8146372
Title: Support for hardware accelerated h264 encode of video frames from the camera
ID:10071195
Title: Expose VTDecompressionSession and VTCompressionSession on iOS
ID:8423057
Title: Feature Request: Support Compressed Frames from AVCaptureVideoDataOutput
ID:8447434
Title: AVCaptureVideoDataOutput should have an option to output compressed samples
ID:8447434
Title: AVCaptureVideoDataOutput should have an option to output compressed samples
ID:8867194
Title: AVCaptureVideoDataOutput is documented as supporting compressed output
ID:8185304
Title: 3rd party access to video encoder
ID:7995439
Title: [API] [MOST REQUESTED 3RD PARTY FEATURE] Add encoded video formats to AVCaptureVideoDataOutput
ID:8179236
Title: ER: manual focus, exposure, white balance.
ID:7890525
Title: [API] Request for bracketed capture API for HDR
ID:10307980
Title: ER:AWB support for neutral/grey/white object or grey-card
ID:10344301
Title: support for querying and setting integration time
ID:10366347
Title: ER: exposure gain control using standardized ISO values
ID:11495182
Title: Enhanced camera focus controls
ID:15208486
Title: API Support for Manual Camera Controls
ID:16562214
Title: Adjust Camera's Focus and Exposure using parameters
ID:8146372
Title: Support for hardware accelerated h264 encode of video frames from the camera
ID:10071195
Title: Expose VTDecompressionSession and VTCompressionSession on iOS
ID:8423057
Title: Feature Request: Support Compressed Frames from AVCaptureVideoDataOutput
ID:8447434
Related Problems: 89 — Is blocking 1, Original of 41, Parent of 4 (2 Unresolved)
Title: AVCaptureVideoDataOutput should have an option to output compressed samples
ID:8867194
Title: AVCaptureVideoDataOutput is documented as supporting compressed output
ID:8185304
Title: 3rd party access to video encoder
ID:7995439
Title: [API] [MOST REQUESTED 3RD PARTY FEATURE] Add encoded video formats to AVCaptureVideoDataOutput
ID:8179236
Title: ER: manual focus, exposure, white balance.
ID:7890525
Title: [API] Request for bracketed capture API for HDR
ID:10307980
Title: ER: AWB support for neutral/grey/white object or grey-card
ID:10344301
Title: ER: exposure gain control using standardized ISO values
ID:11495182
Title: Enhanced camera focus controls
ID:15208486
Title: API Support for Manual Camera Controls
ID:16562214
Title: Adjust Camera's Focus and Exposure using parameters
Your Top Two Feature Requests
Your Top Two Feature Requests
Direct access to the H.264 video encoder/decoder
Your Top Two Feature Requests
Direct access to the H.264 video encoder/decoder Manual camera controls for focus, white balance, and exposure
Access to H.264 Video Encoder
Real-time capture

Access to H.264 Video Encoder
Real-time capture
AVCaptureVideoDataOutput buffers may be compressed in real time
- I-frame insertion
- Bitrate adjustment
• I-frame only, I-P, or I-P-B GOP support
And more
Related Sessions
- Direct Access to Video Encoding and Decoding
Nob Hill
Thursday 11:30AM
Manual Camera Controls
Making iOS the premiere platform for computational and pro photography
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC + BD
(2) AD = AC = 1
(2) AD = AC + BD
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC + BD
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC = 1
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC = 1
(2) AD = AC = 1
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD
(2) AD = AC + BD

135 24R

Manual Camera Controls
Manual focus
Manual exposure
Exposure compensation
Manual white balance
AVFoundation Capture Objects

AVFoundation Capture Objects

Manual Focus

Focus 101

Focus 101

Focus Terms

Focus Terms
Depth of field

Focus Terms
Depth of field Macro

Focus Terms
Depth of field
Macro
Infinity

Focus Terms
Depth of field
Macro
Infinity
Hyperfocal distance

Focus Terms
Depth of field
Macro
Infinity
Hyperfocal distance
Lens position

What Can You Do Already?
AVCaptureDevice Focus APIs
@property AVCaptureFocusMode focusMode;
AVCaptureDevice Focus APIs
@property AVCaptureFocusMode focusMode;
AVCaptureFocusModeLocked
AVCaptureDevice Focus APIs
@property AVCaptureFocusMode focusMode;
AVCaptureFocusModeLocked
AVCaptureFocusModeAutoFocus
AVCaptureDevice Focus APIs
@property AVCaptureFocusMode focusMode;
AVCaptureFocusModeLocked
AVCaptureFocusModeAutoFocus
AVCaptureFocusModeContinuousAutoFocus
AVCaptureDevice Focus APIs
@property AVCaptureFocusMode focusMode;
AVCaptureFocusModeLocked
AVCaptureFocusModeAutoFocus
AVCaptureFocusModeContinuousAutoFocus
@property CGPoint focusPointOfInterest;
AVCaptureDevice Focus APIs
@property AVCaptureFocusMode focusMode;
AVCaptureFocusModeLocked
AVCaptureFocusModeAutoFocus
AVCaptureFocusModeContinuousAutoFocus
@property CGPoint focusPointOfInterest;
@property (readonly) BOOL adjust ing Focus;
AVCaptureDevice Focus APIs
@property AVCaptureAutoFocusRangeRestriction autoFocusRangeRestriction;
AVCaptureDevice Focus APIs
@property AVCaptureAutoFocusRangeRestriction autoFocusRangeRestriction;
AVCaptureAutoFocusRangeRestrictionNear
AVCaptureDevice Focus APIs
@property AVCaptureAutoFocusRangeRestriction autoFocusRangeRestriction;
AVCaptureAutoFocusRangeRestrictionNear
AVCaptureAutoFocusRangeRestrictionFar
AVCaptureDevice Focus APIs
@property AVCaptureAutoFocusRangeRestriction autoFocusRangeRestriction;
AVCaptureAutoFocusRangeRestrictionNear
AVCaptureAutoFocusRangeRestrictionFar
@property B00L smoothAutoFocusEnabled;
AVCaptureDevice Focus APIs

AVCaptureDevice Focus APIs
Manual control of the lens position when locking focus
AVCaptureDevice Focus APIs
Manual control of the lens position when locking focus Key-value observation of the lens position in any focus mode
Demo
Manual Focus in AVCam
Aparna Bhatnagar
Camera Software
Manual Focus
NEW
@property(readonly) float lensPosition;
Manual Focus
@property(readonly) float lensPosition; Read or key-value observe
Manual Focus
@property(readonly) float lensPosition;
Read or key-value observe
Scalar values from 0.0 to 1.0
Manual Focus
@property(readonly) float lensPosition;
Read or key-value observe
Scalar values from 0.0 to 1.0
Smaller values approach macro
Manual Focus
@property(readonly) float lensPosition;
Read or key-value observe
Scalar values from 0.0 to 1.0
Smaller values approach macro
Larger values approach infinity
Manual Focus
- (void)setFocusModeLockedWithLensPosition: (float) lensPosition completionHandler: (void (^)(CMTime syncTime)) handler;
Manual Focus
- (void)setFocusModeLockedWithLensPosition: (float) lensPosition completionHandler: (void (^)(CMTime syncTime)) handler; Locks focus at an explicit lens position
Manual Focus
- (void)setFocusModeLockedWithLensPosition: (float) lensPosition completionHandler: (void (^)(CMTime syncTime)) handler; Locks focus at an explicit lens position
Calls you back when the command has completed
Manual Focus
- (void)setFocusModeLockedWithLensPosition: (float) lensPosition completionHandler: (void (^)(CMTime syncTime)) handler;
Locks focus at an explicit lens position
Calls you back when the command has completed
syncTime == PTS of the first video frame to which your change was applied
Manual Focus
- (void)setFocusModeLockedWithLensPosition:(float) lensPosition completionHandler: (void (^)(CMTime syncTime)) handler;
Locks focus at an explicit lens position
Calls you back when the command has completed syncTime == PTS of the first video frame to which your change was applied syncTime is on the AVCaptureDevice clock's timeline
Manual Focus
AVCaptureVideoDataOutput buffers are syncsed to the session's master clock
Manual Focus
AVCaptureVideoDataOutput buffers are syncsed to the session's master clock
Manual Focus
AVCaptureVideoDataOutput buffers are syncsed to the session's master clock
[device setFocusModeLockedWithLensPosition: lensPosition completionHandler:^(CMTime syncTime { // Convert to master clock time CMClock masterClock = session masterClock; CMTime convertedTime = CMSyncConvertTime( syncTime, _deviceClock, masterClock }); ];
Manual Focus
NEW
Special lensPosition parameter AVCaptureLensPositionCurrent
Manual Focus
Special lensPosition parameter AVCaptureLensPositionCurrent
Locks the focus mode at the current position, avoiding race conditions
Manual Focus
Special lensPosition parameter AVCaptureLensPositionCurrent
Locks the focus mode at the current position, avoiding race conditions
The following are equivalent—
Manual Focus
Special lensPosition parameter AVCaptureLensPositionCurrent
Locks the focus mode at the current position, avoiding race conditions
The following are equivalent—
[device setFocusModeLockedWithLensPosition:AVCaptureLensPositionCurrent completionHandler NIL];
device-focusMode = AVCaptureFocusModeLocked;
Manual Focus
Why unit-less lensPosition values?
Manual Focus
Why unit-less lensPosition values?
Lens is moved with a spring and magnet

Manual Focus
Why unit-less lensPosition values?
Lens is moved with a spring and magnet Hysteresis prevents precise, repeatable positioning

Manual Focus
Why unit-less lensPosition values?
Lens is moved with a spring and magnet
Hysteresis prevents precise, repeatable
positioning
Gravity affects spring stretch as well

Manual Focus
Why unit-less lensPosition values?
Lens is moved with a spring and magnet
Hysteresis prevents precise, repeatable
positioning
Gravity affects spring stretch as well
Lens position distance varies by device

Manual Focus
Help users achieve sharp focus
Manual Focus
Help users achieve sharp focus
AVCaptureVideoPreviewLayer is screen resolution
Manual Focus
Help users achieve sharp focus
AVCaptureVideoPreviewLayer is screen resolution. Possible techniques
Manual Focus
Help users achieve sharp focus
AVCaptureVideoPreviewLayer is screen resolution
Possible techniques—
- AVCaptureDevice zoom
Manual Focus
Help users achieve sharp focus
AVCaptureVideoPreviewLayer is screen resolution
Possible techniques—
- AVCaptureDevice zoom
- Compute your own focus score using AVCaptureVideoDataOutput buffers
Manual Focus
Help users achieve sharp focus
AVCaptureVideoPreviewLayer is screen resolution
Possible techniques—
- AVCaptureDevice zoom
- Compute your own focus score using AVCaptureVideoDataOutput buffers
- Highlight sharp areas (focus peaking)
Manual Exposure

Exposure 101
Exposure 101

Exposure 101

Exposure 101

Exposure 101

Lens Aperture
Shutter Speed (Exposure Duration)

Short
Less Light
Less Motion Blur

Long
More Light
More Motion Blur

Low ISO
Darker
Less Noise


High ISO
Brighter
More Noise
Exposure 101

Lens Aperture
Exposure 101

Lens Aperture
AVCaptureDevice Exposure APIs
@property AVCaptureExposureMode exposureMode;
AVCaptureDevice Exposure APIs
@property AVCaptureExposureMode exposureMode;
AVCaptureExposureModeLocked
AVCaptureDevice Exposure APIs
@property AVCaptureExposureMode exposureMode;
AVCaptureExposureModeLocked
AVCaptureExposureModeContinuousAutoExposure
AVCaptureDevice Exposure APIs
@property AVCaptureExposureMode exposureMode;
AVCaptureExposureModeLocked
AVCaptureExposureModeContinuousAutoExposure
@property CGPoint exposurePointOfInterest;
AVCaptureDevice Exposure APIs
@property AVCaptureExposureMode exposureMode;
AVCaptureExposureModeLocked
AVCaptureExposureModeContinuousAutoExposure
@property CGPoint exposurePointOfInterest;
@property (readonly) B00L adjustingExposure;
AVCaptureDevice Exposure APIs

AVCaptureDevice Exposure APIs

Fully manual (custom) exposure
AVCaptureDevice Exposure APIs
Fully manual (custom) exposure
Set, get, and key-value observe ISO and duration (shutter speed)
Demo
Manual Exposure in AVCam
Matthew Calhoun
Camera Software
How Continuous Auto Exposure Works
How Continuous Auto Exposure Works
Auto Exposure Block
How Continuous Auto Exposure Works

How Continuous Auto Exposure Works

How Locked Exposure Works
Auto Exposure Block
How Locked Exposure Works

How Locked Exposure Works
Metering Stats
Auto Exposure Block
ISO Duration
Custom Exposure
NEW
New exposure mode AVCaptureExposureModeCustom
Custom Exposure
NEW
New exposure mode AVCaptureExposureModeCustom
- (void)setExposureModeCustomWithDuration:(CMTime)duration
ISO: (float) ISO
completionHandler: (void (^)(CMTime syncTime)) handler;
Custom Exposure
New exposure mode AVCaptureExposureModeCustom
- (void)setExposureModeCustomWithDuration:(CMTime)duration
ISO: (float) ISO
completionHandler: (void (^)(CMTime syncTime)) handler;
Special parameters—
Custom Exposure
New exposure mode AVCaptureExposureModeCustom
- (void)setExposureModeCustomWithDuration:(CMTime)duration
ISO: (float) ISO
completionHandler: (void (^)(CMTime syncTime)) handler;
Special parameters—
const CMTime AVCaptureExposureDurationCurrent;
Custom Exposure
New exposure mode AVCaptureExposureModeCustom
- (void)setExposureModeCustomWithDuration:(CMTime)duration
ISO: (float) ISO
completionHandler: (void (^)(CMTime syncTime)) handler;
Special parameters—
const CMTime AVCaptureExposureDurationCurrent;
const float AVCaptureIS0Current;
Custom Exposure
NEW
AVCaptureDeviceFormat supported ranges—
Custom Exposure
NEW
AVCaptureDeviceFormat supported ranges—
@property(readonly) float minISO;
@property (readonly) float maxISO;
Custom Exposure
NEW
AVCaptureDeviceFormat supported ranges
@property (readonly) float minISO;
@property (readonly) float maxISO;
@property(readonly) CMTime minExposureDuration;
@property(readonly) CMTime maxExposureDuration;
Custom Exposure
NEW
AVCaptureDeviceFormat supported ranges—
@property (readonly) float minISO;
@property (readonly) float maxISO;
@property(readonly) CMTime minExposureDuration;
@property(readonly) CMTime maxExposureDuration;
AVCaptureDevice observable properties—
Custom Exposure
AVCaptureDeviceFormat supported ranges—
@property (readonly) float minISO;
@property (readonly) float maxISO;
@property(readonly) CMTime minExposureDuration;
@property(readonly) CMTime maxExposureDuration;
AVCaptureDevice observable properties—
@property (readonly) float ISO;
@property(readonly) CMTime exposureDuration;
@property(readonly) float lensAperture;
How Custom Exposure Mode Works
Auto Exposure Block
How Custom Exposure Mode Works

How Custom Exposure Mode Works

[device setExposureModeCustomWithDuration:duration
ISO:iso
completionHandler:nil];
Exposure Compensation
Exposure Compensation

Exposure Compensation
Target bias adjustment
Exposure Compensation
Target bias adjustment
Continuous AE
Exposure Compensation
Target bias adjustment
- Continuous AE
- Locked exposure
Exposure Compensation
Target bias adjustment
Continuous AE
- Locked exposure
Expressed in f-stops (exposure values)
Exposure Compensation
Target bias adjustment
- Continuous AE
- Locked exposure
Expressed in f-stops (exposure values)
- +1 f-stop == double the brightness
Exposure Compensation
Target bias adjustment
- Continuous AE
- Locked exposure
Expressed in f-stops (exposure values)
- +1 f-stop == double the brightness
- -1 f-stop == half the brightness
Demo
Exposure Compensation in AVCam
Matthew Calhoun
Camera Software
Exposure Compensation
Supported in all exposure modes
- (void)setExposureTargetBias:(float)bias completionHandler: (void (^)(CMTime syncTime))handler;
Exposure Compensation
Supported range
@property(readonly) float minExposureTargetBias;
@property(readonly) float maxExposureTargetBias;
Exposure Compensation
Supported range
@property(readonly) float minExposureTargetBias;
@property(readonly) float maxExposureTargetBias;
Key-value observable getters
Exposure Compensation
Supported range
@property(readonly) float minExposureTargetBias;
@property(readonly) float maxExposureTargetBias;
Key-value observable getters
@property(readonly) float exposureTargetBias;
@property(readonly) float exposureTarget0Offset;
How Exposure Compensation Works
Continuous Auto Exposure

How Exposure Compensation Works
Continuous Auto Exposure

How Exposure Compensation Works
Continuous Auto Exposure

How Exposure Compensation Works
Locked Exposure Mode

How Exposure Compensation Works
Locked Exposure Mode

How Exposure Compensation Works
Locked Exposure Mode

How Exposure Compensation Works
Locked Exposure Mode



Manual White Balance
Cooler
Warmer


y [0, 1]

X [0, 1]
y [0, 1]

X [0, 1]

Auto

Sun

Cloudy

Flash

Shadow

Incandescent

Fluorescent

AVCaptureDevice White Balance APIs
@property AVCaptureWhiteBalanceMode whiteBalanceMode;
AVCaptureDevice White Balance APIs
@property AVCaptureWhiteBalanceMode whiteBalanceMode;
AVCaptureWhiteBalanceModeLocked
AVCaptureDevice White Balance APIs
@property AVCaptureWhiteBalanceMode whiteBalanceMode;
AVCaptureWhiteBalanceModeLocked
AVCaptureWhiteBalanceModeContinuousAutoWhiteBalance
AVCaptureDevice White Balance APIs
@property AVCaptureWhiteBalanceMode whiteBalanceMode;
AVCaptureWhiteBalanceModeLocked
AVCaptureWhiteBalanceModeContinuousAutoWhiteBalance
@property(readonly) B00L adjustingWhiteBalance;
AVCaptureDevice White Balance APIs
Manual control of the device RGB gains
AVCaptureDevice White Balance APIs
Manual control of the device RGB gains
Key-value observation of device RGB gains
AVCaptureDevice White Balance APIs
Manual control of the device RGB gains
Key-value observation of device RGB gains
Support for white balance using a gray card
AVCaptureDevice White Balance APIs
Manual control of the device RGB gains
Key-value observation of device RGB gains
Support for white balance using a gray card
Conversion routines to and from device independent color spaces
AVCaptureDevice White Balance APIs
Manual control of the device RGB gains
Key-value observation of device RGB gains
Support for white balance using a gray card
Conversion routines to and from device independent color spaces
Device RGB gains x, y chromaticity values
AVCaptureDevice White Balance APIs
Manual control of the device RGB gains
Key-value observation of device RGB gains
Support for white balance using a gray card
Conversion routines to and from device independent color spaces
Device RGB gains x, y chromaticity values
- Device RGB gains temperature and tint values
Demo
Manual White Balance in AVCam
Matthew Calhoun and Aparna Bhatnagar
Manual White Balance

Manual White Balance
typedef struct {
float redGain;
float greenGain;
float blueGain;
} AVCaptureWhiteBalanceGains;
Manual White Balance
typedef struct {
float redGain;
float greenGain;
float blueGain;
} AVCaptureWhiteBalanceGains;
@property(readonly) float maxWhiteBalanceGain;
Manual White Balance
typedef struct {
float redGain;
float greenGain;
float blueGain;
} AVCaptureWhiteBalanceGains;
@property(readonly) float maxWhiteBalanceGain;
Legal range is [1, maxWhiteBalanceGain]
Manual White Balance
typedef struct {
float redGain;
float greenGain;
float blueGain;
} AVCaptureWhiteBalanceGains;
@property(readonly) float maxWhiteBalanceGain;
Legal range is [1, maxWhiteBalanceGain]
@property(readonly) AVCaptureWhiteBalanceGains deviceWhiteBalanceGains;
Manual White Balance

Manual White Balance
- (void)setWhiteBalanceModeLockedWithDeviceWhiteBalanceGains:
(AVCaptureWhiteBalanceGains)whiteBalanceGains
completionHandler: (void (^)(CMTime syncTime))handler;
Special gains value AVCaptureWhiteBalanceGainsCurrent
Manual White Balance
Conversion routines
NEW
Manual White Balance
Conversion routines
typedef struct {
float x;
float y;
} AVCaptureWhiteBalanceChromaticityValues;

Manual White Balance
Conversion routines
typedef struct {
float x;
float y;
} AVCaptureWhiteBalanceChromaticityValues;
typedef struct {
float temperature;
float tint;
} AVCaptureWhiteBalanceTemperatureAndTintValues;

Manual White Balance
Conversion routines so long they need three lines
Manual White Balance
Conversion routines so long they need three lines
(AVCaptureWhiteBalanceChromaticityValues)
chromaticityValuesForDeviceWhiteBalanceGains:
(AVCaptureWhiteBalanceGains)whiteBalanceGains;
Manual White Balance
Conversion routines so long they need three lines
- (AVCaptureWhiteBalanceChromaticityValues) chromaticityValuesForDeviceWhiteBalanceGains: (AVCaptureWhiteBalanceGains)whiteBalanceGains;
- (AVCaptureWhiteBalanceGains) deviceWhiteBalanceGainsForChromaticityValues: (AVCaptureWhiteBalanceChromaticityValues) chromaticityValues;
Manual White Balance
Conversion routines so long they need three lines
- (AVCaptureWhiteBalanceChromaticityValues) chromaticityValuesForDeviceWhiteBalanceGains: (AVCaptureWhiteBalanceGains)whiteBalanceGains;
- (AVCaptureWhiteBalanceGains) deviceWhiteBalanceGainsForChromaticityValues: (AVCaptureWhiteBalanceChromaticityValues) chromaticityValues;
- (AVCaptureWhiteBalanceTemperatureAndTintValues) temperatureAndTintValuesForDeviceWhiteBalanceGains: (AVCaptureWhiteBalanceGains)whiteBalanceGains;
Manual White Balance
Conversion routines so long they need three lines
- (AVCaptureWhiteBalanceChromaticityValues) chromaticityValuesForDeviceWhiteBalanceGains: (AVCaptureWhiteBalanceGains)whiteBalanceGains;
- (AVCaptureWhiteBalanceGains) deviceWhiteBalanceGainsForChromaticityValues: (AVCaptureWhiteBalanceChromaticityValues) chromaticityValues;
- (AVCaptureWhiteBalanceTemperatureAndTintValues) temperatureAndTintValuesForDeviceWhiteBalanceGains: (AVCaptureWhiteBalanceGains)whiteBalanceGains;
- (AVCaptureWhiteBalanceGains) deviceWhiteBalanceGainsForTemperatureAndTintValues: (AVCaptureWhiteBalanceTemperatureAndTintValues) tempAndTintValues;
Manual White Balance
Conversion routines
Manual White Balance
Conversion routines
Conversion methods faithfully convert to device RGB gains without clamping
Manual White Balance
Conversion routines
Conversion methods faithfully convert to device RGB gains without clamping AVCaptureDevice throws an NSEexception if you provide out-of-range dRGB values to -setWhiteBalanceModeLockedWithDeviceWhiteBalanceGains:completionHandler:
Manual White Balance
Gray world
Manual White Balance
Gray world
NEW
Manual White Balance
Gray world
Auto White Balance is complicated and preferred
NEW
Manual White Balance
Gray world
NEW
Auto White Balance is complicated and preferred Gray world == an alternate set of gains
Manual White Balance
Gray world
NEW
Auto White Balance is complicated and preferred
Gray world == an alternate set of gains
- Makes white look white
Manual White Balance
Gray world
NEW
Auto White Balance is complicated and preferred
Gray world == an alternate set of gains
- Makes white look white
- Assumes a neutral subject fills the center 50 % of the frame
Manual White Balance
Gray world
Auto White Balance is complicated and preferred
Gray world == an alternate set of gains
- Makes white look white
- Assumes a neutral subject fills the center 50 % of the frame
@property(readonly) AVCaptureWhiteBalanceGains grayWorldDeviceWhiteBalanceGains;
Manual White Balance
Working with gray world gains

Manual White Balance
Working with gray world gains
Place gray card in front of the camera and wait for the white balance gains to settle

Manual White Balance
Working with gray world gains
Place gray card in front of the camera and wait for the white balance gains to settle. Sample the grayWorldDeviceWhiteBalanceGains

Manual White Balance
Working with gray world gains
Place gray card in front of the camera and wait for the white balance gains to settle. Sample the grayWorldDeviceWhiteBalanceGains
- setWhiteBalanceModeLockedWithDeviceWhiteBalanceGains: completionHandler: with the sampled gray world gains

Manual Camera Controls
Where are they supported?
Manual Camera Controls
Where are they supported?
Manual Focus—All focus capable iOS cameras
Manual Camera Controls
Where are they supported?
Manual Focus—All focus capable iOS cameras
Manual Exposure—All iOS cameras
Manual Camera Controls
Where are they supported?
Manual Focus—All focus capable iOS cameras
Manual Exposure—All iOS cameras
Manual White Balance—All iOS cameras
Manual Camera Controls
Where are they supported?
Manual Focus—All focus capable iOS cameras
Manual Exposure—All iOS cameras
Manual White Balance—All iOS cameras
All AVCaptureSession presets and AVCaptureDevice formats

Appetizer
AVCaptureView on Yosemite
iOS Screen Recording
Barcode Update
Main Course
Manual Camera Controls
Focus / Exposure / White Balance
Dessert
Bracketed Capture


Appetizer
AVCaptureView on Yosemite
iOS Screen Recording
Barcode Update
Main Course
Manual Camera Controls
Focus / Exposure / White Balance
Desser
Bracketed Capture

Bracketed Still Image Capture
A twist on manual controls
$$ \begin{array}{c c c c c c c c c} - 2 & \cdot & \cdot & - 1 & \cdot & \cdot & 0 & \cdot & + 1 & \cdot & \cdot & + 2 \ \triangle \end{array} $$

$$ - 2 \cdot \cdot \cdot - 1 \cdot \cdot \cdot 0 \cdot \cdot \cdot + 1 \cdot \cdot \cdot + 2 $$

$$ - 2 \cdot \cdot \cdot - 1 \cdot \cdot \cdot 0 \cdot \cdot \cdot + 1 \cdot \cdot \cdot + 2 $$



Bracketed Capture 101
Bracketed Capture 101
A burst of still images taken with varied settings from picture to picture
Bracketed Capture 101
A burst of still images taken with varied settings from picture to picture Exposure bracket
Bracketed Capture 101
A burst of still images taken with varied settings from picture to picture Exposure bracket
• Auto—Exposure bias differs ( e.g., -2, 0, +2 )
Bracketed Capture 101
A burst of still images taken with varied settings from picture to picture Exposure bracket
• Auto—Exposure bias differs ( e.g., -2, 0, +2 )
- Manual—Shutter speed and ISO differ
Bracketed Capture 101
A burst of still images taken with varied settings from picture to picture Exposure bracket
• Auto—Exposure bias differs ( e.g., -2, 0, +2 )
- Manual—Shutter speed and ISO differ
Simple burst bracket
Demo
Bracketed Capture using BracketStripes
John Papandriopoulos
Camera Software
Bracketed Capture

Bracketed Capture

Bracketed Capture
AVCaptureStillImageOutput
Bracketed Capture
AVCaptureStillImageOutput
Single still image capture interface
Bracketed Capture
AVCaptureStillImageOutput
Single still image capture interface
- (void)captureStillImageAsynchronouslyFromConnection:
(AVCaptureConnection *)connection completionHandler: (void (^))(CMSampleBufferRef imageDataSampleBuffer, NSError *error))handler;
Bracketed Capture
AVCaptureStillImageOutput
NEW
Bracketed Capture
AVCaptureStillImageOutput
Bracketed capture interface
NEW
Bracketed Capture
AVCaptureStillImageOutput
Bracketed capture interface
- (void)captureStillImageBracketAsynchronouslyFromConnection:
(AVCaptureConnection *)connection
withSettingsArray: (NSArray *)settings
completionHandler: (void (^))(CMSampleBufferRef sampleBuffer,
AVCaptureBracketsedStillImageSettings *stillImageSettings,
NSError *error))handler;
Bracketed Capture
Auto exposure settings

Bracketed Capture
Auto exposure settings
@interface AVCaptureAutoExposureBracketedStillImageSettings
- (instanceotype)autoExposureSettingsWithExposureTargetBias: (float)exposureTargetBias;
@property(readonly) float exposureTargetBias;
@end
Bracketed Capture
Manual exposure settings
NEW
Bracketed Capture
Manual exposure settings
@interface AVCaptureManualExposureBracketedStillImageSettings
- (instanceotype)manualExposureSettingsWithExposureDuration: (CMTime)duration ISO: (float)ISO;
@property(readonly) CMTime exposureDuration;
@property (readonly) float ISO;
@end
Bracketed Capture
The don'ts
Don't mix bracket settings classes
Don't request more than maxBracketedCaptureStillImageCount

Bracketed Capture
The do's

Bracketed Capture
The do's

- (void)prepareToCaptureStillImageBracketFromConnection:
(AVCaptureConnection )connection
withSettingsArray: (NSArray ) settings
completionHandler: (void (^)(B00L prepared, NSError *error)) handler
Bracketed Capture
The do's

- (void)prepareToCaptureStillImageBracketFromConnection:
(AVCaptureConnection )connection
withSettingsArray: (NSArray ) settings
completionHandler: (void (^)(B00L prepared, NSError *error)) handler
Sample buffers may come from a shared buffer pool
Bracketed Capture
The do's

- (void)prepareToCaptureStillImageBracketFromConnection:
(AVCaptureConnection )connection
withSettingsArray: (NSArray ) settings
completionHandler: (void (^)(B00L prepared, NSError *error)) handler
Sample buffers may come from a shared buffer pool Prepare with an array of one object to reclaim memory
Bracketed Capture
The details
Bracketed Capture
The details
Bracketed settings temporarily override AVCaptureDevice properties
Bracketed Capture
The details
- Bracketed settings temporarily override AVCaptureDevice properties
- Flash and still image stabilization settings are ignored
Bracketed Capture
The details
Bracketed settings temporarily override AVCaptureDevice properties
Flash and still image stabilization settings are ignored
All must use the same format (jpeg, 420f, etc.)
Bracketed Capture
The details
Bracketed settings temporarily override AVCaptureDevice properties
Flash and still image stabilization settings are ignored
All must use the same format (jpeg, 420f, etc.)
Video preview may drop frames
Bracketed Capture
Supported on all iOS devices
Summary
AVCaptureView on Yosemite
iOS screen recording for app previews
Access to hardware video encoder on iOS 8
Powerful new camera controls APIs on iOS 8
- Manual focus
• Custom exposure - Exposure target bias adjustment
- Manual white balance
Still image exposure bracketing

Sample Code

AVCamManual

BracketStripes
Available Now!
More Information
Evangelism
Graphics and Media Evangelism
evangelism@apple.com
Documentation
AV Foundation Programming Guide: Media Capture
http://apple.com
Apple Developer Forums
http://devforums.apple.com
Related Sessions
| • AVAudioEngine in Practice | Marina | Tuesday 10:15AM |
| • Mastering Modern Media Playback | Mission | Tuesday 11:30AM |
| • Harnessing Metadata in Audiovisual Media | Pacific Heights | Tuesday 2:00PM |
| • Introducing the Photos Framework | Nob Hill | Thursday 10:15AM |
| • Direct Access to Video Encoding and Decoding | Nob Hill | Thursday 11:30AM |
| • Creating Great App Previews | Russian Hill | Thursday 3:15PM |
Labs
- AV Foundation and Camera Capture Lab
Photos Framework Lab - AV Foundation and Camera Capture Lab
Photos Framework Lab
Media Lab A
Media Lab A
Media Lab A
Media Lab B
Wednesday 12:45PM
Thursday 11:30AM
Thursday 2:00PM
Friday 10:15AM