GStreamer Based Image Signal Processor/Performance/imx8: Difference between revisions
No edit summary |
No edit summary |
||
Line 27: | Line 27: | ||
<th>Resolution</th> | <th>Resolution</th> | ||
<th>CPU usage (%)</th> | <th>CPU usage (%)</th> | ||
<th>Memory Bandwidth(GHz)</th> | <th>Memory Bandwidth (GHz)</th> | ||
<th>Execution Time (ms)</th> | <th>Execution Time (ms)</th> | ||
</tr> | </tr> | ||
Line 33: | Line 33: | ||
<td>640x480@30fps</td> | <td>640x480@30fps</td> | ||
<td>4</td> | <td>4</td> | ||
<td> | <td>1.020</td> | ||
<td>2.24</td> | <td>2.24</td> | ||
</tr> | </tr> | ||
Line 39: | Line 39: | ||
<td>1280x720@30fps</td> | <td>1280x720@30fps</td> | ||
<td>10</td> | <td>10</td> | ||
<td> | <td>1.034</td> | ||
<td>6.19</td> | <td>6.19</td> | ||
</tr> | </tr> | ||
Line 45: | Line 45: | ||
<td>1920x1080@30fps</td> | <td>1920x1080@30fps</td> | ||
<td>14</td> | <td>14</td> | ||
<td> | <td>1.466</td> | ||
<td>13.17</td> | <td>13.17</td> | ||
</tr> | </tr> | ||
Line 129: | Line 129: | ||
<th>Resolution</th> | <th>Resolution</th> | ||
<th>CPU usage (%)</th> | <th>CPU usage (%)</th> | ||
<th>Memory Bandwidth(GHz)</th> | <th>Memory Bandwidth (GHz)</th> | ||
<th>Execution Time (ms)</th> | <th>Execution Time (ms)</th> | ||
</tr> | </tr> | ||
Line 135: | Line 135: | ||
<td>640x480@30fps</td> | <td>640x480@30fps</td> | ||
<td>2</td> | <td>2</td> | ||
<td> | <td>1.025</td> | ||
<td>3.54</td> | <td>3.54</td> | ||
</tr> | </tr> | ||
Line 141: | Line 141: | ||
<td>1280x720@30fps</td> | <td>1280x720@30fps</td> | ||
<td>2</td> | <td>2</td> | ||
<td> | <td>1.084</td> | ||
<td>9.89</td> | <td>9.89</td> | ||
</tr> | </tr> | ||
Line 147: | Line 147: | ||
<td>1920x1080@30fps</td> | <td>1920x1080@30fps</td> | ||
<td>3</td> | <td>3</td> | ||
<td> | <td>1.402</td> | ||
<td>21.46</td> | <td>21.46</td> | ||
</tr> | </tr> | ||
Line 237: | Line 237: | ||
<th>Resolution</th> | <th>Resolution</th> | ||
<th>CPU usage (%)</th> | <th>CPU usage (%)</th> | ||
<th>Memory Bandwidth(GHz)</th> | <th>Memory Bandwidth (GHz)</th> | ||
<th>Execution Time (ms)</th> | <th>Execution Time (ms)</th> | ||
</tr> | </tr> | ||
Line 243: | Line 243: | ||
<td>640x480@30fps</td> | <td>640x480@30fps</td> | ||
<td> 10 </td> | <td> 10 </td> | ||
<td> </td> | <td> 0.994 </td> | ||
<td>3.11</td> | <td>3.11</td> | ||
</tr> | </tr> | ||
Line 249: | Line 249: | ||
<td>1280x720@30fps</td> | <td>1280x720@30fps</td> | ||
<td> 12 </td> | <td> 12 </td> | ||
<td> </td> | <td> 1.032 </td> | ||
<td>4.54</td> | <td>4.54</td> | ||
</tr> | </tr> | ||
Line 255: | Line 255: | ||
<td>1920x1080@30fps</td> | <td>1920x1080@30fps</td> | ||
<td> 16 </td> | <td> 16 </td> | ||
<td> </td> | <td> 1.239 </td> | ||
<td>8.52</td> | <td>8.52</td> | ||
</tr> | </tr> | ||
Line 342: | Line 342: | ||
<th>Resolution</th> | <th>Resolution</th> | ||
<th>CPU usage (%)</th> | <th>CPU usage (%)</th> | ||
<th>Memory Bandwidth(GHz)</th> | <th>Memory Bandwidth (GHz)</th> | ||
<th>Execution Time (ms)</th> | <th>Execution Time (ms)</th> | ||
</tr> | </tr> | ||
Line 348: | Line 348: | ||
<td>640x480@30fps</td> | <td>640x480@30fps</td> | ||
<td> 10 </td> | <td> 10 </td> | ||
<td> </td> | <td> 0.990 </td> | ||
<td>4.28</td> | <td>4.28</td> | ||
</tr> | </tr> | ||
Line 354: | Line 354: | ||
<td>1280x720@30fps</td> | <td>1280x720@30fps</td> | ||
<td> 12 </td> | <td> 12 </td> | ||
<td> </td> | <td> 1.047 </td> | ||
<td>6.07</td> | <td>6.07</td> | ||
</tr> | </tr> | ||
Line 360: | Line 360: | ||
<td>1920x1080@30fps</td> | <td>1920x1080@30fps</td> | ||
<td> 16 </td> | <td> 16 </td> | ||
<td> </td> | <td> 1.277 </td> | ||
<td>10.95</td> | <td>10.95</td> | ||
</tr> | </tr> |
Revision as of 19:32, 4 October 2019
GStreamer Image Signal Processor |
---|
Image Signal Processor Basics |
Docs |
Getting Started |
Examples |
Performance |
Troubleshoot |
Contact Us |
CSC Benchmarking
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.
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 ! ispclcsc ! 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 Bandwidth (GHz) | Execution Time (ms) |
---|---|---|---|
640x480@30fps | 4 | 1.020 | 2.24 |
1280x720@30fps | 10 | 1.034 | 6.19 |
1920x1080@30fps | 14 | 1.466 | 13.17 |
Resolution | Maximum framerate (fps) * |
---|---|
640x480 | 333 |
1280x720 | 120 |
1920x1080 | 55 |
*Note: take into consideration that these values were taken using the videotestsrc element, and may decrease with a camera source capture.
CPU usage
These measurements were taken with top app to monitor the behavior of the pipeline while running.
Memory usage
These measurements were taken with meminfo file to see the behavior of the pipeline while running.
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.
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.
The following pipeline was used to test the maximum framerate, please note the use of videotestsrc.
$ WIDTH=1920 $ HEIGHT=1080 $ gst-launch-1.0 videotestsrc ! "video/x-raw,format=(string)RGBA,width=$WIDTH,height=$HEIGHT,framerate=(fraction)30/1" ! queue ! ispclcsc ! fakesink -v
Debayer Benckmarking
The following section describes some relevant performance measurements during debayering 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.
Pipeline
All the measurements below were made using the following minimal pipeline.
WIDTH=1920 HEIGHT=1080 $ gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-bayer,format=bggr10,width=$WIDTH,height=$HEIGHT,framerate=30/1 ! ispclbayer10to8 ! 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 Bandwidth (GHz) | Execution Time (ms) |
---|---|---|---|
640x480@30fps | 2 | 1.025 | 3.54 |
1280x720@30fps | 2 | 1.084 | 9.89 |
1920x1080@30fps | 3 | 1.402 | 21.46 |
Resolution | Maximum framerate (fps)* |
---|---|
640x480 | 266 |
1280x720 | 101 |
1920x1080 | 46 |
*Note: take into consideration that these values were taken using the videotestsrc element, and may decrease with a camera source capture.
CPU usage
These measurements were taken with top app to see the behavior of the pipeline while running at 30fps.
Memory usage
These measurements were taken with meminfo file to see the behavior of the pipeline while running 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.
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.
The following pipeline was used to test the maximum framerate, please note the use of videotestsrc.
$ WIDTH=1920 $ HEIGHT=1080 $ gst-launch-1.0 videotestsrc ! "video/x-bayer,format=bggr,width=$WIDTH,height=$HEIGHT,framerate=30/1" ! queue ! ispcldebayer ! perf ! fakesink -v
AWB Benchmarking
The following section describes some relevant performance measurements for the auto-white balance 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.
Pipeline
All the measurements below were made using the following minimal pipeline.
$ WIDTH=1920 $ HEIGHT=1080 $ gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-bayer,format=bggr10,width=$WIDTH,height=$HEIGHT,framerate=30/1 ! ispclbayer10to8 ! queue ! ispclawb ! fakesink -v
Summary
In this summary you can find measurements related with CPU usage, memory, execution time and maximum framerate supported by the auto-white balance algorithm.
Resolution | CPU usage (%) | Memory Bandwidth (GHz) | Execution Time (ms) |
---|---|---|---|
640x480@30fps | 10 | 0.994 | 3.11 |
1280x720@30fps | 12 | 1.032 | 4.54 |
1920x1080@30fps | 16 | 1.239 | 8.52 |
Resolution | Maximum framerate (fps) * |
---|---|
640x480 | 365 |
1280x720 | 135 |
1920x1080 | 62 |
*Note: take into consideration that these values were taken using the videotestsrc element, and may decrease with a camera source capture.
CPU usage
These measurements were taken with top app to see the behavior of the pipeline while running at 30fps.
Memory usage
These measurements were taken with meminfo file to see the behavior of the pipeline while running 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 autowhite balance 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.
The following pipeline was used to test the maximum framerate, please note the use of videotestsrc.
$ WIDTH=1920 $ HEIGHT=1080 $ gst-launch-1.0 videotestsrc ! "video/x-bayer,format=bggr,width=$WIDTH,height=$HEIGHT,framerate=30/1" ! queue ! ispclawb ! perf ! fakesink -v
Histogram Equalization Benchmarking
The following section describes some relevant performance measurements for the Histogram Equalization 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.
Pipeline
All the measurements below were made using the following minimal pipeline.
$ WIDTH=1920 $ HEIGHT=1080 $ gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-bayer,format=bggr10,width=$WIDTH,height=$HEIGHT,framerate=30/1 ! ispclbayer10to8 ! queue ! ispcleq ! fakesink -v
Summary
In this summary you can find measurements related with CPU usage, memory, execution time and maximum framerate supported by the Histogram Equalization algorithm.
Resolution | CPU usage (%) | Memory Bandwidth (GHz) | Execution Time (ms) |
---|---|---|---|
640x480@30fps | 10 | 0.990 | 4.28 |
1280x720@30fps | 12 | 1.047 | 6.07 |
1920x1080@30fps | 16 | 1.277 | 10.95 |
Resolution | Maximum framerate (fps)* |
---|---|
640x480 | 345 |
1280x720 | 135 |
1920x1080 | 62 |
*Note: take into consideration that these values were taken using the videotestsrc element, and may decrease with a camera source capture.
CPU usage
These measurements were taken with top app to see the behavior of the pipeline while running at 30fps.
Memory usage
These measurements were taken with meminfo file to see the behavior of the pipeline while running at 30fps.
Execution time
These measurements were taken putting some timestamps before and after the processing to measure just the execution time for the histogram equalization kernel algorithm by each frame and avoiding possible false measurements from the GStreamer plugin. The image below shows the histogram equalization 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.
The following pipeline was used to test the maximum framerate, please note the use of videotestsrc.
$ WIDTH=1920 $ HEIGHT=1080 $ gst-launch-1.0 videotestsrc ! "video/x-bayer,format=bggr,width=$WIDTH,height=$HEIGHT,framerate=30/1" ! queue ! ispcleq ! perf ! fakesink -v