Я разрабатываю приложение для Android, которое открывает видеопоток, используя класс org.opencv.android.JavaCameraView, предлагаемый библиотеками opencv, и захватывает кадры из него, чтобы обработать их прежде чем они будут показаны на экране.Как заблокировать поток до другого конца
Приложение организовано таким образом:
в главном потоке, который имеет метод OnCameraFrame, которая приобретает кадр и отправить его в потоке А, и этот метод также отвечает за отображение конечного кадр на экране. Поэтому вся обработка должна выполняться после того, как кадр был получен, и до того, как он будет показан на экране, в «середине» этого метода.
нить A, которая сохраняет кадр, полученный в буфер, BlockingLinkedQueue;
нить B, которая берет кадр из буфера и отправляет его в поток, ответственный за обработку, поток C;
нить C, которая обрабатывает рамку и отправляет ее в основной поток.
Таким образом, вопрос: как я могу блокировать метод OnCameraFrame, поэтому он не может показать любой кадр на экране, до тех пор, пока не вернулся из последнего потока (C)? Если я не реализую ничего такого типа, из-за обработки требуется немного времени, я не вижу окончательный кадр правильно на экране.
Надеюсь, я ясно объяснил свою проблему.