Difference between revisions of "GStreamer Based Image Signal Processor/Performance/Color Space Conversion"

From RidgeRun Developer Connection
Jump to: navigation, search
(Replaced content with "#REDIRECT [https://developer.ridgerun.com/wiki/index.php?title=GStreamer_Based_Image_Signal_Processor/Performance/imx8 i.MX8 Performance]")
(Tag: Replaced)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
<noinclude>
+
#REDIRECT [https://developer.ridgerun.com/wiki/index.php?title=GStreamer_Based_Image_Signal_Processor/Performance/imx8 i.MX8 Performance]
{{GStreamer Based Image Signal Processor/Head|previous=Performance/Debayer|next=Contact Us|keywords=}}
 
</noinclude>
 
 
 
__TOC__
 
 
 
The following section describes some relevant performance measurements for the RGBA to NV12 color space conversion for a few standard resolutions. It begins with a summary of the results detailed on the following sections, as well as the pipelines used to capture such results.
 
 
 
= Benchmarking =
 
 
 
== Pipeline ==
 
 
 
All the measurements below were made using the following minimal pipeline.
 
 
 
<syntaxhighlight lang=bash style="background-color: #f0fff0">
 
$ WIDTH=1920
 
$ HEIGHT=1080
 
 
 
$ gst-launch-1.0 videotestsrc is-live=true ! "video/x-raw,format=(string)RGBA,width=$WIDTH,height=$HEIGHT,framerate=(fraction)30/1" ! queue ! oclcsc ! fakesink -v
 
</syntaxhighlight>
 
 
 
== Summary ==
 
In this summary you can find measurements related with CPU usage, memory, execution time and maximum framerate supported by the CSC algorithm.
 
<html>
 
<center>
 
<table class="wikitable" style="color:black;">
 
  <tr>
 
    <th>Resolution</th>
 
    <th>CPU usage (%) *</th>
 
    <th>Memory (kB) *</th>
 
    <th>Execution Time (ms)</th>
 
  </tr>
 
  <tr>
 
    <td>640x480@30fps</td>
 
    <td>4</td>
 
    <td>18664</td>
 
    <td>2.24</td>
 
  </tr>
 
<tr>
 
    <td>1280x720@30fps</td>
 
    <td>10</td>
 
    <td>19484</td>
 
    <td>6.19</td>
 
</tr>
 
<tr>
 
    <td>1920x1080@30fps</td>
 
    <td>14</td>
 
    <td>21424</td>
 
    <td>13.17</td>
 
</tr>
 
<caption>Table 1. Summary table regarding to the CSC performance for several standard resolutions running at 30fps</caption>
 
</table>
 
</center>
 
</html>
 
 
 
 
 
<span style="color:red"> '''Note:''' take into consideration that these values were taken using the videotestsrc element, and may decrease with a camera source capture. </span>
 
 
 
 
 
<html>
 
<center>
 
<table class="wikitable" style="color:black;">
 
  <tr>
 
    <th>Resolution</th>
 
    <th>Maximum framerate (fps)</th>
 
  </tr>
 
  <tr>
 
    <td>640x480</td>
 
    <td>333</td>
 
  </tr>
 
<tr>
 
    <td>1280x720</td>
 
    <td>120</td>
 
</tr>
 
<tr>
 
    <td>1920x1080</td>
 
    <td>55</td>
 
</tr>
 
<caption>Table 2. Summary table for the maximum framerate using CSC algorithm for several standard resolutions</caption>
 
</table>
 
</center>
 
</html>
 
 
 
=CPU usage=
 
These measurements were taken with '''top''' app to monitor the behavior of the pipeline while running. Notice, however, that videotestsrc was used to generate the buffers and it consumes a lot of CPU, so it is likely the results will differ if a camera is used for capture.
 
[[File:Cpu.png|frame|center|CPU usage for CSC kernel.]]
 
 
 
=Memory usage=
 
These measurements were taken with '''meminfo''' file to see the behavior of the pipeline while running, but it is important to consider that videotestsrc was used to generate the buffers.
 
[[File:Memo.png|frame|center|Memory consumption by CSC kernel.]]
 
 
 
=Maximum Framerate=
 
These measurements were taken with the '''gst-perf''' tool to monitor the behavior of the pipeline while running. When using videotestsrc we are able to process as many buffers as the element can handle, hence the maximum value reported. The image below shows the maximum framerate that the CSC element supports, which depends on the execution time of the CSC kernel algorithm.
 
[[File:Framerate.png|frame|center|Framerate for different resolutions on the CSC kernel.]]
 
 
 
=Execution time=
 
These measurements were taken using some '''timestamps''' before and after the processing to measure just the execution time for the CSC kernel algorithm on each frame and hence avoiding possible false measurements from the GStreamer plugin. The image below shows the CSC execution time by each frame for each resolution.
 
[[File:Extime.png|frame|center|Execution time for different resolutions on the CSC kernel.]]
 
 
 
<noinclude>
 
{{GStreamer Based Image Signal Processor/Foot|Performance/Debayer|Contact Us}}
 
</noinclude>
 

Latest revision as of 18:33, 9 December 2019