Libargus setBayerHistogramRegion function not implemented

We’re using the Jetson Xavier NX platform with L4T 32.4.3 and using the Argus library to access the image stream from the camera.

  • libargus API docs for that L4T release is: https://docs.nvidia.com/jetson/archives/l4t-multimedia-archived/l4t-multimedia-3243. This API doc doesn’t mention the specific version of libargus used for that L4T release version.

  • When looking at the libargus source on that board, we see the version listed as 0.97:
    nvidia@xavier:/usr/src/jetson_multimedia_api/argus$ cat RELEASE.TXT

    ===============================================================================
    Argus Camera API Release Notes

    Release 0.97 (08/10/2018)

  • We are accessing the Bayer Histogram from the CaptureMetadata and want to set the region of interest used for generating the histogram. The API docs lists that the Argus::IAutoControlSettings::setBayerHistogramRegion function as existing in the API (Jetson Linux Multimedia API Reference: Argus::IAutoControlSettings Class Reference), but when you grep for this function in the headers in /usr/src/jetson_multimedia_api/argus/ this function does not exist.

  1. Is there a version mismatch between libargus in the documentation and what is deployed with L4T?
  2. How do we find the version of libargus that is described in the L4T documentation,
  3. How can we update the libargus library if we want to use that function, without upgrading our version of Jetpack?

Here is from r32.5(J4.5.x)

nvidia@dhcp-10-19-107-82:/usr/src/jetson_multimedia_api$ grep -ir setBayerHistogramRegion .
./argus/docs/doxygen/html/classArgus_1_1IAutoControlSettings.html:<tr class="memitem:ab4069e77b2fb5b8b2a254a36c980ca85"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="namespaceArgus.html#a43dee5758547aaf78710c7c1fe122fe3">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArgus_1_1IAutoControlSettings.html#ab4069e77b2fb5b8b2a254a36c980ca85">setBayerHistogramRegion</a> (const <a class="el" href="classArgus_1_1Rectangle.html">Rectangle</a>&lt; uint32_t &gt; &amp;region)=0</td></tr>
./argus/docs/doxygen/html/classArgus_1_1IAutoControlSettings.html:          <td class="memname">virtual <a class="el" href="namespaceArgus.html#a43dee5758547aaf78710c7c1fe122fe3">Status</a> Argus::IAutoControlSettings::setBayerHistogramRegion </td>
./argus/docs/doxygen/html/Settings_8h_source.html:<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    <span class="keyword">virtual</span> <a class="code" href="namespaceArgus.html#a43dee5758547aaf78710c7c1fe122fe3" title="Status values returned by API function calls.">Status</a> <a class="code" href="classArgus_1_1IAutoControlSettings.html#ab4069e77b2fb5b8b2a254a36c980ca85" title="Sets the bayer histogram region of interest.">setBayerHistogramRegion</a>(<span class="keyword">const</span> <a class="code" href="classArgus_1_1Rectangle.html">Rectangle&lt;uint32_t&gt;</a>&amp; region) = 0;</div>
./argus/docs/doxygen/html/functions_func_0x73.html:<li>setBayerHistogramRegion()
./argus/docs/doxygen/html/search/functions_73.js:  ['setbayerhistogramregion',['setBayerHistogramRegion',['../classArgus_1_1IAutoControlSettings.html#ab4069e77b2fb5b8b2a254a36c980ca85',1,'Argus::IAutoControlSettings']]],
./argus/docs/doxygen/html/search/all_73.js:  ['setbayerhistogramregion',['setBayerHistogramRegion',['../classArgus_1_1IAutoControlSettings.html#ab4069e77b2fb5b8b2a254a36c980ca85',1,'Argus::IAutoControlSettings']]],
./argus/docs/doxygen/html/classArgus_1_1IAutoControlSettings-members.html:  <tr><td class="entry"><a class="el" href="classArgus_1_1IAutoControlSettings.html#ab4069e77b2fb5b8b2a254a36c980ca85">setBayerHistogramRegion</a>(const Rectangle&lt; uint32_t &gt; &amp;region)=0</td><td class="entry"><a class="el" href="classArgus_1_1IAutoControlSettings.html">Argus::IAutoControlSettings</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
./argus/docs/doxygen/html/functions_0x73.html:<li>setBayerHistogramRegion()
./argus/include/Argus/Settings.h:    virtual Status setBayerHistogramRegion(const Rectangle<uint32_t>& region) = 0;
./argus/apps/camera/docs/doxygen/html/Dispatcher_8cpp_source.html:<div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classArgusSamples_1_1AutoControlSettingsObserver.html#ad77be17b865f804065a7b271766ad3b5">m_iAutoControlSettings</a>-&gt;setBayerHistogramRegion(histRegion) != Argus::STATUS_OK)</div>
./argus/apps/camera/modules/Dispatcher.cpp:            if (m_iAutoControlSettings->setBayerHistogramRegion(histRegion) != Argus::STATUS_OK)
nvidia@dhcp-10-19-107-82:/usr/src/jetson_multimedia_api$ cat argus/RELEASE.TXT
===============================================================================
Argus Camera API Release Notes
===============================================================================

-------------------------------------------------------------------------------
Release 0.97 (08/10/2018)

Hi Shane,

Thanks for the quick response. As I had mentioned before we are constrained on the L4T version and can’t upgrade to r32.5(J4.5.x). Is there a way to get this for L4T version 32.4.3?

Sorry, it involve many libs for the camera framework it’s could be better to upgrade to 32.5