Skip to content

Commit

Permalink
qcom/camera: new camera HAL implementation
Browse files Browse the repository at this point in the history
This HAL is taken from the following project:
	remote: git://codeaurora.org/platform/hardware/qcom/camera.git
	SHA: 72226d4d1cda595b55ded993571de114c8ec9893

In addition, the makefiles have been patched so that it builds within AOSP.

Change-Id: I87125fd134838f41c75a0027da98440f63cfedb5
Signed-off-by: Iliyan Malchev <malchev@google.com>
  • Loading branch information
Iliyan Malchev committed Apr 4, 2013
1 parent ac6775d commit 6f83d73
Show file tree
Hide file tree
Showing 194 changed files with 69,656 additions and 47,365 deletions.
141 changes: 9 additions & 132 deletions Android.mk
100755 → 100644
Original file line number Original file line Diff line number Diff line change
@@ -1,135 +1,12 @@
LOCAL_PATH:= $(call my-dir) MM_V4L2_DRIVER_LIST += msm8960
MM_V4L2_DRIVER_LIST += msm8974


ifeq ($(TARGET_BOARD_PLATFORM),msm8960) ifeq ($(call is-board-platform-in-list,$(MM_V4L2_DRIVER_LIST)),true)
ifneq ($(USE_CAMERA_STUB),true) ifneq ($(USE_CAMERA_STUB),true)
ifneq ($(USE_DEVICE_SPECIFIC_CAMERA),true) ifneq ($(USE_DEVICE_SPECIFIC_CAMERA),true)

ifneq ($(BUILD_TINY_ANDROID),true)
# When zero we link against libmmcamera; when 1, we dlopen libmmcamera. include $(call all-subdir-makefiles)
DLOPEN_LIBMMCAMERA:=1
ifneq ($(BUILD_TINY_ANDROID),true)
V4L2_BASED_LIBCAM := true

LOCAL_PATH1:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_CFLAGS:= -DDLOPEN_LIBMMCAMERA=$(DLOPEN_LIBMMCAMERA)

#define BUILD_UNIFIED_CODE
ifeq ($(TARGET_BOARD_PLATFORM),msm7627a)
BUILD_UNIFIED_CODE := true
else
BUILD_UNIFIED_CODE := false
endif

ifeq ($(TARGET_BOARD_PLATFORM),msm7627a)
LOCAL_CFLAGS+= -DVFE_7X27A
endif

ifeq ($(strip $(TARGET_USES_ION)),true)
LOCAL_CFLAGS += -DUSE_ION
endif

LOCAL_CFLAGS += -DCAMERA_ION_HEAP_ID=ION_CP_MM_HEAP_ID # 8660=SMI, Rest=EBI
LOCAL_CFLAGS += -DCAMERA_ZSL_ION_HEAP_ID=ION_CP_MM_HEAP_ID
ifeq ($(TARGET_BOARD_PLATFORM),msm8960)
LOCAL_CFLAGS += -DCAMERA_GRALLOC_HEAP_ID=GRALLOC_USAGE_PRIVATE_MM_HEAP
LOCAL_CFLAGS += -DCAMERA_GRALLOC_FALLBACK_HEAP_ID=GRALLOC_USAGE_PRIVATE_IOMMU_HEAP
LOCAL_CFLAGS += -DCAMERA_ION_FALLBACK_HEAP_ID=ION_IOMMU_HEAP_ID
LOCAL_CFLAGS += -DCAMERA_ZSL_ION_FALLBACK_HEAP_ID=ION_IOMMU_HEAP_ID
LOCAL_CFLAGS += -DCAMERA_GRALLOC_CACHING_ID=0
else ifeq ($(TARGET_BOARD_PLATFORM),msm8660)
LOCAL_CFLAGS += -DCAMERA_GRALLOC_HEAP_ID=GRALLOC_USAGE_PRIVATE_CAMERA_HEAP
LOCAL_CFLAGS += -DCAMERA_GRALLOC_FALLBACK_HEAP_ID=GRALLOC_USAGE_PRIVATE_CAMERA_HEAP # Don't Care
LOCAL_CFLAGS += -DCAMERA_ION_FALLBACK_HEAP_ID=ION_CAMERA_HEAP_ID # EBI
LOCAL_CFLAGS += -DCAMERA_ZSL_ION_FALLBACK_HEAP_ID=ION_CAMERA_HEAP_ID
LOCAL_CFLAGS += -DCAMERA_GRALLOC_CACHING_ID=0
else
LOCAL_CFLAGS += -DCAMERA_GRALLOC_HEAP_ID=GRALLOC_USAGE_PRIVATE_ADSP_HEAP
LOCAL_CFLAGS += -DCAMERA_GRALLOC_FALLBACK_HEAP_ID=GRALLOC_USAGE_PRIVATE_ADSP_HEAP # Don't Care
LOCAL_CFLAGS += -DCAMERA_GRALLOC_CACHING_ID=GRALLOC_USAGE_PRIVATE_UNCACHED #uncached
endif

ifeq ($(V4L2_BASED_LIBCAM),true)
ifeq ($(TARGET_BOARD_PLATFORM),msm7627a)
LOCAL_HAL_FILES := QCameraHAL.cpp QCameraHWI_Parm.cpp\
QCameraHWI.cpp QCameraHWI_Preview.cpp \
QCameraHWI_Record_7x27A.cpp QCameraHWI_Still.cpp \
QCameraHWI_Mem.cpp QCameraHWI_Display.cpp \
QCameraStream.cpp QualcommCamera2.cpp
else
LOCAL_HAL_FILES := QCameraHAL.cpp QCameraHWI_Parm.cpp\
QCameraHWI.cpp QCameraHWI_Preview.cpp \
QCameraHWI_Record.cpp QCameraHWI_Still.cpp \
QCameraHWI_Mem.cpp QCameraHWI_Display.cpp \
QCameraStream.cpp QualcommCamera2.cpp QCameraParameters.cpp
endif

else
LOCAL_HAL_FILES := QualcommCamera.cpp QualcommCameraHardware.cpp
endif

LOCAL_CFLAGS+= -DHW_ENCODE

# if debug service layer and up , use stub camera!
LOCAL_C_INCLUDES += \
frameworks/base/services/camera/libcameraservice #

LOCAL_SRC_FILES := $(MM_CAM_FILES) $(LOCAL_HAL_FILES)

ifeq ($(TARGET_BOARD_PLATFORM),msm7627a)
LOCAL_CFLAGS+= -DNUM_PREVIEW_BUFFERS=6 -D_ANDROID_
else
LOCAL_CFLAGS+= -DNUM_PREVIEW_BUFFERS=4 -D_ANDROID_
endif endif

endif
# To Choose neon/C routines for YV12 conversion endif
LOCAL_CFLAGS+= -DUSE_NEON_CONVERSION
# Uncomment below line to enable smooth zoom
#LOCAL_CFLAGS+= -DCAMERA_SMOOTH_ZOOM

ifeq ($(V4L2_BASED_LIBCAM),true)
LOCAL_C_INCLUDES+= hardware/qcom/media/mm-core/inc
LOCAL_C_INCLUDES+= $(LOCAL_PATH)/mm-camera-interface
endif

LOCAL_C_INCLUDES+= hardware/qcom/display/libgralloc
LOCAL_C_INCLUDES+= hardware/qcom/display/libgenlock
LOCAL_C_INCLUDES+= hardware/qcom/media/libstagefrighthw


ifeq ($(V4L2_BASED_LIBCAM),true)
LOCAL_SHARED_LIBRARIES:= libutils libui libcamera_client liblog libcutils
LOCAL_SHARED_LIBRARIES += libmmcamera_interface2
else
LOCAL_SHARED_LIBRARIES:= libutils libui libcamera_client liblog libcutils libmmjpeg
endif

LOCAL_SHARED_LIBRARIES+= libgenlock libbinder
ifneq ($(DLOPEN_LIBMMCAMERA),1)
LOCAL_SHARED_LIBRARIES+= liboemcamera
else
LOCAL_SHARED_LIBRARIES+= libdl
endif

LOCAL_CFLAGS += -include bionic/libc/include/sys/socket.h

LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
LOCAL_MODULE:= camera.$(TARGET_DEVICE)
LOCAL_MODULE_TAGS := optional
include $(BUILD_SHARED_LIBRARY)

endif # BUILD_TINY_ANDROID
endif # USE_CAMERA_STUB

ifneq ($(USE_DEVICE_SPECIFIC_CAMERA),true)
ifeq ($(V4L2_BASED_LIBCAM),true)
include $(LOCAL_PATH)/mm-camera-interface/Android.mk
endif

#Enable only to compile new interafece and HAL files.
ifeq ($(V4L2_BASED_LIBCAM),true)
#include $(LOCAL_PATH1)/QCamera/Android.mk
endif
endif
endif
endif endif
75 changes: 0 additions & 75 deletions Makefile.am

This file was deleted.

2 changes: 1 addition & 1 deletion QCamera/Android.mk
100644 → 100755
Original file line number Original file line Diff line number Diff line change
@@ -1,3 +1,3 @@
ifeq ($(TARGET_ARCH),arm) ifeq ($(TARGET_ARCH),arm)
include $(call all-subdir-makefiles) # include $(call all-subdir-makefiles)
endif endif
2 changes: 1 addition & 1 deletion QCamera/HAL/Android.mk
100644 → 100755
Original file line number Original file line Diff line number Diff line change
@@ -1,3 +1,3 @@
LOCAL_PATH:= $(call my-dir) LOCAL_PATH:= $(call my-dir)
#include $(LOCAL_PATH)/core/Android.mk include $(LOCAL_PATH)/core/Android.mk
#include $(LOCAL_PATH)/test/Android.mk #include $(LOCAL_PATH)/test/Android.mk
68 changes: 44 additions & 24 deletions QCamera/HAL/core/Android.mk
100644 → 100755
Original file line number Original file line Diff line number Diff line change
@@ -1,40 +1,50 @@

#ifeq ($(call is-board-platform,msm8960),true)
OLD_LOCAL_PATH := $(LOCAL_PATH) OLD_LOCAL_PATH := $(LOCAL_PATH)
LOCAL_PATH := $(call my-dir) LOCAL_PATH := $(call my-dir)


include $(CLEAR_VARS) include $(CLEAR_VARS)


ifeq ($(strip $(TARGET_USES_ION)),true)
LOCAL_CFLAGS += -DUSE_ION
endif

DLOPEN_LIBMMCAMERA:=0 DLOPEN_LIBMMCAMERA:=0


LOCAL_CFLAGS:= -DDLOPEN_LIBMMCAMERA=$(DLOPEN_LIBMMCAMERA) LOCAL_CFLAGS:= -DDLOPEN_LIBMMCAMERA=$(DLOPEN_LIBMMCAMERA)


ifeq ($(strip $(TARGET_USES_ION)),true)
LOCAL_CFLAGS += -DUSE_ION
endif

LOCAL_CFLAGS += -DCAMERA_ION_HEAP_ID=ION_CP_MM_HEAP_ID # 8660=SMI, Rest=EBI LOCAL_CFLAGS += -DCAMERA_ION_HEAP_ID=ION_CP_MM_HEAP_ID # 8660=SMI, Rest=EBI
LOCAL_CFLAGS += -DCAMERA_ZSL_ION_HEAP_ID=ION_CP_MM_HEAP_ID LOCAL_CFLAGS += -DCAMERA_ZSL_ION_HEAP_ID=ION_CP_MM_HEAP_ID


LOCAL_CFLAGS+= -DHW_ENCODE LOCAL_CFLAGS+= -DHW_ENCODE
LOCAL_CFLAGS+= -DUSE_NEON_CONVERSION LOCAL_CFLAGS+= -DUSE_NEON_CONVERSION


ifeq ($(call is-board-platform,msm8960),true) ifeq ($(call is-board-platform,msm8974),true)
LOCAL_CFLAGS += -DCAMERA_GRALLOC_HEAP_ID=GRALLOC_USAGE_PRIVATE_MM_HEAP LOCAL_CFLAGS += -DCAMERA_GRALLOC_HEAP_ID=GRALLOC_USAGE_PRIVATE_MM_HEAP
LOCAL_CFLAGS += -DCAMERA_GRALLOC_FALLBACK_HEAP_ID=GRALLOC_USAGE_PRIVATE_IOMMU_HEAP LOCAL_CFLAGS += -DCAMERA_GRALLOC_FALLBACK_HEAP_ID=GRALLOC_USAGE_PRIVATE_IOMMU_HEAP
LOCAL_CFLAGS += -DCAMERA_ION_FALLBACK_HEAP_ID=ION_IOMMU_HEAP_ID LOCAL_CFLAGS += -DCAMERA_ION_FALLBACK_HEAP_ID=ION_IOMMU_HEAP_ID
LOCAL_CFLAGS += -DCAMERA_ZSL_ION_FALLBACK_HEAP_ID=ION_IOMMU_HEAP_ID LOCAL_CFLAGS += -DCAMERA_ZSL_ION_FALLBACK_HEAP_ID=ION_IOMMU_HEAP_ID
LOCAL_CFLAGS += -DCAMERA_GRALLOC_CACHING_ID=0 LOCAL_CFLAGS += -DCAMERA_GRALLOC_CACHING_ID=0
LOCAL_CFLAGS += -DNUM_RECORDING_BUFFERS=9
else ifeq ($(call is-board-platform,msm8960),true)
LOCAL_CFLAGS += -DCAMERA_GRALLOC_HEAP_ID=GRALLOC_USAGE_PRIVATE_MM_HEAP
LOCAL_CFLAGS += -DCAMERA_GRALLOC_FALLBACK_HEAP_ID=GRALLOC_USAGE_PRIVATE_IOMMU_HEAP
LOCAL_CFLAGS += -DCAMERA_ION_FALLBACK_HEAP_ID=ION_IOMMU_HEAP_ID
LOCAL_CFLAGS += -DCAMERA_ZSL_ION_FALLBACK_HEAP_ID=ION_IOMMU_HEAP_ID
LOCAL_CFLAGS += -DCAMERA_GRALLOC_CACHING_ID=0
LOCAL_CFLAGS += -DNUM_RECORDING_BUFFERS=5
else ifeq ($(call is-chipset-prefix-in-board-platform,msm8660),true) else ifeq ($(call is-chipset-prefix-in-board-platform,msm8660),true)
LOCAL_CFLAGS += -DCAMERA_GRALLOC_HEAP_ID=GRALLOC_USAGE_PRIVATE_CAMERA_HEAP LOCAL_CFLAGS += -DCAMERA_GRALLOC_HEAP_ID=GRALLOC_USAGE_PRIVATE_CAMERA_HEAP
LOCAL_CFLAGS += -DCAMERA_GRALLOC_FALLBACK_HEAP_ID=GRALLOC_USAGE_PRIVATE_CAMERA_HEAP # Don't Care LOCAL_CFLAGS += -DCAMERA_GRALLOC_FALLBACK_HEAP_ID=GRALLOC_USAGE_PRIVATE_IOMMU_HEAP # Don't Care
LOCAL_CFLAGS += -DCAMERA_ION_FALLBACK_HEAP_ID=ION_CAMERA_HEAP_ID # EBI LOCAL_CFLAGS += -DCAMERA_ION_FALLBACK_HEAP_ID=ION_IOMMU_HEAP_ID # EBI
LOCAL_CFLAGS += -DCAMERA_ZSL_ION_FALLBACK_HEAP_ID=ION_CAMERA_HEAP_ID LOCAL_CFLAGS += -DCAMERA_ZSL_ION_FALLBACK_HEAP_ID=ION_IOMMU_HEAP_ID
LOCAL_CFLAGS += -DCAMERA_GRALLOC_CACHING_ID=0 LOCAL_CFLAGS += -DCAMERA_GRALLOC_CACHING_ID=0
LOCAL_CFLAGS += -DNUM_RECORDING_BUFFERS=5
else else
LOCAL_CFLAGS += -DCAMERA_GRALLOC_HEAP_ID=GRALLOC_USAGE_PRIVATE_ADSP_HEAP LOCAL_CFLAGS += -DCAMERA_GRALLOC_HEAP_ID=GRALLOC_USAGE_PRIVATE_CAMERA_HEAP
LOCAL_CFLAGS += -DCAMERA_GRALLOC_FALLBACK_HEAP_ID=GRALLOC_USAGE_PRIVATE_ADSP_HEAP # Don't Care LOCAL_CFLAGS += -DCAMERA_GRALLOC_FALLBACK_HEAP_ID=GRALLOC_USAGE_PRIVATE_CAMERA_HEAP # Don't Care
LOCAL_CFLAGS += -DCAMERA_GRALLOC_CACHING_ID=GRALLOC_USAGE_PRIVATE_UNCACHED #uncached LOCAL_CFLAGS += -DCAMERA_GRALLOC_CACHING_ID=GRALLOC_USAGE_PRIVATE_UNCACHED #uncached
LOCAL_CFLAGS += -DCAMERA_ION_FALLBACK_HEAP_ID=ION_CAMERA_HEAP_ID
LOCAL_CFLAGS += -DCAMERA_ZSL_ION_FALLBACK_HEAP_ID=ION_CAMERA_HEAP_ID
LOCAL_CFLAGS += -DNUM_RECORDING_BUFFERS=5
endif endif


LOCAL_HAL_FILES := \ LOCAL_HAL_FILES := \
Expand All @@ -44,20 +54,30 @@ LOCAL_HAL_FILES := \
src/QCameraHWI_Preview.cpp \ src/QCameraHWI_Preview.cpp \
src/QCameraHWI_Record.cpp \ src/QCameraHWI_Record.cpp \
src/QCameraHWI_Still.cpp \ src/QCameraHWI_Still.cpp \
src/QCameraHWI_Rdi.cpp \
src/QCameraHWI_Mem.cpp \ src/QCameraHWI_Mem.cpp \
src/QCameraStream.cpp src/QCameraParameters.cpp\
src/QCameraStream.cpp\
../usbcamcore/src/QualcommUsbCamera.cpp\
../usbcamcore/src/QCameraMjpegDecode.cpp\
../usbcamcore/src/QCameraUsbParm.cpp


LOCAL_HAL_WRAPPER_FILES := ../wrapper/QualcommCamera.cpp LOCAL_HAL_WRAPPER_FILES := ../wrapper/QualcommCamera.cpp


LOCAL_C_INCLUDES := \ LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/../wrapper \ $(LOCAL_PATH)/../wrapper \
$(LOCAL_PATH)/inc \ $(LOCAL_PATH)/inc \
$(TARGET_OUT_INTERMEDIATES)/include/mm-camera-interface_badger \ $(LOCAL_PATH)/../usbcamcore/inc\

$(LOCAL_PATH)/../../stack/mm-camera-interface/inc \
# may need remove this includes $(LOCAL_PATH)/../../stack/mm-jpeg-interface/inc \
LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/mm-camera $(LOCAL_PATH)/../../../ \
LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/mm-still \ $(TARGET_OUT_INTERMEDIATES)/include/mm-camera-interface \
$(TARGET_OUT_HEADERS)/mm-still/jpeg # $(TARGET_OUT_INTERMEDIATES)/include/mm-jpeg-interface\
# may need remove this includes
LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/mm-camera
#LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/mm-still
LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/mm-still/jpeg
#end #end


LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
Expand All @@ -76,14 +96,14 @@ LOCAL_SRC_FILES := \
$(LOCAL_HAL_WRAPPER_FILES) \ $(LOCAL_HAL_WRAPPER_FILES) \
$(LOCAL_HAL_FILES) $(LOCAL_HAL_FILES)


LOCAL_SHARED_LIBRARIES := libutils libui libcamera_client liblog libcutils LOCAL_SHARED_LIBRARIES := libutils libui libcamera_client liblog libcutils libmmjpeg
LOCAL_SHARED_LIBRARIES += libmmcamera_interface_badger LOCAL_SHARED_LIBRARIES += libmmcamera_interface
LOCAL_SHARED_LIBRARIES+= libgenlock libbinder LOCAL_SHARED_LIBRARIES += libgenlock libbinder libmmjpeg_interface libhardware


LOCAL_CFLAGS += -include bionic/libc/include/sys/socket.h LOCAL_CFLAGS += -include bionic/libc/kernel/common/linux/socket.h


LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
LOCAL_MODULE:= camera_badger.$(TARGET_BOARD_PLATFORM) LOCAL_MODULE:= camera.$(TARGET_BOARD_PLATFORM)
LOCAL_MODULE_TAGS := optional LOCAL_MODULE_TAGS := optional
include $(BUILD_SHARED_LIBRARY) include $(BUILD_SHARED_LIBRARY)


Expand Down
7 changes: 5 additions & 2 deletions QCamera/HAL/core/inc/QCameraHAL.h
100644 → 100755
Original file line number Original file line Diff line number Diff line change
@@ -1,5 +1,8 @@
/* /*
** Copyright (c) 2011 The Linux Foundation. All rights reserved. ** Copyright (c) 2011-2012 The Linux Foundation. All rights reserved.
**
** Not a Contribution, Apache license notifications and license are retained
** for attribution purposes only.
** **
** Licensed under the Apache License, Version 2.0 (the "License"); ** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License. ** you may not use this file except in compliance with the License.
Expand All @@ -21,7 +24,7 @@
#include "QCameraHWI.h" #include "QCameraHWI.h"


extern "C" { extern "C" {
#include <mm_camera_interface2.h> #include <mm_camera_interface.h>
} }
namespace android { namespace android {


Expand Down
Loading

0 comments on commit 6f83d73

Please sign in to comment.