android.scaler.streamConfigurationMap Key值的来源

android.scaler.streamConfigurationMap Key值的来源

一、背景

在开发camera app时,app获取preview的YUV数据,当从KEY CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP的StreamConfigurationMap中获取类型为SurfaceHolder.class的size时,发现它少于picture size,代码如下:

CameraManager manager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
StreamConfigurationMap map = mCharacteristics.get(cameraId).get(
           CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
Size[] size = map.getOutputSizes(SurfaceHolder.class);

获取的outsize如果少于picture size,如果camera app选择在app中对预览数据进行处理而呈现给用户的话,它将会造成成取景的窗口小于拍照生成图片的窗口。

二、StreamConfigurationMap中数据的来源

StreamConfigurationMap包含有各种camera streamconfig的数据 ,一般我们只知道这些数据来源于camera metadata,从代码看,我们能知道StreamConfigurationMap包含camera metadata中SCALER_AVAILABLE_STREAM_CONFIGURATIONS、SCALER_AVAILABLE_MIN_FRAME_DURATIONS、SCALER_AVAILABLE_STALL_DURATIONS、DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS、DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS、DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS、CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS和SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP这些键值。
LINUX/android/frameworks/base/core/java/android/hardware/camera2/impl/CameraMetadataNative.java

// Use Command pattern here to avoid lots of expensive if/equals checks in get for overridden
// metadata.
private static final HashMap<Key<?>, GetCommand> sGetCommandMap =
        new HashMap<Key<?>, GetCommand>();
static {
    ......
    sGetCommandMap.put(
            CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP.getNativeKey(),
                    new GetCommand() {
                @Override
                @Suppr
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值