|
19 | 19 | #elif defined TFLITE2 |
20 | 20 | #import "TensorFlowLiteC.h" |
21 | 21 | #import "metal_delegate.h" |
| 22 | +#import "coreml_delegate.h" |
22 | 23 | #else |
23 | 24 | #include "tensorflow/lite/kernels/register.h" |
24 | 25 | #include "tensorflow/lite/model.h" |
@@ -118,6 +119,7 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { |
118 | 119 | TfLiteInterpreter *interpreter = nullptr; |
119 | 120 | TfLiteModel *model = nullptr; |
120 | 121 | TfLiteDelegate *delegate = nullptr; |
| 122 | +bool isCoreMLDelegate = false; |
121 | 123 | #else |
122 | 124 | std::unique_ptr<tflite::FlatBufferModel> model; |
123 | 125 | std::unique_ptr<tflite::Interpreter> interpreter; |
@@ -160,10 +162,19 @@ static void LoadLabels(NSString* labels_path, |
160 | 162 | } |
161 | 163 | options = TfLiteInterpreterOptionsCreate(); |
162 | 164 | TfLiteInterpreterOptionsSetNumThreads(options, num_threads); |
163 | | - |
| 165 | + |
164 | 166 | bool useGpuDelegate = [args[@"useGpuDelegate"] boolValue]; |
165 | | - if (useGpuDelegate) { |
| 167 | + bool useCoreMLDelegate = [args[@"useCoreMLDelegate"] boolValue]; |
| 168 | + if (useCoreMLDelegate) { |
| 169 | + delegate = TfLiteCoreMlDelegateCreate(nullptr); |
| 170 | + if (delegate != NULL) { |
| 171 | + isCoreMLDelegate = true; |
| 172 | + } |
| 173 | + } |
| 174 | + if (delegate == NULL && useGpuDelegate) { |
166 | 175 | delegate = TFLGpuDelegateCreate(nullptr); |
| 176 | + } |
| 177 | + if (delegate != NULL) { |
167 | 178 | TfLiteInterpreterOptionsAddDelegate(options, delegate); |
168 | 179 | } |
169 | 180 | #else |
@@ -1488,8 +1499,11 @@ void runPoseNetOnFrame(NSDictionary* args, FlutterResult result) { |
1488 | 1499 | void close() { |
1489 | 1500 | #ifdef TFLITE2 |
1490 | 1501 | interpreter = nullptr; |
1491 | | - if (delegate != nullptr) |
| 1502 | + if (isCoreMLDelegate && delegate != nullptr) { |
| 1503 | + TfLiteCoreMlDelegateDelete(delegate); |
| 1504 | + } else if (delegate != nullptr) { |
1492 | 1505 | TFLGpuDelegateDelete(delegate); |
| 1506 | + } |
1493 | 1507 | delegate = nullptr; |
1494 | 1508 | #else |
1495 | 1509 | interpreter.release(); |
|
0 commit comments