在LG手机上面的IBitmap_BltIn()问题

livepanda 2008-08-18 03:42:07
大家好,我在LG VX9700上面开发一个Camera程序。在LG系列很多手机上面都有IBitmap_BltIn()造成屏幕闪烁的问题,高通的官方论坛上面有类似帖子:
http://brewforums.qualcomm.com/showthread.php?t=16157&highlight=ibitmap_bltin

这是代码片段

ICAMERA_GetFrame(pMe->m_pcamera, &pFrame);
IBITMAP_GetInfo(pFrame, &pFrameInfo, sizeof(AEEBitmapInfo));
cx = pFrameInfo.cx;
cy = pFrameInfo.cy;
IDISPLAY_BitBlt(pMe->a.m_pIDisplay, x0, y0, cx, cy, pFrame, 0, 0, AEE_RO_COPY);
IDISPLAY_GetDeviceBitmap(pMe->a.m_pIDisplay, &pIBitmap);
IBITMAP_QueryInterface(pIBitmap, AEECLSID_DIB, (void**)&pDIB);
<modify data in-place in pDIB->nBmp here based on pDIB->nDepth, pDIB->nColorScheme, etc>
IDISPLAY_Update(pMe->a.m_pIDisplay);

这段代码在模拟器上面没有任何问题,但是在LG VX8700或者VX9700上面则在IDIB的buf里面得不到数据。
造成问题的主要原因是IBitmap_BltIn()函数在设备上会把Frame直接显示到屏幕上,而且在后面的QueryInterface函数以后会发现IDIB的buf中数据为全0。
我试过很多办法,试图在IBitmap_BltIn()的时候阻止屏幕显示,但是没有成功。
我也想过用其他函数来替代IBitmap_BltIn(),但是跟Blt有关的函数都存在同样问题,包括IBitmap_BltOut和Idisplay_BitBlt。

不知道有没有人碰到同样的问题。
希望高手解答。
...全文
166 3 打赏 收藏 转发到动态 举报
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhygcy 2008-08-21
  • 打赏
  • 举报
回复
known issue, vx9800, vx9900, vx10000 都是类似的问题, 我们基本上放弃了。
找过很多这样的开发者都没有什么办法

甚至vx8800 (venus), vx8700都有类似的问题,不过那个大多数是大小没有办法控制的问题。
livepanda 2008-08-21
  • 打赏
  • 举报
回复
谢谢hhygcy的回复,心里有底了,呵呵
livepanda 2008-08-20
  • 打赏
  • 举报
回复
没有兄弟回复么?
经过再次测试,发现IBitmap_BltIn()只是当输入接口为Frame时才会如此,我试着从一个已知的bmp文件获得一个IBitmap接口,姑且叫做pIBitmap2,然后使用
IBITMAP_BltIn(pBitmap2, 0, 0, x, y, pBitmap, 0, 0, AEE_RO_COPY )
则没有发生同样问题。

731

社区成员

发帖
与我相关
我的任务
社区描述
为移动开发者提供丰富的解决方案、全面的技术下载。本版以游戏、多媒体、高效能等三个技术为核心,为开发者营造一个轻松、高效的学习交流平台。
社区管理员
  • Qualcomm开发
  • 霍大神
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告