Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32387
  • 博文数量: 6
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-19 14:14
文章分类
文章存档

2013年(7)

我的朋友

分类: 嵌入式

2013-05-19 16:10:42

原文地址:android CAMERA 设置照片大小 作者:wxmtwfx



最近在 REAL210 android 上调试 CAMERA 驱动。

发现原来的开发板只支持 640*320 以及 320*240 ,

但是用的是 OV3640 300W 的摄像头,应该可以拍照到 2048*1536 的分辨率的。

索性把这个 300W 打开吧。

1、看看这里是否支持 300W 的分辨率,原生 ANDROID 是支持到 500W 的。

packages/apps/Camera/res/values/strings.xml
5M Pixels
3M Pixels
2M Pixels
1M Pixels



640 X 480
320 X 240


2、设置 CAMERA 的最大分辨率

device/samsung/proprietar/libcamera/SecCamera.h

const struct camera_info s5k4ba_info =
{
640,   // max_preview_width
480,   // max_preview_height
2048,   // max_snapshot_width
1536,   // max_snapshot_height


完成以上两步在 CAMERA 界面就可以见到  300W 的选择了。

当选择了 300W 拍照后 系统卡住不动了,通过跟踪发现是 

device/samsung/proprietar/libs3cjpeg/JpegEncode.cpp 

里面的 

encode_jpg(struct s5pc110_jpg_ctx *jpg_ctx,
struct jpg_enc_proc_param *enc_param)
这个函数里面申请的图片 SIZE 大于允许的范围了。

最后在 



device/samsung/proprietar/libs3cjpeg/jpeg.h
#define MAX_JPG_WIDTH                   2048
#define MAX_JPG_HEIGHT                  1536


设置这个最大 SIZE 即可。


但是拍照的时候还是卡住了,通过跟踪发现和 内核的 JPEG 驱动有关,

进入 JPEG 驱动后发现允许的最大 分辨率是 800*480

把这个 SIZE 设置成 2048*1536

#ifdef CONFIG_VIDEO_JPEG_V2
static struct s3c_platform_jpeg jpeg_plat __initdata = {
.max_main_width= 2048,
.max_main_height= 1536,
.max_thumb_width= 320,
.max_thumb_height= 240,
};
#endif


然后再把申请的内存空间放大

#define  S5PV210_VIDEO_SAMSUNG_MEMSIZE_JPEG (14336 * SZ_1K)

注意:device/samsung/proprietar/libs3cjpeg/jpeg.h里面的 

JPG_TOTAL_BUF_SIZE < S5PV210_VIDEO_SAMSUNG_MEMSIZE_JPEG


通过以上的修改

已经可以实现 300W 的拍照了

但是感觉拍出来的照片和 100W 的效果差不多

就是图片的 SIZE 变大了。

阅读(3061) | 评论(0) | 转发(0) |
0

上一篇:Android Camera架构浅析

下一篇:没有了

给主人留下些什么吧!~~