您好!
我们将使用 ducatih264enc 对全高清数据进行编码。 我们将从 FPGA 到 AM5728 EVK 提供1920x1080@60、YUV16位数据。
由于数据格式为 YUYV、因此我们使用 VPE 插件在馈送到编码器之前将数据转换为 NV12。
管道流程如下:
FPGA ---- >VIP --- >VPE --- >ducatih264enc ---- > 文件链接
YUYV YUYV NV12 MP4
我们使用以下命令:
gst-launch-1.0 -e v4l2src device=/dev/video1 io-mode=4! \
'video/x-raw、format=(string) YUY2、width=(int) 1920、height=(int) 1080、framerate=(fraction) 60/1'! \
VPE num-input-buffers=8! 'video/x-raw、format=(string) NV12、width=(int) 1920、height=(int) 1080/'! 排队! ducatih264enc level=level-51 profile=HIGH! 排队! h264parse! mp4 mux! 文件链接位置= temp.mp4
上述管线在几分钟内工作正常。 之后、根据以下日志、内存分配失败
root@am57xx-EVM:~#[2629.912733] VIP 48990000.VIP:大小为4149248的 DMA_alloc_相干 故障
**(GST-LAUNCH-1.0:1151):严重**:GST_FD_MEMORY_GET_FD:断言"GST_is_FD_LOADator (mem->allocator)"失败
**(GST-LAUNCH-1.0:1151):严重**:GST_FD_MEMORY_GET_FD:断言"GST_is_FD_LOADator (mem->allocator)"失败
**(GST-LAUNCH-1.0:1151):严重**:GST_FD_MEMORY_GET_FD:断言"GST_is_FD_LOADator (mem->allocator)"失败
**(GST-LAUNCH-1.0:1151):严重**:GST_FD_MEMORY_GET_FD:断言"GST_is_FD_LOADator (mem->allocator)"失败
错误:来自元素/GstPipeline:流水 线0/GstV4l2Src:v4l2src0:内部数据流错误。
其他调试信息:
./../../../gstreamer-1.8.3/libs/gst/base/gstbasesrc.c (2948):gst_base_src_loop ():/GstPipeline:流水线0/GstV4l2Src:v4l2src0:
流任务暂停、原因错误(-5)
EOS on shutdown enabled --等待 EOS After Error
正在等待 EOS...
从元件"流水线0"获得 EOS。
接收到 EOS -正在停止管道...
执行在0:02:06.188277213之后结束
正在将管道设置为暂停...
正在将管道设置为就绪...
[2630.106452]*** FPGA_s_stream ***
正在将管道设置为 NULL ...
正在释放管道...
我从 bootargets 增加了 CMA 大小(CMC=512M),记录时间增加了,但错误仍然存在。 将显示以下日志
当内存分配失败时,仍有487MB CMA 内存可用
cat /proc/meminfo
总内存:1866148 KB
MemFree:1167520 KB
可用内存:1512168 KB
缓冲器:14272kB
缓存:369416 KB
SwapCached:0KB
激活:93176 KB
未激活:343328 KB
有效(ANON):54540 KB
非活动(ANON):44440 KB
活动(文件):38636 KB
非活动(文件):298888 KB
Unevicable:0KB
已锁定:0KB
总容量:1307648 KB
HighFree:779508 KB
低总容量:558500 KB
低空闲:388012 KB
SwapTotal:0KB
SwapFree:0KB
脏:8KB
写回:52KB
AnonPages:52812 KB
映射:80644 KB
SHMEM:46168 KB
层块:40420 KB
可重复计算:26976 KB
SUn回收:13444KB
KernelStack:1272 KB
页表:1532 KB
nfs_unstable:0KB
退回:0KB
WritebackTmp:0KB
委员会:933072 KB
USDED_AS:342940 KB
Vmalloctotal:245760KB
Vmalloced:0KB
VmallocChunk:0KB
总容量:688128 KB
CmaFree:487020 KB
这个问题、当我们使用 IO-MODE=5时、我找不到。 由于我们从 FPGA 获取 YUYV 数据、并且 dunctih264enc 期望数据采用 NV12格式、因此我们无法设置 PAD 能力 YUY2、因此我们需要设置 PAD 能力 NV12。 当我们将功能设置为 NV12时、数据在编码时交换(UYVY)。
gst-launch-1.0 -e v4l2src device=/dev/video1 io-mode=5! 'video/x-raw、format=(string) NV12、width=(int) 1920、height=(int) 1080、framerate=(fraction) 60/1'! ducatih264enc level=level-51 profile=HIGH! 排队! h264parse! mp4 mux! 文件链接位置= temp1.mp4
我们使用的是 SDK 版本04.00.00.04。
请帮助我们了解为何在 IO-MODE=4时失败。
谢谢、
Praveen