Android 系统Camera篇
本项目12M的sensor,让其可以拍48M的照片
具体有两种方案 IPE方式和QCFA
IPE
该方式较为简单。实在createCaptureSession请求将48M的分辨率传到底层,让其可以创建该摄像头的stream,流程为设置48M的分辨(不要从StreamConfigurationMap获取分辨率),获取cameradevice实例,并创建CaptureSession,在framework的CameraDeviceClient.cpp CameraDeviceClient::createStream方法里的 res = createSurfaceFromGbp(streamInfo, isStreamInfoValid, surface, bufferProducer,
mCameraIdStr, mDevice->infoPhysical(physicalCameraId), mPrivilegedClient);修改streamInfo的宽高,最后一步是修改camx里的camxhaldevice.cpp的CheckValidStreamConfig方法。让isAvailableStream设置true;
QCFA
1.在配置sensor的xml加入48M的分辨率
0
0
8000
6000
…
QuadCFA
SWRemosaic
2.advanceCamerausecase + feature2功能的放开以便可以使用quadcfa
3.camxsettings.xml里把QCFA设为可用:exposeFullSizeForQCFA 设为true(AECGainThresholdForQCFA根据需要也要相应修改)
4.QCFA使用vendorTag实现:
/// application get the qcfa size //CaptureModule.java //SettingsManager.java
int[] qcfaDimension = mCharacteristics.get(cameraId).get(
CaptureModule.QCFA_SUPPORT_DIMENSION);
public static CameraCharacteristics.Key<int[]> QCFA_SUPPORT_DIMENSION =