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 IPNC sclrLink如何实时连续缩放



您好!

       最近在学习DM817的缩放模块,也即sclrLink,在采集显示的直通usecase中,cameraLink->displayLink中间增加了一个sclrLink,组成chain:cameraLink->sclrLink->displayLink,可以把视频缩放到sclrLink的设置分辨率参数(sclrPrm[0].outScaleFactor.absoluteResolution)。

       我现在的疑问是:如何做到实时连续不停缩放(不同分辨率)?难道是重新修改sclrPrm[0].outScaleFactor.absoluteResolution,重新建chain吗?那岂不是要不停地建chain?有没有办法比如System_linkControl发个什么命令给sclrLink即可以控制分辨率?

       新手,请多指教!谢谢!感谢回答!

  • 平安夜了,先预祝大家圣诞快乐!

  • 你好;

           你可以查一下下面的这条控制命令;

    /**
        \brief Link CMD: Set resolution
    
        Set SCLR output resolution dynamically
    
        \param SclrLink_chDynamicSetOutRes * [IN] Output Resolution parameters
    */
    #define SCLR_LINK_CMD_SET_OUTPUTRESOLUTION    (0x7005)

  • ternence hsu,非常感谢你的回答!

    我去试试,我想应该就是通过这个命令的。

  • 你好!请问这个命令实现的是修改SclrLink的参数中sclrPrm[0].outScaleFactor.absoluteResolution.outWidth和sclrPrm[HDMI_SCALER_IDX].outScaleFactor.absoluteResolution.outHeight这两个参数吗?

  • 嗯,实际就是修改这两个参数的值;

  • 你好!在ti_mcfw_ipnc_main.c中看到Vcam_setScalarOutResolution()中正是调用了这个SCLR_LINK_CMD_SET_OUTPUTRESOLUTION命令,然后我直接在上面修改调试

    我现在碰到的问题是在TV输出那路是可以缩放的;不过在HDMI那路却是没有反应,请问你有碰到过这种情况吗?

    这个Vcam_setScalarOutResolution()函数最后2个参数pitch0与pitch1,是什么怎么算的?看原来的代码好像与宽一样。

    谢谢!

  • 你好!不好意思,本人新手,很多不懂问题比较多...再打扰你下。

    sclrLink是把上一级cameraLink采集的源视频的整个图像缩放了,然后再传给下一集displayLink,请问sclrLink能不能把源图像(比如1920x1080)中的某一部分(如100x100)给缩放处理,再传给下一级displayLink。(或者有没有什么link是用于类似抠图操作,获取源视频帧的某一小部分)

    再次麻烦你了!

  • Harry 说:
    我现在碰到的问题是在TV输出那路是可以缩放的;不过在HDMI那路却是没有反应,请问你有碰到过这种情况吗?

    我想你上面的scalar更新分辨率应当是正常了,至于hdmi 没有更新,这个要具体看你usecase的设计了;

  • Harry 说:
    这个Vcam_setScalarOutResolution()函数最后2个参数pitch0与pitch1,是什么怎么算的?看原来的代码好像与宽一样。

    pitch是指yuv数据一行数据的字节数

  • 你是使用的哪一个版本的SDK ?

  • 你好!我用的是 ipnc rdk 3.8。

  • 在swms link 中支持画面的裁剪,你可以取出画面中你需要的区域,再通过swms 放大或者缩小的目标大小

    #define SYSTEM_SW_MS_LINK_CMD_SET_CROP_PARAM        (0x8004)
    /**
        \brief VDIS set HMP forwading & crop parameters - MPSCLR & SWMS link level
    */
    typedef struct VDIS_MPSCLR_SET_CROP_INFO_S
    {
        /**< output channel Id */
        UInt32 cropStartX;
        /**< ouput crop startX offset, This should be alinged to 16 */
        UInt32 cropStartY;
        /**< ouput crop startY offset, This should be alinged to 16 */
        UInt32 cropWidth;
        /**< ouput width, max supported crop width is 1920 */
        UInt32 cropHeight;
        /**< ouput height, max supported crop height is 1080 */
    } VDIS_MPSCLR_SET_CROP_INFO_S;

     
  • 你好!请问IPNC RDK 3.8有提供类似功能吗?

    非常感谢你的帮忙回答!

  • ternence hsu!

    嗯嗯!非常感谢你的回答,我去看看!

    真是又麻烦你了!

  • 这个就是ipnc 3.8 的mcfw中提供的,你先查查;

  • 你好!再次感谢你的悉心解答!

    1.对于这个swms Link,不是很清楚,此Link不是作图像拼接的嘛?还设计兼有裁剪、缩放功能?你不说我都不知道呢。

    2.根据SYSTEM_SW_MS_LINK_CMD_SET_CROP_PARAM这个命令,我查找到了在ti_mcfw_ipnc_main.c中有用到:

    在Vdis_SetCropParam()函数中:

    inputInfo.winId = winId;
    inputInfo.width = cropParam.width;
    inputInfo.height = cropParam.height;
    inputInfo.startX = cropParam.start_X;
    inputInfo.startY = cropParam.start_Y;

    System_linkControl(swMsId, SYSTEM_SW_MS_LINK_CMD_SET_CROP_PARAM, &(inputInfo), sizeof(inputInfo), TRUE);

    我想它这里应该就是做裁剪操作吧?从(cropParam.start_X , cropParam.start_Y)点起裁剪cropParam.width * cropParam.height的目标?

    然后接下来的缩放呢,我好像没找到相应代码?

    3.你提供的这个结构体

    /**
        \brief VDIS set HMP forwading & crop parameters - MPSCLR & SWMS link level
    */
    typedef struct VDIS_MPSCLR_SET_CROP_INFO_S
    {
        /**< output channel Id */
        UInt32 cropStartX;
        /**< ouput crop startX offset, This should be alinged to 16 */
        UInt32 cropStartY;
        /**< ouput crop startY offset, This should be alinged to 16 */
        UInt32 cropWidth;
        /**< ouput width, max supported crop width is 1920 */
        UInt32 cropHeight;
        /**< ouput height, max supported crop height is 1080 */
    } VDIS_MPSCLR_SET_CROP_INFO_S;
    我在source insight工程查找,只在Vdis_MpsclrSetFwdCrop()这个函数中用到,但是Vdis_MpsclrSetFwdCrop()函数并没有在代码里被用到过。
    4.swms这个link我找到了只有multich_captMctnfDisp.c和multich_encode_decode.c两个usecase用到,关于swms的配置
    就这么几行配置,好像没看到缩放输出大小的配置啊?就算拼接也没看到和拼接有关的配置参数啊
    不知道以上我说的对不对,理解偏差大了,还请指正!
    再次感谢你的帮忙!谢谢!
  • 你好!还在线不?昨晚到现在一直在等您的回复,再麻烦您解答下我的疑问!

    本人新手问的白痴不对,请指正,请您抽空解答下吧!

    期待你的回复!谢谢!!!!