[FFmpeg-trac] #8395(ffplay:new): SPS/PPS with every slice of an IDR frame
FFmpeg
trac at avcodec.org
Fri Nov 22 19:57:31 EET 2019
#8395: SPS/PPS with every slice of an IDR frame
----------------------------------------+----------------------------------
Reporter: ziaouina | Type: defect
Status: new | Priority: normal
Component: ffplay | Version: 4.2
Keywords: Decoding fails | Blocked By:
Blocking: | Reproduced by developer: 1
Analyzed by developer: 1 |
----------------------------------------+----------------------------------
Summary of the bug:
The ffmpeg H264 decoding fails whenever there a input stream where SPS/PPS
is sent along every slice of an IDR frame. It seems like the decoder
treats every slice as a single frame but incomplete and try to perform
some error concealment, and of course the followed P frames get corrupted.
Potential solution is to ignore SPS/PPSs coming in mid IDR frame or Non
IDR frame; ie accept SPS/PPS with the first IDR slice only.
How to reproduce:
{{{
% ffplay h264_sps_pps_per_slice.h264
ffplay version N-91273-g67747c89ad Copyright (c) 2003-2018 the FFmpeg
developers
built with gcc 7.3.0 (GCC)
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-
bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass
--enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-
libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
--enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr
--enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack
--enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2
--enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-
libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa
--enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx
--enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-
nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
libavutil 56. 18.102 / 56. 18.102
libavcodec 58. 20.101 / 58. 20.101
libavformat 58. 17.100 / 58. 17.100
libavdevice 58. 4.101 / 58. 4.101
libavfilter 7. 25.100 / 7. 25.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100
[h264 @ 000001d54b640080] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d54b640080] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d54b640080] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
Input #0, h264, from 'C:/work/video/Zexy_Salavaness_source.h264':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h264 (High), yuv420p(tv, bt709, progressive),
1280x720 [SAR 1:1 DAR 16:9], 30 fps, 30 tbr, 1200k tbn, 60 tbc
[h264 @ 000001d552b78200] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552849800] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552ad2800] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c64440] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c648c0] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c3a040] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d54b65a000] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c64440] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c648c0] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c648c0] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c3a040] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c58ac0] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552ad2800] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d54b6d9c40] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d54b65a000] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c3a040] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c58ac0] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552b78200] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552849800] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552ad2800] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d54b6d9c40] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c58ac0] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552b78200] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552849800] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552b78200] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552849800] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552ad2800] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c64440] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c648c0] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c3a040] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d54b65a000] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c64440] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c648c0] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552ad2800] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d54b6d9c40] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d54b65a000] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d54b6d9c40] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d54b65a000] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c64440] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c648c0] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c3a040] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c58ac0] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c3a040] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c58ac0] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552b78200] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552c58ac0] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552b78200] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
[h264 @ 000001d552849800] concealing 2400 DC, 2400 AC, 2400 MV errors in I
frame
--
Ticket URL: <https://trac.ffmpeg.org/ticket/8395>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list