工具与软件:
我们有一个应用利用 Video 4 Linux 2 API (V4L2)将 NV12图像编码为 H.264字节流。 该应用程序在 SDK 8.2至9.2版上可以正常运行、但现在在 SDK 10.0上无法正常运行。 编码器似乎悬挂在 ioctl 上 VIDIOC_DQBUF
。 以下是 ioctls 的调用顺序:
节点创建:
VIDIOC_S_EXT_CTRLS
VIDIOC_G_FMT
VIDIOC_S_FMT
VIDIOC_S_PARM
VIDIOC_REQBUFS (o)
VIDIOC_QUERYBUF (o)
VIDIOC_REQBUFS (c)
VIDIOC_QUERYBUF (c)
节点进程:
VIDIOC_QBUF (o)
VIDIOC_QBUF (c)
VIDIOC_STREAMON (o)
VIDIOC_STREAMON (c)
VIDIOC_DQBUF (c)
VIDIOC_DQBUF (o)
该应用程序悬挂在第一个帧和第一个 DQBUF 上。 我们将其设置 GOP_SIZE
为0和 I_PERIOD
0。 我们只能设置这些控制加上比特率。 SDK 10.0中对编码器驱动程序进行的任何更改是否可能导致了此问题? 是否有必须设置的新控件或变量? 节点已复制、但节点创建中的编码器设置仅完成一次。 工艺节点中有一个锁定机制、用于确保帧顺序。