拍Wallpaper Size & 160x120的回显是正常的,但拍QVGA及以上Size回显的时候黑屏,在回显界面按Option再返回显示的画面是正常的。拍下来的图片在Image View中查看也是正常的.
[SOLUTION]
该问题产生的原因是MED的Buffer设置的不够大,导致在Capture的时候分配1.02MB左右,然后在回显时在
gdi_image_hwjpg_v2.c中申请Memory申请不到,从而JPEG Decode失败导致显示黑屏。可以按以下方法修改:
File: mcu\media\common\include\med_mem.h
#define MED_EXT_MEM_SIZE sizeof(med_ext_mem_union)
修改为
#define MED_EXT_MEM_SIZE (sizeof(med_ext_mem_union) + 20*1024)
在函数gdi_image_hwjpeg_v2_draw_internal()中做如下修改:
jpegDecQueryFileBuffer(
g_hwjpeg_v2_decoder_hdl,
&readBufferSizeBest,
&readBufferSizeMinimum,
&fsalCacheSizeBest,
&fsalCacheSizeMinimum);
GDI_TRACE(GDI_TRC_DECODE, GDI_JPG_ENTER, readBufferSizeBest, readBufferSizeBest,
readBufferSizeBest, readBufferSizeBest, readBufferSizeBest, readBufferSizeBest, readBufferSizeBest);
//添加以下代码
flag |= GDI_IMAGE_CODEC_FLAG_USE_LESS_BUF;
//添加以上代码
if (flag & GDI_IMAGE_CODEC_FLAG_USE_LESS_BUF)
{
readBufferSizeBest = readBufferSizeMinimum;
}
[SOLUTION]
该问题产生的原因是MED的Buffer设置的不够大,导致在Capture的时候分配1.02MB左右,然后在回显时在
gdi_image_hwjpg_v2.c中申请Memory申请不到,从而JPEG Decode失败导致显示黑屏。可以按以下方法修改:
File: mcu\media\common\include\med_mem.h
#define MED_EXT_MEM_SIZE sizeof(med_ext_mem_union)
修改为
#define MED_EXT_MEM_SIZE (sizeof(med_ext_mem_union) + 20*1024)
在函数gdi_image_hwjpeg_v2_draw_internal()中做如下修改:
jpegDecQueryFileBuffer(
g_hwjpeg_v2_decoder_hdl,
&readBufferSizeBest,
&readBufferSizeMinimum,
&fsalCacheSizeBest,
&fsalCacheSizeMinimum);
GDI_TRACE(GDI_TRC_DECODE, GDI_JPG_ENTER, readBufferSizeBest, readBufferSizeBest,
readBufferSizeBest, readBufferSizeBest, readBufferSizeBest, readBufferSizeBest, readBufferSizeBest);
//添加以下代码
flag |= GDI_IMAGE_CODEC_FLAG_USE_LESS_BUF;
//添加以上代码
if (flag & GDI_IMAGE_CODEC_FLAG_USE_LESS_BUF)
{
readBufferSizeBest = readBufferSizeMinimum;
}