找回密码
 注册
搜索
查看: 853|回复: 1

[资料] 请教 如何在程序中控制camera

[复制链接]
发表于 2008-5-19 16:02:11 | 显示全部楼层 |阅读模式
请教 如何在程序中控制camera


进入我自己的程序后,我想创建一个层(top类型的),这个层用于显示camera传过来的影象,而另一个层为基础层,显示一般内容,效果是:在我屏幕一个区域能够显示camera的信息.
 楼主| 发表于 2008-5-20 12:49:33 | 显示全部楼层

控制camera 的代码

调用EntryNewScreen后,show了我自己的屏幕。
这个时候调用dm_create_layer_using_outside_memory创建了一个DM_LAYER_TOP类型的层。层大小为80x80,起始为(0,0)。
然后初始化camera。即:
mdi_camera_init();
mdi_camera_power_on();
然后设置参数:
camera_setting_data.image_height = 80;
camera_setting_data.image_width =80;
camera_setting_data.preview_height = 80;
camera_setting_data.preview_width = 80;

最后调用:
    g_camera_cntx.last_error
        = mdi_camera_preview_start(
            *gCamera,
            0,
            0,
            80,
            80,
            GDI_LAYER_ENABLE_LAYER_0 | GDI_LAYER_ENABLE_LAYER_1
            |GDI_LAYER_ENABLE_LAYER_2 | GDI_LAYER_ENABLE_LAYER_3,
            GDI_LAYER_ENABLE_LAYER_1  ,
            TRUE,
            GDI_COLOR_TRANSPARENT,
            TRUE,
            &camera_setting_data);

这样在屏幕上的结果是:左上角80x80的位置确实为previw。但问题是下方有一块大概60x80的黑色区域。进行按键或触笔操作的话,会导致全屏为黑色,
并且在屏幕上方区域也会出现4个preview画面(2x2排列),每个高度大概只有30左右,总共高度为60左右,但这些preview的速度明显慢于指定位置的preview。


用上面的方法进行preview后,若调用  g_camera_cntx.last_error = mdi_camera_capture_to_memory(&mecobuf_ptr, &mecobuf_size);

则在该函数调用    result = media_cam_capture(stack_int_get_active_module_id(), &capture_data);时出现“除0”错误。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2025-1-22 23:50 , Processed in 0.046466 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表