Opened 10 years ago

Closed 10 years ago

#4035 closed defect (fixed)

HEVC regression

Reported by: cgbug Owned by:
Priority: important Component: avcodec
Version: git-master Keywords: hevc regression
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Playback fails with git head. Worked ok with older build.

Regression was introduced between 20140811-git-5ec85c9 and 20140812-git-d6711ee.

Seems an infinite loop in nal parsing code?

Sample file:
https://www.sendspace.com/file/dn64ng

Output:

libavformat 56. 9.100 / 56. 9.100
libavdevice 56. 1.100 / 56. 1.100
libavfilter 5. 1.103 / 5. 1.103
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 1.100 / 53. 1.100

[hevc @ 02acdde0] Overread SPS by 8 bits
[hevc @ 02acdde0] SPS 0 does not exist.
[hevc @ 02acdde0] PPS id out of range: 0
[hevc @ 02acdde0] Error parsing NAL unit #0.
[hevc @ 02acdde0] PPS id out of range: 0
[hevc @ 02acdde0] Error parsing NAL unit #0.
[hevc @ 02acdde0] PPS id out of range: 0
[hevc @ 02acdde0] Error parsing NAL unit #0.
[hevc @ 02acdde0] PPS id out of range: 0
[hevc @ 02acdde0] Error parsing NAL unit #0.
[hevc @ 02acdde0] PPS id out of range: 0
[hevc @ 02acdde0] Error parsing NAL unit #0.
[hevc @ 02acdde0] PPS id out of range: 0
[hevc @ 02acdde0] Error parsing NAL unit #0.
[hevc @ 02acdde0] PPS id out of range: 0
[hevc @ 02acdde0] Error parsing NAL unit #0.
[hevc @ 02acdde0] PPS id out of range: 0
[hevc @ 02acdde0] Error parsing NAL unit #0.
[hevc @ 02acdde0] PPS id out of range: 0
[hevc @ 02acdde0] Error parsing NAL unit #0.
[hevc @ 02acdde0] PPS id out of range: 0
<snip>

Change History (3)

comment:1 by Carl Eugen Hoyos, 10 years ago

Keywords: hevc regression added
Priority: normalimportant
Reproduced by developer: set
Status: newopen

For future tickets: Please always provide your failing FFmpeg command line together with the complete, uncut console output.

Regressions since 5ec85c97

$ ffmpeg -i hevc_black_screen_cut.mkv
ffmpeg version N-66917-g0e406ab Copyright (c) 2000-2014 the FFmpeg developers
  built on Oct 16 2014 11:02:13 with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl
  libavutil      54. 10.100 / 54. 10.100
  libavcodec     56.  8.100 / 56.  8.100
  libavformat    56.  9.100 / 56.  9.100
  libavdevice    56.  1.100 / 56.  1.100
  libavfilter     5.  1.106 /  5.  1.106
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
[hevc @ 0x2536280] Overread SPS by 8 bits
[hevc @ 0x2536280] SPS 0 does not exist.
[hevc @ 0x2536280] PPS id out of range: 0
[hevc @ 0x2536280] Error parsing NAL unit #0.
[hevc @ 0x2536280] PPS id out of range: 0
[hevc @ 0x2536280] Error parsing NAL unit #0.                                                

...

[hevc @ 0x2536280] PPS id out of range: 0
[hevc @ 0x2536280] Error parsing NAL unit #0.
[hevc @ 0x2536280] PPS id out of range: 0
[hevc @ 0x2536280] Error parsing NAL unit #0.
[matroska,webm @ 0x2534ba0] Read error
[matroska,webm @ 0x2534ba0] decoding for stream 0 failed
[matroska,webm @ 0x2534ba0] Could not find codec parameters for stream 0 (Video: hevc, 1920x816): unspecified pixel format
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, matroska,webm, from 'hevc_black_screen_cut.mkv':
  Metadata:
    encoder         : libebml v1.3.0 + libmatroska v1.4.1
    creation_time   : 2014-09-14 10:25:19
  Duration: 00:00:58.55, start: 0.000000, bitrate: 349 kb/s
    Stream #0:0: Video: hevc, 1920x816, SAR 1:1 DAR 40:17, 24 fps, 24 tbr, 1k tbn, 1k tbc (default)
    Stream #0:1: Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 768 kb/s (default)
At least one output file must be specified

comment:2 by Christophe, 10 years ago

Another sequence with invalid VUI, making uncertain what is parsed.

As there's nothing obvious as to why it overreads (the default window flag is set, and thus offsets are parsed, but there isn't enough data), and what the actual data there would be, I'm inclined to make that a "wontfix", all the more since there's no way to detect when that buggy header appears.

The file is not spec-compliant and another decoder could refuse it.

comment:3 by Michael Niedermayer, 10 years ago

Resolution: fixed
Status: openclosed
Note: See TracTickets for help on using tickets.