For a logical multi-camera, bokeh may be implemented by stereo vision from sub-cameras
* with different field of view. As a result, when bokeh mode is enabled, the camera device
- * may override android.scaler.CropRegion, and the field of view will be smaller than when
+ * may override {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion}, and the field of view will be smaller than when
* bokeh mode is off.
* >
* For devices not supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate
* system always follows that of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with (0, 0) being
* the top-left pixel of the active array.
- * For devices supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate
- * system depends on the mode being set.
- * When the distortion correction mode is OFF, the coordinate system follows
- * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}, with
- * (0, 0) being the top-left pixel of the pre-correction active array.
- * When the distortion correction mode is not OFF, the coordinate system follows
- * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with
- * (0, 0) being the top-left pixel of the active array.
- * Output streams use this rectangle to produce their output,
- * cropping to a smaller region if necessary to maintain the
- * stream's aspect ratio, then scaling the sensor input to
+ *
For devices supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate system
+ * depends on the mode being set. When the distortion correction mode is OFF, the
+ * coordinate system follows {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}, with (0,
+ * 0) being the top-left pixel of the pre-correction active array. When the distortion
+ * correction mode is not OFF, the coordinate system follows
+ * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with (0, 0) being the top-left pixel of the
+ * active array.
+ * Output streams use this rectangle to produce their output, cropping to a smaller region
+ * if necessary to maintain the stream's aspect ratio, then scaling the sensor input to
* match the output's configured resolution.
- * The crop region is applied after the RAW to other color
- * space (e.g. YUV) conversion. Since raw streams
- * (e.g. RAW16) don't have the conversion stage, they are not
+ *
The crop region is applied after the RAW to other color space (e.g. YUV)
+ * conversion. Since raw streams (e.g. RAW16) don't have the conversion stage, they are not
* croppable. The crop region will be ignored by raw streams.
- * For non-raw streams, any additional per-stream cropping will
- * be done to maximize the final pixel area of the stream.
- * For example, if the crop region is set to a 4:3 aspect
- * ratio, then 4:3 streams will use the exact crop
- * region. 16:9 streams will further crop vertically
- * (letterbox).
- * Conversely, if the crop region is set to a 16:9, then 4:3
- * outputs will crop horizontally (pillarbox), and 16:9
- * streams will match exactly. These additional crops will
- * be centered within the crop region.
+ * For non-raw streams, any additional per-stream cropping will be done to maximize the
+ * final pixel area of the stream.
+ * For example, if the crop region is set to a 4:3 aspect ratio, then 4:3 streams will use
+ * the exact crop region. 16:9 streams will further crop vertically (letterbox).
+ * Conversely, if the crop region is set to a 16:9, then 4:3 outputs will crop horizontally
+ * (pillarbox), and 16:9 streams will match exactly. These additional crops will be
+ * centered within the crop region.
+ * To illustrate, here are several scenarios of different crop regions and output streams,
+ * for a hypothetical camera device with an active array of size (2000,1500). Note that
+ * several of these examples use non-centered crop regions for ease of illustration; such
+ * regions are only supported on devices with FREEFORM capability
+ * ({@link CameraCharacteristics#SCALER_CROPPING_TYPE android.scaler.croppingType} == FREEFORM), but this does not affect the way the crop
+ * rules work otherwise.
+ *
+ * - Camera Configuration:
+ * - Active array size:
2000x1500 (3 MP, 4:3 aspect ratio)
+ * - Output stream #1:
640x480 (VGA, 4:3 aspect ratio)
+ * - Output stream #2:
1280x720 (720p, 16:9 aspect ratio)
+ *
+ *
+ * - Case #1: 4:3 crop region with 2x digital zoom
+ * - Crop region:
Rect(500, 375, 1500, 1125) // (left, top, right, bottom)
+ * 
+ * 640x480 stream source area: (500, 375, 1500, 1125) (equal to crop region)
+ * 1280x720 stream source area: (500, 469, 1500, 1031) (letterboxed)
+ *
+ *
+ * - Case #2: 16:9 crop region with ~1.5x digital zoom.
+ * - Crop region:
Rect(500, 375, 1833, 1125)
+ * 
+ * 640x480 stream source area: (666, 375, 1666, 1125) (pillarboxed)
+ * 1280x720 stream source area: (500, 375, 1833, 1125) (equal to crop region)
+ *
+ *
+ * - Case #3: 1:1 crop region with ~2.6x digital zoom.
+ * - Crop region:
Rect(500, 375, 1250, 1125)
+ * 
+ * 640x480 stream source area: (500, 469, 1250, 1031) (letterboxed)
+ * 1280x720 stream source area: (500, 543, 1250, 957) (letterboxed)
+ *
+ *
+ * - Case #4: Replace
640x480 stream with 1024x1024 stream, with 4:3 crop region:
+ * - Crop region:
Rect(500, 375, 1500, 1125)
+ * 
+ * 1024x1024 stream source area: (625, 375, 1375, 1125) (pillarboxed)
+ * 1280x720 stream source area: (500, 469, 1500, 1031) (letterboxed)
+ * - Note that in this case, neither of the two outputs is a subset of the other, with
+ * each containing image data the other doesn't have.
+ *
+ *
+ *
* If the coordinate system is {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, the width and height
* of the crop region cannot be set to be smaller than
* floor( activeArraySize.width / {@link CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM android.scaler.availableMaxDigitalZoom} ) and
@@ -2776,18 +2816,16 @@ public final class CaptureRequest extends CameraMetadata>
* and
* floor( preCorrectionActiveArraySize.height / {@link CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM android.scaler.availableMaxDigitalZoom} ),
* respectively.
- * The camera device may adjust the crop region to account
- * for rounding and other hardware requirements; the final
- * crop region used will be included in the output capture
- * result.
+ * The camera device may adjust the crop region to account for rounding and other hardware
+ * requirements; the final crop region used will be included in the output capture result.
* Starting from API level 30, it's strongly recommended to use {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio}
* to take advantage of better support for zoom with logical multi-camera. The benefits
* include better precision with optical-digital zoom combination, and ability to do
* zoom-out from 1.0x. When using {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} for zoom, the crop region in
* the capture request must be either letterboxing or pillarboxing (but not both). The
* coordinate system is post-zoom, meaning that the activeArraySize or
- * preCorrectionActiveArraySize covers the camera device's field of view "after" zoom.
- * See {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} for details.
+ * preCorrectionActiveArraySize covers the camera device's field of view "after" zoom. See
+ * {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} for details.
* Units: Pixel coordinates relative to
* {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} or
* {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} depending on distortion correction
@@ -2797,6 +2835,7 @@ public final class CaptureRequest extends CameraMetadata>
* @see CaptureRequest#CONTROL_ZOOM_RATIO
* @see CaptureRequest#DISTORTION_CORRECTION_MODE
* @see CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM
+ * @see CameraCharacteristics#SCALER_CROPPING_TYPE
* @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
* @see CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
*/
diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java
index c9956231f34cf..96147e45f27a7 100644
--- a/core/java/android/hardware/camera2/CaptureResult.java
+++ b/core/java/android/hardware/camera2/CaptureResult.java
@@ -2384,7 +2384,7 @@ public class CaptureResult extends CameraMetadata> {
* stream combinations of LIMITED hardware level are guaranteed.
* For a logical multi-camera, bokeh may be implemented by stereo vision from sub-cameras
* with different field of view. As a result, when bokeh mode is enabled, the camera device
- * may override android.scaler.CropRegion, and the field of view will be smaller than when
+ * may override {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion}, and the field of view will be smaller than when
* bokeh mode is off.
* Possible values:
*
@@ -2393,6 +2393,8 @@ public class CaptureResult extends CameraMetadata> {
* - {@link #CONTROL_BOKEH_MODE_CONTINUOUS CONTINUOUS}
*
* Optional - The value for this key may be {@code null} on some devices.
+ *
+ * @see CaptureRequest#SCALER_CROP_REGION
* @see #CONTROL_BOKEH_MODE_OFF
* @see #CONTROL_BOKEH_MODE_STILL_CAPTURE
* @see #CONTROL_BOKEH_MODE_CONTINUOUS
@@ -3379,32 +3381,70 @@ public class CaptureResult extends CameraMetadata> {
* For devices not supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate
* system always follows that of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with (0, 0) being
* the top-left pixel of the active array.
- * For devices supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate
- * system depends on the mode being set.
- * When the distortion correction mode is OFF, the coordinate system follows
- * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}, with
- * (0, 0) being the top-left pixel of the pre-correction active array.
- * When the distortion correction mode is not OFF, the coordinate system follows
- * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with
- * (0, 0) being the top-left pixel of the active array.
- * Output streams use this rectangle to produce their output,
- * cropping to a smaller region if necessary to maintain the
- * stream's aspect ratio, then scaling the sensor input to
+ *
For devices supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate system
+ * depends on the mode being set. When the distortion correction mode is OFF, the
+ * coordinate system follows {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}, with (0,
+ * 0) being the top-left pixel of the pre-correction active array. When the distortion
+ * correction mode is not OFF, the coordinate system follows
+ * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with (0, 0) being the top-left pixel of the
+ * active array.
+ * Output streams use this rectangle to produce their output, cropping to a smaller region
+ * if necessary to maintain the stream's aspect ratio, then scaling the sensor input to
* match the output's configured resolution.
- * The crop region is applied after the RAW to other color
- * space (e.g. YUV) conversion. Since raw streams
- * (e.g. RAW16) don't have the conversion stage, they are not
+ *
The crop region is applied after the RAW to other color space (e.g. YUV)
+ * conversion. Since raw streams (e.g. RAW16) don't have the conversion stage, they are not
* croppable. The crop region will be ignored by raw streams.
- * For non-raw streams, any additional per-stream cropping will
- * be done to maximize the final pixel area of the stream.
- * For example, if the crop region is set to a 4:3 aspect
- * ratio, then 4:3 streams will use the exact crop
- * region. 16:9 streams will further crop vertically
- * (letterbox).
- * Conversely, if the crop region is set to a 16:9, then 4:3
- * outputs will crop horizontally (pillarbox), and 16:9
- * streams will match exactly. These additional crops will
- * be centered within the crop region.
+ * For non-raw streams, any additional per-stream cropping will be done to maximize the
+ * final pixel area of the stream.
+ * For example, if the crop region is set to a 4:3 aspect ratio, then 4:3 streams will use
+ * the exact crop region. 16:9 streams will further crop vertically (letterbox).
+ * Conversely, if the crop region is set to a 16:9, then 4:3 outputs will crop horizontally
+ * (pillarbox), and 16:9 streams will match exactly. These additional crops will be
+ * centered within the crop region.
+ * To illustrate, here are several scenarios of different crop regions and output streams,
+ * for a hypothetical camera device with an active array of size (2000,1500). Note that
+ * several of these examples use non-centered crop regions for ease of illustration; such
+ * regions are only supported on devices with FREEFORM capability
+ * ({@link CameraCharacteristics#SCALER_CROPPING_TYPE android.scaler.croppingType} == FREEFORM), but this does not affect the way the crop
+ * rules work otherwise.
+ *
+ * - Camera Configuration:
+ * - Active array size:
2000x1500 (3 MP, 4:3 aspect ratio)
+ * - Output stream #1:
640x480 (VGA, 4:3 aspect ratio)
+ * - Output stream #2:
1280x720 (720p, 16:9 aspect ratio)
+ *
+ *
+ * - Case #1: 4:3 crop region with 2x digital zoom
+ * - Crop region:
Rect(500, 375, 1500, 1125) // (left, top, right, bottom)
+ * 
+ * 640x480 stream source area: (500, 375, 1500, 1125) (equal to crop region)
+ * 1280x720 stream source area: (500, 469, 1500, 1031) (letterboxed)
+ *
+ *
+ * - Case #2: 16:9 crop region with ~1.5x digital zoom.
+ * - Crop region:
Rect(500, 375, 1833, 1125)
+ * 
+ * 640x480 stream source area: (666, 375, 1666, 1125) (pillarboxed)
+ * 1280x720 stream source area: (500, 375, 1833, 1125) (equal to crop region)
+ *
+ *
+ * - Case #3: 1:1 crop region with ~2.6x digital zoom.
+ * - Crop region:
Rect(500, 375, 1250, 1125)
+ * 
+ * 640x480 stream source area: (500, 469, 1250, 1031) (letterboxed)
+ * 1280x720 stream source area: (500, 543, 1250, 957) (letterboxed)
+ *
+ *
+ * - Case #4: Replace
640x480 stream with 1024x1024 stream, with 4:3 crop region:
+ * - Crop region:
Rect(500, 375, 1500, 1125)
+ * 
+ * 1024x1024 stream source area: (625, 375, 1375, 1125) (pillarboxed)
+ * 1280x720 stream source area: (500, 469, 1500, 1031) (letterboxed)
+ * - Note that in this case, neither of the two outputs is a subset of the other, with
+ * each containing image data the other doesn't have.
+ *
+ *
+ *
* If the coordinate system is {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, the width and height
* of the crop region cannot be set to be smaller than
* floor( activeArraySize.width / {@link CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM android.scaler.availableMaxDigitalZoom} ) and
@@ -3415,18 +3455,16 @@ public class CaptureResult extends CameraMetadata> {
* and
* floor( preCorrectionActiveArraySize.height / {@link CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM android.scaler.availableMaxDigitalZoom} ),
* respectively.
- * The camera device may adjust the crop region to account
- * for rounding and other hardware requirements; the final
- * crop region used will be included in the output capture
- * result.
+ * The camera device may adjust the crop region to account for rounding and other hardware
+ * requirements; the final crop region used will be included in the output capture result.
* Starting from API level 30, it's strongly recommended to use {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio}
* to take advantage of better support for zoom with logical multi-camera. The benefits
* include better precision with optical-digital zoom combination, and ability to do
* zoom-out from 1.0x. When using {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} for zoom, the crop region in
* the capture request must be either letterboxing or pillarboxing (but not both). The
* coordinate system is post-zoom, meaning that the activeArraySize or
- * preCorrectionActiveArraySize covers the camera device's field of view "after" zoom.
- * See {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} for details.
+ * preCorrectionActiveArraySize covers the camera device's field of view "after" zoom. See
+ * {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} for details.
* Units: Pixel coordinates relative to
* {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} or
* {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} depending on distortion correction
@@ -3436,6 +3474,7 @@ public class CaptureResult extends CameraMetadata> {
* @see CaptureRequest#CONTROL_ZOOM_RATIO
* @see CaptureRequest#DISTORTION_CORRECTION_MODE
* @see CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM
+ * @see CameraCharacteristics#SCALER_CROPPING_TYPE
* @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
* @see CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
*/
diff --git a/docs/html/reference/images/camera2/metadata/android.scaler.cropRegion/crop-region-11-ratio.png b/docs/html/reference/images/camera2/metadata/android.scaler.cropRegion/crop-region-11-ratio.png
new file mode 100644
index 0000000000000000000000000000000000000000..b6c07656e3254e26a9a1521f6f1bed0ca09498cd
GIT binary patch
literal 11428
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
literal 0
HcmV?d00001
diff --git a/docs/html/reference/images/camera2/metadata/android.scaler.cropRegion/crop-region-43-square-ratio.png b/docs/html/reference/images/camera2/metadata/android.scaler.cropRegion/crop-region-43-square-ratio.png
new file mode 100644
index 0000000000000000000000000000000000000000..41e666854d21c5e3daf47c0b3c7a244dd1ef4959
GIT binary patch
literal 10790
zcmZ8`1z1$w_BSY9(uky#Lnz%K3?Lmtiq35j`6
zP718yj=Vb&fQp2KfmCrTCJ1`eL|aK!*;k6x5GM&oQbQB}XHbzP2Oj@-NMQ=aQ$@lG
z07dM#N79nw(kStPM|bgvi?xi7^HKJ}s>kG+**_9S{!!gQ7YQNMTrVaTpq?
z+1VJij{^KZp@@QM#hFLxiN#|fDBZqQDTBN?TEZ)?{wIRx&hvFXALgpq!oE;#WhjgS
zzWM*;Q3~rbTsfgZ7;2~zvkfd!Z#Ur$wjEfehKz9FFh>*>VJYG-@PrtBV&KFHT5C|)
zlg)_v%5Xki-=zB0@H
z_6|RI)vbAhIOh|wnpyx|FbW2Q@f1T8jD-o3$X9y=)`UpOIna09EEox!Tl39Sq+L3&
zIbofQyt^BGXB~|Dso%7Dv2LbH|Jp*;l`xF5YODRuh|TfFwOQXNfyZGxwl@fl77}lN
z^wJDg(gW{Rc
zi@k$od^E1?>+tjQb6V0H_?3U{d-tB>JJS4Kl3&Ki#-(?Rk(5UD?4Vioz3v3*JXMxN
z4wPR!}X85#kA;1jdSUS%yx-pTWw7UAcqfOI7C{#L>Mb-r)wpgGM$hz2Uhf9b0Of
z`8!-0%091`EqJQ*VYMJ@)z=xyaTR*6B1T@(Dca_HQ<+Ra`uIDY=pw{cQFJ@7W(
zW){si{RRBlmUELU0$b3D&c8q3Fe(Gx;%{DDxFu9GvXAnrB+YB(-?N@=(>f
z71R28)h{%7p(xaOLnX@xZm1YFgoyHTb|w{BV)rRdq7a?|k-e8*G+j8lG2O=X^Fwbd
zXR3fGlwrJ^sN9>iNBOLbDdwU$V&e?aPH~%(1;)(Jy-%iOHbY
z$`)Z>tp-z)Iiogw>H*?A$EfXzE6RbQ=}OmSKRU+;cYUxLB5tpxd7jli=+}Vpx;Li`
z%L;t_e8?Z5U?AeeQzE!(IrvzH$YQRUgH2@UN2U4@pZEBpMgTn?-edHbX;LbE47X3-oL7H?Mfd4rp$-6`EXIQ8~7i1o?A%S_n0$8!+7L5^pr_^-5lXLP>4hJQDZ7${R~^}-mPrY^2eVQ`(_i}q
zpa6PgH4V2XK)oZMyYr&XDEL2p*92?#Wu5MR?JN3f1CM^+vA|Hp{b>^RxmW?xZEJqJd3
zrn+k$umw0pT^7;!;M6a9*qd4R28mG;De|5!675_z`2B>Bz?i9XBE!@paSkqOV}RQm
z$N!ICoq!rmALg%*we1#}?gO3$)AjZ>{=&+|Sz9fFv4%OK>@Kv1qLg7ZbuPiA$oH2V
zHD^dD8$$sg6G4EF_T3~>9(M9zs<(CCsF-?*j;QtQEA}|rdf`lKi(j)C|y^cL>0m}b^<-bf}H2pV#K-`qb=&@8l
ziUP|^&IAhe8QjKD3j?@n0$xgG{wgd)u-ueSwIn_#RMM%(LXVp+J2(0?UzaGKWqJZ
zs|qBO)h2!$8fB%()5p%Oi~VNS3BIY!-s=;PMds?l^YlDf%FWZ#+D`)Z9F7lFC55Vn
zfFxnMF~D$72&)2e^6HNN1r8Sq4yq@pS#W(zk3$BOCSeFXhP#
z201Z+QI922gJm*Ota#B@(vjzxT!ET9d9*Ympb4VNdqE*~60D{7}
z0@c-g7VzV#2uO$-&G{nDT;@
zc)iAzS?y#Az$U^m 1My1WSgIorl+5OevUczTa4mjVjqK#|TPNLTn&
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 | |