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

Commit 99e064e7 authored by Shuzhen Wang's avatar Shuzhen Wang Committed by Android (Google) Code Review
Browse files

Merge "Camera: Add feature combination query analytics" into main

parents bab9b6fe e3e8e73f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -168,6 +168,7 @@ filegroup {
    name: "libcamera_client_aidl",
    srcs: [
        "aidl/android/hardware/CameraExtensionSessionStats.aidl",
        "aidl/android/hardware/CameraFeatureCombinationStats.aidl",
        "aidl/android/hardware/ICameraService.aidl",
        "aidl/android/hardware/ICameraServiceListener.aidl",
        "aidl/android/hardware/ICameraServiceProxy.aidl",
+47 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.hardware;

/**
 * {@hide}
 */
parcelable CameraFeatureCombinationStats {
    /**
     * Values for feature combination queries
     */
    const long CAMERA_FEATURE_UNKNOWN = 0;
    const long CAMERA_FEATURE_60_FPS = 1 << 0;
    const long CAMERA_FEATURE_STABILIZATION = 1 << 1;
    const long CAMERA_FEATURE_HLG10 = 1 << 2;
    const long CAMERA_FEATURE_JPEG = 1 << 3;
    const long CAMERA_FEATURE_JPEG_R = 1 << 4;
    const long CAMERA_FEATURE_4K = 1 << 5;

    /**
     * Values for notifyFeatureCombinationStats type
     */
    enum QueryType {
        QUERY_FEATURE_COMBINATION = 0,
        QUERY_SESSION_CHARACTERISTICS = 1,
    }

    @utf8InCpp String mCameraId;
    int mUid;
    long mFeatureCombination;
    int mQueryType;
    int mStatus;
}
+7 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package android.hardware;

import android.hardware.CameraFeatureCombinationStats;
import android.hardware.CameraSessionStats;
import android.hardware.CameraExtensionSessionStats;

@@ -37,6 +38,12 @@ interface ICameraServiceProxy
     */
    oneway void notifyCameraState(in CameraSessionStats cameraSessionStats);

    /**
     * Notify feature combination query for a camera device.
     */
    oneway void notifyFeatureCombinationStats(
            in CameraFeatureCombinationStats cameraFeatureCombinationStats);

    /**
     * Returns the necessary rotate and crop override for the top activity which
     * will be one of ({@link android.hardware.camera2.CameraMetadata#SCALER_ROTATE_AND_CROP_NONE},
+13 −3
Original line number Diff line number Diff line
@@ -926,8 +926,13 @@ Status CameraService::isSessionConfigurationWithParametersSupported(
                                SessionConfigurationUtils::targetPerfClassPrimaryCamera(
                                        mPerfClassPrimaryCameraIds, cameraId, targetSdkVersion);

    return isSessionConfigurationWithParametersSupportedUnsafe(cameraId, sessionConfiguration,
                                                               overrideForPerfClass, supported);
    auto ret = isSessionConfigurationWithParametersSupportedUnsafe(cameraId,
            sessionConfiguration, overrideForPerfClass, supported);
    if (flags::analytics_24q3()) {
        mCameraServiceProxyWrapper->logFeatureCombinationQuery(cameraId,
                getCallingUid(), sessionConfiguration, ret);
    }
    return ret;
}

Status CameraService::isSessionConfigurationWithParametersSupportedUnsafe(
@@ -1071,7 +1076,12 @@ Status CameraService::getSessionCharacteristics(const std::string& unresolvedCam
            }
    }

    return filterSensitiveMetadataIfNeeded(cameraId, outMetadata);
    Status res = filterSensitiveMetadataIfNeeded(cameraId, outMetadata);
    if (flags::analytics_24q3()) {
        mCameraServiceProxyWrapper->logSessionCharacteristicsQuery(cameraId,
                getCallingUid(), sessionConfiguration, res);
    }
    return res;
}

Status CameraService::filterSensitiveMetadataIfNeeded(
+5 −0
Original line number Diff line number Diff line
@@ -146,6 +146,11 @@ public:
        return mCameraServiceProxy->notifyCameraState(cameraSessionStats);
    }

    virtual binder::Status notifyFeatureCombinationStats(
            const hardware::CameraFeatureCombinationStats& featureCombStats) override {
        return mCameraServiceProxy->notifyFeatureCombinationStats(featureCombStats);
    }

    virtual binder::Status isCameraDisabled(int userId, bool *ret) override {
        if (mOverrideCameraDisabled) {
            *ret = mCameraDisabled;
Loading