我正在開發一個android應用程序,它使用opencv庫提供的類org.opencv.android.JavaCameraView打開視頻流,並從中捕獲幀,以便處理它們然後才顯示在屏幕上。如何阻止線程直到另一端
中的應用以這種方式組織:
一個主線程,其具有OnCameraFrame方法,其取得幀,並將其發送給線程A,並且該方法還負責顯示最終在屏幕上的幀。所以所有的處理都應該在獲取幀之後執行,並且在它顯示在屏幕上之前,在這個方法的「中間」。
線程A,它將獲取的幀保存到一個緩衝區中,一個BlockingLinkedQueue;
線程B,它從緩衝區中取一個幀,並將它發送給負責處理的線程,線程C;
處理該幀的線程C,並將其發送給主線程。
所以,問題是:我怎麼能阻斷方法OnCameraFrame,所以它不能在屏幕上顯示的任意幀,直到它已經從最後一個線程(C)返回?如果我沒有實現這種類型的任何東西,由於處理需要一些時間,我沒有在屏幕上正確地看到最終的幀。
我希望我已經清楚地解釋我的問題。