Холст рисует слишком медленно - PullRequest
1 голос
/ 29 июня 2011

Я работаю над приложением, которое позволяет переходить через видеокадры (растровые изображения). Он также имеет возможность воспроизводить кадры один за другим, как будто вы на самом деле просматриваете видео, состоящее из кадров.

У меня есть один ImageView, который показывает по одному растровому изображению за раз. У меня проблема в том, что рисование изображения в ImageView (мы говорим просто вызов super.onDraw ()) занимает примерно 30 мс. Поскольку кадры должны воспроизводиться с исходной частотой, это проблема. Существуют и другие операции, которые также замедляют процесс, но рисование определенно не помогает.

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

Есть ли способ ускорить процесс рисования, чтобы рисование было быстрее?

Ответы [ 2 ]

3 голосов
/ 29 июня 2011

OpenGL ES 2.0 навязывает не мощную поддержку двух текстур, так что вы в безопасности. Если вы используете OpenGL ES 1.0 и у вас нет поддержки двух мощностей, обойти это очень легко (просто создайте достаточно двух мощностей текстуры, чтобы вместить изображение npot.)

Примечание: вы должны профилировать свое приложение, чтобы посмотреть, сможете ли вы улучшить скорость с помощью Canvas. Возможно, вы уменьшаете изображение во время рисования, возможно, оно не в совместимой конфигурации, и преобразование происходит во время выполнения (например, с 565 до 8888) и т. Д.

0 голосов
/ 29 июня 2011

Я обнаружил, что ImageView никогда не давал мне частоты кадров, которые я искал (причина, я не знаю).Для чего-то подобного вы должны переопределить SurfaceView .Это немного больше работы, но вы определенно увидите улучшение частоты кадров и у вас будет гораздо больше гибкости.Очевидно, вы захотите знать о своем клипе и знать, что, если какой-либо другой вид накладывается на этот, это также приведет к значительному замедлению (поскольку оверлей также необходимо будет перерисовывать для каждого кадра).

...