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

Commit c02adbbf authored by Jayant Chowdhary's avatar Jayant Chowdhary Committed by Automerger Merge Worker
Browse files

Check for stream use case capability before stream use case test am: 5554de2f

parents 573ed0d7 5554de2f
Loading
Loading
Loading
Loading
+20 −12
Original line number Diff line number Diff line
@@ -313,14 +313,7 @@ void CameraAidlTest::verifyStreamUseCaseCharacteristics(const camera_metadata_t*
    // Check capabilities
    int retcode =
            find_camera_metadata_ro_entry(metadata, ANDROID_REQUEST_AVAILABLE_CAPABILITIES, &entry);
    bool hasStreamUseCaseCap = false;
    if ((0 == retcode) && (entry.count > 0)) {
        if (std::find(entry.data.u8, entry.data.u8 + entry.count,
                      ANDROID_REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE) !=
            entry.data.u8 + entry.count) {
            hasStreamUseCaseCap = true;
        }
    }
    bool hasStreamUseCaseCap = supportsStreamUseCaseCap(metadata);

    bool supportMandatoryUseCases = false;
    retcode = find_camera_metadata_ro_entry(metadata, ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES,
@@ -2195,8 +2188,8 @@ void CameraAidlTest::configureStreamUseCaseInternal(const AvailableStream &thres
                               &cameraDevice /*out*/);

        camera_metadata_t* staticMeta = reinterpret_cast<camera_metadata_t*>(meta.metadata.data());
        // Check if camera support depth only
        if (isDepthOnly(staticMeta) ||
        // Check if camera support depth only or doesn't support stream use case capability
        if (isDepthOnly(staticMeta) || !supportsStreamUseCaseCap(staticMeta) ||
            (threshold.format == static_cast<int32_t>(PixelFormat::RAW16) &&
             !supportsCroppedRawUseCase(staticMeta))) {
            ndk::ScopedAStatus ret = mSession->close();
@@ -3212,6 +3205,21 @@ bool CameraAidlTest::supportsCroppedRawUseCase(const camera_metadata_t *staticMe
    return false;
}

bool CameraAidlTest::supportsStreamUseCaseCap(const camera_metadata_t* staticMeta) {
    camera_metadata_ro_entry entry;
    int retcode = find_camera_metadata_ro_entry(staticMeta, ANDROID_REQUEST_AVAILABLE_CAPABILITIES,
                                                &entry);
    bool hasStreamUseCaseCap = false;
    if ((0 == retcode) && (entry.count > 0)) {
        if (std::find(entry.data.u8, entry.data.u8 + entry.count,
                      ANDROID_REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE) !=
            entry.data.u8 + entry.count) {
            hasStreamUseCaseCap = true;
        }
    }
    return hasStreamUseCaseCap;
}

bool CameraAidlTest::isPerFrameControl(const camera_metadata_t* staticMeta) {
    camera_metadata_ro_entry syncLatencyEntry;
    int rc = find_camera_metadata_ro_entry(staticMeta, ANDROID_SYNC_MAX_LATENCY,
+2 −1
Original line number Diff line number Diff line
@@ -415,7 +415,8 @@ class CameraAidlTest : public ::testing::TestWithParam<std::string> {
            int32_t frameCount, const bool *overrideSequence, const bool *expectedResults);

    bool supportZoomSettingsOverride(const camera_metadata_t* staticMeta);
    bool supportsCroppedRawUseCase(const camera_metadata_t *staticMeta);
    static bool supportsStreamUseCaseCap(const camera_metadata_t* staticMeta);
    static bool supportsCroppedRawUseCase(const camera_metadata_t* staticMeta);
    bool isPerFrameControl(const camera_metadata_t* staticMeta);

    void getSupportedSizes(const camera_metadata_t* ch, uint32_t tag, int32_t format,