在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。

不知道有没有人碰到同样的问题。
希望高手解答。
...全文
825 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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 )
则没有发生同样问题。
本文档为开发者提供了开发 BREW 设备平台应用程序所需的 Binary Runtime Environment for Wireless™ (BREW™) 函数和数据结构的信息。 在本参考资料中 《BREW API 参考资料》的余下部分包括以下内容: BREW API 接口 按字母顺序列出 BREW 接口和函数。 助手函数 按字母顺序详列助手函数。 数据类型 按字母顺序详列 BREW 接口使用的数据结构。 每个函数的说明均提供了以下信息: 说明 函数用法的说明。 原型 一个调用结构的示例。 参数A 需要输入和返回的对象。 返回值 从函数调用返回的项目,包括多种类型、消息、值、结构和说明。 备注 帮助理解函数的用法、限制和边界的特殊说明和附加信息。 副作用 (仅在适当情况下) 使用函数调用时函数表现的任何异常行为。 除非存在副作用,否则不显示该标题。 版本 引入此函数的版本。 另请参阅 相关函数或数据结构的交叉参考。 A 注意: 仅当参数表包含混合类型时,参数列表才显示 [in]、[in/out] 和 [out]。 如果表中都是输入参数,将省略 [in]。 BREW 继承函数 每个继承函数均链接至其基类。 以下是继承函数条目的一个示例。 IBITMAP_AddRef() 此函数继承于 IBASE_AddRef()。 详细信息 BREW 应用程序开发者可以得到相关的联机信息和支持。 请访问 BREW 网站了解详细信息: www.qualcomm.com/brew/zh/developer。 请求 BREW 的新功能 如果您在使用 BREW SDK 的过程中对它的功能有任何意见和想法, 欢迎您按如下地址给我们发送电子邮件: brew-request@qualcomm.com。 新功能反应小组将认真考虑您的每一个意见,并通过电子邮件尽快地给予您答复。 BREW™ 程序设计概念 本部分讨论以下 BREW 程序设计概念。 转至主题 学习 BREW SDK 的组件 BREW SDK 中包括的组件。 组件如何交互 如何配合使用下载 BREW SDK 后得到的各种组件和工具。 BREW SDK 目录结构 BREW SDK 中文版的组织方式。 使用小程序和模块 在 BREW 中如何使用小程序和模块编译应用程序 DLL。 还包括一些关于创建小程序和实例,处理小程序事件的主题。 BREW 开发指导原则 如何避免常见错误和缩短测试、调试和修改 BREW 源代码的时间。 创建新的应用程序 创建新 BREW 应用程序的方法。 还包括一些关于使用应用程序向导、处理特定语言资源和使用浮点运算的主题。 访问外壳服务 如何利用 IShell、IBase、IModule 和 IApplet 接口使模块和小程序可以访问外部服务。 事件处理概念 如何处理事件,包括切换事件。 在 EFS 中访问文件或 API 与桌面文件系统(例如 Windows XP)相比,如何在设备的 EFS 上运行应用程序。 监测进入的 SMS 消息 BREW 电话层如何监测进入的 SMS 消息(如 DMA 设备的 IS-637 SMS 消息)。 管理短时计时器和设备睡眠 如何处理设备睡眠模式和短时计时器。 开发屏幕保护程序 如何在 BREW 中创建屏幕保护程序,包括将应用程序注册为屏幕保护程序的过程。 扩展 BREW API 如何使用 BREW API 扩展自定义 BREW API。 从第三方应用程序调用 MobileShop。 如何向您的应用程序添加 MobileShop URL。 文件系统名称空间和 ACL 在 BREW 中如何处理文件系统名称空间和 ACL。 BREW 安全模式 BREW 如何管理设备上有问题的应用程序。 内容安全 如何确保安全处理从因特网、SMS 消息和其它外部信息源接收的消息。

975

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧