<div dir="ltr"><div><div><div><div><div>Hi Edward.<br><br></div>Do you have more information on when GStreamer (Orc) specific is using the slow path?<br></div>GStreamer 0.10 was doing it fast, but in my case 1.2 does it slow doing a simply I420 1024x576 to 1280x720 followed by a I420 to BGRA conversion?<br>
<br></div><div>Should we/I create a bug report for it? I think so as main stream Ubuntu runs with the performance penalty. In this context and given implementation for mmx/sse is missing as reported by Edwrad I don't quite see why Andoni could not reproduce it with the version he linked to. <br>
</div><div><br></div>Sebastian D. in your fix for I420 to BGRA conversion I think you wrote it was only a partial implementation. What is missing there?<br><br></div>Kind regards<br></div>Peter Maersk-Moller<br><div><div>
<div><br><br></div></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Dec 30, 2013 at 12:38 PM, Edward Hervey <span dir="ltr"><<a href="mailto:bilboed@bilboed.com" target="_blank">bilboed@bilboed.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
  The culprit is videoscale (or rather ORC used by it).<br>
<br>
  In some cases it attempts to use an ORC instruction (ldreslinb) which<br>
does not have an optimized implementation for mmx or sse. And therefore<br>
goes into a slow path.<br>
<br>
    Edward<br>
<div class="HOEnZb"><div class="h5"><br>
On Sun, 2013-12-29 at 22:27 +0100, Peter Maersk-Moller wrote:<br>
> Hi Andoni.<br>
><br>
><br>
> Thanks for the feedback. Not sure what the upstream ppa is though.<br>
><br>
> Yes my 1.2.2 was first compiled without ORC as the Orc required is<br>
> 0.4.18 and the available version though Ubuntu package system is<br>
> 0.4.17. However I compiled the 0.4.18 version. When configuring the<br>
> gst-plugin-base for version 1.2.2 I now see<br>
><br>
> configure: *** Orc acceleration enabled.<br>
><br>
><br>
> Nevertheless after recompilation and installation, I still see the<br>
> heavy performance penalty. That said, when I remove the format BGRA in<br>
> the caps and subsequently have no format conversion, I see excellent<br>
> performance.<br>
><br>
><br>
> That said, why do I see the performance penalty when I believe I run<br>
> the Orc enabled version and how does one go about verifying that it is<br>
> in fact Orc enabled?<br>
><br>
><br>
> Another thing is that it is a bit worrisome that plain vanilla Ubuntu<br>
> shows the performance penalty too as it kind of falls back on<br>
> GStreamer whether or not the error is there or in the Ubuntu package<br>
> of GStreamer.<br>
><br>
><br>
> Seems time for a bug report. Have to check on how to do that again.<br>
><br>
><br>
><br>
> Kind regards<br>
><br>
> Peter<br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
> On Sun, Dec 29, 2013 at 7:48 PM, Andoni Morales <<a href="mailto:ylatuya@gmail.com">ylatuya@gmail.com</a>><br>
> wrote:<br>
><br>
><br>
><br>
>         2013/12/29 Peter Maersk-Moller <<a href="mailto:pmaersk@gmail.com">pmaersk@gmail.com</a>><br>
>                 Hi<br>
><br>
><br>
>                 I'm observing a heavy performance penalty for using<br>
>                 GStreamer 1.0 (1.2.0, 1.2.1, 1.2.2) over GStreamer<br>
>                 0.10 (0.10.36). The penalty is in the area of 3-4<br>
>                 times as much CPU time consumed for decoding a given<br>
>                 video clip. Is this a known issue?<br>
><br>
><br>
>                 For reproduction purpose (to generate a common test<br>
>                 clip), you can use the following pipeline for about 60<br>
>                 seconds before hitting ctrl-c<br>
><br>
>                 gst-launch-1.0 -e -v videotestsrc pattern=18<br>
>                 is-live=true ! 'video/x-raw, width=1024, height=576,<br>
>                 format=I420' ! videoconvert ! x264enc ! 'video/x-h264,<br>
>                 profile=main' ! avimux ! filesink<br>
>                 location=video1024x576.mp4<br>
><br>
><br>
>                 The two nearly identical pipelines used for testing<br>
>                 are shown further down in this email. The cpu usage is<br>
>                 estimated using top. Here is what I see:<br>
><br>
>                   PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM<br>
>                 TIME+  COMMAND<br>
>                  5757 stream    20   0  403m  43m 7272 S  28.6  1.1<br>
>                 0:05.76 gst-launch-0.10<br>
><br>
>                   PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM<br>
>                 TIME+  COMMAND<br>
>                  5763 stream    20   0 1068m  61m 5232 S  85.5  1.6<br>
>                 0:07.22 gst-launch-1.0<br>
><br>
><br>
>                 So the 0.10 is using roughly 28.6% CPU while 1.0 is<br>
>                 using 85.6%<br>
><br>
><br>
>                 The pipelines used for playing the clip are these:<br>
><br>
>                 /usr/bin/gst-launch-0.10 -v filesrc<br>
>                 location=./video1024x576.mp4 do-timestamp=true !<br>
>                 decodebin2 name=decoder ! ffmpegcolorspace !<br>
>                 videorate ! videoscale ! ffmpegcolorspace !<br>
>                 'video/x-raw-rgb, bpp=(int)32, depth=(int)32,<br>
>                 endianness=(int)4321, red_mask=(int)65280,<br>
>                 green_mask=(int)16711680, blue_mask=(int)-16777216,<br>
>                 pixel-aspect-ratio=(fraction)1/1,<br>
>                 interlaced=(boolean)false, width=(int)1280,<br>
>                 height=(int)720, framerate=(fraction)25/1' ! queue !<br>
>                 fakesink silent=true sync=true<br>
><br>
>                 /usr/local/bin/gst-launch-1.0 -v filesrc<br>
>                 location=./video1024x576.mp4 do-timestamp=true !<br>
>                 decodebin name=decoder ! videoconvert ! videorate !<br>
>                 videoscale ! videoconvert ! 'video/x-raw,<br>
>                 format=(string)BGRA, pixel-aspect-ratio=(fraction)1/1,<br>
>                 interlace-mode=(string)progressive, width=(int)1280,<br>
>                 height=(int)720, framerate=(fraction)25/1' ! identity<br>
>                 silent=true ! queue ! fakesink silent=true sync=true<br>
><br>
><br>
>                 I used to be able to easily live decode up to 10 video<br>
>                 clip concurrent of 720p video on my 8 core server<br>
>                 while maintaining enough spare CPU to also mix video<br>
>                 en most importanly, encode video again in 720p. That<br>
>                 is not really possibly any more with the heavy penalty<br>
>                 in performance I have to pay.<br>
><br>
><br>
><br>
>         It looks like it's caused by the I420->BGRA colorspace<br>
>         conversion. You are most likely not building gst-plugins-base<br>
>         with ORC support. I was able to reproduce the performance<br>
>         issue with the stock version of GStreamer shipped in Ubuntu<br>
>         but not with the upstream ppa<br>
>         (<a href="https://launchpad.net/~gstreamer-developers/+archive/ppa" target="_blank">https://launchpad.net/~gstreamer-developers/+archive/ppa</a>).<br>
><br>
><br>
><br>
>         Cheers,<br>
><br>
>         Andoni<br>
><br>
><br>
><br>
><br>
>                 Kind regards<br>
><br>
>                 Peter Maersk-Moller<br>
><br>
><br>
>                 _______________________________________________<br>
>                 gstreamer-devel mailing list<br>
>                 <a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
>                 <a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
><br>
><br>
><br>
><br>
>         --<br>
>         Andoni Morales Alastruey<br>
><br>
>         LongoMatch:The Digital Coach<br>
>         <a href="http://www.longomatch.ylatuya.es" target="_blank">http://www.longomatch.ylatuya.es</a><br>
><br>
>         _______________________________________________<br>
>         gstreamer-devel mailing list<br>
>         <a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
>         <a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
><br>
><br>
><br>
> _______________________________________________<br>
> gstreamer-devel mailing list<br>
> <a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
> <a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
<br>
--<br>
</div></div><span class="HOEnZb"><font color="#888888">Edward Hervey<br>
<a href="mailto:bilboed@bilboed.com">bilboed@bilboed.com</a><br>
</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</div></div></blockquote></div><br></div>