/// MotionTrackerCameraDevice implements a camera device with metric-scale six degree-of-freedom motion tracking, which outputs `InputFrame`_ (including image, camera parameters, timestamp, 6DOF pose and tracking status).
/// After creation, start/stop can be invoked to start or stop data flow.
/// When the component is not needed anymore, call close function to close it. It shall not be used after calling close.
/// MotionTrackerCameraDevice outputs `InputFrame`_ from inputFrameSource. inputFrameSource shall be connected to `InputFrameSink`_ for further use. Refer to `Overview <Overview.html>`__ .
/// bufferCapacity is the capacity of `InputFrame`_ buffer. If the count of `InputFrame`_ which has been output from the device and have not been released is higher than this number, the device will not output new `InputFrame`_ until previous `InputFrame`_ has been released. This may cause screen stuck. Refer to `Overview <Overview.html>`__ .
/// </summary>
voidsetBufferCapacity(intcapacity);
/// <summary>
/// Get `InputFrame`_ buffer capacity. The default is 8.
/// </summary>
intbufferCapacity();
/// <summary>
/// `InputFrame`_ output port.
/// </summary>
voidinputFrameSource(/* OUT */InputFrameSource**Return);
/// <summary>
/// Start motion tracking or resume motion tracking after pause.
/// Notice: Calling start after pausing will trigger device relocalization. Tracking will resume when the relocalization process succeeds.
/// </summary>
boolstart();
/// <summary>
/// Pause motion tracking. Call `start` to trigger relocation, resume motion tracking if the relocation succeeds.
/// </summary>
voidstop();
/// <summary>
/// Close motion tracking. The component shall not be used after calling close.
/// </summary>
voidclose();
/// <summary>
/// Perform hit test against the point cloud and return the nearest 3D point. The 3D point is represented by three consecutive values, representing X, Y, Z position coordinates in the world coordinate space.
/// For the camera image coordinate system ([0, 1]^2), x-right, y-down, and origin is at left-top corner. `CameraParameters.imageCoordinatesFromScreenCoordinates`_ can be used to convert points from screen coordinate system to camera image coordinate system.
/// </summary>
voidhitTestAgainstPointCloud(Vec2FcameraImagePoint,/* OUT */ListOfVec3F**Return);
/// <summary>
/// Performs ray cast from the user's device in the direction of given screen point.
/// Intersections with horizontal plane is detected in real time in the current field of view,and return the 3D point nearest to ray on horizontal plane.
/// For the camera image coordinate system ([0, 1]^2), x-right, y-down, and origin is at left-top corner. `CameraParameters.imageCoordinatesFromScreenCoordinates`_ can be used to convert points from screen coordinate system to camera image coordinate system.
/// The output point cloud coordinate on Horizontal plane is in the world coordinate system. The 3D point is represented by three consecutive values, representing X, Y, Z position coordinates in the world coordinate space.
/// </summary>
voidhitTestAgainstHorizontalPlane(Vec2FcameraImagePoint,/* OUT */ListOfVec3F**Return);
/// <summary>
/// Returns the vector of point cloud coordinate. Each 3D point is represented by three consecutive values, representing X, Y, Z position coordinates in the world coordinate space.
/// </summary>
voidgetLocalPointsCloud(/* OUT */ListOfVec3F**Return);
/// MotionTrackerCameraDevice implements a camera device with metric-scale six degree-of-freedom motion tracking, which outputs `InputFrame`_ (including image, camera parameters, timestamp, 6DOF pose and tracking status).
/// After creation, start/stop can be invoked to start or stop data flow.
/// When the component is not needed anymore, call close function to close it. It shall not be used after calling close.
/// MotionTrackerCameraDevice outputs `InputFrame`_ from inputFrameSource. inputFrameSource shall be connected to `InputFrameSink`_ for further use. Refer to `Overview <Overview.html>`__ .
/// bufferCapacity is the capacity of `InputFrame`_ buffer. If the count of `InputFrame`_ which has been output from the device and have not been released is higher than this number, the device will not output new `InputFrame`_ until previous `InputFrame`_ has been released. This may cause screen stuck. Refer to `Overview <Overview.html>`__ .
/// </summary>
-(void)setBufferCapacity:(int)capacity;
/// <summary>
/// Get `InputFrame`_ buffer capacity. The default is 8.
/// </summary>
-(int)bufferCapacity;
/// <summary>
/// `InputFrame`_ output port.
/// </summary>
-(easyar_InputFrameSource*)inputFrameSource;
/// <summary>
/// Start motion tracking or resume motion tracking after pause.
/// Notice: Calling start after pausing will trigger device relocalization. Tracking will resume when the relocalization process succeeds.
/// </summary>
-(bool)start;
/// <summary>
/// Pause motion tracking. Call `start` to trigger relocation, resume motion tracking if the relocation succeeds.
/// </summary>
-(void)stop;
/// <summary>
/// Close motion tracking. The component shall not be used after calling close.
/// </summary>
-(void)close;
/// <summary>
/// Perform hit test against the point cloud and return the nearest 3D point. The 3D point is represented by three consecutive values, representing X, Y, Z position coordinates in the world coordinate space.
/// For the camera image coordinate system ([0, 1]^2), x-right, y-down, and origin is at left-top corner. `CameraParameters.imageCoordinatesFromScreenCoordinates`_ can be used to convert points from screen coordinate system to camera image coordinate system.
/// Performs ray cast from the user's device in the direction of given screen point.
/// Intersections with horizontal plane is detected in real time in the current field of view,and return the 3D point nearest to ray on horizontal plane.
/// For the camera image coordinate system ([0, 1]^2), x-right, y-down, and origin is at left-top corner. `CameraParameters.imageCoordinatesFromScreenCoordinates`_ can be used to convert points from screen coordinate system to camera image coordinate system.
/// The output point cloud coordinate on Horizontal plane is in the world coordinate system. The 3D point is represented by three consecutive values, representing X, Y, Z position coordinates in the world coordinate space.
/// Returns the vector of point cloud coordinate. Each 3D point is represented by three consecutive values, representing X, Y, Z position coordinates in the world coordinate space.
/// Gets the scale of model. The value is the physical scale divided by model coordinate system scale. The default value is 1. (Supposing the unit of model coordinate system is 1 meter.)
/// Sets the scale of model. The value is the physical scale divided by model coordinate system scale. The default value is 1. (Supposing the unit of model coordinate system is 1 meter.)
/// It is needed to set the model scale in rendering engine separately.
voideasyar_ObjectTarget__ctor(/* OUT */easyar_ObjectTarget**Return);
/// <summary>
/// Creates a target from parameters.
/// </summary>
voideasyar_ObjectTarget_createFromParameters(easyar_ObjectTargetParameters*parameters,/* OUT */easyar_OptionalOfObjectTarget*Return);
/// <summary>
/// Creats a target from obj, mtl and jpg/png files.
/// </summary>
voideasyar_ObjectTarget_createFromObjectFile(easyar_String*path,easyar_StorageTypestorageType,easyar_String*name,easyar_String*uid,easyar_String*meta,floatscale,/* OUT */easyar_OptionalOfObjectTarget*Return);
/// <summary>
/// The scale of model. The value is the physical scale divided by model coordinate system scale. The default value is 1. (Supposing the unit of model coordinate system is 1 meter.)
/// The bounding box of object, it contains the 8 points of the box.
/// Vertices's indices are defined and stored following the rule:
/// ::
///
/// 4-----7
/// /| /|
/// 5-----6 | z
/// | | | | |
/// | 0---|-3 o---y
/// |/ |/ /
/// 1-----2 x
/// </summary>
voideasyar_ObjectTarget_boundingBox(easyar_ObjectTarget*This,/* OUT */easyar_ListOfVec3F**Return);
/// <summary>
/// Sets model target scale, this will overwrite the value set in the json file or the default value. The value is the physical scale divided by model coordinate system scale. The default value is 1. (Supposing the unit of model coordinate system is 1 meter.)
/// It is needed to set the model scale in rendering engine separately.
/// It also should been done before loading ObjectTarget into `ObjectTracker`_ using `ObjectTracker.loadTarget`_.
/// Returns the target uid. A target uid is useful in cloud based algorithms. If no cloud is used, you can set this uid in the json config as a alternative method to distinguish from targets.
/// </summary>
voideasyar_ObjectTarget_uid(consteasyar_ObjectTarget*This,/* OUT */easyar_String**Return);
/// <summary>
/// Returns the target name. Name is used to distinguish targets in a json file.
/// </summary>
voideasyar_ObjectTarget_name(consteasyar_ObjectTarget*This,/* OUT */easyar_String**Return);
/// <summary>
/// Set name. It will erase previously set data or data from cloud.
/// Gets target name. It can be used to distinguish targets.
/// </summary>
voidname(/* OUT */String**Return);
/// <summary>
/// Sets target name.
/// </summary>
voidsetName(String*name);
/// <summary>
/// Gets the target uid. You can set this uid in the json config as a method to distinguish from targets.
/// </summary>
voiduid(/* OUT */String**Return);
/// <summary>
/// Sets target uid.
/// </summary>
voidsetUid(String*uid);
/// <summary>
/// Gets meta data.
/// </summary>
voidmeta(/* OUT */String**Return);
/// <summary>
/// Sets meta data。
/// </summary>
voidsetMeta(String*meta);
/// <summary>
/// Gets the scale of model. The value is the physical scale divided by model coordinate system scale. The default value is 1. (Supposing the unit of model coordinate system is 1 meter.)
/// </summary>
floatscale();
/// <summary>
/// Sets the scale of model. The value is the physical scale divided by model coordinate system scale. The default value is 1. (Supposing the unit of model coordinate system is 1 meter.)
/// It is needed to set the model scale in rendering engine separately.
/// </summary>
voidsetScale(floatsize);
};
/// <summary>
/// ObjectTarget represents 3d object targets that can be tracked by `ObjectTracker`_ .
/// The size of ObjectTarget is determined by the `obj` file. You can change it by changing the object `scale`, which is default to 1.
/// A ObjectTarget can be tracked by `ObjectTracker`_ after a successful load into the `ObjectTracker`_ using `ObjectTracker.loadTarget`_ .
staticvoidcreateFromParameters(ObjectTargetParameters*parameters,/* OUT */ObjectTarget**Return);
/// <summary>
/// Creats a target from obj, mtl and jpg/png files.
/// </summary>
staticvoidcreateFromObjectFile(String*path,StorageTypestorageType,String*name,String*uid,String*meta,floatscale,/* OUT */ObjectTarget**Return);
/// <summary>
/// The scale of model. The value is the physical scale divided by model coordinate system scale. The default value is 1. (Supposing the unit of model coordinate system is 1 meter.)
/// </summary>
floatscale();
/// <summary>
/// The bounding box of object, it contains the 8 points of the box.
/// Vertices's indices are defined and stored following the rule:
/// ::
///
/// 4-----7
/// /| /|
/// 5-----6 | z
/// | | | | |
/// | 0---|-3 o---y
/// |/ |/ /
/// 1-----2 x
/// </summary>
voidboundingBox(/* OUT */ListOfVec3F**Return);
/// <summary>
/// Sets model target scale, this will overwrite the value set in the json file or the default value. The value is the physical scale divided by model coordinate system scale. The default value is 1. (Supposing the unit of model coordinate system is 1 meter.)
/// It is needed to set the model scale in rendering engine separately.
/// It also should been done before loading ObjectTarget into `ObjectTracker`_ using `ObjectTracker.loadTarget`_.
/// </summary>
boolsetScale(floatscale);
/// <summary>
/// Returns the target id. A target id is a integer number generated at runtime. This id is non-zero and increasing globally.
/// </summary>
intruntimeID();
/// <summary>
/// Returns the target uid. A target uid is useful in cloud based algorithms. If no cloud is used, you can set this uid in the json config as a alternative method to distinguish from targets.
/// </summary>
voiduid(/* OUT */String**Return);
/// <summary>
/// Returns the target name. Name is used to distinguish targets in a json file.
/// </summary>
voidname(/* OUT */String**Return);
/// <summary>
/// Set name. It will erase previously set data or data from cloud.
/// </summary>
voidsetName(String*name);
/// <summary>
/// Returns the meta data set by setMetaData. Or, in a cloud returned target, returns the meta data set in the cloud server.
/// </summary>
voidmeta(/* OUT */String**Return);
/// <summary>
/// Set meta data. It will erase previously set data or data from cloud.
/// </summary>
voidsetMeta(String*data);
staticvoidtryCastFromTarget(Target*v,/* OUT */ObjectTarget**Return);
/// Gets target name. It can be used to distinguish targets.
/// </summary>
-(NSString*)name;
/// <summary>
/// Sets target name.
/// </summary>
-(void)setName:(NSString*)name;
/// <summary>
/// Gets the target uid. You can set this uid in the json config as a method to distinguish from targets.
/// </summary>
-(NSString*)uid;
/// <summary>
/// Sets target uid.
/// </summary>
-(void)setUid:(NSString*)uid;
/// <summary>
/// Gets meta data.
/// </summary>
-(NSString*)meta;
/// <summary>
/// Sets meta data。
/// </summary>
-(void)setMeta:(NSString*)meta;
/// <summary>
/// Gets the scale of model. The value is the physical scale divided by model coordinate system scale. The default value is 1. (Supposing the unit of model coordinate system is 1 meter.)
/// </summary>
-(float)scale;
/// <summary>
/// Sets the scale of model. The value is the physical scale divided by model coordinate system scale. The default value is 1. (Supposing the unit of model coordinate system is 1 meter.)
/// It is needed to set the model scale in rendering engine separately.
/// </summary>
-(void)setScale:(float)size;
@end
/// <summary>
/// ObjectTarget represents 3d object targets that can be tracked by `ObjectTracker`_ .
/// The size of ObjectTarget is determined by the `obj` file. You can change it by changing the object `scale`, which is default to 1.
/// A ObjectTarget can be tracked by `ObjectTracker`_ after a successful load into the `ObjectTracker`_ using `ObjectTracker.loadTarget`_ .
/// The scale of model. The value is the physical scale divided by model coordinate system scale. The default value is 1. (Supposing the unit of model coordinate system is 1 meter.)
/// </summary>
-(float)scale;
/// <summary>
/// The bounding box of object, it contains the 8 points of the box.
/// Vertices's indices are defined and stored following the rule:
/// ::
///
/// 4-----7
/// /| /|
/// 5-----6 | z
/// | | | | |
/// | 0---|-3 o---y
/// |/ |/ /
/// 1-----2 x
/// </summary>
-(NSArray<easyar_Vec3F*>*)boundingBox;
/// <summary>
/// Sets model target scale, this will overwrite the value set in the json file or the default value. The value is the physical scale divided by model coordinate system scale. The default value is 1. (Supposing the unit of model coordinate system is 1 meter.)
/// It is needed to set the model scale in rendering engine separately.
/// It also should been done before loading ObjectTarget into `ObjectTracker`_ using `ObjectTracker.loadTarget`_.
/// </summary>
-(bool)setScale:(float)scale;
/// <summary>
/// Returns the target id. A target id is a integer number generated at runtime. This id is non-zero and increasing globally.
/// </summary>
-(int)runtimeID;
/// <summary>
/// Returns the target uid. A target uid is useful in cloud based algorithms. If no cloud is used, you can set this uid in the json config as a alternative method to distinguish from targets.
/// </summary>
-(NSString*)uid;
/// <summary>
/// Returns the target name. Name is used to distinguish targets in a json file.
/// </summary>
-(NSString*)name;
/// <summary>
/// Set name. It will erase previously set data or data from cloud.
/// </summary>
-(void)setName:(NSString*)name;
/// <summary>
/// Returns the meta data set by setMetaData. Or, in a cloud returned target, returns the meta data set in the cloud server.
/// </summary>
-(NSString*)meta;
/// <summary>
/// Set meta data. It will erase previously set data or data from cloud.
/// Load a `Target`_ into the tracker. A Target can only be tracked by tracker after a successful load.
/// This method is an asynchronous method. A load operation may take some time to finish and detection of a new/lost target may take more time during the load. The track time after detection will not be affected. If you want to know the load result, you have to handle the callback data. The callback will be called from the thread specified by `CallbackScheduler`_ . It will not block the track thread or any other operations except other load/unload.
/// This method is an asynchronous method. An unload operation may take some time to finish and detection of a new/lost target may take more time during the unload. If you want to know the unload result, you have to handle the callback data. The callback will be called from the thread specified by `CallbackScheduler`_ . It will not block the track thread or any other operations except other load/unload.
/// Returns current loaded targets in the tracker. If an asynchronous load/unload is in progress, the returned value will not reflect the result until all load/unload finish.
/// </summary>
voideasyar_ObjectTracker_targets(consteasyar_ObjectTracker*This,/* OUT */easyar_ListOfTarget**Return);
/// <summary>
/// Sets the max number of targets which will be the simultaneously tracked by the tracker. The default value is 1.
staticvoidtryCastFromFrameFilterResult(FrameFilterResult*v,/* OUT */ObjectTrackerResult**Return);
staticvoidtryCastFromTargetTrackerResult(TargetTrackerResult*v,/* OUT */ObjectTrackerResult**Return);
};
/// <summary>
/// ObjectTracker implements 3D object target detection and tracking.
/// ObjectTracker occupies (1 + SimultaneousNum) buffers of camera. Use setBufferCapacity of camera to set an amount of buffers that is not less than the sum of amount of buffers occupied by all components. Refer to `Overview <Overview.html>`__ .
/// After creation, you can call start/stop to enable/disable the track process. start and stop are very lightweight calls.
/// When the component is not needed anymore, call close function to close it. It shall not be used after calling close.
/// ObjectTracker inputs `FeedbackFrame`_ from feedbackFrameSink. `FeedbackFrameSource`_ shall be connected to feedbackFrameSink for use. Refer to `Overview <Overview.html>`__ .
/// Before a `Target`_ can be tracked by ObjectTracker, you have to load it using loadTarget/unloadTarget. You can get load/unload results from callbacks passed into the interfaces.
/// `FeedbackFrame`_ input port. The InputFrame member of FeedbackFrame must have raw image, timestamp, and camera parameters.
/// </summary>
voidfeedbackFrameSink(/* OUT */FeedbackFrameSink**Return);
/// <summary>
/// Camera buffers occupied in this component.
/// </summary>
intbufferRequirement();
/// <summary>
/// `OutputFrame`_ output port.
/// </summary>
voidoutputFrameSource(/* OUT */OutputFrameSource**Return);
/// <summary>
/// Creates an instance.
/// </summary>
staticvoidcreate(/* OUT */ObjectTracker**Return);
/// <summary>
/// Starts the track algorithm.
/// </summary>
boolstart();
/// <summary>
/// Stops the track algorithm. Call start to start the track again.
/// </summary>
voidstop();
/// <summary>
/// Close. The component shall not be used after calling close.
/// </summary>
voidclose();
/// <summary>
/// Load a `Target`_ into the tracker. A Target can only be tracked by tracker after a successful load.
/// This method is an asynchronous method. A load operation may take some time to finish and detection of a new/lost target may take more time during the load. The track time after detection will not be affected. If you want to know the load result, you have to handle the callback data. The callback will be called from the thread specified by `CallbackScheduler`_ . It will not block the track thread or any other operations except other load/unload.
/// This method is an asynchronous method. An unload operation may take some time to finish and detection of a new/lost target may take more time during the unload. If you want to know the unload result, you have to handle the callback data. The callback will be called from the thread specified by `CallbackScheduler`_ . It will not block the track thread or any other operations except other load/unload.
/// Returns current loaded targets in the tracker. If an asynchronous load/unload is in progress, the returned value will not reflect the result until all load/unload finish.
/// </summary>
voidtargets(/* OUT */ListOfTarget**Return);
/// <summary>
/// Sets the max number of targets which will be the simultaneously tracked by the tracker. The default value is 1.
/// </summary>
boolsetSimultaneousNum(intnum);
/// <summary>
/// Gets the max number of targets which will be the simultaneously tracked by the tracker. The default value is 1.
/// ObjectTracker implements 3D object target detection and tracking.
/// ObjectTracker occupies (1 + SimultaneousNum) buffers of camera. Use setBufferCapacity of camera to set an amount of buffers that is not less than the sum of amount of buffers occupied by all components. Refer to `Overview <Overview.html>`__ .
/// After creation, you can call start/stop to enable/disable the track process. start and stop are very lightweight calls.
/// When the component is not needed anymore, call close function to close it. It shall not be used after calling close.
/// ObjectTracker inputs `FeedbackFrame`_ from feedbackFrameSink. `FeedbackFrameSource`_ shall be connected to feedbackFrameSink for use. Refer to `Overview <Overview.html>`__ .
/// Before a `Target`_ can be tracked by ObjectTracker, you have to load it using loadTarget/unloadTarget. You can get load/unload results from callbacks passed into the interfaces.
/// </summary>
@interfaceeasyar_ObjectTracker:easyar_RefBase
+(instancetype)newNS_UNAVAILABLE;
-(instancetype)initNS_UNAVAILABLE;
/// <summary>
/// Returns true.
/// </summary>
+(bool)isAvailable;
/// <summary>
/// `FeedbackFrame`_ input port. The InputFrame member of FeedbackFrame must have raw image, timestamp, and camera parameters.
/// </summary>
-(easyar_FeedbackFrameSink*)feedbackFrameSink;
/// <summary>
/// Camera buffers occupied in this component.
/// </summary>
-(int)bufferRequirement;
/// <summary>
/// `OutputFrame`_ output port.
/// </summary>
-(easyar_OutputFrameSource*)outputFrameSource;
/// <summary>
/// Creates an instance.
/// </summary>
+(easyar_ObjectTracker*)create;
/// <summary>
/// Starts the track algorithm.
/// </summary>
-(bool)start;
/// <summary>
/// Stops the track algorithm. Call start to start the track again.
/// </summary>
-(void)stop;
/// <summary>
/// Close. The component shall not be used after calling close.
/// </summary>
-(void)close;
/// <summary>
/// Load a `Target`_ into the tracker. A Target can only be tracked by tracker after a successful load.
/// This method is an asynchronous method. A load operation may take some time to finish and detection of a new/lost target may take more time during the load. The track time after detection will not be affected. If you want to know the load result, you have to handle the callback data. The callback will be called from the thread specified by `CallbackScheduler`_ . It will not block the track thread or any other operations except other load/unload.
/// This method is an asynchronous method. An unload operation may take some time to finish and detection of a new/lost target may take more time during the unload. If you want to know the unload result, you have to handle the callback data. The callback will be called from the thread specified by `CallbackScheduler`_ . It will not block the track thread or any other operations except other load/unload.
/// Returns current loaded targets in the tracker. If an asynchronous load/unload is in progress, the returned value will not reflect the result until all load/unload finish.
/// </summary>
-(NSArray<easyar_Target*>*)targets;
/// <summary>
/// Sets the max number of targets which will be the simultaneously tracked by the tracker. The default value is 1.
/// </summary>
-(bool)setSimultaneousNum:(int)num;
/// <summary>
/// Gets the max number of targets which will be the simultaneously tracked by the tracker. The default value is 1.
/// Returns true only on Android 4.3 or later, or on iOS.
/// </summary>
booleasyar_Recorder_isAvailable(void);
/// <summary>
/// Requests recording permissions from operating system. You can call this function or request permission directly from operating system. It is only available on Android and iOS. On other platforms, it will call the callback directly with status being granted. This function need to be called from the UI thread.
/// Creates an instance and initialize recording. statusCallback will dispatch event of status change and corresponding log.
/// </summary>
voideasyar_Recorder_create(easyar_RecorderConfiguration*config,easyar_CallbackScheduler*callbackScheduler,easyar_OptionalOfFunctorOfVoidFromRecordStatusAndStringstatusCallback,/* OUT */easyar_Recorder**Return);
/// Recorder implements recording for current rendering screen.
/// Currently Recorder only works on Android (4.3 or later) and iOS with OpenGL ES 2.0 context.
/// Due to the dependency to OpenGLES, every method in this class (except requestPermissions, including the destructor) has to be called in a single thread containing an OpenGLES context.
/// **Unity Only** If in Unity, Multi-threaded rendering is enabled, scripting thread and rendering thread will be two separate threads, which makes it impossible to call updateFrame in the rendering thread. For this reason, to use Recorder, Multi-threaded rendering option shall be disabled.
/// Returns true only on Android 4.3 or later, or on iOS.
/// </summary>
staticboolisAvailable();
/// <summary>
/// Requests recording permissions from operating system. You can call this function or request permission directly from operating system. It is only available on Android and iOS. On other platforms, it will call the callback directly with status being granted. This function need to be called from the UI thread.
/// Creates an instance and initialize recording. statusCallback will dispatch event of status change and corresponding log.
/// </summary>
staticvoidcreate(RecorderConfiguration*config,CallbackScheduler*callbackScheduler,OptionalOfFunctorOfVoidFromRecordStatusAndStringstatusCallback,/* OUT */Recorder**Return);
inlinevoidRecorder::create(RecorderConfiguration*arg0,CallbackScheduler*arg1,OptionalOfFunctorOfVoidFromRecordStatusAndStringarg2,/* OUT */Recorder**Return)
staticvoidFunctorOfVoidFromPermissionStatusAndString_func(void*_state,easyar_PermissionStatusarg0,easyar_String*arg1,/* OUT */easyar_String**_exception)