Details
-
Bug
-
Resolution: Fixed
-
P1: Critical
-
6.4.3
-
-
f6d6ec8f6 (dev), 2d720a1c1 (6.7), c071bcc9e (tqtc/lts-6.5)
Description
When using the new FFmpeg backend for QtMultimedia (which works a lot better than gstreamer, thanks) and use hardware acceleration I end up with a lot of errors namely eglImageTargetTexture2D failed.
It does not matter how many QML Video element are active. From the second time getTextures is called the glActiveTexture already replies with GL_INVALID_OPERATION (this is not checked for, but I added some extra debug code).
It is not that the video does not play, it does. There are quite a lot of errors (likely for every frame) and it seems that it causes playout to hang, opposed to the software decoder. I read some suggestion that this might be caused be trying to bind the active texture.
I have tested this on an older AMD iGPU and Intel iGPU.
libva info: VA-API version 1.17.0 libva info: Trying to open /usr/lib/dri/r600_drv_video.so libva info: Found init function __vaDriverInit_1_17 libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.17 (libva 2.18.0) vainfo: Driver version: Mesa Gallium driver 23.0.1 for AMD SUMO (DRM 2.50.0 / 6.1.21-0-lts, LLVM 16.0.0) vainfo: Supported config attributes per profile/entrypoint pair VAProfileMPEG2Simple/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VA_RT_FORMAT_YUV422 VAProfileMPEG2Main/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VA_RT_FORMAT_YUV422 VAProfileH264ConstrainedBaseline/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VA_RT_FORMAT_YUV422 VAProfileH264Main/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VA_RT_FORMAT_YUV422 VAProfileH264High/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VA_RT_FORMAT_YUV422 VAProfileNone/VAEntrypointVideoProc VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VA_RT_FORMAT_YUV420_10 VA_RT_FORMAT_RGB32 VA_RT_FORMAT_YUV420_10BPP
libva info: VA-API version 1.17.0 libva info: Trying to open /usr/lib/dri/iHD_drv_video.so libva info: va_openDriver() returns -1 libva info: Trying to open /usr/lib/dri/i965_drv_video.so libva info: Found init function __vaDriverInit_1_10 libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.17 (libva 2.18.0) vainfo: Driver version: Intel i965 driver for Intel(R) CherryView - 2.4.1 vainfo: Supported config attributes per profile/entrypoint pair VAProfileMPEG2Simple/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL VAProfileMPEG2Simple/VAEntrypointEncSlice VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VAConfigAttribRateControl : VA_RC_CQP VAConfigAttribEncPackedHeaders : VA_ENC_PACKED_HEADER_SEQUENCE VA_ENC_PACKED_HEADER_PICTURE VA_ENC_PACKED_HEADER_MISC VAConfigAttribEncMaxRefFrames : l0=1 l1=1 VAConfigAttribEncQualityRange : number of supported quality levels is 1 VAProfileMPEG2Main/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL VAProfileMPEG2Main/VAEntrypointEncSlice VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VAConfigAttribRateControl : VA_RC_CQP VAConfigAttribEncPackedHeaders : VA_ENC_PACKED_HEADER_SEQUENCE VA_ENC_PACKED_HEADER_PICTURE VA_ENC_PACKED_HEADER_MISC VAConfigAttribEncMaxRefFrames : l0=1 l1=1 VAConfigAttribEncQualityRange : number of supported quality levels is 1 VAProfileH264ConstrainedBaseline/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VA_RT_FORMAT_YUV400 VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL VAProfileH264ConstrainedBaseline/VAEntrypointEncSlice VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VAConfigAttribRateControl : VA_RC_CBR VA_RC_VBR VA_RC_CQP VAConfigAttribEncPackedHeaders : VA_ENC_PACKED_HEADER_SEQUENCE VA_ENC_PACKED_HEADER_PICTURE VA_ENC_PACKED_HEADER_SLICE VA_ENC_PACKED_HEADER_MISC VA_ENC_PACKED_HEADER_RAW_DATA VAConfigAttribEncMaxRefFrames : l0=4 l1=1 VAConfigAttribEncMaxSlices : 32 VAConfigAttribEncSliceStructure : VA_ENC_SLICE_STRUCTURE_ARBITRARY_MACROBLOCKS VAConfigAttribEncQualityRange : number of supported quality levels is 2 VAConfigAttribEncROI : num_roi_regions=8 roi_rc_priority_support=0 roi_rc_qp_delta_support=1 VAConfigAttribEncRateControlExt : max_num_temporal_layers_minus1=3 temporal_layer_bitrate_control_flag=1 VAProfileH264Main/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VA_RT_FORMAT_YUV400 VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL VAProfileH264Main/VAEntrypointEncSlice VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VAConfigAttribRateControl : VA_RC_CBR VA_RC_VBR VA_RC_CQP VAConfigAttribEncPackedHeaders : VA_ENC_PACKED_HEADER_SEQUENCE VA_ENC_PACKED_HEADER_PICTURE VA_ENC_PACKED_HEADER_SLICE VA_ENC_PACKED_HEADER_MISC VA_ENC_PACKED_HEADER_RAW_DATA VAConfigAttribEncMaxRefFrames : l0=4 l1=1 VAConfigAttribEncMaxSlices : 32 VAConfigAttribEncSliceStructure : VA_ENC_SLICE_STRUCTURE_ARBITRARY_MACROBLOCKS VAConfigAttribEncQualityRange : number of supported quality levels is 2 VAConfigAttribEncROI : num_roi_regions=8 roi_rc_priority_support=0 roi_rc_qp_delta_support=1 VAConfigAttribEncRateControlExt : max_num_temporal_layers_minus1=3 temporal_layer_bitrate_control_flag=1 VAProfileH264High/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VA_RT_FORMAT_YUV400 VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL VAProfileH264High/VAEntrypointEncSlice VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VAConfigAttribRateControl : VA_RC_CBR VA_RC_VBR VA_RC_CQP VAConfigAttribEncPackedHeaders : VA_ENC_PACKED_HEADER_SEQUENCE VA_ENC_PACKED_HEADER_PICTURE VA_ENC_PACKED_HEADER_SLICE VA_ENC_PACKED_HEADER_MISC VA_ENC_PACKED_HEADER_RAW_DATA VAConfigAttribEncMaxRefFrames : l0=4 l1=1 VAConfigAttribEncMaxSlices : 32 VAConfigAttribEncSliceStructure : VA_ENC_SLICE_STRUCTURE_ARBITRARY_MACROBLOCKS VAConfigAttribEncQualityRange : number of supported quality levels is 2 VAConfigAttribEncROI : num_roi_regions=8 roi_rc_priority_support=0 roi_rc_qp_delta_support=1 VAConfigAttribEncRateControlExt : max_num_temporal_layers_minus1=3 temporal_layer_bitrate_control_flag=1 VAProfileH264MultiviewHigh/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VA_RT_FORMAT_YUV400 VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL VAProfileH264MultiviewHigh/VAEntrypointEncSlice VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VAConfigAttribRateControl : VA_RC_CBR VA_RC_VBR VA_RC_CQP VAConfigAttribEncPackedHeaders : VA_ENC_PACKED_HEADER_SEQUENCE VA_ENC_PACKED_HEADER_PICTURE VA_ENC_PACKED_HEADER_SLICE VA_ENC_PACKED_HEADER_MISC VA_ENC_PACKED_HEADER_RAW_DATA VAConfigAttribEncMaxRefFrames : l0=4 l1=1 VAConfigAttribEncMaxSlices : 32 VAConfigAttribEncSliceStructure : VA_ENC_SLICE_STRUCTURE_ARBITRARY_MACROBLOCKS VAConfigAttribEncQualityRange : number of supported quality levels is 1 VAProfileH264StereoHigh/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VA_RT_FORMAT_YUV400 VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL VAProfileH264StereoHigh/VAEntrypointEncSlice VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VAConfigAttribRateControl : VA_RC_CBR VA_RC_VBR VA_RC_CQP VAConfigAttribEncPackedHeaders : VA_ENC_PACKED_HEADER_SEQUENCE VA_ENC_PACKED_HEADER_PICTURE VA_ENC_PACKED_HEADER_SLICE VA_ENC_PACKED_HEADER_MISC VA_ENC_PACKED_HEADER_RAW_DATA VAConfigAttribEncMaxRefFrames : l0=4 l1=1 VAConfigAttribEncMaxSlices : 32 VAConfigAttribEncSliceStructure : VA_ENC_SLICE_STRUCTURE_ARBITRARY_MACROBLOCKS VAConfigAttribEncQualityRange : number of supported quality levels is 1 VAProfileVC1Simple/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL VAProfileVC1Main/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL VAProfileVC1Advanced/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL VAProfileNone/VAEntrypointVideoProc VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VA_RT_FORMAT_YUV422 VA_RT_FORMAT_RGB32 VAProfileJPEGBaseline/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VA_RT_FORMAT_YUV422 VA_RT_FORMAT_YUV444 VA_RT_FORMAT_YUV411 VA_RT_FORMAT_YUV400 VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL VAProfileJPEGBaseline/VAEntrypointEncPicture VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VA_RT_FORMAT_YUV422 VA_RT_FORMAT_YUV444 VA_RT_FORMAT_YUV400 VA_RT_FORMAT_RGB32 VAConfigAttribRateControl : VA_RC_CQP VAConfigAttribEncPackedHeaders : VA_ENC_PACKED_HEADER_RAW_DATA VAConfigAttribEncJPEG : arithmatic_coding_mode=0 progressive_dct_mode=0 non_interleaved_mode=1 differential_mode=0 differential_mode=0 max_num_components=3 max_num_scans=1 max_num_huffman_tables=3 max_num_quantization_tables=3 VAProfileVP8Version0_3/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL VAProfileVP8Version0_3/VAEntrypointEncSlice VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VAConfigAttribRateControl : VA_RC_CBR VA_RC_VBR VA_RC_CQP VAConfigAttribEncMaxRefFrames : l0=1 l1=1 VAConfigAttribEncQualityRange : number of supported quality levels is 2 VAProfileHEVCMain/VAEntrypointVLD VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420 VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL
To activate the software decoder I use LIBVA_DRIVER_NAME=nothing.
Attachments
For Gerrit Dashboard: QTBUG-112312 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
546839,3 | FFmpeg EGL/vaapi: Disable HW accelerated texture conversion when failing | dev | qt/qtmultimedia | Status: MERGED | +2 | 0 |
547404,2 | FFmpeg EGL/vaapi: Disable HW accelerated texture conversion when failing | 6.7 | qt/qtmultimedia | Status: MERGED | +2 | 0 |
547567,1 | FFmpeg EGL/vaapi: Disable HW accelerated texture conversion when failing | 6.6 | qt/qtmultimedia | Status: ABANDONED | +2 | 0 |
554013,2 | FFmpeg EGL/vaapi: Disable HW accelerated texture conversion when failing | tqtc/lts-6.5 | qt/tqtc-qtmultimedia | Status: MERGED | +2 | 0 |