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

Commit 59a99f66 authored by Michael Butler's avatar Michael Butler Committed by Android (Google) Code Review
Browse files

Merge "Add dynamic interface casting to NN utility code"

parents d70b311a 49b5e4eb
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -44,6 +44,12 @@ bool valid(const Type& halObject) {
    return result.has_value();
}

template <typename Type>
auto convertFromNonCanonical(const Type& nonCanonicalObject)
        -> decltype(convert(nn::convert(nonCanonicalObject).value())) {
    return convert(NN_TRY(nn::convert(nonCanonicalObject)));
}

}  // namespace android::hardware::neuralnetworks::V1_0::utils

#endif  // ANDROID_HARDWARE_INTERFACES_NEURALNETWORKS_1_0_UTILS_H
+6 −0
Original line number Diff line number Diff line
@@ -47,6 +47,12 @@ bool valid(const Type& halObject) {
    return result.has_value();
}

template <typename Type>
auto convertFromNonCanonical(const Type& nonCanonicalObject)
        -> decltype(convert(nn::convert(nonCanonicalObject).value())) {
    return convert(NN_TRY(nn::convert(nonCanonicalObject)));
}

}  // namespace android::hardware::neuralnetworks::V1_1::utils

#endif  // ANDROID_HARDWARE_INTERFACES_NEURALNETWORKS_1_1_UTILS_H
+6 −0
Original line number Diff line number Diff line
@@ -54,6 +54,12 @@ bool valid(const Type& halObject) {
    return result.has_value();
}

template <typename Type>
auto convertFromNonCanonical(const Type& nonCanonicalObject)
        -> decltype(convert(nn::convert(nonCanonicalObject).value())) {
    return convert(NN_TRY(nn::convert(nonCanonicalObject)));
}

}  // namespace android::hardware::neuralnetworks::V1_2::utils

#endif  // ANDROID_HARDWARE_INTERFACES_NEURALNETWORKS_1_2_UTILS_H
+10 −1
Original line number Diff line number Diff line
@@ -43,6 +43,15 @@
namespace android::hardware::neuralnetworks::V1_2::utils {
namespace {

nn::GeneralResult<nn::SharedPreparedModel> prepareModelCallback(
        V1_0::ErrorStatus status, const sp<V1_0::IPreparedModel>& preparedModel) {
    if (const auto dynamicPreparedModel =
                V1_2::IPreparedModel::castFrom(preparedModel).withDefault(nullptr)) {
        return V1_2::utils::prepareModelCallback(status, dynamicPreparedModel);
    }
    return V1_0::utils::prepareModelCallback(status, preparedModel);
}

nn::GeneralResult<std::pair<std::vector<nn::OutputShape>, nn::Timing>>
convertExecutionGeneralResultsHelper(const hidl_vec<OutputShape>& outputShapes,
                                     const Timing& timing) {
@@ -72,7 +81,7 @@ nn::ExecutionResult<std::pair<std::vector<nn::OutputShape>, nn::Timing>> executi

Return<void> PreparedModelCallback::notify(V1_0::ErrorStatus status,
                                           const sp<V1_0::IPreparedModel>& preparedModel) {
    mData.put(V1_0::utils::prepareModelCallback(status, preparedModel));
    mData.put(prepareModelCallback(status, preparedModel));
    return Void();
}

+6 −0
Original line number Diff line number Diff line
@@ -49,6 +49,12 @@ bool valid(const Type& halObject) {
    return result.has_value();
}

template <typename Type>
auto convertFromNonCanonical(const Type& nonCanonicalObject)
        -> decltype(convert(nn::convert(nonCanonicalObject).value())) {
    return convert(NN_TRY(nn::convert(nonCanonicalObject)));
}

}  // namespace android::hardware::neuralnetworks::V1_3::utils

#endif  // ANDROID_HARDWARE_INTERFACES_NEURALNETWORKS_1_3_UTILS_H
Loading