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.

dvr_rdk中使用SCD没有返回结果



TI的专家你好:

我用的是dvr_rdk 3.0,现在想要实现动态监测的功能,link是按照文档中来做的,只是因为想要同时显示先接了一个dup,SCD方向的LINK如下:

capture--》 dup --》sclr--》nsf--》IPC Frame out m3--》IPC Frame in dps --》alg --》 ipc bits out dsp --》 ipc bits in a8

capture采集到的视频是1080P的 在sclrLink中转换成了352 * 288

alglink的配置如下:

    algPrm.enableOSDAlg = FALSE;
    algPrm.enableSCDAlg = TRUE;
    algPrm.inQueParams.prevLinkId = dspinId;
    algPrm.inQueParams.prevLinkQueId = 0;
    algPrm.outQueParams[ALG_LINK_SCD_OUT_QUE].nextLink = ipcBitsOutDspId;
    algPrm.scdCreateParams.maxWidth = 352;
    algPrm.scdCreateParams.maxHeight = 288;
    algPrm.scdCreateParams.maxStride = 352;
    algPrm.scdCreateParams.numValidChForSCD = 1;
    algPrm.scdCreateParams.numSecs2WaitB4Init = 3;
    algPrm.scdCreateParams.numSecs2WaitB4FrmAlert = 1;
    algPrm.scdCreateParams.inputFrameRate = 60; 
    algPrm.scdCreateParams.outputFrameRate = 5;

    int numHorzBlks, numVertBlks, numBlksInFrame;
    numHorzBlks     = algPrm.scdCreateParams.maxWidth / 32; 
    numVertBlks     = algPrm.scdCreateParams.maxHeight / 12; 
    numBlksInFrame  = numHorzBlks * numVertBlks;

    for(i = 0;i < ALG_LINK_SCD_MAX_CH;i++){
        algPrm.scdCreateParams.chDefaultParams[i].chId = i;
        algPrm.scdCreateParams.chDefaultParams[i].mode = ALG_LINK_SCD_DETECTMODE_MONITOR_BLOCKS_AND_FRAME;
        algPrm.scdCreateParams.chDefaultParams[i].frmIgnoreLightsON = FALSE;
        algPrm.scdCreateParams.chDefaultParams[i].frmIgnoreLightsOFF = FALSE;
        algPrm.scdCreateParams.chDefaultParams[i].frmSensitivity = ALG_LINK_SCD_SENSITIVITY_HIGH;
        algPrm.scdCreateParams.chDefaultParams[i].frmEdgeThreshold = 100;
        algPrm.scdCreateParams.chDefaultParams[i].blkNumBlksInFrame = numBlksInFrame;
        int j;
        for(j = 0;j < numBlksInFrame/*ALG_LINK_SCD_MAX_BLOCKS_IN_FRAME*/;j++){
            algPrm.scdCreateParams.chDefaultParams[i].blkConfig[j].sensitivity = ALG_LINK_SCD_SENSITIVITY_HIGH;//ALG_LINK_SCD_SENSITIVITY_MAX;
            algPrm.scdCreateParams.chDefaultParams[i].blkConfig[j].monitored = TRUE;
        }
    }
    algPrm.scdCreateParams.numBufPerCh = 0;
    algPrm.scdCreateParams.enableMotionNotify = TRUE;
    algPrm.scdCreateParams.enableTamperNotify = TRUE;

link可以正常运行,但是不能正常进行检测,不管在摄像机前怎么做动作,都没有任何反应。

我查资料看到SCD是调用DMVAL库实现的,就在源码中直接打印DMVAL库的返回参数pDmvaHndl->output,其中的numObjects一直是0,但是modeResult参数的返回是正常的,不知道是我那里配置有错误,希望给解答一下。

  • 看DMVAL的创建代码 即mcfw/src_bios6/links_c6xdsp/alg_link/scd/scdLink_alg.c文件内的 Int32 AlgLink_ScdVACreate(AlgLink_ScdObj * pObj)函数内

    创建的DMVAL实例只实现了检测镜头被遮盖的功能,尝试修改传入参数实现DMVAL介绍文档中的其他功能,创建就会失败

    问一下是不是在DVR_RDK 3.0内SCD只能实现检测镜头被遮盖的功能呢?并没有实现移动检测的功能?

    请问是什么原因,如果想要做移动检测的功能,应该怎么样去做?

  • 请问一下大神,你这个问题解决没,现在我也碰到和你一样的问题,能不能知道一下,谢谢,我的qq85639973

  • 你好,大神,请问一下你的问题解决没,现在我也碰到和你一样的问题,能不能指点一下,谢谢你,我的qq85639973