blob: bbea0b11ba828000af30920933921a4c845ed2ca [file] [log] [blame]
// 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 <android-base/logging.h>
#include <android/binder_process.h>
#include <utils/Errors.h>
#include <utils/Log.h>
#include <iostream>
#include <memory>
#include <thread>
#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<RunnerEngine> engine =
sEngineFactory.createRunnerEngine(RunnerEngineFactory::kDefault, "");
std::unique_ptr<PrebuiltGraph> graph;
graph.reset(android::automotive::computepipe::graph::GetLocalGraphFromLibrary("libfacegraph.so",
engine));
Options options = graph->GetSupportedGraphConfigs();
engine->setPrebuiltGraph(std::move(graph));
std::function<void(bool, std::string)> cb = terminate;
std::unique_ptr<ClientInterface> 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;
}