JpegEncoder.create() Error

平台:s5pc110

系统:android2.3.4

一,错误信息:

V/SecCamera(68): int android::fimc_v4l2_streamoff(int) :

E/JpegEncoder(68): bool android::JpegEncoder::create()xu_bin :

E/JpegEncoder(68): xu_bin test JPG_TOTAL_BUF_SIZE = 0x918000

E/JpegEncoder(68): Failed to mmap

E/SecCamera(68): JpegEncoder.create() Error

E/CameraHardwareSec(68): ERR(int android::CameraHardwareSec::pictureThread()):Fail on SecCamera->getSnapshotAndJpeg()

二,问题分析:

1,mmap失败原因,就是所分配的内存太小,找到内存分配的地方,一般都在make menuconfig中分配的如下:

(1),位置

JpegEncoder.create() Error

(2),设定,我们JPEG分配的大小为40960KB

JpegEncoder.create() Error

2,看上面的情况,应该有足够的空间来分配的,我们在上面打印信息中可以看到需求的空间

E/JpegEncoder(68): xu_bin test JPG_TOTAL_BUF_SIZE =0x918000(大小为9.09M)

我们分配了40M的内存

3,最后对比代码时发现一个问题,一般内存在make menuconfig中分配,可是这个BSP有点不一样,他在mach-smdkc110中设定,如下:

//#defineS5PV210_VIDEO_SAMSUNG_MEMSIZE_JPEG(8192*SZ_1K)//原来大小小于9M,所以不行

#defineS5PV210_VIDEO_SAMSUNG_MEMSIZE_JPEG(10240*SZ_1K)//更改后在的大小 。


4,再看下mach-t34h.c中对JPEG内存大小设定为:

#ifdefCONFIG_VIDEO_SAMSUNG_MEMSIZE_JPEG

{

.id=S5P_MDEV_JPEG,

.name="jpeg",

.bank=0,

.memsize=CONFIG_VIDEO_SAMSUNG_MEMSIZE_JPEG*SZ_1K,

.paddr=0,

},

#endif

上面红色的为内存大小的宏,这个宏在autoconf.h中实现,对应用就是make menuconfig中的设定。



以上为工作中遇到的问题,希望对遇到相同问题的朋友有所帮助!