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

        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