ian688t6

ian688t6

0个粉丝

5

问答

0

专栏

0

资料

ian688t6  发布于  2018-07-16 10:14:48
采纳率 0%
5个问答
3085

hi3520dv300 720P 4路复用

 
sdk中的sample vio配置的是720P 2路复用,因为板子上只挂了一颗AD,所以只能显示两路;
sample_common_vi中对ad的配置,4路复用的case被屏蔽了,而且注释说不支持。。。
但是芯片手册中是写了

视频输入接口(Hi3520DV300 支持)
− 支持 2 个 8bit 接口或 1 个 16bit 接口
− 每个 8bit 接口支持 108/144MHz 4 路 D1/960H,时分复用输入,共支持
8xD1/8x960H 实时视频输入
− 每个 8bit 接口支持 144/148.5MHz2 路 720p 时分复用输入,共支持
4x720p@30fps 实时视频输入
− 每个 8bit 接口支持通过 148.5MHz 双沿采样或 297MHz 单沿采样实现 4 路 720p
时分复用输入,共支持 8x720p@30fps 实时视频输入
− 每个 8bit 接口支持通过 148.5MHz 双沿采样或 297MHz 单沿采样实现 2 路
1080p 时分复用输入,共支持 4x1080p@30fps 实时视频输入
− 每个 8bit 接口支持 148.5MHz BT.1120 Y/C 间插模式输入,共支持
2x1080p@30fps 实时视频输入
− 16bit 接口支持 148.5MHz BT.1120 标准模式,支持 1x1080p@6

尝试配置4路720P复用,现在可以了,下面是相关代码的配置:
step1 :添加4录6124复用的时序,双沿采样一定要配置;
VI_DEV_ATTR_S DEV_ATTR_6114_720P_4MUX_BASE =
{
    /*interface mode*/
    VI_MODE_BT656,
    /*work mode*/
    VI_WORK_MODE_4Multiplex,
    /* r_mask    g_mask    b_mask*/
    {0xFF000000,    0x0},

        /* for single/double edge, must be set when double edge*/
        VI_CLK_EDGE_DOUBLE,

    /*AdChnId*/
    {-1, -1, -1, -1},
    /*enDataSeq, just support YUV*/
    VI_INPUT_DATA_YVYU,
    /**/
    {
    /*port_vsync   port_vsync_neg     port_hsync        port_hsync_neg        */
    VI_VSYNC_FIELD, VI_VSYNC_NEG_HIGH, VI_HSYNC_VALID_SINGNAL,VI_HSYNC_NEG_HIGH,VI_VSYNC_VALID_SINGAL,VI_VSYNC_VALID_NEG_HIGH,

    /**/
    /*hsync_hfb    hsync_act    hsync_hhb*/
    {0,            0,        0,
    /*vsync0_vhb vsync0_act vsync0_hhb*/
     0,            0,        0,
    /*vsync1_vhb vsync1_act vsync1_hhb*/
     0,            0,            0}
    },
    /*whether use isp*/
    VI_PATH_BYPASS,
    /*data type*/
    VI_DATA_TYPE_YUV
};

step2:VI_MST_NVP6124_CfgV中添加修改SAMPLE_VI_MODE_6124_4MUX_HD的配置因为只挂了一颗ad所以chip_cnt=1
HI_S32 VI_MST_NVP6124_CfgV(VIDEO_NORM_E enVideoMode,SAMPLE_VI_6124_MODE_E enViMode)
{
            int chip_cnt = 1;
        .......

            case SAMPLE_VI_MODE_6124_4MUX_HD:

            for(i=0;i             {
                schnmode.ch = i;
                schnmode.vformat = video_mode;
                schnmode.chmode = NVP6124_VI_720P_2530;
                ioctl(fd, IOC_VDEC_SET_CHNMODE, &schnmode);
            }
            for(i=0;i             {
                optmode.chipsel = i;
                optmode.portsel = 0;
                optmode.portmode = NVP6124_OUTMODE_4MUX_HD;
                optmode.chid = 0;
                ioctl(fd, IOC_VDEC_SET_OUTPORTMODE, &optmode);
                optmode.portsel = 1;
                optmode.portmode = NVP6124_OUTMODE_4MUX_HD;
                optmode.chid = 1;
                ioctl(fd, IOC_VDEC_SET_OUTPORTMODE, &optmode);
            }
            break;
}

step3: SAMPLE_COMM_VI_Mode2Param中devCnt 和 chnCnt要改一下,因为板上只挂了一个ad所以最多能接4路vi输入
HI_S32 SAMPLE_COMM_VI_Mode2Param(SAMPLE_VI_MODE_E enViMode, SAMPLE_VI_PARAM_S *pstViParam)
{
        。。。
        case SAMPLE_VI_MODE_8_720P:
        case SAMPLE_VI_MODE_8_1080P:
            /* use chn 0,2,4,6,8,10,12,14 */
            pstViParam->s32ViDevCnt = 1;
            pstViParam->s32ViDevInterval = 1;
            pstViParam->s32ViChnCnt = 4; //8;  //by lwx
            pstViParam->s32ViChnInterval = 1;
            break;
}

step4: SAMPLE_COMM_VI_ADStart中修改enMode = SAMPLE_VI_MODE_6124_4MUX_HD

        。。。。
        case SAMPLE_VI_MODE_8_720P:            
            SAMPLE_PRT("SAMPLE_COMM_VI_ADStart SAMPLE_VI_MODE_8_720P!\n");
                enMode = SAMPLE_VI_MODE_6124_4MUX_HD;//SAMPLE_VI_MODE_6124_HD;
            s32Ret = VI_MST_NVP6124_CfgV(enNorm, enMode);
            if (s32Ret != HI_SUCCESS)
            {
                SAMPLE_PRT("SAMPLE_NVP6114_CfgV failed with %#x!\n",\
                        s32Ret);
                return HI_FAILURE;
            }
            break;

step5: HI_S32 SAMPLE_COMM_VI_StartDev(VI_DEV ViDev, SAMPLE_VI_MODE_E enViMode)
{
        .....
        case SAMPLE_VI_MODE_8_720P:
            memcpy(&stViDevAttr,&DEV_ATTR_6114_720P_4MUX_BASE,sizeof(stViDevAttr));
            SAMPLE_COMM_VI_SetMask(ViDev,&stViDevAttr);
        break;
        .....
}

step6: 修改设备物理通道和vi 通道的绑定 ,dev0的way0 way1 way2 way3 分别绑定vi的通道chn0 chn1 chn2 chn3
HI_S32 SAMPLE_COMM_VI_Start(SAMPLE_VI_MODE_E enViMode, VIDEO_NORM_E enNorm)
{
        .....
    for(i=0; i     {
        ViChn = i * stViParam.s32ViChnInterval;

        if (SAMPLE_VI_MODE_8_1080P == enViMode
         || SAMPLE_VI_MODE_8_720P == enViMode)
        {
            /* When in the 8x1080p mode, bind chn 2,6,10,14 to way1 is needed */
  //          if (ViChn%4 != 0)
            {
                s32Ret = HI_MPI_VI_GetChnBind(ViChn, &stChnBindAttr);
                SAMPLE_PRT("call HI_MPI_VI_GetBindChn:  with dev %d way %d vichn %d  %#x\n",
                                stChnBindAttr.ViDev, stChnBindAttr.ViWay, ViChn, s32Ret);
                s32Ret = HI_MPI_VI_UnBindChn(ViChn);

//               if (HI_ERR_VI_FAILED_NOTBIND == s32Ret)
                {
                    stChnBindAttr.ViDev = ViChn / 4;
                    stChnBindAttr.ViWay = i;
                    SAMPLE_PRT("call HI_MPI_VI_BindChn  with dev %d way %d vichn %d\n",
                                    stChnBindAttr.ViDev, stChnBindAttr.ViWay, ViChn);
                    s32Ret = HI_MPI_VI_BindChn(ViChn, &stChnBindAttr);
                    if (HI_SUCCESS != s32Ret)
                    {
                        SAMPLE_PRT("call HI_MPI_VI_BindChn failed with %#x\n", s32Ret);
                        return HI_FAILURE;
                    }
                }
            }
        }
        .....
}

新手入门,如果又不对的地方还望指出。排版有点乱,将就看吧

我来回答
回答1个
时间排序
认可量排序

hero

0个粉丝

1

问答

0

专栏

0

资料

hero 2018-07-16 17:40:55
认可0
:lol:lol:lol:lol:lol:lol:lol:lol
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区