Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-112312

QFFmpeg EGL VAAPI failures

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P1: Critical
    • None
    • 6.4.3
    • Multimedia
    • None
    • Linux/Other display system

    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).

      https://github.com/qt/qtmultimedia/blob/6.4.3/src/plugins/multimedia/ffmpeg/qffmpeghwaccel_vaapi.cpp#L304

      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

        Activity

          People

            artemiy Artem Dyomin
            skinkie Stefan de Konink
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: