Merge pull request #3975 from priankakariatyml:ios-base-options-helpers
PiperOrigin-RevId: 501073613
This commit is contained in:
		
						commit
						e869e57cb4
					
				| 
						 | 
					@ -89,7 +89,9 @@ objc_library(
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
        "//mediapipe/framework:calculator_cc_proto",
 | 
					        "//mediapipe/framework:calculator_cc_proto",
 | 
				
			||||||
 | 
					        "//mediapipe/tasks/cc/core:mediapipe_builtin_op_resolver",
 | 
				
			||||||
        "//mediapipe/tasks/cc/core:task_runner",
 | 
					        "//mediapipe/tasks/cc/core:task_runner",
 | 
				
			||||||
        "//mediapipe/tasks/ios/common/utils:MPPCommonUtils",
 | 
					        "//mediapipe/tasks/ios/common/utils:MPPCommonUtils",
 | 
				
			||||||
 | 
					        "//third_party/apple_frameworks:Foundation",
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,23 +20,65 @@
 | 
				
			||||||
NS_ASSUME_NONNULL_BEGIN
 | 
					NS_ASSUME_NONNULL_BEGIN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * This class is used to create and call appropriate methods on the C++ Task Runner.
 | 
					 * This class is used to create and call appropriate methods on the C++ Task Runner to initialize,
 | 
				
			||||||
 | 
					 * execute and terminate any MediaPipe task.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * An instance of the newly created C++ task runner will be stored until this class is destroyed.
 | 
				
			||||||
 | 
					 * When methods are called for processing (performing inference), closing etc., on this class,
 | 
				
			||||||
 | 
					 * internally the appropriate methods will be called on the C++ task runner instance to execute the
 | 
				
			||||||
 | 
					 * appropriate actions. For each type of task, a subclass of this class must be defined to add any
 | 
				
			||||||
 | 
					 * additional functionality. For eg:, vision tasks must create an `MPPVisionTaskRunner` and provide
 | 
				
			||||||
 | 
					 * additional functionality. An instance of `MPPVisionTaskRunner` can in turn be used by the each
 | 
				
			||||||
 | 
					 * vision task for creation and execution of the task. Please see the documentation for the C++ Task
 | 
				
			||||||
 | 
					 * Runner for more details on how the taks runner operates.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@interface MPPTaskRunner : NSObject
 | 
					@interface MPPTaskRunner : NSObject
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Initializes a new `MPPTaskRunner` with the mediapipe task graph config proto.
 | 
					 * Initializes a new `MPPTaskRunner` with the MediaPipe calculator configuration proto and an
 | 
				
			||||||
 | 
					 * optional C++ packets callback.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * You can pass `nullptr` for `packetsCallback` in case the mode of operation requested by the user
 | 
				
			||||||
 | 
					 * is synchronous.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * If the task is operating in asynchronous mode, any iOS MediaPipe task that uses the
 | 
				
			||||||
 | 
					 * `MPPTaskRunner` must define a C++ callback function to obtain the results of inference
 | 
				
			||||||
 | 
					 * asynchronously and deliver the results to the user. To accomplish this, the callback function
 | 
				
			||||||
 | 
					 * should in turn invoke the block provided by the user in the task options supplied to create the
 | 
				
			||||||
 | 
					 * task. Please see the documentation of the C++ Task Runner for more information on the synchronous
 | 
				
			||||||
 | 
					 * and asynchronous modes of operation.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @param graphConfig A mediapipe task graph config proto.
 | 
					 * @param graphConfig A mediapipe task graph config proto.
 | 
				
			||||||
 | 
					 * @param packetsCallback An optional C++ callback function that takes a list of output packets as
 | 
				
			||||||
 | 
					 * the input argument. If provided, the callback must in turn call the block provided by the user in
 | 
				
			||||||
 | 
					 * the appropriate task options.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @return An instance of `MPPTaskRunner` initialized to the given graph config proto.
 | 
					 * @return An instance of `MPPTaskRunner` initialized to the given graph config proto and optional
 | 
				
			||||||
 | 
					 * packetsCallback.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
- (instancetype)initWithCalculatorGraphConfig:(mediapipe::CalculatorGraphConfig)graphConfig
 | 
					- (instancetype)initWithCalculatorGraphConfig:(mediapipe::CalculatorGraphConfig)graphConfig
 | 
				
			||||||
 | 
					                              packetsCallback:
 | 
				
			||||||
 | 
					                                  (mediapipe::tasks::core::PacketsCallback)packetsCallback
 | 
				
			||||||
                                        error:(NSError **)error NS_DESIGNATED_INITIALIZER;
 | 
					                                        error:(NSError **)error NS_DESIGNATED_INITIALIZER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * A synchronous method for processing batch data or offline streaming data. This method is designed
 | 
				
			||||||
 | 
					 * for processing either batch data such as unrelated images and texts or offline streaming data
 | 
				
			||||||
 | 
					 * such as the decoded frames from a video file or audio file. The call blocks the current
 | 
				
			||||||
 | 
					 * thread until a failure status or a successful result is returned. If the input packets have no
 | 
				
			||||||
 | 
					 * timestamp, an internal timestamp will be assigend per invocation. Otherwise, when the timestamp
 | 
				
			||||||
 | 
					 * is set in the input packets, the caller must ensure that the input packet timestamps are greater
 | 
				
			||||||
 | 
					 * than the timestamps of the previous invocation. This method is thread-unsafe and it is the
 | 
				
			||||||
 | 
					 * caller's responsibility to synchronize access to this method across multiple threads and to
 | 
				
			||||||
 | 
					 * ensure that the input packet timestamps are in order.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
- (absl::StatusOr<mediapipe::tasks::core::PacketMap>)process:
 | 
					- (absl::StatusOr<mediapipe::tasks::core::PacketMap>)process:
 | 
				
			||||||
    (const mediapipe::tasks::core::PacketMap &)packetMap;
 | 
					    (const mediapipe::tasks::core::PacketMap &)packetMap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Shuts down the C++ task runner. After the runner is closed, any calls that send input data to the
 | 
				
			||||||
 | 
					 * runner are illegal and will receive errors.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
- (absl::Status)close;
 | 
					- (absl::Status)close;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- (instancetype)init NS_UNAVAILABLE;
 | 
					- (instancetype)init NS_UNAVAILABLE;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,9 +15,13 @@
 | 
				
			||||||
#import "mediapipe/tasks/ios/core/sources/MPPTaskRunner.h"
 | 
					#import "mediapipe/tasks/ios/core/sources/MPPTaskRunner.h"
 | 
				
			||||||
#import "mediapipe/tasks/ios/common/utils/sources/MPPCommonUtils.h"
 | 
					#import "mediapipe/tasks/ios/common/utils/sources/MPPCommonUtils.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "mediapipe/tasks/cc/core/mediapipe_builtin_op_resolver.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace {
 | 
					namespace {
 | 
				
			||||||
using ::mediapipe::CalculatorGraphConfig;
 | 
					using ::mediapipe::CalculatorGraphConfig;
 | 
				
			||||||
 | 
					using ::mediapipe::tasks::core::MediaPipeBuiltinOpResolver;
 | 
				
			||||||
using ::mediapipe::tasks::core::PacketMap;
 | 
					using ::mediapipe::tasks::core::PacketMap;
 | 
				
			||||||
 | 
					using ::mediapipe::tasks::core::PacketsCallback;
 | 
				
			||||||
using TaskRunnerCpp = ::mediapipe::tasks::core::TaskRunner;
 | 
					using TaskRunnerCpp = ::mediapipe::tasks::core::TaskRunner;
 | 
				
			||||||
}  // namespace
 | 
					}  // namespace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,15 +34,17 @@ using TaskRunnerCpp = ::mediapipe::tasks::core::TaskRunner;
 | 
				
			||||||
@implementation MPPTaskRunner
 | 
					@implementation MPPTaskRunner
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- (instancetype)initWithCalculatorGraphConfig:(CalculatorGraphConfig)graphConfig
 | 
					- (instancetype)initWithCalculatorGraphConfig:(CalculatorGraphConfig)graphConfig
 | 
				
			||||||
 | 
					                              packetsCallback:(PacketsCallback)packetsCallback
 | 
				
			||||||
                                        error:(NSError **)error {
 | 
					                                        error:(NSError **)error {
 | 
				
			||||||
  self = [super init];
 | 
					  self = [super init];
 | 
				
			||||||
  if (self) {
 | 
					  if (self) {
 | 
				
			||||||
    auto taskRunnerResult = TaskRunnerCpp::Create(std::move(graphConfig));
 | 
					    auto taskRunnerResult = TaskRunnerCpp::Create(std::move(graphConfig),
 | 
				
			||||||
 | 
					                                                  absl::make_unique<MediaPipeBuiltinOpResolver>(),
 | 
				
			||||||
 | 
					                                                  std::move(packetsCallback));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (![MPPCommonUtils checkCppError:taskRunnerResult.status() toError:error]) {
 | 
					    if (![MPPCommonUtils checkCppError:taskRunnerResult.status() toError:error]) {
 | 
				
			||||||
      return nil;
 | 
					      return nil;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    _cppTaskRunner = std::move(taskRunnerResult.value());
 | 
					    _cppTaskRunner = std::move(taskRunnerResult.value());
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  return self;
 | 
					  return self;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										29
									
								
								mediapipe/tasks/ios/core/utils/BUILD
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								mediapipe/tasks/ios/core/utils/BUILD
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,29 @@
 | 
				
			||||||
 | 
					# Copyright 2023 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 = "MPPBaseOptionsHelpers",
 | 
				
			||||||
 | 
					    srcs = ["sources/MPPBaseOptions+Helpers.mm"],
 | 
				
			||||||
 | 
					    hdrs = ["sources/MPPBaseOptions+Helpers.h"],
 | 
				
			||||||
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//mediapipe/tasks/cc/core/proto:acceleration_cc_proto",
 | 
				
			||||||
 | 
					        "//mediapipe/tasks/cc/core/proto:base_options_cc_proto",
 | 
				
			||||||
 | 
					        "//mediapipe/tasks/cc/core/proto:external_file_cc_proto",
 | 
				
			||||||
 | 
					        "//mediapipe/tasks/ios/core:MPPBaseOptions",
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,26 @@
 | 
				
			||||||
 | 
					// Copyright 2023 The MediaPipe Authors.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// 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 "mediapipe/tasks/cc/core/proto/base_options.pb.h"
 | 
				
			||||||
 | 
					#import "mediapipe/tasks/ios/core/sources/MPPBaseOptions.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NS_ASSUME_NONNULL_BEGIN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@interface MPPBaseOptions (Helpers)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- (void)copyToProto:(mediapipe::tasks::core::proto::BaseOptions *)baseOptionsProto;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NS_ASSUME_NONNULL_END
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,47 @@
 | 
				
			||||||
 | 
					// Copyright 2023 The MediaPipe Authors.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// 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 "mediapipe/tasks/cc/core/proto/acceleration.pb.h"
 | 
				
			||||||
 | 
					#include "mediapipe/tasks/cc/core/proto/external_file.pb.h"
 | 
				
			||||||
 | 
					#import "mediapipe/tasks/ios/core/utils/sources/MPPBaseOptions+Helpers.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace {
 | 
				
			||||||
 | 
					using BaseOptionsProto = ::mediapipe::tasks::core::proto::BaseOptions;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@implementation MPPBaseOptions (Helpers)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- (void)copyToProto:(BaseOptionsProto *)baseOptionsProto {
 | 
				
			||||||
 | 
					  baseOptionsProto->Clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (self.modelAssetPath) {
 | 
				
			||||||
 | 
					    baseOptionsProto->mutable_model_asset()->set_file_name(self.modelAssetPath.UTF8String);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  switch (self.delegate) {
 | 
				
			||||||
 | 
					    case MPPDelegateCPU: {
 | 
				
			||||||
 | 
					      baseOptionsProto->mutable_acceleration()->mutable_tflite();
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    case MPPDelegateGPU: {
 | 
				
			||||||
 | 
					      // TODO: Provide an implementation for GPU Delegate.
 | 
				
			||||||
 | 
					      [NSException raise:@"Invalid value for delegate" format:@"GPU Delegate is not implemented."];
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    default:
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@end
 | 
				
			||||||
							
								
								
									
										31
									
								
								mediapipe/tasks/ios/text/core/BUILD
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								mediapipe/tasks/ios/text/core/BUILD
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					# Copyright 2023 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 = "MPPTextTaskRunner",
 | 
				
			||||||
 | 
					    srcs = ["sources/MPPTextTaskRunner.mm"],
 | 
				
			||||||
 | 
					    hdrs = ["sources/MPPTextTaskRunner.h"],
 | 
				
			||||||
 | 
					    copts = [
 | 
				
			||||||
 | 
					        "-ObjC++",
 | 
				
			||||||
 | 
					        "-std=c++17",
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//mediapipe/tasks/ios/core:MPPTaskRunner",
 | 
				
			||||||
 | 
					        "//third_party/apple_frameworks:Foundation",
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										43
									
								
								mediapipe/tasks/ios/text/core/sources/MPPTextTaskRunner.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								mediapipe/tasks/ios/text/core/sources/MPPTextTaskRunner.h
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,43 @@
 | 
				
			||||||
 | 
					// Copyright 2023 The MediaPipe Authors.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// 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/MPPTaskRunner.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NS_ASSUME_NONNULL_BEGIN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * This class is used to create and call appropriate methods on the C++ Task Runner to initialize,
 | 
				
			||||||
 | 
					 * execute and terminate any MediaPipe text task.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@interface MPPTextTaskRunner : MPPTaskRunner
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Initializes a new `MPPTextTaskRunner` with the MediaPipe calculator config proto.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param graphConfig A MediaPipe calculator config proto.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @return An instance of `MPPTextTaskRunner` initialized to the given MediaPipe calculator config
 | 
				
			||||||
 | 
					 * proto.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					- (instancetype)initWithCalculatorGraphConfig:(mediapipe::CalculatorGraphConfig)graphConfig
 | 
				
			||||||
 | 
					                                        error:(NSError **)error;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- (instancetype)init NS_UNAVAILABLE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					+ (instancetype)new NS_UNAVAILABLE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NS_ASSUME_NONNULL_END
 | 
				
			||||||
							
								
								
									
										38
									
								
								mediapipe/tasks/ios/text/core/sources/MPPTextTaskRunner.mm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								mediapipe/tasks/ios/text/core/sources/MPPTextTaskRunner.mm
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,38 @@
 | 
				
			||||||
 | 
					// Copyright 2023 The MediaPipe Authors.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// 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/text/core/sources/MPPTextTaskRunner.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace {
 | 
				
			||||||
 | 
					using ::mediapipe::CalculatorGraphConfig;
 | 
				
			||||||
 | 
					}  // namespace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@implementation MPPTextTaskRunner
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- (instancetype)initWithCalculatorGraphConfig:(mediapipe::CalculatorGraphConfig)graphConfig
 | 
				
			||||||
 | 
					                              packetsCallback:
 | 
				
			||||||
 | 
					                                  (mediapipe::tasks::core::PacketsCallback)packetsCallback
 | 
				
			||||||
 | 
					                                        error:(NSError **)error {
 | 
				
			||||||
 | 
					  self = [super initWithCalculatorGraphConfig:graphConfig
 | 
				
			||||||
 | 
					                              packetsCallback:packetsCallback
 | 
				
			||||||
 | 
					                                        error:error];
 | 
				
			||||||
 | 
					  return self;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- (instancetype)initWithCalculatorGraphConfig:(CalculatorGraphConfig)graphConfig
 | 
				
			||||||
 | 
					                                        error:(NSError **)error {
 | 
				
			||||||
 | 
					  return [self initWithCalculatorGraphConfig:graphConfig packetsCallback:nullptr error:error];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@end
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user