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

Commit 1fff2d17 authored by Avichal Rakesh's avatar Avichal Rakesh
Browse files

cameraservice: Pipe session identifier to the Camera HAL

For data analysis from HAL logs, it is helpful to get some higher level
information of the camera usage (such as the client's package name).
HALs are denied access to this higher level information at runtime.

To help data with data analysis, cameraservice will now pass a session
identifier when configuring streams. This identifier can be used to
correlate HAL logs with cameraservice logs at the time of log
consumption, but not at runtime. This identifier has no functional
purpose and is randomly generated, so does not contain any identifying
information about the high level client.

Bug: 271171714
Test: Manually verified that cameraservice passes the session identifier
      to the camera HAL.
Change-Id: Id980b11f9062369e5bca354a5113d6b5040de8be
parent 88fc522d
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -2451,8 +2451,9 @@ status_t Camera3Device::configureStreamsLocked(int operatingMode,
    // max_buffers, usage, and priv fields, as well as data_space and format
    // fields for IMPLEMENTATION_DEFINED formats.

    int64_t logId = mCameraServiceProxyWrapper->getCurrentLogIdForCamera(mId);
    const camera_metadata_t *sessionBuffer = sessionParams.getAndLock();
    res = mInterface->configureStreams(sessionBuffer, &config, bufferSizes);
    res = mInterface->configureStreams(sessionBuffer, &config, bufferSizes, logId);
    sessionParams.unlock(sessionBuffer);

    if (res == BAD_VALUE) {
+1 −1
Original line number Diff line number Diff line
@@ -411,7 +411,7 @@ class Camera3Device :

        virtual status_t configureStreams(const camera_metadata_t * sessionParams,
                /*inout*/ camera_stream_configuration_t * config,
                const std::vector<uint32_t>& bufferSizes) = 0;
                const std::vector<uint32_t>& bufferSizes, int64_t logId) = 0;

        // The injection camera configures the streams to hal.
        virtual status_t configureInjectedStreams(
+4 −2
Original line number Diff line number Diff line
@@ -875,7 +875,8 @@ status_t AidlCamera3Device::AidlHalInterface::constructDefaultRequestSettings(

status_t AidlCamera3Device::AidlHalInterface::configureStreams(
        const camera_metadata_t *sessionParams,
        camera_stream_configuration *config, const std::vector<uint32_t>& bufferSizes) {
        camera_stream_configuration *config, const std::vector<uint32_t>& bufferSizes,
        int64_t logId) {
    using camera::device::StreamType;
    using camera::device::StreamConfigurationMode;

@@ -960,6 +961,7 @@ status_t AidlCamera3Device::AidlHalInterface::configureStreams(

    requestedConfiguration.streamConfigCounter = mNextStreamConfigCounter++;
    requestedConfiguration.multiResolutionInputImage = config->input_is_multi_resolution;
    requestedConfiguration.logId = logId;
    auto err = mAidlSession->configureStreams(requestedConfiguration, &finalConfiguration);
    if (!err.isOk()) {
        ALOGE("%s: Transaction error: %s", __FUNCTION__, err.getMessage());
+3 −1
Original line number Diff line number Diff line
@@ -101,7 +101,9 @@ class AidlCamera3Device :

        virtual status_t configureStreams(const camera_metadata_t *sessionParams,
                /*inout*/ camera_stream_configuration_t *config,
                const std::vector<uint32_t>& bufferSizes) override;
                const std::vector<uint32_t>& bufferSizes,
                int64_t logId) override;

        // The injection camera configures the streams to hal.
        virtual status_t configureInjectedStreams(
                const camera_metadata_t* sessionParams,
+2 −1
Original line number Diff line number Diff line
@@ -880,7 +880,8 @@ bool HidlCamera3Device::HidlHalInterface::isReconfigurationRequired(

status_t HidlCamera3Device::HidlHalInterface::configureStreams(
        const camera_metadata_t *sessionParams,
        camera_stream_configuration *config, const std::vector<uint32_t>& bufferSizes) {
        camera_stream_configuration *config, const std::vector<uint32_t>& bufferSizes,
        int64_t /*logId*/) {
    ATRACE_NAME("CameraHal::configureStreams");
    if (!valid()) return INVALID_OPERATION;
    status_t res = OK;
Loading