Существует ли более быстрое решение для рендеринга видео, чем использование функций AndroidBitmap_xxx?

В моем собственном потоке FFMpeg получает и декодирует кадры, а затем ставит их в очередь.

На стороне Java у меня есть GLSurfaceViewи из Renderer.onDrawFrameя вызываю собственный код, передавая растровое изображение (это растровое изображение я создаю только один раз, а затем передаю его каждый раз). время).

В нативном коде я получаю начало очереди, копирую данные в растровое изображение Java с помощью функций AndroidBitmap_xxx, а затем визуализирую это растровое изображение на стороне Java в виде текстуры.

Интересно, есть ли более быстрый способ рендеринга видео? Делать это полностью в нативном коде, если да, то почему так будет быстрее?

Изменить: Теперь я не копирую пиксели кадра RGB в заблокированные пиксели растрового изображения, а декодирую кадр YUV непосредственно в заблокированные пиксели растрового изображения. Это делает рендеринг значительно быстрее (потому что больше нет ненужного memcpy), но вопрос остается.

9
задан Alexander Kulyakhtin 24 June 2012 в 20:30
поделиться