[FFmpeg-trac] #4888(avcodec:new): 62bd8deef causes a regression in HEVC decoding
FFmpeg
trac at avcodec.org
Mon Sep 28 19:55:31 CEST 2015
#4888: 62bd8deef causes a regression in HEVC decoding
----------------------------------+--------------------------------------
Reporter: staalebk | Type: defect
Status: new | Priority: normal
Component: avcodec | Version: git-master
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
----------------------------------+--------------------------------------
Summary of the bug:
I'm trying to extract a thumb from the middle of a live TS, containing one
HEVC-stream.
Before this patch
I would always get a good looking thumb, but with this patch I would for
the most part get a mostly gray frame.
If I generates a few more thumbnails i see that it eventually spits out
the
same frame that ffmpeg before this patch produced as the first thumb, and
it looks OK.
However it is much more blocky than what the previous ffmpeg produced.
How to reproduce (b7baebb75 is the commit just before the patch):
{{{
% ./ffmpeg.b7baebb75 -an -i hevc_fail.ts -vframes 1 before_patch%d.jpg
ffmpeg version N-74781-gb7baebb Copyright (c) 2000-2015 the FFmpeg
developers
built with gcc 4.7 (Debian 4.7.2-5)
configuration:
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 40.101 / 5. 40.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
[NULL @ 0x1f74780] PPS id out of range: 0
[hevc @ 0x1f74780] PPS id out of range: 0
[hevc @ 0x1f74780] Error parsing NAL unit #2.
[hevc @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1f74780] Error parsing NAL unit #2.
[hevc @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1f74780] Error parsing NAL unit #2.
[hevc @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1f74780] Error parsing NAL unit #2.
[hevc @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1f74780] Error parsing NAL unit #2.
[hevc @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1f74780] Error parsing NAL unit #2.
[hevc @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1f74780] Error parsing NAL unit #2.
[hevc @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1f74780] Error parsing NAL unit #2.
[hevc @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1f74780] Error parsing NAL unit #2.
[hevc @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1f74780] Error parsing NAL unit #2.
[hevc @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1f74780] Error parsing NAL unit #2.
[hevc @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1f74780] Error parsing NAL unit #2.
[hevc @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1f74780] Error parsing NAL unit #2.
[hevc @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1f74780] Error parsing NAL unit #2.
[hevc @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1f74780] Error parsing NAL unit #2.
[hevc @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1f74780] Error parsing NAL unit #2.
Input #0, mpegts, from 'hevc_fail.ts':
Duration: 00:00:02.50, start: 2237.360033, bitrate: 7740 kb/s
Stream #0:0[0x1e1]: Video: hevc (Main 10), yuv420p10le(tv), 1920x1080
[SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 23.98 tbc
[swscaler @ 0x1f9a140] deprecated pixel format used, make sure you did set
range correctly
Output #0, image2, to 'before_patch%d.jpg':
Metadata:
encoder : Lavf56.40.101
Stream #0:0: Video: mjpeg, yuvj420p(pc), 1920x1080 [SAR 1:1 DAR 16:9],
q=2-31, 200 kb/s, 23.98 fps, 23.98 tbn, 23.98 tbc
Metadata:
encoder : Lavc56.60.100 mjpeg
Stream mapping:
Stream #0:0 -> #0:0 (hevc (native) -> mjpeg (native))
Press [q] to stop, [?] for help
[NULL @ 0x1f74780] PPS id out of range: 0
[hevc @ 0x2052600] PPS id out of range: 0
[hevc @ 0x2052600] Error parsing NAL unit #2.
[NULL @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x20609a0] PPS id out of range: 0
[hevc @ 0x20609a0] Error parsing NAL unit #2.
[NULL @ 0x1f74780] PPS id out of range: 0
[hevc @ 0x2072400] PPS id out of range: 0
[hevc @ 0x2072400] Error parsing NAL unit #2.
[hevc @ 0x2083e60] PPS id out of range: 0
[hevc @ 0x2083e60] Error parsing NAL unit #2.
[NULL @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x20958c0] PPS id out of range: 0
[hevc @ 0x20958c0] Error parsing NAL unit #2.
[NULL @ 0x1f74780] PPS id out of range: 0
[hevc @ 0x20a7320] PPS id out of range: 0
[hevc @ 0x20a7320] Error parsing NAL unit #2.
[hevc @ 0x20b8d80] PPS id out of range: 0
[hevc @ 0x20b8d80] Error parsing NAL unit #2.
[NULL @ 0x1f74780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x20ca7e0] PPS id out of range: 0
[hevc @ 0x20ca7e0] Error parsing NAL unit #2.
Error while decoding stream #0:0: Invalid data found when processing input
[hevc @ 0x20dc240] PPS id out of range: 0
[hevc @ 0x20dc240] Error parsing NAL unit #2.
[NULL @ 0x1f74780] PPS id out of range: 0
Error while decoding stream #0:0: Invalid data found when processing input
[hevc @ 0x2052600] PPS id out of range: 0
[hevc @ 0x2052600] Error parsing NAL unit #2.
[NULL @ 0x1f74780] PPS id out of range: 0
Error while decoding stream #0:0: Invalid data found when processing input
[hevc @ 0x20609a0] PPS id out of range: 0
[hevc @ 0x20609a0] Error parsing NAL unit #2.
[NULL @ 0x1f74780] PPS id out of range: 0
Error while decoding stream #0:0: Invalid data found when processing input
[hevc @ 0x2072400] PPS id out of range: 0
[hevc @ 0x2072400] Error parsing NAL unit #2.
[NULL @ 0x1f74780] PPS id out of range: 0
Error while decoding stream #0:0: Invalid data found when processing input
[hevc @ 0x2083e60] PPS id out of range: 0
[hevc @ 0x2083e60] Error parsing NAL unit #2.
[NULL @ 0x1f74780] PPS id out of range: 0
Error while decoding stream #0:0: Invalid data found when processing input
[hevc @ 0x20958c0] PPS id out of range: 0
[hevc @ 0x20958c0] Error parsing NAL unit #2.
[NULL @ 0x1f74780] PPS id out of range: 0
Error while decoding stream #0:0: Invalid data found when processing input
[hevc @ 0x20a7320] PPS id out of range: 0
[hevc @ 0x20a7320] Error parsing NAL unit #2.
[NULL @ 0x1f74780] PPS id out of range: 0
Error while decoding stream #0:0: Invalid data found when processing input
[hevc @ 0x20b8d80] PPS id out of range: 0
[hevc @ 0x20b8d80] Error parsing NAL unit #2.
Error while decoding stream #0:0: Invalid data found when processing input
Last message repeated 7 times
frame= 1 fps=0.0 q=7.5 Lsize=N/A time=00:00:00.75 bitrate=N/A
video:108kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: unknown
Conversion failed!
}}}
This gives me one image, before_patch1.jpg that looks completly fine.
http://kolbu.ws/~chiller/ffmpeg_bug/before_patch1.jpg
Now I do the same with the patch:
{{{
ffmpeg version N-74782-g62bd8de Copyright (c) 2000-2015 the FFmpeg
developers
built with gcc 4.7 (Debian 4.7.2-5)
configuration:
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 40.101 / 5. 40.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
[NULL @ 0x1dc2780] PPS id out of range: 0
[hevc @ 0x1dc2780] PPS id out of range: 0
[hevc @ 0x1dc2780] Error parsing NAL unit #2.
[hevc @ 0x1dc2780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1dc2780] Error parsing NAL unit #2.
[hevc @ 0x1dc2780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1dc2780] Error parsing NAL unit #2.
[hevc @ 0x1dc2780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1dc2780] Error parsing NAL unit #2.
[hevc @ 0x1dc2780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1dc2780] Error parsing NAL unit #2.
[hevc @ 0x1dc2780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1dc2780] Error parsing NAL unit #2.
[hevc @ 0x1dc2780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1dc2780] Error parsing NAL unit #2.
[hevc @ 0x1dc2780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1dc2780] Error parsing NAL unit #2.
[hevc @ 0x1dc2780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1dc2780] Error parsing NAL unit #2.
[hevc @ 0x1dc2780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1dc2780] Error parsing NAL unit #2.
[hevc @ 0x1dc2780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1dc2780] Error parsing NAL unit #2.
[hevc @ 0x1dc2780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1dc2780] Error parsing NAL unit #2.
[hevc @ 0x1dc2780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1dc2780] Error parsing NAL unit #2.
[hevc @ 0x1dc2780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1dc2780] Error parsing NAL unit #2.
[hevc @ 0x1dc2780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1dc2780] Error parsing NAL unit #2.
[hevc @ 0x1dc2780] PPS id out of range: 0
Last message repeated 1 times
[hevc @ 0x1dc2780] Error parsing NAL unit #2.
Input #0, mpegts, from 'hevc_fail.ts':
Duration: 00:00:02.50, start: 2237.360033, bitrate: 7740 kb/s
Stream #0:0[0x1e1]: Video: hevc (Main 10), yuv420p10le(tv), 1920x1080
[SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 23.98 tbc
[swscaler @ 0x1dec4e0] deprecated pixel format used, make sure you did set
range correctly
Output #0, image2, to 'with_patch%d.jpg':
Metadata:
encoder : Lavf56.40.101
Stream #0:0: Video: mjpeg, yuvj420p(pc), 1920x1080 [SAR 1:1 DAR 16:9],
q=2-31, 200 kb/s, 23.98 fps, 23.98 tbn, 23.98 tbc
Metadata:
encoder : Lavc56.60.100 mjpeg
Stream mapping:
Stream #0:0 -> #0:0 (hevc (native) -> mjpeg (native))
Press [q] to stop, [?] for help
[hevc @ 0x1ea0760] Could not find ref with POC 12
[hevc @ 0x1ea0760] Could not find ref with POC 15
frame= 1 fps=0.0 q=5.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
video:69kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: unknown
}}}
This gives me one file with_patch1.jpg that looks garbaged.
http://kolbu.ws/~chiller/ffmpeg_bug/with_patch1.jpg
If I re-run the last command with -vframes 100 it generates 60 images,
where image 18 is almost identical to the before_patch1.jpg, except a bit
more blocky.
http://kolbu.ws/~chiller/ffmpeg_bug/with_patch18.jpg
Here is the link to the .ts-file:
http://kolbu.ws/~chiller/ffmpeg_bug/hevc_fail.ts
and all files involved can be viewed here:
http://kolbu.ws/~chiller/ffmpeg_bug/
(The most important ones are attached)
--
Ticket URL: <https://trac.ffmpeg.org/ticket/4888>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list