Merge pull request #3927 from priankakariatyml:ios-options
PiperOrigin-RevId: 495898311
This commit is contained in:
commit
a864f4e9b3
25
mediapipe/tasks/ios/common/BUILD
Normal file
25
mediapipe/tasks/ios/common/BUILD
Normal file
|
@ -0,0 +1,25 @@
|
|||
# Copyright 2022 The MediaPipe Authors. All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
package(default_visibility = ["//mediapipe/tasks:internal"])
|
||||
|
||||
licenses(["notice"])
|
||||
|
||||
objc_library(
|
||||
name = "MPPCommon",
|
||||
hdrs = [
|
||||
"sources/MPPCommon.h",
|
||||
],
|
||||
module_name = "MPPCommon",
|
||||
)
|
178
mediapipe/tasks/ios/common/sources/MPPCommon.h
Normal file
178
mediapipe/tasks/ios/common/sources/MPPCommon.h
Normal file
|
@ -0,0 +1,178 @@
|
|||
// Copyright 2022 The MediaPipe Authors. All Rights Reserved.
|
||||
//
|
||||
// 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.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
* @enum MPPTasksErrorCode
|
||||
* This enum specifies error codes for Mediapipe Task Library.
|
||||
* It maintains a 1:1 mapping to MediaPipeTasksStatus of the C ++libray.
|
||||
*/
|
||||
typedef NS_ENUM(NSUInteger, MPPTasksErrorCode) {
|
||||
|
||||
// Generic error codes.
|
||||
|
||||
// Unspecified error.
|
||||
MPPTasksErrorCodeError = 1,
|
||||
// Invalid argument specified.
|
||||
MPPTasksErrorCodeInvalidArgumentError = 2,
|
||||
// Invalid FlatBuffer file or buffer specified.
|
||||
MPPTasksErrorCodeInvalidFlatBufferError = 3,
|
||||
// Model contains a builtin op that isn't supported by the OpResolver or
|
||||
// delegates.
|
||||
MPPTasksErrorCodeUnsupportedBuiltinOp = 4,
|
||||
// Model contains a custom op that isn't supported by the OpResolver or
|
||||
// delegates.
|
||||
MPPTasksErrorCodeUnsupportedCustomOp = 5,
|
||||
|
||||
// File I/O error codes.
|
||||
|
||||
// No such file.
|
||||
MPPTasksErrorCodeFileNotFoundError = 100,
|
||||
// Permission issue.
|
||||
MPPTasksErrorCodeFilePermissionDeniedError,
|
||||
// I/O error when reading file.
|
||||
MPPTasksErrorCodeFileReadError,
|
||||
// I/O error when mmap-ing file.
|
||||
MPPTasksErrorCodeFileMmapError,
|
||||
// ZIP I/O error when unpacking the zip file.
|
||||
MPPTasksErrorCodeFileZipError,
|
||||
|
||||
// TensorFlow Lite metadata error codes.
|
||||
|
||||
// Unexpected schema version (aka file_identifier) in the Metadata FlatBuffer.
|
||||
MPPTasksErrorCodeMetadataInvalidSchemaVersionError = 200,
|
||||
// No such associated file within metadata, or file has not been packed.
|
||||
MPPTasksErrorCodeMetadataAssociatedFileNotFoundError,
|
||||
// ZIP I/O error when unpacking an associated file.
|
||||
MPPTasksErrorCodeMetadataAssociatedFileZipError,
|
||||
// Inconsistency error between the metadata and actual TF Lite model.
|
||||
// E.g.: number of labels and output tensor values differ.
|
||||
MPPTasksErrorCodeMetadataInconsistencyError,
|
||||
// Invalid process units specified.
|
||||
// E.g.: multiple ProcessUnits with the same type for a given tensor.
|
||||
MPPTasksErrorCodeMetadataInvalidProcessUnitsError,
|
||||
// Inconsistency error with the number of labels.
|
||||
// E.g.: label files for different locales have a different number of labels.
|
||||
MPPTasksErrorCodeMetadataNumLabelsMismatchError,
|
||||
// Score calibration parameters parsing error.
|
||||
// E.g.: too many parameters provided in the corresponding associated file.
|
||||
MPPTasksErrorCodeMetadataMalformedScoreCalibrationError,
|
||||
// Unexpected number of subgraphs for the current task.
|
||||
// E.g.: image classification expects a single subgraph.
|
||||
MPPTasksErrorCodeMetadataInvalidNumSubgraphsError,
|
||||
// A given tensor requires NormalizationOptions but none were found.
|
||||
// E.g.: float input tensor requires normalization to preprocess input images.
|
||||
MPPTasksErrorCodeMetadataMissingNormalizationOptionsError,
|
||||
// Invalid ContentProperties specified.
|
||||
// E.g. expected ImageProperties, got BoundingBoxProperties.
|
||||
MPPTasksErrorCodeMetadataInvalidContentPropertiesError,
|
||||
// Metadata is mandatory but was not found.
|
||||
// E.g. current task requires TFLite Model Metadata but none was found.
|
||||
MPPTasksErrorCodeMetadataNotFoundError,
|
||||
// Associated TENSOR_AXIS_LABELS or TENSOR_VALUE_LABELS file is mandatory but
|
||||
// none was found or it was empty.
|
||||
// E.g. current task requires labels but none were found.
|
||||
MPPTasksErrorCodeMetadataMissingLabelsError,
|
||||
// The ProcessingUnit for tokenizer is not correctly configured.
|
||||
// E.g BertTokenizer doesn't have a valid vocab file associated.
|
||||
MPPTasksErrorCodeMetadataInvalidTokenizerError,
|
||||
|
||||
// Input tensor(s) error codes.
|
||||
|
||||
// Unexpected number of input tensors for the current task.
|
||||
// E.g. current task expects a single input tensor.
|
||||
MPPTasksErrorCodeInvalidNumInputTensorsError = 300,
|
||||
// Unexpected input tensor dimensions for the current task.
|
||||
// E.g.: only 4D input tensors supported.
|
||||
MPPTasksErrorCodeInvalidInputTensorDimensionsError,
|
||||
// Unexpected input tensor type for the current task.
|
||||
// E.g.: current task expects a uint8 pixel image as input.
|
||||
MPPTasksErrorCodeInvalidInputTensorTypeError,
|
||||
// Unexpected input tensor bytes size.
|
||||
// E.g.: size in bytes does not correspond to the expected number of pixels.
|
||||
MPPTasksErrorCodeInvalidInputTensorSizeError,
|
||||
// No correct input tensor found for the model.
|
||||
// E.g.: input tensor name is not part of the text model's input tensors.
|
||||
MPPTasksErrorCodeInputTensorNotFoundError,
|
||||
|
||||
// Output tensor(s) error codes.
|
||||
|
||||
// Unexpected output tensor dimensions for the current task.
|
||||
// E.g.: only a batch size of 1 is supported.
|
||||
MPPTasksErrorCodeInvalidOutputTensorDimensionsError = 400,
|
||||
// Unexpected input tensor type for the current task.
|
||||
// E.g.: multi-head model with different output tensor types.
|
||||
MPPTasksErrorCodeInvalidOutputTensorTypeError,
|
||||
// No correct output tensor found for the model.
|
||||
// E.g.: output tensor name is not part of the text model's output tensors.
|
||||
MPPTasksErrorCodeOutputTensorNotFoundError,
|
||||
// Unexpected number of output tensors for the current task.
|
||||
// E.g.: current task expects a single output tensor.
|
||||
MPPTasksErrorCodeInvalidNumOutputTensorsError,
|
||||
|
||||
// Image processing error codes.
|
||||
|
||||
// Unspecified image processing failures.
|
||||
MPPTasksErrorCodeImageProcessingError = 500,
|
||||
// Unexpected input or output buffer metadata.
|
||||
// E.g.: rotate RGBA buffer to Grayscale buffer by 90 degrees.
|
||||
MPPTasksErrorCodeImageProcessingInvalidArgumentError,
|
||||
// Image processing operation failures.
|
||||
// E.g. libyuv rotation failed for an unknown reason.
|
||||
MPPTasksErrorCodeImageProcessingBackendError,
|
||||
|
||||
// Task runner error codes.
|
||||
MPPTasksErrorCodeRunnerError = 600,
|
||||
// Task runner is not initialized.
|
||||
MPPTasksErrorCodeRunnerInitializationError,
|
||||
// Task runner is not started successfully.
|
||||
MPPTasksErrorCodeRunnerFailsToStartError,
|
||||
// Task runner is not started.
|
||||
MPPTasksErrorCodeRunnerNotStartedError,
|
||||
// Task runner API is called in the wrong processing mode.
|
||||
MPPTasksErrorCodeRunnerApiCalledInWrongModeError,
|
||||
// Task runner receives/produces invalid MediaPipe packet timestamp.
|
||||
MPPTasksErrorCodeRunnerInvalidTimestampError,
|
||||
// Task runner receives unexpected MediaPipe graph input packet.
|
||||
// E.g. The packet type doesn't match the graph input stream's data type.
|
||||
MPPTasksErrorCodeRunnerUnexpectedInputError,
|
||||
// Task runner produces unexpected MediaPipe graph output packet.
|
||||
// E.g. The number of output packets is not equal to the number of graph
|
||||
// output streams.
|
||||
MPPTasksErrorCodeRunnerUnexpectedOutputError,
|
||||
// Task runner is not closed successfully.
|
||||
MPPTasksErrorCodeRunnerFailsToCloseError,
|
||||
// Task runner's model resources cache service is unavailable or the
|
||||
// targeting model resources bundle is not found.
|
||||
MPPTasksErrorCodeRunnerModelResourcesCacheServiceError,
|
||||
|
||||
// Task graph error codes.
|
||||
MPPTasksErrorCodeGraphError = 700,
|
||||
// Task graph is not implemented.
|
||||
MPPTasksErrorCodeTaskGraphNotImplementedError,
|
||||
// Task graph config is invalid.
|
||||
MPPTasksErrorCodeInvalidTaskGraphConfigError,
|
||||
|
||||
// The first error code in MPPTasksErrorCode (for internal use only).
|
||||
MPPTasksErrorCodeFirst = MPPTasksErrorCodeError,
|
||||
|
||||
// The last error code in MPPTasksErrorCode (for internal use only).
|
||||
MPPTasksErrorCodeLast = MPPTasksErrorCodeInvalidTaskGraphConfigError,
|
||||
|
||||
} NS_SWIFT_NAME(TasksErrorCode);
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
|
@ -21,3 +21,18 @@ objc_library(
|
|||
srcs = ["sources/MPPBaseOptions.m"],
|
||||
hdrs = ["sources/MPPBaseOptions.h"],
|
||||
)
|
||||
|
||||
objc_library(
|
||||
name = "MPPTaskOptions",
|
||||
srcs = ["sources/MPPTaskOptions.m"],
|
||||
hdrs = ["sources/MPPTaskOptions.h"],
|
||||
deps = [
|
||||
":MPPBaseOptions",
|
||||
],
|
||||
)
|
||||
|
||||
objc_library(
|
||||
name = "MPPTaskResult",
|
||||
srcs = ["sources/MPPTaskResult.m"],
|
||||
hdrs = ["sources/MPPTaskResult.h"],
|
||||
)
|
||||
|
|
34
mediapipe/tasks/ios/core/sources/MPPTaskOptions.h
Normal file
34
mediapipe/tasks/ios/core/sources/MPPTaskOptions.h
Normal file
|
@ -0,0 +1,34 @@
|
|||
// Copyright 2022 The MediaPipe Authors. All Rights Reserved.
|
||||
//
|
||||
// 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.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "mediapipe/tasks/ios/core/sources/MPPBaseOptions.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
* MediaPipe Tasks options base class. Any MediaPipe task-specific options class should extend
|
||||
* this class.
|
||||
*/
|
||||
NS_SWIFT_NAME(TaskOptions)
|
||||
|
||||
@interface MPPTaskOptions : NSObject <NSCopying>
|
||||
/**
|
||||
* Base options for configuring the Mediapipe task.
|
||||
*/
|
||||
@property(nonatomic, copy) MPPBaseOptions *baseOptions;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
36
mediapipe/tasks/ios/core/sources/MPPTaskOptions.m
Normal file
36
mediapipe/tasks/ios/core/sources/MPPTaskOptions.m
Normal file
|
@ -0,0 +1,36 @@
|
|||
// Copyright 2022 The MediaPipe Authors. All Rights Reserved.
|
||||
//
|
||||
// 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.
|
||||
|
||||
#import "mediapipe/tasks/ios/core/sources/MPPTaskOptions.h"
|
||||
#import "mediapipe/tasks/ios/core/sources/MPPBaseOptions.h"
|
||||
|
||||
@implementation MPPTaskOptions
|
||||
|
||||
- (instancetype)init {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_baseOptions = [[MPPBaseOptions alloc] init];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id)copyWithZone:(NSZone *)zone {
|
||||
MPPTaskOptions *taskOptions = [[MPPTaskOptions alloc] init];
|
||||
|
||||
taskOptions.baseOptions = self.baseOptions;
|
||||
|
||||
return taskOptions;
|
||||
}
|
||||
|
||||
@end
|
37
mediapipe/tasks/ios/core/sources/MPPTaskResult.h
Normal file
37
mediapipe/tasks/ios/core/sources/MPPTaskResult.h
Normal file
|
@ -0,0 +1,37 @@
|
|||
// Copyright 2022 The MediaPipe Authors. All Rights Reserved.
|
||||
//
|
||||
// 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.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
* MediaPipe Tasks result base class. Any MediaPipe task result class should extend
|
||||
* this class.
|
||||
*/
|
||||
NS_SWIFT_NAME(TaskResult)
|
||||
|
||||
@interface MPPTaskResult : NSObject <NSCopying>
|
||||
/**
|
||||
* Timestamp that is associated with the task result object.
|
||||
*/
|
||||
@property(nonatomic, assign, readonly) long timestamp;
|
||||
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
||||
- (instancetype)initWithTimestamp:(long)timestamp NS_DESIGNATED_INITIALIZER;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
31
mediapipe/tasks/ios/core/sources/MPPTaskResult.m
Normal file
31
mediapipe/tasks/ios/core/sources/MPPTaskResult.m
Normal file
|
@ -0,0 +1,31 @@
|
|||
// Copyright 2022 The MediaPipe Authors. All Rights Reserved.
|
||||
//
|
||||
// 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.
|
||||
|
||||
#import "mediapipe/tasks/ios/core/sources/MPPTaskResult.h"
|
||||
|
||||
@implementation MPPTaskResult
|
||||
|
||||
- (instancetype)initWithTimestamp:(long)timestamp {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_timestamp = timestamp;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id)copyWithZone:(NSZone *)zone {
|
||||
return [[MPPTaskResult alloc] initWithTimestamp:self.timestamp];
|
||||
}
|
||||
|
||||
@end
|
Loading…
Reference in New Issue
Block a user