Bedrock 发表于 2022-1-3 23:04:43

使用MPP库进行硬编码,程序结束在初始化过程中。

参考mpi_enc_test程序,抽出主干程序,命令行参数的过程直接指定。如下:
MPP_RET mpi_enc_test_cmd_update_by_args(MpiEncTestArgs* cmd,
                                        int argc,
                                        char** argv) {
    MPP_RET ret = MPP_NOK;
    RK_U32 i;
    char ext = "yuv";
    char ext2 = "h264";
    cmd->file_input = "/nfs/bridge-far_cif.yuv";
    for (i = 0; i < MPP_ARRAY_ELEMS(map_ext_to_frm_fmt); i++) {
      Ext2FrmFmt* info = &map_ext_to_frm_fmt;

      if (!strcmp(ext, info->ext_name)) {
            cmd->format = info->format;
            LOG_DEBUG("encoder cmd format %d \n");
      }
    }
    cmd->file_output = "/nfs/bridge-far_cif.h264";
    for (i = 0; i < MPP_ARRAY_ELEMS(map_ext_to_coding); i++) {
      Ext2Coding *info = &map_ext_to_coding;

      if (!strcmp(ext2, info->ext_name)) {
            cmd->type = info->coding;
            LOG_DEBUG("info coding %d \n",info->coding);
      }
    }
    LOG_DEBUG("encoder cmd type %d \n", cmd->type);

    cmd->width = ENCODER_WIDTH;
    cmd->height = ENCODER_HEIGHT;
    // cmd->hor_stride =
    // cmd->ver_stride =
    for (i = 0; i < MPP_ARRAY_ELEMS(support_list); i++) {
      MppCodingTypeInfo *info = &support_list;
      if (MPP_CTX_ENC    == info->type &&
            cmd->type== info->coding) {
            ret = MPP_OK;
            break;
      }
    }
    LOG_DEBUG("encoder cmd type %d \n", cmd->type);
    cmd->num_frames = 10;
    ret = MPP_OK;
   
    return ret;
}查看初始化过程中的打印,发现现在的日志与test成功运行的日志,前面部分打印相同,成功运行截图:

报错截图:



看日志是因为,调用了_check_is_mpp_enc_ref_cfg函数,这个函数是参考mpi直接抄过来的,但是我在初始化的过程中并没有调用它,这是setup的时候会调用,但是我将掉用的程序已经注释,他还是会出现这个。 有点莫名,我开mpi中init的过程很简单,也没有会读取cfg的过程。

现在一直卡在这里,想问问大佬有没有解决方法。或者提供一些解决思路。

页: [1]
查看完整版本: 使用MPP库进行硬编码,程序结束在初始化过程中。