Fixes multiple typos in the calculator's internal files.
PiperOrigin-RevId: 577202836
This commit is contained in:
parent
46cca0d486
commit
eaf0807849
|
@ -82,7 +82,7 @@ namespace api2 {
|
||||||
//
|
//
|
||||||
// Outputs:
|
// Outputs:
|
||||||
// TENSORS - std::vector<Tensor>
|
// TENSORS - std::vector<Tensor>
|
||||||
// Vector containing a single Tensor populated with an extrated RGB image.
|
// Vector containing a single Tensor populated with an extracted RGB image.
|
||||||
// MATRIX - std::array<float, 16> @Optional
|
// MATRIX - std::array<float, 16> @Optional
|
||||||
// An std::array<float, 16> representing a 4x4 row-major-order matrix that
|
// An std::array<float, 16> representing a 4x4 row-major-order matrix that
|
||||||
// maps a point on the input image to a point on the output tensor, and
|
// maps a point on the input image to a point on the output tensor, and
|
||||||
|
@ -212,7 +212,7 @@ class ImageToTensorCalculator : public Node {
|
||||||
std::array<float, 16> matrix;
|
std::array<float, 16> matrix;
|
||||||
GetRotatedSubRectToRectTransformMatrix(
|
GetRotatedSubRectToRectTransformMatrix(
|
||||||
roi, image->width(), image->height(),
|
roi, image->width(), image->height(),
|
||||||
/*flip_horizontaly=*/false, &matrix);
|
/*flip_horizontally=*/false, &matrix);
|
||||||
kOutMatrix(cc).Send(std::move(matrix));
|
kOutMatrix(cc).Send(std::move(matrix));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,7 @@ class SubRectExtractorGl {
|
||||||
absl::Status ExtractSubRectToBuffer(
|
absl::Status ExtractSubRectToBuffer(
|
||||||
const tflite::gpu::gl::GlTexture& texture,
|
const tflite::gpu::gl::GlTexture& texture,
|
||||||
const tflite::gpu::HW& texture_size, const RotatedRect& sub_rect,
|
const tflite::gpu::HW& texture_size, const RotatedRect& sub_rect,
|
||||||
bool flip_horizontaly, float alpha, float beta,
|
bool flip_horizontally, float alpha, float beta,
|
||||||
const tflite::gpu::HW& destination_size,
|
const tflite::gpu::HW& destination_size,
|
||||||
tflite::gpu::gl::CommandQueue* command_queue,
|
tflite::gpu::gl::CommandQueue* command_queue,
|
||||||
tflite::gpu::gl::GlBuffer* destination);
|
tflite::gpu::gl::GlBuffer* destination);
|
||||||
|
@ -154,13 +154,13 @@ void main() {
|
||||||
absl::Status SubRectExtractorGl::ExtractSubRectToBuffer(
|
absl::Status SubRectExtractorGl::ExtractSubRectToBuffer(
|
||||||
const tflite::gpu::gl::GlTexture& texture,
|
const tflite::gpu::gl::GlTexture& texture,
|
||||||
const tflite::gpu::HW& texture_size, const RotatedRect& texture_sub_rect,
|
const tflite::gpu::HW& texture_size, const RotatedRect& texture_sub_rect,
|
||||||
bool flip_horizontaly, float alpha, float beta,
|
bool flip_horizontally, float alpha, float beta,
|
||||||
const tflite::gpu::HW& destination_size,
|
const tflite::gpu::HW& destination_size,
|
||||||
tflite::gpu::gl::CommandQueue* command_queue,
|
tflite::gpu::gl::CommandQueue* command_queue,
|
||||||
tflite::gpu::gl::GlBuffer* destination) {
|
tflite::gpu::gl::GlBuffer* destination) {
|
||||||
std::array<float, 16> transform_mat;
|
std::array<float, 16> transform_mat;
|
||||||
GetRotatedSubRectToRectTransformMatrix(texture_sub_rect, texture_size.w,
|
GetRotatedSubRectToRectTransformMatrix(texture_sub_rect, texture_size.w,
|
||||||
texture_size.h, flip_horizontaly,
|
texture_size.h, flip_horizontally,
|
||||||
&transform_mat);
|
&transform_mat);
|
||||||
MP_RETURN_IF_ERROR(texture.BindAsSampler2D(0));
|
MP_RETURN_IF_ERROR(texture.BindAsSampler2D(0));
|
||||||
|
|
||||||
|
@ -308,7 +308,7 @@ class GlProcessor : public ImageToTensorConverter {
|
||||||
input_texture,
|
input_texture,
|
||||||
tflite::gpu::HW(source_texture.height(), source_texture.width()),
|
tflite::gpu::HW(source_texture.height(), source_texture.width()),
|
||||||
roi,
|
roi,
|
||||||
/*flip_horizontaly=*/false, transform.scale, transform.offset,
|
/*flip_horizontally=*/false, transform.scale, transform.offset,
|
||||||
tflite::gpu::HW(output_shape.dims[1], output_shape.dims[2]),
|
tflite::gpu::HW(output_shape.dims[1], output_shape.dims[2]),
|
||||||
command_queue_.get(), &output));
|
command_queue_.get(), &output));
|
||||||
|
|
||||||
|
|
|
@ -199,7 +199,7 @@ class GlProcessor : public ImageToTensorConverter {
|
||||||
range_min, range_max));
|
range_min, range_max));
|
||||||
auto tensor_view = output_tensor.GetOpenGlTexture2dWriteView();
|
auto tensor_view = output_tensor.GetOpenGlTexture2dWriteView();
|
||||||
MP_RETURN_IF_ERROR(ExtractSubRect(input_texture, roi,
|
MP_RETURN_IF_ERROR(ExtractSubRect(input_texture, roi,
|
||||||
/*flip_horizontaly=*/false,
|
/*flip_horizontally=*/false,
|
||||||
transform.scale, transform.offset,
|
transform.scale, transform.offset,
|
||||||
output_shape, &tensor_view));
|
output_shape, &tensor_view));
|
||||||
return absl::OkStatus();
|
return absl::OkStatus();
|
||||||
|
@ -210,7 +210,7 @@ class GlProcessor : public ImageToTensorConverter {
|
||||||
|
|
||||||
absl::Status ExtractSubRect(const mediapipe::GlTexture& texture,
|
absl::Status ExtractSubRect(const mediapipe::GlTexture& texture,
|
||||||
const RotatedRect& sub_rect,
|
const RotatedRect& sub_rect,
|
||||||
bool flip_horizontaly, float alpha, float beta,
|
bool flip_horizontally, float alpha, float beta,
|
||||||
const Tensor::Shape& output_shape,
|
const Tensor::Shape& output_shape,
|
||||||
Tensor::OpenGlTexture2dView* output) {
|
Tensor::OpenGlTexture2dView* output) {
|
||||||
const int output_height = output_shape.dims[1];
|
const int output_height = output_shape.dims[1];
|
||||||
|
@ -263,13 +263,13 @@ class GlProcessor : public ImageToTensorConverter {
|
||||||
ABSL_LOG_IF(FATAL, !gl_context) << "GlContext is not bound to the thread.";
|
ABSL_LOG_IF(FATAL, !gl_context) << "GlContext is not bound to the thread.";
|
||||||
if (gl_context->GetGlVersion() == mediapipe::GlVersion::kGLES2) {
|
if (gl_context->GetGlVersion() == mediapipe::GlVersion::kGLES2) {
|
||||||
GetTransposedRotatedSubRectToRectTransformMatrix(
|
GetTransposedRotatedSubRectToRectTransformMatrix(
|
||||||
sub_rect, texture.width(), texture.height(), flip_horizontaly,
|
sub_rect, texture.width(), texture.height(), flip_horizontally,
|
||||||
&transform_mat);
|
&transform_mat);
|
||||||
glUniformMatrix4fv(matrix_id_, 1, GL_FALSE, transform_mat.data());
|
glUniformMatrix4fv(matrix_id_, 1, GL_FALSE, transform_mat.data());
|
||||||
} else {
|
} else {
|
||||||
GetRotatedSubRectToRectTransformMatrix(sub_rect, texture.width(),
|
GetRotatedSubRectToRectTransformMatrix(sub_rect, texture.width(),
|
||||||
texture.height(), flip_horizontaly,
|
texture.height(),
|
||||||
&transform_mat);
|
flip_horizontally, &transform_mat);
|
||||||
glUniformMatrix4fv(matrix_id_, 1, GL_TRUE, transform_mat.data());
|
glUniformMatrix4fv(matrix_id_, 1, GL_TRUE, transform_mat.data());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -179,13 +179,13 @@ class SubRectExtractorMetal {
|
||||||
}
|
}
|
||||||
|
|
||||||
absl::Status Execute(id<MTLTexture> input_texture,
|
absl::Status Execute(id<MTLTexture> input_texture,
|
||||||
const RotatedRect& sub_rect, bool flip_horizontaly,
|
const RotatedRect& sub_rect, bool flip_horizontally,
|
||||||
float alpha, float beta,
|
float alpha, float beta,
|
||||||
const tflite::gpu::HW& destination_size,
|
const tflite::gpu::HW& destination_size,
|
||||||
id<MTLCommandBuffer> command_buffer,
|
id<MTLCommandBuffer> command_buffer,
|
||||||
id<MTLBuffer> destination) {
|
id<MTLBuffer> destination) {
|
||||||
auto output_texture = MTLTextureWithBuffer(destination_size, destination);
|
auto output_texture = MTLTextureWithBuffer(destination_size, destination);
|
||||||
return InternalExecute(input_texture, sub_rect, flip_horizontaly, alpha,
|
return InternalExecute(input_texture, sub_rect, flip_horizontally, alpha,
|
||||||
beta, destination_size, command_buffer,
|
beta, destination_size, command_buffer,
|
||||||
output_texture);
|
output_texture);
|
||||||
}
|
}
|
||||||
|
@ -211,7 +211,7 @@ class SubRectExtractorMetal {
|
||||||
|
|
||||||
absl::Status InternalExecute(id<MTLTexture> input_texture,
|
absl::Status InternalExecute(id<MTLTexture> input_texture,
|
||||||
const RotatedRect& sub_rect,
|
const RotatedRect& sub_rect,
|
||||||
bool flip_horizontaly, float alpha, float beta,
|
bool flip_horizontally, float alpha, float beta,
|
||||||
const tflite::gpu::HW& destination_size,
|
const tflite::gpu::HW& destination_size,
|
||||||
id<MTLCommandBuffer> command_buffer,
|
id<MTLCommandBuffer> command_buffer,
|
||||||
id<MTLTexture> output_texture) {
|
id<MTLTexture> output_texture) {
|
||||||
|
@ -223,7 +223,7 @@ class SubRectExtractorMetal {
|
||||||
std::array<float, 16> transform_mat;
|
std::array<float, 16> transform_mat;
|
||||||
GetRotatedSubRectToRectTransformMatrix(sub_rect, input_texture.width,
|
GetRotatedSubRectToRectTransformMatrix(sub_rect, input_texture.width,
|
||||||
input_texture.height,
|
input_texture.height,
|
||||||
flip_horizontaly, &transform_mat);
|
flip_horizontally, &transform_mat);
|
||||||
id<MTLBuffer> transform_mat_buffer =
|
id<MTLBuffer> transform_mat_buffer =
|
||||||
[device_ newBufferWithBytes:&transform_mat
|
[device_ newBufferWithBytes:&transform_mat
|
||||||
length:sizeof(transform_mat)
|
length:sizeof(transform_mat)
|
||||||
|
@ -383,7 +383,7 @@ class MetalProcessor : public ImageToTensorConverter {
|
||||||
MtlBufferView::GetWriteView(output_tensor, command_buffer);
|
MtlBufferView::GetWriteView(output_tensor, command_buffer);
|
||||||
MP_RETURN_IF_ERROR(extractor_->Execute(
|
MP_RETURN_IF_ERROR(extractor_->Execute(
|
||||||
texture, roi,
|
texture, roi,
|
||||||
/*flip_horizontaly=*/false, transform.scale, transform.offset,
|
/*flip_horizontally=*/false, transform.scale, transform.offset,
|
||||||
tflite::gpu::HW(output_shape.dims[1], output_shape.dims[2]),
|
tflite::gpu::HW(output_shape.dims[1], output_shape.dims[2]),
|
||||||
command_buffer, buffer_view.buffer()));
|
command_buffer, buffer_view.buffer()));
|
||||||
[command_buffer commit];
|
[command_buffer commit];
|
||||||
|
|
|
@ -92,7 +92,7 @@ absl::StatusOr<ValueTransformation> GetValueRangeTransformation(
|
||||||
|
|
||||||
void GetRotatedSubRectToRectTransformMatrix(const RotatedRect& sub_rect,
|
void GetRotatedSubRectToRectTransformMatrix(const RotatedRect& sub_rect,
|
||||||
int rect_width, int rect_height,
|
int rect_width, int rect_height,
|
||||||
bool flip_horizontaly,
|
bool flip_horizontally,
|
||||||
std::array<float, 16>* matrix_ptr) {
|
std::array<float, 16>* matrix_ptr) {
|
||||||
std::array<float, 16>& matrix = *matrix_ptr;
|
std::array<float, 16>& matrix = *matrix_ptr;
|
||||||
// The resulting matrix is multiplication of below commented out matrices:
|
// The resulting matrix is multiplication of below commented out matrices:
|
||||||
|
@ -118,7 +118,7 @@ void GetRotatedSubRectToRectTransformMatrix(const RotatedRect& sub_rect,
|
||||||
// {0.0f, 0.0f, a, 0.0f}
|
// {0.0f, 0.0f, a, 0.0f}
|
||||||
// {0.0f, 0.0f, 0.0f, 1.0f}
|
// {0.0f, 0.0f, 0.0f, 1.0f}
|
||||||
|
|
||||||
const float flip = flip_horizontaly ? -1 : 1;
|
const float flip = flip_horizontally ? -1 : 1;
|
||||||
// Matrix for optional horizontal flip around middle of output image.
|
// Matrix for optional horizontal flip around middle of output image.
|
||||||
// { fl , 0.0f, 0.0f, 0.0f}
|
// { fl , 0.0f, 0.0f, 0.0f}
|
||||||
// { 0.0f, 1.0f, 0.0f, 0.0f}
|
// { 0.0f, 1.0f, 0.0f, 0.0f}
|
||||||
|
@ -177,13 +177,13 @@ void GetRotatedSubRectToRectTransformMatrix(const RotatedRect& sub_rect,
|
||||||
|
|
||||||
void GetTransposedRotatedSubRectToRectTransformMatrix(
|
void GetTransposedRotatedSubRectToRectTransformMatrix(
|
||||||
const RotatedRect& sub_rect, int rect_width, int rect_height,
|
const RotatedRect& sub_rect, int rect_width, int rect_height,
|
||||||
bool flip_horizontaly, std::array<float, 16>* matrix_ptr) {
|
bool flip_horizontally, std::array<float, 16>* matrix_ptr) {
|
||||||
std::array<float, 16>& matrix = *matrix_ptr;
|
std::array<float, 16>& matrix = *matrix_ptr;
|
||||||
// See comments in GetRotatedSubRectToRectTransformMatrix for detailed
|
// See comments in GetRotatedSubRectToRectTransformMatrix for detailed
|
||||||
// calculations.
|
// calculations.
|
||||||
const float a = sub_rect.width;
|
const float a = sub_rect.width;
|
||||||
const float b = sub_rect.height;
|
const float b = sub_rect.height;
|
||||||
const float flip = flip_horizontaly ? -1 : 1;
|
const float flip = flip_horizontally ? -1 : 1;
|
||||||
const float c = std::cos(sub_rect.rotation);
|
const float c = std::cos(sub_rect.rotation);
|
||||||
const float d = std::sin(sub_rect.rotation);
|
const float d = std::sin(sub_rect.rotation);
|
||||||
const float e = sub_rect.center_x;
|
const float e = sub_rect.center_x;
|
||||||
|
|
|
@ -74,7 +74,7 @@ absl::StatusOr<std::array<float, 4>> PadRoi(int input_tensor_width,
|
||||||
// Represents a transformation of value which involves scaling and offsetting.
|
// Represents a transformation of value which involves scaling and offsetting.
|
||||||
// To apply transformation:
|
// To apply transformation:
|
||||||
// ValueTransformation transform = ...
|
// ValueTransformation transform = ...
|
||||||
// float transformed_value = transform.scale * value + transfrom.offset;
|
// float transformed_value = transform.scale * value + transform.offset;
|
||||||
struct ValueTransformation {
|
struct ValueTransformation {
|
||||||
float scale;
|
float scale;
|
||||||
float offset;
|
float offset;
|
||||||
|
@ -99,11 +99,11 @@ absl::StatusOr<ValueTransformation> GetValueRangeTransformation(
|
||||||
// @sub_rect - rotated sub rect in absolute coordinates
|
// @sub_rect - rotated sub rect in absolute coordinates
|
||||||
// @rect_width - rect width
|
// @rect_width - rect width
|
||||||
// @rect_height - rect height
|
// @rect_height - rect height
|
||||||
// @flip_horizontaly - we need to flip the output buffer.
|
// @flip_horizontally - we need to flip the output buffer.
|
||||||
// @matrix - 4x4 matrix (array of 16 elements) to populate
|
// @matrix - 4x4 matrix (array of 16 elements) to populate
|
||||||
void GetRotatedSubRectToRectTransformMatrix(const RotatedRect& sub_rect,
|
void GetRotatedSubRectToRectTransformMatrix(const RotatedRect& sub_rect,
|
||||||
int rect_width, int rect_height,
|
int rect_width, int rect_height,
|
||||||
bool flip_horizontaly,
|
bool flip_horizontally,
|
||||||
std::array<float, 16>* matrix);
|
std::array<float, 16>* matrix);
|
||||||
|
|
||||||
// Returns the transpose of the matrix found with
|
// Returns the transpose of the matrix found with
|
||||||
|
@ -118,11 +118,11 @@ void GetRotatedSubRectToRectTransformMatrix(const RotatedRect& sub_rect,
|
||||||
// @sub_rect - rotated sub rect in absolute coordinates
|
// @sub_rect - rotated sub rect in absolute coordinates
|
||||||
// @rect_width - rect width
|
// @rect_width - rect width
|
||||||
// @rect_height - rect height
|
// @rect_height - rect height
|
||||||
// @flip_horizontaly - we need to flip the output buffer.
|
// @flip_horizontally - we need to flip the output buffer.
|
||||||
// @matrix - 4x4 matrix (array of 16 elements) to populate
|
// @matrix - 4x4 matrix (array of 16 elements) to populate
|
||||||
void GetTransposedRotatedSubRectToRectTransformMatrix(
|
void GetTransposedRotatedSubRectToRectTransformMatrix(
|
||||||
const RotatedRect& sub_rect, int rect_width, int rect_height,
|
const RotatedRect& sub_rect, int rect_width, int rect_height,
|
||||||
bool flip_horizontaly, std::array<float, 16>* matrix);
|
bool flip_horizontally, std::array<float, 16>* matrix);
|
||||||
|
|
||||||
// Validates the output dimensions set in the option proto. The input option
|
// Validates the output dimensions set in the option proto. The input option
|
||||||
// proto is expected to have to following fields:
|
// proto is expected to have to following fields:
|
||||||
|
|
|
@ -32,7 +32,7 @@ message TensorConverterCalculatorOptions {
|
||||||
// Custom settings to override the internal scaling factors `div` and `sub`.
|
// Custom settings to override the internal scaling factors `div` and `sub`.
|
||||||
// Both values must be set to non-negative values. Will only take effect on
|
// Both values must be set to non-negative values. Will only take effect on
|
||||||
// CPU AND when |use_custom_normalization| is set to true. When these custom
|
// CPU AND when |use_custom_normalization| is set to true. When these custom
|
||||||
// values take effect, the |zero_center| setting above will be overriden, and
|
// values take effect, the |zero_center| setting above will be overridden, and
|
||||||
// the normalized_value will be calculated as:
|
// the normalized_value will be calculated as:
|
||||||
// normalized_value = input / custom_div - custom_sub.
|
// normalized_value = input / custom_div - custom_sub.
|
||||||
optional bool use_custom_normalization = 6 [default = false];
|
optional bool use_custom_normalization = 6 [default = false];
|
||||||
|
|
|
@ -34,7 +34,7 @@ message TensorsToClassificationCalculatorOptions {
|
||||||
repeated Entry entries = 1;
|
repeated Entry entries = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Score threshold for perserving the class.
|
// Score threshold for preserving the class.
|
||||||
optional float min_score_threshold = 1;
|
optional float min_score_threshold = 1;
|
||||||
// Number of highest scoring labels to output. If top_k is not positive then
|
// Number of highest scoring labels to output. If top_k is not positive then
|
||||||
// all labels are used.
|
// all labels are used.
|
||||||
|
|
|
@ -147,7 +147,7 @@ BoxFormat GetBoxFormat(const TensorsToDetectionsCalculatorOptions& options) {
|
||||||
// TENSORS - Vector of Tensors of type kFloat32. The vector of tensors can have
|
// TENSORS - Vector of Tensors of type kFloat32. The vector of tensors can have
|
||||||
// 2 or 3 tensors. First tensor is the predicted raw boxes/keypoints.
|
// 2 or 3 tensors. First tensor is the predicted raw boxes/keypoints.
|
||||||
// The size of the values must be (num_boxes * num_predicted_values).
|
// The size of the values must be (num_boxes * num_predicted_values).
|
||||||
// Second tensor is the score tensor. The size of the valuse must be
|
// Second tensor is the score tensor. The size of the values must be
|
||||||
// (num_boxes * num_classes). It's optional to pass in a third tensor
|
// (num_boxes * num_classes). It's optional to pass in a third tensor
|
||||||
// for anchors (e.g. for SSD models) depend on the outputs of the
|
// for anchors (e.g. for SSD models) depend on the outputs of the
|
||||||
// detection model. The size of anchor tensor must be (num_boxes *
|
// detection model. The size of anchor tensor must be (num_boxes *
|
||||||
|
@ -267,7 +267,7 @@ absl::Status TensorsToDetectionsCalculator::UpdateContract(
|
||||||
if (CanUseGpu()) {
|
if (CanUseGpu()) {
|
||||||
#ifndef MEDIAPIPE_DISABLE_GL_COMPUTE
|
#ifndef MEDIAPIPE_DISABLE_GL_COMPUTE
|
||||||
MP_RETURN_IF_ERROR(mediapipe::GlCalculatorHelper::UpdateContract(
|
MP_RETURN_IF_ERROR(mediapipe::GlCalculatorHelper::UpdateContract(
|
||||||
cc, /*requesst_gpu_as_optional=*/true));
|
cc, /*request_gpu_as_optional=*/true));
|
||||||
#elif MEDIAPIPE_METAL_ENABLED
|
#elif MEDIAPIPE_METAL_ENABLED
|
||||||
MP_RETURN_IF_ERROR([MPPMetalHelper updateContract:cc]);
|
MP_RETURN_IF_ERROR([MPPMetalHelper updateContract:cc]);
|
||||||
#endif // !defined(MEDIAPIPE_DISABLE_GL_COMPUTE)
|
#endif // !defined(MEDIAPIPE_DISABLE_GL_COMPUTE)
|
||||||
|
|
|
@ -75,7 +75,7 @@ message TensorsToDetectionsCalculatorOptions {
|
||||||
// representation has a bottom-left origin (e.g., in OpenGL).
|
// representation has a bottom-left origin (e.g., in OpenGL).
|
||||||
optional bool flip_vertically = 18 [default = false];
|
optional bool flip_vertically = 18 [default = false];
|
||||||
|
|
||||||
// Score threshold for perserving decoded detections.
|
// Score threshold for preserving decoded detections.
|
||||||
optional float min_score_thresh = 19;
|
optional float min_score_thresh = 19;
|
||||||
|
|
||||||
// The maximum number of the detection results to return. If < 0, all
|
// The maximum number of the detection results to return. If < 0, all
|
||||||
|
|
|
@ -208,7 +208,7 @@ absl::Status TensorsToSegmentationCalculator::GetContract(
|
||||||
if (CanUseGpu()) {
|
if (CanUseGpu()) {
|
||||||
#if !MEDIAPIPE_DISABLE_GPU
|
#if !MEDIAPIPE_DISABLE_GPU
|
||||||
MP_RETURN_IF_ERROR(mediapipe::GlCalculatorHelper::UpdateContract(
|
MP_RETURN_IF_ERROR(mediapipe::GlCalculatorHelper::UpdateContract(
|
||||||
cc, /*requesst_gpu_as_optional=*/true));
|
cc, /*request_gpu_as_optional=*/true));
|
||||||
#if MEDIAPIPE_METAL_ENABLED
|
#if MEDIAPIPE_METAL_ENABLED
|
||||||
MP_RETURN_IF_ERROR([MPPMetalHelper updateContract:cc]);
|
MP_RETURN_IF_ERROR([MPPMetalHelper updateContract:cc]);
|
||||||
#endif // MEDIAPIPE_METAL_ENABLED
|
#endif // MEDIAPIPE_METAL_ENABLED
|
||||||
|
|
Loading…
Reference in New Issue
Block a user