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

High CPU load and lags when playback the video with EGLFS via X11 backend

    XMLWordPrintable

Details

    • Bug
    • Resolution: Cannot Reproduce
    • P2: Important
    • None
    • 5.6.0, 5.6.1, 5.6.2, 5.7.0
    • Multimedia, QPA: EGLFS
    • None

    Description

      Attempt to play a QML video lead to the high CPU load ~300% (where from the 4-cores, the 3 - cores has ~100% load). Also I see in console this output:

      Warning: "A lot of buffers are being dropped."
      Warning: "A lot of buffers are being dropped."
      Warning: "A lot of buffers are being dropped."

      and the AVI video has ~0.3-0.5 FPS.

      The gst-inspect shows this video sinks:

      root@apalis-t30:~/Downloads# gst-inspect | grep sink
      ximagesink: ximagesink: Video sink
      autodetect: autovideosink: Auto video sink
      autodetect: autoaudiosink: Auto audio sink
      playback: playsink: Player Sink
      omx: nv_omx_audiosink: OpenMAX IL audiosink element
      omx: nv_gstbin_videosink: OpenMAX IL videosink element
      omx: nv_omx_videosink: OpenMAX IL videosink element
      omx: nv_omx_hdmi_videosink: OpenMAX IL hdmi videosink element
      omx: nv_omx_overlaysink: OpenMAX IL overlaysink element
      omx: nv_gl_eglimagesink: OpenMAX IL videosink element
      alsa: alsasink: Audio sink (ALSA)
      tcp: tcpclientsink: TCP client sink
      tcp: tcpserversink: TCP server sink
      tcp: multifdsink: Multi filedescriptor sink
      gio: giosink: GIO sink
      gio: giostreamsink: GIO stream sink
      nvxvimagesink: nvxvimagesink: Video sink
      udp: udpsink: UDP packet sender
      udp: multiudpsink: UDP packet sender
      udp: dynudpsink: UDP packet sender
      app: appsink: AppSink
      xvimagesink: xvimagesink: Video sink
      coreelements: fakesink: Fake Sink
      coreelements: fdsink: Filedescriptor Sink
      coreelements: filesink: File Sink
      root@apalis-t30:~/Downloads#

      [1] Then I try to play the video using the vendor-specific 'nvgstplayer' utility with different NV-based video sinks, I got the CPU load ~50%-100% (depends on video format), that it is normal (seems, the HW acceleration is enabled):

      $nvgstplayer -i movie.avi --svs="nv_omx_hdmi_videosink" (~100%)
      $nvgstplayer -i movie.mp4 --svs="nv_omx_hdmi_videosink" (~50%)

      $nvgstplayer -i movie.avi --svs="nv_gl_eglimagesink" (~200%)
      $nvgstplayer -i movie.mp4 --svs="nv_gl_eglimagesink" (~150%)

      $nvgstplayer -i movie.avi --svs="nvxvimagesink" (~120%)
      $nvgstplayer -i movie.mp4 --svs="nvxvimagesink" (~50)

      that is important - I have no lags in video!!!

      [2] Then I try to play a video, using the cpp-based QMediaPlayer class. For this case I set the QT_GSTREAMER_WINDOW_VIDEOSINK and QT_GSTREAMER_WIDGET_VIDEOSINK variables, which contains a video sink name:

      export QT_GSTREAMER_WINDOW_VIDEOSINK=
      export QT_GSTREAMER_WIDGET_VIDEOSINK=
      $./cpp-video-player movie.mp4 (~300%, some lags)
      $./cpp-video-player movie.avi(~300%, very big lags)

      export QT_GSTREAMER_WINDOW_VIDEOSINK=nv_omx_hdmi_videosink
      export QT_GSTREAMER_WIDGET_VIDEOSINK=nv_omx_hdmi_videosink
      $./cpp-video-player movie.mp4 (~50%, no lags)
      $./cpp-video-player movie.avi(~150%, no lags)

      $export QT_GSTREAMER_WINDOW_VIDEOSINK=nv_gl_eglimagesink
      $export QT_GSTREAMER_WIDGET_VIDEOSINK=nv_gl_eglimagesink

      $export QT_GSTREAMER_WINDOW_VIDEOSINK=nvxvimagesink
      $export QT_GSTREAMER_WIDGET_VIDEOSINK=nvxvimagesink

      it does not starts at all, returns:

      X Error of failed request: BadWindow (invalid Window parameter)
      Major opcode of failed request: 3 (X_GetWindowAttributes)
      Resource id in failed request: 0x3
      Serial number of failed request: 7
      Current serial number in output stream: 8

      [3] Next, I had to use a simple QML player (the Video item), with the same set of QT_GSTREAMER_ variables.. But in this case it does nothing, I have very big CPU load and lags:

      $./qml-video-player movie.mp4 (~300%, some lags)
      $./qml-video-player movie.avi(~300%, very big lags)

      So, seems this env variables are ignores for QML!!!

      How it can be avoidet? Is there are any workaround?

      Attachments

        1. qt-config
          2 kB
          Denis Shienkov

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              valentyn.doroshchuk Valentyn Doroshchuk
              kuzulis Denis Shienkov
              Votes:
              4 Vote for this issue
              Watchers:
              12 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes