提交 0e355a3f 编写于 作者: T Travis CI

Deploy code docs to GitHub Pages Travis build: 436

Commit: aca97817
上级 0a10fc54
......@@ -1246,5 +1246,5 @@ Generating file index...
Generating file member index...
Generating example index...
finalizing index lists...
lookup cache used 5036/65536 hits=38674 misses=5406
lookup cache used 5036/65536 hits=38673 misses=5406
finished...
......@@ -113,7 +113,7 @@ $(document).ready(function(){initNavTree('classop_1_1_video_saver.html','');});
<p>This is the complete list of members for <a class="el" href="classop_1_1_video_saver.html">op::VideoSaver</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classop_1_1_video_saver.html#a0c5dadfa4f687283c370e7890ae5037f">isOpened</a>()</td><td class="entry"><a class="el" href="classop_1_1_video_saver.html">op::VideoSaver</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classop_1_1_video_saver.html#a0cb7b9b758efc9ce7e32aa4f2da631ff">VideoSaver</a>(const std::string &amp;videoSaverPath, const int cvFourcc, const double fps, const Point&lt; int &gt; &amp;cvSize)</td><td class="entry"><a class="el" href="classop_1_1_video_saver.html">op::VideoSaver</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classop_1_1_video_saver.html#aa2fd0c4c6cb0ed2c41fd5f5f7357cc4c">VideoSaver</a>(const std::string &amp;videoSaverPath, const int cvFourcc, const double fps)</td><td class="entry"><a class="el" href="classop_1_1_video_saver.html">op::VideoSaver</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classop_1_1_video_saver.html#a7c79397b9be8b6d6d12b9f3e78e6c794">write</a>(const cv::Mat &amp;cvMat)</td><td class="entry"><a class="el" href="classop_1_1_video_saver.html">op::VideoSaver</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classop_1_1_video_saver.html#a3cdbef8bada237edffaf7793eaa0fe8e">write</a>(const std::vector&lt; cv::Mat &gt; &amp;cvMats)</td><td class="entry"><a class="el" href="classop_1_1_video_saver.html">op::VideoSaver</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classop_1_1_video_saver.html#acfb839eb14ac032055930932db966e84">~VideoSaver</a>()</td><td class="entry"><a class="el" href="classop_1_1_video_saver.html">op::VideoSaver</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
......
......@@ -117,8 +117,8 @@ $(document).ready(function(){initNavTree('classop_1_1_video_saver.html','');});
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a0cb7b9b758efc9ce7e32aa4f2da631ff"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classop_1_1_video_saver.html#a0cb7b9b758efc9ce7e32aa4f2da631ff">VideoSaver</a> (const std::string &amp;videoSaverPath, const int cvFourcc, const double fps, const <a class="el" href="structop_1_1_point.html">Point</a>&lt; int &gt; &amp;cvSize)</td></tr>
<tr class="separator:a0cb7b9b758efc9ce7e32aa4f2da631ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2fd0c4c6cb0ed2c41fd5f5f7357cc4c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classop_1_1_video_saver.html#aa2fd0c4c6cb0ed2c41fd5f5f7357cc4c">VideoSaver</a> (const std::string &amp;videoSaverPath, const int cvFourcc, const double fps)</td></tr>
<tr class="separator:aa2fd0c4c6cb0ed2c41fd5f5f7357cc4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acfb839eb14ac032055930932db966e84"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classop_1_1_video_saver.html#acfb839eb14ac032055930932db966e84">~VideoSaver</a> ()</td></tr>
<tr class="separator:acfb839eb14ac032055930932db966e84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c5dadfa4f687283c370e7890ae5037f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classop_1_1_video_saver.html#a0c5dadfa4f687283c370e7890ae5037f">isOpened</a> ()</td></tr>
......@@ -129,7 +129,7 @@ Public Member Functions</h2></td></tr>
<tr class="separator:a3cdbef8bada237edffaf7793eaa0fe8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a0cb7b9b758efc9ce7e32aa4f2da631ff"></a>
<a class="anchor" id="aa2fd0c4c6cb0ed2c41fd5f5f7357cc4c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
......@@ -149,13 +149,7 @@ Public Member Functions</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>fps</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structop_1_1_point.html">Point</a>&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>cvSize</em>&#160;</td>
<td class="paramname"><em>fps</em>&#160;</td>
</tr>
<tr>
<td></td>
......
var classop_1_1_video_saver =
[
[ "VideoSaver", "classop_1_1_video_saver.html#a0cb7b9b758efc9ce7e32aa4f2da631ff", null ],
[ "VideoSaver", "classop_1_1_video_saver.html#aa2fd0c4c6cb0ed2c41fd5f5f7357cc4c", null ],
[ "~VideoSaver", "classop_1_1_video_saver.html#acfb839eb14ac032055930932db966e84", null ],
[ "isOpened", "classop_1_1_video_saver.html#a0c5dadfa4f687283c370e7890ae5037f", null ],
[ "write", "classop_1_1_video_saver.html#a7c79397b9be8b6d6d12b9f3e78e6c794", null ],
......
......@@ -159,7 +159,7 @@ $(document).ready(function(){initNavTree('functions_func_v.html','');});
: <a class="el" href="classop_1_1_video_reader.html#a70313aad386ef3897c70fea7b2e4030a">op::VideoReader</a>
</li>
<li>VideoSaver()
: <a class="el" href="classop_1_1_video_saver.html#a0cb7b9b758efc9ce7e32aa4f2da631ff">op::VideoSaver</a>
: <a class="el" href="classop_1_1_video_saver.html#aa2fd0c4c6cb0ed2c41fd5f5f7357cc4c">op::VideoSaver</a>
</li>
</ul>
</div><!-- contents -->
......
......@@ -168,7 +168,7 @@ $(document).ready(function(){initNavTree('functions_v.html','');});
: <a class="el" href="classop_1_1_video_reader.html#a70313aad386ef3897c70fea7b2e4030a">op::VideoReader</a>
</li>
<li>VideoSaver()
: <a class="el" href="classop_1_1_video_saver.html#a0cb7b9b758efc9ce7e32aa4f2da631ff">op::VideoSaver</a>
: <a class="el" href="classop_1_1_video_saver.html#aa2fd0c4c6cb0ed2c41fd5f5f7357cc4c">op::VideoSaver</a>
</li>
<li>vtVecPtr
: <a class="el" href="structop_1_1_datum.html#ac43135194dd5ff9c981395697803b26d">op::Datum</a>
......
......@@ -166,9 +166,9 @@ var NAVTREEINDEX4 =
"classop_1_1_video_reader.html#acf47ef8071b783fc8b406db9f3716eec":[1,0,3,97,3],
"classop_1_1_video_saver.html":[1,0,3,44],
"classop_1_1_video_saver.html#a0c5dadfa4f687283c370e7890ae5037f":[1,0,3,44,2],
"classop_1_1_video_saver.html#a0cb7b9b758efc9ce7e32aa4f2da631ff":[1,0,3,44,0],
"classop_1_1_video_saver.html#a3cdbef8bada237edffaf7793eaa0fe8e":[1,0,3,44,4],
"classop_1_1_video_saver.html#a7c79397b9be8b6d6d12b9f3e78e6c794":[1,0,3,44,3],
"classop_1_1_video_saver.html#aa2fd0c4c6cb0ed2c41fd5f5f7357cc4c":[1,0,3,44,0],
"classop_1_1_video_saver.html#acfb839eb14ac032055930932db966e84":[1,0,3,44,1],
"classop_1_1_w_coco_json_saver.html":[1,0,3,45],
"classop_1_1_w_coco_json_saver.html#a49ba32973e43c176c88d17aa805f1ab5":[1,0,3,45,1],
......
......@@ -16,7 +16,7 @@ var searchData=
['videoreader',['VideoReader',['../classop_1_1_video_reader.html',1,'op']]],
['videoreader_2ehpp',['videoReader.hpp',['../video_reader_8hpp.html',1,'']]],
['videosaver',['VideoSaver',['../classop_1_1_video_saver.html',1,'op']]],
['videosaver',['VideoSaver',['../classop_1_1_video_saver.html#a0cb7b9b758efc9ce7e32aa4f2da631ff',1,'op::VideoSaver']]],
['videosaver',['VideoSaver',['../classop_1_1_video_saver.html#aa2fd0c4c6cb0ed2c41fd5f5f7357cc4c',1,'op::VideoSaver']]],
['videosaver_2ehpp',['videoSaver.hpp',['../video_saver_8hpp.html',1,'']]],
['vtvecptr',['vtVecPtr',['../structop_1_1_datum.html#ac43135194dd5ff9c981395697803b26d',1,'op::Datum']]],
['vtvecrows',['vtVecRows',['../structop_1_1_datum.html#a45cd7049821b21a7af84441415b2d0ea',1,'op::Datum']]]
......
......@@ -5,5 +5,5 @@ var searchData=
['version',['version',['../classop_1_1_json_ofstream.html#a6a5e0e4f3cdf8f93fb1bdef8cb63b0a2',1,'op::JsonOfstream']]],
['videocapturereader',['VideoCaptureReader',['../classop_1_1_video_capture_reader.html#a59ce0932d49ee86c9e810cae22e9b519',1,'op::VideoCaptureReader::VideoCaptureReader(const int index, const bool throwExceptionIfNoOpened)'],['../classop_1_1_video_capture_reader.html#a41eac24222b6f0f62d8bf6b40e36e353',1,'op::VideoCaptureReader::VideoCaptureReader(const std::string &amp;path, const ProducerType producerType)']]],
['videoreader',['VideoReader',['../classop_1_1_video_reader.html#a70313aad386ef3897c70fea7b2e4030a',1,'op::VideoReader']]],
['videosaver',['VideoSaver',['../classop_1_1_video_saver.html#a0cb7b9b758efc9ce7e32aa4f2da631ff',1,'op::VideoSaver']]]
['videosaver',['VideoSaver',['../classop_1_1_video_saver.html#aa2fd0c4c6cb0ed2c41fd5f5f7357cc4c',1,'op::VideoSaver']]]
];
......@@ -119,7 +119,7 @@ $(document).ready(function(){initNavTree('video_saver_8hpp_source.html','');});
<div class="line"><a name="l00010"></a><span class="lineno"><a class="line" href="classop_1_1_video_saver.html"> 10</a></span>&#160; <span class="keyword">class </span><a class="code" href="macros_8hpp.html#a4ba443bb7a0e5dbe8054a9ac37a5e000">OP_API</a> <a class="code" href="classop_1_1_video_saver.html">VideoSaver</a></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; {</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; <a class="code" href="classop_1_1_video_saver.html">VideoSaver</a>(<span class="keyword">const</span> <a class="code" href="namespacecl.html#abff80bfb254d646f6afeb6638df41686">std::string</a>&amp; videoSaverPath, <span class="keyword">const</span> <span class="keywordtype">int</span> cvFourcc, <span class="keyword">const</span> <span class="keywordtype">double</span> fps, <span class="keyword">const</span> <a class="code" href="structop_1_1_point.html">Point&lt;int&gt;</a>&amp; cvSize);</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; <a class="code" href="classop_1_1_video_saver.html">VideoSaver</a>(<span class="keyword">const</span> <a class="code" href="namespacecl.html#abff80bfb254d646f6afeb6638df41686">std::string</a>&amp; videoSaverPath, <span class="keyword">const</span> <span class="keywordtype">int</span> cvFourcc, <span class="keyword">const</span> <span class="keywordtype">double</span> fps);</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classop_1_1_video_saver.html">VideoSaver</a>();</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
......@@ -133,15 +133,16 @@ $(document).ready(function(){initNavTree('video_saver_8hpp_source.html','');});
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacecl.html#abff80bfb254d646f6afeb6638df41686">std::string</a> mVideoSaverPath;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> mCvFourcc;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> mFps;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> <a class="code" href="structop_1_1_point.html">Point&lt;int&gt;</a> mCvSize;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; cv::VideoWriter mVideoWriter;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mNumberImages;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="macros_8hpp.html#abef96b5dd35dd9d44ad27ddf0e2f5f2e">DELETE_COPY</a>(<a class="code" href="classop_1_1_video_saver.html">VideoSaver</a>);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; };</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#endif // OPENPOSE_FILESTREAM_VIDEO_SAVER_HPP</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="structop_1_1_point.html">Point&lt;int&gt;</a> mCvSize;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordtype">bool</span> mVideoStarted;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; cv::VideoWriter mVideoWriter;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mNumberImages;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="macros_8hpp.html#abef96b5dd35dd9d44ad27ddf0e2f5f2e">DELETE_COPY</a>(<a class="code" href="classop_1_1_video_saver.html">VideoSaver</a>);</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; };</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;}</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#endif // OPENPOSE_FILESTREAM_VIDEO_SAVER_HPP</span></div>
<div class="ttc" id="macros_8hpp_html_abef96b5dd35dd9d44ad27ddf0e2f5f2e"><div class="ttname"><a href="macros_8hpp.html#abef96b5dd35dd9d44ad27ddf0e2f5f2e">DELETE_COPY</a></div><div class="ttdeci">#define DELETE_COPY(className)</div><div class="ttdef"><b>Definition:</b> macros.hpp:34</div></div>
<div class="ttc" id="classop_1_1_video_saver_html"><div class="ttname"><a href="classop_1_1_video_saver.html">op::VideoSaver</a></div><div class="ttdef"><b>Definition:</b> videoSaver.hpp:10</div></div>
<div class="ttc" id="structop_1_1_point_html"><div class="ttname"><a href="structop_1_1_point.html">op::Point&lt; int &gt;</a></div></div>
......
......@@ -733,7 +733,7 @@ $(document).ready(function(){initNavTree('wrapper_auxiliary_8hpp_source.html',''
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">if</span> (!wrapperStructOutput.<a class="code" href="structop_1_1_wrapper_struct_output.html#a73d6a5687ab8abac22f5cd29690b6277">writeVideo</a>.empty() || !wrapperStructOutput.<a class="code" href="structop_1_1_wrapper_struct_output.html#add74785fc0cb1fc7d2c6b5f88b622d53">writeBvh</a>.empty())</div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; {</div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">if</span> (wrapperStructOutput.<a class="code" href="structop_1_1_wrapper_struct_output.html#ad595edffced2bfd80c3bee183f32f505">writeVideoFps</a> &lt;= 0</div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; &amp;&amp; (producerSharedPtr == <span class="keyword">nullptr</span> || producerSharedPtr-&gt;get(CV_CAP_PROP_FPS) &lt;= 0))</div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; &amp;&amp; (!oPProducer || producerSharedPtr-&gt;get(CV_CAP_PROP_FPS) &lt;= 0))</div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;The frame rate of the frames producer is unknown. Set `--write_video_fps` to your desired&quot;</span></div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="stringliteral">&quot; FPS if you wanna record video (`--write_video`). E.g., if it is a folder of images, you&quot;</span></div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="stringliteral">&quot; will have to know or guess the frame rate; if it is a webcam, you should use the OpenPose&quot;</span></div>
......@@ -748,339 +748,335 @@ $(document).ready(function(){initNavTree('wrapper_auxiliary_8hpp_source.html',''
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Video file can only be recorded inside `wrapper/wrapper.hpp` if the producer&quot;</span></div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="stringliteral">&quot; is one of the default ones (e.g., video, webcam, ...).&quot;</span>,</div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">if</span> (finalOutputSize.x &lt;= 0 || finalOutputSize.y &lt;= 0)</div>
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Video can only be recorded if outputSize is fixed (e.g., video, webcam, IP camera),&quot;</span></div>
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="stringliteral">&quot; but not for a image directory.&quot;</span>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> videoSaver = std::make_shared&lt;VideoSaver&gt;(</div>
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; wrapperStructOutput.<a class="code" href="structop_1_1_wrapper_struct_output.html#a73d6a5687ab8abac22f5cd29690b6277">writeVideo</a>, CV_FOURCC(<span class="charliteral">&#39;M&#39;</span>,<span class="charliteral">&#39;J&#39;</span>,<span class="charliteral">&#39;P&#39;</span>,<span class="charliteral">&#39;G&#39;</span>), originalVideoFps, finalOutputSize</div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; );</div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; outputWs.emplace_back(std::make_shared&lt;<a class="code" href="classop_1_1_w_video_saver.html">WVideoSaver&lt;TDatumsSP&gt;</a>&gt;(videoSaver));</div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="comment">// Write joint angles as *.bvh file on hard disk</span></div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="preprocessor">#ifdef USE_3D_ADAM_MODEL</span></div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (!wrapperStructOutput.<a class="code" href="structop_1_1_wrapper_struct_output.html#add74785fc0cb1fc7d2c6b5f88b622d53">writeBvh</a>.empty())</div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; {</div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> bvhSaver = std::make_shared&lt;BvhSaver&gt;(</div>
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; wrapperStructOutput.<a class="code" href="structop_1_1_wrapper_struct_output.html#add74785fc0cb1fc7d2c6b5f88b622d53">writeBvh</a>, JointAngleEstimation::getTotalModel(), originalVideoFps</div>
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; );</div>
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; outputWs.emplace_back(std::make_shared&lt;WBvhSaver&lt;TDatumsSP&gt;&gt;(bvhSaver));</div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div>
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="preprocessor"></span> }</div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="comment">// Write heat maps as desired image format on hard disk</span></div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">if</span> (!writeHeatMapsCleaned.empty())</div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; {</div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> heatMapSaver = std::make_shared&lt;HeatMapSaver&gt;(writeHeatMapsCleaned,</div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; wrapperStructOutput.<a class="code" href="structop_1_1_wrapper_struct_output.html#a34d5796e02b8afaaaef99fc26e7f3056">writeHeatMapsFormat</a>);</div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; outputWs.emplace_back(std::make_shared&lt;<a class="code" href="classop_1_1_w_heat_map_saver.html">WHeatMapSaver&lt;TDatumsSP&gt;</a>&gt;(heatMapSaver));</div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; }</div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="comment">// Add frame information for GUI</span></div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> guiEnabled = (wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#a2a979a7daa368cc847ae6d9a168ff556">displayMode</a> != <a class="code" href="namespaceop.html#ae52707752b1872b39f0306cc4f6c6ae6a28b652e57d2da6b7c939166be21efd9a">DisplayMode::NoDisplay</a>);</div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="comment">// If this WGuiInfoAdder instance is placed before the WImageSaver or WVideoSaver, then the resulting</span></div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="comment">// recorded frames will look exactly as the final displayed image by the GUI</span></div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">if</span> (wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#a9dbb0bfce2593b0a560ed738e11708ce">guiVerbose</a> &amp;&amp; (guiEnabled || !userOutputWs.empty()</div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; || threadManagerMode == <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a288aae25bc408055f50c21c991903a44">ThreadManagerMode::Asynchronous</a></div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; || threadManagerMode == <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36ac68f8680ccf3a65dfcfc63356112c9f9">ThreadManagerMode::AsynchronousOut</a>))</div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; {</div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> guiInfoAdder = std::make_shared&lt;GuiInfoAdder&gt;(numberThreads, guiEnabled);</div>
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; outputWs.emplace_back(std::make_shared&lt;<a class="code" href="classop_1_1_w_gui_info_adder.html">WGuiInfoAdder&lt;TDatumsSP&gt;</a>&gt;(guiInfoAdder));</div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; }</div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="comment">// Minimal graphical user interface (GUI)</span></div>
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; guiW = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">if</span> (guiEnabled)</div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; {</div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="comment">// PoseRenderers to Renderers</span></div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; std::vector&lt;std::shared_ptr&lt;Renderer&gt;&gt; renderers;</div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">if</span> (wrapperStructPose.renderMode == <a class="code" href="namespaceop.html#afce557f02e337e16150d00bdf72ec033a54c82ef76ecbbd4c2293e09bae01b54e">RenderMode::Cpu</a>)</div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; renderers.emplace_back(std::static_pointer_cast&lt;Renderer&gt;(poseCpuRenderer));</div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; poseGpuRenderer : poseGpuRenderers)</div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; renderers.emplace_back(std::static_pointer_cast&lt;Renderer&gt;(poseGpuRenderer));</div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="comment">// Display</span></div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="comment">// Adam (+3-D/2-D) display</span></div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">if</span> (displayAdam)</div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; {</div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;<span class="preprocessor">#ifdef USE_3D_ADAM_MODEL</span></div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;<span class="preprocessor"></span> <span class="comment">// Gui</span></div>
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> gui = std::make_shared&lt;GuiAdam&gt;(</div>
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; finalOutputSize, wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#ac1d393d3ce6be9304017c1aa3afd8f13">fullScreen</a>, threadManager.<a class="code" href="classop_1_1_thread_manager.html#a48ea53b3de4d09c84db18e2c31ce1be1">getIsRunningSharedPtr</a>(),</div>
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; spVideoSeek, poseExtractorNets, faceExtractorNets, handExtractorNets, renderers,</div>
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#a2a979a7daa368cc847ae6d9a168ff556">displayMode</a>, JointAngleEstimation::getTotalModel(),</div>
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; wrapperStructOutput.<a class="code" href="structop_1_1_wrapper_struct_output.html#a94538578a465c78788760cadb8ea86f6">writeVideoAdam</a></div>
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; );</div>
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="comment">// WGui</span></div>
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; guiW = {std::make_shared&lt;WGuiAdam&lt;TDatumsSP&gt;&gt;(gui)};</div>
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;<span class="preprocessor"></span> }</div>
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="comment">// 3-D (+2-D) display</span></div>
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#a2a979a7daa368cc847ae6d9a168ff556">displayMode</a> == <a class="code" href="namespaceop.html#ae52707752b1872b39f0306cc4f6c6ae6ae18221460ca8434295f980225fd6a91b">DisplayMode::Display3D</a></div>
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; || wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#a2a979a7daa368cc847ae6d9a168ff556">displayMode</a> == <a class="code" href="namespaceop.html#ae52707752b1872b39f0306cc4f6c6ae6a105036ef087117869f656cd72bfd8dd6">DisplayMode::DisplayAll</a>)</div>
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; {</div>
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="comment">// Gui</span></div>
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> gui = std::make_shared&lt;Gui3D&gt;(</div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; finalOutputSize, wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#ac1d393d3ce6be9304017c1aa3afd8f13">fullScreen</a>, threadManager.<a class="code" href="classop_1_1_thread_manager.html#a48ea53b3de4d09c84db18e2c31ce1be1">getIsRunningSharedPtr</a>(),</div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; spVideoSeek, poseExtractorNets, faceExtractorNets, handExtractorNets, renderers,</div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; wrapperStructPose.poseModel, wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#a2a979a7daa368cc847ae6d9a168ff556">displayMode</a></div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; );</div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="comment">// WGui</span></div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; guiW = {std::make_shared&lt;WGui3D&lt;TDatumsSP&gt;&gt;(gui)};</div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; }</div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="comment">// 2-D display</span></div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#a2a979a7daa368cc847ae6d9a168ff556">displayMode</a> == <a class="code" href="namespaceop.html#ae52707752b1872b39f0306cc4f6c6ae6a3bd9369403112127ae7db2f866002be2">DisplayMode::Display2D</a>)</div>
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; {</div>
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="comment">// Gui</span></div>
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> gui = std::make_shared&lt;Gui&gt;(</div>
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; finalOutputSize, wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#ac1d393d3ce6be9304017c1aa3afd8f13">fullScreen</a>, threadManager.<a class="code" href="classop_1_1_thread_manager.html#a48ea53b3de4d09c84db18e2c31ce1be1">getIsRunningSharedPtr</a>(),</div>
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; spVideoSeek, poseExtractorNets, faceExtractorNets, handExtractorNets, renderers</div>
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; );</div>
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="comment">// WGui</span></div>
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; guiW = {std::make_shared&lt;WGui&lt;TDatumsSP&gt;&gt;(gui)};</div>
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; }</div>
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Unknown DisplayMode.&quot;</span>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; }</div>
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="comment">// Set wrapper as configured</span></div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> videoSaver = std::make_shared&lt;VideoSaver&gt;(</div>
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; wrapperStructOutput.<a class="code" href="structop_1_1_wrapper_struct_output.html#a73d6a5687ab8abac22f5cd29690b6277">writeVideo</a>, CV_FOURCC(<span class="charliteral">&#39;M&#39;</span>,<span class="charliteral">&#39;J&#39;</span>,<span class="charliteral">&#39;P&#39;</span>,<span class="charliteral">&#39;G&#39;</span>), originalVideoFps);</div>
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; outputWs.emplace_back(std::make_shared&lt;<a class="code" href="classop_1_1_w_video_saver.html">WVideoSaver&lt;TDatumsSP&gt;</a>&gt;(videoSaver));</div>
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; }</div>
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="comment">// Write joint angles as *.bvh file on hard disk</span></div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;<span class="preprocessor">#ifdef USE_3D_ADAM_MODEL</span></div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (!wrapperStructOutput.<a class="code" href="structop_1_1_wrapper_struct_output.html#add74785fc0cb1fc7d2c6b5f88b622d53">writeBvh</a>.empty())</div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; {</div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> bvhSaver = std::make_shared&lt;BvhSaver&gt;(</div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; wrapperStructOutput.<a class="code" href="structop_1_1_wrapper_struct_output.html#add74785fc0cb1fc7d2c6b5f88b622d53">writeBvh</a>, JointAngleEstimation::getTotalModel(), originalVideoFps</div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; );</div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; outputWs.emplace_back(std::make_shared&lt;WBvhSaver&lt;TDatumsSP&gt;&gt;(bvhSaver));</div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; }</div>
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;<span class="preprocessor"></span> }</div>
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="comment">// Write heat maps as desired image format on hard disk</span></div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">if</span> (!writeHeatMapsCleaned.empty())</div>
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; {</div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> heatMapSaver = std::make_shared&lt;HeatMapSaver&gt;(writeHeatMapsCleaned,</div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; wrapperStructOutput.<a class="code" href="structop_1_1_wrapper_struct_output.html#a34d5796e02b8afaaaef99fc26e7f3056">writeHeatMapsFormat</a>);</div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; outputWs.emplace_back(std::make_shared&lt;<a class="code" href="classop_1_1_w_heat_map_saver.html">WHeatMapSaver&lt;TDatumsSP&gt;</a>&gt;(heatMapSaver));</div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; }</div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="comment">// Add frame information for GUI</span></div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> guiEnabled = (wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#a2a979a7daa368cc847ae6d9a168ff556">displayMode</a> != <a class="code" href="namespaceop.html#ae52707752b1872b39f0306cc4f6c6ae6a28b652e57d2da6b7c939166be21efd9a">DisplayMode::NoDisplay</a>);</div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="comment">// If this WGuiInfoAdder instance is placed before the WImageSaver or WVideoSaver, then the resulting</span></div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="comment">// recorded frames will look exactly as the final displayed image by the GUI</span></div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">if</span> (wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#a9dbb0bfce2593b0a560ed738e11708ce">guiVerbose</a> &amp;&amp; (guiEnabled || !userOutputWs.empty()</div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; || threadManagerMode == <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a288aae25bc408055f50c21c991903a44">ThreadManagerMode::Asynchronous</a></div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; || threadManagerMode == <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36ac68f8680ccf3a65dfcfc63356112c9f9">ThreadManagerMode::AsynchronousOut</a>))</div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; {</div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> guiInfoAdder = std::make_shared&lt;GuiInfoAdder&gt;(numberThreads, guiEnabled);</div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; outputWs.emplace_back(std::make_shared&lt;<a class="code" href="classop_1_1_w_gui_info_adder.html">WGuiInfoAdder&lt;TDatumsSP&gt;</a>&gt;(guiInfoAdder));</div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; }</div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="comment">// Minimal graphical user interface (GUI)</span></div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; guiW = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">if</span> (guiEnabled)</div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; {</div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="comment">// PoseRenderers to Renderers</span></div>
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; std::vector&lt;std::shared_ptr&lt;Renderer&gt;&gt; renderers;</div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">if</span> (wrapperStructPose.renderMode == <a class="code" href="namespaceop.html#afce557f02e337e16150d00bdf72ec033a54c82ef76ecbbd4c2293e09bae01b54e">RenderMode::Cpu</a>)</div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; renderers.emplace_back(std::static_pointer_cast&lt;Renderer&gt;(poseCpuRenderer));</div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; poseGpuRenderer : poseGpuRenderers)</div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; renderers.emplace_back(std::static_pointer_cast&lt;Renderer&gt;(poseGpuRenderer));</div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="comment">// Display</span></div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="comment">// Adam (+3-D/2-D) display</span></div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">if</span> (displayAdam)</div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; {</div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;<span class="preprocessor">#ifdef USE_3D_ADAM_MODEL</span></div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;<span class="preprocessor"></span> <span class="comment">// Gui</span></div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> gui = std::make_shared&lt;GuiAdam&gt;(</div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; finalOutputSize, wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#ac1d393d3ce6be9304017c1aa3afd8f13">fullScreen</a>, threadManager.<a class="code" href="classop_1_1_thread_manager.html#a48ea53b3de4d09c84db18e2c31ce1be1">getIsRunningSharedPtr</a>(),</div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; spVideoSeek, poseExtractorNets, faceExtractorNets, handExtractorNets, renderers,</div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#a2a979a7daa368cc847ae6d9a168ff556">displayMode</a>, JointAngleEstimation::getTotalModel(),</div>
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; wrapperStructOutput.<a class="code" href="structop_1_1_wrapper_struct_output.html#a94538578a465c78788760cadb8ea86f6">writeVideoAdam</a></div>
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; );</div>
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="comment">// WGui</span></div>
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; guiW = {std::make_shared&lt;WGuiAdam&lt;TDatumsSP&gt;&gt;(gui)};</div>
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;<span class="preprocessor"></span> }</div>
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="comment">// 3-D (+2-D) display</span></div>
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#a2a979a7daa368cc847ae6d9a168ff556">displayMode</a> == <a class="code" href="namespaceop.html#ae52707752b1872b39f0306cc4f6c6ae6ae18221460ca8434295f980225fd6a91b">DisplayMode::Display3D</a></div>
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; || wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#a2a979a7daa368cc847ae6d9a168ff556">displayMode</a> == <a class="code" href="namespaceop.html#ae52707752b1872b39f0306cc4f6c6ae6a105036ef087117869f656cd72bfd8dd6">DisplayMode::DisplayAll</a>)</div>
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; {</div>
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="comment">// Gui</span></div>
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> gui = std::make_shared&lt;Gui3D&gt;(</div>
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; finalOutputSize, wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#ac1d393d3ce6be9304017c1aa3afd8f13">fullScreen</a>, threadManager.<a class="code" href="classop_1_1_thread_manager.html#a48ea53b3de4d09c84db18e2c31ce1be1">getIsRunningSharedPtr</a>(),</div>
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; spVideoSeek, poseExtractorNets, faceExtractorNets, handExtractorNets, renderers,</div>
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; wrapperStructPose.poseModel, wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#a2a979a7daa368cc847ae6d9a168ff556">displayMode</a></div>
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; );</div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="comment">// WGui</span></div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; guiW = {std::make_shared&lt;WGui3D&lt;TDatumsSP&gt;&gt;(gui)};</div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; }</div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="comment">// 2-D display</span></div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#a2a979a7daa368cc847ae6d9a168ff556">displayMode</a> == <a class="code" href="namespaceop.html#ae52707752b1872b39f0306cc4f6c6ae6a3bd9369403112127ae7db2f866002be2">DisplayMode::Display2D</a>)</div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; {</div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="comment">// Gui</span></div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> gui = std::make_shared&lt;Gui&gt;(</div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; finalOutputSize, wrapperStructGui.<a class="code" href="structop_1_1_wrapper_struct_gui.html#ac1d393d3ce6be9304017c1aa3afd8f13">fullScreen</a>, threadManager.<a class="code" href="classop_1_1_thread_manager.html#a48ea53b3de4d09c84db18e2c31ce1be1">getIsRunningSharedPtr</a>(),</div>
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; spVideoSeek, poseExtractorNets, faceExtractorNets, handExtractorNets, renderers</div>
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; );</div>
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="comment">// WGui</span></div>
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; guiW = {std::make_shared&lt;WGui&lt;TDatumsSP&gt;&gt;(gui)};</div>
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; }</div>
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Unknown DisplayMode.&quot;</span>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; }</div>
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="comment">// Set wrapper as configured</span></div>
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;</div>
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160;</div>
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;</div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;</div>
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;</div>
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;</div>
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="comment">// The less number of queues -&gt; the less threads opened, and potentially the less lag</span></div>
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160;</div>
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;</div>
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;</div>
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="comment">// The less number of queues -&gt; the less threads opened, and potentially the less lag</span></div>
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;</div>
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="comment">// Sanity checks</span></div>
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="keywordflow">if</span> ((datumProducerW == <span class="keyword">nullptr</span>) == (userInputWs.empty())</div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; &amp;&amp; threadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a288aae25bc408055f50c21c991903a44">ThreadManagerMode::Asynchronous</a></div>
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; &amp;&amp; threadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a435b3ab344c03bfc0e4530a2e75f5e44">ThreadManagerMode::AsynchronousIn</a>)</div>
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; {</div>
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> message = <span class="stringliteral">&quot;You need to have 1 and only 1 producer selected. You can introduce your own&quot;</span></div>
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="stringliteral">&quot; producer by using setWorker(WorkerType::Input, ...) or use the OpenPose&quot;</span></div>
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="stringliteral">&quot; default producer by configuring it in the configure function) or use the&quot;</span></div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="stringliteral">&quot; ThreadManagerMode::Asynchronous(In) mode.&quot;</span>;</div>
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(message, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; }</div>
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">if</span> (outputWs.empty() &amp;&amp; userOutputWs.empty() &amp;&amp; guiW == <span class="keyword">nullptr</span></div>
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; &amp;&amp; threadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a288aae25bc408055f50c21c991903a44">ThreadManagerMode::Asynchronous</a></div>
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; &amp;&amp; threadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36ac68f8680ccf3a65dfcfc63356112c9f9">ThreadManagerMode::AsynchronousOut</a>)</div>
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; {</div>
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;No output selected.&quot;</span>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; }</div>
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;</div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="comment">// Thread Manager</span></div>
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="comment">// Clean previous thread manager (avoid configure to crash the program if used more than once)</span></div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a5b7c5ea46c360496e261094c5e1397a7">reset</a>();</div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> threadId = 0ull;</div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keyword">auto</span> queueIn = 0ull;</div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keyword">auto</span> queueOut = 1ull;</div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="comment">// After producer</span></div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="comment">// ID generator (before any multi-threading or any function that requires the ID)</span></div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> wIdGenerator = std::make_shared&lt;WIdGenerator&lt;TDatumsSP&gt;&gt;();</div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; std::vector&lt;TWorker&gt; workersAux{wIdGenerator};</div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="comment">// Scale &amp; cv::Mat to OP format</span></div>
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="keywordflow">if</span> (scaleAndSizeExtractorW != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, {scaleAndSizeExtractorW});</div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keywordflow">if</span> (cvMatToOpInputW != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, {cvMatToOpInputW});</div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="comment">// cv::Mat to output format</span></div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keywordflow">if</span> (cvMatToOpOutputW != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, {cvMatToOpOutputW});</div>
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;</div>
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="comment">// Producer</span></div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="comment">// If custom user Worker and uses its own thread</span></div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">if</span> (!userInputWs.empty() &amp;&amp; userInputWsOnNewThread)</div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; {</div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="comment">// Thread 0, queues 0 -&gt; 1</span></div>
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, userInputWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; }</div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="comment">// If custom user Worker in same thread</span></div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!userInputWs.empty())</div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(userInputWs, workersAux);</div>
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="comment">// If OpenPose producer (same thread)</span></div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (datumProducerW != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>({datumProducerW}, workersAux);</div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="comment">// Otherwise</span></div>
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (threadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a288aae25bc408055f50c21c991903a44">ThreadManagerMode::Asynchronous</a></div>
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; &amp;&amp; threadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a435b3ab344c03bfc0e4530a2e75f5e44">ThreadManagerMode::AsynchronousIn</a>)</div>
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;No input selected.&quot;</span>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="comment">// Thread 0 or 1, queues 0 -&gt; 1</span></div>
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, workersAux, queueIn++, queueOut++);</div>
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="comment">// Increase thread</span></div>
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;</div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="comment">// Pose estimation &amp; rendering</span></div>
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="comment">// Thread 1 or 2...X, queues 1 -&gt; 2, X = 2 + #GPUs</span></div>
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">if</span> (!poseExtractorsWs.empty())</div>
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; {</div>
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">if</span> (multiThreadEnabled)</div>
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; {</div>
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; wPose : poseExtractorsWs)</div>
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; {</div>
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, wPose, queueIn, queueOut);</div>
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; }</div>
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; queueIn++;</div>
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; queueOut++;</div>
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="comment">// Sort frames - Required own thread</span></div>
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">if</span> (poseExtractorsWs.size() &gt; 1u)</div>
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; {</div>
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> wQueueOrderer = std::make_shared&lt;WQueueOrderer&lt;TDatumsSP&gt;&gt;();</div>
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, wQueueOrderer, queueIn++, queueOut++);</div>
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; }</div>
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div>
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; {</div>
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">if</span> (poseExtractorsWs.size() &gt; 1)</div>
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;Multi-threading disabled, only 1 thread running. All GPUs have been disabled but the&quot;</span></div>
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="stringliteral">&quot; first one, which is defined by gpuNumberStart (e.g., in the OpenPose demo, it is set&quot;</span></div>
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="stringliteral">&quot; with the `--num_gpu_start` flag).&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a655d20c1ca69519ca647684edbb2db35">Priority::High</a>);</div>
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, poseExtractorsWs.at(0), queueIn++, queueOut++);</div>
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; }</div>
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; }</div>
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="comment">// Assemble all frames from same time instant (3-D module)</span></div>
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> wQueueAssembler = std::make_shared&lt;WQueueAssembler&lt;TDatumsSP, TDatums&gt;&gt;();</div>
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <span class="comment">// 3-D reconstruction</span></div>
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="keywordflow">if</span> (!poseTriangulationsWs.empty())</div>
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; {</div>
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="comment">// Assemble frames</span></div>
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, wQueueAssembler, queueIn++, queueOut++);</div>
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="comment">// 3-D reconstruction</span></div>
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">if</span> (multiThreadEnabled)</div>
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; {</div>
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; wPoseTriangulations : poseTriangulationsWs)</div>
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; {</div>
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, wPoseTriangulations, queueIn, queueOut);</div>
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; }</div>
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; queueIn++;</div>
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; queueOut++;</div>
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="comment">// Sort frames</span></div>
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">if</span> (poseTriangulationsWs.size() &gt; 1u)</div>
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; {</div>
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> wQueueOrderer = std::make_shared&lt;WQueueOrderer&lt;TDatumsSP&gt;&gt;();</div>
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, wQueueOrderer, queueIn++, queueOut++);</div>
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; }</div>
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; }</div>
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; {</div>
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keywordflow">if</span> (poseTriangulationsWs.size() &gt; 1)</div>
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;Multi-threading disabled, only 1 thread running for 3-D triangulation.&quot;</span>,</div>
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a655d20c1ca69519ca647684edbb2db35">Priority::High</a>);</div>
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, poseTriangulationsWs.at(0), queueIn++, queueOut++);</div>
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; }</div>
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; }</div>
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; postProcessingWs = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>({wQueueAssembler}, postProcessingWs);</div>
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="comment">// Adam/IK step</span></div>
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordflow">if</span> (!jointAngleEstimationsWs.empty())</div>
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; {</div>
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordflow">if</span> (multiThreadEnabled)</div>
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; {</div>
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; wJointAngleEstimator : jointAngleEstimationsWs)</div>
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; {</div>
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, wJointAngleEstimator, queueIn, queueOut);</div>
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; }</div>
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; queueIn++;</div>
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; queueOut++;</div>
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="comment">// Sort frames</span></div>
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">if</span> (jointAngleEstimationsWs.size() &gt; 1)</div>
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; {</div>
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> wQueueOrderer = std::make_shared&lt;WQueueOrderer&lt;TDatumsSP&gt;&gt;();</div>
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, wQueueOrderer, queueIn++, queueOut++);</div>
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; }</div>
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; }</div>
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; {</div>
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keywordflow">if</span> (jointAngleEstimationsWs.size() &gt; 1)</div>
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;Multi-threading disabled, only 1 thread running for joint angle estimation.&quot;</span>,</div>
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a655d20c1ca69519ca647684edbb2db35">Priority::High</a>);</div>
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, jointAngleEstimationsWs.at(0), queueIn++, queueOut++);</div>
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; }</div>
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; }</div>
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="comment">// Post processing workers</span></div>
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="keywordflow">if</span> (!postProcessingWs.empty())</div>
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; {</div>
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="comment">// Combining postProcessingWs and outputWs</span></div>
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; outputWs = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(postProcessingWs, outputWs);</div>
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="comment">// // If I wanna split them</span></div>
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="comment">// log(&quot;&quot;, Priority::Low, __LINE__, __FUNCTION__, __FILE__);</span></div>
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="comment">// threadManager.add(threadId, postProcessingWs, queueIn++, queueOut++);</span></div>
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="comment">// threadIdPP(threadId, multiThreadEnabled);</span></div>
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; }</div>
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="comment">// If custom user Worker and uses its own thread</span></div>
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <span class="keywordflow">if</span> (!userPostProcessingWs.empty())</div>
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; {</div>
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="comment">// If custom user Worker in its own thread</span></div>
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="keywordflow">if</span> (userPostProcessingWsOnNewThread)</div>
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; {</div>
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, userPostProcessingWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; }</div>
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="comment">// If custom user Worker in same thread</span></div>
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="comment">// Merge with outputWs</span></div>
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; outputWs = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(outputWs, userPostProcessingWs);</div>
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; }</div>
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="comment">// Output workers</span></div>
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="keywordflow">if</span> (!outputWs.empty())</div>
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; {</div>
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="comment">// Thread 4 or 5, queues 4 -&gt; 5</span></div>
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, outputWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; }</div>
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="comment">// User output worker</span></div>
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="comment">// Thread Y, queues Q -&gt; Q+1</span></div>
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordflow">if</span> (!userOutputWs.empty())</div>
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; {</div>
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="keywordflow">if</span> (userOutputWsOnNewThread)</div>
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; {</div>
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, userOutputWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; }</div>
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; {</div>
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId-1, userOutputWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; }</div>
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; }</div>
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; <span class="comment">// OpenPose GUI</span></div>
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <span class="keywordflow">if</span> (guiW != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; {</div>
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <span class="comment">// Thread Y+1, queues Q+1 -&gt; Q+2</span></div>
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, guiW, queueIn++, queueOut++);</div>
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; }</div>
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="comment">// Sanity checks</span></div>
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">if</span> ((datumProducerW == <span class="keyword">nullptr</span>) == (userInputWs.empty())</div>
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; &amp;&amp; threadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a288aae25bc408055f50c21c991903a44">ThreadManagerMode::Asynchronous</a></div>
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; &amp;&amp; threadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a435b3ab344c03bfc0e4530a2e75f5e44">ThreadManagerMode::AsynchronousIn</a>)</div>
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; {</div>
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> message = <span class="stringliteral">&quot;You need to have 1 and only 1 producer selected. You can introduce your own&quot;</span></div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="stringliteral">&quot; producer by using setWorker(WorkerType::Input, ...) or use the OpenPose&quot;</span></div>
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="stringliteral">&quot; default producer by configuring it in the configure function) or use the&quot;</span></div>
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="stringliteral">&quot; ThreadManagerMode::Asynchronous(In) mode.&quot;</span>;</div>
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(message, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; }</div>
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">if</span> (outputWs.empty() &amp;&amp; userOutputWs.empty() &amp;&amp; guiW == <span class="keyword">nullptr</span></div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; &amp;&amp; threadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a288aae25bc408055f50c21c991903a44">ThreadManagerMode::Asynchronous</a></div>
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; &amp;&amp; threadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36ac68f8680ccf3a65dfcfc63356112c9f9">ThreadManagerMode::AsynchronousOut</a>)</div>
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; {</div>
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;No output selected.&quot;</span>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; }</div>
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;</div>
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="comment">// Thread Manager</span></div>
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="comment">// Clean previous thread manager (avoid configure to crash the program if used more than once)</span></div>
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a5b7c5ea46c360496e261094c5e1397a7">reset</a>();</div>
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> threadId = 0ull;</div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="keyword">auto</span> queueIn = 0ull;</div>
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keyword">auto</span> queueOut = 1ull;</div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="comment">// After producer</span></div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="comment">// ID generator (before any multi-threading or any function that requires the ID)</span></div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> wIdGenerator = std::make_shared&lt;WIdGenerator&lt;TDatumsSP&gt;&gt;();</div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; std::vector&lt;TWorker&gt; workersAux{wIdGenerator};</div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="comment">// Scale &amp; cv::Mat to OP format</span></div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">if</span> (scaleAndSizeExtractorW != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, {scaleAndSizeExtractorW});</div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">if</span> (cvMatToOpInputW != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, {cvMatToOpInputW});</div>
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="comment">// cv::Mat to output format</span></div>
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">if</span> (cvMatToOpOutputW != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, {cvMatToOpOutputW});</div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;</div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="comment">// Producer</span></div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="comment">// If custom user Worker and uses its own thread</span></div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">if</span> (!userInputWs.empty() &amp;&amp; userInputWsOnNewThread)</div>
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; {</div>
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="comment">// Thread 0, queues 0 -&gt; 1</span></div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, userInputWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; }</div>
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="comment">// If custom user Worker in same thread</span></div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!userInputWs.empty())</div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(userInputWs, workersAux);</div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="comment">// If OpenPose producer (same thread)</span></div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (datumProducerW != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>({datumProducerW}, workersAux);</div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="comment">// Otherwise</span></div>
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (threadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a288aae25bc408055f50c21c991903a44">ThreadManagerMode::Asynchronous</a></div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; &amp;&amp; threadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a435b3ab344c03bfc0e4530a2e75f5e44">ThreadManagerMode::AsynchronousIn</a>)</div>
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;No input selected.&quot;</span>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="comment">// Thread 0 or 1, queues 0 -&gt; 1</span></div>
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, workersAux, queueIn++, queueOut++);</div>
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="comment">// Increase thread</span></div>
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;</div>
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="comment">// Pose estimation &amp; rendering</span></div>
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="comment">// Thread 1 or 2...X, queues 1 -&gt; 2, X = 2 + #GPUs</span></div>
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">if</span> (!poseExtractorsWs.empty())</div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; {</div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">if</span> (multiThreadEnabled)</div>
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; {</div>
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; wPose : poseExtractorsWs)</div>
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; {</div>
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, wPose, queueIn, queueOut);</div>
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; }</div>
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; queueIn++;</div>
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; queueOut++;</div>
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <span class="comment">// Sort frames - Required own thread</span></div>
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">if</span> (poseExtractorsWs.size() &gt; 1u)</div>
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; {</div>
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> wQueueOrderer = std::make_shared&lt;WQueueOrderer&lt;TDatumsSP&gt;&gt;();</div>
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, wQueueOrderer, queueIn++, queueOut++);</div>
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; }</div>
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; }</div>
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; {</div>
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">if</span> (poseExtractorsWs.size() &gt; 1)</div>
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;Multi-threading disabled, only 1 thread running. All GPUs have been disabled but the&quot;</span></div>
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="stringliteral">&quot; first one, which is defined by gpuNumberStart (e.g., in the OpenPose demo, it is set&quot;</span></div>
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="stringliteral">&quot; with the `--num_gpu_start` flag).&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a655d20c1ca69519ca647684edbb2db35">Priority::High</a>);</div>
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, poseExtractorsWs.at(0), queueIn++, queueOut++);</div>
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; }</div>
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; }</div>
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="comment">// Assemble all frames from same time instant (3-D module)</span></div>
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> wQueueAssembler = std::make_shared&lt;WQueueAssembler&lt;TDatumsSP, TDatums&gt;&gt;();</div>
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="comment">// 3-D reconstruction</span></div>
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordflow">if</span> (!poseTriangulationsWs.empty())</div>
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; {</div>
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="comment">// Assemble frames</span></div>
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, wQueueAssembler, queueIn++, queueOut++);</div>
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="comment">// 3-D reconstruction</span></div>
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordflow">if</span> (multiThreadEnabled)</div>
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; {</div>
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; wPoseTriangulations : poseTriangulationsWs)</div>
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; {</div>
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, wPoseTriangulations, queueIn, queueOut);</div>
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; }</div>
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; queueIn++;</div>
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; queueOut++;</div>
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="comment">// Sort frames</span></div>
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">if</span> (poseTriangulationsWs.size() &gt; 1u)</div>
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; {</div>
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> wQueueOrderer = std::make_shared&lt;WQueueOrderer&lt;TDatumsSP&gt;&gt;();</div>
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, wQueueOrderer, queueIn++, queueOut++);</div>
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; }</div>
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; }</div>
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; {</div>
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">if</span> (poseTriangulationsWs.size() &gt; 1)</div>
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;Multi-threading disabled, only 1 thread running for 3-D triangulation.&quot;</span>,</div>
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a655d20c1ca69519ca647684edbb2db35">Priority::High</a>);</div>
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, poseTriangulationsWs.at(0), queueIn++, queueOut++);</div>
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; }</div>
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; }</div>
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; postProcessingWs = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>({wQueueAssembler}, postProcessingWs);</div>
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="comment">// Adam/IK step</span></div>
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">if</span> (!jointAngleEstimationsWs.empty())</div>
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; {</div>
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">if</span> (multiThreadEnabled)</div>
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; {</div>
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; wJointAngleEstimator : jointAngleEstimationsWs)</div>
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; {</div>
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, wJointAngleEstimator, queueIn, queueOut);</div>
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; }</div>
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; queueIn++;</div>
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; queueOut++;</div>
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="comment">// Sort frames</span></div>
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">if</span> (jointAngleEstimationsWs.size() &gt; 1)</div>
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; {</div>
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> wQueueOrderer = std::make_shared&lt;WQueueOrderer&lt;TDatumsSP&gt;&gt;();</div>
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, wQueueOrderer, queueIn++, queueOut++);</div>
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; }</div>
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; }</div>
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; {</div>
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <span class="keywordflow">if</span> (jointAngleEstimationsWs.size() &gt; 1)</div>
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;Multi-threading disabled, only 1 thread running for joint angle estimation.&quot;</span>,</div>
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a655d20c1ca69519ca647684edbb2db35">Priority::High</a>);</div>
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, jointAngleEstimationsWs.at(0), queueIn++, queueOut++);</div>
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; }</div>
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; }</div>
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="comment">// Post processing workers</span></div>
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keywordflow">if</span> (!postProcessingWs.empty())</div>
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; {</div>
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="comment">// Combining postProcessingWs and outputWs</span></div>
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; outputWs = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(postProcessingWs, outputWs);</div>
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="comment">// // If I wanna split them</span></div>
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="comment">// log(&quot;&quot;, Priority::Low, __LINE__, __FUNCTION__, __FILE__);</span></div>
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="comment">// threadManager.add(threadId, postProcessingWs, queueIn++, queueOut++);</span></div>
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="comment">// threadIdPP(threadId, multiThreadEnabled);</span></div>
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; }</div>
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="comment">// If custom user Worker and uses its own thread</span></div>
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="keywordflow">if</span> (!userPostProcessingWs.empty())</div>
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; {</div>
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="comment">// If custom user Worker in its own thread</span></div>
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keywordflow">if</span> (userPostProcessingWsOnNewThread)</div>
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; {</div>
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, userPostProcessingWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; }</div>
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="comment">// If custom user Worker in same thread</span></div>
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="comment">// Merge with outputWs</span></div>
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; outputWs = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(outputWs, userPostProcessingWs);</div>
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; }</div>
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="comment">// Output workers</span></div>
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">if</span> (!outputWs.empty())</div>
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; {</div>
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="comment">// Thread 4 or 5, queues 4 -&gt; 5</span></div>
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, outputWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; }</div>
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="comment">// User output worker</span></div>
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="comment">// Thread Y, queues Q -&gt; Q+1</span></div>
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <span class="keywordflow">if</span> (!userOutputWs.empty())</div>
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; {</div>
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="keywordflow">if</span> (userOutputWsOnNewThread)</div>
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; {</div>
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, userOutputWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; }</div>
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; {</div>
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId-1, userOutputWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; }</div>
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; }</div>
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="comment">// OpenPose GUI</span></div>
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">if</span> (guiW != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; {</div>
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="comment">// Thread Y+1, queues Q+1 -&gt; Q+2</span></div>
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; threadManager.<a class="code" href="classop_1_1_thread_manager.html#a8134abeaec65b5647ae92e34f3ad420b">add</a>(threadId, guiW, queueIn++, queueOut++);</div>
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <a class="code" href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">threadIdPP</a>(threadId, multiThreadEnabled);</div>
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; }</div>
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <a class="code" href="namespaceop.html#a9912b2bfa3dbe427b4e72dd34c605df2">log</a>(<span class="stringliteral">&quot;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; }</div>
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; {</div>
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; }</div>
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; {</div>
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; }</div>
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; }</div>
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160;}</div>
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;</div>
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;<span class="preprocessor">#endif // OPENPOSE_WRAPPER_WRAPPER_AUXILIARY_HPP</span></div>
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; }</div>
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160;}</div>
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160;</div>
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160;<span class="preprocessor">#endif // OPENPOSE_WRAPPER_WRAPPER_AUXILIARY_HPP</span></div>
<div class="ttc" id="namespaceop_html_ae52707752b1872b39f0306cc4f6c6ae6a28b652e57d2da6b7c939166be21efd9a"><div class="ttname"><a href="namespaceop.html#ae52707752b1872b39f0306cc4f6c6ae6a28b652e57d2da6b7c939166be21efd9a">op::DisplayMode::NoDisplay</a></div></div>
<div class="ttc" id="core_2headers_8hpp_html"><div class="ttname"><a href="core_2headers_8hpp.html">headers.hpp</a></div></div>
<div class="ttc" id="namespaceop_html_af65a4564afcad06b72468679f6bee52b"><div class="ttname"><a href="namespaceop.html#af65a4564afcad06b72468679f6bee52b">op::threadIdPP</a></div><div class="ttdeci">OP_API void threadIdPP(unsigned long long &amp;threadId, const bool multiThreadEnabled)</div></div>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册