Loading media/codec2/hal/aidl/Configurable.cpp +12 −18 Original line number Diff line number Diff line Loading @@ -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(), Loading @@ -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, Loading Loading @@ -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, Loading Loading @@ -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 Loading @@ -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 Loading media/codec2/hal/aidl/include/codec2/aidl/Configurable.h +2 −2 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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 Loading media/codec2/hal/client/client.cpp +9 −5 Original line number Diff line number Diff line Loading @@ -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(¶mPointers, result)) { if (!c2_aidl::utils::ParseParamsBlob(¶mPointers, result.params)) { LOG(ERROR) << "query -- error while parsing params."; return C2_CORRUPTED; } Loading Loading @@ -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) { Loading Loading @@ -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; Loading media/module/codecserviceregistrant/CodecServiceRegistrant.cpp +21 −7 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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()); Loading @@ -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(¶mPointers, aidlParams)) { if (!c2_aidl::utils::ParseParamsBlob(¶mPointers, aidlResult.params)) { LOG(ERROR) << "query -- error while parsing params."; return C2_CORRUPTED; } Loading Loading @@ -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()); Loading @@ -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; Loading Loading
media/codec2/hal/aidl/Configurable.cpp +12 −18 Original line number Diff line number Diff line Loading @@ -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(), Loading @@ -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, Loading Loading @@ -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, Loading Loading @@ -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 Loading @@ -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 Loading
media/codec2/hal/aidl/include/codec2/aidl/Configurable.h +2 −2 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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 Loading
media/codec2/hal/client/client.cpp +9 −5 Original line number Diff line number Diff line Loading @@ -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(¶mPointers, result)) { if (!c2_aidl::utils::ParseParamsBlob(¶mPointers, result.params)) { LOG(ERROR) << "query -- error while parsing params."; return C2_CORRUPTED; } Loading Loading @@ -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) { Loading Loading @@ -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; Loading
media/module/codecserviceregistrant/CodecServiceRegistrant.cpp +21 −7 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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()); Loading @@ -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(¶mPointers, aidlParams)) { if (!c2_aidl::utils::ParseParamsBlob(¶mPointers, aidlResult.params)) { LOG(ERROR) << "query -- error while parsing params."; return C2_CORRUPTED; } Loading Loading @@ -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()); Loading @@ -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; Loading