// Copyright 2020 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include #include #include #include #include #include #include #include "ClientConfig.pb.h" #include "ClientInterface.h" #include "MemHandle.h" #include "Options.pb.h" #include "PrebuiltGraph.h" #include "RunnerEngine.h" #include "types/Status.h" using android::automotive::computepipe::Status; using android::automotive::computepipe::graph::PrebuiltGraph; using android::automotive::computepipe::proto::ClientConfig; using android::automotive::computepipe::proto::Options; using android::automotive::computepipe::runner::client_interface::ClientInterface; using android::automotive::computepipe::runner::client_interface::ClientInterfaceFactory; using android::automotive::computepipe::runner::engine::RunnerEngine; using android::automotive::computepipe::runner::engine::RunnerEngineFactory; namespace { RunnerEngineFactory sEngineFactory; ClientInterfaceFactory sClientFactory; } // namespace void terminate(bool isError, std::string msg) { if (isError) { LOG(ERROR) << "Error msg " << msg; exit(2); } LOG(ERROR) << "Test complete"; exit(0); } int main(int /* argc */, char** /* argv */) { std::shared_ptr engine = sEngineFactory.createRunnerEngine(RunnerEngineFactory::kDefault, ""); std::unique_ptr graph; graph.reset(android::automotive::computepipe::graph::GetLocalGraphFromLibrary("libfacegraph.so", engine)); Options options = graph->GetSupportedGraphConfigs(); engine->setPrebuiltGraph(std::move(graph)); std::function cb = terminate; std::unique_ptr client = sClientFactory.createClientInterface("aidl", options, engine); if (!client) { std::cerr << "Unable to allocate client"; return -1; } engine->setClientInterface(std::move(client)); ABinderProcess_startThreadPool(); engine->activate(); ABinderProcess_joinThreadPool(); return 0; }