GStreamer Based Image Signal Processor/Performance/imx8: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
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. | 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 = | = CSC Benchmarking = | ||
== Pipeline == | == Pipeline == | ||
Line 91: | Line 91: | ||
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. | 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.]] | [[File:Extime.png|frame|center|Execution time for different resolutions on the CSC kernel.]] | ||
=Debayer Benckmarking= | |||
== 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-bayer, format=(string)bggr, width=$WIDTH, height=$HEIGHT,framerate=(fraction)30/1" ! queue ! ispcldebayer ! fakesink -v | |||
</syntaxhighlight> | |||
== Summary == | |||
In this summary you can find measurements related with CPU usage, memory, execution time and maximum framerate supported by the debayer 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>8</td> | |||
<td>17980</td> | |||
<td>3.54</td> | |||
</tr> | |||
<tr> | |||
<td>1280x720@30fps</td> | |||
<td>9</td> | |||
<td>18800</td> | |||
<td>9.82</td> | |||
</tr> | |||
<tr> | |||
<td>1920x1080@30fps</td> | |||
<td>14</td> | |||
<td>19896</td> | |||
<td>21.19</td> | |||
</tr> | |||
<caption>Table 1. Summary table regarding to the debayer 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>266</td> | |||
</tr> | |||
<tr> | |||
<td>1280x720</td> | |||
<td>101</td> | |||
</tr> | |||
<tr> | |||
<td>1920x1080</td> | |||
<td>46</td> | |||
</tr> | |||
<caption>Table 2. Summary table for the maximum framerate using debayer algorithm for several standard resolutions</caption> | |||
</table> | |||
</center> | |||
</html> | |||
==CPU usage== | |||
These measurements were taken with '''top''' app to see the behavior of the pipeline while running at 30fps, but we have to have in account that videotestsrc is used to generate the buffers and it consumes a lot of CPU. | |||
[[File:cpu-usage-debayer.png|frame|center|Cpu usage debayering for different resolutions at 30fps.]] | |||
==Memory usage== | |||
These measurements were taken with '''meminfo''' file to see the behavior of the pipeline while running at 30fps, but we have to have in account that videotestsrc is used to generate the buffers and it depends on the framerate due to the number of buffers generated by videotestsrc. | |||
[[File:memory-debayer.png|frame|center|Memory usage debayering for different resolutions at 30fps.]] | |||
==Execution time== | |||
These measurements were taken putting some '''timestamps''' before and after the processing to measure just the execution time for the debayer kernel algorithm by each frame and avoiding possible false measurements from the GStreamer plugin. The image below shows the debayer execution time by each frame for each resolution. | |||
[[File:exec-time-debayer.png|frame|center|Execution time debayering for different resolutions at 30fps.]] | |||
==Maximum Framerate== | |||
These measurements were taken with '''gstperf''' tool to see the behavior of the pipeline while running, with videotestsrc we are able to push buffers as much as possible to the element. The image below shows the maximum framerate that the debayer element supports. It depends on the execution time of the debayer kernel algorithm. | |||
[[File:max-framerate-debayer.png|frame|center|Maximum framerate debayering for different resolutions.]] |
Revision as of 20:21, 11 July 2019
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.
CSC Benchmarking
Pipeline
All the measurements below were made using the following minimal pipeline.
$ 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
Summary
In this summary you can find measurements related with CPU usage, memory, execution time and maximum framerate supported by the CSC algorithm.
Resolution | CPU usage (%) * | Memory (kB) * | Execution Time (ms) |
---|---|---|---|
640x480@30fps | 4 | 18664 | 2.24 |
1280x720@30fps | 10 | 19484 | 6.19 |
1920x1080@30fps | 14 | 21424 | 13.17 |
Note: take into consideration that these values were taken using the videotestsrc element, and may decrease with a camera source capture.
Resolution | Maximum framerate (fps) |
---|---|
640x480 | 333 |
1280x720 | 120 |
1920x1080 | 55 |
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.
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.
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.
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.
Debayer Benckmarking
Pipeline
All the measurements below were made using the following minimal pipeline.
WIDTH=1920 HEIGHT=1080 gst-launch-1.0 videotestsrc is-live=true ! "video/x-bayer, format=(string)bggr, width=$WIDTH, height=$HEIGHT,framerate=(fraction)30/1" ! queue ! ispcldebayer ! fakesink -v
Summary
In this summary you can find measurements related with CPU usage, memory, execution time and maximum framerate supported by the debayer algorithm.
Resolution | CPU usage (%) * | Memory (kB) * | Execution Time (ms) |
---|---|---|---|
640x480@30fps | 8 | 17980 | 3.54 |
1280x720@30fps | 9 | 18800 | 9.82 |
1920x1080@30fps | 14 | 19896 | 21.19 |
Note: take into consideration that these values were taken using the videotestsrc element, and may decrease with a camera source capture.
Resolution | Maximum framerate (fps) |
---|---|
640x480 | 266 |
1280x720 | 101 |
1920x1080 | 46 |
CPU usage
These measurements were taken with top app to see the behavior of the pipeline while running at 30fps, but we have to have in account that videotestsrc is used to generate the buffers and it consumes a lot of CPU.
Memory usage
These measurements were taken with meminfo file to see the behavior of the pipeline while running at 30fps, but we have to have in account that videotestsrc is used to generate the buffers and it depends on the framerate due to the number of buffers generated by videotestsrc.
Execution time
These measurements were taken putting some timestamps before and after the processing to measure just the execution time for the debayer kernel algorithm by each frame and avoiding possible false measurements from the GStreamer plugin. The image below shows the debayer execution time by each frame for each resolution.
Maximum Framerate
These measurements were taken with gstperf tool to see the behavior of the pipeline while running, with videotestsrc we are able to push buffers as much as possible to the element. The image below shows the maximum framerate that the debayer element supports. It depends on the execution time of the debayer kernel algorithm.