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.

关于DM8168 HDVPSS,知道点进来聊聊!

Other Parts Discussed in Thread: TVP5158

大家好,最近在做一些dm8168的视频采集驱动,

自己的设计板子,不是开发板的解码器,在需要配置VPORT的涉及很多HDVPSS的东西,

感觉很复杂,知道怎么用的进来聊几句啊!

  • 最好有一些具体的问题。不怕多,一个一个解决。

  • Haijun

    你好:

    关于hdvpss,有很多疑问,最近比较想了解的有

    1)hdvpss貌似提供了一些接口API用来配置DM816x的寄存器,

         但是又把各种板卡类型至于其中,甚至连视频解码芯片驱动都放在里边了,

         感觉限制非常大,用户要怎么根据自己的板卡使用这些东西,如果是增加新的芯片驱动,

        会涉及很多更改,遇到这种情况,用户该怎么开放呢?

    2)hdvpss 编译出来的文件到底是什么东西,怎么在应用程序中怎么使用呢?

         应为在Makefile没有看到,或许有,但是没有找到,makefile里确实有编译hdvpss的,但是应为不清楚

        软件架构,不明白编译hdvpss有什么用?

    3)看了下dvr_rdk\mcfw\src_bios6\links_m3vpss代码,好像也是使用hdvpss 接口(FVID2_)

          是不是说这部分就是在hdvpss运行的驱动呢?

          用户如果对Vport配置需要修改,只需要修改这部分代码,而无需去更改

          ti_tools\hdvpss\hdvpss_01_00_01_37_patched\packages下的代码呢?

    4)关于dvr_rdk\mcfw\src_bios6\links_m3vpss编译后出来的是什么文件呢,

         最后也是通过fw_load.out加载么?

    5)dvr_rdk_fw_m3vpss.xem3 是怎么生成的呢,里面大体实现了一些什么功能?

    6)基于hdvpss 接口(FVID2_)编写的代码怎么调试呢?

    best regards

    xavier

  • 关于问题1这里有历史的原因在里面,最早的时候AD的驱动都是在M3上执行的就是你现在在hdvpss驱动中看到的AD的驱动,这样架构的问题就是修改需要了解M3的代码,对于大家来说难度增加了.为了解决这个问题DVR RDK后续将AD的驱动移到A8,这样就可以不需要了解M3就可以进行开发了,对于capturelink可以直接定义相应的格式,保证与AD接口对等即可.

  • 能不能介绍下hdvpss编译方便的东西,看不太懂,

    到底生成了写什么东西,怎么放入firm文件中的使用的?

  • 关于问题1,Dong Feng已经解释了,下面是我对其他问题的理解:

    2)hdvpss 编译出来的文件到底是什么东西,怎么在应用程序中怎么使用呢?

        应为在Makefile没有看到,或许有,但是没有找到,makefile里确实有编译hdvpss的,但是应为不清楚

       软件架构,不明白编译hdvpss有什么用?

    [Haijun Guo] HDVPSS是视频处理子系统(Video Process Sub-System),针对芯片中集成的VPSS硬件协处理器,编译出来的是VPSS的驱动库,供RDK层调用其接口以实现视频数据在VPSS协处理器中的处理,比如采集、缩放

    、显示。所以可以理解为RDK和硬件协处理器之间的驱动层。

    3)看了下dvr_rdk\mcfw\src_bios6\links_m3vpss代码,好像也是使用hdvpss 接口(FVID2_)

         是不是说这部分就是在hdvpss运行的驱动呢?

    [Haijun Guo] 可以这么理解,调用了FVID2接口的部分就是在HDVPSS运行的。

         用户如果对Vport配置需要修改,只需要修改这部分代码,而无需去更改

         ti_tools\hdvpss\hdvpss_01_00_01_37_patched\packages下的代码呢?

    [Haijun Guo] 不建议客户自己修改hdvpss目录下的任何文件,可以向TI技术支持提出你们具体的需求,大部分应该可以通过RDK配置实现。如果是HDVPSS驱动中还不支持的功能,TI会在后续版本中添加。

    4)关于dvr_rdk\mcfw\src_bios6\links_m3vpss编译后出来的是什么文件呢,

        最后也是通过fw_load.out加载么?

    [Haijun Guo] 编译出来的是在HDVPSS媒体控制器(m3)中运行的firmware,是通过fw_load.out加载的,可以看load.sh脚本获得更详细信息。

    5)dvr_rdk_fw_m3vpss.xem3 是怎么生成的呢,里面大体实现了一些什么功能?

    [Haijun Guo] 里面主要包含了RDK中vpss link 层的代码以及HDVPSS驱动,在RDK中可以看到在links_m3vpss目录下的功能都是在这里实现的。

    6)基于hdvpss 接口(FVID2_)编写的代码怎么调试呢?

    [Haijun Guo] Rules.make里面把dvr_rdk_fw_m3vpss.xem3编译成debug模式,通过仿真器可以调试。

  • haijun:你好

    我想用ADV7181采集视频(输入XGA 60Hz 1024x768,输出YUV422P,离散同步,8bit输入),

    在CapLink_drv.c 里我改了 CaptureLink_drvCreateInst function,

        .....

       if (pInstPrm->videoDecoderId == FVID2_VPS_VID_DEC_TVP5158_DRV)

       {

            .......

       }

       else if(pInstPrm->videoDecoderId == FVID2_VPS_VID_DEC_ADV7181_DRV)

       {

           inScanFormat = FVID2_SF_PROGRESSIVE;

           pInst->maxWidth = 1024;

           pInst->maxHeight = 768;

           inWidth = pInst->maxWidth;

           inHeight = pInst->maxHeight;

           pVipCreateArgs->videoCaptureMode =

           VPS_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_DISCRETE_SYNC_ACTVID_VSYNC;

           pVipCreateArgs->videoIfMode = VPS_CAPT_VIDEO_IF_MODE_8BIT;

           pVipCreateArgs->numCh = 1;

       }

    但是最后好像除了r,g,b 颜色正确,其他都不对

    我仔细看了下 Multich_vcap_vdis.c,下对ADV7181的配置

    //adv 7181

       vipInstId            = 0;

       pCaptureInstPrm        = &capturePrm.vipInst[vipInstId];

       pCaptureInstPrm->vipInstId        = SYSTEM_CAPTURE_INST_VIP0_PORTA;

       //pCaptureInstPrm->vipInstId        = SYSTEM_CAPTURE_INST_VIP1_PORTA;

       pCaptureInstPrm->videoDecoderId = SYSTEM_DEVICE_VID_DEC_ADV7181_DRV;

       pCaptureInstPrm->inDataFormat    = SYSTEM_DF_YUV422P;

       pCaptureInstPrm->standard        = SYSTEM_STD_XGA_60;

       pCaptureInstPrm->numOutput    = 1;

       pCaptureOutPrm                = &pCaptureInstPrm->outParams[0];

       pCaptureOutPrm->dataFormat    = SYSTEM_DF_YUV422I_YUYV;

       pCaptureOutPrm->scEnable        = FALSE;

       pCaptureOutPrm->scOutWidth    = 0;

       pCaptureOutPrm->scOutHeight    = 0;

       pCaptureOutPrm->outQueId        = 0;

       Vcap_configVideoDecoder(vidDecVideoModeArgs, 1);

    貌似 pCaptureOutPrm->dataFormat    = SYSTEM_DF_YUV422I_YUYV;不是很合适啊

    但是改成其他任何的都会导致CaptureLink_drvCreateInst函数

    pInst->captureVipHandle = FVID2_create(FVID2_VPS_CAPT_VIP_DRV,

                                              pInst->instId,

                                              pVipCreateArgs,

                                              &pInst->createStatus, &pInst->cbPrm);

    返回NULL,那该怎么配置呢?

    best regards

    xavier

  • 在HDVPSS_UserGuide.pdf中的UserGuideHdvpssCaptureDriver章节中,有张表格列出了VIP采集口所支持的输入输出格式,请参考文档,确认自己配置的格式是驱动支持的。

  • 我对着文档看过,选了几种支持的都不行!

  • 首先要确定video decoder的配置是正确的,还有硬件连接。

  • FVID2的全称是什么

  • 很详细,谢谢