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

Commit b069a5d9 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "resolve merge conflicts of fe57c318 to master"

parents 6c28fc40 338a5559
Loading
Loading
Loading
Loading
+64 −12
Original line number Original line Diff line number Diff line
@@ -715,7 +715,8 @@ public:
            StreamConfigurationMode configMode,
            StreamConfigurationMode configMode,
            ::android::hardware::camera::device::V3_2::StreamConfiguration *config3_2,
            ::android::hardware::camera::device::V3_2::StreamConfiguration *config3_2,
            ::android::hardware::camera::device::V3_4::StreamConfiguration *config3_4,
            ::android::hardware::camera::device::V3_4::StreamConfiguration *config3_4,
            ::android::hardware::camera::device::V3_5::StreamConfiguration *config3_5);
            ::android::hardware::camera::device::V3_5::StreamConfiguration *config3_5,
            uint32_t jpegBufferSize = 0);


    void configurePreviewStreams3_4(const std::string &name, int32_t deviceVersion,
    void configurePreviewStreams3_4(const std::string &name, int32_t deviceVersion,
            sp<ICameraProvider> provider,
            sp<ICameraProvider> provider,
@@ -766,6 +767,8 @@ public:
    static Status getAvailableOutputStreams(camera_metadata_t *staticMeta,
    static Status getAvailableOutputStreams(camera_metadata_t *staticMeta,
            std::vector<AvailableStream> &outputStreams,
            std::vector<AvailableStream> &outputStreams,
            const AvailableStream *threshold = nullptr);
            const AvailableStream *threshold = nullptr);
    static Status getJpegBufferSize(camera_metadata_t *staticMeta,
            uint32_t* outBufSize);
    static Status isConstrainedModeAvailable(camera_metadata_t *staticMeta);
    static Status isConstrainedModeAvailable(camera_metadata_t *staticMeta);
    static Status isLogicalMultiCamera(const camera_metadata_t *staticMeta);
    static Status isLogicalMultiCamera(const camera_metadata_t *staticMeta);
    static Status getPhysicalCameraIds(const camera_metadata_t *staticMeta,
    static Status getPhysicalCameraIds(const camera_metadata_t *staticMeta,
@@ -2786,6 +2789,10 @@ TEST_F(CameraHidlTest, configureStreamsAvailableOutputs) {
        ASSERT_EQ(Status::OK, getAvailableOutputStreams(staticMeta, outputStreams));
        ASSERT_EQ(Status::OK, getAvailableOutputStreams(staticMeta, outputStreams));
        ASSERT_NE(0u, outputStreams.size());
        ASSERT_NE(0u, outputStreams.size());


        uint32_t jpegBufferSize = 0;
        ASSERT_EQ(Status::OK, getJpegBufferSize(staticMeta, &jpegBufferSize));
        ASSERT_NE(0u, jpegBufferSize);

        int32_t streamId = 0;
        int32_t streamId = 0;
        uint32_t streamConfigCounter = 0;
        uint32_t streamConfigCounter = 0;
        for (auto& it : outputStreams) {
        for (auto& it : outputStreams) {
@@ -2804,7 +2811,7 @@ TEST_F(CameraHidlTest, configureStreamsAvailableOutputs) {
            ::android::hardware::camera::device::V3_4::StreamConfiguration config3_4;
            ::android::hardware::camera::device::V3_4::StreamConfiguration config3_4;
            ::android::hardware::camera::device::V3_2::StreamConfiguration config3_2;
            ::android::hardware::camera::device::V3_2::StreamConfiguration config3_2;
            createStreamConfiguration(streams3_2, StreamConfigurationMode::NORMAL_MODE,
            createStreamConfiguration(streams3_2, StreamConfigurationMode::NORMAL_MODE,
                                      &config3_2, &config3_4, &config3_5);
                                      &config3_2, &config3_4, &config3_5, jpegBufferSize);
            if (session3_5 != nullptr) {
            if (session3_5 != nullptr) {
                verifyStreamCombination(cameraDevice3_5, config3_4,
                verifyStreamCombination(cameraDevice3_5, config3_4,
                        /*expectedStatus*/ true);
                        /*expectedStatus*/ true);
@@ -2879,6 +2886,10 @@ TEST_F(CameraHidlTest, configureStreamsInvalidOutputs) {
        ASSERT_EQ(Status::OK, getAvailableOutputStreams(staticMeta, outputStreams));
        ASSERT_EQ(Status::OK, getAvailableOutputStreams(staticMeta, outputStreams));
        ASSERT_NE(0u, outputStreams.size());
        ASSERT_NE(0u, outputStreams.size());


        uint32_t jpegBufferSize = 0;
        ASSERT_EQ(Status::OK, getJpegBufferSize(staticMeta, &jpegBufferSize));
        ASSERT_NE(0u, jpegBufferSize);

        int32_t streamId = 0;
        int32_t streamId = 0;
        V3_2::Stream stream3_2 = {streamId++,
        V3_2::Stream stream3_2 = {streamId++,
                         StreamType::OUTPUT,
                         StreamType::OUTPUT,
@@ -2894,7 +2905,7 @@ TEST_F(CameraHidlTest, configureStreamsInvalidOutputs) {
        ::android::hardware::camera::device::V3_4::StreamConfiguration config3_4;
        ::android::hardware::camera::device::V3_4::StreamConfiguration config3_4;
        ::android::hardware::camera::device::V3_2::StreamConfiguration config3_2;
        ::android::hardware::camera::device::V3_2::StreamConfiguration config3_2;
        createStreamConfiguration(streams, StreamConfigurationMode::NORMAL_MODE,
        createStreamConfiguration(streams, StreamConfigurationMode::NORMAL_MODE,
                                  &config3_2, &config3_4, &config3_5);
                                  &config3_2, &config3_4, &config3_5, jpegBufferSize);
        if (session3_5 != nullptr) {
        if (session3_5 != nullptr) {
            verifyStreamCombination(cameraDevice3_5, config3_4, /*expectedStatus*/ false);
            verifyStreamCombination(cameraDevice3_5, config3_4, /*expectedStatus*/ false);
            config3_5.streamConfigCounter = streamConfigCounter++;
            config3_5.streamConfigCounter = streamConfigCounter++;
@@ -2934,7 +2945,7 @@ TEST_F(CameraHidlTest, configureStreamsInvalidOutputs) {
                  StreamRotation::ROTATION_0};
                  StreamRotation::ROTATION_0};
        streams[0] = stream3_2;
        streams[0] = stream3_2;
        createStreamConfiguration(streams, StreamConfigurationMode::NORMAL_MODE,
        createStreamConfiguration(streams, StreamConfigurationMode::NORMAL_MODE,
                &config3_2, &config3_4, &config3_5);
                &config3_2, &config3_4, &config3_5, jpegBufferSize);
        if (session3_5 != nullptr) {
        if (session3_5 != nullptr) {
            config3_5.streamConfigCounter = streamConfigCounter++;
            config3_5.streamConfigCounter = streamConfigCounter++;
            ret = session3_5->configureStreams_3_5(config3_5, [](Status s,
            ret = session3_5->configureStreams_3_5(config3_5, [](Status s,
@@ -2970,7 +2981,7 @@ TEST_F(CameraHidlTest, configureStreamsInvalidOutputs) {
                      StreamRotation::ROTATION_0};
                      StreamRotation::ROTATION_0};
            streams[0] = stream3_2;
            streams[0] = stream3_2;
            createStreamConfiguration(streams, StreamConfigurationMode::NORMAL_MODE,
            createStreamConfiguration(streams, StreamConfigurationMode::NORMAL_MODE,
                    &config3_2, &config3_4, &config3_5);
                    &config3_2, &config3_4, &config3_5, jpegBufferSize);
            if (session3_5 != nullptr) {
            if (session3_5 != nullptr) {
                config3_5.streamConfigCounter = streamConfigCounter++;
                config3_5.streamConfigCounter = streamConfigCounter++;
                ret = session3_5->configureStreams_3_5(config3_5,
                ret = session3_5->configureStreams_3_5(config3_5,
@@ -3005,7 +3016,7 @@ TEST_F(CameraHidlTest, configureStreamsInvalidOutputs) {
                      static_cast<StreamRotation>(UINT32_MAX)};
                      static_cast<StreamRotation>(UINT32_MAX)};
            streams[0] = stream3_2;
            streams[0] = stream3_2;
            createStreamConfiguration(streams, StreamConfigurationMode::NORMAL_MODE,
            createStreamConfiguration(streams, StreamConfigurationMode::NORMAL_MODE,
                    &config3_2, &config3_4, &config3_5);
                    &config3_2, &config3_4, &config3_5, jpegBufferSize);
            if (session3_5 != nullptr) {
            if (session3_5 != nullptr) {
                config3_5.streamConfigCounter = streamConfigCounter++;
                config3_5.streamConfigCounter = streamConfigCounter++;
                ret = session3_5->configureStreams_3_5(config3_5,
                ret = session3_5->configureStreams_3_5(config3_5,
@@ -3093,6 +3104,10 @@ TEST_F(CameraHidlTest, configureStreamsZSLInputOutputs) {
            }
            }
        }
        }


        uint32_t jpegBufferSize = 0;
        ASSERT_EQ(Status::OK, getJpegBufferSize(staticMeta, &jpegBufferSize));
        ASSERT_NE(0u, jpegBufferSize);

        int32_t streamId = 0;
        int32_t streamId = 0;
        bool hasPrivToY8 = false, hasY8ToY8 = false, hasY8ToBlob = false;
        bool hasPrivToY8 = false, hasY8ToY8 = false, hasY8ToBlob = false;
        uint32_t streamConfigCounter = 0;
        uint32_t streamConfigCounter = 0;
@@ -3150,7 +3165,7 @@ TEST_F(CameraHidlTest, configureStreamsZSLInputOutputs) {
                ::android::hardware::camera::device::V3_4::StreamConfiguration config3_4;
                ::android::hardware::camera::device::V3_4::StreamConfiguration config3_4;
                ::android::hardware::camera::device::V3_2::StreamConfiguration config3_2;
                ::android::hardware::camera::device::V3_2::StreamConfiguration config3_2;
                createStreamConfiguration(streams, StreamConfigurationMode::NORMAL_MODE,
                createStreamConfiguration(streams, StreamConfigurationMode::NORMAL_MODE,
                                          &config3_2, &config3_4, &config3_5);
                                          &config3_2, &config3_4, &config3_5, jpegBufferSize);
                if (session3_5 != nullptr) {
                if (session3_5 != nullptr) {
                    verifyStreamCombination(cameraDevice3_5, config3_4,
                    verifyStreamCombination(cameraDevice3_5, config3_4,
                            /*expectedStatus*/ true);
                            /*expectedStatus*/ true);
@@ -3199,7 +3214,7 @@ TEST_F(CameraHidlTest, configureStreamsZSLInputOutputs) {
    }
    }
}
}


// Check wehether session parameters are supported. If Hal support for them
// Check whether session parameters are supported. If Hal support for them
// exist, then try to configure a preview stream using them.
// exist, then try to configure a preview stream using them.
TEST_F(CameraHidlTest, configureStreamsWithSessionParameters) {
TEST_F(CameraHidlTest, configureStreamsWithSessionParameters) {
    hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames(mProvider);
    hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames(mProvider);
@@ -3266,6 +3281,7 @@ TEST_F(CameraHidlTest, configureStreamsWithSessionParameters) {
                                GRALLOC1_CONSUMER_USAGE_HWCOMPOSER,
                                GRALLOC1_CONSUMER_USAGE_HWCOMPOSER,
                                0,
                                0,
                                StreamRotation::ROTATION_0};
                                StreamRotation::ROTATION_0};
        previewStream.bufferSize = 0;
        ::android::hardware::hidl_vec<V3_4::Stream> streams = {previewStream};
        ::android::hardware::hidl_vec<V3_4::Stream> streams = {previewStream};
        ::android::hardware::camera::device::V3_4::StreamConfiguration config;
        ::android::hardware::camera::device::V3_4::StreamConfiguration config;
        ::android::hardware::camera::device::V3_5::StreamConfiguration config3_5;
        ::android::hardware::camera::device::V3_5::StreamConfiguration config3_5;
@@ -3344,6 +3360,10 @@ TEST_F(CameraHidlTest, configureStreamsPreviewStillOutputs) {
                &previewThreshold));
                &previewThreshold));
        ASSERT_NE(0u, outputPreviewStreams.size());
        ASSERT_NE(0u, outputPreviewStreams.size());


        uint32_t jpegBufferSize = 0;
        ASSERT_EQ(Status::OK, getJpegBufferSize(staticMeta, &jpegBufferSize));
        ASSERT_NE(0u, jpegBufferSize);

        int32_t streamId = 0;
        int32_t streamId = 0;
        uint32_t streamConfigCounter = 0;
        uint32_t streamConfigCounter = 0;
        for (auto& blobIter : outputBlobStreams) {
        for (auto& blobIter : outputBlobStreams) {
@@ -3370,7 +3390,7 @@ TEST_F(CameraHidlTest, configureStreamsPreviewStillOutputs) {
                ::android::hardware::camera::device::V3_4::StreamConfiguration config3_4;
                ::android::hardware::camera::device::V3_4::StreamConfiguration config3_4;
                ::android::hardware::camera::device::V3_2::StreamConfiguration config3_2;
                ::android::hardware::camera::device::V3_2::StreamConfiguration config3_2;
                createStreamConfiguration(streams, StreamConfigurationMode::NORMAL_MODE,
                createStreamConfiguration(streams, StreamConfigurationMode::NORMAL_MODE,
                                          &config3_2, &config3_4, &config3_5);
                                          &config3_2, &config3_4, &config3_5, jpegBufferSize);
                if (session3_5 != nullptr) {
                if (session3_5 != nullptr) {
                    verifyStreamCombination(cameraDevice3_5, config3_4,
                    verifyStreamCombination(cameraDevice3_5, config3_4,
                            /*expectedStatus*/ true);
                            /*expectedStatus*/ true);
@@ -3661,6 +3681,10 @@ TEST_F(CameraHidlTest, configureStreamsVideoStillOutputs) {
                          &videoThreshold));
                          &videoThreshold));
        ASSERT_NE(0u, outputVideoStreams.size());
        ASSERT_NE(0u, outputVideoStreams.size());


        uint32_t jpegBufferSize = 0;
        ASSERT_EQ(Status::OK, getJpegBufferSize(staticMeta, &jpegBufferSize));
        ASSERT_NE(0u, jpegBufferSize);

        int32_t streamId = 0;
        int32_t streamId = 0;
        uint32_t streamConfigCounter = 0;
        uint32_t streamConfigCounter = 0;
        for (auto& blobIter : outputBlobStreams) {
        for (auto& blobIter : outputBlobStreams) {
@@ -3686,7 +3710,7 @@ TEST_F(CameraHidlTest, configureStreamsVideoStillOutputs) {
                ::android::hardware::camera::device::V3_4::StreamConfiguration config3_4;
                ::android::hardware::camera::device::V3_4::StreamConfiguration config3_4;
                ::android::hardware::camera::device::V3_2::StreamConfiguration config3_2;
                ::android::hardware::camera::device::V3_2::StreamConfiguration config3_2;
                createStreamConfiguration(streams, StreamConfigurationMode::NORMAL_MODE,
                createStreamConfiguration(streams, StreamConfigurationMode::NORMAL_MODE,
                                          &config3_2, &config3_4, &config3_5);
                                          &config3_2, &config3_4, &config3_5, jpegBufferSize);
                if (session3_5 != nullptr) {
                if (session3_5 != nullptr) {
                    verifyStreamCombination(cameraDevice3_5, config3_4,
                    verifyStreamCombination(cameraDevice3_5, config3_4,
                            /*expectedStatus*/ true);
                            /*expectedStatus*/ true);
@@ -4660,6 +4684,23 @@ Status CameraHidlTest::getAvailableOutputStreams(camera_metadata_t *staticMeta,
    return Status::OK;
    return Status::OK;
}
}


// Get max jpeg buffer size in android.jpeg.maxSize
Status CameraHidlTest::getJpegBufferSize(camera_metadata_t *staticMeta, uint32_t* outBufSize) {
    if (nullptr == staticMeta || nullptr == outBufSize) {
        return Status::ILLEGAL_ARGUMENT;
    }

    camera_metadata_ro_entry entry;
    int rc = find_camera_metadata_ro_entry(staticMeta,
            ANDROID_JPEG_MAX_SIZE, &entry);
    if ((0 != rc) || (1 != entry.count)) {
        return Status::ILLEGAL_ARGUMENT;
    }

    *outBufSize = static_cast<uint32_t>(entry.data.i32[0]);
    return Status::OK;
}

// Check if the camera device has logical multi-camera capability.
// Check if the camera device has logical multi-camera capability.
Status CameraHidlTest::isLogicalMultiCamera(const camera_metadata_t *staticMeta) {
Status CameraHidlTest::isLogicalMultiCamera(const camera_metadata_t *staticMeta) {
    Status ret = Status::METHOD_NOT_SUPPORTED;
    Status ret = Status::METHOD_NOT_SUPPORTED;
@@ -4946,7 +4987,8 @@ void CameraHidlTest::createStreamConfiguration(
        StreamConfigurationMode configMode,
        StreamConfigurationMode configMode,
        ::android::hardware::camera::device::V3_2::StreamConfiguration *config3_2 /*out*/,
        ::android::hardware::camera::device::V3_2::StreamConfiguration *config3_2 /*out*/,
        ::android::hardware::camera::device::V3_4::StreamConfiguration *config3_4 /*out*/,
        ::android::hardware::camera::device::V3_4::StreamConfiguration *config3_4 /*out*/,
        ::android::hardware::camera::device::V3_5::StreamConfiguration *config3_5 /*out*/) {
        ::android::hardware::camera::device::V3_5::StreamConfiguration *config3_5 /*out*/,
        uint32_t jpegBufferSize) {
    ASSERT_NE(nullptr, config3_2);
    ASSERT_NE(nullptr, config3_2);
    ASSERT_NE(nullptr, config3_4);
    ASSERT_NE(nullptr, config3_4);
    ASSERT_NE(nullptr, config3_5);
    ASSERT_NE(nullptr, config3_5);
@@ -4956,6 +4998,11 @@ void CameraHidlTest::createStreamConfiguration(
    for (auto& stream3_2 : streams3_2) {
    for (auto& stream3_2 : streams3_2) {
        V3_4::Stream stream;
        V3_4::Stream stream;
        stream.v3_2 = stream3_2;
        stream.v3_2 = stream3_2;
        stream.bufferSize = 0;
        if (stream3_2.format == PixelFormat::BLOB &&
                stream3_2.dataSpace == static_cast<V3_2::DataspaceFlags>(Dataspace::V0_JFIF)) {
            stream.bufferSize = jpegBufferSize;
        }
        streams3_4[idx++] = stream;
        streams3_4[idx++] = stream;
    }
    }
    // Caller is responsible to fill in non-zero config3_5->streamConfigCounter after this returns
    // Caller is responsible to fill in non-zero config3_5->streamConfigCounter after this returns
@@ -5191,6 +5238,11 @@ void CameraHidlTest::configurePreviewStream(const std::string &name, int32_t dev
    outputPreviewStreams.clear();
    outputPreviewStreams.clear();
    auto rc = getAvailableOutputStreams(staticMeta,
    auto rc = getAvailableOutputStreams(staticMeta,
            outputPreviewStreams, previewThreshold);
            outputPreviewStreams, previewThreshold);

    uint32_t jpegBufferSize = 0;
    ASSERT_EQ(Status::OK, getJpegBufferSize(staticMeta, &jpegBufferSize));
    ASSERT_NE(0u, jpegBufferSize);

    free_camera_metadata(staticMeta);
    free_camera_metadata(staticMeta);
    ASSERT_EQ(Status::OK, rc);
    ASSERT_EQ(Status::OK, rc);
    ASSERT_FALSE(outputPreviewStreams.empty());
    ASSERT_FALSE(outputPreviewStreams.empty());
@@ -5205,7 +5257,7 @@ void CameraHidlTest::configurePreviewStream(const std::string &name, int32_t dev
    ::android::hardware::camera::device::V3_4::StreamConfiguration config3_4;
    ::android::hardware::camera::device::V3_4::StreamConfiguration config3_4;
    ::android::hardware::camera::device::V3_5::StreamConfiguration config3_5;
    ::android::hardware::camera::device::V3_5::StreamConfiguration config3_5;
    createStreamConfiguration(streams3_2, StreamConfigurationMode::NORMAL_MODE,
    createStreamConfiguration(streams3_2, StreamConfigurationMode::NORMAL_MODE,
                              &config3_2, &config3_4, &config3_5);
                              &config3_2, &config3_4, &config3_5, jpegBufferSize);
    if (session3_5 != nullptr) {
    if (session3_5 != nullptr) {
        RequestTemplate reqTemplate = RequestTemplate::PREVIEW;
        RequestTemplate reqTemplate = RequestTemplate::PREVIEW;
        ret = session3_5->constructDefaultRequestSettings(reqTemplate,
        ret = session3_5->constructDefaultRequestSettings(reqTemplate,