[FFmpeg-trac] #7523(undetermined:new): VAAPI: Fail to Decode an H264 LP Multi-Slice Encoded Video
FFmpeg
trac at avcodec.org
Mon Oct 29 20:47:41 EET 2018
#7523: VAAPI: Fail to Decode an H264 LP Multi-Slice Encoded Video
-------------------------------------+-------------------------------------
Reporter: uartie | Type: defect
Status: new | Priority: critical
Component: | Version: git-
undetermined | master
Keywords: vaapi | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
'''Summary of the bug:'''
With ffmpeg-vaapi on iHD driver, unable to decode video that was encoded
with AVC low-power multi-slice.
On the flip-side, the i965 driver refuses even to encode with low-power
multi-slice (i.e. VAConfigAttribEncSliceStructure returns not supported).
Not sure if that is a driver bug or not.
Multi-slice support enabled in:
{{{
commit a769e72c750e113c75b1f106296ade94caa28748
Author: Mark Thompson <sw at jkqxz.net>
Date: Sun Sep 23 22:52:58 2018 +0100
vaapi_encode_h264: Enable multiple-slice support
}}}
'''How to reproduce:'''
''Encode:''
{{{
% LIBVA_DRIVER_NAME=iHD ffmpeg -hwaccel vaapi -vaapi_device
/dev/dri/renderD128 \
-v verbose -f rawvideo -pix_fmt yuv420p -s:v 1280x720 -i ./input.yuv \
-vf 'format=nv12,hwupload' -c:v h264_vaapi -low_power 1 -profile:v high
\
-g 30 -qp 14 -bf 0 -quality 4 -slices 4 -vframes 10 -y test.h264
}}}
''Encode Output:''
{{{
ffmpeg version N-92277-ga769e72c750e Copyright (c) 2000-2018 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 --enable-nonfree --enable-gpl
libavutil 56. 20.100 / 56. 20.100
libavcodec 58. 34.100 / 58. 34.100
libavformat 58. 19.102 / 58. 19.102
libavdevice 58. 4.106 / 58. 4.106
libavfilter 7. 38.100 / 7. 38.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100
[AVHWDeviceContext @ 0x1879880] Opened VA display via DRM device
/dev/dri/renderD128.
[AVHWDeviceContext @ 0x1879880] libva: VA-API version 1.4.0
[AVHWDeviceContext @ 0x1879880] libva: va_getDriverName() returns 0
[AVHWDeviceContext @ 0x1879880] libva: User requested driver 'iHD'
[AVHWDeviceContext @ 0x1879880] libva: Trying to open
/home/uaeoff/Work/workspace/media/install/lib/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x1879880] libva: Found init function
__vaDriverInit_1_4
[AVHWDeviceContext @ 0x1879880] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x1879880] Initialised VAAPI connection: version 1.4
[AVHWDeviceContext @ 0x1879880] VAAPI driver: Intel iHD driver - 1.0.0.
[AVHWDeviceContext @ 0x1879880] Driver not found in known nonstandard
list, using standard behaviour.
[rawvideo @ 0x18b4340] Estimating duration from bitrate, this may be
inaccurate
Input #0, rawvideo, from '/home/uaeoff/Work/workspace/media/input.yuv':
Duration: 00:00:24.16, start: 0.000000, bitrate: 276480 kb/s
Stream #0:0: Video: rawvideo, 1 reference frame (I420 / 0x30323449),
yuv420p, 1280x720, 276480 kb/s, 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (h264_vaapi))
Press [q] to stop, [?] for help
[graph 0 input from stream 0:0 @ 0x18cff00] w:1280 h:720 pixfmt:yuv420p
tb:1/25 fr:25/1 sar:0/1 sws_param:flags=2
[auto_scaler_0 @ 0x18d33c0] w:iw h:ih flags:'bicubic' interl:0
[Parsed_format_0 @ 0x18ce540] 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 @ 0x18d33c0] w:1280 h:720 fmt:yuv420p sar:0/1 -> w:1280
h:720 fmt:nv12 sar:0/1 flags:0x4
[h264_vaapi @ 0x18c1240] Input surface format is nv12.
[h264_vaapi @ 0x18c1240] Using VAAPI profile VAProfileH264High (7).
[h264_vaapi @ 0x18c1240] Using VAAPI entrypoint VAEntrypointEncSliceLP
(8).
[h264_vaapi @ 0x18c1240] Using VAAPI render target format YUV420 (0x1).
[h264_vaapi @ 0x18c1240] Using constant-quality mode.
[h264_vaapi @ 0x18c1240] Using intra and P-frames (supported references: 3
/ 0).
[h264_vaapi @ 0x18c1240] Slice count rounded up to 45 (from 4) due to
driver constraints on slice structure.
[h264_vaapi @ 0x18c1240] Encoding pictures with 45 slices (default size 1
block rows).
[h264_vaapi @ 0x18c1240] All wanted packed headers available (wanted 0xd,
found 0x1f).
[h264_vaapi @ 0x18c1240] Using level 3.1.
Output #0, h264, to 'test.h264':
Metadata:
encoder : Lavf58.19.102
Stream #0:0: Video: h264 (h264_vaapi) (High), 1 reference frame,
vaapi_vld, 1280x720, q=-1--1, 25 fps, 25 tbn, 25 tbc
Metadata:
encoder : Lavc58.34.100 h264_vaapi
No more output streams to write to, finishing.
frame= 10 fps=0.0 q=-0.0 Lsize= 3444kB time=00:00:00.40
bitrate=70526.0kbits/s speed=3.19x
video:3444kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 0.000000%
Input file #0 (/home/uaeoff/Work/workspace/media/src/otc-
media/assets/yuv/720p5994_parkrun_ter_1280x720_I420.yuv):
Input stream #0:0 (video): 10 packets read (13824000 bytes); 10 frames
decoded;
Total: 10 packets (13824000 bytes) demuxed
Output file #0 (test.h264):
Output stream #0:0 (video): 10 frames encoded; 10 packets muxed (3526298
bytes);
Total: 10 packets (3526298 bytes) muxed
[AVIOContext @ 0x18cbc80] Statistics: 0 seeks, 14 writeouts
[AVIOContext @ 0x18bcac0] Statistics: 13824000 bytes read, 0 seeks
}}}
''Decode:''
{{{
% LIBVA_DRIVER_NAME=iHD ffmpeg -hwaccel vaapi -vaapi_device
/dev/dri/renderD128 \
-v verbose -i ./test.h264 -pix_fmt yuv420p -f rawvideo \
-vsync passthrough -vframes 10 -y test.yuv
}}}
''Decode Output:''
{{{
ffmpeg version N-92277-ga769e72c750e Copyright (c) 2000-2018 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 --enable-nonfree --enable-gpl
libavutil 56. 20.100 / 56. 20.100
libavcodec 58. 34.100 / 58. 34.100
libavformat 58. 19.102 / 58. 19.102
libavdevice 58. 4.106 / 58. 4.106
libavfilter 7. 38.100 / 7. 38.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100
[AVHWDeviceContext @ 0x885500] Opened VA display via DRM device
/dev/dri/renderD128.
[AVHWDeviceContext @ 0x885500] libva: VA-API version 1.4.0
[AVHWDeviceContext @ 0x885500] libva: va_getDriverName() returns 0
[AVHWDeviceContext @ 0x885500] libva: User requested driver 'iHD'
[AVHWDeviceContext @ 0x885500] libva: Trying to open
/home/uaeoff/Work/workspace/media/install/lib/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x885500] libva: Found init function
__vaDriverInit_1_4
[AVHWDeviceContext @ 0x885500] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x885500] Initialised VAAPI connection: version 1.4
[AVHWDeviceContext @ 0x885500] VAAPI driver: Intel iHD driver - 1.0.0.
[AVHWDeviceContext @ 0x885500] Driver not found in known nonstandard list,
using standard behaviour.
[h264 @ 0x8c1380] Reinit context to 1280x720, pix_fmt: yuv420p
[h264 @ 0x8c1380] slice type 32 too large at 80
[h264 @ 0x8c1380] decode_slice_header error
[h264 @ 0x8c1380] slice type 32 too large at 160
<snip>
[h264 @ 0x8c1380] concealing 3520 DC, 3520 AC, 3520 MV errors in I frame
[h264 @ 0x8c1380] slice type 32 too large at 80
[h264 @ 0x8c1380] decode_slice_header error
[h264 @ 0x8c1380] slice type 32 too large at 160
[h264 @ 0x8c1380] decode_slice_header error
<snip>
[h264 @ 0x8c1380] concealing 3520 DC, 3520 AC, 3520 MV errors in P frame
<snip>
[AVHWFramesContext @ 0x7f44780a1e00] Failed to sync surface 0x1c: 23
(internal decoding error).
[h264 @ 0x94a1c0] Failed to transfer data to output frame: -5.
Error while processing the decoded data for stream #0:0
[AVIOContext @ 0x8c2e80] Statistics: 0 seeks, 0 writeouts
[AVIOContext @ 0x8c8740] Statistics: 3526298 bytes read, 0 seeks
<snip>
Conversion failed!
}}}
'''Software Stack:'''
{{{
libva (master) heads/master-0-g285267586a3d
https://github.com/01org/libva
gmmlib (master) heads/master-0-gaedd82e2da01
https://github.com/intel/gmmlib
intel-media-driver (master) heads/master-0-g9d258e13eba1
https://github.com/intel/media-driver
intel-vaapi-driver (master) heads/master-0-gdc20b6405a53
https://github.com/01org/intel-vaapi-driver
msdk (master) heads/master-0-gc6b3d1cd4569 https://github.com/Intel-
Media-SDK/MediaSDK
ffmpeg (master) heads/master-0-ga769e72c750e
https://git.ffmpeg.org/ffmpeg
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/7523>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list