- 论坛徽章:
- 0
|
android HC 中 digital zoom 工作原理:
1. 声明 zoom变量
- 280 //zoom
- 281 p.set(CameraParameters::KEY_ZOOM_SUPPORTED, "true");
- 282 p.set(CameraParameters::KEY_MAX_ZOOM, "60"); //zoom值可以在0-60之间
- 283 p.set(CameraParameters::KEY_ZOOM_RATIOS, "100,125,150,175,200,225,250,275,300,325,350,375,400,425,450,475,500,525,"
- 284 "550,575,600,625,650,675,700,725,750,775,800,825,850,875,900,925,950,975,1000,1025,1050,1075,1100,"
- 285 "1125,1150,1175,1200,1225,1250,1275,1300,1325,1350,1375,1400,1425,1450,1475,1500,1525,1550,1575,1600");
- 286 p.set(CameraParameters::KEY_ZOOM, 0);
2. 读取camera app中传递过来的zoom值:
- 3456 status_t CameraHardware::setParameters(const CameraParameters& params)
- 3457 {
- ...
- 3600 //Zoom is a invalid value or not
- 3601 int zoom = p.getInt(CameraParameters::KEY_ZOOM);
- 3602 LOGD("xiaohai : ------------ zoom = %d", zoom);
- 3603
- 3604 if(zoom > MAX_ZOOM_LEVEL || zoom < MIN_ZOOM_LEVEL)
- 3605 return BAD_VALUE;
- 3606
- ...
- 3612
- 3613 // zoom is not supported in video mode for soc sensor.
- 3614 if (vfmode != 2 && mSensorType == SENSOR_TYPE_SOC)
- 3615 p.set(CameraParameters::KEY_ZOOM_SUPPORTED, "false");
- 3616 else
- 3617 p.set(CameraParameters::KEY_ZOOM_SUPPORTED, "true");
3. 获取zoom值,并设置zoom值到底层驱动中去。
- 3646 int CameraHardware::setISPParameters(
- 3647 const CameraParameters &new_params,
- 3648 const CameraParameters &old_params)
- 3649 {
- 3650 const char *new_value, *set_value;
- 3651 int ret,ret2;
- 3652 static int effect = old_params.getInt(CameraParameters::KEY_EFFECT);
- 3653
- 3654 ret = ret2 = -1;
- 3655
- 3656 //process zoom
- 3657 int zoom = new_params.getInt(CameraParameters::KEY_ZOOM);
- 3658 mCamera->set_zoom_val(zoom);
- ...
- }
4. 添加camera_mode 涉及的文件:
frameworks/base/libs/camera/CameraParameters.cpp frameworks/base/core/java/android/hardware/Camera.java packages/apps/Camera/src/com/android/camera/VideoCamera.java packages/apps/Camera/src/com/android/camera/Camera.java
|
|