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.

[参考译文] TDA4VM:VPAC VISS 12位 YUV 输出

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1197823/tda4vm-vpac-viss-12-bit-yuv-output

器件型号:TDA4VM
您好!

在 NV12 (8位)中将 VPAC VISS 配置为在 MUX2上输出时、它可以正常工作。

我正在尝试从 MUX0和 MUX1上的 VPAC VISS 模块获取 YUV 12位输出、但在尝试获取时遇到以下错误:
[MCU2_0] 6025.357392 s:vx_zone_error:[TIvxVpacVissCreate:610]无法在驱动程序(-1)中设置参数

6025.357600 s:vx_zone_error:[ownContextSendCmd:815]命令 ACK 消息返回故障 CMD_STATUS:-1
6025.3576s:vx_zone_error:[ownContextSendCmd:851] tivxEventWait()失败。
6025.357637 s:vx_zone_error:[ownNodeKernelInit:538] Target kernel、TIVX_CMD_NODE_CREATE 对于节点 NODE_93失败
6025.357646 s:vx_zone_error:[ownNodeKernelInit:539]请确保已为此内核注册目标回调
6025.357651 s:vx_zone_error:[ownNodeKernelInit:540]如果已注册目标回调、请确保此内核的 create 回调中未发生错误
6025.357661 s:vx_zone_error:[ownGraphNodeKernelInit:583]针对节点1的内核初始化、kernel com.ti.hwa.vpac_viss ... 失败!!!
6025.357674 s:vx_zone_error:[vxVerifyGraph:2055]节点内核初始化失败
6025.357682 s:vx_zone_error:[vxVerifyGraph:2109] Graph verify failed

----------------------------------------------------------------------

下面是用于配置 VpacVissParameters 和 VpacVissNode 的代码:
//读取原始输入图像
tivx_raW_image_create_params_t rawInputParams;
rawInputParams.width = 3838;
rawInputParams.height = 1606;
rawInputParams.num_exposures = 1;
rawInputParams.line_interleaved = vx_tru_e;
rawInputParams.format[0].PIXEL_container = TIVX_RAW_IMAGE_16_BIT;
rawInputParams.format[0].msb = 11;
rawInputParams.meta_height_before = 0;
rawInputParams.meta_height_after = 0;

tivx_raW_image inputRaw = tivxCreateRawImage (上下文、&rawInputParams);
readRawImage (input_file_path、inputRaw);

//使用 YUV 12位输出为 Demosaic 设置 VPAC VISS
tivx_vpac_viss_params_t vissParams;
tivx_vpac_viss_params_init (vissParams);
vissParams.sensor_dcc_id = 233;
vissParams.FCP[0].mux_output0 = TIVX_VPAC_VISS_MUX0_Y12;
vissParams.FCP[0].mux_output1 = TIVX_VPAC_VISS_MUX1_UV12;
vissParams.FCP[0].mux_output2 = 0;
vissParams.FCP[0].mux_output3 = 0;
vissParams.FCP[0].mux_output4 = 0;
vissParams.FCP[0].ee 模式= TIVX_VPAC_VISS_EE_MODE_OFF;//也尝试了具有相同结果的 TIVX_VPAC_VISS_EE_MODE_Y12
vissParams.FCP[0].chroma_mode = TIVX_VPAC_VISS_Chroma_mode_420;
vissParams.BYPASS_nsf4 = 1;
vissParams.bype_glbce = 1;
vissParams.H3A_IN = TIVX_VPAC_VISS_H3A_IN_LSC;
vissParams.H3A_aewb_af_mode = TIVX_VPAC_VISS_H3A_MODE_AF;
vissParams.enable_ctx = 0;

//创建 VPAC VISS VX 节点
vx_image outputY12 = vxCreateImage (pContext、宽度、高度、vx_DF_IMAGE_U16);
vx_image outputUV12 = vxCreateImage (pContext、宽度、高度/2、vx_DF_IMAGE_U16)
vx_node vissNode = TIvxVpacVissNode (pGraph、
                                vpacVissParamsDataObj、
                                AwaeAwbParamsDataObj、
                                dccVissParamsDataObj、
                                InputRaw、
                                outputY12、
                                outputUV12、
                                null、
                                null、
                                null、
                                h3aAewAfDataObj、
                                空、空、空));

vxSetNodeTarget (vissNode、vx_target_string、TIVX_TARGET_VPAC_VISS1);
vxVerifyGraph (图形)
------------------------------------------------------------------
有什么想法 需要我做什么才能在 MUX0和 MUX1上获得 YUV 12位输出(或任何其他方法来获得 YUV 12位)?
谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您从路径${PSDKRA}/pdk_jacinto_08_05_00_36/packages/ti/drv/varh/src/drv 中的 vhwaM2mVissSetParams()收到错误

    您能否连接 CCS (或使用日志)并确定错误的确切来源? (即哪个条件发生故障并导致状态!= FVID2_SOK)

    此致、
    Nikhil

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

    尊敬的

    请在 OpenVX 节点中进行小改动、然后重试吗?

     在 API 中的文件 ha/vpac_viss/vx_vpac_viss_target.c 中  tivxVpacVissSetOutputParams, can you please make below highlighted changes and try again?

    vissDrvPrms = &vissObj->vissPrms;

    /* Disable all Outputs first */
    for (out_cnt = 0u; out_cnt < TIVX_KERNEL_VPAC_VISS_MAX_IMAGE_OUTPUT; out_cnt ++)
    {
    vissDrvPrms->outPrms[out_cnt].enable = FALSE;
    }

    out_start = TIVX_KERNEL_VPAC_VISS_OUT0_IDX;

    Regards,

    Brijesh

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

    谢谢! 这样就可以正常工作了、我现在可以执行该图、而不会出现错误。

    您 是否知道是否有任何实用程序函数从 VpacVissNode 生成的 Y12和 UV12映像创建单个 Vx_image、或者我是否应该手动合并它们?

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

    您好、Mathieu、

    不可以、没有 API、OpenVX 内核可用于合并 Luma 和色度平面。  相反、我建议使用12位格式的 NV12映像、以便 VISS 本身以12位格式输出 NV12的 VX_image。

    此致、

    Brijesh