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

Commit d26b1860 authored by Shuzhen Wang's avatar Shuzhen Wang
Browse files

Camera: Add user tag to camera action event

The user tag set by CaptureRequest.setTag() is passed to cameraservice.
The cameraservice saves the latest tag's string description into the
camera action event's session data.

Test: ./out/host/linux-x86/bin/statsd_testdrive 227
Bug: 223671217
Change-Id: I604d8b3bd3895c330de5b02498c7eb3ed8e05ed8
parent 50bc3119
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -375,6 +375,12 @@ status_t CameraSessionStats::readFromParcel(const android::Parcel* parcel) {
        return err;
    }

    String16 userTag;
    if ((err = parcel->readString16(&userTag)) != OK) {
        ALOGE("%s: Failed to read user tag!", __FUNCTION__);
        return BAD_VALUE;
    }

    mCameraId = id;
    mFacing = facing;
    mNewCameraState = newCameraState;
@@ -389,6 +395,7 @@ status_t CameraSessionStats::readFromParcel(const android::Parcel* parcel) {
    mResultErrorCount = resultErrorCount;
    mDeviceError = deviceError;
    mStreamStats = std::move(streamStats);
    mUserTag = userTag;

    return OK;
}
@@ -471,6 +478,10 @@ status_t CameraSessionStats::writeToParcel(android::Parcel* parcel) const {
        return err;
    }

    if ((err = parcel->writeString16(mUserTag)) != OK) {
        ALOGE("%s: Failed to write user tag!", __FUNCTION__);
        return err;
    }
    return OK;
}

+22 −0
Original line number Diff line number Diff line
@@ -146,6 +146,20 @@ status_t CaptureRequest::readFromParcel(const android::Parcel* parcel) {
        mSurfaceIdxList.push_back(surfaceIdx);
    }

    int32_t hasUserTag;
    if ((err = parcel->readInt32(&hasUserTag)) != OK) {
        ALOGE("%s: Failed to read user tag availability flag", __FUNCTION__);
        return BAD_VALUE;
    }
    if (hasUserTag) {
        String16 userTag;
        if ((err = parcel->readString16(&userTag)) != OK) {
            ALOGE("%s: Failed to read user tag!", __FUNCTION__);
            return BAD_VALUE;
        }
        mUserTag = String8(userTag).c_str();
    }

    return OK;
}

@@ -213,6 +227,14 @@ status_t CaptureRequest::writeToParcel(android::Parcel* parcel) const {
            return err;
        }
    }

    if (mUserTag.empty()) {
        parcel->writeInt32(0);
    } else {
        parcel->writeInt32(1);
        parcel->writeString16(String16(mUserTag.c_str()));
    }

    return OK;
}

+1 −0
Original line number Diff line number Diff line
@@ -136,6 +136,7 @@ public:
    // Whether the device runs into an error state
    bool mDeviceError;
    std::vector<CameraStreamStats> mStreamStats;
    String16 mUserTag;

    // Constructors
    CameraSessionStats();
+2 −0
Original line number Diff line number Diff line
@@ -63,6 +63,8 @@ struct CaptureRequest : public Parcelable {

    void*                   mContext; // arbitrary user context from NDK apps, null for java apps

    std::string             mUserTag; // The string representation of object passed into setTag.

    /**
     * Keep impl up-to-date with CaptureRequest.java in frameworks/base
     */
+6 −1
Original line number Diff line number Diff line
@@ -518,6 +518,10 @@ binder::Status CameraDeviceClient::submitRequestList(

        metadataRequestList.push_back(physicalSettingsList);
        surfaceMapList.push_back(surfaceMap);

        if (!request.mUserTag.empty()) {
            mUserTag = request.mUserTag;
        }
    }
    mRequestIdCounter++;

@@ -1964,7 +1968,8 @@ void CameraDeviceClient::notifyIdle(
    if (remoteCb != 0) {
        remoteCb->onDeviceIdle();
    }
    Camera2ClientBase::notifyIdle(requestCount, resultErrorCount, deviceError, streamStats);
    Camera2ClientBase::notifyIdleWithUserTag(requestCount, resultErrorCount, deviceError,
            streamStats, mUserTag);
}

void CameraDeviceClient::notifyShutter(const CaptureResultExtras& resultExtras,
Loading