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

Commit 4dd6e662 authored by Jayant Chowdhary's avatar Jayant Chowdhary Committed by Android (Google) Code Review
Browse files

Merge "TagMonitor: don't allocate a set of stream ids if monitoring is not enabled."

parents b051b48a c30b4c30
Loading
Loading
Loading
Loading
+5 −9
Original line number Diff line number Diff line
@@ -3084,10 +3084,11 @@ CameraMetadata Camera3Device::getLatestRequestLocked() {
void Camera3Device::monitorMetadata(TagMonitor::eventSource source,
        int64_t frameNumber, nsecs_t timestamp, const CameraMetadata& metadata,
        const std::unordered_map<std::string, CameraMetadata>& physicalMetadata,
        const std::set<int32_t> &outputStreamIds, int32_t inputStreamId) {
        const camera_stream_buffer_t *outputBuffers, uint32_t numOutputBuffers,
        int32_t inputStreamId) {

    mTagMonitor.monitorMetadata(source, frameNumber, timestamp, metadata,
            physicalMetadata, outputStreamIds, inputStreamId);
            physicalMetadata, outputBuffers, numOutputBuffers, inputStreamId);
}

/**
@@ -4590,12 +4591,6 @@ void Camera3Device::RequestThread::updateNextRequest(NextRequest& nextRequest) {

        sp<Camera3Device> parent = mParent.promote();
        if (parent != NULL) {
            std::set<int32_t> outputStreamIds;
            for (size_t i = 0; i < halRequest.num_output_buffers; i++) {
                const camera_stream_buffer_t *src = halRequest.output_buffers + i;
                int32_t streamId = Camera3Stream::cast(src->stream)->getId();
                outputStreamIds.emplace(streamId);
            }
            int32_t inputStreamId = -1;
            if (halRequest.input_buffer != nullptr) {
              inputStreamId = Camera3Stream::cast(halRequest.input_buffer->stream)->getId();
@@ -4603,7 +4598,8 @@ void Camera3Device::RequestThread::updateNextRequest(NextRequest& nextRequest) {

            parent->monitorMetadata(TagMonitor::REQUEST,
                    halRequest.frame_number,
                    0, mLatestRequest, mLatestPhysicalRequest, outputStreamIds, inputStreamId);
                    0, mLatestRequest, mLatestPhysicalRequest, halRequest.output_buffers,
                    halRequest.num_output_buffers, inputStreamId);
        }
    }

+2 −1
Original line number Diff line number Diff line
@@ -1250,7 +1250,8 @@ class Camera3Device :
    void monitorMetadata(TagMonitor::eventSource source, int64_t frameNumber,
            nsecs_t timestamp, const CameraMetadata& metadata,
            const std::unordered_map<std::string, CameraMetadata>& physicalMetadata,
            const std::set<int32_t> &outputStreamIds, int32_t inputStreamId);
            const camera_stream_buffer_t *outputBuffers, uint32_t numOutputBuffers,
            int32_t inputStreamId);

    metadata_vendor_id_t mVendorTagId;

+1 −1
Original line number Diff line number Diff line
@@ -368,7 +368,7 @@ void sendCaptureResult(
    }
    states.tagMonitor.monitorMetadata(TagMonitor::RESULT,
            frameNumber, sensorTimestamp, captureResult.mMetadata,
            monitoredPhysicalMetadata, std::set<int32_t>());
            monitoredPhysicalMetadata);

    insertResultLocked(states, &captureResult, frameNumber);
}
+0 −60
Original line number Diff line number Diff line
@@ -42,66 +42,6 @@ using ResultMetadataQueue = hardware::MessageQueue<uint8_t, hardware::kSynchroni

namespace camera3 {

    typedef struct camera_stream_configuration {
        uint32_t num_streams;
        camera_stream_t **streams;
        uint32_t operation_mode;
        bool input_is_multi_resolution;
    } camera_stream_configuration_t;

    typedef struct camera_capture_request {
        uint32_t frame_number;
        const camera_metadata_t *settings;
        camera_stream_buffer_t *input_buffer;
        uint32_t num_output_buffers;
        const camera_stream_buffer_t *output_buffers;
        uint32_t num_physcam_settings;
        const char **physcam_id;
        const camera_metadata_t **physcam_settings;
        int32_t input_width;
        int32_t input_height;
    } camera_capture_request_t;

    typedef struct camera_capture_result {
        uint32_t frame_number;
        const camera_metadata_t *result;
        uint32_t num_output_buffers;
        const camera_stream_buffer_t *output_buffers;
        const camera_stream_buffer_t *input_buffer;
        uint32_t partial_result;
        uint32_t num_physcam_metadata;
        const char **physcam_ids;
        const camera_metadata_t **physcam_metadata;
    } camera_capture_result_t;

    typedef struct camera_shutter_msg {
        uint32_t frame_number;
        uint64_t timestamp;
    } camera_shutter_msg_t;

    typedef struct camera_error_msg {
        uint32_t frame_number;
        camera_stream_t *error_stream;
        int error_code;
    } camera_error_msg_t;

    typedef enum camera_error_msg_code {
        CAMERA_MSG_ERROR_DEVICE = 1,
        CAMERA_MSG_ERROR_REQUEST = 2,
        CAMERA_MSG_ERROR_RESULT = 3,
        CAMERA_MSG_ERROR_BUFFER = 4,
        CAMERA_MSG_NUM_ERRORS
    } camera_error_msg_code_t;

    typedef struct camera_notify_msg {
        int type;

        union {
            camera_error_msg_t error;
            camera_shutter_msg_t shutter;
        } message;
    } camera_notify_msg_t;

    /**
     * Helper methods shared between Camera3Device/Camera3OfflineSession for HAL callbacks
     */
+60 −0
Original line number Diff line number Diff line
@@ -30,6 +30,66 @@ namespace android {

namespace camera3 {

typedef struct camera_stream_configuration {
    uint32_t num_streams;
    camera_stream_t **streams;
    uint32_t operation_mode;
    bool input_is_multi_resolution;
} camera_stream_configuration_t;

typedef struct camera_capture_request {
    uint32_t frame_number;
    const camera_metadata_t *settings;
    camera_stream_buffer_t *input_buffer;
    uint32_t num_output_buffers;
    const camera_stream_buffer_t *output_buffers;
    uint32_t num_physcam_settings;
    const char **physcam_id;
    const camera_metadata_t **physcam_settings;
    int32_t input_width;
    int32_t input_height;
} camera_capture_request_t;

typedef struct camera_capture_result {
    uint32_t frame_number;
    const camera_metadata_t *result;
    uint32_t num_output_buffers;
    const camera_stream_buffer_t *output_buffers;
    const camera_stream_buffer_t *input_buffer;
    uint32_t partial_result;
    uint32_t num_physcam_metadata;
    const char **physcam_ids;
    const camera_metadata_t **physcam_metadata;
} camera_capture_result_t;

typedef struct camera_shutter_msg {
    uint32_t frame_number;
    uint64_t timestamp;
} camera_shutter_msg_t;

typedef struct camera_error_msg {
    uint32_t frame_number;
    camera_stream_t *error_stream;
    int error_code;
} camera_error_msg_t;

typedef enum camera_error_msg_code {
    CAMERA_MSG_ERROR_DEVICE = 1,
    CAMERA_MSG_ERROR_REQUEST = 2,
    CAMERA_MSG_ERROR_RESULT = 3,
    CAMERA_MSG_ERROR_BUFFER = 4,
    CAMERA_MSG_NUM_ERRORS
} camera_error_msg_code_t;

typedef struct camera_notify_msg {
    int type;

    union {
        camera_error_msg_t error;
        camera_shutter_msg_t shutter;
    } message;
} camera_notify_msg_t;

typedef enum {
    // Cache the buffers with STATUS_ERROR within InFlightRequest
    ERROR_BUF_CACHE,
Loading