Opened 7 months ago

Last modified 7 months ago

#10572 new defect

h265: Total image distortion even on 1% packet loss

Reported by: Vasily Evseenko Owned by:
Priority: normal Component: undetermined
Version: unspecified Keywords: h265
Cc: Vasily Evseenko Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:
I use rtp as h265 transport and found that even with 1% of packets loss image became totally distorted (static background became gray and only moving parts are shown). It seems that avdec_h265 (based on libav) has a bug because if I use NVidia HW decoder nvh265dec it decode that same stream without any visible artifacts. I've tried to play such file (1% loss) with ffplay and found that the problem is inside ffmpeg.

How to reproduce:

% ffplay h265_0.01_loss.mkv
ffplay version 5.1.3-1 Copyright (c) 2003-2022 the FFmpeg developers
  built with gcc 12 (Debian 12.2.0-14)

If I do the same (1% loss) for h264 codec no such problem occured.
Gstreamer developers redirect me to ffmpeg: https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/120#note_2089071

Attachments (2)

h265_0.01_loss.mkv (2.5 MB ) - added by Vasily Evseenko 7 months ago.
h265 test with with 1% packet loss
h264_0.01_loss.mkv (2.5 MB ) - added by Vasily Evseenko 7 months ago.
h264 test with with 1% packet loss

Change History (6)

by Vasily Evseenko, 7 months ago

Attachment: h265_0.01_loss.mkv added

h265 test with with 1% packet loss

by Vasily Evseenko, 7 months ago

Attachment: h264_0.01_loss.mkv added

h264 test with with 1% packet loss

comment:1 by Vasily Evseenko, 7 months ago

Gstreamer pipeline (for tests):
gst-launch-1.0 videotestsrc is-live=true do-timestamp=true ! 'video/x-raw,width=640,height=480,framerate=30/1,format=I420' ! x265enc tune=zerolatency bitrate=2000 ! rtph265pay mtu=1400 aggregate-mode=zero-latency ! identity drop-probability=0.01 ! queue ! rtph265depay ! h265parse ! avdec_h265 ! videoconvert ! xvimagesink sync=false

comment:2 by Balling, 7 months ago

based on libav

libav is gone. There is only ffmpeg now.

nvh265dec

We do have -c:v h264_cuvid for legacy cuvid. In you case:

ffplay.exe -vcodec hevc_cuvid -i h265_0.01_loss.mkv

Last edited 7 months ago by Balling (previous) (diff)

in reply to:  2 comment:3 by Vasily Evseenko, 7 months ago

I known about libav so I reproduce the bug using ffplay

Replying to Balling:

based on libav

libav is gone. There is only ffmpeg now.

nvh265dec

Example with NVidia HW decoder was for proof that it is not bug in H265 standard and there are implementations that can decode such stream correctly.

We do have -c:v h264_cuvid for legacy cuvid. In you case:

ffplay.exe -vcodec hevc_cuvid -i h265_0.01_loss.mkv

With "-vcodec hevc_cuvid" and nvidia card stream displayed correctly without gray background

Last edited 7 months ago by Vasily Evseenko (previous) (diff)

comment:4 by Balling, 7 months ago

With "-vcodec hevc_cuvid" and nvidia card stream displayed correctly without gray background

I did see that, yes

Note: See TracTickets for help on using tickets.