我已經在Android 4.2.2上移植了遠程幀緩衝區接收C代碼,它以RGB565格式從主機接收幀緩衝區。能夠根據標準android示例框架/ native/services/surfaceflinger/tests/resize/resize.cpp呈現接收到的幀緩衝區。以下是使用的代碼片段如何在Android上升級和渲染遠程(RGB565)幀緩衝區?
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.在編寫應用程序時,應用程序是否可以控制它在本機上創建的表面?
我是新來的Android和這將是巨大的,如果有人能指導我正確的道路上,您目前正在使用私有API的SurfaceFlinger的,需要優先獲得處理這個問題
你需要直接與SurfaceFlinger交互嗎?與創建具有顯示接收幀的應用程序相反。就縮放比例而言,您可以通過更改窗口大小來管理這種情況,以便在合成曲面時重新縮放曲面。 – fadden
@fadden沒有必要,如果我可以使用應用程序渲染這些緩衝區。 Rright現在我不知道該怎麼做。你能給一些類似的例子應用程序提供一些鏈接嗎?順便說一句,這些緩衝區如何傳遞給應用程序來渲染? – t3rmin4tor