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

Commit c62d1579 authored by tbalden's avatar tbalden Committed by Ricardo Cerqueira
Browse files

Camera: QCOM legacy definitions,HTC cam switch,NO_UPDATE_PREVIEW

Updating Camera parameters, and service with several
compatibility patches:

1., QCOM legacy CameraParameters and functions:
Adding these will make ICS qcomm camera blobs work on JB 4.3.
Use BOARD_USES_QCOM_LEGACY_CAM_PARAMS := true in BoardConfig
to use this.

Also fixes the problem of legacy qcom
camera blobs with recent libcameraservice QCOM_HARDWARE changes,
where the orientation is messed up on first
preview: the fix is leaving out setPreviewWindow(window) for
legacy qcomm cam blobs.

2., Also adding NO_UPDATE_PREVIEW flag for legacy purposes.

3., Adding adding the set orientation patch:
Always set buffers orientation when setting the qcom camera preview window
Fixes the rotated preview on TouchPad
https://github.com/CyanogenMod/android_frameworks_base/commit/1a8e41a3c7434737db89b604352575f8b3109e7a

4., camera: Full support for HTC camera switch

5., Adding more parameters for HTC Explorer

Change-Id: I2bfc72b8ef027665356788f1db7f96b31d037dbe
parent d598a350
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -42,6 +42,9 @@ endif
ifeq ($(BOARD_USES_QCOM_HARDWARE),true)
	LOCAL_CFLAGS += -DQCOM_HARDWARE
endif
ifeq ($(BOARD_USES_QCOM_LEGACY_CAM_PARAMS),true)
	LOCAL_CFLAGS += -DQCOM_LEGACY_CAM_PARAMS
endif

LOCAL_MODULE:= libcamera_client

+25 −0
Original line number Diff line number Diff line
@@ -354,6 +354,9 @@ const char CameraParameters::FOCUS_MODE_EDOF[] = "edof";
const char CameraParameters::FOCUS_MODE_CONTINUOUS_VIDEO[] = "continuous-video";
const char CameraParameters::FOCUS_MODE_CONTINUOUS_PICTURE[] = "continuous-picture";
#if defined(QCOM_HARDWARE)
#ifdef QCOM_LEGACY_CAM_PARAMS
const char CameraParameters::FOCUS_MODE_CONTINUOUS_CAMERA[] = "continuous-camera";
#endif
const char CameraParameters::FOCUS_MODE_NORMAL[] = "normal";


@@ -397,11 +400,26 @@ const char CameraParameters::SKIN_TONE_ENHANCEMENT_ENABLE[] = "enable";
const char CameraParameters::SKIN_TONE_ENHANCEMENT_DISABLE[] = "disable";

const char CameraParameters::KEY_SHARPNESS[] = "sharpness";
#ifdef QCOM_LEGACY_CAM_PARAMS
const char CameraParameters::KEY_MAX_SHARPNESS[] = "sharpness-max";
const char CameraParameters::KEY_MIN_SHARPNESS[] = "sharpness-min";
#else
const char CameraParameters::KEY_MAX_SHARPNESS[] = "max-sharpness";
#endif
const char CameraParameters::KEY_CONTRAST[] = "contrast";
#ifdef QCOM_LEGACY_CAM_PARAMS
const char CameraParameters::KEY_MAX_CONTRAST[] = "contrast-max";
const char CameraParameters::KEY_MIN_CONTRAST[] = "contrast-min";
#else
const char CameraParameters::KEY_MAX_CONTRAST[] = "max-contrast";
#endif
const char CameraParameters::KEY_SATURATION[] = "saturation";
#ifdef QCOM_LEGACY_CAM_PARAMS
const char CameraParameters::KEY_MAX_SATURATION[] = "saturation-max";
const char CameraParameters::KEY_MIN_SATURATION[] = "saturation-min";
#else
const char CameraParameters::KEY_MAX_SATURATION[] = "max-saturation";
#endif

//Values for DENOISE
const char CameraParameters::DENOISE_OFF[] = "denoise-off";
@@ -730,6 +748,13 @@ void CameraParameters::getSupportedPreviewSizes(Vector<Size> &sizes) const
}

#ifdef QCOM_HARDWARE
#ifdef QCOM_LEGACY_CAM_PARAMS
void CameraParameters::setPostviewSize(int width, int height)
{
    // dummy
}
#endif

void CameraParameters::getSupportedHfrSizes(Vector<Size> &sizes) const
{
    const char *hfrSizesStr = get(KEY_SUPPORTED_HFR_SIZES);
+42 −0
Original line number Diff line number Diff line
@@ -182,6 +182,20 @@ public:
    static const char KEY_SUPPORTED_PREVIEW_FRAME_RATE_MODES[];
    static const char KEY_PREVIEW_FRAME_RATE_AUTO_MODE[];
    static const char KEY_PREVIEW_FRAME_RATE_FIXED_MODE[];
#ifdef QCOM_LEGACY_CAM_PARAMS
    static const char KEY_CAPTURE_MODE[];
    static const char KEY_SUPPORTED_CAPTURE_MODES[];
    static const char KEY_PICTURE_COUNT[];
    static const char KEY_MAX_BURST_PICTURE_COUNT[];
    static const char KEY_SUPPORTED_CONTINUOUS_AF[];
    static const char KEY_SUPPORTED_CAF[];
    static const char CAPTURE_MODE_NORMAL[];
    static const char CAPTURE_MODE_BURST[];
    static const char CAPTURE_MODE_CONTI_BURST[];
    static const char CAPTURE_MODE_HDR[];
    static const char CAPTURE_MODE_HJR[];
    static const char CAPTURE_MODE_PANORAMA[];
#endif
#endif
    // The dimensions for captured pictures in pixels (width x height).
    // Example value: "1024x768". Read/write.
@@ -889,6 +903,22 @@ public:
    static const char LIGHTFX_HDR[];

#ifdef QCOM_HARDWARE
#ifdef QCOM_LEGACY_CAM_PARAMS
    static const char FOCUS_MODE_CONTINUOUS_CAMERA[];

    // Values for Continuous AF
    static const char CAF_OFF[] ;
    static const char CAF_ON[] ;
    // Proprietaries from CodeAurora use these...
    static const char CONTINUOUS_AF_OFF[] ;
    static const char CONTINUOUS_AF_ON[] ;
    static const char KEY_CONTINUOUS_AF[] ;
    static const char KEY_CAF[] ;
    static const char KEY_TAKING_PICTURE_ZOOM[];
    static const char KEY_PANORAMA_MODE[];
    static const char PANORAMA_MODE_NOT_INPROGRESS[];
    static const char PANORAMA_MODE_INPROGRESS[];
#endif
    // Normal focus mode. Applications should call
    // CameraHardwareInterface.autoFocus to start the focus in this mode.
    static const char FOCUS_MODE_NORMAL[];
@@ -912,10 +942,19 @@ public:

    static const char KEY_SHARPNESS[];
    static const char KEY_MAX_SHARPNESS[];
#ifdef QCOM_LEGACY_CAM_PARAMS
    static const char KEY_MIN_SHARPNESS[];
#endif
    static const char KEY_CONTRAST[];
    static const char KEY_MAX_CONTRAST[];
#ifdef QCOM_LEGACY_CAM_PARAMS
    static const char KEY_MIN_CONTRAST[];
#endif
    static const char KEY_SATURATION[];
    static const char KEY_MAX_SATURATION[];
#ifdef QCOM_LEGACY_CAM_PARAMS
    static const char KEY_MIN_SATURATION[];
#endif

    static const char KEY_HISTOGRAM[] ;
    static const char KEY_SUPPORTED_HISTOGRAM_MODES[] ;
@@ -1008,6 +1047,9 @@ public:
    int getOrientation() const;
    void setOrientation(int orientation);
    void setPreviewFpsRange(int minFPS,int maxFPS);
#ifdef QCOM_LEGACY_CAM_PARAMS
    void setPostviewSize(int x, int y);
#endif
    void getSupportedHfrSizes(Vector<Size> &sizes) const;
#endif

+8 −0
Original line number Diff line number Diff line
@@ -57,6 +57,14 @@ LOCAL_C_INCLUDES += \

LOCAL_CFLAGS += -Wall -Wextra

ifeq ($(BOARD_USES_QCOM_LEGACY_CAM_PARAMS),true)
    LOCAL_CFLAGS += -DQCOM_LEGACY_CAM_PARAMS
endif

ifeq ($(BOARD_HAVE_HTC_FFC),true)
    LOCAL_CFLAGS += -DBOARD_HAVE_HTC_FFC
endif

LOCAL_MODULE:= libcameraservice

include $(BUILD_SHARED_LIBRARY)
+24 −0
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@
#include <stdio.h>
#include <sys/types.h>
#include <pthread.h>
#include <unistd.h>
#include <fcntl.h>

#include <binder/AppOpsManager.h>
#include <binder/IPCThreadState.h>
@@ -85,6 +87,24 @@ static void camera_device_status_change(

// ----------------------------------------------------------------------------

#if defined(BOARD_HAVE_HTC_FFC)
#define HTC_SWITCH_CAMERA_FILE_PATH "/sys/android_camera2/htcwc"
static void htcCameraSwitch(int cameraId)
{
    char buffer[16];
    int fd;

    if (access(HTC_SWITCH_CAMERA_FILE_PATH, W_OK) == 0) {
        snprintf(buffer, sizeof(buffer), "%d", cameraId);

        fd = open(HTC_SWITCH_CAMERA_FILE_PATH, O_WRONLY);
        write(fd, buffer, strlen(buffer));
        close(fd);
    }
}
#endif


// This is ugly and only safe if we never re-create the CameraService, but
// should be ok for now.
static CameraService *gCameraService;
@@ -365,6 +385,10 @@ bool CameraService::canConnectUnsafe(int cameraId,
    String8 clientName8(clientPackageName);
    int callingPid = getCallingPid();

#if defined(BOARD_HAVE_HTC_FFC)
    htcCameraSwitch(cameraId);
#endif

    if (mClient[cameraId] != 0) {
        client = mClient[cameraId].promote();
        if (client != 0) {
Loading