Deploy code docs to GitHub Pages Travis build: 161

Commit: 56833873b0
This commit is contained in:
Travis CI
2018-02-14 15:53:56 +00:00
parent 0bd9528fa0
commit ea3be8b1d2
124 changed files with 2480 additions and 2539 deletions
+394 -392
View File
@@ -894,388 +894,390 @@ $(document).ready(function(){initNavTree('wrapper_8hpp_source.html','');});
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="comment">// WGui</span></div>
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; spWGui = {std::make_shared&lt;WGui&lt;TDatumsPtr&gt;&gt;(gui)};</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; }</div>
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="comment">// Set wrapper as configured</span></div>
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; mConfigured = <span class="keyword">true</span>;</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;&quot;</span>, <a class="code" href="namespaceop.html#adc43fb9031418e7f8112816a3b535d14a28d0edd045e05cf5af64e35ae0c4c6ef">Priority::Low</a>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; }</div>
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; {</div>
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</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; }</div>
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;</div>
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l00934"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#a8ae0f91a6882f04464d8897a7c81d174"> 934</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classop_1_1_wrapper.html#a8ae0f91a6882f04464d8897a7c81d174">Wrapper&lt;TDatums, TWorker, TQueue&gt;::exec</a>()</div>
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; {</div>
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="keywordflow">try</span></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; configureThreadManager();</div>
<div class="line"><a name="l00939"></a><span class="lineno"> 939</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="l00940"></a><span class="lineno"> 940</span>&#160; mThreadManager.exec();</div>
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; }</div>
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</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; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; }</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;</div>
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l00949"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#a338b70f93bfb0ad11b7df6b8db407749"> 949</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classop_1_1_wrapper.html#a338b70f93bfb0ad11b7df6b8db407749">Wrapper&lt;TDatums, TWorker, TQueue&gt;::start</a>()</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="keywordflow">try</span></div>
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; {</div>
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; configureThreadManager();</div>
<div class="line"><a name="l00954"></a><span class="lineno"> 954</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="l00955"></a><span class="lineno"> 955</span>&#160; mThreadManager.start();</div>
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; }</div>
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</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; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; }</div>
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; }</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="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l00964"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#ab71f75a631e341dde1c07abcd3a4773f"> 964</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classop_1_1_wrapper.html#ab71f75a631e341dde1c07abcd3a4773f">Wrapper&lt;TDatums, TWorker, TQueue&gt;::stop</a>()</div>
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; {</div>
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <span class="keywordflow">try</span></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; mThreadManager.stop();</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; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</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; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</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; }</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; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l00977"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#a51ab9e8a63f8fb822550365fc0417d01"> 977</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classop_1_1_wrapper.html#a51ab9e8a63f8fb822550365fc0417d01">Wrapper&lt;TDatums, TWorker, TQueue&gt;::isRunning</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; {</div>
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">return</span> mThreadManager.isRunning();</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="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; {</div>
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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; }</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="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l00991"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#a081797a2abda2f91d80876ca6fbb4dbc"> 991</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classop_1_1_wrapper.html#a081797a2abda2f91d80876ca6fbb4dbc">Wrapper&lt;TDatums, TWorker, TQueue&gt;::tryEmplace</a>(std::shared_ptr&lt;TDatums&gt;&amp; tDatums)</div>
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; {</div>
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keywordflow">try</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; <span class="keywordflow">if</span> (!mUserInputWs.empty())</div>
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Emplace cannot be called if an input worker was already selected.&quot;</span>,</div>
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keywordflow">return</span> mThreadManager.tryEmplace(tDatums);</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; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; {</div>
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; }</div>
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; }</div>
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;</div>
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l01008"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#ab23c57fa6b88a0c0bd2348e69a3ad5d3"> 1008</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classop_1_1_wrapper.html#ab23c57fa6b88a0c0bd2348e69a3ad5d3">Wrapper&lt;TDatums, TWorker, TQueue&gt;::waitAndEmplace</a>(std::shared_ptr&lt;TDatums&gt;&amp; tDatums)</div>
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; {</div>
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; {</div>
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <span class="keywordflow">if</span> (!mUserInputWs.empty())</div>
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Emplace cannot be called if an input worker was already selected.&quot;</span>,</div>
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <span class="keywordflow">return</span> mThreadManager.waitAndEmplace(tDatums);</div>
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; }</div>
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; {</div>
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; }</div>
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; }</div>
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;</div>
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l01025"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#af3316c0f86d9d7ca6e246a50d4558e75"> 1025</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classop_1_1_wrapper.html#af3316c0f86d9d7ca6e246a50d4558e75">Wrapper&lt;TDatums, TWorker, TQueue&gt;::tryPush</a>(<span class="keyword">const</span> std::shared_ptr&lt;TDatums&gt;&amp; tDatums)</div>
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; {</div>
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; {</div>
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; <span class="keywordflow">if</span> (!mUserInputWs.empty())</div>
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Push cannot be called if an input worker was already selected.&quot;</span>,</div>
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; <span class="keywordflow">return</span> mThreadManager.tryPush(tDatums);</div>
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; }</div>
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; {</div>
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; }</div>
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; }</div>
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;</div>
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l01042"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#acb7c1cff00cd254216b92a0698bf2b6f"> 1042</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classop_1_1_wrapper.html#acb7c1cff00cd254216b92a0698bf2b6f">Wrapper&lt;TDatums, TWorker, TQueue&gt;::waitAndPush</a>(<span class="keyword">const</span> std::shared_ptr&lt;TDatums&gt;&amp; tDatums)</div>
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; {</div>
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; {</div>
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordflow">if</span> (!mUserInputWs.empty())</div>
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Push cannot be called if an input worker was already selected.&quot;</span>,</div>
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="keywordflow">return</span> mThreadManager.waitAndPush(tDatums);</div>
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; }</div>
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; {</div>
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; }</div>
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; }</div>
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;</div>
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l01059"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#aafe5cbb9729cee18531bcbc5e1b2a66e"> 1059</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classop_1_1_wrapper.html#aafe5cbb9729cee18531bcbc5e1b2a66e">Wrapper&lt;TDatums, TWorker, TQueue&gt;::tryPop</a>(std::shared_ptr&lt;TDatums&gt;&amp; tDatums)</div>
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; {</div>
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; {</div>
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keywordflow">if</span> (!mUserOutputWs.empty())</div>
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Pop cannot be called if an output worker was already selected.&quot;</span>,</div>
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <span class="keywordflow">return</span> mThreadManager.tryPop(tDatums);</div>
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; }</div>
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; {</div>
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; }</div>
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; }</div>
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;</div>
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l01076"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#a1eb0c88ab1eab9bc50e224d208cfb310"> 1076</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classop_1_1_wrapper.html#a1eb0c88ab1eab9bc50e224d208cfb310">Wrapper&lt;TDatums, TWorker, TQueue&gt;::waitAndPop</a>(std::shared_ptr&lt;TDatums&gt;&amp; tDatums)</div>
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; {</div>
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; {</div>
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; <span class="keywordflow">if</span> (!mUserOutputWs.empty())</div>
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Pop cannot be called if an output worker was already selected.&quot;</span>,</div>
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="keywordflow">return</span> mThreadManager.waitAndPop(tDatums);</div>
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; }</div>
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; {</div>
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; }</div>
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; }</div>
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;</div>
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classop_1_1_wrapper.html">Wrapper&lt;TDatums, TWorker, TQueue&gt;::reset</a>()</div>
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; {</div>
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; {</div>
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; mConfigured = <span class="keyword">false</span>;</div>
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; mThreadManager.reset();</div>
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; mThreadId = 0ull;</div>
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="comment">// Reset</span></div>
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; mUserInputWs.clear();</div>
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; wDatumProducer = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; spWScaleAndSizeExtractor = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; spWCvMatToOpInput = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; spWCvMatToOpOutput = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; spWPoses.clear();</div>
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; mPostProcessingWs.clear();</div>
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; mUserPostProcessingWs.clear();</div>
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; mOutputWs.clear();</div>
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; spWGui = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; mUserOutputWs.clear();</div>
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; }</div>
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; {</div>
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; }</div>
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; }</div>
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;</div>
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; <span class="keywordtype">void</span> Wrapper&lt;TDatums, TWorker, TQueue&gt;::configureThreadManager()</div>
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; {</div>
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; {</div>
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; <span class="comment">// The less number of queues -&gt; the less lag</span></div>
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;</div>
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <span class="comment">// Security checks</span></div>
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keywordflow">if</span> (!mConfigured)</div>
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Configure the Wrapper class before calling `start()`.&quot;</span>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="keywordflow">if</span> ((wDatumProducer == <span class="keyword">nullptr</span>) == (mUserInputWs.empty())</div>
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; &amp;&amp; mThreadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a288aae25bc408055f50c21c991903a44">ThreadManagerMode::Asynchronous</a></div>
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; &amp;&amp; mThreadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a435b3ab344c03bfc0e4530a2e75f5e44">ThreadManagerMode::AsynchronousIn</a>)</div>
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; {</div>
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</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="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="stringliteral">&quot; producer by using setWorkerInput() or use the OpenPose default producer by&quot;</span></div>
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="stringliteral">&quot; configuring it in the configure function) or use the&quot;</span></div>
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <span class="stringliteral">&quot; ThreadManagerMode::Asynchronous(In) mode.&quot;</span>;</div>
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(message, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; }</div>
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordflow">if</span> (mOutputWs.empty() &amp;&amp; mUserOutputWs.empty() &amp;&amp; spWGui == <span class="keyword">nullptr</span></div>
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; &amp;&amp; mThreadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a288aae25bc408055f50c21c991903a44">ThreadManagerMode::Asynchronous</a></div>
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; &amp;&amp; mThreadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36ac68f8680ccf3a65dfcfc63356112c9f9">ThreadManagerMode::AsynchronousOut</a>)</div>
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; {</div>
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</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="l01144"></a><span class="lineno"> 1144</span>&#160; }</div>
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;</div>
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="comment">// Thread Manager:</span></div>
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</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="l01148"></a><span class="lineno"> 1148</span>&#160; mThreadManager.reset();</div>
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; mThreadId = 0ull;</div>
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="keyword">auto</span> queueIn = 0ull;</div>
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <span class="keyword">auto</span> queueOut = 1ull;</div>
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <span class="comment">// If custom user Worker and uses its own thread</span></div>
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; spWIdGenerator = std::make_shared&lt;WIdGenerator&lt;std::shared_ptr&lt;TDatums&gt;&gt;&gt;();</div>
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <span class="keywordflow">if</span> (!mUserInputWs.empty() &amp;&amp; mUserInputWsOnNewThread)</div>
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; {</div>
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <span class="comment">// Thread 0, queues 0 -&gt; 1</span></div>
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; mThreadManager.add(mThreadId, mUserInputWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <span class="keywordflow">if</span> (spWScaleAndSizeExtractor != <span class="keyword">nullptr</span> &amp;&amp; spWCvMatToOpInput != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; {</div>
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="comment">// Thread 1, queues 1 -&gt; 2</span></div>
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="keywordflow">if</span> (spWCvMatToOpOutput == <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; mThreadManager.add(mThreadId, {spWIdGenerator, spWScaleAndSizeExtractor, spWCvMatToOpInput},</div>
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; queueIn++, queueOut++);</div>
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; mThreadManager.add(mThreadId, {spWIdGenerator, spWScaleAndSizeExtractor, spWCvMatToOpInput,</div>
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; spWCvMatToOpOutput}, queueIn++, queueOut++);</div>
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; }</div>
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; mThreadManager.add(mThreadId, spWIdGenerator, queueIn++, queueOut++);</div>
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; }</div>
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="comment">// If custom user Worker in same thread or producer on same thread</span></div>
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; {</div>
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; std::vector&lt;TWorker&gt; workersAux;</div>
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="comment">// Custom user Worker</span></div>
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <span class="keywordflow">if</span> (!mUserInputWs.empty())</div>
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, mUserInputWs);</div>
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="comment">// OpenPose producer</span></div>
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (wDatumProducer != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, {wDatumProducer});</div>
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="comment">// Otherwise</span></div>
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (mThreadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a288aae25bc408055f50c21c991903a44">ThreadManagerMode::Asynchronous</a></div>
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; &amp;&amp; mThreadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a435b3ab344c03bfc0e4530a2e75f5e44">ThreadManagerMode::AsynchronousIn</a>)</div>
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</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="l01186"></a><span class="lineno"> 1186</span>&#160; <span class="comment">// ID generator</span></div>
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, {spWIdGenerator});</div>
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="comment">// Scale &amp; cv::Mat to OP format</span></div>
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; <span class="keywordflow">if</span> (spWScaleAndSizeExtractor != <span class="keyword">nullptr</span> &amp;&amp; spWCvMatToOpInput != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, {spWScaleAndSizeExtractor,</div>
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; spWCvMatToOpInput});</div>
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="comment">// cv::Mat to output format</span></div>
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <span class="keywordflow">if</span> (spWCvMatToOpOutput != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, {spWCvMatToOpOutput});</div>
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <span class="comment">// Thread 0 or 1, queues 0 -&gt; 1</span></div>
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; mThreadManager.add(mThreadId, workersAux, queueIn++, queueOut++);</div>
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; }</div>
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <span class="comment">// Pose estimation &amp; rendering</span></div>
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <span class="comment">// Thread 1 or 2...X, queues 1 -&gt; 2, X = 2 + #GPUs</span></div>
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">if</span> (!spWPoses.empty())</div>
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; {</div>
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; <span class="keywordflow">if</span> (mMultiThreadEnabled)</div>
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; {</div>
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; wPose : spWPoses)</div>
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; {</div>
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; mThreadManager.add(mThreadId, wPose, queueIn, queueOut);</div>
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; }</div>
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; }</div>
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; {</div>
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keywordflow">if</span> (spWPoses.size() &gt; 1)</div>
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</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="l01215"></a><span class="lineno"> 1215</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="l01216"></a><span class="lineno"> 1216</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="l01217"></a><span class="lineno"> 1217</span>&#160; mThreadManager.add(mThreadId, spWPoses.at(0), queueIn, queueOut);</div>
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; }</div>
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; queueIn++;</div>
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; queueOut++;</div>
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; }</div>
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="comment">// If custom user Worker and uses its own thread</span></div>
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <span class="keywordflow">if</span> (!mUserPostProcessingWs.empty() &amp;&amp; mUserPostProcessingWsOnNewThread)</div>
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; {</div>
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="comment">// Post processing workers</span></div>
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; <span class="keywordflow">if</span> (!mPostProcessingWs.empty())</div>
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; {</div>
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <span class="comment">// Thread 2 or 3, queues 2 -&gt; 3</span></div>
<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; mThreadManager.add(mThreadId, mPostProcessingWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; }</div>
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; <span class="comment">// User processing workers</span></div>
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="comment">// Thread 3 or 4, queues 3 -&gt; 4</span></div>
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; mThreadManager.add(mThreadId, mUserPostProcessingWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; <span class="comment">// Output workers</span></div>
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; <span class="keywordflow">if</span> (!mOutputWs.empty())</div>
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; {</div>
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="comment">// Thread 4 or 5, queues 4 -&gt; 5</span></div>
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; mThreadManager.add(mThreadId, mOutputWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; }</div>
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; }</div>
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; <span class="comment">// If custom user Worker in same thread or producer on same thread</span></div>
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; {</div>
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; <span class="comment">// Post processing workers + User post processing workers + Output workers</span></div>
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; <span class="keyword">auto</span> workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(mPostProcessingWs, mUserPostProcessingWs);</div>
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, mOutputWs);</div>
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keywordflow">if</span> (!workersAux.empty())</div>
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; {</div>
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; <span class="comment">// Thread 2 or 3, queues 2 -&gt; 3</span></div>
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; mThreadManager.add(mThreadId, workersAux, queueIn++, queueOut++);</div>
<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; }</div>
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; }</div>
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; <span class="comment">// User output worker</span></div>
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; <span class="comment">// Thread Y, queues Q -&gt; Q+1</span></div>
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; <span class="keywordflow">if</span> (!mUserOutputWs.empty())</div>
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; {</div>
<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; <span class="keywordflow">if</span> (mUserOutputWsOnNewThread)</div>
<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; {</div>
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; mThreadManager.add(mThreadId, mUserOutputWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; }</div>
<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; mThreadManager.add(mThreadId-1, mUserOutputWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; }</div>
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; <span class="comment">// OpenPose GUI</span></div>
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; <span class="keywordflow">if</span> (spWGui != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; {</div>
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; <span class="comment">// Thread Y+1, queues Q+1 -&gt; Q+2</span></div>
<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; mThreadManager.add(mThreadId, spWGui, queueIn++, queueOut++);</div>
<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; }</div>
<div class="line"><a name="l01276"></a><span class="lineno"> 1276</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="l01277"></a><span class="lineno"> 1277</span>&#160; }</div>
<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; {</div>
<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; }</div>
<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; }</div>
<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;</div>
<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> Wrapper&lt;TDatums, TWorker, TQueue&gt;::threadIdPP()</div>
<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; {</div>
<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; {</div>
<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; <span class="keywordflow">if</span> (mMultiThreadEnabled)</div>
<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; mThreadId++;</div>
<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordflow">return</span> mThreadId;</div>
<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; }</div>
<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; {</div>
<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; <span class="keywordflow">return</span> 0ull;</div>
<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; }</div>
<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; }</div>
<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;</div>
<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; <span class="keyword">extern</span> <span class="keyword">template</span> <span class="keyword">class </span>Wrapper&lt;DATUM_BASE_NO_PTR&gt;;</div>
<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;}</div>
<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;</div>
<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;<span class="preprocessor">#endif // OPENPOSE_WRAPPER_WRAPPER_HPP</span></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; <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="l00924"></a><span class="lineno"> 924</span>&#160; }</div>
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="comment">// Set wrapper as configured</span></div>
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; mConfigured = <span class="keyword">true</span>;</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; }</div>
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</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; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; }</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="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l00936"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#a8ae0f91a6882f04464d8897a7c81d174"> 936</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classop_1_1_wrapper.html#a8ae0f91a6882f04464d8897a7c81d174">Wrapper&lt;TDatums, TWorker, TQueue&gt;::exec</a>()</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="keywordflow">try</span></div>
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; {</div>
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; configureThreadManager();</div>
<div class="line"><a name="l00941"></a><span class="lineno"> 941</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="l00942"></a><span class="lineno"> 942</span>&#160; mThreadManager.exec();</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="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; {</div>
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</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; }</div>
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160;</div>
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l00951"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#a338b70f93bfb0ad11b7df6b8db407749"> 951</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classop_1_1_wrapper.html#a338b70f93bfb0ad11b7df6b8db407749">Wrapper&lt;TDatums, TWorker, TQueue&gt;::start</a>()</div>
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; {</div>
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">try</span></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; configureThreadManager();</div>
<div class="line"><a name="l00956"></a><span class="lineno"> 956</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="l00957"></a><span class="lineno"> 957</span>&#160; mThreadManager.start();</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="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; {</div>
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</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; }</div>
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160;</div>
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l00966"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#ab71f75a631e341dde1c07abcd3a4773f"> 966</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classop_1_1_wrapper.html#ab71f75a631e341dde1c07abcd3a4773f">Wrapper&lt;TDatums, TWorker, TQueue&gt;::stop</a>()</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">try</span></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; mThreadManager.stop();</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">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</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#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</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; }</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="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l00979"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#a51ab9e8a63f8fb822550365fc0417d01"> 979</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classop_1_1_wrapper.html#a51ab9e8a63f8fb822550365fc0417d01">Wrapper&lt;TDatums, TWorker, TQueue&gt;::isRunning</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">try</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="keywordflow">return</span> mThreadManager.isRunning();</div>
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; }</div>
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</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; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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; }</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; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l00993"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#a081797a2abda2f91d80876ca6fbb4dbc"> 993</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classop_1_1_wrapper.html#a081797a2abda2f91d80876ca6fbb4dbc">Wrapper&lt;TDatums, TWorker, TQueue&gt;::tryEmplace</a>(std::shared_ptr&lt;TDatums&gt;&amp; tDatums)</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; <span class="keywordflow">try</span></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="keywordflow">if</span> (!mUserInputWs.empty())</div>
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Emplace cannot be called if an input worker was already selected.&quot;</span>,</div>
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <span class="keywordflow">return</span> mThreadManager.tryEmplace(tDatums);</div>
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; }</div>
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; {</div>
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; }</div>
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; }</div>
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;</div>
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l01010"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#ab23c57fa6b88a0c0bd2348e69a3ad5d3"> 1010</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classop_1_1_wrapper.html#ab23c57fa6b88a0c0bd2348e69a3ad5d3">Wrapper&lt;TDatums, TWorker, TQueue&gt;::waitAndEmplace</a>(std::shared_ptr&lt;TDatums&gt;&amp; tDatums)</div>
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; {</div>
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; {</div>
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keywordflow">if</span> (!mUserInputWs.empty())</div>
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Emplace cannot be called if an input worker was already selected.&quot;</span>,</div>
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keywordflow">return</span> mThreadManager.waitAndEmplace(tDatums);</div>
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; }</div>
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; {</div>
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; }</div>
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; }</div>
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;</div>
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l01027"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#af3316c0f86d9d7ca6e246a50d4558e75"> 1027</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classop_1_1_wrapper.html#af3316c0f86d9d7ca6e246a50d4558e75">Wrapper&lt;TDatums, TWorker, TQueue&gt;::tryPush</a>(<span class="keyword">const</span> std::shared_ptr&lt;TDatums&gt;&amp; tDatums)</div>
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; {</div>
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; {</div>
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; <span class="keywordflow">if</span> (!mUserInputWs.empty())</div>
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Push cannot be called if an input worker was already selected.&quot;</span>,</div>
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <span class="keywordflow">return</span> mThreadManager.tryPush(tDatums);</div>
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; }</div>
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; {</div>
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; }</div>
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; }</div>
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;</div>
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l01044"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#acb7c1cff00cd254216b92a0698bf2b6f"> 1044</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classop_1_1_wrapper.html#acb7c1cff00cd254216b92a0698bf2b6f">Wrapper&lt;TDatums, TWorker, TQueue&gt;::waitAndPush</a>(<span class="keyword">const</span> std::shared_ptr&lt;TDatums&gt;&amp; tDatums)</div>
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; {</div>
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; {</div>
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="keywordflow">if</span> (!mUserInputWs.empty())</div>
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Push cannot be called if an input worker was already selected.&quot;</span>,</div>
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <span class="keywordflow">return</span> mThreadManager.waitAndPush(tDatums);</div>
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; }</div>
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; {</div>
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; }</div>
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; }</div>
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;</div>
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l01061"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#aafe5cbb9729cee18531bcbc5e1b2a66e"> 1061</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classop_1_1_wrapper.html#aafe5cbb9729cee18531bcbc5e1b2a66e">Wrapper&lt;TDatums, TWorker, TQueue&gt;::tryPop</a>(std::shared_ptr&lt;TDatums&gt;&amp; tDatums)</div>
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; {</div>
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; {</div>
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; <span class="keywordflow">if</span> (!mUserOutputWs.empty())</div>
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Pop cannot be called if an output worker was already selected.&quot;</span>,</div>
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <span class="keywordflow">return</span> mThreadManager.tryPop(tDatums);</div>
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; }</div>
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; {</div>
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; }</div>
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; }</div>
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;</div>
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l01078"></a><span class="lineno"><a class="line" href="classop_1_1_wrapper.html#a1eb0c88ab1eab9bc50e224d208cfb310"> 1078</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classop_1_1_wrapper.html#a1eb0c88ab1eab9bc50e224d208cfb310">Wrapper&lt;TDatums, TWorker, TQueue&gt;::waitAndPop</a>(std::shared_ptr&lt;TDatums&gt;&amp; tDatums)</div>
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; {</div>
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; {</div>
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="keywordflow">if</span> (!mUserOutputWs.empty())</div>
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Pop cannot be called if an output worker was already selected.&quot;</span>,</div>
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="keywordflow">return</span> mThreadManager.waitAndPop(tDatums);</div>
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; }</div>
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; {</div>
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; }</div>
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; }</div>
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;</div>
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classop_1_1_wrapper.html">Wrapper&lt;TDatums, TWorker, TQueue&gt;::reset</a>()</div>
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; {</div>
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; {</div>
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; mConfigured = <span class="keyword">false</span>;</div>
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; mThreadManager.reset();</div>
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; mThreadId = 0ull;</div>
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="comment">// Reset</span></div>
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; mUserInputWs.clear();</div>
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; wDatumProducer = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; spWScaleAndSizeExtractor = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; spWCvMatToOpInput = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; spWCvMatToOpOutput = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; spWPoses.clear();</div>
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; mPostProcessingWs.clear();</div>
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; mUserPostProcessingWs.clear();</div>
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; mOutputWs.clear();</div>
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; spWGui = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; mUserOutputWs.clear();</div>
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; }</div>
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; {</div>
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; }</div>
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; }</div>
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;</div>
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keywordtype">void</span> Wrapper&lt;TDatums, TWorker, TQueue&gt;::configureThreadManager()</div>
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; {</div>
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; {</div>
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <span class="comment">// The less number of queues -&gt; the less lag</span></div>
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;</div>
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <span class="comment">// Security checks</span></div>
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="keywordflow">if</span> (!mConfigured)</div>
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(<span class="stringliteral">&quot;Configure the Wrapper class before calling `start()`.&quot;</span>, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; <span class="keywordflow">if</span> ((wDatumProducer == <span class="keyword">nullptr</span>) == (mUserInputWs.empty())</div>
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; &amp;&amp; mThreadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a288aae25bc408055f50c21c991903a44">ThreadManagerMode::Asynchronous</a></div>
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; &amp;&amp; mThreadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a435b3ab344c03bfc0e4530a2e75f5e44">ThreadManagerMode::AsynchronousIn</a>)</div>
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; {</div>
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</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="l01136"></a><span class="lineno"> 1136</span>&#160; <span class="stringliteral">&quot; producer by using setWorkerInput() or use the OpenPose default producer by&quot;</span></div>
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <span class="stringliteral">&quot; configuring it in the configure function) or use the&quot;</span></div>
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="stringliteral">&quot; ThreadManagerMode::Asynchronous(In) mode.&quot;</span>;</div>
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(message, __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; }</div>
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="keywordflow">if</span> (mOutputWs.empty() &amp;&amp; mUserOutputWs.empty() &amp;&amp; spWGui == <span class="keyword">nullptr</span></div>
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; &amp;&amp; mThreadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a288aae25bc408055f50c21c991903a44">ThreadManagerMode::Asynchronous</a></div>
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; &amp;&amp; mThreadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36ac68f8680ccf3a65dfcfc63356112c9f9">ThreadManagerMode::AsynchronousOut</a>)</div>
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; {</div>
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</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="l01146"></a><span class="lineno"> 1146</span>&#160; }</div>
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;</div>
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="comment">// Thread Manager:</span></div>
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</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="l01150"></a><span class="lineno"> 1150</span>&#160; mThreadManager.reset();</div>
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; mThreadId = 0ull;</div>
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <span class="keyword">auto</span> queueIn = 0ull;</div>
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; <span class="keyword">auto</span> queueOut = 1ull;</div>
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <span class="comment">// If custom user Worker and uses its own thread</span></div>
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; spWIdGenerator = std::make_shared&lt;WIdGenerator&lt;std::shared_ptr&lt;TDatums&gt;&gt;&gt;();</div>
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <span class="keywordflow">if</span> (!mUserInputWs.empty() &amp;&amp; mUserInputWsOnNewThread)</div>
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; {</div>
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <span class="comment">// Thread 0, queues 0 -&gt; 1</span></div>
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; mThreadManager.add(mThreadId, mUserInputWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <span class="keywordflow">if</span> (spWScaleAndSizeExtractor != <span class="keyword">nullptr</span> &amp;&amp; spWCvMatToOpInput != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; {</div>
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <span class="comment">// Thread 1, queues 1 -&gt; 2</span></div>
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; <span class="keywordflow">if</span> (spWCvMatToOpOutput == <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; mThreadManager.add(mThreadId, {spWIdGenerator, spWScaleAndSizeExtractor, spWCvMatToOpInput},</div>
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; queueIn++, queueOut++);</div>
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; mThreadManager.add(mThreadId, {spWIdGenerator, spWScaleAndSizeExtractor, spWCvMatToOpInput,</div>
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; spWCvMatToOpOutput}, queueIn++, queueOut++);</div>
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; }</div>
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; mThreadManager.add(mThreadId, spWIdGenerator, queueIn++, queueOut++);</div>
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; }</div>
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="comment">// If custom user Worker in same thread or producer on same thread</span></div>
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; {</div>
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; std::vector&lt;TWorker&gt; workersAux;</div>
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="comment">// Custom user Worker</span></div>
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="keywordflow">if</span> (!mUserInputWs.empty())</div>
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, mUserInputWs);</div>
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="comment">// OpenPose producer</span></div>
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (wDatumProducer != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, {wDatumProducer});</div>
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <span class="comment">// Otherwise</span></div>
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (mThreadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a288aae25bc408055f50c21c991903a44">ThreadManagerMode::Asynchronous</a></div>
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; &amp;&amp; mThreadManagerMode != <a class="code" href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a435b3ab344c03bfc0e4530a2e75f5e44">ThreadManagerMode::AsynchronousIn</a>)</div>
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</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="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="comment">// ID generator</span></div>
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, {spWIdGenerator});</div>
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <span class="comment">// Scale &amp; cv::Mat to OP format</span></div>
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; <span class="keywordflow">if</span> (spWScaleAndSizeExtractor != <span class="keyword">nullptr</span> &amp;&amp; spWCvMatToOpInput != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, {spWScaleAndSizeExtractor,</div>
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; spWCvMatToOpInput});</div>
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="comment">// cv::Mat to output format</span></div>
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <span class="keywordflow">if</span> (spWCvMatToOpOutput != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, {spWCvMatToOpOutput});</div>
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="comment">// Thread 0 or 1, queues 0 -&gt; 1</span></div>
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; mThreadManager.add(mThreadId, workersAux, queueIn++, queueOut++);</div>
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; }</div>
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="comment">// Pose estimation &amp; rendering</span></div>
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="comment">// Thread 1 or 2...X, queues 1 -&gt; 2, X = 2 + #GPUs</span></div>
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; <span class="keywordflow">if</span> (!spWPoses.empty())</div>
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; {</div>
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keywordflow">if</span> (mMultiThreadEnabled)</div>
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; {</div>
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; wPose : spWPoses)</div>
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; {</div>
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; mThreadManager.add(mThreadId, wPose, queueIn, queueOut);</div>
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; }</div>
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; }</div>
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; {</div>
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <span class="keywordflow">if</span> (spWPoses.size() &gt; 1)</div>
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</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="l01217"></a><span class="lineno"> 1217</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="l01218"></a><span class="lineno"> 1218</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="l01219"></a><span class="lineno"> 1219</span>&#160; mThreadManager.add(mThreadId, spWPoses.at(0), queueIn, queueOut);</div>
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; }</div>
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; queueIn++;</div>
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; queueOut++;</div>
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; }</div>
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <span class="comment">// If custom user Worker and uses its own thread</span></div>
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keywordflow">if</span> (!mUserPostProcessingWs.empty() &amp;&amp; mUserPostProcessingWsOnNewThread)</div>
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; {</div>
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; <span class="comment">// Post processing workers</span></div>
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <span class="keywordflow">if</span> (!mPostProcessingWs.empty())</div>
<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; {</div>
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="comment">// Thread 2 or 3, queues 2 -&gt; 3</span></div>
<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; mThreadManager.add(mThreadId, mPostProcessingWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; }</div>
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; <span class="comment">// User processing workers</span></div>
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <span class="comment">// Thread 3 or 4, queues 3 -&gt; 4</span></div>
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; mThreadManager.add(mThreadId, mUserPostProcessingWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="comment">// Output workers</span></div>
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="keywordflow">if</span> (!mOutputWs.empty())</div>
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; {</div>
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <span class="comment">// Thread 4 or 5, queues 4 -&gt; 5</span></div>
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; mThreadManager.add(mThreadId, mOutputWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; }</div>
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; }</div>
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <span class="comment">// If custom user Worker in same thread or producer on same thread</span></div>
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; {</div>
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; <span class="comment">// Post processing workers + User post processing workers + Output workers</span></div>
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keyword">auto</span> workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(mPostProcessingWs, mUserPostProcessingWs);</div>
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; workersAux = <a class="code" href="namespaceop.html#aa3a3e2acfb27ecbd187d01c8dcd41899">mergeVectors</a>(workersAux, mOutputWs);</div>
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; <span class="keywordflow">if</span> (!workersAux.empty())</div>
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; {</div>
<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; <span class="comment">// Thread 2 or 3, queues 2 -&gt; 3</span></div>
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; mThreadManager.add(mThreadId, workersAux, queueIn++, queueOut++);</div>
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; }</div>
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; }</div>
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; <span class="comment">// User output worker</span></div>
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; <span class="comment">// Thread Y, queues Q -&gt; Q+1</span></div>
<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; <span class="keywordflow">if</span> (!mUserOutputWs.empty())</div>
<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; {</div>
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; <span class="keywordflow">if</span> (mUserOutputWsOnNewThread)</div>
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; {</div>
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; mThreadManager.add(mThreadId, mUserOutputWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; }</div>
<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; mThreadManager.add(mThreadId-1, mUserOutputWs, queueIn++, queueOut++);</div>
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; }</div>
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; <span class="comment">// OpenPose GUI</span></div>
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; <span class="keywordflow">if</span> (spWGui != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; {</div>
<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="comment">// Thread Y+1, queues Q+1 -&gt; Q+2</span></div>
<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; mThreadManager.add(mThreadId, spWGui, queueIn++, queueOut++);</div>
<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; threadIdPP();</div>
<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; }</div>
<div class="line"><a name="l01278"></a><span class="lineno"> 1278</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="l01279"></a><span class="lineno"> 1279</span>&#160; }</div>
<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; {</div>
<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; }</div>
<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; }</div>
<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;</div>
<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TDatums, <span class="keyword">typename</span> TWorker, <span class="keyword">typename</span> TQueue&gt;</div>
<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> Wrapper&lt;TDatums, TWorker, TQueue&gt;::threadIdPP()</div>
<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; {</div>
<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; {</div>
<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordflow">if</span> (mMultiThreadEnabled)</div>
<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; mThreadId++;</div>
<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="keywordflow">return</span> mThreadId;</div>
<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; }</div>
<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div>
<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; {</div>
<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; <a class="code" href="namespaceop.html#a5f092bd36c716a894cb035e1ead2aca3">error</a>(e.what(), __LINE__, __FUNCTION__, __FILE__);</div>
<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; <span class="keywordflow">return</span> 0ull;</div>
<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; }</div>
<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; }</div>
<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;</div>
<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; <span class="keyword">extern</span> <span class="keyword">template</span> <span class="keyword">class </span>Wrapper&lt;DATUM_BASE_NO_PTR&gt;;</div>
<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;}</div>
<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;</div>
<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;<span class="preprocessor">#endif // OPENPOSE_WRAPPER_WRAPPER_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="structop_1_1_wrapper_struct_pose_html_a35147b6fb9e300d79b71637793053a1b"><div class="ttname"><a href="structop_1_1_wrapper_struct_pose.html#a35147b6fb9e300d79b71637793053a1b">op::WrapperStructPose::poseModel</a></div><div class="ttdeci">PoseModel poseModel</div><div class="ttdef"><b>Definition:</b> wrapperStructPose.hpp:88</div></div>
<div class="ttc" id="core_2headers_8hpp_html"><div class="ttname"><a href="core_2headers_8hpp.html">headers.hpp</a></div></div>
@@ -1298,17 +1300,17 @@ $(document).ready(function(){initNavTree('wrapper_8hpp_source.html','');});
<div class="ttc" id="namespaceop_html_adbb34b5c8f2b6f0c051f831f18582e7fa3c1472839b807c90abff3c7c36dff458"><div class="ttname"><a href="namespaceop.html#adbb34b5c8f2b6f0c051f831f18582e7fa3c1472839b807c90abff3c7c36dff458">op::GpuMode::NoGpu</a></div></div>
<div class="ttc" id="classop_1_1_w_pose_saver_html"><div class="ttname"><a href="classop_1_1_w_pose_saver.html">op::WPoseSaver</a></div><div class="ttdef"><b>Definition:</b> wPoseSaver.hpp:12</div></div>
<div class="ttc" id="structop_1_1_wrapper_struct_pose_html_a0aa4454f4a528f28395e2463ffd8d1af"><div class="ttname"><a href="structop_1_1_wrapper_struct_pose.html#a0aa4454f4a528f28395e2463ffd8d1af">op::WrapperStructPose::identification</a></div><div class="ttdeci">bool identification</div><div class="ttdef"><b>Definition:</b> wrapperStructPose.hpp:181</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_af3316c0f86d9d7ca6e246a50d4558e75"><div class="ttname"><a href="classop_1_1_wrapper.html#af3316c0f86d9d7ca6e246a50d4558e75">op::Wrapper::tryPush</a></div><div class="ttdeci">bool tryPush(const std::shared_ptr&lt; TDatums &gt; &amp;tDatums)</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:1025</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_af3316c0f86d9d7ca6e246a50d4558e75"><div class="ttname"><a href="classop_1_1_wrapper.html#af3316c0f86d9d7ca6e246a50d4558e75">op::Wrapper::tryPush</a></div><div class="ttdeci">bool tryPush(const std::shared_ptr&lt; TDatums &gt; &amp;tDatums)</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:1027</div></div>
<div class="ttc" id="structop_1_1_wrapper_struct_pose_html"><div class="ttname"><a href="structop_1_1_wrapper_struct_pose.html">op::WrapperStructPose</a></div><div class="ttdef"><b>Definition:</b> wrapperStructPose.hpp:17</div></div>
<div class="ttc" id="structop_1_1_wrapper_struct_output_html_ad9ca696781cb7c250752f078f5c937fc"><div class="ttname"><a href="structop_1_1_wrapper_struct_output.html#ad9ca696781cb7c250752f078f5c937fc">op::WrapperStructOutput::writeKeypoint</a></div><div class="ttdeci">std::string writeKeypoint</div><div class="ttdef"><b>Definition:</b> wrapperStructOutput.hpp:44</div></div>
<div class="ttc" id="structop_1_1_wrapper_struct_face_html_a65a0244cbcea06621c6f8c41e519990f"><div class="ttname"><a href="structop_1_1_wrapper_struct_face.html#a65a0244cbcea06621c6f8c41e519990f">op::WrapperStructFace::alphaKeypoint</a></div><div class="ttdeci">float alphaKeypoint</div><div class="ttdef"><b>Definition:</b> wrapperStructFace.hpp:39</div></div>
<div class="ttc" id="namespaceop_html_ac0230b669b296920c0cfc41b7587268fa6bcd0f3b66e42d1aacd18d1c3b532473"><div class="ttname"><a href="namespaceop.html#ac0230b669b296920c0cfc41b7587268fa6bcd0f3b66e42d1aacd18d1c3b532473">op::ProducerFpsMode::RetrievalFps</a></div></div>
<div class="ttc" id="structop_1_1_wrapper_struct_input_html_a5ee9722814fe2b5a695511cabd12b613"><div class="ttname"><a href="structop_1_1_wrapper_struct_input.html#a5ee9722814fe2b5a695511cabd12b613">op::WrapperStructInput::frameFlip</a></div><div class="ttdeci">bool frameFlip</div><div class="ttdef"><b>Definition:</b> wrapperStructInput.hpp:41</div></div>
<div class="ttc" id="classop_1_1_w_face_saver_html"><div class="ttname"><a href="classop_1_1_w_face_saver.html">op::WFaceSaver</a></div><div class="ttdef"><b>Definition:</b> wFaceSaver.hpp:12</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_ab71f75a631e341dde1c07abcd3a4773f"><div class="ttname"><a href="classop_1_1_wrapper.html#ab71f75a631e341dde1c07abcd3a4773f">op::Wrapper::stop</a></div><div class="ttdeci">void stop()</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:964</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_ab71f75a631e341dde1c07abcd3a4773f"><div class="ttname"><a href="classop_1_1_wrapper.html#ab71f75a631e341dde1c07abcd3a4773f">op::Wrapper::stop</a></div><div class="ttdeci">void stop()</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:966</div></div>
<div class="ttc" id="structop_1_1_wrapper_struct_hand_html_a8074cf22f8926d7f4d1d60cacae99c3e"><div class="ttname"><a href="structop_1_1_wrapper_struct_hand.html#a8074cf22f8926d7f4d1d60cacae99c3e">op::WrapperStructHand::alphaKeypoint</a></div><div class="ttdeci">float alphaKeypoint</div><div class="ttdef"><b>Definition:</b> wrapperStructHand.hpp:59</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_aafe5cbb9729cee18531bcbc5e1b2a66e"><div class="ttname"><a href="classop_1_1_wrapper.html#aafe5cbb9729cee18531bcbc5e1b2a66e">op::Wrapper::tryPop</a></div><div class="ttdeci">bool tryPop(std::shared_ptr&lt; TDatums &gt; &amp;tDatums)</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:1059</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_a8ae0f91a6882f04464d8897a7c81d174"><div class="ttname"><a href="classop_1_1_wrapper.html#a8ae0f91a6882f04464d8897a7c81d174">op::Wrapper::exec</a></div><div class="ttdeci">void exec()</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:934</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_aafe5cbb9729cee18531bcbc5e1b2a66e"><div class="ttname"><a href="classop_1_1_wrapper.html#aafe5cbb9729cee18531bcbc5e1b2a66e">op::Wrapper::tryPop</a></div><div class="ttdeci">bool tryPop(std::shared_ptr&lt; TDatums &gt; &amp;tDatums)</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:1061</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_a8ae0f91a6882f04464d8897a7c81d174"><div class="ttname"><a href="classop_1_1_wrapper.html#a8ae0f91a6882f04464d8897a7c81d174">op::Wrapper::exec</a></div><div class="ttdeci">void exec()</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:936</div></div>
<div class="ttc" id="namespaceop_html_af72fe4ed32846c12f41b049d3d0e1bdaa46f9a0da0a5d448fd0cc8b3aa0a9b228"><div class="ttname"><a href="namespaceop.html#af72fe4ed32846c12f41b049d3d0e1bdaa46f9a0da0a5d448fd0cc8b3aa0a9b228">op::ScaleMode::InputResolution</a></div></div>
<div class="ttc" id="pose_2headers_8hpp_html"><div class="ttname"><a href="pose_2headers_8hpp.html">headers.hpp</a></div></div>
<div class="ttc" id="namespaceop_html_a3593e2d53bec533f0048ef3973eebd36a2fe4167817733fec8e6ba1afddf78f1b"><div class="ttname"><a href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36a2fe4167817733fec8e6ba1afddf78f1b">op::ThreadManagerMode::Synchronous</a></div></div>
@@ -1347,9 +1349,9 @@ $(document).ready(function(){initNavTree('wrapper_8hpp_source.html','');});
<div class="ttc" id="structop_1_1_wrapper_struct_pose_html_a646ae142f821411d22d772b76960d585"><div class="ttname"><a href="structop_1_1_wrapper_struct_pose.html#a646ae142f821411d22d772b76960d585">op::WrapperStructPose::scaleGap</a></div><div class="ttdeci">float scaleGap</div><div class="ttdef"><b>Definition:</b> wrapperStructPose.hpp:75</div></div>
<div class="ttc" id="namespaceop_html_afce557f02e337e16150d00bdf72ec033a54c82ef76ecbbd4c2293e09bae01b54e"><div class="ttname"><a href="namespaceop.html#afce557f02e337e16150d00bdf72ec033a54c82ef76ecbbd4c2293e09bae01b54e">op::RenderMode::Cpu</a></div></div>
<div class="ttc" id="structop_1_1_wrapper_struct_pose_html_ad6b5ea0cef8eb81d20ab39099ba7716e"><div class="ttname"><a href="structop_1_1_wrapper_struct_pose.html#ad6b5ea0cef8eb81d20ab39099ba7716e">op::WrapperStructPose::renderMode</a></div><div class="ttdeci">RenderMode renderMode</div><div class="ttdef"><b>Definition:</b> wrapperStructPose.hpp:81</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_ab23c57fa6b88a0c0bd2348e69a3ad5d3"><div class="ttname"><a href="classop_1_1_wrapper.html#ab23c57fa6b88a0c0bd2348e69a3ad5d3">op::Wrapper::waitAndEmplace</a></div><div class="ttdeci">bool waitAndEmplace(std::shared_ptr&lt; TDatums &gt; &amp;tDatums)</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:1008</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_ab23c57fa6b88a0c0bd2348e69a3ad5d3"><div class="ttname"><a href="classop_1_1_wrapper.html#ab23c57fa6b88a0c0bd2348e69a3ad5d3">op::Wrapper::waitAndEmplace</a></div><div class="ttdeci">bool waitAndEmplace(std::shared_ptr&lt; TDatums &gt; &amp;tDatums)</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:1010</div></div>
<div class="ttc" id="classop_1_1_wrapper_html"><div class="ttname"><a href="classop_1_1_wrapper.html">op::Wrapper</a></div><div class="ttdef"><b>Definition:</b> wrapper.hpp:32</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_a081797a2abda2f91d80876ca6fbb4dbc"><div class="ttname"><a href="classop_1_1_wrapper.html#a081797a2abda2f91d80876ca6fbb4dbc">op::Wrapper::tryEmplace</a></div><div class="ttdeci">bool tryEmplace(std::shared_ptr&lt; TDatums &gt; &amp;tDatums)</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:991</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_a081797a2abda2f91d80876ca6fbb4dbc"><div class="ttname"><a href="classop_1_1_wrapper.html#a081797a2abda2f91d80876ca6fbb4dbc">op::Wrapper::tryEmplace</a></div><div class="ttdeci">bool tryEmplace(std::shared_ptr&lt; TDatums &gt; &amp;tDatums)</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:993</div></div>
<div class="ttc" id="structop_1_1_wrapper_struct_hand_html_adaea15e182e5c75129293873cd94e35f"><div class="ttname"><a href="structop_1_1_wrapper_struct_hand.html#adaea15e182e5c75129293873cd94e35f">op::WrapperStructHand::scaleRange</a></div><div class="ttdeci">float scaleRange</div><div class="ttdef"><b>Definition:</b> wrapperStructHand.hpp:40</div></div>
<div class="ttc" id="namespaceop_html_a971a7caa96be5b715b5c22f6e5dc6ad1"><div class="ttname"><a href="namespaceop.html#a971a7caa96be5b715b5c22f6e5dc6ad1">op::getGpuMode</a></div><div class="ttdeci">OP_API GpuMode getGpuMode()</div></div>
<div class="ttc" id="structop_1_1_wrapper_struct_pose_html_a8be188d871061079432ead77b278fe0d"><div class="ttname"><a href="structop_1_1_wrapper_struct_pose.html#a8be188d871061079432ead77b278fe0d">op::WrapperStructPose::gpuNumberStart</a></div><div class="ttdeci">int gpuNumberStart</div><div class="ttdef"><b>Definition:</b> wrapperStructPose.hpp:60</div></div>
@@ -1361,8 +1363,8 @@ $(document).ready(function(){initNavTree('wrapper_8hpp_source.html','');});
<div class="ttc" id="classop_1_1_w_video_saver_html"><div class="ttname"><a href="classop_1_1_w_video_saver.html">op::WVideoSaver</a></div><div class="ttdef"><b>Definition:</b> wVideoSaver.hpp:11</div></div>
<div class="ttc" id="wrapper_struct_output_8hpp_html"><div class="ttname"><a href="wrapper_struct_output_8hpp.html">wrapperStructOutput.hpp</a></div></div>
<div class="ttc" id="classop_1_1_w_op_output_to_cv_mat_html"><div class="ttname"><a href="classop_1_1_w_op_output_to_cv_mat.html">op::WOpOutputToCvMat</a></div><div class="ttdef"><b>Definition:</b> wOpOutputToCvMat.hpp:11</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_acb7c1cff00cd254216b92a0698bf2b6f"><div class="ttname"><a href="classop_1_1_wrapper.html#acb7c1cff00cd254216b92a0698bf2b6f">op::Wrapper::waitAndPush</a></div><div class="ttdeci">bool waitAndPush(const std::shared_ptr&lt; TDatums &gt; &amp;tDatums)</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:1042</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_a338b70f93bfb0ad11b7df6b8db407749"><div class="ttname"><a href="classop_1_1_wrapper.html#a338b70f93bfb0ad11b7df6b8db407749">op::Wrapper::start</a></div><div class="ttdeci">void start()</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:949</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_acb7c1cff00cd254216b92a0698bf2b6f"><div class="ttname"><a href="classop_1_1_wrapper.html#acb7c1cff00cd254216b92a0698bf2b6f">op::Wrapper::waitAndPush</a></div><div class="ttdeci">bool waitAndPush(const std::shared_ptr&lt; TDatums &gt; &amp;tDatums)</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:1044</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_a338b70f93bfb0ad11b7df6b8db407749"><div class="ttname"><a href="classop_1_1_wrapper.html#a338b70f93bfb0ad11b7df6b8db407749">op::Wrapper::start</a></div><div class="ttdeci">void start()</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:951</div></div>
<div class="ttc" id="structop_1_1_wrapper_struct_input_html_a2eeea9ee711a1dcbec99c3dc871fbc47"><div class="ttname"><a href="structop_1_1_wrapper_struct_input.html#a2eeea9ee711a1dcbec99c3dc871fbc47">op::WrapperStructInput::realTimeProcessing</a></div><div class="ttdeci">bool realTimeProcessing</div><div class="ttdef"><b>Definition:</b> wrapperStructInput.hpp:36</div></div>
<div class="ttc" id="namespaceop_html_ab38ea91ef7b7dad700d8e4a4654d48f5"><div class="ttname"><a href="namespaceop.html#ab38ea91ef7b7dad700d8e4a4654d48f5">op::formatAsDirectory</a></div><div class="ttdeci">OP_API std::string formatAsDirectory(const std::string &amp;directoryPathString)</div></div>
<div class="ttc" id="filestream_2headers_8hpp_html"><div class="ttname"><a href="filestream_2headers_8hpp.html">headers.hpp</a></div></div>
@@ -1378,7 +1380,7 @@ $(document).ready(function(){initNavTree('wrapper_8hpp_source.html','');});
<div class="ttc" id="wrapper_struct_pose_8hpp_html"><div class="ttname"><a href="wrapper_struct_pose_8hpp.html">wrapperStructPose.hpp</a></div></div>
<div class="ttc" id="classop_1_1_w_face_renderer_html"><div class="ttname"><a href="classop_1_1_w_face_renderer.html">op::WFaceRenderer</a></div><div class="ttdef"><b>Definition:</b> wFaceRenderer.hpp:11</div></div>
<div class="ttc" id="wrapper_struct_hand_8hpp_html"><div class="ttname"><a href="wrapper_struct_hand_8hpp.html">wrapperStructHand.hpp</a></div></div>
<div class="ttc" id="classop_1_1_wrapper_html_a1eb0c88ab1eab9bc50e224d208cfb310"><div class="ttname"><a href="classop_1_1_wrapper.html#a1eb0c88ab1eab9bc50e224d208cfb310">op::Wrapper::waitAndPop</a></div><div class="ttdeci">bool waitAndPop(std::shared_ptr&lt; TDatums &gt; &amp;tDatums)</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:1076</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_a1eb0c88ab1eab9bc50e224d208cfb310"><div class="ttname"><a href="classop_1_1_wrapper.html#a1eb0c88ab1eab9bc50e224d208cfb310">op::Wrapper::waitAndPop</a></div><div class="ttdeci">bool waitAndPop(std::shared_ptr&lt; TDatums &gt; &amp;tDatums)</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:1078</div></div>
<div class="ttc" id="structop_1_1_wrapper_struct_input_html_adb77e57fd11db9950d9754a2c8c8eaa5"><div class="ttname"><a href="structop_1_1_wrapper_struct_input.html#adb77e57fd11db9950d9754a2c8c8eaa5">op::WrapperStructInput::producerSharedPtr</a></div><div class="ttdeci">std::shared_ptr&lt; Producer &gt; producerSharedPtr</div><div class="ttdef"><b>Definition:</b> wrapperStructInput.hpp:19</div></div>
<div class="ttc" id="classop_1_1_thread_manager_html"><div class="ttname"><a href="classop_1_1_thread_manager.html">op::ThreadManager</a></div><div class="ttdef"><b>Definition:</b> threadManager.hpp:16</div></div>
<div class="ttc" id="classop_1_1_w_pose_renderer_html"><div class="ttname"><a href="classop_1_1_w_pose_renderer.html">op::WPoseRenderer</a></div><div class="ttdef"><b>Definition:</b> wPoseRenderer.hpp:11</div></div>
@@ -1417,7 +1419,7 @@ $(document).ready(function(){initNavTree('wrapper_8hpp_source.html','');});
<div class="ttc" id="structop_1_1_wrapper_struct_pose_html_a4900b6c522150140d27f2e98a260e0ec"><div class="ttname"><a href="structop_1_1_wrapper_struct_pose.html#a4900b6c522150140d27f2e98a260e0ec">op::WrapperStructPose::keypointScale</a></div><div class="ttdeci">ScaleMode keypointScale</div><div class="ttdef"><b>Definition:</b> wrapperStructPose.hpp:47</div></div>
<div class="ttc" id="namespaceop_html_a3593e2d53bec533f0048ef3973eebd36"><div class="ttname"><a href="namespaceop.html#a3593e2d53bec533f0048ef3973eebd36">op::ThreadManagerMode</a></div><div class="ttdeci">ThreadManagerMode</div><div class="ttdef"><b>Definition:</b> enumClasses.hpp:9</div></div>
<div class="ttc" id="structop_1_1_wrapper_struct_pose_html_a536ea76d50e94d513066e9e5767d0c03"><div class="ttname"><a href="structop_1_1_wrapper_struct_pose.html#a536ea76d50e94d513066e9e5767d0c03">op::WrapperStructPose::gpuNumber</a></div><div class="ttdeci">int gpuNumber</div><div class="ttdef"><b>Definition:</b> wrapperStructPose.hpp:54</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_a51ab9e8a63f8fb822550365fc0417d01"><div class="ttname"><a href="classop_1_1_wrapper.html#a51ab9e8a63f8fb822550365fc0417d01">op::Wrapper::isRunning</a></div><div class="ttdeci">bool isRunning() const </div><div class="ttdef"><b>Definition:</b> wrapper.hpp:977</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_a51ab9e8a63f8fb822550365fc0417d01"><div class="ttname"><a href="classop_1_1_wrapper.html#a51ab9e8a63f8fb822550365fc0417d01">op::Wrapper::isRunning</a></div><div class="ttdeci">bool isRunning() const </div><div class="ttdef"><b>Definition:</b> wrapper.hpp:979</div></div>
<div class="ttc" id="classop_1_1_wrapper_html_a74f1287f8e4f998504e2ce571ef36f58"><div class="ttname"><a href="classop_1_1_wrapper.html#a74f1287f8e4f998504e2ce571ef36f58">op::Wrapper::setWorkerInput</a></div><div class="ttdeci">void setWorkerInput(const TWorker &amp;worker, const bool workerOnNewThread=true)</div><div class="ttdef"><b>Definition:</b> wrapper.hpp:325</div></div>
<div class="ttc" id="structop_1_1_wrapper_struct_face_html_a982e3f1a13358a522e1882d17cb80d57"><div class="ttname"><a href="structop_1_1_wrapper_struct_face.html#a982e3f1a13358a522e1882d17cb80d57">op::WrapperStructFace::renderThreshold</a></div><div class="ttdeci">float renderThreshold</div><div class="ttdef"><b>Definition:</b> wrapperStructFace.hpp:52</div></div>
<div class="ttc" id="structop_1_1_wrapper_struct_input_html_a86df98e50b680b30afe100d8b2b50685"><div class="ttname"><a href="structop_1_1_wrapper_struct_input.html#a86df98e50b680b30afe100d8b2b50685">op::WrapperStructInput::frameRotate</a></div><div class="ttdeci">int frameRotate</div><div class="ttdef"><b>Definition:</b> wrapperStructInput.hpp:47</div></div>