Я транслирую видео в Android и декодирую кадры в собственном коде, а затем копирую пиксели в растровое изображение, затем отображаю растровое изображение в Java с помощью canvas.unlockandpost с циклом while для всех растровых изображений.
Все хорошо, но потоковая передача растровых изображений очень медленная и вызывает сбой. Я вижу только сообщение на logcat о том, что «недостаточно памяти, больше нет фоновых процессов».
В таблице размещения из eclipse я вижу, что созданные мной растровые изображения не удаляются из памяти, хотя я каждый раз перезаписываю пиксели. Можно ли как-нибудь почистить память, которую она хранит?
Мой код выглядит следующим образом.
C код:
AndroidBitmapInfo info;
void* pixels;
int ret;
if ((ret =AndroidBitmap_lockPixels(env, bitmap, &pixels)) < 0) {
}
memcpy(pixels, pictureRGB, 480*320);
AndroidBitmap_unlockPixels(env, bitmap);
Java-код
Bitmap mBitmap = Bitmap.createBitmap(480, 320, Bitmap.Config.RGB_565);
renderbitmap(mBitmap, 0);
canvas.drawBitmap(mBitmap, 0, 0, null);