This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM8127-V3.8版本,issdrv_captureApi.c文件中的bufSwitchFull()函数请教



1.首先bufSwitchFull()的功能作用?没太真正理解。

2.我们目前在压力测试下(如间隔2秒抓拍一次,一次抓拍3帧),就会出现丢帧严重,bufSwitchFull()函数里一直打印出,

Stream ID 0:Input queue empty condition.

 Stream ID 1:Input queue empty condition.

请问这种情况是队列满了,堆不进去的原因吗?怎么能缓解这种情况呢?

还请不吝赐教,谢谢。

  • 你好 请问 你的3.8的版本从哪里下载的啊
  • 你好,

    我理解是没有可用的buffer了,原因可能是抓拍编码还没有把buffer换回队列里。你们在抓拍的时候,视频编码是否也是同时进行的?
  • 1.是的,视频编码,抓拍编码都在做。那这种属于处理不过来了,有没有优化方法?
    2.另外有个奇怪的问题,我们仅遇到过一次,视频流画面停住,视频上的时间叠加正常,其他也正常。这种现象我也模拟出来了,如何产生的。还是issdrv_captureApi.c文件,在Issdrv_IspIsifVdInt()函数里,进行 修改, 注释掉bufSwitchFull(),并且给status 赋值失败。如下
    //status = bufSwitchFull(streamId, &yaddr[streamId]);
    status = -1;
    该问题原因是bufSwitchFull不更新数据,且把以后的数据都丢掉,这样画面就会停止(即循环播放buffer里的数据帧)。问题虽然模拟出来,但是该bug,一般会是什么原因导致,如何解决呢?
  • 你好,

    系统优化问题比较复杂,我这里简单讲几点,供参考。

    1. 请问你使用的DM8127是否为频率最高等级的芯片? 如果不是,可以使用最快的DM8127。如果已经使用最快的DM8127,确认频率是否设置为spec支持的最高。

    2. 请检查DDR的参数设置是否按照你们使用的DDR来配置的,是否使用的是最严谨的时序(不是宽松的时序),来保证DDR运行最优。

    3. 请参考下面论坛里附的文档

    4. 尽量减少系统里的DDR访问,例如,buffer复制改为指针传递。

    关于视频停住的问题,请问问题出现的时候ISP的采集中断是否还正常?如果采集中断没有了,采集数据没有更新是否有会有类似的现象?

  • 谢谢啊,我们再好好看一下系统怎么优化。
    关于视频停住的问题。
    这个问题只出现一次,当时的情况也无法得知了。我们目前也没有复现过,只是模拟出类似的现象。我模拟出的情况是,不进行Bufferswitchfull处理,ISP采集正常,后续采集的数据都丢掉了,这样视频循环显示固定的几帧,就像停住了。
  • 你好,请问jpg编码过程有相关的文档吗?