|
楼主 |
发表于 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”错误。 |
|