2295192_zh-CN

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2295192_zh-CN

2295192_zh-CN

i.MX95 VPU H265 延迟和性能(v4l2h265enc/v4l2h265dec)

你好

我目前正在 i.MX95 上评估 H265 解码 → 编码流水线。 i.MX95上的 延迟和稳定性i.MX8MP相比,在类似的工作负载和配置下,延迟和稳定性明显更差。

上下文

关于 i.MX8MP使用

  • imxvpudec_h265

  • vpuenc_hevc

我能够实现:

  • 极低的端到端延迟(≈ 10 毫秒)

  • 多数据流的稳定运行

  • 无明显的冻结或人工痕迹

关于 i.MX95使用

  • v4l2h265dec

  • v4l2h265enc

我观察到了:

  • 单个解码 → 编码流水线的 ~90 毫秒延迟

  • 运行时出现冻结和视觉假象 4 路同步摄像机数据流


测试管道

为了重现这个问题,我使用了 IP 摄像机(通过 RTSP 传输 H265),其管道如下:

test-launch "( 
  rtspsrc location=rtsp://10.42.0.85 drop-on-latency=true latency=0 buffer-mode=4 !
  rtph265depay !
  h265parse config-interval=1 !
  v4l2h265dec !
  v4l2h265enc !
  rtph265pay name=pay0 pt=96
)"

该流水线在使用单台摄像机时工作正常,但当扩展到 4 个摄像头就会出现冻结和伪影。


问题

  1. 为什么 i.MX95 上的 H265 VPU 管线比 i.MX8MP 上的潜伏性更高?

  2. i.MX95 上的 v4l2h265dec 和 v4l2h265enc 之间是否完全支持 DMABUF 零拷贝?

    • 如果没有,是否存在隐式内存拷贝,可以解释额外的延迟和带宽压力?

  3. 目前的 i.MX95 VPU 驱动程序是否存在已知的限制?

    • 低延迟运行

    • 多流解码 + 编码

    • 内部缓冲深度

  4. 是否有推荐的 V4L2 控件或 io 模式(捕获/输出 io模式)来最大限度地减少 i.MX95 的延迟?

  5. 在未来的电路板支持包版本中,i.MX95 VPU驱动程序是否有望达到与i.MX8MP相同的性能,还是更高的延迟是一种固有的设计权衡?


目标

我的目标是 实时、低延迟的视频处理(解码 → 处理 → 编码),类似于 i.MX8MP 可实现的功能。

感谢您的支持。

Re: i.MX95 VPU H265 latency and performance(v4l2h265enc/v4l2h265dec)

你好

你在 i.mx8MP 和 i.MX95 上使用哪个电路板支持包 版本来重现这个问题?

您是否在 800 万像素和 95 万像素上使用相同的 GST 管道(除解码器/编码器元件外)?

据我所知,i.MX95 没有导致高延迟的已知限制。

在 i.MX95 上,编码器支持 mmap 和 dmabuf,这可以在解码器和编码器之间建立一个传输 dma-buf 的流水线,而无需复制。

网络摄像机编码时是否没有 B 帧?这样我们就可以禁用解码帧重排,从而减少延迟。请检查这一点。您可以使用以下 v4l2 控件禁用帧重排
" v4l2h264dec extra-controls="decode,display_delay_enable=1,display_delay=0" "

您可以使用以下命令列出所有 v4l2 控制:
v4l2-ctl -l -d


此致

Re: i.MX95 VPU H265 latency and performance(v4l2h265enc/v4l2h265dec)

内核版本

  • imx95: 6.6.101-0
  • imx8mp:6.6.84-0

是的,这是同一个 gstreamer 管道。

网络摄像机不对 B 帧进行编码。我执行了你的命令,但并没有解决问题。屏幕上仍有伪影,延迟也很高。不过,从质量上讲,它似乎消除了冻结现象。


```
v4l2-ctl -l -d /dev/v4l/by-path/platform-4c480000.vpu-video-index0

用户控制

min_number_of_capture_buffers 0x00980927 (int) : min=1 max=32 step=1 default=1 value=1 flags=read-only
thumbnail_mode 0x00981901 (bool) : default=0 value=0 flags=write-only

编解码器控制

h264_profile 0x00990a6b (menu) : min=0 max=4 default=0 value=0 (Baseline)
hevc_profile 0x00990b67 (menu) : min=0 max=0 default=0 value=0 (Main)
display_delay 0x00990b8d (int) : min=0 max=0 step=1 default=0 value=0
display_delay_enable 0x00990b8e (bool) : default=0 value=0
```

```
v4l2-ctl -l -d /dev/v4l/by-path/platform-4c480000.vpu-video-index1

用户控制

horizontal_flip 0x00980914 (bool) : default=0 value=0
vertical_flip 0x00980915 (bool) : default=0 value=0
rotate 0x00980922 (int) : min=0 max=270 step=90 default=0 value=0 flags=modify-layout
min_number_of_output_buffers 0x00980928 (int) : min=1 max=32 step=1 default=1 value=1 flags=read-only

编解码器控制

video_gop_size 0x009909cb (int) : min=0 max=2047 step=1 default=30 value=30
video_bitrate_mode 0x009909ce (menu) :min=0 max=1 default=1 value=1 (恒定比特率) flags=update
video_bitrate 0x009909cf (int) : min=1 max=1500000000 step=1 default=2097152 value=2097152
frame_level_rate_control_enable 0x009909d7 (bool) :default=1 value=1
h264_mb_level_rate_control 0x009909da (bool) : default=1 value=1
number_of_mbs_in_a_slice 0x009909dc (int) : min=0 max=262143 step=1 default=1 value=1
slice_partitioning_method 0x009909dd (menu) :min=0 max=1 default=0 value=0 (Single)
force_key_frame 0x009909e5 (button) : value=0 flags=write-only, execute-on-write
intra_refresh_period 0x009909ec (int) :min=0 max=2160 step=1 default=0 value=0
intra_refresh_period_type 0x009909ed (menu) : min=0 max=1 default=1 value=1 (Cyclic)
h264_i_frame_qp_value 0x00990a5e (int) :min=0 max=51 step=1 default=30 value=30
h264_p_frame_qp_value 0x00990a5f (int) : min=0 max=51 step=1 default=30 value=30
h264_b_frame_qp_value 0x00990a60 (int) :min=0 max=51 step=1 default=30 value=30
h264_minimum_qp_value 0x00990a61 (int) : min=0 max=51 step=1 default=8 value=8
h264_maximum_qp_value 0x00990a62 (int) :min=0 max=51 step=1 default=51 value=51
h264_8x8_transform_enable 0x00990a63 (bool) : default=1 value=1
h264_cpb_buffer_size 0x00990a64 (int) : min=0 max=18750000 step=1 default=0 value=0
h264_entropy_mode 0x00990a65 (menu) : min=0 max=1 default=1 value=1 (CABAC)
h264_i_frame_period 0x00990a66 (int) : min=0 max=2047 step=1 default=0 value=0
h264_level 0x00990a67 (menu) :min=0 max=16 default=14 value=14 (5)
h264_loop_filter_alpha_offset 0x00990a68 (int) : min=-6 max=6 step=1 default=0 value=0
h264_loop_filter_beta_offset 0x00990a69 (int) :min=-6 max=6 step=1 default=0 value=0
h264_loop_filter_mode 0x00990a6a (menu) : min=0 max=2 default=0 value=0 (Enabled)
h264_profile 0x00990a6b (menu) :min=0 max=4 default=4 value=4 (High)
vertical_size_of_sar 0x00990a6c (int) : min=0 max=65535 step=1 default=0 value=0
horizontal_size_of_sar 0x00990a6d (int) :min=0 max=65535 step=1 default=0 value=0
aspect_ratio_vui_enable 0x00990a6e (bool) : default=0 value=0
vui_aspect_ratio_idc 0x00990a6f (menu) :min=0 max=17 default=0 value=0 (Unspecified)
h264_constrained_intra_pred 0x00990a7f (int) : min=0 max=1 step=1 default=0 value=0
h264_chroma_qp_index_offset 0x00990a80 (int) :min=-12 max=12 step=1 default=0 value=0
hevc_minimum_qp_value 0x00990b58 (int) : min=0 max=51 step=1 default=8 value=8
hevc_maximum_qp_value 0x00990b59 (int) :min=0 max=51 step=1 default=51 value=51
hevc_i_frame_qp_value 0x00990b5a (int) : min=0 max=51 step=1 default=30 value=30
hevc_p_frame_qp_value 0x00990b5b (int) : min=0 max=51 step=1 default=30 value=30
hevc_b_frame_qp_value 0x00990b5c (int) : min=0 max=51 step=1 default=30 value=30
hevc_profile 0x00990b67 (menu) : min=0 max=0 default=0 value=0 (Main)
hevc_level 0x00990b68 (menu) : min=0 max=8 default=7 value=7 (5)
hevc_loop_filter 0x00990b6c (menu) :min=0 max=2 default=1 value=1 (Enabled)
hevc_loop_filter_beta_offset 0x00990b6d (int) : min=-6 max=6 step=1 default=0 value=0
hevc_loop_filter_tc_offset 0x00990b6e (int) :min=-6 max=6 step=1 default=0 value=0
hevc_refresh_type 0x00990b6f (menu) : min=0 max=2 default=2 value=2 (IDR)
hevc_num_of_i_frame_b_w_2_idr 0x00990b70 (int) :min=0 max=2047 step=1 default=0 value=0
hevc_constant_intra_prediction 0x00990b72 (int) : min=0 max=1 step=1 default=0 value=0
hevc_strong_intra_smoothing 0x00990b76 (int) : min=0 max=1 step=1 default=1 value=1
hevc_tmv_prediction 0x00990b79 (int) :min=0 max=1 step=1 default=1 value=1
prepend_sps_and_pps_to_idr 0x00990b84 (int) : min=0 max=1 step=1 default=1 value=1
frame_skip_mode 0x00990b86 (menu) : min=0 max=2 default=0 value=0 (Disabled)
average_qp_value 0x00990b91 (int) : min=0 max=51 step=1 default=0 value=0 flags=read-only
````

Re: i.MX95 VPU H265 latency and performance(v4l2h265enc/v4l2h265dec)

电路板支持包 版本是:

  • imx8mp: lf-6.6.52-2.2.0
  • imx95: lf-6.6.52-2.2.1

谢谢

Re: i.MX95 VPU H265 latency and performance(v4l2h265enc/v4l2h265dec)

ok 还请确认我上面提到的 B 框架问题。

此致

Re: i.MX95 VPU H265 latency and performance(v4l2h265enc/v4l2h265dec)

是的,网络摄像机编码时没有 B 帧。我试过你的命令,但没有解决问题。屏幕上仍有伪影,延迟也很高。不过,从质量上讲,它似乎消除了冻结现象。

Re: i.MX95 VPU H265 latency and performance(v4l2h265enc/v4l2h265dec)

你好

确认:网络摄像机编码时没有 B 帧(仅限 I-P)。我在解码器上应用了 display_delay_enable=1,display_delay=0。这有助于消除冻结现象,但延迟时间仍为约 90 毫秒。

为了隔离瓶颈,我在这条流水线上使用了 GStreamer 元素延迟跟踪器:

```
rtspsrc location=rtsp://... drop-on-latency=true latency=0 buffer-mode=4!rtph265depay!h265parse 配置间隔=1!v4l2h265dec extra-controls= " 解码,display_delay_enable=1,display_delay=0 " 捕获-io-mode=4 output-io-mode=4!v4l2h265enc extra-controls= " 编码,video_bitrate_mode=1,video_bitrate=2097152,frame_level_rate_control_enable=0,video_gop_size=30 " 捕获-io-mode=4 输出 io-mode=4!h265parse 配置间隔=1!rtph265pay name=pay0 pt=96
```

每个元素的延迟结果(640x480 @ 30fps,单流):

  • V4L2H265enc: ~67 ms
  • V4L2H265DEC ~2 ms
  • 所有其他元素< 1 ms

仅编码器就占了约 67 毫秒(约 2 个帧周期)。这在各次运行中是一致的。解码器在 ~2 毫秒时没有问题。

我已经试过了:

  • frame_level_rate_control_enable=0
  • 编码器和解码器上的 capture-io-mode=4 和 output-io-mode=4 (DMABUF)
  • 元素之间的最小队列缓冲(max-size-buffers=1)

这些方法都不能明显减少编码器的延迟。

我的问题主要集中在编码器上:

  1. Wave6 编码器在输出之前是否需要在内部保留 2 个帧?有没有办法减少这种内部缓冲(类似于解码器端的 display_delay=0)?
  2. 输出-io-mode=5(DMABUF_IMPORT)对编码器是否有效,以实现上游零拷贝?这对延迟有帮助吗?
  3. 是否有 V4L2 控制或驱动程序参数来启用 Wave6 的低延迟/零延迟编码模式?
  4. 在 i.MX8MP 上,vpuenc_hevc 在相同工作负载下的运行时间约为 10 毫秒。在未来的 BSP 版本中,i.MX95 上与 v4l2h265enc 的延迟差距有望改善吗?

感谢您的帮助。

标记 (1)
无评分
版本历史
最后更新:
‎04-16-2026 02:33 AM
更新人: