您好:
我使用的是DM368平台,采集的视频分辨率为704*576,通过resize转换成YUV420的数据,分辨率不变(704*576)
但是程序运行一段时间后会卡在ioctrl里,我猜是我的resize的模块的配置参数可能有问题,我的配置如下:
rsz_chan_config.oper_mode = IMP_MODE_SINGLE_SHOT;
rsz_ss_config.input.image_width = prm->in_width;
rsz_ss_config.input.image_height = prm->in_height/2;
rsz_ss_config.input.ppln = prm->in_width + 8;
rsz_ss_config.input.lpfr = prm->in_height+ 10;
rsz_ss_config.input.line_length = ((prm->in_width * 4) + 31) & ~0x1f;
//rsz_ss_config.input.clk_div.m = 10;
//rsz_ss_config.input.clk_div.n = 30;//5;//3;
rsz_ss_config.input.pix_fmt = IPIPE_UYVY;
rsz_ss_config.output1.pix_fmt = IPIPE_YUV420SP;
rsz_ss_config.output1.enable = 1;
rsz_ss_config.output1.width = prm->out_width;
rsz_ss_config.output1.height = prm->out_height;
rsz_ss_config.output2.enable = 0;
rsz_chan_config.chain = 0;
rsz_chan_config.len = sizeof(struct rsz_single_shot_config);
rsz_chan_config.config = &rsz_ss_config;
看了一些帖子可能跟clk_div的m、n两个参数有关,希望专家能给予一些配置意见。
PS:当n的配置过大时(如30)会导致视频上部出现混叠等,当配置的过小(如3)或者不配置就会随机卡在resize的ioctrl的现象,看文档n应该是觉得resize模块的执行速度的。
或者我猜的不对,希望能指点如何不让resize卡死,谢谢!
Chris Meng:
请能确认一下卡的原因是什么?是resizer DMA(15号)中断没有了么?请问你系统的DDR负荷重么?如果是D1的采集和编码,应该是很轻的。有突发的大量数据的copy么?还有检查一下RSZA_DMA的设置,不要太小。clk_div是控制缩放速度的,不能太快,太慢性能会太差,要找个平衡点。
su shell:
回复 Chris Meng:
谢谢您的回复!我没有找到15号中断的位置,还在研究,只是在AP中发送ioctrl没有返回,我正在看kernel部分的代码。系统DDR的负荷较重,4路D1,貌似在2路D1的时候不会出现问题。也就是说他们之间互相影响了?但是我目前没有办法减轻DDR的负荷,clkdiv我又试了一些配置,还没找到平衡点.再次感谢!
su shell:
回复 su shell:
另外请问找平衡点的依据是什么?我应该参考那些文档?目前没有找到这块的详细说明。期待您的回复,谢谢!!