Opened 8 years ago
Closed 8 years ago
#7699 closed defect (fixed)
[regression] vaapi: Zero refs for a frame with P or B slices
| Reported by: | U. Artie Eoff | Owned by: | |
|---|---|---|---|
| Priority: | important | Component: | avcodec |
| Version: | git-master | Keywords: | vaapi regression |
| Cc: | sw@jkqxz.net, zhong.li@intel.com | Blocked By: | |
| Blocking: | Reproduced by developer: | no | |
| Analyzed by developer: | no |
Description
Summary of the bug:
Since commit:
commit 362992e94bccca225d180e791f7e24858efb857d
Author: Mark Thompson <sw@jkqxz.net>
Date: Thu Dec 20 20:39:59 2018 +0000
vaapi_encode_h265: Support more complex reference structures
The reference picture sets are now constructed directly from the DPB
information.
Unable to decode HEVC 8-bit and 10-bit videos that were encoded by hevc_vaapi with g > 1 (GOP) and bf == 0 or bf == 1 or bf == 3 (B-frames) in any RC-mode (CQP, CBR, VBR).
This can be reproduced with both iHD and i965 intel drivers.
How to reproduce:
% ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 \
-v verbose -f rawvideo -pix_fmt yuv420p -s:v 1920x1080 \
-i input.yuv -vf 'format=nv12,hwupload' -c:v hevc_vaapi \
-g 30 -qp 14 -bf 0 -vframes 10 -y output.h265
ffmpeg version N-93014-g362992e94bcc Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8 (GCC)
configuration: --prefix=/home/uaeoff/Work/workspace/media/install --disable-static --enable-shared --enable-libdrm --enable-vaapi --enable-libmfx --disable-amf --disable-audiotoolbox --disable-cuda --disable-cuda-sdk --disable-cuvid --disable-d3d11va --disable-dxva2 --disable-libnpp --disable-mmal --disable-nvdec --disable-nvenc --disable-omx --disable-omx-rpi --disable-rkmpp --disable-v4l2-m2m --disable-vdpau --disable-videotoolbox
libavutil 56. 26.100 / 56. 26.100
libavcodec 58. 44.100 / 58. 44.100
libavformat 58. 26.100 / 58. 26.100
libavdevice 58. 6.101 / 58. 6.101
libavfilter 7. 48.100 / 7. 48.100
libswscale 5. 4.100 / 5. 4.100
libswresample 3. 4.100 / 3. 4.100
[AVHWDeviceContext @ 0x1f01680] Opened VA display via DRM device /dev/dri/renderD128.
[AVHWDeviceContext @ 0x1f01680] libva: VA-API version 1.4.0
[AVHWDeviceContext @ 0x1f01680] libva: va_getDriverName() returns 0
[AVHWDeviceContext @ 0x1f01680] libva: Trying to open /home/uaeoff/Work/workspace/media/install/lib/dri/i965_drv_video.so
[AVHWDeviceContext @ 0x1f01680] libva: Found init function __vaDriverInit_1_4
[AVHWDeviceContext @ 0x1f01680] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x1f01680] Initialised VAAPI connection: version 1.4
[AVHWDeviceContext @ 0x1f01680] VAAPI driver: Intel i965 driver for Intel(R) Kaby Lake - 2.4.0.pre1 (2.4.0.pre1).
[AVHWDeviceContext @ 0x1f01680] Driver not found in known nonstandard list, using standard behaviour.
[rawvideo @ 0x1f123c0] Estimating duration from bitrate, this may be inaccurate
Input #0, rawvideo, from 'input.yuv':
Duration: 00:00:06.00, start: 0.000000, bitrate: 622080 kb/s
Stream #0:0: Video: rawvideo, 1 reference frame (I420 / 0x30323449), yuv420p, 1920x1080, 622080 kb/s, 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> hevc (hevc_vaapi))
Press [q] to stop, [?] for help
[graph 0 input from stream 0:0 @ 0x1f24480] w:1920 h:1080 pixfmt:yuv420p tb:1/25 fr:25/1 sar:0/1 sws_param:flags=2
[auto_scaler_0 @ 0x1f27980] w:iw h:ih flags:'bicubic' interl:0
[Parsed_format_0 @ 0x1f23b40] auto-inserting filter 'auto_scaler_0' between the filter 'graph 0 input from stream 0:0' and the filter 'Parsed_format_0'
[auto_scaler_0 @ 0x1f27980] w:1920 h:1080 fmt:yuv420p sar:0/1 -> w:1920 h:1080 fmt:nv12 sar:0/1 flags:0x4
[hevc_vaapi @ 0x1f1fd40] Input surface format is nv12.
[hevc_vaapi @ 0x1f1fd40] Using VAAPI profile VAProfileHEVCMain (17).
[hevc_vaapi @ 0x1f1fd40] Using VAAPI entrypoint VAEntrypointEncSlice (6).
[hevc_vaapi @ 0x1f1fd40] Using VAAPI render target format YUV420 (0x1).
[hevc_vaapi @ 0x1f1fd40] Using constant-quality mode.
[hevc_vaapi @ 0x1f1fd40] Using intra and P-frames (supported references: 3 / 1).
[hevc_vaapi @ 0x1f1fd40] All wanted packed headers available (wanted 0xd, found 0x1f).
[hevc_vaapi @ 0x1f1fd40] Using level 4.
Output #0, hevc, to 'output.h265':
Metadata:
encoder : Lavf58.26.100
Stream #0:0: Video: hevc (hevc_vaapi) (Main), 1 reference frame, vaapi_vld, 1920x1080, q=-1--1, 25 fps, 25 tbn, 25 tbc
Metadata:
encoder : Lavc58.44.100 hevc_vaapi
No more output streams to write to, finishing.
frame= 10 fps=0.0 q=-0.0 Lsize= 1261kB time=00:00:00.40 bitrate=25818.6kbits/s speed=3.53x
video:1261kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
Input file #0 (input.yuv):
Input stream #0:0 (video): 10 packets read (31104000 bytes); 10 frames decoded;
Total: 10 packets (31104000 bytes) demuxed
Output file #0 (output.h265):
Output stream #0:0 (video): 10 frames encoded; 10 packets muxed (1290930 bytes);
Total: 10 packets (1290930 bytes) muxed
[AVIOContext @ 0x1f20b40] Statistics: 0 seeks, 5 writeouts
[AVIOContext @ 0x1f1b600] Statistics: 31104000 bytes read, 0 seeks
% ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 \
-v verbose -i output.h265 -pix_fmt yuv420p -f rawvideo \
-vsync passthrough -vframes 10 -y output.yuv
ffmpeg version N-93014-g362992e94bcc Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8 (GCC)
configuration: --prefix=/home/uaeoff/Work/workspace/media/install --disable-static --enable-shared --enable-libdrm --enable-vaapi --enable-libmfx --disable-amf --disable-audiotoolbox --disable-cuda --disable-cuda-sdk --disable-cuvid --disable-d3d11va --disable-dxva2 --disable-libnpp --disable-mmal --disable-nvdec --disable-nvenc --disable-omx --disable-omx-rpi --disable-rkmpp --disable-v4l2-m2m --disable-vdpau --disable-videotoolbox
libavutil 56. 26.100 / 56. 26.100
libavcodec 58. 44.100 / 58. 44.100
libavformat 58. 26.100 / 58. 26.100
libavdevice 58. 6.101 / 58. 6.101
libavfilter 7. 48.100 / 7. 48.100
libswscale 5. 4.100 / 5. 4.100
libswresample 3. 4.100 / 3. 4.100
[AVHWDeviceContext @ 0x9e0500] Opened VA display via DRM device /dev/dri/renderD128.
[AVHWDeviceContext @ 0x9e0500] libva: VA-API version 1.4.0
[AVHWDeviceContext @ 0x9e0500] libva: va_getDriverName() returns 0
[AVHWDeviceContext @ 0x9e0500] libva: Trying to open /home/uaeoff/Work/workspace/media/install/lib/dri/i965_drv_video.so
[AVHWDeviceContext @ 0x9e0500] libva: Found init function __vaDriverInit_1_4
[AVHWDeviceContext @ 0x9e0500] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x9e0500] Initialised VAAPI connection: version 1.4
[AVHWDeviceContext @ 0x9e0500] VAAPI driver: Intel i965 driver for Intel(R) Kaby Lake - 2.4.0.pre1 (2.4.0.pre1).
[AVHWDeviceContext @ 0x9e0500] Driver not found in known nonstandard list, using standard behaviour.
Input #0, hevc, from 'output.h265':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: hevc (Main), 1 reference frame, yuv420p(tv), 1920x1080 (1920x1088), 25 fps, 25 tbr, 1200k tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (hevc (native) -> rawvideo (native))
Press [q] to stop, [?] for help
[hevc @ 0xa3e100] Zero refs for a frame with P or B slices.
[hevc @ 0xa3e100] Error parsing NAL unit #0.
[hevc @ 0xa5fcc0] Zero refs for a frame with P or B slices.
[hevc @ 0xa5fcc0] Error parsing NAL unit #0.
[hevc @ 0xa15400] Zero refs for a frame with P or B slices.
[hevc @ 0xa15400] Error parsing NAL unit #0.
[hevc @ 0xa25880] Zero refs for a frame with P or B slices.
[hevc @ 0xa25880] Error parsing NAL unit #0.
[hevc @ 0xa2e540] Zero refs for a frame with P or B slices.
[hevc @ 0xa2e540] Error parsing NAL unit #0.
[hevc @ 0xacb1c0] Zero refs for a frame with P or B slices.
[hevc @ 0xacb1c0] Error parsing NAL unit #0.
[hevc @ 0xadb8c0] Zero refs for a frame with P or B slices.
[hevc @ 0xadb8c0] Error parsing NAL unit #0.
[hevc @ 0xaec100] Zero refs for a frame with P or B slices.
[hevc @ 0xaec100] Error parsing NAL unit #0.
[graph 0 input from stream 0:0 @ 0x1560bc0] w:1920 h:1080 pixfmt:nv12 tb:1/1200000 fr:25/1 sar:0/1 sws_param:flags=2
[auto_scaler_0 @ 0x1563100] w:iw h:ih flags:'bicubic' interl:0
[format @ 0x1561440] auto-inserting filter 'auto_scaler_0' between the filter 'Parsed_null_0' and the filter 'format'
[auto_scaler_0 @ 0x1563100] w:1920 h:1080 fmt:nv12 sar:0/1 -> w:1920 h:1080 fmt:yuv420p sar:0/1 flags:0x4
Output #0, rawvideo, to 'output.yuv':
Metadata:
encoder : Lavf58.26.100
Stream #0:0: Video: rawvideo, 1 reference frame (I420 / 0x30323449), yuv420p, 1920x1080, q=2-31, 622080 kb/s, 25 fps, 25 tbn, 25 tbc
Metadata:
encoder : Lavc58.44.100 rawvideo
Error while decoding stream #0:0: Invalid data found when processing input
[hevc @ 0x9f4000] Zero refs for a frame with P or B slices.
[hevc @ 0x9f4000] Error parsing NAL unit #0.
Error while decoding stream #0:0: Invalid data found when processing input
Last message repeated 7 times
No more output streams to write to, finishing.
frame= 1 fps=0.0 q=-0.0 Lsize= 3038kB time=00:00:00.04 bitrate=622080.0kbits/s speed=1.57x
video:3038kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
Input file #0 (output.h265):
Input stream #0:0 (video): 10 packets read (1290930 bytes); 1 frames decoded;
Total: 10 packets (1290930 bytes) demuxed
Output file #0 (output.yuv):
Output stream #0:0 (video): 1 frames encoded; 1 packets muxed (3110400 bytes);
Total: 1 packets (3110400 bytes) muxed
[AVIOContext @ 0x9f7f40] Statistics: 0 seeks, 12 writeouts
[AVIOContext @ 0x9fa180] Statistics: 1290930 bytes read, 0 seeks
Conversion failed!
Patches should be submitted to the ffmpeg-devel mailing list and not this bug tracker.
Change History (2)
comment:1 by , 8 years ago
| Keywords: | regression added; hevc h265 removed |
|---|---|
| Priority: | normal → important |
comment:2 by , 8 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Note:
See TracTickets
for help on using tickets.



Fixed in 44bcccb7f0c43cb40f1e61f6e1e19cf2ab266c57