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.
器件型号:PROCESSOR-SDK-DRA8X-TDA4X
您好!
我已在标量器节点之后将编码器节点添加 到现有 的 usecase app_single_cam 中。
但当我尝试调用 tivxVideoEncoderNode()函数时,它会在运行时提供以下错误。
[MCU2_1] 62.718570 s:超时:TOPADD_WAIT_ON_SYNC 超时、等待写回0x05a80000。
[MCU2_1] 82.984741 s:appHwaVideoCodecMemAlloc:错误:Alloc 失败!!!
这是代码片段:-
--------------------------------------
if ((image_width!= obj->display_params.outWidth)||(image_height!= obj->display_params.outHeight))
{
vx_uint16 scaler_out_w、scaler_out_h;
obj->scaler_enable = vx_tru_e;
appIssGetResizeParams (image_width、image_height、obj->display_params.outWidth、obj->display_params.outHeight、&scaler_out_w、 标量器_out_h)(&S);
obj->scaler_out_img = vxCreateImage (obj->context、scaler_out_w、scaler_out_h、vx_DF_image_NV12);
obj->scalerNode = tivxVpacMscScaleNode (obj->graph, obj->Y8_R8_C2、obj->scaler_out_img、NULL、 空、空);
TIVxSetNodeParameterNumBufByIndex (obj->scalerNode、1U、obj->num_cap_buf);
vxSetNodeTarget (obj->scalerNode、vx_target_string、TIVX_TARGET_VPAC_MSC1);
obj->display_params.outHeight = scaler_out_h;
obj->display_params.outWidth = scaler_out_w;
display_image = obj->scaler_out_img;
assert_vx_object (obj->configuration_obj = vxCreateUserDataObject (obj->context、"tivx_video_encoder_params_t"、sizeof (tivx_video_encoder_params_t)、NULL)、
(enum vx_type_e) vx_type_user_data_object);
vx_call (vxCopyUserDataObject (obj->configuration_obj、0、sizeof (tivx_video_encoder_params_t)、&obj->params、vx_write_only、 vx_memory_type_host);
printf("\t 复制用户创建的初始化...! \n");
obj->max_bitstream_size =((uint32_t)(scaler_out_w / 16)
*(uint32_t)(scaler_out_w / 16)*最差_QP_size)
+((scaler_out_h >> 4)* coded_buffer_info_section_size);
assert_vx_object (obj->bitstream_obj = vxCreateUserDataObject (obj->上下文、"tivx_video_bitstream_t"、sizeof (uint8_t)* obj->max_bitstream_size、NULL)、
(enum vx_type_e) vx_type_user_data_object);
assert_vx_object (obj->node_encode = tivxVideoEncoderNode (obj->graph、obj->configuration_obj、display_image、obj->bitstream_obj)、vx_type_node);
vx_status = vxGetStatus ((vx_reference) obj->node_encode);
如果(vx_Success = status)
{
printf ("成功 d\n"、status);
}
//tivxSetNodeParameterNumBufByIndex (obj->node_encode、3U、obj->num_cap_buf
vx_call (vxSetNodeTarget (obj->node_encode、vx_target_string、TIVX_TARGET_VENC1));
如果 我在这里遗漏了一些东西、请为我提供帮助。
谢谢、此致
Mausam Sinha
尊敬的 Mausam:
是的、请使用 SDK7.0版本。
Rgds、
Brijesh
您好、Brijesh、
我尝试使用 SDK7.0版本、但仍然遇到与内存相关的问题。
这一次我收到错误"MEM:错误:无法初始化 DMA 堆[/dev/dma_heap/vision_apps_shared-memories!!!"
这是日志片段
----------------
应用程序:初始化... !!!
MEM:初始化... !!!
MEM:错误:无法初始化 DMA 堆[/dev/dma_heap/vision_apps_shared-memories!!!
MEM:初始化... 完成了!!!
应用程序:错误:内存初始化失败!!!
应用程序:初始化... 完成了!!!
--------------------
此致
Mausam Sinha
尊敬的 Mausam:
是否可以在 uboot 提示符下运行以下命令?
ENV 默认值-A -f
保存
然后重新启动?
Rgds、
Brijesh
尊敬的 Mausam:
您能否确保 uenv.txt 文件中包含以下内容?
name_overlings=k3-j721e-vision-apps.dtbo
此致、
Vishal
您好、Vishal、
我在 uenv.txt 中找到以下配置、
dorprocboot=1
name_overlings=k3-j721e-vision-apps.dtbo
uenv.txt 配置文件似乎正常。
谢谢、此致
Mausam Sinha
您还执行了"env default -a -f"和"env save"命令吗?
您好 、Vishal/Brijesh、
是的 、我在执行 usecase 之前执行了"env default -a -f"和"env save"命令
但我仍然会得到相同的误差。
以下是日志。
------------------------
MCU2_0] 108.662379 s:IM_SENSOR_CMD_CONFIG 返回状态= 0
编码器初始化....!
复制用户创建的初始化...!
创建 TIvxVideoEncoderNode0的状态值 cafter 节点
5668688:比特流大小!!!
输出文件:output/ISP_output.h264
[MCU2_0] 108.976484 s: vx_zone_info:已启用
[MCU2_0] 108.976544 s: vx_zone_info:[TIvxCapturePrintStatus:1193]
[MCU2_0]================================================================================
[MCU2_0] 108.976597 s: vx_zone_info:[TIvxCapturePrintStatus:1195]:Capture Status:Instance|0
[MCU2_0] 108.976636 s: vx_zone_info:[TIvxCapturePrintStatus:1197]================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
[MCU2_0] 108.976683 s: vx_zone_info:[TIvxCapturePrintStatus:1200]:FIFO 溢出计数:0
[MCU2_0] 108.976720 s: vx_zone_info:[TIvxCapturePrintStatus:1203]:伪 UDMA 中断计数:0
[MCU2_0] 108.976761 s: vx_zone_info:[TIvxCapturePrintStatus:1207] [通道编号]|帧队列计数|帧去队列计数|帧丢弃计数|
[MCU2_0] 108.976814 s: vx_zone_info:[TIvxCapturePrintStatus:1215] 0| 0| 0| 0| 0| 0|
[MCU2_0] 108.976845 s: vx_zone_info:已禁用
[MCU2_0] 110.311306 s:超时:TOPADD_WAIT_ON_SYNC 超时、等待写回0x01000000。
启用分频器
[105.242171] EXT4-FS 错误(器件 mmcblk1p2):ext4_validate_block_bitmap:384:Comm vx_app_single_c:BG 59:错误的块位图校验和
[105.25834] EXT4-FS 错误(器件 mmcblk1p2):ext4_MB_generate_buddy:744:组58、块位图和 bg 描述符不一致:14478与14764可用群集
[105.272422] EXT4-FS 错误(器件 mmcblk1p2):ext4_MB_generate_buddy:744:组60、块位图和 bg 描述符不一致:20269与23661可用群集
[105.286546] JBD2:已发现脏元数据缓冲区(dev = mmcblk1p2、isdknr = 0)。 系统崩溃时存在文件系统损坏的风险。
[105.303095] EXT4-FS 错误(器件 mmcblk1p2):ext4_MB_generate_buddy:744:组52、块位图和 bg 描述符不一致:26333与26334可用群集
[105.317324] JBD2:已发现脏元数据缓冲区(dev = mmcblk1p2、isdknr = 0)。 系统崩溃时存在文件系统损坏的风险。
===================================
演示:单摄像头,带2A
===================================
P:打印性能统计数据
S:将传感器原始图像、VISS 输出图像和 H3A 输出图像保存到文件系统
E:出口业绩统计
X:退出
输入选项:
===================================
演示:单摄像头,带2A
===================================
P:打印性能统计数据
S:将传感器原始图像、VISS 输出图像和 H3A 输出图像保存到文件系统
E:出口业绩统计
X:退出
输入选项: 110.655009 s:ISS:正在启动传感器[IMX390-UB953_D3]... !!!
[MCU2_0] 110.655132 s:ImageSensor_RemoteServiceHandler:IM_SENSOR_CMD_STREAME_ON
[MCU2_0] 110.655205 s:IM_SENSOR_CMD_STREAME_ON: CHANNEL = 0x1
[MCU2_0] 110.655310 s:ub960_cfgScript:ub960I2cAddr = 0x3D
[MCU2_0] 110.655347 s:UB960配置启动
[MCU2_0] 110.895365: UB960配置结束
[MCU2_0] 110.895453 s:ub960_cfgScript:ub960I2cAddr = 0x36
[MCU2_0] 110.895486:UB960配置启动
[MCU2_0] 111.135364 s: UB960配置结束
[MCU2_0] 111.135418 s:正在启动摄像头#0
[MCU2_0] 111.135461 s:进入 IssSensor_Start
[MCU2_0] 111.145308 s:enableUB960Streaming ub960InstanceId = 0
[MCU2_0] 111.145501 s:ub960_cfgScript:ub960I2cAddr = 0x3D
[MCU2_0] 111.145533 s:UB960配置启动
111.161515 s:ISS:正在启动传感器[IMX390-UB953_D3]... !!!
[MCU2_0] 111.161374 s: UB960配置结束
[MCU2_0] 112.558310 s:超时:TOPADD_WAIT_ON_SYNC 超时、等待写回0x05a80000。
[131.296897] 初始化 XFRM netlink 插座
[133.627470] 桥接器:默认情况下、不再提供通过 arp/IP/ip6Tables 进行筛选的功能。 如果需要,请更新脚本以加载 br_netfilter。
[133.641402] 已注册桥防火墙
--------------------------------------------------
此致
Mausam Sinha
您好、Vishal/Brijesh、
是的 、在执行 usecase 之前、我已执行 U-Boot 命令"env default -a -f"和"env safe"。
但是、我仍然收到相同的错误、以下是错误日志
===================
MCU2_0] 108.662379 s:IM_SENSOR_CMD_CONFIG 返回状态= 0
编码器初始化....!
复制用户创建的初始化...!
创建 TIvxVideoEncoderNode0的状态值 cafter 节点
5668688:比特流大小!!!
输出文件:output/ISP_output.h264
[MCU2_0] 108.976484 s: vx_zone_info:已启用
[MCU2_0] 108.976544 s: vx_zone_info:[TIvxCapturePrintStatus:1193]
[MCU2_0]================================================================================
[MCU2_0] 108.976597 s: vx_zone_info:[TIvxCapturePrintStatus:1195]:Capture Status:Instance|0
[MCU2_0] 108.976636 s: vx_zone_info:[TIvxCapturePrintStatus:1197]================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
[MCU2_0] 108.976683 s: vx_zone_info:[TIvxCapturePrintStatus:1200]:FIFO 溢出计数:0
[MCU2_0] 108.976720 s: vx_zone_info:[TIvxCapturePrintStatus:1203]:伪 UDMA 中断计数:0
[MCU2_0] 108.976761 s: vx_zone_info:[TIvxCapturePrintStatus:1207] [通道编号]|帧队列计数|帧去队列计数|帧丢弃计数|
[MCU2_0] 108.976814 s: vx_zone_info:[TIvxCapturePrintStatus:1215] 0| 0| 0| 0| 0| 0|
[MCU2_0] 108.976845 s: vx_zone_info:已禁用
[MCU2_0] 110.311306 s:超时:TOPADD_WAIT_ON_SYNC 超时、等待写回0x01000000。
启用分频器
[105.242171] EXT4-FS 错误(器件 mmcblk1p2):ext4_validate_block_bitmap:384:Comm vx_app_single_c:BG 59:错误的块位图校验和
[105.25834] EXT4-FS 错误(器件 mmcblk1p2):ext4_MB_generate_buddy:744:组58、块位图和 bg 描述符不一致:14478与14764可用群集
[105.272422] EXT4-FS 错误(器件 mmcblk1p2):ext4_MB_generate_buddy:744:组60、块位图和 bg 描述符不一致:20269与23661可用群集
[105.286546] JBD2:已发现脏元数据缓冲区(dev = mmcblk1p2、isdknr = 0)。 系统崩溃时存在文件系统损坏的风险。
[105.303095] EXT4-FS 错误(器件 mmcblk1p2):ext4_MB_generate_buddy:744:组52、块位图和 bg 描述符不一致:26333与26334可用群集
[105.317324] JBD2:已发现脏元数据缓冲区(dev = mmcblk1p2、isdknr = 0)。 系统崩溃时存在文件系统损坏的风险。
===================================
演示:单摄像头,带2A
===================================
P:打印性能统计数据
S:将传感器原始图像、VISS 输出图像和 H3A 输出图像保存到文件系统
E:出口业绩统计
X:退出
输入选项:
===================================
演示:单摄像头,带2A
===================================
P:打印性能统计数据
S:将传感器原始图像、VISS 输出图像和 H3A 输出图像保存到文件系统
E:出口业绩统计
X:退出
输入选项: 110.655009 s:ISS:正在启动传感器[IMX390-UB953_D3]... !!!
[MCU2_0] 110.655132 s:ImageSensor_RemoteServiceHandler:IM_SENSOR_CMD_STREAME_ON
[MCU2_0] 110.655205 s:IM_SENSOR_CMD_STREAME_ON: CHANNEL = 0x1
[MCU2_0] 110.655310 s:ub960_cfgScript:ub960I2cAddr = 0x3D
[MCU2_0] 110.655347 s:UB960配置启动
[MCU2_0] 110.895365: UB960配置结束
[MCU2_0] 110.895453 s:ub960_cfgScript:ub960I2cAddr = 0x36
[MCU2_0] 110.895486:UB960配置启动
[MCU2_0] 111.135364 s: UB960配置结束
[MCU2_0] 111.135418 s:正在启动摄像头#0
[MCU2_0] 111.135461 s:进入 IssSensor_Start
[MCU2_0] 111.145308 s:enableUB960Streaming ub960InstanceId = 0
[MCU2_0] 111.145501 s:ub960_cfgScript:ub960I2cAddr = 0x3D
[MCU2_0] 111.145533 s:UB960配置启动
111.161515 s:ISS:正在启动传感器[IMX390-UB953_D3]... !!!
[MCU2_0] 111.161374 s: UB960配置结束
[MCU2_0] 112.558310 s:超时:TOPADD_WAIT_ON_SYNC 超时、等待写回0x05a80000。
[131.296897] 初始化 XFRM netlink 插座
[133.627470] 桥接器:默认情况下、不再提供通过 arp/IP/ip6Tables 进行筛选的功能。 如果需要,请更新脚本以加载 br_netfilter。
[133.641402] 已注册桥防火墙
============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
谢谢、此致
Mausam Sinha
尊敬的 Mausam:
至少看起来您现在能够引导和运行应用程序。
错误 topazdd_wait_ON_SYNC 仅出现在第一个帧上、并且已知错误、我们仍在调查此错误。 目前、您可以忽略此错误。
我认为您之前看到的内存分配问题不再出现、对吧?
Rgds、
Brijesh
您好、Brijesh、
感谢您的回复、
是的、我能够启动并运行应用程序、似乎内存问题也得到了解决。
但是、在将编码器节点添加到现有单个摄像头用例后、我仍然无法转储视频、需要您的帮助。
下面是 我在分频器节点之后添加的代码片段。
----------------------------------------------------
if ((image_width!= obj->display_params.outWidth)||(image_height!= obj->display_params.outHeight))
{
vx_uint16 scaler_out_w、scaler_out_h;
obj->scaler_enable = vx_tru_e;
appIssGetResizeParams (image_width、image_height、obj->display_params.outWidth、obj->display_params.outHeight、&scaler_out_w、 标量器_out_h)(&S);
obj->scaler_out_img = vxCreateImage (obj->context、scaler_out_w、scaler_out_h、vx_DF_image_NV12);
obj->scalerNode = tivxVpacMscScaleNode (obj->graph, obj->Y8_R8_C2、obj->scaler_out_img、NULL、 空、空);
TIVxSetNodeParameterNumBufByIndex (obj->scalerNode、1U、obj->num_cap_buf);
vxSetNodeTarget (obj->scalerNode、vx_target_string、TIVX_TARGET_VPAC_MSC1);
obj->display_params.outHeight = scaler_out_h;
obj->display_params.outWidth = scaler_out_w;
display_image = obj->scaler_out_img;
assert_vx_object (obj->configuration_obj = vxCreateUserDataObject (obj->context、"tivx_video_encoder_params_t"、sizeof (tivx_video_encoder_params_t)、NULL)、
(enum vx_type_e) vx_type_user_data_object);
vx_call (vxCopyUserDataObject (obj->configuration_obj、0、sizeof (tivx_video_encoder_params_t)、&obj->params、vx_write_only、 vx_memory_type_host);
printf("\t 复制用户创建的初始化...! \n");
obj->max_bitstream_size =((uint32_t)(scaler_out_w / 16)
*(uint32_t)(scaler_out_w / 16)*最差_QP_size)
+((scaler_out_h >> 4)* coded_buffer_info_section_size);
assert_vx_object (obj->bitstream_obj = vxCreateUserDataObject (obj->上下文、"tivx_video_bitstream_t"、sizeof (uint8_t)* obj->max_bitstream_size、NULL)、
(enum vx_type_e) vx_type_user_data_object);
assert_vx_object (obj->node_encode = tivxVideoEncoderNode (obj->graph、obj->configuration_obj、display_image、obj->bitstream_obj)、vx_type_node);
vx_status = vxGetStatus ((vx_reference) obj->node_encode);
如果(vx_Success = status)
{
printf ("成功 d\n"、status);
}
//tivxSetNodeParameterNumBufByIndex (obj->node_encode、3U、obj->num_cap_buf
vx_call (vxSetNodeTarget (obj->node_encode、vx_target_string、TIVX_TARGET_VENC1));
--------------------------------------------------------------------
-------------- 错误日志-------------------------------------------------------
105.242171] EXT4-FS 错误(器件 mmcblk1p2):ext4_validate_block_bitmap:384:Comm vx_app_single_c:BG 59:错误的块位图校验和
[105.25834] EXT4-FS 错误(器件 mmcblk1p2):ext4_MB_generate_buddy:744:组58、块位图和 bg 描述符不一致:14478与14764可用群集
[105.272422] EXT4-FS 错误(器件 mmcblk1p2):ext4_MB_generate_buddy:744:组60、块位图和 bg 描述符不一致:20269与23661可用群集
[105.286546] JBD2:已发现脏元数据缓冲区(dev = mmcblk1p2、isdknr = 0)。 系统崩溃时存在文件系统损坏的风险。
[105.303095] EXT4-FS 错误(器件 mmcblk1p2):ext4_MB_generate_buddy:744:组52、块位图和 bg 描述符不一致:26333与26334可用群集
[105.317324] JBD2:已发现脏元数据缓冲区(dev = mmcblk1p2、isdknr = 0)。 系统崩溃时存在文件系统损坏的风险。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
如果没有编码器节点、则用例运行正常、但一旦我将编码器节点添加到现有流水线中、它将捕获一个帧、然后停止。
请帮我解决 我 在这里遗漏的问题吗?
此致
Mausam Sinha
Mausam、
由于编码器、这似乎不是问题。 它看起来像是 MMCSD 卡问题。 您可以尝试不同的 SD 卡吗?
Rgds、
Brijesh
您好、Brijesh、
我们已成功地将 H264编码器与单个凸轮用例集成在一起、但 捕获的视频抖动在调试时我们注意到原始/YUV 数据有四个连续帧(如1、1、1、4、44、7、7、7、7、7……) 等等)。
下面是编码器的配置集。
--------------------------------------------------
CTX->RC.BITS_PER_second = 10*1000*1000;/* 5mbps */
CTX->RC.TRANSFER_BITS_PER_second = ctx->RC.BITS_PER_second;
CTX->vparams.IDR 周期= 1800;
CTX->rc.intra_freq = 1;//1;//所有 I 帧编码*/
CTX->vparams.intra_cnt = 1;
CTX->RC.bu_size = 0;
CTX->rc.buffer_size = ctx->rc.transfer_bits_per_second;
CTX->rc.frame_rate = 30;
CTX->rc.initial_level =(3 * ctx->rc.buffer_size)>> 4;
CTX->rc.initial_level =((ctx->rc.initial_level +
(((ctx->rc.bits_per_sond)/
CTX->rc.frame_rate)/2))/
(CTX->RC.BITS_PER_second /
CTX->rc.frame_rate)*
(CTX->RC.BITS_PER_second / ctx->rc.frame_rate);
CTX->rc.initial_level = MAX ((uint32) ctx->rc.initial_level、
(uint32)(ctx->rc.bits_per_second /
CTX->rc.frame_rate)、uint32);
CTX->rc.initial_delay = ctx->rc.buffer_size - ctx->rc.initial_level;
CTX->RC.bframes = 0;
----------------------------------------
请向我们提供建议。
谢谢、此致
Mausam Sinha
尊敬的 Mausam:
很抱歉我没有得到它。
您将看到采用 RAW/YUV 格式的连续帧。 您是否从传感器/ISP 保存原始/YUV 帧并验证其是否完全相同?
Rgds、
Brijesh
您好、Brijesh、
感谢您的回复、
是的,我保存了来自 SENSOR/ISP 的连续 RAM/YUV 帧并经过验证,我发现 四个连续 RAM/YUV 帧完全相同。
谢谢、此致
Mausam Sinha
Mausam、
通常、一个或两个帧将与摄像机指向同一场景类似。 因此它们看起来可能相似、但实际上不同。 如果对连续帧进行二进制比较、则会不同。 那么、您能否尝试对两个帧进行二进制比较?
此致、
Brijesh
您好、Brijesh、
感谢您的回复。
我没有倾弃相同的场景、我放置了一个秒表并倾弃了连续的原始/YUV 帧。 我在下面的行之后添加了 YUV 转储代码。
代码片段---
"vxGraphParameterDequeDoneRef (obj-> graph、graph_parameter_num、(vx_reference*)&out_captive_frames、1、&num_refs_capture);"
在转储的帧中、我在秒表中看到3个或4个连续帧完全相同的毫秒。 我已附加停止观看编码器转储的视频、请参阅。 请在 VLC 中逐帧检查。
您好、Brijesh、
需要您的紧急帮助来解决此问题。
此致
Mausam Sinha
Mausam、
只需检查您是否对此主题有任何进一步的更新、或者您仍处于同一时刻、需要一些指导才能继续?
请告诉我们。
此致
Karthik
您好、Karthik、
感谢您的更新。 我们仍处于同一个点、需要从您的一侧向您方向前进。
此致
Mausam Sinha