Jump to content

GStreamer Based Image Signal Processor/Performance/imx8: Difference between revisions

m
no edit summary
(Replace BGGR10 by BGGR and BPP=10)
mNo edit summary
Line 3: Line 3:
</noinclude>
</noinclude>


= Benchmark environment =
== Benchmark environment ==


The following setup was used for all the benchmarks:
The following setup was used for all the benchmarks:
Line 11: Line 11:
*i.MX8 5640 RAW10 Camera Module
*i.MX8 5640 RAW10 Camera Module


== GStreamer Bayer10 Support ==
=== GStreamer Bayer10 Support ===


GStreamer has support for 8-bit Bayer only. To enable 10-bit Bayer support, please, follow this [[CUDA_ISP_for_NVIDIA_Jetson/Getting_Started/Building_custom_v4l2src_element|wiki]].
GStreamer has support for 8-bit Bayer only. To enable 10-bit Bayer support, please, follow this [[CUDA_ISP_for_NVIDIA_Jetson/Getting_Started/Building_custom_v4l2src_element|wiki]].


= CSC Benchmarking =
== 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 in 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 in the following sections, as well as the pipelines used to capture such results.  


== Pipeline ==
=== Pipeline ===


All the measurements below were made using the following minimal pipeline.
All the measurements below were made using the following minimal pipeline.
Line 30: Line 30:
</syntaxhighlight>
</syntaxhighlight>


== Summary ==
=== Summary ===
In this summary you can find measurements related with CPU usage, memory, execution time and maximum framerate supported by the CSC algorithm.  
In this summary you can find measurements related with CPU usage, memory, execution time and maximum framerate supported by the CSC algorithm.  
<html>
<html>
Line 90: Line 90:
<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>
<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>


==CPU usage==
===CPU usage===
These measurements were taken with the '''top''' app to monitor the behavior of the pipeline while running.
These measurements were taken with the '''top''' app to monitor the behavior of the pipeline while running.


[[File:Cpu.png|frame|center|CPU usage for '''CSC''' element]]
[[File:Cpu.png|frame|center|CPU usage for '''CSC''' element]]


==Memory usage==
===Memory usage===
These measurements were taken with '''perf stat''' Linux tool to measure the bandwidth needed by the pipeline.
These measurements were taken with '''perf stat''' Linux tool to measure the bandwidth needed by the pipeline.


[[File:Memo.png|frame|center|Memory bandwidth consumption by '''CSC''' element]]
[[File:Memo.png|frame|center|Memory bandwidth consumption by '''CSC''' element]]


==Execution time==
===Execution time===
These measurements were taken using some '''timestamps''' before and after the processing to measure just the execution time for the kernel algorithm on each frame and hence avoiding possible false measurements from the GStreamer plugin.  
These measurements were taken using some '''timestamps''' before and after the processing to measure just the execution time for the kernel algorithm on each frame and hence avoiding possible false measurements from the GStreamer plugin.  


[[File:Extime.png|frame|center|Execution time for different resolutions with the '''CSC''' element]]
[[File:Extime.png|frame|center|Execution time for different resolutions with the '''CSC''' element]]


==Maximum Framerate==
===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.  
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.  


Line 118: Line 118:
[[File:Framerate.png|frame|center|Framerate for different resolutions with the '''CSC''' element]]
[[File:Framerate.png|frame|center|Framerate for different resolutions with the '''CSC''' element]]


=Debayer Benckmarking=
==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.  
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 ==
=== Pipeline ===


All the measurements below were made using the following minimal pipeline.
All the measurements below were made using the following minimal pipeline.
Line 133: Line 133:
</syntaxhighlight>
</syntaxhighlight>


== Summary ==
=== Summary ===
In this summary you can find measurements related with CPU usage, memory, execution time and maximum framerate supported by the debayer algorithm.  
In this summary you can find measurements related with CPU usage, memory, execution time and maximum framerate supported by the debayer algorithm.  
<html>
<html>
Line 194: Line 194:
<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>
<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>


==CPU usage==
===CPU usage===
These measurements were taken with the '''top''' app to monitor the behavior of the pipeline while running.
These measurements were taken with the '''top''' app to monitor the behavior of the pipeline while running.


Line 200: Line 200:




==Memory usage==
===Memory usage===
These measurements were taken with '''perf stat''' linux tool to measure the bandwidth needed by the pipeline.
These measurements were taken with '''perf stat''' linux tool to measure the bandwidth needed by the pipeline.


[[File:memory-debayer.png|frame|center|Memory bandwidth consumption by '''debayer''' element]]
[[File:memory-debayer.png|frame|center|Memory bandwidth consumption by '''debayer''' element]]


==Execution time==
===Execution time===
These measurements were taken using some '''timestamps''' before and after the processing to measure just the execution time for the kernel algorithm on each frame and hence avoiding possible false measurements from the GStreamer plugin.   
These measurements were taken using some '''timestamps''' before and after the processing to measure just the execution time for the kernel algorithm on each frame and hence avoiding possible false measurements from the GStreamer plugin.   


Line 211: Line 211:




==Maximum Framerate==
===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.  
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.  


Line 225: Line 225:
[[File:max-framerate-debayer.png|frame|center|Framerate for different resolutions with the '''debayer''' element]]
[[File:max-framerate-debayer.png|frame|center|Framerate for different resolutions with the '''debayer''' element]]


= AWB Benchmarking =
== 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.  
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 ==
=== Pipeline ===


All the measurements below were made using the following minimal pipeline.
All the measurements below were made using the following minimal pipeline.
Line 240: Line 240:
</syntaxhighlight>
</syntaxhighlight>


== Summary ==
=== 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.  
In this summary you can find measurements related with CPU usage, memory, execution time and maximum framerate supported by the auto-white balance algorithm.  
<html>
<html>
Line 301: Line 301:
<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>
<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>


==CPU usage==
===CPU usage===
These measurements were taken with the '''top''' app to monitor the behavior of the pipeline while running.
These measurements were taken with the '''top''' app to monitor the behavior of the pipeline while running.


[[File:CPU usage for AWB.png|frame|center|CPU usage for '''AWB''' element]]
[[File:CPU usage for AWB.png|frame|center|CPU usage for '''AWB''' element]]


==Memory usage==
===Memory usage===
These measurements were taken with '''perf stat''' linux tool to measure the bandwidth needed by the pipeline.
These measurements were taken with '''perf stat''' linux tool to measure the bandwidth needed by the pipeline.


[[File:Memory Bandwidth for AWB.png|frame|center|Memory bandwidth consumption by '''AWB''' element]]
[[File:Memory Bandwidth for AWB.png|frame|center|Memory bandwidth consumption by '''AWB''' element]]


==Execution time==
===Execution time===
These measurements were taken using some '''timestamps''' before and after the processing to measure just the execution time for the kernel algorithm on each frame and hence avoiding possible false measurements from the GStreamer plugin.  
These measurements were taken using some '''timestamps''' before and after the processing to measure just the execution time for the kernel algorithm on each frame and hence avoiding possible false measurements from the GStreamer plugin.  


Line 317: Line 317:




==Maximum Framerate==
===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.  
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.  


Line 330: Line 330:
[[File:Maximum Framerate AWB.png|frame|center|Framerate for different resolutions with the '''AWB''' element]]
[[File:Maximum Framerate AWB.png|frame|center|Framerate for different resolutions with the '''AWB''' element]]


= Histogram Equalization Benchmarking =
== 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.  
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 ==
=== Pipeline ===


All the measurements below were made using the following minimal pipeline.
All the measurements below were made using the following minimal pipeline.
Line 345: Line 345:
</syntaxhighlight>
</syntaxhighlight>


== Summary ==
=== Summary ===
In this summary you can find measurements related with CPU usage, memory, execution time and maximum framerate supported by the Histogram Equalization algorithm.  
In this summary you can find measurements related with CPU usage, memory, execution time and maximum framerate supported by the Histogram Equalization algorithm.  
<html>
<html>
Line 406: Line 406:
<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>
<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>


==CPU usage==
===CPU usage===
These measurements were taken with the '''top''' app to monitor the behavior of the pipeline while running.
These measurements were taken with the '''top''' app to monitor the behavior of the pipeline while running.


[[File:CPU usage Eq.png|frame|center|CPU usage for '''Histogram Equalization''' element]]
[[File:CPU usage Eq.png|frame|center|CPU usage for '''Histogram Equalization''' element]]


==Memory usage==
===Memory usage===
These measurements were taken with '''perf stat''' linux tool to measure the bandwidth needed by the pipeline.
These measurements were taken with '''perf stat''' linux tool to measure the bandwidth needed by the pipeline.


[[File:Memory Bandwidth Eq.png|frame|center|Memory bandwidth consumption by '''Histogram Equalization''' element]]
[[File:Memory Bandwidth Eq.png|frame|center|Memory bandwidth consumption by '''Histogram Equalization''' element]]


==Execution time==
===Execution time===
These measurements were taken using some '''timestamps''' before and after the processing to measure just the execution time for the kernel algorithm on each frame and hence avoiding possible false measurements from the GStreamer plugin.  
These measurements were taken using some '''timestamps''' before and after the processing to measure just the execution time for the kernel algorithm on each frame and hence avoiding possible false measurements from the GStreamer plugin.  


[[File:Execution Time Equalizer.png|frame|center|Execution time for different resolutions with the '''Histogram Equalization''' element]]
[[File:Execution Time Equalizer.png|frame|center|Execution time for different resolutions with the '''Histogram Equalization''' element]]


==Maximum Framerate==
===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.  
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.  


Cookies help us deliver our services. By using our services, you agree to our use of cookies.