android CAMERA 設(shè)置照片大小
最近在 REAL210 android 上調(diào)試 CAMERA 驅(qū)動。
發(fā)現(xiàn)原來的開發(fā)板只支持 640*320 以及 320*240 ,
但是用的是 OV3640 300W 的攝像頭,應(yīng)該可以拍照到 2048*1536 的分辨率的。
索性把這個 300W 打開吧。
1、看看這里是否支持 300W 的分辨率,原生 ANDROID 是支持到 500W 的。
??
2、設(shè)置 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 的選擇了。
當(dāng)選擇了 300W 拍照后 系統(tǒng)卡住不動了,通過跟蹤發(fā)現(xiàn)是?
device/samsung/proprietar/libs3cjpeg/JpegEncode.cpp?
里面的?
encode_jpg(struct s5pc110_jpg_ctx *jpg_ctx,
??struct jpg_enc_proc_param *enc_param)
這個函數(shù)里面申請的圖片 SIZE 大于允許的范圍了。
最后在?
device/samsung/proprietar/libs3cjpeg/jpeg.h
#define MAX_JPG_WIDTH ? ? ? ? ? ? ? ? ? 2048
#define MAX_JPG_HEIGHT ? ? ? ? ? ? ? ? ?1536
設(shè)置這個最大 SIZE 即可。
但是拍照的時候還是卡住了,通過跟蹤發(fā)現(xiàn)和 內(nèi)核的 JPEG 驅(qū)動有關(guān),
進(jìn)入 JPEG 驅(qū)動后發(fā)現(xiàn)允許的最大 分辨率是 800*480
把這個 SIZE 設(shè)置成 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
然后再把申請的內(nèi)存空間放大
#define ?S5PV210_VIDEO_SAMSUNG_MEMSIZE_JPEG (14336 * SZ_1K)
注意:device/samsung/proprietar/libs3cjpeg/jpeg.h里面的?
JPG_TOTAL_BUF_SIZE <?S5PV210_VIDEO_SAMSUNG_MEMSIZE_JPEG
通過以上的修改
已經(jīng)可以實(shí)現(xiàn) 300W 的拍照了
但是感覺拍出來的照片和 100W 的效果差不多
就是圖片的 SIZE 變大了。