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.

[参考译文] Linux:通过 DM388中的 HDCOMP OUT 实现捕获和显示

Guru**** 2925110 points

Other Parts Discussed in Thread: TVP7002, DM388

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/657090/linux-capture-display-through-hdcomp-out-in-dm388

主题中讨论的其他器件:TVP7002DM388

尊敬的 TI 专家:

我在定制 的 DM388 平台中。

我的简单用例是使用 HDDAC 的捕捉+显示(S 视频)输出。

那么、我的用例

   /*初始化 Capture Link 参数*/
   CaptureLink_CreateParams_Init (&capturePrm);
   CapturePrm.numVipInst = 1;
   CapturePrm.outQueParams[0].nextLink = gVdisModuleContext.displayId[VDIS_DEV_HDMI];
   CapturePrm.tilerEnable             = false;

   pCaptureInstPrm                    =&capturePrm.vipInst[0];
   pCaptureInstPrm->vipInstId         = system_capture_INST_VIP0_Porta;
   pCaptureInstPrm->videoDecoderId    = system_device_VID_DEC_TVP7002_DRV;
   pCaptureInstPrm->inDataFormat      = SYSTEM_DF_YUV422P;
   pCaptureInstPrm->标准          = SYSTEM_STD_1080p_60;
   pCaptureInstPrm->numOutput         = 1;

   pCaptureOutPrm                     =&pCaptureInstPrm->outParams[0];
   pCaptureOutPrm->dataFormat         = system_DF_YUV420SP_UV;
   pCaptureOutPrm->scEnable           = false;
   pCaptureOutPrm->outQueId           = 0;

   /*初始化显示链接参数*/
   MULTICH_INIT_STRUCT (DisplayLink_CreateParams、displayPrm);
   displayPrm.inQueParams[0].prevLinkId = gVcapModuleContext.captureId;
   displayPrm.inQueParams[0].prevLinkQueId = 0;
   displayPrm.displayRes = system_std_480i;
   displayPrm.displayId = display_link_display_BP0;

   /*创建链接*/
   /*创建捕获链接。*/
   System_linkCreate (gVcapModuleContext.captureId、&capturePrm、sizeof (capturePrm));
   /*创建显示链接。*/
   System_linkCreate (gVdisModuleContext.displayId[VDIS_DEV_HDMI]、&displayPrm、sizeof (displayPrm));

   ADV723输入必须采用相同的视频格式、隔行 PAL 或 NTSC

   那么、需要将它配置为 HDCOMP 的格式

   HDMI 与 HDCOMP 混合。


   此致、

   Rajesh Kannan S

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为什么使用 HDDAC? 您可以为 SVideo 输出使用 SDDAC。 HDDAC 未针对视频输出进行测试。

    Rgds、
    Brijesh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brijesh、

    感谢您的回复。

    我们使用的是连接到 DM388中的 HDCOMP 的 ADV723编码器。

    是否有其它方法可以使用 HDDAC 进行测试?

    此致、

    Rajesh Kannan S

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Brijesh、

    IPNC RDK 3.9.1是否支持使用 HDDAC 提供 S 视频输出???

    如果是、需要提供哪些支持。

    请建议我。

    此致、

    Rajesh Kannan S
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回答。

     在 IPNC RDK 3.9.1中使用 HDDAC 是否支持 S-Video (NTSC\PAL)输出 ?

    我相信 SDDAC 上不支持 DM388 S 视频、是这样吗?

    我们需要 S 视频输出来支持 NTSC\PAL、因此我们要将 HDDAC 输出连接 到定制板上的 NTSC\PAL 编码器 ADV723。

    --纳拉辛哈

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从不验证 HDCOMP 的 SVideo 输出、我甚至不确定是否支持该输出。 我建议对该输出使用 SDVENC。

    Regads、
    Brijesh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Brijesh、

    感谢您的建议、

    我们如何使用 SDVENC (复合)引脚 TV_OUT0来实现 s-video (y/c)?

    此致、
    Raj M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请检查 TRM、如果此引脚上的 SDVENC 输出、则可以。 否则不会。

    此致、
    Brijesh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否可以通过 HD-DAC 支持480i 和/或576i RGB 格式输出?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Brijesh、

    您之前说过、论坛组件输出在 HDCOMP 上进行了测试。

    测试的显示分辨率是多少?

    TI 是否在 HDCOMP 上测试了组件输出(NTSC、PAL)?

    此致、
    Raj M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Raj、

    我想一些 VESA 和1080p/720p 分辨率是在 HDCOMP 输出中测试的。
    但据我所记得、不是 NTSC/PAL。 NTSC/PAL 输出需要特定的信号电平、并且需要基于 NTSC/PAL 标准。 我不确定 HDCOMP 是否能够生成精确的 NTSC/PAL 信号。

    此致、
    Brijesh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Brijesh、

    感谢您的澄清。

    我已成功在 HDCOMP 输出上测试 SYSTEM_STD_480i 分辨率。

    480i 分量输出是否可以转换为 s 视频输出(使用外部视频转换器进行转换)?

    它的视频显示屏是否支持480i 或仅 NTSC/PAL?

    NTSC 和480i 有何区别?

    此致、
    Raj M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Raj、


    请检查 NTSC 规格以了解 NTSC 和480i 之间的差异。
    请检查 DM388的 TRM 以查看 HDCOMP 是否支持 SVideo 输出。

    此致、
    Brijesh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    是否可以在 HDCOMP 上输出隔行格式?

    此致、
    Raj M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我认为1080i 已在 HDCOMP 上进行测试。 您看到了任何问题吗?

    Rgds、
    Brijesh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    当我测试480i FVID2_setFormat()失败时。

    我添加了以下代码
    pObj->createArgs.displayRes == vsys_STD_480i)
    IPNC_RDK/IPNC_mcfw/mcfw/src_bios6/links_m3vpss/display/DisplayLink_drv.c

    if (pObj->createArgs.displayRes == vsys_STD_1080i_60
    ||
    pObj->createArgs.displayRes =vsys_STD_NTSC
    ||
    pObj->createArgs.displayRes =vsys_STD_PAL
    ||
    pObj->createArgs.displayRes == vsys_STD_480i)

    int i;

    pFormat->scanFormat = FVID2_SF_Interlased;
    pFormat->fieldMerged[0]= true;
    IF (DisplayLink_drvIsSDDef (pObj))

    对于(i = 0;i < pObj->createArgs.numInputQueues;i++)

    if (pObj->fieldInput[i]=true)

    pFormat->fieldMerged[0]= false;


    IF (DisplayLink_drvDoInputPitchDoubling (pObj))

    pFormat->pitch[0]*= 2;
    pFormat->pitch[1]*= 2;
    pFormat->pitch[2]*= 2;




    此致、
    Rajm
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我尝试在 HDCOMP 上创建1080i。 但是在创建显示链接时,FVID2_setFormat()失败了?

    此致、
    Rajm
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brijesh、

     480i 和576i RGB 输出是否可以通过 HDCOMP 实现? 我正在使用 IPNC RDK 3.9.1。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Narsimha、

    它应该是、不知道或不记得是否经过测试。 请尝试一下。

    Rgds、

    Brijesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brijesh、

    我在 HDCOMP 上尝试了480i 输出、但 在显示屏上得到了480p 输出

    我看到 以下签入显示链接。  仅对于1080i、NTSC、PAL 扫描格式设置 为隔行。 这可能是我即使在显示链接中选择480i 也能获得渐进输出的原因。

    您对我应该尝试获得480i 输出的内容有什么建议吗?

    文件:IPNC_RDK/IPNC_mcfw/mcfw/src_bios6/links_m3vpss/display/DisplayLink_drv.c

     

    DisplayLink_drvDisplayCreate(){


     

       if (pObj->createArgs.displayRes == vsys_STD_1080i_60

           ||

           pObj->createArgs.displayRes =vsys_STD_NTSC

           ||

           pObj->createArgs.displayRes == vsys_STD_PAL)

       {

           int i;

     

           pFormat->scanFormat = FVID2_SF_Interlased;

           pFormat->fieldMerged[0]= true;

           IF (DisplayLink_drvIsSDDef (pObj))

           {

               对于(i = 0;i < pObj->createArgs.numInputQueues;i++)

               {

                   /*如果我们要获取场输入,我们应该这样做

                    *不在驱动程序中启用字段合并模式

                    因为我们需要无缝切换

                    *一个输入队列到另一个输入队列并进行更改

                    *上不支持域合并模式

                    *运行时。

                    *

                   if (pObj->fieldInput[i]=true)

                   {

                       pFormat->fieldMerged[0]= false;

                   }

               }

               IF (DisplayLink_drvDoInputPitchDoubling (pObj))

               {

                   pFormat->pitch[0]*= 2;

                   pFormat->pitch[1]*= 2;

                   pFormat->pitch[2]*= 2;

               }

           }

       }




    请在下面找到我的显示树和用例详细信息:

     

    1.显示树

     

    VPS_DcConfig gSystem_dctrlTriDisplayConfig ={

       VPS_DC_USERSETTINGS、

       {

           {VPS_DC_BP0_INPUT_PATH、VPS_DC_VCOMP_MUX}、

           {VPS_DC_VCOMP_MUX、VPS_DC_VCOMP}、

           {VPS_DC_CIG_NON_CLUSED_OUTPUT、VPS_DC_HDMI_blend}、

     

           {VPS_DC_BP1_INPUT_PATH、VPS_DC_HDCOMP_MUX}、

           {VPS_DC_HDCOMP_MUX、VPS_DC_CIG_PIP_INPUT}、

           {VPS_DC_CIG_PIP_OUTPUT、VPS_DC_DVO2_BLET}、

     

           {VPS_DC_CIG_PIP_OUTPUT、VPS_DC_HDCOMP_BLET}、

     

           {VPS_DC_MAIN_INPUT_PATH、VPS_DC_VCOMP}、

           {VPS_DC_AUX_INPUT_PATH、VPS_DC_HDCOMP_MUX}

       }、

     

       9U、

       /* VENC 信息*/

       {

        /*模式信息*/

        {

         {VPS_DC_VENC_HDMI、{FVID2_STD_1080p_60}

          }、                                                   // 1080p30是模式

                                                               *被覆盖

                                                               *稍后

                                                               * System_displayCtrlInit

                                                               *

         {VPS_DC_VENC_DVO2、{FVID2_STD_1080p_60}

         }、                                                  // 1080p30是模式

                                                               *被覆盖

                                                               *稍后

                                                               * System_displayCtrlInit

                                                               *

        }、

        

         (VPS_DC_VENC_DVO2 | VPS_DC_VENC_HDCOMP)、      //绑定的 VENC 位掩码

        2U

       }

     

     

    2.用例(管道)

     

       gVcapModuleContext.captureId               = system_link_ID_capture;

       gVdisModuleContext.displayId[VDIS_DEV_HDCOMP]= SYSTEM_LINK_ID_DISPLAY_0;

     

       /*初始化 Capture Link 参数*/

       CaptureLink_CreateParams_Init (&capturePrm);

       CapturePrm.numVipInst = 1;

     

       pCaptureInstPrm                    =&capturePrm.vipInst[0];

       pCaptureInstPrm->vipInstId         = system_capture_INST_VIP0_Porta;

       pCaptureInstPrm->videoDecoderId    = system_device_VID_DEC_TVP7002_DRV;

       pCaptureInstPrm->inDataFormat      = system_DF_RGB24_888;//system_DF_YUV422P;

       pCaptureInstPrm->标准          = SYSTEM_STD_1080p_60;

       pCaptureInstPrm->numOutput         = 1;

     

       pCaptureOutPrm                     =&pCaptureInstPrm->outParams[0];

       pCaptureOutPrm->dataFormat         = system_DF_YUV422I_YUYV;

       pCaptureOutPrm->scEnable           = false;

       pCaptureOutPrm->outQueId           = 0;

       CapturePrm.outQueParams[0].nextLink = gVdisModuleContext.displayId[VDIS_DEV_HDCOMP];

       CapturePrm.tilerEnable             = false;

     

       /*初始化显示链接参数*/

       MULTICH_INIT_STRUCT (DisplayLink_CreateParams、displayPrm);

       displayPrm.inQueParams[0].prevLinkId = gVcapModuleContext.captureId;

       displayPrm.inQueParams[0].prevLinkQueId = 0;

       displayPrm.displayRes = system_std_480i;

       displayPrm.displayId = display_link_display_BP1;

    谢谢、

    Narasimha

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Brijesh、

    当我测试480i 时、我将从 HDCOMP 在显示屏上获得480p 输出。

    我看到下面的内容、请查看 DisplayLink。 对于1080i、NTSC 和 PAL、scanformat 设置为隔行。

    这是否意味着隔行输出仅限于1080i、NTSC 和 PAL? 是否有关于如何获得480i 输出的建议?

    我正在使用 BP1路径。

    IPNC_RDK/IPNC_mcfw/mcfw/src_bios6/links_m3vpss/display/DisplayLink_drv.c

    if (pObj->createArgs.displayRes == vsys_STD_1080i_60
    ||
    pObj->createArgs.displayRes =vsys_STD_NTSC
    ||
    pObj->createArgs.displayRes == vsys_STD_PAL)

    int i;

    pFormat->scanFormat = FVID2_SF_Interlased;
    pFormat->fieldMerged[0]= true;
    IF (DisplayLink_drvIsSDDef (pObj))

    对于(i = 0;i < pObj->createArgs.numInputQueues;i++)

    /*如果我们要获取场输入,我们应该这样做
    *不在驱动程序中启用字段合并模式
    因为我们需要无缝切换
    *一个输入队列到另一个输入队列并进行更改
    *上不支持域合并模式
    *运行时。
    *
    if (pObj->fieldInput[i]=true)

    pFormat->fieldMerged[0]= false;


    IF (DisplayLink_drvDoInputPitchDoubling (pObj))

    pFormat->pitch[0]*= 2;
    pFormat->pitch[1]*= 2;
    pFormat->pitch[2]*= 2;





    我的显示树和用例详细信息如下:

    1.显示树

    VPS_DcConfig gSystem_dctrlTriDisplayConfig ={
    VPS_DC_USERSETTINGS、

    {VPS_DC_BP0_INPUT_PATH、VPS_DC_VCOMP_MUX}、
    {VPS_DC_VCOMP_MUX、VPS_DC_VCOMP}、
    {VPS_DC_CIG_NON_CLUSED_OUTPUT、VPS_DC_HDMI_blend}、

    {VPS_DC_BP1_INPUT_PATH、VPS_DC_HDCOMP_MUX}、
    {VPS_DC_HDCOMP_MUX、VPS_DC_CIG_PIP_INPUT}、
    {VPS_DC_CIG_PIP_OUTPUT、VPS_DC_DVO2_BLET}、

    {VPS_DC_CIG_PIP_OUTPUT、VPS_DC_HDCOMP_BLET}、

    {VPS_DC_MAIN_INPUT_PATH、VPS_DC_VCOMP}、
    {VPS_DC_AUX_INPUT_PATH、VPS_DC_HDCOMP_MUX}
    }、

    9U、
    /* VENC 信息*/

    /*模式信息*/

    {VPS_DC_VENC_HDMI、{FVID2_STD_1080p_60}
    }、 /* 1080p30是模式
    *被覆盖
    *稍后
    * System_displayCtrlInit
    *
    {VPS_DC_VENC_DVO2、{FVID2_STD_1080p_60}
    }、 /* 1080p30是模式
    *被覆盖
    *稍后
    * System_displayCtrlInit
    *
    }、

    (VPS_DC_VENC_DVO2 | VPS_DC_VENC_HDCOMP)、 /*绑定的 VENC 位掩码*/
    2U




    2.用例(管道)

    gVcapModuleContext.captureId = system_link_ID_capture;
    gVdisModuleContext.displayId[VDIS_DEV_HDCOMP]= SYSTEM_LINK_ID_DISPLAY_0;

    /*初始化 Capture Link 参数*/
    CaptureLink_CreateParams_Init (&capturePrm);
    CapturePrm.numVipInst = 1;

    pCaptureInstPrm = capturePrm.vipInst[0];
    pCaptureInstPrm->vipInstId = SYSTEM_CAPTURE_INST_VIP0_PORTA;
    pCaptureInstPrm->videoDecoderId = SYSTEM_DEVICE_VID_DEC_TVP7002_DRV;
    pCaptureInstPrm->inDataFormat = SYSTEM_DF_RGB24_888;//SYSTEM_DF_YUV422P;
    pCaptureInstPrm->标准 = SYSTEM_STD_1080p_60;
    pCaptureInstPrm-> numOutput = 1;

    pCaptureOutPrm =&pCaptureInstPrm->outParams[0];
    pCaptureOutPrm->dataFormat = SYSTEM_DF_YUV422I_YUV;
    pCaptureOutPrm->scEnable =错误;
    pCaptureOutPrm->outQueId = 0;
    CapturePrm.outQueParams[0].nextLink = gVdisModuleContext.displayId[VDIS_DEV_HDCOMP];
    CapturePrm.tilerEnable =错误;

    /*初始化显示链接参数*/
    MULTICH_INIT_STRUCT (DisplayLink_CreateParams、displayPrm);
    displayPrm.inQueParams[0].prevLinkId = gVcapModuleContext.captureId;
    displayPrm.inQueParams[0].prevLinkQueId = 0;
    displayPrm.displayRes = system_std_480i;
    displayPrm.displayId = display_link_display_BP1;


    谢谢、
    Narasimha
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您希望输出分辨率为480i?? 在这种情况下、您应首先更改显示控制器树、然后查看是否正确显示背景颜色。
    然后、您应该尝试将视频管线(BP1)连接到显示屏。

    Rgds、
    Brijesh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brijesh、

    我尝试使用默认的显示控制树、在 SC1、SC2、BP0路径中使用480i 显示分辨率、但所有路径都是相同的逐行输出

    VPS_DcConfig gSystem_dctrlTriDisplayConfig ={

      VPS_DC_USERSETTINGS、                  /*用例*/

      /*边缘信息*/

      {

        {VPS_DC_BP0_INPUT_PATH、VPS_DC_VCOMP_MUX}、

        {VPS_DC_VCOMP_MUX、VPS_DC_VCOMP}、

        {VPS_DC_CIG_NON_CLUSED_OUTPUT、VPS_DC_HDMI_blend}、

        {VPS_DC_CIG_NON_CLUSED_OUTPUT、VPS_DC_HDCOMP_BLET}、

        {VPS_DC_SEC1_INPUT_PATH、VPS_DC_SDVENC_MUX}、

        {VPS_DC_SDVENC_MUX、VPS_DC_SDVENC_blend}、

        {VPS_DC_GRPX0_INPUT_PATH、VPS_DC_HDMI_Bend}、

        {VPS_DC_GRPX0_INPUT_PATH、VPS_DC_HDCOMP_BLET}、

        {VPS_DC_GRPX2_INPUT_PATH、VPS_DC_SDVENC_BLET}、

        {VPS_DC_MAIN_INPUT_PATH、VPS_DC_VCOMP}、

        {VPS_DC_AUX_INPUT_PATH、VPS_DC_VCOMP_MUX}、

        {VPS_DC_BP1_INPUT_PATH、VPS_DC_SDVENC_MUX}、

      }、

      12、

      /* VENC 信息*/

      {

      /*模式信息*/

      {

       {VPS_DC_VENC_HDMI、{FVID2_STD_1080p_60}

       }

       、                           /* 1080p30是模式

                                  *被覆盖

                                  *稍后

                                  * System_displayCtrlInit

                                  *

     {VPS_DC_VENC_HDCOMP、{FVID2_STD_1080p_60}

       }、                          /* 1080p30是模式

                                  *被覆盖

                                  *稍后

                                  * System_displayCtrlInit

                                  *

       {VPS_DC_VENC_SD、{FVID2_STD_NTSC}

       }

       }

      、

      (VPS_DC_VENC_HDMI | VPS_DC_VENC_HDCOMP)、         /*绑定的 VENC 位

                                  * mask */

      3u                           /* VENC 数

                                  *

      }

    };

    从 TVP7002捕获输入(SXGA)

    显示输出: