public final class StreamConfigurationMap
extends Object
java.lang.Object | |
↳ | android.hardware.camera2.params.StreamConfigurationMap |
不可变类用于存储可用流 configurations
以设置 Surfaces
以创建 capture session
和 createCaptureSession(List
。
这是所有人的权威名单 输出格式(以及该格式的大小),这些格式由相机设备支持。
这还包含每种格式/尺寸组合的最小帧持续时间和停顿持续时间,可用于在提交多个捕捉时计算有效帧速率。
使用 SCALER_STREAM_CONFIGURATION_MAP
键和 get(CameraCharacteristics.Key
方法可从 CameraCharacteristics
获得此对象的实例。
CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(cameraId); StreamConfigurationMap configs = characteristics.get( CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
也可以看看:
Public methods |
|
---|---|
boolean |
equals(Object obj) 检查这 |
Size[] |
getHighResolutionOutputSizes(int format) 获取支持的高分辨率尺寸列表,这些尺寸无法以完整的BURST_CAPTURE速率运行。 |
Range[]<Integer> |
getHighSpeedVideoFpsRanges() 获取支持的高速视频记录FPS范围列表。 |
Range[]<Integer> |
getHighSpeedVideoFpsRangesFor(Size size) 获取输入高速视频大小的帧每秒范围(fpsMin,fpsMax)。 |
Size[] |
getHighSpeedVideoSizes() 获取支持的高速视频记录大小列表。 |
Size[] |
getHighSpeedVideoSizesFor(Range<Integer> fpsRange) 获取输入高速FPS范围的支持的视频尺寸。 |
final int[] |
getInputFormats() 在此流配置中获取图像 |
Size[] |
getInputSizes(int format) 获取此输入格式支持的输入大小。 |
final int[] |
getOutputFormats() 在此流配置中获取图像 |
<T> long |
getOutputMinFrameDuration(Class<T> klass, Size size) 获得类/尺寸组合的最小值 |
long |
getOutputMinFrameDuration(int format, Size size) 获取格式/大小组合的最小值 |
Size[] |
getOutputSizes(int format) 获取与请求图像 |
<T> Size[] |
getOutputSizes(Class<T> klass) 获取与 |
long |
getOutputStallDuration(int format, Size size) 获取格式/大小组合的停顿持续时间(以纳秒为单位)。 |
<T> long |
getOutputStallDuration(Class<T> klass, Size size) 获取类/大小组合的停顿持续时间(以纳秒为单位)。 |
final int[] |
getValidOutputFormatsForInput(int inputFormat) 为重新处理输入格式获取图像 |
int |
hashCode() 返回对象的哈希码值。 |
boolean |
isOutputSupportedFor(Surface surface) 确定当前状态下的 |
boolean |
isOutputSupportedFor(int format) 确定是否可以传递具有特定用户定义格式的输出曲面 |
static <T> boolean |
isOutputSupportedFor(Class<T> klass) 确定是否可以将输出流配置为特定的类作为使用者。 |
String |
toString() 以字符串表示形式返回此 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
boolean equals (Object obj)
检查这 StreamConfigurationMap
是否等于另一个 StreamConfigurationMap
。
两个向量只有当且仅当每个相应元素相等时才相等。
Parameters | |
---|---|
obj |
Object : the reference object with which to compare. |
Returns | |
---|---|
boolean |
true if the objects were equal, false otherwise |
Size[] getHighResolutionOutputSizes (int format)
获取支持的高分辨率尺寸列表,这些尺寸无法以完整的BURST_CAPTURE速率运行。
这包括所有输出尺寸无法满足BURST_CAPTURE
功能的20 fps帧速率要求。 这不包括失速持续时间,例如,具有大失速持续时间但超过20 fps的最小帧持续时间的JPEG或RAW16输出分辨率仍将列在常规getOutputSizes(int)
列表中。 此列表中的所有尺寸仍保证以至少10 fps的速率运行,不包括失速持续时间。
对于不支持BURST_CAPTURE功能的设备,此列表将为null
,因为getOutputSizes(int)
列表中的分辨率已无法保证满足> = 20 fps的速率要求。 对于支持BURST_CAPTURE功能的设备,如果所有支持的分辨率均满足20 fps的要求,则此列表可能为空。
Parameters | |
---|---|
format |
int
|
Returns | |
---|---|
Size[] |
an array of supported slower high-resolution sizes, or null if the BURST_CAPTURE capability is not supported |
Range[]<Integer> getHighSpeedVideoFpsRanges ()
获取支持的高速视频记录FPS范围列表。
当REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO
支持REQUEST_AVAILABLE_CAPABILITIES
,此方法将列出支持的高速视频FPS范围配置。 应用程序然后可以使用getHighSpeedVideoSizesFor(Range
查询返回的FPS范围之一的可用大小。
为了使高速视频拍摄,应用程序必须创建一个受限通过创建高速捕获会话createConstrainedHighSpeedCaptureSession(List
,并提交由创建CaptureRequest列表createHighSpeedRequestList(CaptureRequest)
本届会议。 应用程序必须选择此方法视频大小和FPS range
从getHighSpeedVideoFpsRangesFor(Size)
配置约束高速会话,并产生高速请求列表。 例如,如果应用程序打算进行高速记录,则可以选择由此方法报告的一个FPS范围,查询与此FPS范围相对应的视频尺寸getHighSpeedVideoSizesFor(Range
并使用报告的大小之一来创建高速捕获会话。 请注意,对于多输出流的用例,应用程序必须从此方法中选择一个唯一的大小才能使用(例如,预览和记录流必须具有相同的大小)。 否则,高速会话创建将失败。 一旦创建了高速捕捉会话,应用程序就可以通过createHighSpeedRequestList(CaptureRequest)
在记录请求列表中设置FPS范围。
该方法报告的FPS范围将具有以下特征:
Returns | |
---|---|
Range[]<Integer> |
an array of supported high speed video recording FPS ranges The upper bound of returned ranges is guaranteed to be larger or equal to 120. |
Range[]<Integer> getHighSpeedVideoFpsRangesFor (Size size)
获取输入高速视频大小的帧每秒范围(fpsMin,fpsMax)。
有关如何启用高速录制,请参见 getHighSpeedVideoFpsRanges()
。
此方法报告的 FPS ranges
不得用于设置提交给无约束捕获会话的捕获请求,否则将导致 IllegalArgumentExceptions
。
请参阅 getHighSpeedVideoFpsRanges()
了解返回的FPS范围的特征。
Parameters | |
---|---|
size |
Size : one of the sizes returned by getHighSpeedVideoSizes() |
Returns | |
---|---|
Range[]<Integer> |
an array of supported high speed video recording FPS ranges The upper bound of returned ranges is guaranteed to be greater than or equal to 120. |
Throws | |
---|---|
IllegalArgumentException |
if input size does not exist in the return value of getHighSpeedVideoSizes |
Size[] getHighSpeedVideoSizes ()
获取支持的高速视频记录大小列表。
当REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO
支持REQUEST_AVAILABLE_CAPABILITIES
,此方法将列出支持的高速视频大小配置。 列出的所有尺寸将是由getOutputSizes(int)
报告的处理非失速格式(通常为PRIVATE
YUV_420_888
等)的尺寸的子集。
为了使高速视频拍摄,应用程序必须创建一个受限通过创建高速捕获会话createConstrainedHighSpeedCaptureSession(List
,并提交由创建CaptureRequest列表createHighSpeedRequestList(CaptureRequest)
本届会议。 应用程序必须选择此方法视频大小和FPS range
从getHighSpeedVideoFpsRangesFor(Size)
配置约束高速会话,并产生高速请求列表。 例如,如果应用程序打算进行高速记录,则可以选择此方法报告的最大大小以创建高速捕获会话。 请注意,对于多输出流的用例,应用程序必须从此方法中选择一个唯一的大小才能使用(例如,预览和记录流必须具有相同的大小)。 否则,高速会话创建将失败。 选择大小后,应用程序可以获得支持的FPS范围getHighSpeedVideoFpsRangesFor(Size)
,并使用这些FPS范围通过createHighSpeedRequestList(CaptureRequest)
设置录制请求列表。
Returns | |
---|---|
Size[] |
an array of supported high speed video recording sizes |
Size[] getHighSpeedVideoSizesFor (Range<Integer> fpsRange)
获取输入高速FPS范围的支持的视频尺寸。
有关如何启用高速录制,请参见 getHighSpeedVideoSizes()
。
Parameters | |
---|---|
fpsRange |
Range : one of the FPS range returned by getHighSpeedVideoFpsRanges() |
Returns | |
---|---|
Size[] |
An array of video sizes to create high speed capture sessions for high speed streaming use cases. |
Throws | |
---|---|
IllegalArgumentException |
if input FPS range does not exist in the return value of getHighSpeedVideoFpsRanges |
也可以看看:
int[] getInputFormats ()
在此流配置中获取图像 format
输入格式。
这个函数返回的所有图像格式都将在 ImageFormat
或 PixelFormat
中 PixelFormat
(并且不存在碰撞的可能性)。
Returns | |
---|---|
int[] |
an array of integer format |
也可以看看:
Size[] getInputSizes (int format)
获取此输入格式支持的输入大小。
格式必须来自getInputFormats()
; 否则返回null
。
Parameters | |
---|---|
format |
int : a format from getInputFormats() |
Returns | |
---|---|
Size[] |
a non-empty array of sizes, or null if the format was not available. |
int[] getOutputFormats ()
在此流配置中获取图像 format
输出格式。
这个函数返回的所有图像格式将在 ImageFormat
或 PixelFormat
中 PixelFormat
(并且不存在碰撞的可能性)。
如果使用 isOutputSupportedFor(int)
查询,此阵列中列出的格式将保证返回true。
Returns | |
---|---|
int[] |
an array of integer format |
也可以看看:
long getOutputMinFrameDuration (Class<T> klass, Size size)
获得类/尺寸组合的最小值 frame duration
(以纳秒为单位)。
这假设klass
设置为使用PRIVATE
。 对于用户定义的格式,请使用getOutputMinFrameDuration(int, Size)
。
klass
应该是由 isOutputSupportedFor(Class)
支持的 isOutputSupportedFor(Class)
。
size
应该是由 getOutputSizes(int)
返回的 getOutputSizes(int)
。
这应该与只有该流处于活动状态时的帧持续时间相对应,并且所有处理(通常在 android.*.mode
)设置为 OFF
或 FAST
。
在请求中使用多个流时,最小帧持续时间将为 max(individual stream min durations)
。
对于不支持手动传感器控制的设备( REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
),此功能可能会返回0。
Parameters | |
---|---|
klass |
Class : a class which is supported by isOutputSupportedFor(Class) and has a non-empty array returned by getOutputSizes(Class) |
size |
Size : an output-compatible size |
Returns | |
---|---|
long |
a minimum frame duration > 0 in nanoseconds, or 0 if the minimum frame duration is not available. |
Throws | |
---|---|
IllegalArgumentException |
if klass or size was not supported |
NullPointerException |
if size or klass was null |
long getOutputMinFrameDuration (int format, Size size)
获取格式/大小组合的最小值 frame duration
(以纳秒为单位)。
format
应该是由 getOutputFormats()
返回的 getOutputFormats()
。
size
应该是由 getOutputSizes(int)
返回的 getOutputSizes(int)
。
这应该对应于仅当该流处于活动状态时的帧持续时间,所有处理(通常在 android.*.mode
)设置为 OFF
或 FAST
。
在请求中使用多个流时,最小帧持续时间将为 max(individual stream min durations)
。
对于不支持手动传感器控制的设备( REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
),此功能可能会返回0。
Parameters | |
---|---|
format |
int : an image format from ImageFormat or PixelFormat |
size |
Size : an output-compatible size |
Returns | |
---|---|
long |
a minimum frame duration > 0 in nanoseconds, or 0 if the minimum frame duration is not available. |
Throws | |
---|---|
IllegalArgumentException |
if format or size was not supported |
NullPointerException |
if size was null |
Size[] getOutputSizes (int format)
获取与所需图像 format
兼容的尺寸列表。
format
应该是支持的格式(由 getOutputFormats()
返回的格式 getOutputFormats()
)。
getHighResolutionOutputSizes(int)
method can be used on devices that support the
BURST_CAPTURE
capability to get a list of high-resolution output sizes that cannot operate at the preferred 20fps rate. This means that for some supported formats, this method will return an empty list, if all the supported resolutions operate at below 20fps. For devices that do not support the BURST_CAPTURE capability, all output resolutions are listed through this method.
Parameters | |
---|---|
format |
int : an image format from ImageFormat or PixelFormat |
Returns | |
---|---|
Size[] |
an array of supported sizes, or null if the format is not a supported output |
Size[] getOutputSizes (Class<T> klass)
获取与 klass
兼容的尺寸列表以用作输出。
一些受支持的类可能支持超出PRIVATE
其他格式; 此功能仅返回PRIVATE
尺寸。 例如, ImageReader
支持YUV_420_888
和PRIVATE
,此方法将仅为ImageReader
类返回PRIVATE
的大小。
如果需要定义明确的格式(例如 NV21
), getOutputSizes(int)
改为使用 getOutputSizes(int)
。
klass
应该是支持的输出,查询 #isOutputSupportedFor(Class)
应该返回 true
。
Parameters | |
---|---|
klass |
Class : a non-null Class object reference |
Returns | |
---|---|
Size[] |
an array of supported sizes for PRIVATE format, or null iff the klass is not a supported output. |
Throws | |
---|---|
NullPointerException |
if klass was null |
也可以看看:
long getOutputStallDuration (int format, Size size)
获取格式/大小组合的停顿持续时间(以纳秒为单位)。
format
应该是由 getOutputFormats()
返回的 getOutputFormats()
。
size
应该是由 getOutputSizes(int)
返回的 getOutputSizes(int)
。
失速持续时间是多少额外的时间将被添加到具有非零失速的流的重复请求的正常最小帧持续时间。
例如,考虑具有以下特征的JPEG捕获:
换句话说,使用重复的YUV请求会导致稳定的帧速率(假设它是30 FPS)。 如果定期提交单个JPEG请求,则帧速率将保持在30 FPS(只要我们每次都等待先前的JPEG返回)。 如果我们尝试提交重复的YUV + JPEG请求,则帧速率将从30 FPS下降。
通常,使用非零延迟时间流提交新请求 不会导致帧速率下降,除非仍然存在来自先前请求的流的未完成缓冲区。
提交与流的重复请求(称之为 S
)是相同的,从对应于正常的最小帧持续时间设置的最小帧持续时间 S
,加入的最大持续时间失速 S
。
如果在有和没有停顿持续时间的情况下交错请求,则对于具有悬而未决缓冲区的每个罐滞流,请求将最大程度地延迟剩余时间。
这意味着,失速请求在失速完成之前不会有曝光开始。
这应该对应于只有该流处于活动状态时的停顿持续时间,所有处理(通常在android.*.mode
)设置为FAST
或OFF
。 将任何处理模式设置为HIGH_QUALITY
有效地导致请求中所有流的停顿持续时间不确定(忽略常规停顿计算规则)。
以下格式可能始终有一个失速持续时间:
以下格式永远不会有失速持续时间:
所有其他格式可能会或可能没有允许每个功能的停顿持续时间; 有关更多详细信息,请参阅android.request.availableCapabilities
。
See android.sensor.frameDuration
for more information about calculating the max frame rate (absent stalls).
Parameters | |
---|---|
format |
int : an image format from ImageFormat or PixelFormat |
size |
Size : an output-compatible size |
Returns | |
---|---|
long |
a stall duration >= 0 in nanoseconds |
Throws | |
---|---|
IllegalArgumentException |
if format or size was not supported |
NullPointerException |
if size was null |
long getOutputStallDuration (Class<T> klass, Size size)
获取类/大小组合的停顿持续时间(以纳秒为单位)。
这假定klass
设置为使用PRIVATE
。 对于用户定义的格式,请使用getOutputMinFrameDuration(int, Size)
。
klass
应该是由 getOutputSizes(Class)
返回的非空数组 getOutputSizes(Class)
。
size
应该是由 getOutputSizes(Class)
返回的 getOutputSizes(Class)
。
有关 失速持续时间的定义,请参见 getOutputStallDuration(int, Size)
。
Parameters | |
---|---|
klass |
Class : a class which is supported by isOutputSupportedFor(Class) and has a non-empty array returned by getOutputSizes(Class) |
size |
Size : an output-compatible size |
Returns | |
---|---|
long |
a minimum frame duration >= 0 in nanoseconds |
Throws | |
---|---|
IllegalArgumentException |
if klass or size was not supported |
NullPointerException |
if size or klass was null |
int[] getValidOutputFormatsForInput (int inputFormat)
为重新处理输入格式获取图像 format
输出格式。
当提交CaptureRequest
具有给定格式的输入表面,所述的只允许目标输出CaptureRequest
与本方法的返回值中列出的格式的那些。 将任何其他输出Surface作为目标将引发IllegalArgumentException。 如果输入格式不支持输出格式,则返回一个空的int []。
这个函数返回的所有图像格式将在 ImageFormat
或 PixelFormat
中 PixelFormat
(并且不存在碰撞的可能性)。
如果使用 isOutputSupportedFor(int)
查询,此阵列中列出的格式将保证返回true。
Parameters | |
---|---|
inputFormat |
int
|
Returns | |
---|---|
int[] |
an array of integer format |
也可以看看:
int hashCode ()
返回对象的哈希码值。 这种方法支持散列表的好处,例如HashMap
提供的HashMap
。
hashCode
的总合同是:
hashCode
method must consistently return the same integer, provided no information used in equals
comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application. equals(Object)
method, then calling the hashCode
method on each of the two objects must produce the same integer result. equals(java.lang.Object)
method, then calling the hashCode
method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables. 尽可能合理实用,由类Object
定义的hashCode方法确实为不同的对象返回不同的整数。 (这通常通过将对象的内部地址转换为整数来实现,但Java TM编程语言不需要此实现技术。)
Returns | |
---|---|
int |
a hash code value for this object. |
boolean isOutputSupportedFor (Surface surface)
确定当前状态下的 surface
是否适合作为输出包含在 capture session
中。
不是所有的表面与可用CameraDevice
,并且不是所有的的配置surface
是兼容的。 提供了一些类surface
与兼容CameraDevice
一般(见isOutputSupportedFor(Class)
,但它是调用者的责任,把surface
成将与兼容的状态CameraDevice
。
surface
特别不兼容的原因可能是:
getOutputFormats()
getOutputSizes(int)
surface
itself is not in a state where it can service a new producer. 只要支持格式(或类),并且相机设备支持的尺寸等于或小于1080p,即使表面的确切尺寸与相机支持的尺寸不匹配,灵活来源的表面也会返回true,并且相机设备支持的尺寸等于或小于1080p以这种格式。 如果使用Surface等创建捕获会话,则会将其大小舍入到最接近的支持大小,小于或等于1080p。 灵活的来源包括SurfaceView,SurfaceTexture和ImageReader。
这不是一份详尽的清单; 请参阅特定课程的文档以了解不兼容的其他可能原因。
Parameters | |
---|---|
surface |
Surface : a non-null Surface object reference |
Returns | |
---|---|
boolean |
true if this is supported, false otherwise |
Throws | |
---|---|
NullPointerException |
if surface was null |
IllegalArgumentException |
if the Surface endpoint is no longer valid |
boolean isOutputSupportedFor (int format)
确定是否可以传递具有特定用户定义格式的输出曲面 createCaptureSession
。
此方法确定摄像机设备支持输出format
; 每个输出surface
目标可能会或可能不会自己支持那format
。 请参阅提供表面的类以获取其他文档。
返回 true
格式保证存在于由 getOutputSizes(int)
返回的结果中。
Parameters | |
---|---|
format |
int : an image format from either ImageFormat or PixelFormat |
Returns | |
---|---|
boolean |
true iff using a surface with this format will be supported with createCaptureSession(List
|
Throws | |
---|---|
IllegalArgumentException |
if the image format was not a defined named constant from either ImageFormat or PixelFormat |
boolean isOutputSupportedFor (Class<T> klass)
确定是否可以将输出流配置为特定的类作为使用者。
以下列表通常可用于输出:
ImageReader
- Recommended for image processing or streaming to external resources (such as a file or network) MediaRecorder
- Recommended for recording video (simple to use) MediaCodec
- Recommended for recording video (more complicated to use, with more flexibility) Allocation
- Recommended for image processing with RenderScript
SurfaceHolder
- Recommended for low-power camera preview with SurfaceView
SurfaceTexture
- Recommended for OpenGL-accelerated preview processing or compositing with TextureView
一般来说,这意味着从该类创建 Surface
可能会提供适用于 createCaptureSession(List
的生产者端点。
由于并非所有上述类都支持所有格式和大小组合的输出,因此应该使用 isOutputSupportedFor(Surface)
查询特定组合。
Parameters | |
---|---|
klass |
Class : a non-null Class object reference |
Returns | |
---|---|
boolean |
true if this class is supported as an output, false otherwise |
Throws | |
---|---|
NullPointerException |
if klass was null |
String toString ()
以字符串表示形式返回此 StreamConfigurationMap
。
"StreamConfigurationMap(Outputs([w:%d, h:%d, format:%s(%d), min_duration:%d, stall:%d], ... [w:%d, h:%d, format:%s(%d), min_duration:%d, stall:%d]), Inputs([w:%d, h:%d, format:%s(%d)], ... [w:%d, h:%d, format:%s(%d)]), ValidOutputFormatsForInput( [in:%d, out:%d, ... %d], ... [in:%d, out:%d, ... %d]), HighSpeedVideoConfigurations( [w:%d, h:%d, min_fps:%d, max_fps:%d], ... [w:%d, h:%d, min_fps:%d, max_fps:%d]))"
。
Outputs([w:%d, h:%d, format:%s(%d), min_duration:%d, stall:%d], ... [w:%d, h:%d, format:%s(%d), min_duration:%d, stall:%d])
,其中 [w:%d, h:%d, format:%s(%d), min_duration:%d, stall:%d]
表示输出配置的宽度,高度,格式,以毫微秒为单位的最小帧持续时间以及以纳秒为单位的停顿持续时间。
Inputs([w:%d, h:%d, format:%s(%d)], ... [w:%d, h:%d, format:%s(%d)])
,其中 [w:%d, h:%d, format:%s(%d)]
表示输入配置的宽度,高度和格式。
ValidOutputFormatsForInput([in:%s(%d), out:%s(%d), ... %s(%d)], ... [in:%s(%d), out:%s(%d), ... %s(%d)])
,其中 [in:%s(%d), out:%s(%d), ... %s(%d)]
表示输入格式及其有效输出格式。
HighSpeedVideoConfigurations([w:%d, h:%d, min_fps:%d, max_fps:%d], ... [w:%d, h:%d, min_fps:%d, max_fps:%d])
,其中 [w:%d, h:%d, min_fps:%d, max_fps:%d]
表示高速视频输出配置的宽度,高度,最小帧速率和最大帧速率。
Returns | |
---|---|
String |
string representation of StreamConfigurationMap |