Loading services/camera/libcameraservice/Camera2Client.cpp +36 −10 Original line number Diff line number Diff line Loading @@ -1561,7 +1561,7 @@ status_t Camera2Client::setParameters(const String8& params) { Vector<Parameters::Area> meteringAreas; res = parseAreas(newParams.get(CameraParameters::KEY_METERING_AREAS), &meteringAreas); if (res == OK) res = validateAreas(focusingAreas, max3aRegions); if (res == OK) res = validateAreas(meteringAreas, max3aRegions); if (res != OK) { ALOGE("%s: Requested metering areas are malformed: %s", __FUNCTION__, Loading Loading @@ -3729,10 +3729,17 @@ status_t Camera2Client::updateRequestCommon(CameraMetadata *request, size_t focusingAreasSize = params.focusingAreas.size() * 5; int32_t *focusingAreas = new int32_t[focusingAreasSize]; for (size_t i = 0; i < focusingAreasSize; i += 5) { focusingAreas[i + 0] = params.focusingAreas[i].left; focusingAreas[i + 1] = params.focusingAreas[i].top; focusingAreas[i + 2] = params.focusingAreas[i].right; focusingAreas[i + 3] = params.focusingAreas[i].bottom; if (params.focusingAreas[i].weight != 0) { focusingAreas[i + 0] = normalizedXToArray(params.focusingAreas[i].left); focusingAreas[i + 1] = normalizedYToArray(params.focusingAreas[i].top); focusingAreas[i + 2] = normalizedXToArray(params.focusingAreas[i].right); focusingAreas[i + 3] = normalizedYToArray(params.focusingAreas[i].bottom); } else { focusingAreas[i + 0] = 0; focusingAreas[i + 1] = 0; focusingAreas[i + 2] = 0; focusingAreas[i + 3] = 0; } focusingAreas[i + 4] = params.focusingAreas[i].weight; } res = request->update(ANDROID_CONTROL_AF_REGIONS, Loading @@ -3747,10 +3754,21 @@ status_t Camera2Client::updateRequestCommon(CameraMetadata *request, size_t meteringAreasSize = params.meteringAreas.size() * 5; int32_t *meteringAreas = new int32_t[meteringAreasSize]; for (size_t i = 0; i < meteringAreasSize; i += 5) { meteringAreas[i + 0] = params.meteringAreas[i].left; meteringAreas[i + 1] = params.meteringAreas[i].top; meteringAreas[i + 2] = params.meteringAreas[i].right; meteringAreas[i + 3] = params.meteringAreas[i].bottom; if (params.meteringAreas[i].weight != 0) { meteringAreas[i + 0] = normalizedXToArray(params.meteringAreas[i].left); meteringAreas[i + 1] = normalizedYToArray(params.meteringAreas[i].top); meteringAreas[i + 2] = normalizedXToArray(params.meteringAreas[i].right); meteringAreas[i + 3] = normalizedYToArray(params.meteringAreas[i].bottom); } else { meteringAreas[i + 0] = 0; meteringAreas[i + 1] = 0; meteringAreas[i + 2] = 0; meteringAreas[i + 3] = 0; } meteringAreas[i + 4] = params.meteringAreas[i].weight; } res = request->update(ANDROID_CONTROL_AE_REGIONS, Loading Loading @@ -3808,6 +3826,14 @@ status_t Camera2Client::updateRequestCommon(CameraMetadata *request, return OK; } int Camera2Client::normalizedXToArray(int x) const { return (x + 1000) * (mDeviceInfo->arrayWidth - 1) / 2000; } int Camera2Client::normalizedYToArray(int y) const { return (y + 1000) * (mDeviceInfo->arrayHeight - 1) / 2000; } int Camera2Client::arrayXToNormalized(int width) const { return width * 2000 / (mDeviceInfo->arrayWidth - 1) - 1000; } Loading Loading @@ -4099,7 +4125,7 @@ size_t Camera2Client::calculateBufferSize(int width, int height, return width * height * 2; case HAL_PIXEL_FORMAT_YV12: { // YV12 size_t ySize = stride * height; size_t uvStride = (stride / 2 + 0xF) & ~0x10; size_t uvStride = (stride / 2 + 0xF) & ~0xF; size_t uvSize = uvStride * height / 2; return ySize + uvSize * 2; } Loading services/camera/libcameraservice/Camera2Client.h +2 −0 Original line number Diff line number Diff line Loading @@ -464,6 +464,8 @@ private: // Map from sensor active array pixel coordinates to normalized camera // parameter coordinates. The former are (0,0)-(array width - 1, array height // - 1), the latter from (-1000,-1000)-(1000,1000) int normalizedXToArray(int x) const; int normalizedYToArray(int y) const; int arrayXToNormalized(int width) const; int arrayYToNormalized(int height) const; Loading Loading
services/camera/libcameraservice/Camera2Client.cpp +36 −10 Original line number Diff line number Diff line Loading @@ -1561,7 +1561,7 @@ status_t Camera2Client::setParameters(const String8& params) { Vector<Parameters::Area> meteringAreas; res = parseAreas(newParams.get(CameraParameters::KEY_METERING_AREAS), &meteringAreas); if (res == OK) res = validateAreas(focusingAreas, max3aRegions); if (res == OK) res = validateAreas(meteringAreas, max3aRegions); if (res != OK) { ALOGE("%s: Requested metering areas are malformed: %s", __FUNCTION__, Loading Loading @@ -3729,10 +3729,17 @@ status_t Camera2Client::updateRequestCommon(CameraMetadata *request, size_t focusingAreasSize = params.focusingAreas.size() * 5; int32_t *focusingAreas = new int32_t[focusingAreasSize]; for (size_t i = 0; i < focusingAreasSize; i += 5) { focusingAreas[i + 0] = params.focusingAreas[i].left; focusingAreas[i + 1] = params.focusingAreas[i].top; focusingAreas[i + 2] = params.focusingAreas[i].right; focusingAreas[i + 3] = params.focusingAreas[i].bottom; if (params.focusingAreas[i].weight != 0) { focusingAreas[i + 0] = normalizedXToArray(params.focusingAreas[i].left); focusingAreas[i + 1] = normalizedYToArray(params.focusingAreas[i].top); focusingAreas[i + 2] = normalizedXToArray(params.focusingAreas[i].right); focusingAreas[i + 3] = normalizedYToArray(params.focusingAreas[i].bottom); } else { focusingAreas[i + 0] = 0; focusingAreas[i + 1] = 0; focusingAreas[i + 2] = 0; focusingAreas[i + 3] = 0; } focusingAreas[i + 4] = params.focusingAreas[i].weight; } res = request->update(ANDROID_CONTROL_AF_REGIONS, Loading @@ -3747,10 +3754,21 @@ status_t Camera2Client::updateRequestCommon(CameraMetadata *request, size_t meteringAreasSize = params.meteringAreas.size() * 5; int32_t *meteringAreas = new int32_t[meteringAreasSize]; for (size_t i = 0; i < meteringAreasSize; i += 5) { meteringAreas[i + 0] = params.meteringAreas[i].left; meteringAreas[i + 1] = params.meteringAreas[i].top; meteringAreas[i + 2] = params.meteringAreas[i].right; meteringAreas[i + 3] = params.meteringAreas[i].bottom; if (params.meteringAreas[i].weight != 0) { meteringAreas[i + 0] = normalizedXToArray(params.meteringAreas[i].left); meteringAreas[i + 1] = normalizedYToArray(params.meteringAreas[i].top); meteringAreas[i + 2] = normalizedXToArray(params.meteringAreas[i].right); meteringAreas[i + 3] = normalizedYToArray(params.meteringAreas[i].bottom); } else { meteringAreas[i + 0] = 0; meteringAreas[i + 1] = 0; meteringAreas[i + 2] = 0; meteringAreas[i + 3] = 0; } meteringAreas[i + 4] = params.meteringAreas[i].weight; } res = request->update(ANDROID_CONTROL_AE_REGIONS, Loading Loading @@ -3808,6 +3826,14 @@ status_t Camera2Client::updateRequestCommon(CameraMetadata *request, return OK; } int Camera2Client::normalizedXToArray(int x) const { return (x + 1000) * (mDeviceInfo->arrayWidth - 1) / 2000; } int Camera2Client::normalizedYToArray(int y) const { return (y + 1000) * (mDeviceInfo->arrayHeight - 1) / 2000; } int Camera2Client::arrayXToNormalized(int width) const { return width * 2000 / (mDeviceInfo->arrayWidth - 1) - 1000; } Loading Loading @@ -4099,7 +4125,7 @@ size_t Camera2Client::calculateBufferSize(int width, int height, return width * height * 2; case HAL_PIXEL_FORMAT_YV12: { // YV12 size_t ySize = stride * height; size_t uvStride = (stride / 2 + 0xF) & ~0x10; size_t uvStride = (stride / 2 + 0xF) & ~0xF; size_t uvSize = uvStride * height / 2; return ySize + uvSize * 2; } Loading
services/camera/libcameraservice/Camera2Client.h +2 −0 Original line number Diff line number Diff line Loading @@ -464,6 +464,8 @@ private: // Map from sensor active array pixel coordinates to normalized camera // parameter coordinates. The former are (0,0)-(array width - 1, array height // - 1), the latter from (-1000,-1000)-(1000,1000) int normalizedXToArray(int x) const; int normalizedYToArray(int y) const; int arrayXToNormalized(int width) const; int arrayYToNormalized(int height) const; Loading