summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuK1337 <priv.luk@gmail.com>2017-09-21 22:06:32 +0200
committerEthan Chen <intervigil@gmail.com>2017-10-11 20:52:51 -0700
commit5bd173065402ef998874d2cae80a7e27576e05be (patch)
tree1b33380b75630fe038fb06772a9c26af062b6cfe
parent5aad8936be1fbae6b0d7d0d66d83d9472b5708b2 (diff)
downloadandroid_hardware_lineage_interfaces-5bd173065402ef998874d2cae80a7e27576e05be.tar.gz
android_hardware_lineage_interfaces-5bd173065402ef998874d2cae80a7e27576e05be.tar.bz2
android_hardware_lineage_interfaces-5bd173065402ef998874d2cae80a7e27576e05be.zip
lineage/interfaces: Add custom camera provider for legacy devices
* Camera HALs before Treble used to pass camera id in user field, in Treble they are meant to pass pointer to CameraDevice. * This patch workarounds this by storing local pointer to CameraDevice and not relying on user field. Change-Id: I415343d02edd96d8da56e1f25bf23ffce83fb2ce
-rw-r--r--camera/Android.bp4
-rw-r--r--camera/device/1.0-legacy/Android.bp (renamed from camera/device/1.0/Android.bp)2
-rw-r--r--camera/device/1.0-legacy/CameraDevice.cpp (renamed from camera/device/1.0/CameraDevice.cpp)22
-rw-r--r--camera/device/1.0-legacy/CameraDevice_1_0.h (renamed from camera/device/1.0/CameraDevice_1_0.h)0
-rw-r--r--camera/provider/2.4-legacy/Android.bp (renamed from camera/provider/2.4/Android.bp)4
-rw-r--r--camera/provider/2.4-legacy/CameraProvider.cpp (renamed from camera/provider/2.4/CameraProvider.cpp)2
-rw-r--r--camera/provider/2.4-legacy/CameraProvider.h (renamed from camera/provider/2.4/CameraProvider.h)0
7 files changed, 19 insertions, 15 deletions
diff --git a/camera/Android.bp b/camera/Android.bp
index de47f5f..f5dfcce 100644
--- a/camera/Android.bp
+++ b/camera/Android.bp
@@ -1,4 +1,4 @@
subdirs = [
- "device/1.0",
- "provider/2.4",
+ "device/1.0-legacy",
+ "provider/2.4-legacy",
]
diff --git a/camera/device/1.0/Android.bp b/camera/device/1.0-legacy/Android.bp
index fa246c1..ebc0490 100644
--- a/camera/device/1.0/Android.bp
+++ b/camera/device/1.0-legacy/Android.bp
@@ -1,5 +1,5 @@
cc_library_shared {
- name: "camera.device@1.0-impl",
+ name: "camera.device@1.0-impl-legacy",
defaults: ["hidl_defaults"],
proprietary: true,
srcs: [
diff --git a/camera/device/1.0/CameraDevice.cpp b/camera/device/1.0-legacy/CameraDevice.cpp
index c53c0d8..63e5c40 100644
--- a/camera/device/1.0/CameraDevice.cpp
+++ b/camera/device/1.0-legacy/CameraDevice.cpp
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-#define LOG_TAG "CamDev@1.0-impl"
+#define LOG_TAG "CamDev@1.0-impl.legacy"
#include <hardware/camera.h>
#include <hardware/gralloc1.h>
#include <hidlmemory/mapping.h>
@@ -36,6 +36,8 @@ using ::android::hardware::graphics::common::V1_0::PixelFormat;
HandleImporter CameraDevice::sHandleImporter;
+static CameraDevice *sCameraDevice;
+
Status CameraDevice::getHidlStatus(const int& status) {
switch (status) {
case 0: return Status::OK;
@@ -359,9 +361,10 @@ CameraDevice::CameraHeapMemory::~CameraHeapMemory() {
}
// shared memory methods
-camera_memory_t* CameraDevice::sGetMemory(int fd, size_t buf_size, uint_t num_bufs, void *user) {
+camera_memory_t* CameraDevice::sGetMemory(int fd, size_t buf_size, uint_t num_bufs,
+ void *user __unused) {
ALOGV("%s", __FUNCTION__);
- CameraDevice* object = static_cast<CameraDevice*>(user);
+ CameraDevice* object = sCameraDevice;
if (object->mDeviceCallback == nullptr) {
ALOGE("%s: camera HAL request memory while camera is not opened!", __FUNCTION__);
return nullptr;
@@ -403,18 +406,18 @@ void CameraDevice::sPutMemory(camera_memory_t *data) {
}
// Callback forwarding methods
-void CameraDevice::sNotifyCb(int32_t msg_type, int32_t ext1, int32_t ext2, void *user) {
+void CameraDevice::sNotifyCb(int32_t msg_type, int32_t ext1, int32_t ext2, void *user __unused) {
ALOGV("%s", __FUNCTION__);
- CameraDevice* object = static_cast<CameraDevice*>(user);
+ CameraDevice* object = sCameraDevice;
if (object->mDeviceCallback != nullptr) {
object->mDeviceCallback->notifyCallback((NotifyCallbackMsg) msg_type, ext1, ext2);
}
}
void CameraDevice::sDataCb(int32_t msg_type, const camera_memory_t *data, unsigned int index,
- camera_frame_metadata_t *metadata, void *user) {
+ camera_frame_metadata_t *metadata, void *user __unused) {
ALOGV("%s", __FUNCTION__);
- CameraDevice* object = static_cast<CameraDevice*>(user);
+ CameraDevice* object = sCameraDevice;
sp<CameraHeapMemory> mem(static_cast<CameraHeapMemory*>(data->handle));
if (index >= mem->mNumBufs) {
ALOGE("%s: invalid buffer index %d, max allowed is %d", __FUNCTION__,
@@ -482,9 +485,9 @@ void CameraDevice::handleCallbackTimestamp(
}
void CameraDevice::sDataCbTimestamp(nsecs_t timestamp, int32_t msg_type,
- const camera_memory_t *data, unsigned index, void *user) {
+ const camera_memory_t *data, unsigned index, void *user __unused) {
ALOGV("%s", __FUNCTION__);
- CameraDevice* object = static_cast<CameraDevice*>(user);
+ CameraDevice* object = sCameraDevice;
// Start refcounting the heap object from here on. When the clients
// drop all references, it will be destroyed (as well as the enclosed
// MemoryHeapBase.
@@ -660,6 +663,7 @@ Return<Status> CameraDevice::open(const sp<ICameraDeviceCallback>& callback) {
initHalPreviewWindow();
mDeviceCallback = callback;
+ sCameraDevice = this;
if (mDevice->ops->set_callbacks) {
mDevice->ops->set_callbacks(mDevice,
diff --git a/camera/device/1.0/CameraDevice_1_0.h b/camera/device/1.0-legacy/CameraDevice_1_0.h
index c078596..c078596 100644
--- a/camera/device/1.0/CameraDevice_1_0.h
+++ b/camera/device/1.0-legacy/CameraDevice_1_0.h
diff --git a/camera/provider/2.4/Android.bp b/camera/provider/2.4-legacy/Android.bp
index 26b1e94..bbf04b1 100644
--- a/camera/provider/2.4/Android.bp
+++ b/camera/provider/2.4-legacy/Android.bp
@@ -1,5 +1,5 @@
cc_library_shared {
- name: "android.hardware.camera.provider@2.4-impl",
+ name: "android.hardware.camera.provider@2.4-impl-legacy",
defaults: ["hidl_defaults"],
proprietary: true,
relative_install_path: "hw",
@@ -10,7 +10,7 @@ cc_library_shared {
"libutils",
"libcutils",
"android.hardware.camera.device@1.0",
- "camera.device@1.0-impl",
+ "camera.device@1.0-impl-legacy",
"camera.device@3.2-impl",
"android.hardware.camera.provider@2.4",
"android.hardware.camera.common@1.0",
diff --git a/camera/provider/2.4/CameraProvider.cpp b/camera/provider/2.4-legacy/CameraProvider.cpp
index 19f7bdd..374ff7b 100644
--- a/camera/provider/2.4/CameraProvider.cpp
+++ b/camera/provider/2.4-legacy/CameraProvider.cpp
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-#define LOG_TAG "CamProvider@2.4-impl"
+#define LOG_TAG "CamProvider@2.4-impl.legacy"
#include <android/log.h>
#include "CameraProvider.h"
diff --git a/camera/provider/2.4/CameraProvider.h b/camera/provider/2.4-legacy/CameraProvider.h
index 75971fa..75971fa 100644
--- a/camera/provider/2.4/CameraProvider.h
+++ b/camera/provider/2.4-legacy/CameraProvider.h