Add cc_binary target for C Libraries
PiperOrigin-RevId: 568902427
This commit is contained in:
parent
b01ad84c6f
commit
61ce228576
|
@ -15,10 +15,14 @@ limitations under the License.
|
||||||
|
|
||||||
#include "mediapipe/tasks/c/components/containers/category_converter.h"
|
#include "mediapipe/tasks/c/components/containers/category_converter.h"
|
||||||
|
|
||||||
|
#include "mediapipe/tasks/c/components/containers/category.h"
|
||||||
|
#include "mediapipe/tasks/cc/components/containers/category.h"
|
||||||
|
|
||||||
namespace mediapipe::tasks::c::components::containers {
|
namespace mediapipe::tasks::c::components::containers {
|
||||||
|
|
||||||
void CppConvertToCategory(mediapipe::tasks::components::containers::Category in,
|
void CppConvertToCategory(
|
||||||
Category* out) {
|
const mediapipe::tasks::components::containers::Category& in,
|
||||||
|
Category* out) {
|
||||||
out->index = in.index;
|
out->index = in.index;
|
||||||
out->score = in.score;
|
out->score = in.score;
|
||||||
out->category_name =
|
out->category_name =
|
||||||
|
|
|
@ -21,8 +21,9 @@ limitations under the License.
|
||||||
|
|
||||||
namespace mediapipe::tasks::c::components::containers {
|
namespace mediapipe::tasks::c::components::containers {
|
||||||
|
|
||||||
void CppConvertToCategory(mediapipe::tasks::components::containers::Category in,
|
void CppConvertToCategory(
|
||||||
Category* out);
|
const mediapipe::tasks::components::containers::Category& in,
|
||||||
|
Category* out);
|
||||||
|
|
||||||
} // namespace mediapipe::tasks::c::components::containers
|
} // namespace mediapipe::tasks::c::components::containers
|
||||||
|
|
||||||
|
|
|
@ -17,11 +17,12 @@ limitations under the License.
|
||||||
|
|
||||||
#include "mediapipe/tasks/c/components/containers/category.h"
|
#include "mediapipe/tasks/c/components/containers/category.h"
|
||||||
#include "mediapipe/tasks/c/components/containers/category_converter.h"
|
#include "mediapipe/tasks/c/components/containers/category_converter.h"
|
||||||
|
#include "mediapipe/tasks/cc/components/containers/classification_result.h"
|
||||||
|
|
||||||
namespace mediapipe::tasks::c::components::containers {
|
namespace mediapipe::tasks::c::components::containers {
|
||||||
|
|
||||||
void CppConvertToClassificationResult(
|
void CppConvertToClassificationResult(
|
||||||
mediapipe::tasks::components::containers::ClassificationResult in,
|
const mediapipe::tasks::components::containers::ClassificationResult& in,
|
||||||
ClassificationResult* out) {
|
ClassificationResult* out) {
|
||||||
out->has_timestamp_ms = in.timestamp_ms.has_value();
|
out->has_timestamp_ms = in.timestamp_ms.has_value();
|
||||||
if (out->has_timestamp_ms) {
|
if (out->has_timestamp_ms) {
|
||||||
|
|
|
@ -22,7 +22,7 @@ limitations under the License.
|
||||||
namespace mediapipe::tasks::c::components::containers {
|
namespace mediapipe::tasks::c::components::containers {
|
||||||
|
|
||||||
void CppConvertToClassificationResult(
|
void CppConvertToClassificationResult(
|
||||||
mediapipe::tasks::components::containers::ClassificationResult in,
|
const mediapipe::tasks::components::containers::ClassificationResult& in,
|
||||||
ClassificationResult* out);
|
ClassificationResult* out);
|
||||||
|
|
||||||
} // namespace mediapipe::tasks::c::components::containers
|
} // namespace mediapipe::tasks::c::components::containers
|
||||||
|
|
|
@ -19,10 +19,10 @@ limitations under the License.
|
||||||
#include "mediapipe/tasks/c/components/processors/classifier_options.h"
|
#include "mediapipe/tasks/c/components/processors/classifier_options.h"
|
||||||
#include "mediapipe/tasks/cc/components/processors/classifier_options.h"
|
#include "mediapipe/tasks/cc/components/processors/classifier_options.h"
|
||||||
|
|
||||||
namespace mediapipe::c::components::processors {
|
namespace mediapipe::tasks::c::components::processors {
|
||||||
|
|
||||||
void CppConvertToClassifierOptions(
|
void CppConvertToClassifierOptions(
|
||||||
ClassifierOptions in,
|
const ClassifierOptions& in,
|
||||||
mediapipe::tasks::components::processors::ClassifierOptions* out) {
|
mediapipe::tasks::components::processors::ClassifierOptions* out) {
|
||||||
out->display_names_locale = in.display_names_locale;
|
out->display_names_locale = in.display_names_locale;
|
||||||
out->max_results = in.max_results;
|
out->max_results = in.max_results;
|
||||||
|
@ -38,4 +38,4 @@ void CppConvertToClassifierOptions(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace mediapipe::c::components::processors
|
} // namespace mediapipe::tasks::c::components::processors
|
||||||
|
|
|
@ -22,7 +22,7 @@ limitations under the License.
|
||||||
namespace mediapipe::tasks::c::components::processors {
|
namespace mediapipe::tasks::c::components::processors {
|
||||||
|
|
||||||
void CppConvertToClassifierOptions(
|
void CppConvertToClassifierOptions(
|
||||||
ClassifierOptions in,
|
const ClassifierOptions& in,
|
||||||
mediapipe::tasks::components::processors::ClassifierOptions* out);
|
mediapipe::tasks::components::processors::ClassifierOptions* out);
|
||||||
|
|
||||||
} // namespace mediapipe::tasks::c::components::processors
|
} // namespace mediapipe::tasks::c::components::processors
|
||||||
|
|
|
@ -15,11 +15,12 @@ limitations under the License.
|
||||||
|
|
||||||
#include "mediapipe/tasks/c/core/base_options_converter.h"
|
#include "mediapipe/tasks/c/core/base_options_converter.h"
|
||||||
|
|
||||||
|
#include "mediapipe/tasks/c/core/base_options.h"
|
||||||
#include "mediapipe/tasks/cc/core/base_options.h"
|
#include "mediapipe/tasks/cc/core/base_options.h"
|
||||||
|
|
||||||
namespace mediapipe::tasks::c::components::containers {
|
namespace mediapipe::tasks::c::components::containers {
|
||||||
|
|
||||||
void CppConvertToBaseOptions(BaseOptions in,
|
void CppConvertToBaseOptions(const BaseOptions& in,
|
||||||
mediapipe::tasks::core::BaseOptions* out) {
|
mediapipe::tasks::core::BaseOptions* out) {
|
||||||
out->model_asset_buffer =
|
out->model_asset_buffer =
|
||||||
std::make_unique<std::string>(in.model_asset_buffer);
|
std::make_unique<std::string>(in.model_asset_buffer);
|
||||||
|
|
|
@ -21,7 +21,7 @@ limitations under the License.
|
||||||
|
|
||||||
namespace mediapipe::tasks::c::components::containers {
|
namespace mediapipe::tasks::c::components::containers {
|
||||||
|
|
||||||
void CppConvertToBaseOptions(BaseOptions in,
|
void CppConvertToBaseOptions(const BaseOptions& in,
|
||||||
mediapipe::tasks::core::BaseOptions* out);
|
mediapipe::tasks::core::BaseOptions* out);
|
||||||
|
|
||||||
} // namespace mediapipe::tasks::c::components::containers
|
} // namespace mediapipe::tasks::c::components::containers
|
||||||
|
|
|
@ -17,7 +17,7 @@ package(default_visibility = ["//mediapipe/tasks:internal"])
|
||||||
licenses(["notice"])
|
licenses(["notice"])
|
||||||
|
|
||||||
cc_library(
|
cc_library(
|
||||||
name = "text_classifier",
|
name = "text_classifier_lib",
|
||||||
srcs = ["text_classifier.cc"],
|
srcs = ["text_classifier.cc"],
|
||||||
hdrs = ["text_classifier.h"],
|
hdrs = ["text_classifier.h"],
|
||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
|
@ -31,4 +31,39 @@ cc_library(
|
||||||
"//mediapipe/tasks/cc/text/text_classifier",
|
"//mediapipe/tasks/cc/text/text_classifier",
|
||||||
"@com_google_absl//absl/log:absl_log",
|
"@com_google_absl//absl/log:absl_log",
|
||||||
],
|
],
|
||||||
|
alwayslink = 1,
|
||||||
|
)
|
||||||
|
|
||||||
|
# bazel build -c opt --linkopt -s --strip always --define MEDIAPIPE_DISABLE_GPU=1 \
|
||||||
|
# //mediapipe/tasks/c/text/text_classifier:libtext_classifier.so
|
||||||
|
cc_binary(
|
||||||
|
name = "libtext_classifier.so",
|
||||||
|
linkopts = [
|
||||||
|
"-Wl,-soname=libtext_classifier.so",
|
||||||
|
"-fvisibility=hidden",
|
||||||
|
],
|
||||||
|
linkshared = True,
|
||||||
|
tags = [
|
||||||
|
"manual",
|
||||||
|
"nobuilder",
|
||||||
|
"notap",
|
||||||
|
],
|
||||||
|
deps = [":text_classifier_lib"],
|
||||||
|
)
|
||||||
|
|
||||||
|
# bazel build --config darwin_arm64 -c opt --strip always --define MEDIAPIPE_DISABLE_GPU=1 \
|
||||||
|
# //mediapipe/tasks/c/text/text_classifier:libtext_classifier.dylib
|
||||||
|
cc_binary(
|
||||||
|
name = "libtext_classifier.dylib",
|
||||||
|
linkopts = [
|
||||||
|
"-Wl,-install_name,libtext_classifier.dylib",
|
||||||
|
"-fvisibility=hidden",
|
||||||
|
],
|
||||||
|
linkshared = True,
|
||||||
|
tags = [
|
||||||
|
"manual",
|
||||||
|
"nobuilder",
|
||||||
|
"notap",
|
||||||
|
],
|
||||||
|
deps = [":text_classifier_lib"],
|
||||||
)
|
)
|
||||||
|
|
|
@ -16,9 +16,9 @@ limitations under the License.
|
||||||
#include "mediapipe/tasks/c/text/text_classifier/text_classifier.h"
|
#include "mediapipe/tasks/c/text/text_classifier/text_classifier.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
#include "absl/log/absl_log.h"
|
#include "absl/log/absl_log.h"
|
||||||
#include "mediapipe/tasks/c/components/containers/classification_result.h"
|
|
||||||
#include "mediapipe/tasks/c/components/containers/classification_result_converter.h"
|
#include "mediapipe/tasks/c/components/containers/classification_result_converter.h"
|
||||||
#include "mediapipe/tasks/c/components/processors/classifier_options.h"
|
#include "mediapipe/tasks/c/components/processors/classifier_options.h"
|
||||||
#include "mediapipe/tasks/c/components/processors/classifier_options_converter.h"
|
#include "mediapipe/tasks/c/components/processors/classifier_options_converter.h"
|
||||||
|
@ -38,7 +38,7 @@ using ::mediapipe::tasks::c::components::processors::
|
||||||
using ::mediapipe::tasks::text::text_classifier::TextClassifier;
|
using ::mediapipe::tasks::text::text_classifier::TextClassifier;
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
TextClassifier* CppTextClassifierCreate(TextClassifierOptions options) {
|
TextClassifier* CppTextClassifierCreate(const TextClassifierOptions& options) {
|
||||||
auto cpp_options = std::make_unique<
|
auto cpp_options = std::make_unique<
|
||||||
::mediapipe::tasks::text::text_classifier::TextClassifierOptions>();
|
::mediapipe::tasks::text::text_classifier::TextClassifierOptions>();
|
||||||
|
|
||||||
|
@ -80,13 +80,13 @@ void CppTextClassifierClose(void* classifier) {
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
||||||
void* text_classifier_create(struct TextClassifierOptions options) {
|
void* text_classifier_create(struct TextClassifierOptions* options) {
|
||||||
return mediapipe::tasks::c::text::text_classifier::CppTextClassifierCreate(
|
return mediapipe::tasks::c::text::text_classifier::CppTextClassifierCreate(
|
||||||
options);
|
*options);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool text_classifier_classify(void* classifier, char* utf8_str,
|
int text_classifier_classify(void* classifier, char* utf8_str,
|
||||||
TextClassifierResult* result) {
|
TextClassifierResult* result) {
|
||||||
return mediapipe::tasks::c::text::text_classifier::CppTextClassifierClassify(
|
return mediapipe::tasks::c::text::text_classifier::CppTextClassifierClassify(
|
||||||
classifier, utf8_str, result);
|
classifier, utf8_str, result);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,11 +20,15 @@ limitations under the License.
|
||||||
#include "mediapipe/tasks/c/components/processors/classifier_options.h"
|
#include "mediapipe/tasks/c/components/processors/classifier_options.h"
|
||||||
#include "mediapipe/tasks/c/core/base_options.h"
|
#include "mediapipe/tasks/c/core/base_options.h"
|
||||||
|
|
||||||
|
#ifndef MP_EXPORT
|
||||||
|
#define MP_EXPORT __attribute__((visibility("default")))
|
||||||
|
#endif // MP_EXPORT
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef ClassificationResult TextClassifierResult;
|
typedef struct ClassificationResult TextClassifierResult;
|
||||||
|
|
||||||
// The options for configuring a MediaPipe text classifier task.
|
// The options for configuring a MediaPipe text classifier task.
|
||||||
struct TextClassifierOptions {
|
struct TextClassifierOptions {
|
||||||
|
@ -38,14 +42,14 @@ struct TextClassifierOptions {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Creates a TextClassifier from the provided `options`.
|
// Creates a TextClassifier from the provided `options`.
|
||||||
void* text_classifier_create(struct TextClassifierOptions options);
|
MP_EXPORT void* text_classifier_create(struct TextClassifierOptions* options);
|
||||||
|
|
||||||
// Performs classification on the input `text`.
|
// Performs classification on the input `text`.
|
||||||
bool text_classifier_classify(void* classifier, char* utf8_str,
|
MP_EXPORT int text_classifier_classify(void* classifier, char* utf8_str,
|
||||||
TextClassifierResult* result);
|
TextClassifierResult* result);
|
||||||
|
|
||||||
// Shuts down the TextClassifier when all the work is done. Frees all memory.
|
// Shuts down the TextClassifier when all the work is done. Frees all memory.
|
||||||
void text_classifier_close(void* classifier);
|
MP_EXPORT void text_classifier_close(void* classifier);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} // extern C
|
} // extern C
|
||||||
|
|
Loading…
Reference in New Issue
Block a user