首页 > 代码库 > DM8168 DVRRDK开发总结

DM8168 DVRRDK开发总结

     在dm8168_dvrrdk开发过程中,遇到不少的问题,同时解决了不少问题,在此做一个小小的总结。
    1.系统架构
        系统架构由两部分组成,app应用程序端和link链路。


    (1)app应用程序端(arm端):
         此端也是用户端,直接操作数据层。读取数据(为整个link链路读入数据流)以及存储数据(将整个link链路处理完的数据结果通过此端进行存储)。
   (2)link链路端:
         此端为底层端。它分为M3(vpss和vedio)、DSP、linux。在链路chain的搭建过程中要注意,vpss与vedio之间有专门的通信机制,M3、DSP与linux则为核间通信。

    2.link链路创建
        每个link都具有唯一ID
        每个link都有一个或多个输入列队,同时也有一个或多个输出列队
        特定link有些特定参数。如
            notifyprelink、notifynestlik、nonotifymode等:核间通信使用。
            processlink:多用在alglink中,主要是具有特定的数据流向。processlink对数据做相应的处理完后,数据仍需返回给当前link。
            ex: ipcframeOutVedio->processLink = alglink,即alglink处理完后返回给ipcframeOutVedio。
        因此:在定义当前link时,需定义出指向上游以及下游的linkID,是承接上游的哪一个输出列队,以及自己有多少个输出列队。
        链路定义好之后,需要从上至下一一调用System_linkCreate函数创建好链路。

    3.linkstart
        每个link需要调用System_linkStart进行开启,并且调用方式是从下至上

    4.问题:
   (1)ListMP_GetHead(listMPInHndl)为NULL
    Answer:其下一个link没有调用ListMP_putTail(listMPInHndl),所以肯定为NULL。即释放机制没有达成,只需要在下一个link中调用释放机制即可。
  (2)Venc_registerCallback
    Answer:在dvrrdk4.0中,Ti_venc.c中只提供了注册回掉函数机制,但没提供消息响应机制,所以用Venc_registerCallback的同仁们请参照Ti_vcap.c中写,否则可以用Vcap_registerCallback。


DM8168 DVRRDK开发总结