@ -3690,108 +3690,6 @@ typedef enum acamera_metadata_tag {
ACAMERA_SCALER_AVAILABLE_RECOMMENDED_INPUT_OUTPUT_FORMATS_MAP =
ACAMERA_SCALER_AVAILABLE_RECOMMENDED_INPUT_OUTPUT_FORMATS_MAP =
// int32
// int32
ACAMERA_SCALER_START + 15 ,
ACAMERA_SCALER_START + 15 ,
/**
* < p > List of rotate - and - crop modes for ACAMERA_SCALER_ROTATE_AND_CROP that are supported by this camera device . < / p >
*
* @ see ACAMERA_SCALER_ROTATE_AND_CROP
*
* < p > Type : byte [ n ] < / p >
*
* < p > This tag may appear in :
* < ul >
* < li > ACameraMetadata from ACameraManager_getCameraCharacteristics < / li >
* < / ul > < / p >
*
* < p > This entry lists the valid modes for ACAMERA_SCALER_ROTATE_AND_CROP for this camera device . < / p >
* < p > Starting with API level 30 , all devices will list at least < code > ROTATE_AND_CROP_NONE < / code > .
* Devices with support for rotate - and - crop will additionally list at least
* < code > ROTATE_AND_CROP_AUTO < / code > and < code > ROTATE_AND_CROP_90 < / code > . < / p >
*
* @ see ACAMERA_SCALER_ROTATE_AND_CROP
*/
ACAMERA_SCALER_AVAILABLE_ROTATE_AND_CROP_MODES = // byte[n]
ACAMERA_SCALER_START + 16 ,
/**
* < p > Whether a rotation - and - crop operation is applied to processed
* outputs from the camera . < / p >
*
* < p > Type : byte ( acamera_metadata_enum_android_scaler_rotate_and_crop_t ) < / p >
*
* < p > This tag may appear in :
* < ul >
* < li > ACameraMetadata from ACameraCaptureSession_captureCallback_result callbacks < / li >
* < li > ACaptureRequest < / li >
* < / ul > < / p >
*
* < p > This control is primarily intended to help camera applications with no support for
* multi - window modes to work correctly on devices where multi - window scenarios are
* unavoidable , such as foldables or other devices with variable display geometry or more
* free - form window placement ( such as laptops , which often place portrait - orientation apps
* in landscape with pillarboxing ) . < / p >
* < p > If supported , the default value is < code > ROTATE_AND_CROP_AUTO < / code > , which allows the camera API
* to enable backwards - compatibility support for applications that do not support resizing
* / multi - window modes , when the device is in fact in a multi - window mode ( such as inset
* portrait on laptops , or on a foldable device in some fold states ) . In addition ,
* < code > ROTATE_AND_CROP_NONE < / code > and < code > ROTATE_AND_CROP_90 < / code > will always be available if this control
* is supported by the device . If not supported , devices API level 30 or higher will always
* list only < code > ROTATE_AND_CROP_NONE < / code > . < / p >
* < p > When < code > CROP_AUTO < / code > is in use , and the camera API activates backward - compatibility mode ,
* several metadata fields will also be parsed differently to ensure that coordinates are
* correctly handled for features like drawing face detection boxes or passing in
* tap - to - focus coordinates . The camera API will convert positions in the active array
* coordinate system to / from the cropped - and - rotated coordinate system to make the
* operation transparent for applications . The following controls are affected : < / p >
* < ul >
* < li > ACAMERA_CONTROL_AE_REGIONS < / li >
* < li > ACAMERA_CONTROL_AF_REGIONS < / li >
* < li > ACAMERA_CONTROL_AWB_REGIONS < / li >
* < li > android . statistics . faces < / li >
* < / ul >
* < p > Capture results will contain the actual value selected by the API ;
* < code > ROTATE_AND_CROP_AUTO < / code > will never be seen in a capture result . < / p >
* < p > Applications can also select their preferred cropping mode , either to opt out of the
* backwards - compatibility treatment , or to use the cropping feature themselves as needed .
* In this case , no coordinate translation will be done automatically , and all controls
* will continue to use the normal active array coordinates . < / p >
* < p > Cropping and rotating is done after the application of digital zoom ( via either
* ACAMERA_SCALER_CROP_REGION or ACAMERA_CONTROL_ZOOM_RATIO ) , but before each individual
* output is further cropped and scaled . It only affects processed outputs such as
* YUV , PRIVATE , and JPEG . It has no effect on RAW outputs . < / p >
* < p > When < code > CROP_90 < / code > or < code > CROP_270 < / code > are selected , there is a significant loss to the field of
* view . For example , with a 4 : 3 aspect ratio output of 1600 x1200 , < code > CROP_90 < / code > will still
* produce 1600 x1200 output , but these buffers are cropped from a vertical 3 : 4 slice at the
* center of the 4 : 3 area , then rotated to be 4 : 3 , and then upscaled to 1600 x1200 . Only
* 56.25 % of the original FOV is still visible . In general , for an aspect ratio of < code > w : h < / code > ,
* the crop and rotate operation leaves < code > ( h / w ) ^ 2 < / code > of the field of view visible . For 16 : 9 ,
* this is ~ 31.6 % . < / p >
* < p > As a visual example , the figure below shows the effect of < code > ROTATE_AND_CROP_90 < / code > on the
* outputs for the following parameters : < / p >
* < ul >
* < li > Sensor active array : < code > 2000 x1500 < / code > < / li >
* < li > Crop region : top - left : < code > ( 500 , 375 ) < / code > , size : < code > ( 1000 , 750 ) < / code > ( 4 : 3 aspect ratio ) < / li >
* < li > Output streams : YUV < code > 640 x480 < / code > and YUV < code > 1280 x720 < / code > < / li >
* < li > < code > ROTATE_AND_CROP_90 < / code > < / li >
* < / ul >
* < p > < img alt = " Effect of ROTATE_AND_CROP_90 " src = " ../images/camera2/metadata/android.scaler.rotateAndCrop/crop-region-rotate-90-43-ratio.png " / > < / p >
* < p > With these settings , the regions of the active array covered by the output streams are : < / p >
* < ul >
* < li > 640 x480 stream crop : top - left : < code > ( 219 , 375 ) < / code > , size : < code > ( 562 , 750 ) < / code > < / li >
* < li > 1280 x720 stream crop : top - left : < code > ( 289 , 375 ) < / code > , size : < code > ( 422 , 750 ) < / code > < / li >
* < / ul >
* < p > Since the buffers are rotated , the buffers as seen by the application are : < / p >
* < ul >
* < li > 640 x480 stream : top - left : < code > ( 781 , 375 ) < / code > on active array , size : < code > ( 640 , 480 ) < / code > , downscaled 1.17 x from sensor pixels < / li >
* < li > 1280 x720 stream : top - left : < code > ( 711 , 375 ) < / code > on active array , size : < code > ( 1280 , 720 ) < / code > , upscaled 1.71 x from sensor pixels < / li >
* < / ul >
*
* @ see ACAMERA_CONTROL_AE_REGIONS
* @ see ACAMERA_CONTROL_AF_REGIONS
* @ see ACAMERA_CONTROL_AWB_REGIONS
* @ see ACAMERA_CONTROL_ZOOM_RATIO
* @ see ACAMERA_SCALER_CROP_REGION
*/
ACAMERA_SCALER_ROTATE_AND_CROP = // byte (acamera_metadata_enum_android_scaler_rotate_and_crop_t)
ACAMERA_SCALER_START + 17 ,
ACAMERA_SCALER_END ,
ACAMERA_SCALER_END ,
/**
/**
@ -8314,51 +8212,6 @@ typedef enum acamera_metadata_enum_acamera_scaler_available_recommended_stream_c
} acamera_metadata_enum_android_scaler_available_recommended_stream_configurations_t ;
} acamera_metadata_enum_android_scaler_available_recommended_stream_configurations_t ;
// ACAMERA_SCALER_ROTATE_AND_CROP
typedef enum acamera_metadata_enum_acamera_scaler_rotate_and_crop {
/**
* < p > No rotate and crop is applied . Processed outputs are in the sensor orientation . < / p >
*/
ACAMERA_SCALER_ROTATE_AND_CROP_NONE = 0 ,
/**
* < p > Processed images are rotated by 90 degrees clockwise , and then cropped
* to the original aspect ratio . < / p >
*/
ACAMERA_SCALER_ROTATE_AND_CROP_90 = 1 ,
/**
* < p > Processed images are rotated by 180 degrees . Since the aspect ratio does not
* change , no cropping is performed . < / p >
*/
ACAMERA_SCALER_ROTATE_AND_CROP_180 = 2 ,
/**
* < p > Processed images are rotated by 270 degrees clockwise , and then cropped
* to the original aspect ratio . < / p >
*/
ACAMERA_SCALER_ROTATE_AND_CROP_270 = 3 ,
/**
* < p > The camera API automatically selects the best concrete value for
* rotate - and - crop based on the application ' s support for resizability and the current
* multi - window mode . < / p >
* < p > If the application does not support resizing but the display mode for its main
* Activity is not in a typical orientation , the camera API will set < code > ROTATE_AND_CROP_90 < / code >
* or some other supported rotation value , depending on device configuration ,
* to ensure preview and captured images are correctly shown to the user . Otherwise ,
* < code > ROTATE_AND_CROP_NONE < / code > will be selected . < / p >
* < p > When a value other than NONE is selected , several metadata fields will also be parsed
* differently to ensure that coordinates are correctly handled for features like drawing
* face detection boxes or passing in tap - to - focus coordinates . The camera API will
* convert positions in the active array coordinate system to / from the cropped - and - rotated
* coordinate system to make the operation transparent for applications . < / p >
* < p > No coordinate mapping will be done when the application selects a non - AUTO mode . < / p >
*/
ACAMERA_SCALER_ROTATE_AND_CROP_AUTO = 4 ,
} acamera_metadata_enum_android_scaler_rotate_and_crop_t ;
// ACAMERA_SENSOR_REFERENCE_ILLUMINANT1
// ACAMERA_SENSOR_REFERENCE_ILLUMINANT1
typedef enum acamera_metadata_enum_acamera_sensor_reference_illuminant1 {
typedef enum acamera_metadata_enum_acamera_sensor_reference_illuminant1 {