際際滷

際際滷Share a Scribd company logo
1
AppDevKit x
CameraKit
Anistar Sung - Yahoo Senior Engineer Manager
7
Making Camera Amazing
Self
Introduction
2
Working for Yahoo

Top 10 Camera apps - The New York Times
AppDevKit iOS open source project

iOS app development experience
Making Camera Amazing
What the CameraKit can do?

High performance real-time computing with camera

CPU & GPU rendering solutions

Demos with sample apps
3
Agenda
Making Camera Amazing
4Making Camera Amazing
UIImagePickerController
5Making Camera Amazing
6Making Camera Amazing
Customization

Functional limitation

Memory usage
7
Issues of Using
UIImagePickController API
Making Camera Amazing
8Making Camera Amazing
AVFoundation
What the CameraKit
can do?
9Making Camera Amazing
10
R-Finder 2013
11Making Camera Amazing
SNAP & BUY 2014
12
CameraKit
13
AppDevKit x CameraKit
Making Camera Amazing
UI
Image
Camera
Animation
List
Common
14Making Camera Amazing
ADKCameraPosition
ADKCameraFlashMode
ADKCameraTorchMode
ADKCameraMirrorMode
ADKCameraFocusMode
ADKCameraExposureMode
ADKCameraWhiteBlanceMode
ADKCameraErrorCodealignDeviceOrientation
trackLiveVideoData
cameraQuality
captureVideoPreviewLayer
recording
exposureBias
shutterSpeed
ISO
zoomFactor lensPosition
whiteBalanceTemperature
whiteBalanceTint
lowLightBoost
stabilization
cameraPermission
microphonePermission
frontCameraAvailable
rearCameraAvailable
optimizeForHighestFrameRate
flashAvailable
torchAvailable
focusAtPoint
exposureAtPoint
startCamera
stopCamera
captureImage
startCaptureVideo
stopCaptureVideo
ADKCamera
15
Initializing a camera
Making Camera Amazing
camera = [[ADKCamera alloc] initCameraWithDelegate:self

quality:AVCaptureSessionPresetLow

position:ADKCameraPositionRear];

camera.alignDeviceOrientation = YES;
16Making Camera Amazing
17
Camera Viewfinder Preview
Making Camera Amazing
// Adding preview layer on the screen.
[view.layer addSublayer:camera.captureVideoPreviewLayer]

// Starting to capture images.
[camera startCamera];
18
Taking photos / videos
Making Camera Amazing
// Capturing a high quality photo.
[camera captureImage:^(UIImage *image,

NSDictionary *exifDic, 

NSError *error) {

// Using the image to do something

}
19
Demo
Making Camera Amazing
Powering up a simple camera app by
CameraKit
Catherine Shu, Lead Engineer
High performance
real-time computing
with camera
20Making Camera Amazing
21Making Camera Amazing
22Making Camera Amazing
23
Goal
Making Camera Amazing
1. Making an awesome effect to make girls happy

2. Could be previewed effects immediately 

3. Supporting selfies mode
24
Demo
Making Camera Amazing
Using CameraKit to create a Selfies CAM
Catherine Shu, Lead Engineer
25Making Camera Amazing
camera = [[ADKCamera alloc] initCameraWithDelegate:self

quality:AVCaptureSessionPresetHigh

position:ADKCameraPositionFront];

camera.trackLiveVideoData = YES;

camera.liveVideoDataDlegate = self;
Getting Real-time Images
26Making Camera Amazing
27
Doing Face Detection
Making Camera Amazing
- (void)ADKCamera:(ADKCamera *)camera didUpdateSampleBuffer:
(CMSampleBufferRef)sampleBuffer

{

// Converting sample buffer to core image.

CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);

CIImage *sourceCoreImage = [CIImage imageWithCVPixelBuffer:

(CVPixelBufferRef)imageBuffer options:nil];
28
CoreImage
29
Doing Face Detection
Making Camera Amazing
faceDetector = [CIDetector detectorOfType:CIDetectorTypeFace 

context:nil

options:opts];

// Fetching features
NSArray *features = [faceDetector featuresInImage:sourceCoreImage];
30Making Camera Amazing
31
Using CoreImage
Making Camera Amazing
CIFilter *filter = [CIFilter filterWithName:@CIBumpDistortion"];

[filter setValue:filteredCoreImage forKey:kCIInputImageKey];

[filter setValue:[CIVector vectorWithCGPoint:leftEyePoint] 

forKey:kCIInputCenterKey];

[filter setValue:@(eyeRadius) forKey:kCIInputRadiusKey];

[filter setValue:@(0.55) forKey:kCIInputScaleKey];

filteredCoreImage = filter.outputImage;
32Making Camera Amazing
33
Add Instant Effect
Making Camera Amazing
CIFilter *filter = [CIFilter filterWithName:@"CIPhotoEffectInstant"];

[filter setValue:filteredCoreImage 

forKey:kCIInputImageKey];

filteredCoreImage = filter.outputImage;
34Making Camera Amazing
35
Display Images
Making Camera Amazing
dispatch_async(dispatch_get_main_queue(), ^{

// Actually, this is a bad idea!
UIImage *image = [UIImage imageWithCIImage:filteredCoreImage];

imageView.image = image;

});
CPU & GPU rendering
solutions
36Making Camera Amazing
37
Poor Performance Flow
Making Camera Amazing
CVPixelBuffer
CIImage
CVPixelBuffer
CIContext
EAGLContext
UIImage UIImageView
38
Requirements in Real-time
Process
Making Camera Amazing
60 fps
Frame 1 Frame 2 Frame 3 Frame 60Frame 4
16.6 ms 16.6 ms 16.6 ms 16.6 ms 16.6 ms
39Making Camera Amazing
40Making Camera Amazing
41
Better Performance Flow
Making Camera Amazing
CVPixelBuffer
CIImage
CVPixelBuffer
CIContext
EAGLContext GLKView
UIImage UIImageView
42
ADKOpenGLImageView
Making Camera Amazing
CIImage *image

UIColor *backgroundColor

ADKOpenGLImageViewContentMode *contentMode
43Making Camera Amazing
ADKOpenGLImageViewContentModeScaleToFill

ADKOpenGLImageViewContentModeScaleAspectFit

ADKOpenGLImageViewContentModeScaleAspectFill

ADKOpenGLImageViewContentModeCenter

ADKOpenGLImageViewContentModeTop

ADKOpenGLImageViewContentModeBottom

ADKOpenGLImageViewContentModeLeft

ADKOpenGLImageViewContentModeRight

ADKOpenGLImageViewContentModeTopLeft

ADKOpenGLImageViewContentModeTopRight

ADKOpenGLImageViewContentModeBottomLeft

ADKOpenGLImageViewContentModeBottomRight
44
Better Performance Flow
Making Camera Amazing
CVPixelBuffer
CIImage
CVPixelBuffer
CIContext
EAGLContext ADKOpenGLImageView
UIImage UIImageView
45
Using ADKOpenGlImageView
Making Camera Amazing
// Set up config and assign a image for displaying.
glImageView.contentMode =
ADKOpenGLImageViewContentModeScaleAspectFill;

glImageView.backgroundColor = [UIColor black];

glImageView.image = finalCoreImage;
46
Perfomance comparison
Making Camera Amazing
300% +
* It only for testing the performance
of image assignment and rendering
ADKCamera makes things simple 

Using GPU to process image will be better (EX: CoreImage)

ADKOpenGLImageView provides an OpenGL solution
47
Summary
Making Camera Amazing
48
Q + A
Making Camera Amazing

More Related Content

What's hot (19)

PDF
What is image in Swift?/
ha1f Yamaguchi
PPTX
Android jetpack compose | Declarative UI
Ajinkya Saswade
PDF
GoogleVisualr - A Ruby library for Google Visualization API
Winston Teo
PPTX
Basic Android Animation
Shilu Shrestha
PDF
ReactiveCocoa - TDC 2016
vinciusreal
KEY
Google maps and GPS, camera, SD card, tips & tricks
Nikola Kapraljevic Nixa
PPTX
GDG Kuwait - Modern android development
GDGKuwaitGoogleDevel
PDF
Decorator design pattern (A Gift Wrapper)
Sameer Rathoud
PPTX
React native introduction
InnerFood
PPTX
Jetpack Compose - Androids modern toolkit for building native UI
Gilang Ramadhan
PDF
Lessons learned from porting Roloengine from iOS to Android
Manish Mathai
PDF
OpenGLES - Graphics Programming in Android
Arvind Devaraj
PDF
Android animation
Krazy Koder
PPT
Open Cv Tutorial Ii
Waris Songtantarak
PDF
Recap of Android Dev Summit 2018
Hassan Abid
PPTX
Voluminous_Weibo
xiaojueqq12345
PDF
OpenGLES Android Graphics
Arvind Devaraj
PDF
2013-48. Game Progamming
Syiroy Uddin
PDF
Write once, ship multiple times
貼eljko Plesac
What is image in Swift?/
ha1f Yamaguchi
Android jetpack compose | Declarative UI
Ajinkya Saswade
GoogleVisualr - A Ruby library for Google Visualization API
Winston Teo
Basic Android Animation
Shilu Shrestha
ReactiveCocoa - TDC 2016
vinciusreal
Google maps and GPS, camera, SD card, tips & tricks
Nikola Kapraljevic Nixa
GDG Kuwait - Modern android development
GDGKuwaitGoogleDevel
Decorator design pattern (A Gift Wrapper)
Sameer Rathoud
React native introduction
InnerFood
Jetpack Compose - Androids modern toolkit for building native UI
Gilang Ramadhan
Lessons learned from porting Roloengine from iOS to Android
Manish Mathai
OpenGLES - Graphics Programming in Android
Arvind Devaraj
Android animation
Krazy Koder
Open Cv Tutorial Ii
Waris Songtantarak
Recap of Android Dev Summit 2018
Hassan Abid
Voluminous_Weibo
xiaojueqq12345
OpenGLES Android Graphics
Arvind Devaraj
2013-48. Game Progamming
Syiroy Uddin
Write once, ship multiple times
貼eljko Plesac

Similar to Mopcon2017 - AppDevKit x CameraKit (20)

PDF
Droidcon NYC 2014: Building Custom Camera Applications
Huyen Tue Dao
PDF
Droidcon NYC 2014: Building Custom Camera Applications
Huyen Dao
PDF
AnDevCon 2014: Building a Custom Camera Application
Huyen Tue Dao
PDF
Building a Custom Camera Application in Android
Huyen Dao
PDF
Core Image: The Most Fun API You're Not Using (CocoaConf Columbus 2014)
Chris Adamson
PPTX
Android 5.0 Camera2 APIs
Balwinder Kaur
PDF
Core Image: The Most Fun API You're Not Using, CocoaConf Atlanta, December 2014
Chris Adamson
PDF
Building a Native Camera Access Library - Part V.pdf
ShaiAlmog1
PDF
Core Image
Mark Pavlidis
PDF
06.Programming Media on Windows Phone
Nguyen Tuan
KEY
Photography to iPad
Linda Rush
PDF
Advanced AV Foundation (CocoaConf, Aug '11)
Chris Adamson
PPTX
iPhoneography
Wendy Cope
DOC
Cropster - Photo Crop, Rotate, Resize & Flip
Greta Helder
PPTX
Camera manual auto
anzar coowar
PPT
Using Digital Cameras For Visual Literacy
E Robertson
PDF
MWC/ADC 2013 Camera and Lenses - Photo extensibility for Windows Phone
Microsoft Mobile Developer
PDF
UX Design Patterns for Augmented Reality (AR) apps & games
Kai Turner
PPTX
Hidden Camera 3 APIs in Android 4.4 (KitKat)
Balwinder Kaur
PPT
08 objective-c session 8
Amr Elghadban (AmrAngry)
Droidcon NYC 2014: Building Custom Camera Applications
Huyen Tue Dao
Droidcon NYC 2014: Building Custom Camera Applications
Huyen Dao
AnDevCon 2014: Building a Custom Camera Application
Huyen Tue Dao
Building a Custom Camera Application in Android
Huyen Dao
Core Image: The Most Fun API You're Not Using (CocoaConf Columbus 2014)
Chris Adamson
Android 5.0 Camera2 APIs
Balwinder Kaur
Core Image: The Most Fun API You're Not Using, CocoaConf Atlanta, December 2014
Chris Adamson
Building a Native Camera Access Library - Part V.pdf
ShaiAlmog1
Core Image
Mark Pavlidis
06.Programming Media on Windows Phone
Nguyen Tuan
Photography to iPad
Linda Rush
Advanced AV Foundation (CocoaConf, Aug '11)
Chris Adamson
iPhoneography
Wendy Cope
Cropster - Photo Crop, Rotate, Resize & Flip
Greta Helder
Camera manual auto
anzar coowar
Using Digital Cameras For Visual Literacy
E Robertson
MWC/ADC 2013 Camera and Lenses - Photo extensibility for Windows Phone
Microsoft Mobile Developer
UX Design Patterns for Augmented Reality (AR) apps & games
Kai Turner
Hidden Camera 3 APIs in Android 4.4 (KitKat)
Balwinder Kaur
08 objective-c session 8
Amr Elghadban (AmrAngry)
Ad

Mopcon2017 - AppDevKit x CameraKit