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

Commit b1768ab0 authored by Sungtak Lee's avatar Sungtak Lee Committed by Automerger Merge Worker
Browse files

Merge "media.c2 aidl: apply IConfigrable interface change" into main am:...

Merge "media.c2 aidl: apply IConfigrable interface change" into main am: d85f7841 am: d4a9ddfb am: 2da54f3e

Original change: https://android-review.googlesource.com/c/platform/frameworks/av/+/2895021



Change-Id: Id7a7b19128f9617ac540f272e50ebae521af24a2
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents bc5ff305 2da54f3e
Loading
Loading
Loading
Loading
+12 −18
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ ScopedAStatus CachedConfigurable::getName(std::string* name) {
ScopedAStatus CachedConfigurable::query(
        const std::vector<int32_t>& indices,
        bool mayBlock,
        Params* params) {
        QueryResult *queryResult) {
    typedef C2Param::Index Index;
    std::vector<Index> c2heapParamIndices(
            (Index*)indices.data(),
@@ -72,14 +72,12 @@ ScopedAStatus CachedConfigurable::query(
            mayBlock ? C2_MAY_BLOCK : C2_DONT_BLOCK,
            &c2heapParams);

    if (!CreateParamsBlob(params, c2heapParams)) {
    if (!CreateParamsBlob(&(queryResult->params), c2heapParams)) {
        LOG(WARNING) << "query -- invalid output params.";
    }
    if (c2res == C2_OK) {
    queryResult->status.status = c2res;
    return ScopedAStatus::ok();
}
    return ScopedAStatus::fromServiceSpecificError(c2res);
}

ScopedAStatus CachedConfigurable::config(
        const Params& params,
@@ -115,11 +113,9 @@ ScopedAStatus CachedConfigurable::config(
    if (!CreateParamsBlob(&result->params, c2params)) {
        LOG(DEBUG) << "config -- invalid output params.";
    }
    if (c2res == C2_OK) {
    result->status.status = c2res;
    return ScopedAStatus::ok();
}
    return ScopedAStatus::fromServiceSpecificError(c2res);
}

ScopedAStatus CachedConfigurable::querySupportedParams(
        int32_t start,
@@ -153,7 +149,7 @@ ScopedAStatus CachedConfigurable::querySupportedParams(
ScopedAStatus CachedConfigurable::querySupportedValues(
        const std::vector<FieldSupportedValuesQuery>& fields,
        bool mayBlock,
        std::vector<FieldSupportedValuesQueryResult>* result) {
        QuerySupportedValuesResult *queryValues) {
    std::vector<C2FieldSupportedValuesQuery> c2fields;
    {
        // C2FieldSupportedValuesQuery objects are restricted in that some
@@ -173,23 +169,21 @@ ScopedAStatus CachedConfigurable::querySupportedValues(
    c2_status_t c2res = mIntf->querySupportedValues(
            c2fields,
            mayBlock ? C2_MAY_BLOCK : C2_DONT_BLOCK);
    result->resize(fields.size());
    queryValues->values.resize(fields.size());
    size_t dstIx = 0;
    for (const C2FieldSupportedValuesQuery &res : c2fields) {
        if (ToAidl(&(*result)[dstIx], res)) {
        if (ToAidl(&(queryValues->values[dstIx]), res)) {
            ++dstIx;
        } else {
            result->resize(dstIx);
            queryValues->values.resize(dstIx);
            c2res = C2_CORRUPTED;
            LOG(WARNING) << "querySupportedValues -- invalid output params.";
            break;
        }
    }
    if (c2res == C2_OK) {
    queryValues->status.status = c2res;
    return ScopedAStatus::ok();
}
    return ScopedAStatus::fromServiceSpecificError(c2res);
}

}  // namespace utils
}  // namespace c2
+2 −2
Original line number Diff line number Diff line
@@ -111,7 +111,7 @@ struct CachedConfigurable : public BnConfigurable {
    virtual ::ndk::ScopedAStatus query(
            const std::vector<int32_t>& indices,
            bool mayBlock,
            Params* params) override;
            QueryResult* result) override;

    virtual ::ndk::ScopedAStatus config(
            const ::aidl::android::hardware::media::c2::Params& params,
@@ -126,7 +126,7 @@ struct CachedConfigurable : public BnConfigurable {
    virtual ::ndk::ScopedAStatus querySupportedValues(
            const std::vector<FieldSupportedValuesQuery>& fields,
            bool mayBlock,
            std::vector<FieldSupportedValuesQueryResult>* result) override;
            QuerySupportedValuesResult* result) override;

protected:
    // Common Codec2.0 interface wrapper
+9 −5
Original line number Diff line number Diff line
@@ -635,15 +635,16 @@ c2_status_t Codec2ConfigurableClient::AidlImpl::query(
    if (heapParams) {
        heapParams->reserve(heapParams->size() + numIndices);
    }
    c2_aidl::Params result;
    c2_aidl::IConfigurable::QueryResult result;
    ndk::ScopedAStatus transStatus = mBase->query(indices, (mayBlock == C2_MAY_BLOCK), &result);
    c2_status_t status = GetC2Status(transStatus, "query");
    if (status != C2_OK) {
        return status;
    }
    status = static_cast<c2_status_t>(result.status.status);

    std::vector<C2Param*> paramPointers;
    if (!c2_aidl::utils::ParseParamsBlob(&paramPointers, result)) {
    if (!c2_aidl::utils::ParseParamsBlob(&paramPointers, result.params)) {
        LOG(ERROR) << "query -- error while parsing params.";
        return C2_CORRUPTED;
    }
@@ -714,6 +715,7 @@ c2_status_t Codec2ConfigurableClient::AidlImpl::config(
    if (status != C2_OK) {
        return status;
    }
    status = static_cast<c2_status_t>(result.status.status);
    size_t i = failures->size();
    failures->resize(i + result.failures.size());
    for (const c2_aidl::SettingResult& sf : result.failures) {
@@ -764,21 +766,23 @@ c2_status_t Codec2ConfigurableClient::AidlImpl::querySupportedValues(
        }
    }

    std::vector<c2_aidl::FieldSupportedValuesQueryResult> result;
    c2_aidl::IConfigurable::QuerySupportedValuesResult result;

    ndk::ScopedAStatus transStatus = mBase->querySupportedValues(
            inFields, (mayBlock == C2_MAY_BLOCK), &result);
    c2_status_t status = GetC2Status(transStatus, "querySupportedValues");
    if (status != C2_OK) {
        return status;
    }
    if (result.size() != fields.size()) {
    status = static_cast<c2_status_t>(result.status.status);
    if (result.values.size() != fields.size()) {
        LOG(ERROR) << "querySupportedValues -- "
                      "input and output lists "
                      "have different sizes.";
        return C2_CORRUPTED;
    }
    for (size_t i = 0; i < fields.size(); ++i) {
        if (!c2_aidl::utils::FromAidl(&fields[i], inFields[i], result[i])) {
        if (!c2_aidl::utils::FromAidl(&fields[i], inFields[i], result.values[i])) {
            LOG(ERROR) << "querySupportedValues -- "
                          "invalid returned value.";
            return C2_CORRUPTED;
+21 −7
Original line number Diff line number Diff line
@@ -148,6 +148,11 @@ public:
                return C2_TRANSACTION_FAILED;
            }
        }
        status = static_cast<c2_status_t>(configResult.status.status);
        if (status != C2_BAD_INDEX) {
            LOG(DEBUG) << "config -- call failed: "
                       << status << ".";
        }
        size_t i = failures->size();
        failures->resize(i + configResult.failures.size());
        for (const c2_aidl::SettingResult& sf : configResult.failures) {
@@ -320,8 +325,8 @@ public:
            heapParams->reserve(heapParams->size() + numIndices);
        }
        c2_status_t status = C2_OK;
        c2_aidl::Params aidlParams;
        ScopedAStatus transResult = mAidlConfigurable->query(indices, true, &aidlParams);
        c2_aidl::IConfigurable::QueryResult aidlResult;
        ScopedAStatus transResult = mAidlConfigurable->query(indices, true, &aidlResult);
        if (!transResult.isOk()) {
            if (transResult.getExceptionCode() == EX_SERVICE_SPECIFIC) {
                status = c2_status_t(transResult.getServiceSpecificError());
@@ -332,8 +337,12 @@ public:
                return C2_TRANSACTION_FAILED;
            }
        }
        status = static_cast<c2_status_t>(aidlResult.status.status);
        if (status != C2_OK) {
            LOG(DEBUG) << "query -- call failed: " << status << ".";
        }
        std::vector<C2Param*> paramPointers;
        if (!c2_aidl::utils::ParseParamsBlob(&paramPointers, aidlParams)) {
        if (!c2_aidl::utils::ParseParamsBlob(&paramPointers, aidlResult.params)) {
            LOG(ERROR) << "query -- error while parsing params.";
            return C2_CORRUPTED;
        }
@@ -488,9 +497,9 @@ public:
        }

        c2_status_t status = C2_OK;
        std::vector<c2_aidl::FieldSupportedValuesQueryResult> queryResults;
        c2_aidl::IConfigurable::QuerySupportedValuesResult queryResult;
        ScopedAStatus transResult = mAidlConfigurable->querySupportedValues(
                aidlFields, true, &queryResults);
                aidlFields, true, &queryResult);
        if (!transResult.isOk()) {
            if (transResult.getExceptionCode() == EX_SERVICE_SPECIFIC) {
                status = c2_status_t(transResult.getServiceSpecificError());
@@ -502,14 +511,19 @@ public:
                return C2_TRANSACTION_FAILED;
            }
        }
        if (queryResults.size() != fields.size()) {
        status = static_cast<c2_status_t>(queryResult.status.status);
        if (status != C2_OK) {
            LOG(DEBUG) << "querySupportedValues -- call failed: "
                       << status << ".";
        }
        if (queryResult.values.size() != fields.size()) {
            LOG(ERROR) << "querySupportedValues -- "
                          "input and output lists "
                          "have different sizes.";
            return C2_CORRUPTED;
        }
        for (size_t i = 0; i < fields.size(); ++i) {
            if (!c2_aidl::utils::FromAidl(&fields[i], aidlFields[i], queryResults[i])) {
            if (!c2_aidl::utils::FromAidl(&fields[i], aidlFields[i], queryResult.values[i])) {
                LOG(ERROR) << "querySupportedValues -- "
                              "invalid returned value.";
                return C2_CORRUPTED;