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.

[参考译文] AM5728:1080p 30fps 时的视频流问题

Guru**** 2557650 points
Other Parts Discussed in Thread: AM5728, AM5718

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/609089/am5728-video-streaming-issue-at-1080p-30fps

器件型号:AM5728
主题中讨论的其他器件: AM5718

描述:
我们正在尝试从配置为1080p@30fps YUYV 4:2:2的 USB3.0原始摄像头捕获和显示视频。

最初、视频数据似乎正在下降(图像的第一季度表现良好、然后视频与图像块偏移)、只是简单的 v4l2src 至文件链接或视频链接。 在3个内核模式后、视频图像质量得到改善、但以30fps 时视频显示不流畅。

AM5728的硬件规格似乎表明可以1080p 30fps 的捕捉和显示、以及 H.264编码和流式传输。 我们非常感谢您提供进一步的见解(内核配置设置、电路板配置等)、以实现全面的性能。

硬件配置:
处理器板:CL-SOM-AM57x - TI AM5728/AM5718模块上系统
www.compulab.com/.../

摄像机:Sony FCB-MA130、Vreo usb3.0接口板
www.intertest.com/.../18926-ishot-xblock-full-hd-mini-fcb-ma130-usb-30-camera-horizontal-configuration

软件配置:
来自 PROCESSOR-SDK-LINUX-03.03.00的 Compulab 板内核使用在 Ubuntu 16.04.2上交叉编译
$ arm-linux-gnueabi-gcc --version
arm-linux-gnueabi-gcc (Uubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609

$导出 arch=arm cross_compile=arm-linux-gnueabihf-
$ make cl-som-am57x_defconfig
$ make menuconfig
$制造

$ uname -a
Linux cl-som-am57x-SID 4.4.4.1.41-cl-som-am57x-ti-5-18-17269745-g0baf060cd12-脏#8 SMP 抢占星期五6月9日16:13:09 CDT 2017 armv7l GNU/Linux

GStreamer
$GST-LAUNCH-1.0 -版本
GST-LAUNCH-1.0版本1.10.0
GStreamer 1.10.0
packages.qa.debian.org/gstreamer1.0


注:已应用三个内核修改。
1) 1)这个是 TI 在 Lucas Kinon 和 TI 之间进行故障排除后提供的补丁、为什么720p 无法与 VPE 配合使用。 详情如下:
e2e.ti.com/.../523614
请注意、此补丁尚未显示在 TI 的内核版本中、因此我们手动应用它。

2) 2)增加了内核 USB DMA 缓冲区大小。

$ make menuconfig
linux menuconfig->device drivers > generic driver options > dma connigoud memory allocator,size in mega bytes --从24MB 更改为64MB
CONFIG_CMA_SIZE│μ V
││μ A
μ│定义连续 μ│的默认存储器区域大小(以 MIB 为单位)
│内存分配器。 如果选择了0的大小,则 CMA 将被│禁用
│默认值、但可以通过将 CMA=SIZE [MG]传递到内核来启用它。 │μ A
││μ A
││μ A
│符号:CMA_SIZE_MBytes [=24]│
│类型:整数│
│提示:大小(以兆字节为单位)│
│位置:│
│-> Device Drivers│
│->通用驱动程序选项│
│-> DMA 连续存储器分配器(DMA_CMA [=y])│
│在 drivers/base/Kconfig:267│中定义
│取决于:DMA_CMA [=y]&&!CMA_SIZE _SEL_Percentage [=n]

内核 DMA 缓冲区大小实验:24 (默认值)、64、128、512、1024 MB、 结果发现、在64 MB 时、从 USB 3.0摄像头/V4l2捕获的视频图像中、大约40%看起来不错、但图像其余部分的数据伪影仍然会丢失。 这是一个显著的改进、仅比良好图像的15%到20%有所改进。 超过64MB 的数字增长没有进一步改善。

因此、当前设置为64MB

3) 3) USB UVC DMA 缓冲区大小增加:
其他故障排除会导致在中记录2个#defines
/drivers/media/usb/uvc/uvcvideo.h
/*等时 Urbs 的数目。 *
#define UVC_Urbs 5.
/*每个 URB 的最大包数。 *
#define UVC_MAX_packets 32.

这似乎会调整 USB UVC 驱动程序代码中的 DMA 缓冲区大小、该驱动程序代码负责使用 DMA 通道移动流视频类 USB 数据。

不同的增加值与增加的内核 DMA 缓冲区大小一起尝试、直到以下值产生未损坏的视频流、100%的图像、但低于30fps (视频捕捉和显示到本地显示)。

/*等时 Urbs 的数目。 *
#define UVC_Urbs 40 //was 5
/*每个 URB 的最大包数。 *
#define UVC_MAX_packets 256 //was 32

--此 USB 摄像头似乎正在使用等时模式


测试设置:

-以 root 身份运行
-简单的捕获和显示
v4l2src IO-mode=4 --> USB DMA 模式
-运行"nice -n -20"以最高用户模式优先级运行(尚未尝试 RT 优先级)
GST 流水线、使用 USB UVC 通过 USB 3.0接口捕获视频、传输到 v4l2内核模块、720p gstreamer v4l2视频源元素、并发送到显示屏。 此 GST 服务热线运行顺畅。

$ nice -n -20 gst-launche-1.0 -e v4l2src device=/dev/video1 DO 时间戳=true IO-mo
DE=4! 视频/x-raw、格式=YUY2、宽度=1280、高度=720、帧速率=30/1! 视频连接
右! 最大扭结

(autosink、xvigesink、omapdmaibfsink、kmsink 在强制实验板上直接运行(连接到自己的显示屏)时不起作用。只有 ximagesink 似乎起作用,如果通过 ssh 远程运行,则需要使用 xvimagesink)

-此管道具有相同的捕捉-显示流程、这次为1080p。 仅使用内核补丁、只显示每个视频帧的一部分、图像的其余部分是图像的块化部分(如果使用 mplayer 或 VLC 来捕获/显示视频、则报告已丢弃的缓冲区)。 应用其他内核模式后、将显示完整的视频帧(有时会显示损坏的帧)、但帧速率较慢(不是配置的30fps)。
-此管线在 Uubuntu/x86或 i5上运行,带有 Sony 摄像头,可产生流畅的视频
-使用 videotestsrc 元素而不是 v4l2src 将生成良好的视频

$ nice -n -20 gst-launche-1.0 -e v4l2src device=/dev/video1 DO 时间戳=true IO-mo
DE=4! 视频/x-raw、格式=YUY2、宽度=1920、高度=1080、帧速率=30/1! 视频转换
太棒了! 最大扭结

应用压缩:
该 GST 管线在720p 下工作
$ nice -n -20 gst-launche-1.0 v4l2src device=/dev/video1 do timestime=true IO-mode=
4! 'video/x-raw、format=YUY2、width=1280、height=720、framerate=30/1'! VPE! Ducat
ih264enc! h264parse! mpegtsmux name=mux m2ts-mode=false! 非常棒! udpsink
客户端=192.168.0.102:5000


- 1080p 时,使用内核路径和 DMA 缓冲区模块,从该流接收到的视频显示不断丢失的数据,看起来损坏的视频流。
$ nice -n -20 gst-launche-1.0 v4l2src device=/dev/video1 do timestime=true IO-mode=
4! 'video/x-raw、format=YUY2、width=1920、height=1080、framerate=30/1'! VPE! ducatih264enc! h264parse! mpegtsmux name=mux m2ts-mode=false! rtmp
2个月! udpsink 客户端=192.168.0.102:5000

使用此选项在基于 Ubuntu (16.04.2)的 PC 上查看:
$ sudo nice -n -20 VLC -vv rtp://@:5000

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

    Steve、

    在我们尝试找出问题所在之前、您能否先发布摄像头的 USB 描述符?

    您可以将相机连接到 Linux PC 上的 usb3.0端口、然后使用命令"lsusb -v -d <vid:pid> "获取描述符转储。

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

    # lsusb -v -d 2a12:0001

    总线002设备002:ID 2a12:0001
    器件描述符:
    b 长度 18
    b 描述符类型 1
    bcdusb 3.00
    bDeviceClass 239其它设备
    bDeviceSubClass 2?
    b 设备协议 1接口关联
    bMaxPacketSize0 9.
    idVendor 0x2a12
    idProduct 0x0001
    bcdDevice 0.00
    制造商 1 VREO
    iProduct 2单位
    iSerial 0
    b 数字配置 1
    配置描述符:
    b 长度 9.
    b 描述符类型 2.
    wTotalLength 378.
    b 数字接口 2.
    bConfigurationValue 1
    iConfiguration 0
    bmAttributes 0x80
    (总线供电)
    MaxPower 100mA
    接口关联:
    b 长度 8.
    b 描述符类型 11.
    bFirstInterface 0
    b 接口计数 2.
    b 功能类 14视频
    b FunctionSubClass 3视频接口集合
    b 功能协议 0
    iFunction 0
    接口描述符:
    b 长度 9.
    b 描述符类型 4.
    b 接口编号 0
    b AlternateSeting 0
    b 数字结束点 1
    b 接口类 14视频
    b 接口子类 1视频控制
    b 接口协议 0
    iInterface 0
    视频控制接口描述符:
    b 长度 13.
    b 描述符类型 36.
    b 描述符子类型 1 (标头)
    bcdUVC 1.00
    wTotalLength 80
    dwClockFrequency 48.000000MHz
    b InCollection 1
    baInterfaceNr(0) 1
    视频控制接口描述符:
    b 长度 18
    b 描述符类型 36.
    b 描述符子类型 2 (输入端子)
    b 终止 ID 1
    wTerminalType 0x0201摄像头传感器
    b 等端子 0
    iTerminal 0
    wObjectiveFocalLengthMin 0
    wObjectiveFocalLengthMax 0
    wOcularFocalLength 0
    b ControlSize 3.
    bmControls 0x00000200
    缩放(绝对)
    视频控制接口描述符:
    b 长度 12.
    b 描述符类型 36.
    b 描述符子类型 5 (处理单元)
    警告:描述符太短
    bUnitID 2.
    bSourceID 1
    wMax乘 法器 0
    b ControlSize 3.
    bmControls 0x0000051f
    亮度
    对比度
    色调
    饱和
    清晰度
    背光补偿
    电力线频率
    iProcessing 0
    bmVideoStandards 0x1d

    PAL - 625/50
    SECAM - 625/50
    NTSC - 625/50
    视频控制接口描述符:
    b 长度 29.
    b 描述符类型 36.
    b 描述符子类型 6 (扩展单元)
    bUnitID 3.
    guidExtensionCode {affc051e-c78f-2e4d-a952-6085f2f602a2}
    b 数字控制 24
    b NrPins 1
    baSourceID(0) 2.
    b ControlSize 4.
    bmcontrols(0) 0xFF
    bmcontrols(1) 0xFF
    bmcontrols(2) 0xFF
    bmcontrols(3) 0x01
    iExtension 0
    视频控制接口描述符:
    b 长度 9.
    b 描述符类型 36.
    b 描述符子类型 3 (输出端子)
    b 终止 ID 4.
    wTerminalType 0x0101 USB 流
    b 等端子 0
    bSourceID 3.
    iTerminal 0
    端点描述符:
    b 长度 7.
    b 描述符类型 5.
    b 结束地址 0x82 EP 2输入
    bmAttributes 3.
    传输类型 中断
    同步类型 无
    使用类型 数据
    wMaxPacketSize 0x0400 1x 1024字节
    b 间隔 1
    bMaxBurst 0
    接口描述符:
    b 长度 9.
    b 描述符类型 4.
    b 接口编号 1
    b AlternateSeting 0
    b 数字结束点 1
    b 接口类 14视频
    b 接口子类 2视频流
    b 接口协议 0
    iInterface 0
    视频流接口描述符:
    b 长度 14.
    b 描述符类型 36.
    b 描述符子类型 1 (INPUT_HEADER)
    b 数字格式 1
    wTotalLength 231.
    bEndPointAddress 131.
    bmInfo 0
    b 终端链接 4.
    b StillCaptureMethod 2.
    b 触发器支持 0
    b 触发器用法 0
    b ControlSize 1
    bmaControls(0) 27.
    视频流接口描述符:
    b 长度 27.
    b 描述符类型 36.
    b 描述符子类型 4 (格式未压缩)
    b 格式索引 1
    b 数字框描述符 5.
    guidFormat {59555932-0000-1000-8000-00aa00389b71}
    bBitsPerPixel 16.
    b DefaultFrameIndex 1
    b 观察员比例 X 0
    b 观察员 0
    bmInterlaceFlags 0x00
    隔行数据流或变量:否
    每帧字段数:2个字段
    字段1:否
    射野模式:仅限射野1
    b 复制属性 0
    视频流接口描述符:
    b 长度 30
    b 描述符类型 36.
    b 描述符子类型 5 (FRAME_未压缩)
    b 框架索引 1
    bmCapabilities 0x00
    仍然不支持映像
    wWidth 640)
    wHeight 480
    dwMinBitRate 147456000
    dwMaxBitRate 147456000
    dwMaxVideoFrameBufferSize 614400
    dwDefaultFrameInterval 3333
    b 框架间隔类型 1
    dwFrameInterval(0) 3333
    视频流接口描述符:
    b 长度 30
    b 描述符类型 36.
    b 描述符子类型 5 (FRAME_未压缩)
    b 框架索引 2.
    bmCapabilities 0x01
    支持静止图像
    wWidth 1280
    wHeight 720)
    dwMinBitRate 442368000
    dwMaxBitRate 442368000
    dwMaxVideoFrameBufferSize 1843200
    dwDefaultFrameInterval 3333
    b 框架间隔类型 1
    dwFrameInterval(0) 3333
    视频流接口描述符:
    b 长度 30
    b 描述符类型 36.
    b 描述符子类型 5 (FRAME_未压缩)
    b 框架索引 3.
    bmCapabilities 0x00
    仍然不支持映像
    wWidth 1280
    wHeight 960
    dwMinBitRate 589824000
    dwMaxBitRate 589824000
    dwMaxVideoFrameBufferSize 2457600
    dwDefaultFrameInterval 3333
    b 框架间隔类型 1
    dwFrameInterval(0) 3333
    视频流接口描述符:
    b 长度 30
    b 描述符类型 36.
    b 描述符子类型 5 (FRAME_未压缩)
    b 框架索引 4.
    bmCapabilities 0x01
    支持静止图像
    wWidth 1600
    wHeight 1200
    dwMinBitRate 921600000
    dwMaxBitRate 921600000
    dwMaxVideoFrameBufferSize 3840000
    dwDefaultFrameInterval 3333
    b 框架间隔类型 1
    dwFrameInterval(0) 3333
    视频流接口描述符:
    b 长度 30
    b 描述符类型 36.
    b 描述符子类型 5 (FRAME_未压缩)
    b 框架索引 5.
    bmCapabilities 0x01
    支持静止图像
    wWidth 1920年
    wHeight 1080
    dwMinBitRate 995328000
    dwMaxBitRate 995328000
    dwMaxVideoFrameBufferSize 4147200
    dwDefaultFrameInterval 3333
    b 框架间隔类型 1
    dwFrameInterval(0) 3333
    视频流接口描述符:
    b 长度 34
    b 描述符类型 36.
    b 描述符子类型 3 (still 映像帧)
    b 结束地址 0
    b NumImageSizePatterns 7.
    wWidth(0) 1280
    wHeight (0) 720)
    wWidth(1) 1280
    wHeight (1) 960
    wWidth(2) 1920年
    wHeight (2) 1080
    wWidth(3) 2592
    wHeight (3) 1944年
    wWidth(4) 3264
    wHeight (4) 2448.
    wWidth(5) 4128
    wHeight (5) 3096
    wWidth(6) 4192.
    wHeight (6) 3104.
    b NumCompressionPatterns 7.
    视频流接口描述符:
    b 长度 6.
    b 描述符类型 36.
    b 描述符子类型 13 (COLORFORMAT)
    b 颜色主管 0 (未指定)
    b TransferCharacterististics 0 (未指定)
    b 矩阵系数 0 (未指定)
    端点描述符:
    b 长度 7.
    b 描述符类型 5.
    b 结束地址 0x83 EP 3输入
    bmAttributes 2.
    传输类型 批量传输
    同步类型 无
    使用类型 数据
    wMaxPacketSize 0x0400 1x 1024字节
    b 间隔 1
    bMaxBurst 15.
    二进制对象存储描述符:
    b 长度 5.
    b 描述符类型 15.
    wTotalLength 22.
    b NumDeviceCaps 2.
    USB 2.0扩展器件功能:
    b 长度 7.
    b 描述符类型 16.
    bDevCapabilityType 2.
    bmAttributes 0x00000000
    (缺失必须置位 LPM 位!)
    超高速 USB 器件功能:
    b 长度 10.
    b 描述符类型 16.
    bDevCapabilityType 3.
    bmAttributes 0x00
    wSpeedsSupported 0x000e
    器件可全速运行(12Mbps)
    器件可高速运行(480Mbps)
    器件可在超高速(5Gbps)下运行
    b 功能支持3.
    功能齐全的最低器件速度为超高速(5Gbps)
    bU1DevExitLat 0微秒
    bU2DevExitLat 0微秒
    器件状态: 0x0000
    (总线供电)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Steve、

    [引用 USER="Steve Duran"]不同的值是与增加的内核 DMA 缓冲区大小一起尝试增加的,直到以下值产生未损坏的视频流,即100%的图像,但低于30fps (视频捕捉和显示到本地显示)。

    您现在获得的 fps 是多少?

    您是否曾尝试缩小瓶颈阻碍实现30fps 的位置?

    要首先检查 USB 子系统、如何使用 fakesink (或文件链接到/dev/null)而不是 ximagesink、并使用 USB 总线分析仪测量 USB 总线吞吐量? 1080p@30fps 约为120MB/s

    [引用 user="Steve Duran"]/*等时 Urbs 的数量。 *
    #define UVC_Urbs 40 //was 5
    /*每个 URB 的最大包数。 *
    #define UVC_MAX_packets 256 //was 32

    如果保持 DMA CMA 大小和 UVC_Urbs 更改、但不更改 UVC_MAX_packets、视频质量或 fps 是否会有所不同? UVC_MAX_PACKKETS 控制每个话术可以保存的最大 USB 突发数据包、我不明白为什么我们必须增加它。

    顺便说一下、摄像头的描述符似乎告诉它使用批量传输、而不是 ISOCH。 但这并不意味着它不应在1080p@30fps 下工作。

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

    这里是一些有关 fps 和 USB 吞吐量的数据。

    有关其外观的良好参考点、请参阅:
    在 Alienware x86_64 Ubuntu 16.04.2 PC 上
    Sonycam - Alienware  

    使用 usbtop 测量位 USB 吞吐量。 请注意:usbtop 中的 kB/s = kbps
    https://github.com/aguinet/usbtop

    假设为8bpp
    720p 的预期位速率
    YUY2 =(1280x720 + 1280x720/2 + 1280x720/2)* 30 =(2 *(1280x720))* 30
    55,296,000字节/秒* 8=442,368,000 bps 720p 时的预期位速率  

    对于720p:
    $ nice -n -20 gst-launche-1.0 -e v4l2src device=/dev/video0 do-timestime=true io-mo de=4! 视频/x-raw、格式=YUY2、宽度=1280、高度=720、帧速率=30/1! fpsdisplaysink 视频接收器=xvimagesink  

    fpsdisplaysink --> 29.92fps 平均值,0下降  

    usbtop:
    从器件到器件的总线 ID 4
    器件 ID 2 215 kB/s 55280 kB/s * 8 = 442、240 bps  

    停止:
    负载平均值.18
    GST 的使用低于1%  

    因此、720p 的帧速率和位速率符合预期  


    假设为8bpp
    1080p 的预期位速率
    YUY2 =(1920x1080 + 1920x1080/2 + 1920x1080/2)* 30 =(2 *(1920x1080))* 30
    124,410,000字节/秒* 8=995,328,000 bps 1080p 时的预期比特率  

    对于1080p:
    $ nice -n -20 gst-launche-1.0 -e v4l2src device=/dev/video0 do-timestime=true io-mo de=4! 视频/x-raw、格式=YUY2、宽度=1920、高度=1080、帧速率=30/1! fpsdisplaysink 视频接收器=xvimagesink  

    fpsdisplaysink --> 29.92fps 平均值,0下降  

    usbtop:
    从器件到器件的总线 ID 4
    器件 ID 2 428 kb/s 109500 kb/s * 8 = 876、000、000bps  

    HTop:
    负载平均值.27
    GST 使用的螺纹小于4.1% x 2  

    因此、对于1080p、帧速率很好、视频质量很好、不确定为什么位速率接近、但低于预期。  


    Compulab 电路板/AM5728

    720p 强制$ nice -20 gst-launche-1.0 -e v4l2src device=/dev/video1 DO 时间戳=true IO-mode=4! 视频/x-raw、格式=YUY2、宽度=1280、高度=720、帧速率=30/1! 视频转换! fakesink

    • 不得不去! Fakesink On 强制,显示视频 fpsdisplaysink 或 ximagesink 使用>100%的 CPU,丢弃帧,mplayer 比 gst 平滑,但仍丢弃帧。 当显示在强制电路板上时、CPU 利用率较高。 如果在720p 时进入 fakesink 或通过压缩机运行、CPU 利用率较低、另一端视频质量良好

    总线 ID 2、器件 ID 3
    在强制板上不断收到此错误消息
    "[坏数据包]在总线0上、捕获了一个声称在总线2上的数据包。"
    --注释了打印此消息的代码,以便我可以看到 usbtop 吞吐量值  

    当视频正在流动时、它会显示在总线 ID 0、器件3和总线 ID 2、器件3上。
    这就是报告错误的原因。 不确定数据为什么显示在上面
    两个器件。
    在720p 时、数据速率在之间来回跳转
    不同器件之间的通信
    194 kb/s 46000至49000 kb/s -接近215 kb/s 55280 kb/s、Alienware PC 上的720p 显示

    15kB/s 4050kB/s  

    在强制电路板上的720p 时,比特率接近预期,但通过 USB 接口的数据流有一些有趣的变化。 无法测量 fps。  

    1080p 时、Nice -20-GS-launche-1.0 -e v4l2src device=/dev/video1 do timestime=true IO-mode=4! 视频/x-raw、格式=YUY2、宽度=1920、高度=1080、帧速率=30/1! 视频转换! fakesink

    它始终停留在:
    不同器件之间的通信
    15kB/s 4000kB/s  

    在1080p 时、它始终报告极低的吞吐量。 无法测量帧速率。

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

    [引用用户="Steve Duran"]

    在强制板上不断收到此错误消息
    "[坏数据包]在总线0上、捕获了一个声称在总线2上的数据包。"
    --注释了打印此消息的代码,以便我可以看到 usbtop 吞吐量值  

    当视频正在流动时、它会显示在总线 ID 0、器件3和总线 ID 2、器件3上。
    这就是报告错误的原因。 不确定数据为什么显示在上面
    两个器件。

    [/报价]

    我想 usbtop 中存在错误或总线上的 USB 数据包损坏。 USB 总线 ID 从1开始、不存在总线 ID 0。

    我将在下周收到摄像头后进行检查。

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

    我收到了您的摄像头、下面是我在没有任何补丁的情况下使用 TI Processor SDK v4.4内核时的测试结果。

    我使用 gstreamer 流水线处理1080p、我的 USB 总线分析器显示总线数据吞吐量约为995Mbps、因此看起来我得到的数据速率为30fps。 'TOP'命令报告 CPU 空闲时间>95%。

    # nice -20-GST-LAUNCH-1.0 -e v4l2src device=/dev/video0 do timestime=true IO-mode=4! 视频/x-raw、格式=YUY2、宽度=1920、高度=1080、帧速率=30/1! 视频转换! fakesink

    我还使用直接 输出 fps 的 yavta (github.com/.../yavta)进行了测试。 它也显示30fps,顶部命令报告 CPU 空闲时间>95%。

    # yavta -s1920x1080 -f YUYV -t 1/30 -c /dev/video0 -n3.

    因此、我不认为您的案例中的瓶颈在 USB 总线中、但我无法判断它在哪里。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是一个很好的数据点。  那么、重要的问题是您使用了什么基于 AM5728的处理器板?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    显然、您使用了几周前发布的处理器 SDK:
    v04.002017年6月29日Linuxv4.9.28
    我们一直在使用 v3.03、4.4内核。 我们必须更新到那个。 可能其中有一些与 USB 相关的更新。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Steve Duran"]

    那么、重要的问题是您使用了什么基于 AM5728的处理器板?  

    [/报价]
    我在两个 TI EVM 上进行了测试、一个是我们的内部板、它上面有 AM5718 (单个 ARM 内核)、它与 http://www.ti.com/tool/tmdxidk5718?keyMatch=am571x%20idk&tisearch=Search-EN-Everything 类似、但具有超高速 USB 主机端口。 我使用的另一个板是 http://www.ti.com/tool/j6evm5777#1、它的器件与 AM5728非常相似。
    我可以在 AM5728 GP EVM 上进行测试、但我不希望看到任何差异。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Steve Duran">要清楚一点、您使用了几周前发布的 Processor SDK:
    v04.00 2017年6月29日 Linux v4.9.28 [/引述]

    我不是说最新的 SDK v04、而是指使用内核 v4.4的 SDK。 我使用 SDK v3.0.0和 v3.3.0中的内核进行了测试。 我确实使用了 SDK v4.0中使用的内核 v4.9进行了测试、但是这些内核的结果没有区别。

    虽然我测试了多个内核、但我使用了与最新 SDK v4.0相同的文件系统。 我不希望文件系统产生任何影响、尤其是在 yavta 测试中。