Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 60e567e9 authored by Ricardo Cerqueira's avatar Ricardo Cerqueira
Browse files

libcameraservice: Add support for LGE FFC

Change-Id: Iec98bcf9b0a26c934955b27edf7252849b1cf42e
parent 0e4a8ce6
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -91,4 +91,8 @@ ifeq ($(BOARD_FIRST_CAMERA_FRONT_FACING),true)
    LOCAL_CFLAGS += -DFIRST_CAMERA_FACING=CAMERA_FACING_FRONT -DFIRST_CAMERA_ORIENTATION=0
endif

ifeq ($(BOARD_HAS_LGE_FFC), true)
    LOCAL_CFLAGS += -DBOARD_HAS_LGE_FFC
endif

include $(BUILD_SHARED_LIBRARY)
+32 −2
Original line number Diff line number Diff line
@@ -899,7 +899,18 @@ status_t CameraService::Client::setParameters(const String8& params) {
    status_t result = checkPidAndHardware();
    if (result != NO_ERROR) return result;


    CameraParameters p(params);

#ifdef BOARD_HAS_LGE_FFC
    if (!p.get("camera-sensor") || !strcmp(p.get("camera-sensor"),"0")) {
        if (!strcmp(p.get("rotation"),"90"))
            p.set("rotation","270");
        else if (!strcmp(p.get("rotation"),"270"))
            p.set("rotation","90");
    }
#endif

    return mHardware->setParameters(p);
}

@@ -1315,8 +1326,12 @@ void CameraService::Client::copyFrameAndPostCopiedFrame(
    client->dataCallback(CAMERA_MSG_PREVIEW_FRAME, frame);
}

#define FFC_VENDOR_HTC 0x1
#define FFC_VENDOR_LGE 0x2
int mFrontCameraType = 0;

int CameraService::Client::getOrientation(int degrees, bool mirror) {
    if (!mirror) {
    if (!mirror || mFrontCameraType == FFC_VENDOR_LGE) {
        if (degrees == 0) return 0;
        else if (degrees == 90) return HAL_TRANSFORM_ROT_90;
        else if (degrees == 180) return HAL_TRANSFORM_ROT_180;
@@ -1435,8 +1450,13 @@ static const CameraInfo sCameraInfo[] = {

static int getNumberOfCameras() {
    if (access(HTC_SWITCH_CAMERA_FILE_PATH, W_OK) == 0) {
        mFrontCameraType = FFC_VENDOR_HTC;
        return 2;
    }
#ifdef BOARD_HAS_LGE_FFC
    mFrontCameraType = FFC_VENDOR_LGE;
    return 2;
#endif
    /* FIXME: Support non-HTC front camera */
    return 1;
}
@@ -1469,7 +1489,17 @@ extern "C" sp<CameraHardwareInterface> HAL_openCameraHardware(int cameraId)
{
    LOGV("openCameraHardware: call createInstance");
    if (getNumberOfCameras() == 2) {
        if (mFrontCameraType == FFC_VENDOR_HTC) {
            htcCameraSwitch(cameraId);
        } else if (mFrontCameraType == FFC_VENDOR_LGE) {
            sp<CameraHardwareInterface> hardware = openCameraHardware(cameraId);
            if (hardware != NULL) {
                CameraParameters params(hardware->getParameters());
                params.set("camera-sensor", cameraId);
                hardware->setParameters(params);
            }
            return hardware;
        }
#ifdef BOARD_USE_REVERSE_FFC
        if (cameraId == 1) {
            /* Change default parameters for the front camera */