我在 Android 4.2.2 上移植了远程帧缓冲区接收 C 代码,它以 RGB565 格式从主机接收帧缓冲区。能够按照标准 android 示例 frameworks/native/services/surfaceflinger/tests/resize/resize.cpp 渲染接收到的帧缓冲区。以下是使用的代码片段
sp<Surface> surface = client->createSurface(String8("resize"),
800, 480, PIXEL_FORMAT_RGB_565, 0);
SurfaceComposerClient::openGlobalTransaction();
surface->setLayer(100000);
SurfaceComposerClient::closeGlobalTransaction();
Surface::SurfaceInfo info;
surface->lock(&info);
ssize_t bpr = info.s * bytesPerPixel(info.format);
/* rfb is the remote famebuffer filled by C stack*/
memcpy((uint16_t*)info.bits, rfb, 800*480*2);
surface->unlockAndPost();
但我无法升级接收到的缓冲区以在 android 上呈现全屏。例如:- 主机发送 800*480 但 android 设备屏幕为 1024*786 也有以下疑问,
1. 在本机中创建表面是否是处理此类问题的正确方法?
2. 如何在 Android 原生上做高档的原始图像和渲染?
3. 在写app的时候,app是否可以控制这个在native上创建的surface?
我是 android 新手,如果有人能引导我走上正确的道路来处理这个问题,那就太好了