14. API Reference

This section provides a detailed description of ARGear classes.

14.1 ARGSession

ARGSession class stores statuses of an application and provides corresponding functions based on the statuses.

14.1.1 Overview

Properties

Description

NS_OPTIONS ARGInferenceFeature

ARGear Inference Option

NS_OPTIONS ARGInferenceDebugOption

ARGear Debugging Option

ARGSessionDelegate

Description

- didUpdateFrame

Called when ARGFrame is updated

Method

Description

- initWithARGConfig:error

Initialize ARGSession with ARGConfig.

- initWithARGConfig:feature:error:

Initialize ARGSession with ARGConfig and ARGInferenceFeature.

- inferenceConfig:

Configure SDK with ARGInferenceOption.

- runWithInferenceConfig:

Run ARGSession with ARGInferenceOption.

- run

Run ARGSession.

- pause

Pause ARGSession.

- updateSampleBuffer:frromConnection: *)connection

Pass sampleBuffer and connection to ARGSession.

- updateMetadataObjects:fromConnection

Pass metadataObjects and connection to ARGSession.

- applyAdditionalFaceInfoWithPixelbuffer:

transform:vertices:viewportSize:convert:

Pass additional information for face detection and CVPixelBuffer.

- feedPixelbuffer:

Pass CVPixelBuffer.

- destroy

Destroy ARGSession.

14.1.2 Details

typedef NS_OPTIONS (NSInteger,ARGInferenceFeature)

ARGInferenceFeature is a required parameter and can be obtained from ARGFrame.

Types of feature inferences are declared as follows.

typedef NS_OPTIONS (NSInteger,ARGInferenceFeature) {

ARGInferenceFeatureFaceLowTracking = 1 << 0, // Machine Learning based Tracking

ARGInferenceFeatureFaceHighTracking = 1 << 1,

ARGInferenceFeatureFaceMeshTracking = 1 << 2,

// ARGInferenceFeatureFaceBlendShapes = 1 << 3,

// ARGInferenceFeatureSegmentationHalf = 1 << 4,

// ARGInferenceFeatureSegmentationFull = 1 << 5,

// ARGInferenceFeatureHandTracking = 1 << 6,

// ARGInferenceFeatureHandLandmark2D = 1 << 7,

// ARGInferenceFeatureHandLandmark3D = 1 << 8,

// ARGInferenceFeatureBodyTracking = 1 << 9,

// ARGInferenceFeatureBodyPose2D = 1 << 10,

// ARGInferenceFeatureBodyPose3D = 1 << 11,

ARGInferenceFeatureExtARKitFaceTracking = 1 << 12 };

typedef NS_OPTIONS (NSInteger,ARGInferenceDebugOption)

Types of Debugging Options in ARGear.

ARGInferenceOptionDebugNON: Turn off Debugging Mode

ARGInferenceOptionDebugFaceTracking: Draw Face Tracking Boxes for Debugging

ARGInferenceOptionDebugFaceLandmark2D: Draw Face Landmark for Debugging

- (void)didUpdateFrame:(ARGFrame *)frame

Return ARGFrame when Updated

Parameters

  • ARGFrame frame : Returned Next Frame from ARGear

- (instancetype _Nullable)initWithARGConfig:(ARGConfig*)argconfig error:(NSError **)error

Initialize ARGSession with ARGConfig. When an error occurs, it returns an error in NSError form.

Parameters

  • ARGConfig argconfig : ARGear Configuration Used during ARGSession Initialization

  • NSError error: Value when an Error Occurred

Returns

  • Created ARGSession

- (instancetype _Nullable)initWithARGConfig:(ARGConfig)argconfig feature:(ARGInferenceFeature)feature error:(NSError *)error

Initialize ARGSession with ARGConfig and ARGInferenceFeature. When an error occurs, return an error in NSError type.

Parameters

  • ARGConfig argconfig : ARGConfig for ARGSession initialization

  • ARGInferenceFeature: An option for initialization. Multiple options can be set together.

  • NSError error: When an error occurs, it contains a corresponding value.

Returns

  • 생성된 ARGSession

- (void)inferenceConfig:(ARGInferenceOption) inferenceConfig

Determine which types of deep learning features in ARGear using ARGInferenceOption.

Parameters

  • ARGInferenceOption inferenceConfig : Types of Deep Learning Features to Be Used in ARGear

- (void)runWithInferenceConfig:(ARGInferenceOption)inferenceConfig

Run ARGSession with ARGInferenceOption.

Parameters

  • ARGConfig argconfig : Configuration Options When Running ARGSession

- (void)run

Start or Resume ARGSession.

- (void)pause

Pause ARGSession.

- (BOOL)updateSampleBuffer:(CMSampleBufferRef)sampleBuffer

fromConnection:(AVCaptureConnection *)connection

Update CMSampleBufferRef and AVCaptureConnection Information Received from Camera.

Parameters

  • CMSampleBufferRef sampleBuffer : Video Frames Sample Buffer from Camera

  • AVCaptureConnection connection : Camera Connection Information

Returns

  • BOOL: Check Whether Data Is Fed to ARGear Properly

- (BOOL)updateMetadataObjects:(NSArray<__kindof AVMetadataObject *> *)metadataObjects

fromConnection:(AVCaptureConnection *)connection

Update AVMetadataObject and AVCaptureConnection Information Fed from Camera.

Parameters

  • NSArray<__kindof AVMetadataObject *> metadataObjects : An AVMetadataObject Array Containing Face Information

  • AVCaptureConnection connection : Camera Connection Information

Returns

  • BOOL: Check Whether Data is Fed to ARGear properly or not.

- (BOOL)applyAdditionalFaceInfoWithPixelbuffer:(CVPixelBufferRef)pixelbuffer

transform:(simd_float4x4)transform

vertices:(const simd_float3 *)vertices

viewportSize:(CGSize)viewportSize

convert:(ARGSessionProjectPointHandler)convertHandler

Pass CVPixelBuffer and ARAnchor information, and converting handler from ARKit.

Parameters

  • CVPixelBufferRef pixelbuffer : ARKit's ARFrame.capturedImage

  • simd_float4x4 transform: ARKit's ARFaceAnchor.transform

  • const simd_float3 *vertices: ARKit's ARFaceAnchor.geometry.vertices

  • CGSize viewportSize: size of view to be drawn from CVPixelBuffer

  • ARGSessionProjectPointHandler convertHandler: a convert handler function that passes transform, orientation, and viewport information to ARFrame.camera.projectPoint function and returns converted coordinates information.

Returns

  • BOOL: Check whether ARGear receive data properly.

- (void)feedPixelbuffer:(CVPixelBufferRef)pixelbuffer

Feed CVPixelBuffer from ARKit.

Parameters

  • CVPixelBufferRef pixelbuffer : ARFrame.capturedImage of ARKit.

- (void)destroy

Destroy ARGSession.

14.2 ARGAuth

14.2.1 Overview

Structs

Description

struct ARGAuthCallback

Returned Structure after Auth Function Called

Method

Description

- isValid

Return whether the Current Auth of ARGSession is Valid

- requestSignedUrlWithUrl:itemTitle:itemType:completion:

Request SignedURL to Download Contents.

14.2.2 Details

typedef struct ARGAuthCallback {

void (^ _Nullable Success) (NSString * _Nullable url);

void (^ _Nullable Error) (ARGStatusCode code);

} ARGAuthCallback;

Callback function called when requesting Auth information. On success, it returns URL through Success function. On failure, it returns ARGStatusCode through Error function.

Blocks

  • void (^ _Nullable Success) (NSString * _Nullable url) : When requesting Auth information succeeds, URL is returned.

  • void (^ _Nullable Error) (ARGStatusCode code) : When requesting Auth information fails, ARGStatusCode is returned.

- (BOOL)isValid

Return whether the Current Stored Auth Information is Valid.

Returns

  • BOOL: Return if the Current Auth Information is Valid.

- (void)requestSignedUrlWithUrl:(NSString *)url itemTitle:(NSString *)title itemType:(NSString *)type completion:(ARGAuthCallback)completion

To Obtain Signed URL to Download Contents, the function passes URL, title, and type information and get the result through ARGAuthCallback.

Parameters

  • NSString url : URL of Content

  • NSString title: Title of Content

  • NSString type: Type of Content

  • ARGAuthCallback completion: Callback Block Returning the Result

14.3 ARGFrame

14.3.1 Overview

Properties

Description

ARGFaces faces

Recognized Faces

CVPixelBufferRef capturedPixelBuffer

pixelBuffer of Camera Frames Fed to ARGSession

CVPixelBufferRef renderedPixelBuffer

pixelBuffer of Contents Rendered Camera Frames Fed to ARGSession

Method

Description

- displayTransform

Return the Current Camera Transform Information.

14.3.2 Details

readonly ARGFaces *faces

An Array Containing the Current Recognized Faces.

readonly CVPixelBufferRef capturedPixelBuffer

Camera pixelBuffer Fed to ARGSession. Pure Camera Frames.

readonly CVPixelBufferRef renderedPixelBuffer

Contents Rendered Camera pixelBuffer Fed to ARGSession.

- (CGAffineTransform)displayTransform

Return Transform Information of Being Rendered in Display in CGAffineTransform Instance.

Returns

  • CGAffineTransform: Transform Information Being Rendered in Display

14.4 ARGContents

ARGContents are created during ARGSession initialization. It is used to control effects of Stickers, Filters, Face Beautifications, and Face Fun Bulges.

14.4.1 Overview

Method

Description

- setItemWithType:withItemFilePath:withItemID:::

Set Contents.

- setFilterLevel:

Set Level of a Filter.

- setDefaultBeauty

Set Default Face Beautification Level Values.

- setBeautyOn:

Set a Face Beautification.

- setBeauty:value:

Set Level of a Face Beautification.

- getBeautyValue:

Get the Current Face Beautification Level.

- setBeautyValues:

Set Level of Face Beautifications at Once.

- setBulge:

Set a Face Fun Bulge Effect.

- clear:

Clear Contents.

14.4.2 Details

- (void)setItemWithType:(ARGContentItemType)itemType

withItemFilePath:(NSString * _Nullable)itemFilePath

withItemID:(NSString * _Nullable)itemId

completion:(ARGContentsCallback _Nullable)callback;

Set Type, File Path, and uuid of Contents to Be Rendered in Display.

ARGContentItemType is defined as below.

typedef NS_ENUM (NSInteger, ARGContentItemType) {

ARGContentItemTypeSticker,

ARGContentItemTypeFilter,

ARGContentItemTypeBeauty,

ARGContentItemTypeBulge,

ARGContentItemTypeNum

};

Parameters

  • ARGContentItemType itemType: ARGContentItemType of Contents to Be Set

  • NSString itemFilePath: Saved Path for Contents

  • NSString itemId: uuid of Contents

  • completion: callback result

- (void)setFilterLevel:(float)level

Set Level of An Applied Filter. The range is from 0 to 100. The larger value, the stronger effect.

Parameters

  • float level: Level of Filter (0 ~ 100)

- (void)setDefaultBeauty

Set Level of Face Beautifications to Default.

- (void)setBeautyOn:(BOOL)on

Turn On or Off of a Face Beautification Effect by Setting Boolean Value.

Parameters

  • BOOL on: Set to Turn On or Off. (True : Turn On, False : Turn Off)

- (void)setBeauty:(ARGContentItemBeauty)type value:(float)value

Set a Face Beautification Effect with its Type and Level of Effect.

Parameters

  • ARGContentItemBeauty type: A Type of Face Beautification

  • float value: Level of Effect Intensity

- (float)getBeautyValue:(ARGContentItemBeauty)type

Get the Current Level of a Face Beautification Effect Having ARGContentItemBeauty Type.

Parameters

  • ARGContentItemBeauty type: Type of Face Beautification to Get

Returns

  • float: Level of Face Beautification Value.

- (void)setBeautyValues:(float *_Nonnull)values

Set 16 Types of Face Beautification Levels at Once.

Example Values:

float beautyValue[BEAUTY_TYPE_NUM];

beautyValue[BEAUTY_TYPE_VLINE] = 10.f;

beautyValue[BEAUTY_TYPE_FACE_SLIM] = 90.f;

beautyValue[BEAUTY_TYPE_JAW] = 55.f;

beautyValue[BEAUTY_TYPE_CHIN] = 50.f;

beautyValue[BEAUTY_TYPE_EYE] = 5.f;

beautyValue[BEAUTY_TYPE_EYE_GAP] = -10.f;

beautyValue[BEAUTY_TYPE_NOSE_LINE] = 0.f;

beautyValue[BEAUTY_TYPE_NOSE_SIDE] = 35.f;

beautyValue[BEAUTY_TYPE_NOSE_LENGTH] = 30.f;

beautyValue[BEAUTY_TYPE_MOUTH_SIZE] = -35.f;

beautyValue[BEAUTY_TYPE_EYE_BACK] = 0.f;

beautyValue[BEAUTY_TYPE_EYE_CORNER] = 0.f;

beautyValue[BEAUTY_TYPE_LIP_SIZE] = 0.f;

beautyValue[BEAUTY_TYPE_SKIN_FACE] = 50.f;

beautyValue[BEAUTY_TYPE_SKIN_DARK_CIRCLE] = 0.f;

beautyValue[BEAUTY_TYPE_SKIN_MOUTH_WRINKLE] = 0.f;

To check setting ranges, please refer to 9.2 Apply Face Beautification Effect.

Parameters

  • float *values: A Float Array in Size 16.

- (void)setBulge:(ARGContentItemBulge)bulge

Set a Type of Face Fun Bulge among Available 6 Types. By using ARGContentItemBulgeNONE option, you can disable face fun bulge effect.

ARGContentItemBulge is defined as follows.

typedef NS_ENUM (NSInteger, ARGContentItemBulge) {

ARGContentItemBulgeNONE = -1,

ARGContentItemBulgeFUN1 = 1,

ARGContentItemBulgeFUN2 = 2,

ARGContentItemBulgeFUN3 = 3,

ARGContentItemBulgeFUN4 = 4,

ARGContentItemBulgeFUN5 = 5,

ARGContentItemBulgeFUN6 = 6,

ARGContentItemBulgeNum

};

Parameters

  • ARGContentItemBulge bulge: Face Fun Bulge Type to Be Set

- (void)clear:(ARGContentItemType)itemType

Clear Contents Having ARGContentItemType.

Parameters

  • ARGContentItemType itemType: Please Refer to 12.4.2 setItemWithType Method

14.5 ARGMedia

14.5.1 Overview

Properties

Description

NS_ENUM ARGMediaRatio

Camera Screen Ratio

NS_ENUM ARGMediaMode

Current Media Mode

NS_ENUM ARGMediaVideoBitrate

Video Recording Bitrate

BOOL autoSave

Whether Autosave Mode is On or Not

BOOL recordSound

Whether Including Sound or Not

Method

Description

- setVideoDevice:

Set the Current Camera AVCaptureDevice.

- setVideoConnection:

Set the Current Camera AVCaptureConnection.

- setVideoDeviceOrientation:

Set the Current Camera AVCaptureVideoOrientation.

- setMediaRatio:

Set the Current Camera ARGMediaRatio.

- setMediaMode:

Set the Current Camera ARGMediaMode.

- setVideoBitrate:

Set the Current Camera ARGMediaVideoBitrate.

- takePic:

Save a Picture

- getRecordingOrientation

Return Orientation of Video Recording.

- recordVideoStart:

Start Video Recording.

- recordVideoStop:save:

Stop Video Recording.

14.5.2 Details

NS_ENUM ARGMediaRatio (NSInteger)

Available Camera Screen Ratios Defined as Below.

ARGMediaRatio_16x9: 16:9 Ratio

ARGMediaRatio_4x3: 4:3 Ratio

ARGMediaRatio_1x1: 1:1 Ratio

NS_ENUM ARGMediaMode (NSInteger)

Available Media Mode Defined as Below.

ARGMediaModePhoto: Photo Mode

ARGMediaModeVideo: Video Mode

NS_ENUM ARGMediaVideoBitrate (NSInteger)

Available Video Recording Bitrate Defined as Below.

ARGMediaVideoBitrate_4M: 4000000 Bitrate

ARGMediaVideoBitrate_2M: 2000000 Bitrate

ARGMediaVideoBitrate_1M: 1000000 Bitrate

BOOL autoSave

To Determine whether Saving a Photo or Video Automatically. Default value is NO. When the autoSave variable is set as YES, it automatically saves contents.

BOOL recordSound

To Determine whether It Should Record Sound or Not. Default value is YES. This variable should be set before start recording.

- (void)setVideoDevice:(AVCaptureDevice *)device

This function should be called before using media functionalities. It sets AVCaptureDevice of the current camera.

Parameters

  • AVCaptureDevice device: AVCaptureDevice of of the Current Camera, Rendering CMSampleBufferRef to ARGSession

- (void)setVideoConnection:(AVCaptureConnection *)connection

This function should be called before using media functionalities. It sets AVCaptureConnection of the current camera.

Parameters

  • AVCaptureConnection connection:

    • AVCaptureConnection of the Current Camera, Rendering CMSampleBufferRef to ARGSession.

- (void)setVideoDeviceOrientation:(AVCaptureVideoOrientation)videoOrientation

This function should be called before using media functionalities. It sets AVCaptureVideoOrientation of the current camera.

Parameters

  • AVCaptureVideoOrientation videoOrientation: AVCaptureVideoOrientation of the Current Camera, Rendering CMSampleBufferRef to ARGSession.

- (void)setMediaRatio:(ARGMediaRatio)mediaRatio

This function should be called before using media functionalities. It sets ARGMediaRatio of the current camera.

Parameters

  • ARGMediaRatio mediaRatio: Screen Size Ratio of the Current Camera, Rendering CMSampleBufferRef to ARGSession.

- (void)setMediaMode:(ARGMediaMode)mediaMode

This function should be called before using media functionalities. It sets ARGMediaMode of the current camera.

Parameters

  • ARGMediaMode mediaMode: To Determine Photo or Video Mode

- (void)setVideoBitrate:(ARGMediaVideoBitrate)videoBitrate

This function should be called before using media functionalities. It sets ARGMediaVideoBitrate of the current camera. Higher bitrate records higher resolution.

Parameters

  • ARGMediaVideoBitrate videoBitrate: Video Bitrate to Be Recorded

- (void)takePic:(void (^ __nullable)(UIImage * _Nullable image))completion

Called when Taking a Photo. The function returns a captured image in UIImage format. When Contents are set, those rendered Contents are captured together.

Parameters

  • void (^ __nullable)(UIImage * _Nullable image)completion: Returns the Result of an Image in UIImage Format.

- (AVCaptureVideoOrientation)getRecordingOrientation

Return Device Orientation of a Camera during Video Recording.

Returns

  • AVCaptureVideoOrientation: Camera Device Orientation

- (void)recordVideoStart:(void (^ __nullable)(CGFloat recTime))completion

Called when Starting Video Recording. The function returns recTime included block continuously.

Parameters

  • void (^ __nullable)(CGFloat recTime)completion: Returns Recorded Time in recTime Variable Continuously.

- (void)recordVideoStop:(void (^ __nullable)(NSDictionary * __nonnull videoInfo))stopBlock

save:(void (^ __nullable)(NSDictionary * __nonnull videoInfo))saveBlock

Used when Stop Video Recording. The function returns saveBlock, which is converted from stopBlock after recording stopped.

Parameters

  • void (^ __nullable)(NSDictionary * __nonnull videoInfo)stopBlock: Returned when Video Recording Stopped. When recording sound is on, video and audio are stored separately in videoInfo.

  • void (^ __nullable)(NSDictionary * __nonnull videoInfo)saveBlock: Returned when Video and Audio Are Merged. The merged content is stored in videoInfo.

14.6 ARGConfig

14.6.1 Overview

Method

Description

- initWithApiURL:apiKey:secretKey:authKey:

Initialize ARGConfig with API information.

14.6.2 Details

- (id)initWithApiURL:(NSString *)apiURL apiKey:(NSString *)apiKey secretKey:(NSString *)secretKey authKey:(NSString *)authKey

Initialize ARGConfig using API Key information obtained from CMS in argear.io.

Parameters

  • NSString apiURL: URL Containing API Information except apiKey

  • NSString apiKey: API Key

  • NSString secretKey: Secret Key

  • NSString authKey: Authentication Key

Last updated