Android Asynctask для обработки живых видеокадров

Я использую OpenCV, чтобы попытаться сделать некоторую обработку видео в реальном времени. Так как обработка довольно тяжелая, она значительно задерживает выходные кадры, что делает живой поток нестабильным.

Я хотел бы переложить часть обработки в AsyncTask. Я попробовал это, и это на самом деле делает видео намного плавнее. Тем не менее, он заканчивает тем, что запускает большое количество задач одновременно, и затем они постепенно начнут возвращаться с некоторыми результатами.

Есть ли способ замедлить это и дождаться результата, используя операторы Synchronize или другой метод?

На каждом кадре камеры я запускаю одну из этих задач. DoImgProcessing выполняет длительную обработку и возвращает строковый результат.

private class LongOperation extends AsyncTask<Mat, Void, String> {

    @Override
    protected String doInBackground(Mat... params) {
        Mat inputFrame = params[0];
        cropToCenter(inputFrame);
        return doImgProcessing(inputFrame);
    }      

    @Override
    protected void onPostExecute(String result) {
        Log.d(TAG, "on post execute: "+result);

    }

    @Override
    protected void onPreExecute() {
        Log.d(TAG, "on pre execute");
    }
}

public Mat onCameraFrame(Mat inputFrame) {
    inputFrame.copyTo(mRgba);//this will be used for the live stream
    LongOperation op = new LongOperation();
    op.execute(inputFrame);
    return mRgba;
}

Ответы на вопрос(2)

Ваш ответ на вопрос