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

Commit 952e3c43 authored by Jan Sebechlebsky's avatar Jan Sebechlebsky
Browse files

Add support for device-awareness in CameraManager NDK

Pass deviceId for calls to ICameraService, and filter callbacks
from ICameraServiceListener based on current deviceId.

Test: atest VirtualCameraNdkTest
Bug: 333529843
Change-Id: Idde791d93d17e319d45b49ab58dfed2c529e1539
parent 3e8404f4
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -77,6 +77,8 @@ cc_library_shared {
        "impl/ACameraCaptureSession.cpp",
    ],
    shared_libs: [
        "android.companion.virtual.virtualdevice_aidl-cpp",
        "android.companion.virtualdevice.flags-aconfig-cc",
        "libbinder",
        "liblog",
        "libgui",
+8 −8
Original line number Diff line number Diff line
@@ -68,7 +68,7 @@ void ACameraManager_deleteCameraIdList(ACameraIdList* cameraIdList) {

EXPORT
camera_status_t ACameraManager_registerAvailabilityCallback(
        ACameraManager*, const ACameraManager_AvailabilityCallbacks *callback) {
        ACameraManager* manager, const ACameraManager_AvailabilityCallbacks* callback) {
    ATRACE_CALL();
    if (callback == nullptr) {
        ALOGE("%s: invalid argument! callback is null!", __FUNCTION__);
@@ -81,13 +81,13 @@ camera_status_t ACameraManager_registerAvailabilityCallback(
               callback->onCameraAvailable, callback->onCameraUnavailable);
        return ACAMERA_ERROR_INVALID_PARAMETER;
    }
    CameraManagerGlobal::getInstance()->registerAvailabilityCallback(callback);
    manager->registerAvailabilityCallback(callback);
    return ACAMERA_OK;
}

EXPORT
camera_status_t ACameraManager_unregisterAvailabilityCallback(
        ACameraManager*, const ACameraManager_AvailabilityCallbacks *callback) {
        ACameraManager* manager, const ACameraManager_AvailabilityCallbacks* callback) {
    ATRACE_CALL();
    if (callback == nullptr) {
        ALOGE("%s: invalid argument! callback is null!", __FUNCTION__);
@@ -100,13 +100,13 @@ camera_status_t ACameraManager_unregisterAvailabilityCallback(
               callback->onCameraAvailable, callback->onCameraUnavailable);
        return ACAMERA_ERROR_INVALID_PARAMETER;
    }
    CameraManagerGlobal::getInstance()->unregisterAvailabilityCallback(callback);
    manager->unregisterAvailabilityCallback(callback);
    return ACAMERA_OK;
}

EXPORT
camera_status_t ACameraManager_registerExtendedAvailabilityCallback(
        ACameraManager* /*manager*/, const ACameraManager_ExtendedAvailabilityCallbacks *callback) {
        ACameraManager* manager, const ACameraManager_ExtendedAvailabilityCallbacks* callback) {
    ATRACE_CALL();
    if (callback == nullptr) {
        ALOGE("%s: invalid argument! callback is null!", __FUNCTION__);
@@ -131,13 +131,13 @@ camera_status_t ACameraManager_registerExtendedAvailabilityCallback(
            return ACAMERA_ERROR_INVALID_PARAMETER;
        }
    }
    CameraManagerGlobal::getInstance()->registerExtendedAvailabilityCallback(callback);
    manager->registerExtendedAvailabilityCallback(callback);
    return ACAMERA_OK;
}

EXPORT
camera_status_t ACameraManager_unregisterExtendedAvailabilityCallback(
        ACameraManager* /*manager*/, const ACameraManager_ExtendedAvailabilityCallbacks *callback) {
        ACameraManager* manager, const ACameraManager_ExtendedAvailabilityCallbacks* callback) {
    ATRACE_CALL();
    if (callback == nullptr) {
        ALOGE("%s: invalid argument! callback is null!", __FUNCTION__);
@@ -154,7 +154,7 @@ camera_status_t ACameraManager_unregisterExtendedAvailabilityCallback(
               callback->onCameraAccessPrioritiesChanged);
        return ACAMERA_ERROR_INVALID_PARAMETER;
    }
    CameraManagerGlobal::getInstance()->unregisterExtendedAvailabilityCallback(callback);
    manager->unregisterExtendedAvailabilityCallback(callback);
    return ACAMERA_OK;
}

+198 −90

File changed.

Preview size limit exceeded, changes collapsed.

+111 −57

File changed.

Preview size limit exceeded, changes collapsed.

+20 −1
Original line number Diff line number Diff line
@@ -866,6 +866,25 @@ ACameraManager::getTagFromName(const char *cameraId, const char *name, uint32_t
    return status == OK ? ACAMERA_OK : ACAMERA_ERROR_METADATA_NOT_FOUND;
}

ACameraManager::~ACameraManager() {
void ACameraManager::registerAvailabilityCallback(
        const ACameraManager_AvailabilityCallbacks* callback) {
    mGlobalManager->registerAvailabilityCallback(callback);
}

void ACameraManager::unregisterAvailabilityCallback(
        const ACameraManager_AvailabilityCallbacks* callback) {
    mGlobalManager->unregisterAvailabilityCallback(callback);
}

void ACameraManager::registerExtendedAvailabilityCallback(
        const ACameraManager_ExtendedAvailabilityCallbacks* callback) {
    mGlobalManager->registerExtendedAvailabilityCallback(callback);
}

void ACameraManager::unregisterExtendedAvailabilityCallback(
        const ACameraManager_ExtendedAvailabilityCallbacks* callback) {
    mGlobalManager->unregisterExtendedAvailabilityCallback(callback);
}

ACameraManager::~ACameraManager() {
}
Loading