/// ARKitCameraDevice implements a camera device based on ARKit, which outputs `InputFrame`_ (including image, camera parameters, timestamp, 6DOF location, and tracking status).
/// After creation, start/stop can be invoked to start or stop data collection.
/// When the component is not needed anymore, call close function to close it. It shall not be used after calling close.
/// ARKitCameraDevice outputs `InputFrame`_ from inputFrameSource. inputFrameSource shall be connected to `InputFrameSink`_ for 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 more than this number, the device will not output new `InputFrame`_ , until previous `InputFrame`_ have been released. This may cause screen stuck. Refer to `Overview <Overview.html>`__ .
/// </summary>
@interfaceeasyar_ARKitCameraDevice:easyar_RefBase
+(instancetype)newNS_UNAVAILABLE;
-(instancetype)initNS_UNAVAILABLE;
+(easyar_ARKitCameraDevice*)create;
/// <summary>
/// Checks if the component is available. It returns true only on iOS 11 or later when ARKit is supported by hardware.
/// </summary>
+(bool)isAvailable;
/// <summary>
/// `InputFrame`_ buffer capacity. The default is 8.
/// </summary>
-(int)bufferCapacity;
/// <summary>
/// Sets `InputFrame`_ buffer capacity.
/// </summary>
-(void)setBufferCapacity:(int)capacity;
/// <summary>
/// `InputFrame`_ output port.
/// </summary>
-(easyar_InputFrameSource*)inputFrameSource;
/// <summary>
/// Starts video stream capture.
/// </summary>
-(bool)start;
/// <summary>
/// Stops video stream capture.
/// </summary>
-(void)stop;
/// <summary>
/// Close. The component shall not be used after calling close.
/// Wraps a raw memory block. When Buffer is released by all holders, deleter callback will be invoked to execute user-defined memory destruction. deleter must be thread-safe.
/// </summary>
voideasyar_Buffer_wrap(void*ptr,intsize,easyar_FunctorOfVoiddeleter,/* OUT */easyar_Buffer**Return);
/// <summary>
/// Creates a Buffer of specified byte size.
/// </summary>
voideasyar_Buffer_create(intsize,/* OUT */easyar_Buffer**Return);
/// <summary>
/// Returns raw data address.
/// </summary>
void*easyar_Buffer_data(consteasyar_Buffer*This);
/// <summary>
/// Byte size of raw data.
/// </summary>
inteasyar_Buffer_size(consteasyar_Buffer*This);
/// <summary>
/// Copies raw memory. It can be used in languages or platforms without complete support for memory operations.
/// Tries to copy data from a raw memory address into Buffer. If copy succeeds, it returns true, or else it returns false. Possible failure causes includes: source or destination data range overflow.
/// Wraps a raw memory block. When Buffer is released by all holders, deleter callback will be invoked to execute user-defined memory destruction. deleter must be thread-safe.
/// </summary>
staticvoidwrap(void*ptr,intsize,FunctorOfVoiddeleter,/* OUT */Buffer**Return);
/// <summary>
/// Creates a Buffer of specified byte size.
/// </summary>
staticvoidcreate(intsize,/* OUT */Buffer**Return);
/// <summary>
/// Returns raw data address.
/// </summary>
void*data();
/// <summary>
/// Byte size of raw data.
/// </summary>
intsize();
/// <summary>
/// Copies raw memory. It can be used in languages or platforms without complete support for memory operations.
/// Tries to copy data from a raw memory address into Buffer. If copy succeeds, it returns true, or else it returns false. Possible failure causes includes: source or destination data range overflow.
/// Buffer stores a raw byte array, which can be used to access image data.
/// To access image data in Java API, get buffer from `Image`_ and copy to a Java byte array.
/// You can always access image data since the first version of EasyAR Sense. Refer to `Image`_ .
/// </summary>
@interfaceeasyar_Buffer:easyar_RefBase
+(instancetype)newNS_UNAVAILABLE;
-(instancetype)initNS_UNAVAILABLE;
/// <summary>
/// Wraps a raw memory block. When Buffer is released by all holders, deleter callback will be invoked to execute user-defined memory destruction. deleter must be thread-safe.
/// Tries to copy data from a raw memory address into Buffer. If copy succeeds, it returns true, or else it returns false. Possible failure causes includes: source or destination data range overflow.
/// Tries to acquire a memory block. If current acquired count of `Buffer`_ does not reach maximum, a new `Buffer`_ is fetched or allocated, or else null is returned.
/// </summary>
voideasyar_BufferPool_tryAcquire(easyar_BufferPool*This,/* OUT */easyar_OptionalOfBuffer*Return);
/// BufferPool is a memory pool to reduce memory allocation time consumption for functionality like custom camera interoperability, which needs to allocate memory buffers of a fixed size repeatedly.
/// block_size is the byte size of each `Buffer`_ .
/// capacity is the maximum count of `Buffer`_ .
/// </summary>
BufferPool(intblock_size,intcapacity);
/// <summary>
/// The byte size of each `Buffer`_ .
/// </summary>
intblock_size();
/// <summary>
/// The maximum count of `Buffer`_ .
/// </summary>
intcapacity();
/// <summary>
/// Current acquired count of `Buffer`_ .
/// </summary>
intsize();
/// <summary>
/// Tries to acquire a memory block. If current acquired count of `Buffer`_ does not reach maximum, a new `Buffer`_ is fetched or allocated, or else null is returned.
/// BufferPool is a memory pool to reduce memory allocation time consumption for functionality like custom camera interoperability, which needs to allocate memory buffers of a fixed size repeatedly.
/// </summary>
@interfaceeasyar_BufferPool:easyar_RefBase
+(instancetype)newNS_UNAVAILABLE;
-(instancetype)initNS_UNAVAILABLE;
/// <summary>
/// block_size is the byte size of each `Buffer`_ .
/// Tries to acquire a memory block. If current acquired count of `Buffer`_ does not reach maximum, a new `Buffer`_ is fetched or allocated, or else null is returned.
/// CalibrationDownloader is used for download and update of calibration data in MotionTracker. The calibration data will only take effect after reallocation of MotionTracker.
staticvoidFunctorOfVoidFromCalibrationDownloadStatusAndOptionalOfString_func(void*_state,easyar_CalibrationDownloadStatus,easyar_OptionalOfString,/* OUT */easyar_String**_exception);
staticvoidFunctorOfVoidFromCalibrationDownloadStatusAndOptionalOfString_func(void*_state,easyar_CalibrationDownloadStatusarg0,easyar_OptionalOfStringarg1,/* OUT */easyar_String**_exception)
/// CalibrationDownloader is used for download and update of calibration data in MotionTracker. The calibration data will only take effect after reallocation of MotionTracker.