Class XRCameraSubsystem.Provider
Interface for providing camera functionality for the implementation.
Namespace: UnityEngine.XR.ARSubsystems
Syntax
protected class Provider
Properties
cameraFocusMode
Property to be implemented by the provider to get or set the focus mode for the camera.
Declaration
public virtual CameraFocusMode cameraFocusMode { get; set; }
Property Value
Type | Description |
---|---|
CameraFocusMode |
cameraMaterial
Property to be implemented by the provder to get the material used by XRCameraSubsystem
to
render the camera texture.
Declaration
public virtual Material cameraMaterial { get; }
Property Value
Type | Description |
---|---|
Material | The material to render the camera texture. |
currentConfiguration
Property to be implemented by the provider to query/set the current camera configuration.
Declaration
public virtual XRCameraConfiguration? currentConfiguration { get; set; }
Property Value
Type | Description |
---|---|
Nullable<XRCameraConfiguration> | The current camera configuration if it exists. Otherise, |
Exceptions
Type | Condition |
---|---|
NotSupportedException | Thrown when setting the current configuration if the implementation does not support camera configurations. |
ArgumentException | Thrown when setting the current configuration if the given configuration is not a valid, supported camera configuration. |
InvalidOperationException | Thrown when setting the current configuration if the implementation is unable to set the current camera configuration. |
invertCulling
Whether or not culling should be inverted during rendering. Some front-facing camera modes may require this.
Declaration
public virtual bool invertCulling { get; }
Property Value
Type | Description |
---|---|
Boolean |
permissionGranted
Property to be implemented by the provider to determine whether camera permission has been granted.
Declaration
public virtual bool permissionGranted { get; }
Property Value
Type | Description |
---|---|
Boolean |
|
Methods
ConvertAsync(Int32, XRCameraImageConversionParams)
Method to be implemented by the provider to create an asynchronous request to convert a camera image, similar to TryConvert(Int32, XRCameraImageConversionParams, IntPtr, Int32) except the conversion should happen on a thread other than the calling (main) thread.
Declaration
public virtual int ConvertAsync(int nativeHandle, XRCameraImageConversionParams conversionParams)
Parameters
Type | Name | Description |
---|---|---|
Int32 | nativeHandle | A unique identifier for the camera image to convert. |
XRCameraImageConversionParams | conversionParams | The parameters to use during the conversion. |
Returns
Type | Description |
---|---|
Int32 | A unique identifier for this request. |
Exceptions
Type | Condition |
---|---|
NotSupportedException | Thrown if the implementation does not support camera image. |
ConvertAsync(Int32, XRCameraImageConversionParams, XRCameraSubsystem.OnImageRequestCompleteDelegate, IntPtr)
Method to be implemented by the provider to similar to ConvertAsync(Int32, XRCameraImageConversionParams) but takes a delegate to invoke when the request is complete, rather than returning a request id.
Declaration
public virtual void ConvertAsync(int nativeHandle, XRCameraImageConversionParams conversionParams, XRCameraSubsystem.OnImageRequestCompleteDelegate callback, IntPtr context)
Parameters
Type | Name | Description |
---|---|---|
Int32 | nativeHandle | A unique identifier for the camera image to convert. |
XRCameraImageConversionParams | conversionParams | The parameters to use during the conversion. |
XRCameraSubsystem.OnImageRequestCompleteDelegate | callback | A delegate which must be invoked when the request is complete, whether the conversion was successfully or not. |
IntPtr | context | A native pointer which must be passed back unaltered to
|
Remarks
If the first parameter to callback
is
Ready then the dataPtr
parameter must be valid
for the duration of the invocation. The data may be destroyed immediately upon return. The
context
parameter must be passed back to the callback
.
Exceptions
Type | Condition |
---|---|
NotSupportedException | Thrown if the implementation does not support camera image. |
CreateCameraMaterial(String)
Create the camera material from the given camera shader name.
Declaration
protected Material CreateCameraMaterial(string cameraShaderName)
Parameters
Type | Name | Description |
---|---|---|
String | cameraShaderName | The name of the camera shader. |
Returns
Type | Description |
---|---|
Material | The created camera material shader. |
Exceptions
Type | Condition |
---|---|
InvalidOperationException | Thrown if the shader cannot be found or if a material cannot be created for the shader. |
Destroy()
Method to be implemented by provider to destroy the camera for the subsystem.
Declaration
public virtual void Destroy()
DisposeAsyncRequest(Int32)
Method to be implemented by the provider to dispose an existing async conversion request.
Declaration
public virtual void DisposeAsyncRequest(int requestId)
Parameters
Type | Name | Description |
---|---|---|
Int32 | requestId | A unique identifier for the request. |
Exceptions
Type | Condition |
---|---|
NotSupportedException | Thrown if the implementation does not support camera image. |
See Also
DisposeImage(Int32)
Method to be implemented by the provider to dispose an existing native image identified by
nativeHandle
.
Declaration
public virtual void DisposeImage(int nativeHandle)
Parameters
Type | Name | Description |
---|---|---|
Int32 | nativeHandle | A unique identifier for this camera image. |
Exceptions
Type | Condition |
---|---|
NotSupportedException | Thrown if the implementation does not support camera image. |
See Also
GetAsyncRequestStatus(Int32)
Method to be implemented by the provider to get the status of an existing asynchronous conversion request.
Declaration
public virtual AsyncCameraImageConversionStatus GetAsyncRequestStatus(int requestId)
Parameters
Type | Name | Description |
---|---|---|
Int32 | requestId | The unique identifier associated with a request. |
Returns
Type | Description |
---|---|
AsyncCameraImageConversionStatus | The state of the request. |
Exceptions
Type | Condition |
---|---|
NotSupportedException | Thrown if the implementation does not support camera image. |
See Also
GetConfigurations(XRCameraConfiguration, Allocator)
Method to be implemented by the provider to query the supported camera configurations.
Declaration
public virtual NativeArray<XRCameraConfiguration> GetConfigurations(XRCameraConfiguration defaultCameraConfiguration, Allocator allocator)
Parameters
Type | Name | Description |
---|---|---|
XRCameraConfiguration | defaultCameraConfiguration | A default value used to fill the returned array before copying in real values. This ensures future additions to this struct are backwards compatible. |
Allocator | allocator | The allocation strategy to use for the returned data. |
Returns
Type | Description |
---|---|
NativeArray<XRCameraConfiguration> | The supported camera configurations. |
GetTextureDescriptors(XRTextureDescriptor, Allocator)
Get the XRTextureDescriptors associated with the current XRCameraFrame.
Declaration
public virtual NativeArray<XRTextureDescriptor> GetTextureDescriptors(XRTextureDescriptor defaultDescriptor, Allocator allocator)
Parameters
Type | Name | Description |
---|---|---|
XRTextureDescriptor | defaultDescriptor | A default value which should be used to fill the returned array before copying in the real values. This ensures future additions to this struct are backwards compatible. |
Allocator | allocator | The allocator to use when creating
the returned |
Returns
Type | Description |
---|---|
NativeArray<XRTextureDescriptor> | The current texture descriptors. |
NativeHandleValid(Int32)
Method to be implemented by the provider to determine whether a native image handle returned by TryAcquireLatestImage(out XRCameraSubsystem.CameraImageCinfo) is currently valid. An image may become invalid if it has been disposed.
Declaration
public virtual bool NativeHandleValid(int nativeHandle)
Parameters
Type | Name | Description |
---|---|---|
Int32 | nativeHandle | A unique identifier for the camera image in question. |
Returns
Type | Description |
---|---|
Boolean |
|
Remarks
If a handle is valid, TryConvert(Int32, XRCameraImageConversionParams, IntPtr, Int32) and TryGetConvertedDataSize(Int32, Vector2Int, TextureFormat, out Int32) should not fail.
Exceptions
Type | Condition |
---|---|
NotSupportedException | Thrown if the implementation does not support camera image. |
See Also
Start()
Method to be implemented by provider to start the camera for the subsystem.
Declaration
public virtual void Start()
Stop()
Method to be implemented by provider to stop the camera for the subsystem.
Declaration
public virtual void Stop()
TryAcquireLatestImage(out XRCameraSubsystem.CameraImageCinfo)
Method to be implemented by the provider to query for the latest native camera image.
Declaration
public virtual bool TryAcquireLatestImage(out XRCameraSubsystem.CameraImageCinfo cameraImageCinfo)
Parameters
Type | Name | Description |
---|---|---|
XRCameraSubsystem.CameraImageCinfo | cameraImageCinfo | The metadata required to construct a XRCameraImage |
Returns
Type | Description |
---|---|
Boolean |
|
Exceptions
Type | Condition |
---|---|
NotSupportedException | Thrown if the implementation does not support camera image. |
TryConvert(Int32, XRCameraImageConversionParams, IntPtr, Int32)
Method to be implemented by the provider to convert the image with handle
nativeHandle
using the provided .
Declaration
public virtual bool TryConvert(int nativeHandle, XRCameraImageConversionParams conversionParams, IntPtr destinationBuffer, int bufferLength)
Parameters
Type | Name | Description |
---|---|---|
Int32 | nativeHandle | A unique identifier for the camera image to convert. |
XRCameraImageConversionParams | conversionParams | The parameters to use during the conversion. |
IntPtr | destinationBuffer | A buffer to write the converted image to. |
Int32 | bufferLength | The number of bytes available in the buffer. |
Returns
Type | Description |
---|---|
Boolean |
|
Exceptions
Type | Condition |
---|---|
NotSupportedException | Thrown if the implementation does not support camera image. |
TryGetAsyncRequestData(Int32, out IntPtr, out Int32)
Method to be implemented by the provider to get a pointer to the image data from a completed asynchronous request. This method should only succeed if GetAsyncRequestStatus(Int32) returns Ready.
Declaration
public virtual bool TryGetAsyncRequestData(int requestId, out IntPtr dataPtr, out int dataLength)
Parameters
Type | Name | Description |
---|---|---|
Int32 | requestId | The unique identifier associated with a request. |
IntPtr | dataPtr | A pointer to the native buffer containing the data. |
Int32 | dataLength | The number of bytes in |
Returns
Type | Description |
---|---|
Boolean |
|
Exceptions
Type | Condition |
---|---|
NotSupportedException | Thrown if the implementation does not support camera image. |
TryGetConvertedDataSize(Int32, Vector2Int, TextureFormat, out Int32)
Method to be implemented by the provider to get the number of bytes required to store an image with the
given dimensions and TextureFormat
.
Declaration
public virtual bool TryGetConvertedDataSize(int nativeHandle, Vector2Int dimensions, TextureFormat format, out int size)
Parameters
Type | Name | Description |
---|---|---|
Int32 | nativeHandle | A unique identifier for the camera image to convert. |
Vector2Int | dimensions | The dimensions of the output image. |
TextureFormat | format | The |
Int32 | size | The number of bytes required to store the converted image. |
Returns
Type | Description |
---|---|
Boolean |
|
Exceptions
Type | Condition |
---|---|
NotSupportedException | Thrown if the implementation does not support camera image. |
TryGetFrame(XRCameraParams, out XRCameraFrame)
Method to be implemented by provider to get the camera frame for the subsystem.
Declaration
public virtual bool TryGetFrame(XRCameraParams cameraParams, out XRCameraFrame cameraFrame)
Parameters
Type | Name | Description |
---|---|---|
XRCameraParams | cameraParams | The current Unity |
XRCameraFrame | cameraFrame | The current camera frame returned by the method. |
Returns
Type | Description |
---|---|
Boolean |
|
TryGetIntrinsics(out XRCameraIntrinsics)
Method to be implemented by the provider to get the camera intrinisics information.
Declaration
public virtual bool TryGetIntrinsics(out XRCameraIntrinsics cameraIntrinsics)
Parameters
Type | Name | Description |
---|---|---|
XRCameraIntrinsics | cameraIntrinsics | The camera intrinsics information returned from the method. |
Returns
Type | Description |
---|---|
Boolean |
|
TryGetPlane(Int32, Int32, out XRCameraSubsystem.CameraImagePlaneCinfo)
Method to be implemented by the provider to get information about an image plane from a native image handle by index.
Declaration
public virtual bool TryGetPlane(int nativeHandle, int planeIndex, out XRCameraSubsystem.CameraImagePlaneCinfo planeCinfo)
Parameters
Type | Name | Description |
---|---|---|
Int32 | nativeHandle | A unique identifier for this camera image. |
Int32 | planeIndex | The index of the plane to get. |
XRCameraSubsystem.CameraImagePlaneCinfo | planeCinfo | The returned camera plane information if successful. |
Returns
Type | Description |
---|---|
Boolean |
|
Exceptions
Type | Condition |
---|---|
NotSupportedException | Thrown if the implementation does not support camera image. |
See Also
TrySetLightEstimationMode(LightEstimationMode)
Method to be implemented by the provider to set the light estimation mode.
Declaration
public virtual bool TrySetLightEstimationMode(LightEstimationMode lightEstimationMode)
Parameters
Type | Name | Description |
---|---|---|
LightEstimationMode | lightEstimationMode | The light estimation mode to set. |
Returns
Type | Description |
---|---|
Boolean |
|