Mediapipe: как правильно разложить c MPPGraph - PullRequest
1 голос
/ 08 мая 2020

Мне непонятно, как правильно остановить и освободить MPPGraph. Я создал фреймворк, очень похожий на этот . Это исключение генерируется каждый раз, когда каким-либо образом вызывается deallo c. Thread 1: Exception: "waitUntilDoneWithError: should not be called on the main thread".

Я не знаю, как не вызывать это в основном потоке, и надеялся, что кто-то знает об этом.

Здесь вы можете найти быстрый код, вызывающий платформу mediapipe. Этот пример был создан с помощью фреймворка, который можно найти здесь .

1 Ответ

1 голос
/ 26 мая 2020

Для тех, у кого возникла такая же проблема. Это было рассмотрено здесь , и было предложено решение.

Изменить: этот последний бит может быть неправильным, но я использовал deallo c таким образом:

- (void)dealloc {
  self.mediapipeGraph.delegate = nil;
  [self.mediapipeGraph cancel];
  // Ignore errors since we're cleaning up.
  [self.mediapipeGraph closeAllInputStreamsWithError:nil];
  dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    [self.mediapipeGraph waitUntilDoneWithError:nil];
  });
}
...