<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Hi.</p>
    <p>I'm using a pipeline to display live video from cameras to a QT
      application. Cameras' driver produces NV12 video, and for QT I'm
      using qmlglsink.</p>
    <p>Element qmlglsink seems to only accept RGBA, so I have to make
      the conversion. I'm doing it with this pipeline: v4l2src
      device="/dev/video1" !
      video/x-raw,format=NV12,width=1440,height=1152,framerate=5/1 !
      glupload ! glcolorconvert ! qmlglsink sync=false</p>
    <p>However, I'm getting very poor performance, around 1fps or less,
      and glcolorconvert seems to be the bottleneck. With this pipeline
      I get 25 fps with no problem: v4l2src device="/dev/video1" !
      video/x-raw,format=NV12,width=1440,height=1152,framerate=25/1 !
      glupload ! fakesink silent=false</p>
    <p>With 720x576 video I'm getting a better performance (obvious),
      but I need to use also 1440x1152 because this is video from the 4
      cameras at the same time.</p>
    <p>Possible solutions that might be acceptable for me:</p>
    <ul>
      <li>More efficient way of converting from NV12 to RGBA</li>
      <li>Efficient way of scale down to 720x576, or even less, before
        color conversion</li>
      <li>Two previous options at the same time</li>
      <li>Other solutions you might suggest<br>
      </li>
    </ul>
    <p>I'm running this on an ARM processor (Allwinner A20) with GPU and
      OpenGLES. This processor also have a Video Processing Unit that
      works with VDPAU.</p>
    <p>Thanks</p>
    <p>IƱigo<br>
    </p>
  </body>
</html>