关于#c语言#的问题:VO(WBC)可以绑定VO

该问题来自社区帖: https://bbs.csdn.net/topics/617275481.

正常的绑定:

int Hi_Vo::Vo_Bind_Vdec(hi_vdec_chn vdec_chn)
{
    hi_mpp_chn src_chn;
    hi_mpp_chn dest_chn;

    src_chn.mod_id = HI_ID_VDEC;
    src_chn.dev_id = 0;
    src_chn.chn_id = vdec_chn;

    dest_chn.mod_id = HI_ID_VO;
    dest_chn.dev_id = layerNo;
    dest_chn.chn_id = vdec_chn;

    CHECK_RET(hi_mpi_sys_bind(&src_chn, &dest_chn), "hi_mpi_sys_bind(VDEC-VO)");

    return 0;
}

其中看海思资料有这样的绑定关系:

VO(WBC)可以绑定VO?输出回写绑定输出?请问这个代码是怎样的?有做过的吗?

【以下回答由 GPT 生成】

针对问题中的代码示例,可以通过以下步骤进行VO(WBC)绑定VO操作:

  1. 首先,在代码中创建两个结构体hi_mpp_chn用于表示源通道(src_chn)和目标通道(dest_chn)的信息。
  2. 设置src_chnmod_id字段为HI_ID_VDEC,表示是VDEC模块的通道;dev_id字段为0,表示设备编号;chn_id字段为传入的vdec_chn参数,表示通道编号。
  3. 设置dest_chnmod_id字段为HI_ID_VO,表示是VO模块的通道;dev_id字段为layerNo,表示设备编号,可以根据实际情况进行设置;chn_id字段为传入的vdec_chn参数,表示通道编号。
  4. 调用hi_mpi_sys_bind函数绑定源通道和目标通道,实现VO(WBC)的绑定VO操作。
  5. 返回0表示绑定成功。

整理后的代码如下:

#include <stdio.h>
#include <stdlib.h>

typedef struct {
    int mod_id;
    int dev_id;
    int chn_id;
} hi_mpp_chn;

// 假设layerNo的值为1
int layerNo = 1;

int hi_mpi_sys_bind(hi_mpp_chn* src_chn, hi_mpp_chn* dest_chn) {
    // 绑定操作的具体实现
    return 0;
}

int Hi_Vo::Vo_Bind_Vdec(int vdec_chn)
{
    hi_mpp_chn src_chn;
    hi_mpp_chn dest_chn;

    src_chn.mod_id = HI_ID_VDEC;
    src_chn.dev_id = 0;
    src_chn.chn_id = vdec_chn;

    dest_chn.mod_id = HI_ID_VO;
    dest_chn.dev_id = layerNo;
    dest_chn.chn_id = vdec_chn;

    // 调用绑定函数
    CHECK_RET(hi_mpi_sys_bind(&src_chn, &dest_chn), "hi_mpi_sys_bind(VDEC-VO)");

    return 0;
}

关于是否有人已经尝试过这个功能,我无法确定,建议你查阅相关资料或者在社区中了解是否有人有类似的经验和解决方案。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^