\hypertarget{nnstreamer__subplugin_8c}{}\doxysection{nnstreamer/nnstreamer\+\_\+subplugin.c File Reference}
\label{nnstreamer__subplugin_8c}\index{nnstreamer/nnstreamer\_subplugin.c@{nnstreamer/nnstreamer\_subplugin.c}}


Subplugin Manager for N\+N\+Streamer.  


{\ttfamily \#include $<$glib.\+h$>$}\newline
{\ttfamily \#include $<$gmodule.\+h$>$}\newline
{\ttfamily \#include \char`\"{}nnstreamer\+\_\+log.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}nnstreamer\+\_\+subplugin.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}nnstreamer\+\_\+conf.\+h\char`\"{}}\newline
{\ttfamily \#include $<$nnstreamer\+\_\+util.\+h$>$}\newline
Include dependency graph for nnstreamer\+\_\+subplugin.\+c\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{nnstreamer__subplugin_8c__incl}
\end{center}
\end{figure}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \mbox{\hyperlink{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6}{subplugin\+Search\+Logic}} \{ \mbox{\hyperlink{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6acc0d7c34ef551217b050af39b9631ce6}{N\+N\+S\+\_\+\+S\+E\+A\+R\+C\+H\+\_\+\+F\+I\+L\+E\+N\+A\+ME}}, 
\mbox{\hyperlink{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6a3aa92cb009d08dcc364978b2cd008a57}{N\+N\+S\+\_\+\+S\+E\+A\+R\+C\+H\+\_\+\+G\+E\+T\+A\+LL}}, 
\mbox{\hyperlink{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6a9c46d31b5d4bf08467ff6330d06b31b1}{N\+N\+S\+\_\+\+S\+E\+A\+R\+C\+H\+\_\+\+N\+O\+\_\+\+OP}}
 \}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static void \mbox{\hyperlink{nnstreamer__subplugin_8c_ac10bbb5734ddb63b494bf15a1f4728a5}{init\+\_\+subplugin}} (void)
\begin{DoxyCompactList}\small\item\em Create handles at the start of library. \end{DoxyCompactList}\item 
\mbox{\hyperlink{nnstreamer__subplugin_8c_ad35f4cbdaf9380d46d6a55a2fc020ab4}{G\+\_\+\+L\+O\+C\+K\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+S\+T\+A\+T\+IC}} (splock)
\begin{DoxyCompactList}\small\item\em Protects handles and subplugins. \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{nnstreamer__subplugin_8c_aed6998f1687ede26f48627eeae9bb8f4}{\+\_\+spdata\+\_\+destroy}} (gpointer \+\_\+data)
\begin{DoxyCompactList}\small\item\em Private function for g\+\_\+hash\+\_\+table data destructor, G\+Destroy\+Notify. \end{DoxyCompactList}\item 
static \mbox{\hyperlink{nnstreamer__subplugin_8c_aa5a1e5e8c11c77eff4ca0c8113375a7b}{subplugin\+Data}} $\ast$ \mbox{\hyperlink{nnstreamer__subplugin_8c_ab17c09c0faf91f567f04e5636028628d}{\+\_\+get\+\_\+subplugin\+\_\+data}} (\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060}{subplugin\+Type}} \mbox{\hyperlink{gsttensor__if_8c_ae3c4ba0b643db0fa0b5b96496abd1803}{type}}, const gchar $\ast$name)
\begin{DoxyCompactList}\small\item\em Internal function to get sub-\/plugin data. \end{DoxyCompactList}\item 
static \mbox{\hyperlink{nnstreamer__subplugin_8c_aa5a1e5e8c11c77eff4ca0c8113375a7b}{subplugin\+Data}} $\ast$ \mbox{\hyperlink{nnstreamer__subplugin_8c_a06b79c86e99a0c85deb70c3de9701ded}{\+\_\+search\+\_\+subplugin}} (\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060}{subplugin\+Type}} \mbox{\hyperlink{gsttensor__if_8c_ae3c4ba0b643db0fa0b5b96496abd1803}{type}}, const gchar $\ast$name, const gchar $\ast$path)
\begin{DoxyCompactList}\small\item\em Internal function to scan sub-\/plugin. \end{DoxyCompactList}\item 
const void $\ast$ \mbox{\hyperlink{nnstreamer__subplugin_8c_a9a9749415079f97324f49974a78c2a75}{get\+\_\+subplugin}} (\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060}{subplugin\+Type}} \mbox{\hyperlink{gsttensor__if_8c_ae3c4ba0b643db0fa0b5b96496abd1803}{type}}, const char $\ast$name)
\begin{DoxyCompactList}\small\item\em Public function defined in the header. \end{DoxyCompactList}\item 
gchar $\ast$$\ast$ \mbox{\hyperlink{nnstreamer__subplugin_8c_a9a49cd912879fbdf703cdeb1da5f4331}{get\+\_\+all\+\_\+subplugins}} (\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060}{subplugin\+Type}} \mbox{\hyperlink{gsttensor__if_8c_ae3c4ba0b643db0fa0b5b96496abd1803}{type}})
\begin{DoxyCompactList}\small\item\em Public function defined in the header. \end{DoxyCompactList}\item 
gboolean \mbox{\hyperlink{nnstreamer__subplugin_8c_a5942f0329fe7602e106458d69a9a477f}{register\+\_\+subplugin}} (\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060}{subplugin\+Type}} \mbox{\hyperlink{gsttensor__if_8c_ae3c4ba0b643db0fa0b5b96496abd1803}{type}}, const char $\ast$name, const void $\ast$\mbox{\hyperlink{gsttensor__if_8c_a3c9cc8d6e8da85fef51da4c7115b97f6}{data}})
\begin{DoxyCompactList}\small\item\em Public function defined in the header. \end{DoxyCompactList}\item 
gboolean \mbox{\hyperlink{nnstreamer__subplugin_8c_a80d306e6bc53a126f715ca4c531d9a7d}{unregister\+\_\+subplugin}} (\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060}{subplugin\+Type}} \mbox{\hyperlink{gsttensor__if_8c_ae3c4ba0b643db0fa0b5b96496abd1803}{type}}, const char $\ast$name)
\begin{DoxyCompactList}\small\item\em Public function defined in the header. \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{nnstreamer__subplugin_8c_a43e08a2189164d535b1a7ecbac44c628}{\+\_\+close\+\_\+handle}} (gpointer \mbox{\hyperlink{gsttensor__if_8c_a3c9cc8d6e8da85fef51da4c7115b97f6}{data}})
\begin{DoxyCompactList}\small\item\em dealloc function for handles \end{DoxyCompactList}\item 
void \mbox{\hyperlink{nnstreamer__subplugin_8c_a3e7200a364bb55b2d7e49f898682c9e3}{subplugin\+\_\+set\+\_\+custom\+\_\+property\+\_\+desc}} (\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060}{subplugin\+Type}} \mbox{\hyperlink{gsttensor__if_8c_ae3c4ba0b643db0fa0b5b96496abd1803}{type}}, const char $\ast$name, const gchar $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, va\+\_\+list varargs)
\begin{DoxyCompactList}\small\item\em common interface to set custom property description of a sub-\/plugin. \end{DoxyCompactList}\item 
G\+Data $\ast$ \mbox{\hyperlink{nnstreamer__subplugin_8c_a25820d83c2db0d66da5664603d7590a1}{subplugin\+\_\+get\+\_\+custom\+\_\+property\+\_\+desc}} (\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060}{subplugin\+Type}} \mbox{\hyperlink{gsttensor__if_8c_ae3c4ba0b643db0fa0b5b96496abd1803}{type}}, const char $\ast$name)
\begin{DoxyCompactList}\small\item\em common interface to get custom property description of a sub-\/plugin. \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{nnstreamer__subplugin_8c_a586fb3b533b69cb3fead919e0595534e}{fini\+\_\+subplugin}} (void)
\begin{DoxyCompactList}\small\item\em Free handles at the start of library. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
static G\+Ptr\+Array $\ast$ \mbox{\hyperlink{nnstreamer__subplugin_8c_a2e3f8acdf5389823484a6221d11881b8}{handles}} = N\+U\+LL
\begin{DoxyCompactList}\small\item\em Array of dynamic loaded handles. \end{DoxyCompactList}\item 
\mbox{\hyperlink{nnstreamer__subplugin_8c_aa5a1e5e8c11c77eff4ca0c8113375a7b}{subplugin\+Data}}
\item 
static G\+Hash\+Table $\ast$ \mbox{\hyperlink{nnstreamer__subplugin_8c_ac02072ab7b5e9a6acc86f94d4a227996}{subplugins}} \mbox{[}\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060a5eda195c37309124e7ab9861887fc553}{N\+N\+S\+\_\+\+S\+U\+B\+P\+L\+U\+G\+I\+N\+\_\+\+E\+ND}}\mbox{]} = \{ 0 \}
\item 
static \mbox{\hyperlink{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6}{subplugin\+Search\+Logic}} \mbox{\hyperlink{nnstreamer__subplugin_8c_ab041dc903b7b809a9a2a536f98439d98}{search\+Algorithm}} \mbox{[}$\,$\mbox{]}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Subplugin Manager for N\+N\+Streamer. 

N\+N\+Streamer Subplugin Manager Copyright (C) 2018 Myung\+Joo Ham \href{mailto:myungjoo.ham@samsung.com}{\texttt{ myungjoo.\+ham@samsung.\+com}}

This library is free software; you can redistribute it and/or modify it under the terms of the G\+NU Library General Public License as published by the Free Software Foundation; version 2.\+1 of the License.

This library is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Library General Public License for more details.

\begin{DoxyDate}{Date}
27 Nov 2018 
\end{DoxyDate}
\begin{DoxySeeAlso}{See also}
\href{http://github.com/nnstreamer/nnstreamer}{\texttt{ http\+://github.\+com/nnstreamer/nnstreamer}} 
\end{DoxySeeAlso}
\begin{DoxyAuthor}{Author}
Myung\+Joo Ham \href{mailto:myungjoo.ham@samsung.com}{\texttt{ myungjoo.\+ham@samsung.\+com}} 
\end{DoxyAuthor}
\begin{DoxyRefDesc}{Bug}
\item[\mbox{\hyperlink{bug__bug000094}{Bug}}]No known bugs except for N\+YI items\end{DoxyRefDesc}


\doxysubsection{Enumeration Type Documentation}
\mbox{\Hypertarget{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6}\label{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!subpluginSearchLogic@{subpluginSearchLogic}}
\index{subpluginSearchLogic@{subpluginSearchLogic}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{subpluginSearchLogic}{subpluginSearchLogic}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6}{subplugin\+Search\+Logic}}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{NNS\_SEARCH\_FILENAME@{NNS\_SEARCH\_FILENAME}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!NNS\_SEARCH\_FILENAME@{NNS\_SEARCH\_FILENAME}}}\mbox{\Hypertarget{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6acc0d7c34ef551217b050af39b9631ce6}\label{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6acc0d7c34ef551217b050af39b9631ce6}} 
N\+N\+S\+\_\+\+S\+E\+A\+R\+C\+H\+\_\+\+F\+I\+L\+E\+N\+A\+ME&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NNS\_SEARCH\_GETALL@{NNS\_SEARCH\_GETALL}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!NNS\_SEARCH\_GETALL@{NNS\_SEARCH\_GETALL}}}\mbox{\Hypertarget{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6a3aa92cb009d08dcc364978b2cd008a57}\label{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6a3aa92cb009d08dcc364978b2cd008a57}} 
N\+N\+S\+\_\+\+S\+E\+A\+R\+C\+H\+\_\+\+G\+E\+T\+A\+LL&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NNS\_SEARCH\_NO\_OP@{NNS\_SEARCH\_NO\_OP}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!NNS\_SEARCH\_NO\_OP@{NNS\_SEARCH\_NO\_OP}}}\mbox{\Hypertarget{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6a9c46d31b5d4bf08467ff6330d06b31b1}\label{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6a9c46d31b5d4bf08467ff6330d06b31b1}} 
N\+N\+S\+\_\+\+S\+E\+A\+R\+C\+H\+\_\+\+N\+O\+\_\+\+OP&\\
\hline

\end{DoxyEnumFields}


Definition at line 64 of file nnstreamer\+\_\+subplugin.\+c.



\doxysubsection{Function Documentation}
\mbox{\Hypertarget{nnstreamer__subplugin_8c_a43e08a2189164d535b1a7ecbac44c628}\label{nnstreamer__subplugin_8c_a43e08a2189164d535b1a7ecbac44c628}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!\_close\_handle@{\_close\_handle}}
\index{\_close\_handle@{\_close\_handle}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{\_close\_handle()}{\_close\_handle()}}
{\footnotesize\ttfamily static void \+\_\+close\+\_\+handle (\begin{DoxyParamCaption}\item[{gpointer}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



dealloc function for handles 

Ubuntu 16.\+04 / G\+L\+I\+BC 2.\+23 Workaround If we do dlclose at exit() function, it may incur \href{https://bugzilla.redhat.com/show_bug.cgi?id=1264556\#c42}{\texttt{ https\+://bugzilla.\+redhat.\+com/show\+\_\+bug.\+cgi?id=1264556\#c42}} , which is a G\+L\+I\+BC bug at 2.\+23. The corresponding error message is\+: Inconsistency detected by ld.\+so\+: dl-\/close.\+c\+: 811\+: \+\_\+dl\+\_\+close\+: Assertion `map-\/$>$l\+\_\+init\+\_\+called' failed! Note that Tizen 5.\+5 / G\+L\+I\+BC 2.\+24 has the same bug!

Definition at line 305 of file nnstreamer\+\_\+subplugin.\+c.

\mbox{\Hypertarget{nnstreamer__subplugin_8c_ab17c09c0faf91f567f04e5636028628d}\label{nnstreamer__subplugin_8c_ab17c09c0faf91f567f04e5636028628d}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!\_get\_subplugin\_data@{\_get\_subplugin\_data}}
\index{\_get\_subplugin\_data@{\_get\_subplugin\_data}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{\_get\_subplugin\_data()}{\_get\_subplugin\_data()}}
{\footnotesize\ttfamily static \mbox{\hyperlink{nnstreamer__subplugin_8c_aa5a1e5e8c11c77eff4ca0c8113375a7b}{subplugin\+Data}}$\ast$ \+\_\+get\+\_\+subplugin\+\_\+data (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060}{subplugin\+Type}}}]{type,  }\item[{const gchar $\ast$}]{name }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Internal function to get sub-\/plugin data. 



Definition at line 87 of file nnstreamer\+\_\+subplugin.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{nnstreamer__subplugin_8c_ab17c09c0faf91f567f04e5636028628d_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{nnstreamer__subplugin_8c_ab17c09c0faf91f567f04e5636028628d_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{nnstreamer__subplugin_8c_a06b79c86e99a0c85deb70c3de9701ded}\label{nnstreamer__subplugin_8c_a06b79c86e99a0c85deb70c3de9701ded}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!\_search\_subplugin@{\_search\_subplugin}}
\index{\_search\_subplugin@{\_search\_subplugin}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{\_search\_subplugin()}{\_search\_subplugin()}}
{\footnotesize\ttfamily static \mbox{\hyperlink{nnstreamer__subplugin_8c_aa5a1e5e8c11c77eff4ca0c8113375a7b}{subplugin\+Data}}$\ast$ \+\_\+search\+\_\+subplugin (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060}{subplugin\+Type}}}]{type,  }\item[{const gchar $\ast$}]{name,  }\item[{const gchar $\ast$}]{path }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Internal function to scan sub-\/plugin. 



Definition at line 108 of file nnstreamer\+\_\+subplugin.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{nnstreamer__subplugin_8c_a06b79c86e99a0c85deb70c3de9701ded_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{nnstreamer__subplugin_8c_a06b79c86e99a0c85deb70c3de9701ded_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{nnstreamer__subplugin_8c_aed6998f1687ede26f48627eeae9bb8f4}\label{nnstreamer__subplugin_8c_aed6998f1687ede26f48627eeae9bb8f4}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!\_spdata\_destroy@{\_spdata\_destroy}}
\index{\_spdata\_destroy@{\_spdata\_destroy}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{\_spdata\_destroy()}{\_spdata\_destroy()}}
{\footnotesize\ttfamily static void \+\_\+spdata\+\_\+destroy (\begin{DoxyParamCaption}\item[{gpointer}]{\+\_\+data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Private function for g\+\_\+hash\+\_\+table data destructor, G\+Destroy\+Notify. 



Definition at line 54 of file nnstreamer\+\_\+subplugin.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=260pt]{nnstreamer__subplugin_8c_aed6998f1687ede26f48627eeae9bb8f4_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{nnstreamer__subplugin_8c_aed6998f1687ede26f48627eeae9bb8f4_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{nnstreamer__subplugin_8c_a586fb3b533b69cb3fead919e0595534e}\label{nnstreamer__subplugin_8c_a586fb3b533b69cb3fead919e0595534e}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!fini\_subplugin@{fini\_subplugin}}
\index{fini\_subplugin@{fini\_subplugin}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{fini\_subplugin()}{fini\_subplugin()}}
{\footnotesize\ttfamily static void fini\+\_\+subplugin (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Free handles at the start of library. 

Internal error (init not called?)

Definition at line 385 of file nnstreamer\+\_\+subplugin.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=258pt]{nnstreamer__subplugin_8c_a586fb3b533b69cb3fead919e0595534e_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{nnstreamer__subplugin_8c_ad35f4cbdaf9380d46d6a55a2fc020ab4}\label{nnstreamer__subplugin_8c_ad35f4cbdaf9380d46d6a55a2fc020ab4}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!G\_LOCK\_DEFINE\_STATIC@{G\_LOCK\_DEFINE\_STATIC}}
\index{G\_LOCK\_DEFINE\_STATIC@{G\_LOCK\_DEFINE\_STATIC}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{G\_LOCK\_DEFINE\_STATIC()}{G\_LOCK\_DEFINE\_STATIC()}}
{\footnotesize\ttfamily G\+\_\+\+L\+O\+C\+K\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+S\+T\+A\+T\+IC (\begin{DoxyParamCaption}\item[{splock}]{ }\end{DoxyParamCaption})}



Protects handles and subplugins. 

\mbox{\Hypertarget{nnstreamer__subplugin_8c_a9a49cd912879fbdf703cdeb1da5f4331}\label{nnstreamer__subplugin_8c_a9a49cd912879fbdf703cdeb1da5f4331}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!get\_all\_subplugins@{get\_all\_subplugins}}
\index{get\_all\_subplugins@{get\_all\_subplugins}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{get\_all\_subplugins()}{get\_all\_subplugins()}}
{\footnotesize\ttfamily gchar$\ast$$\ast$ get\+\_\+all\+\_\+subplugins (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060}{subplugin\+Type}}}]{type }\end{DoxyParamCaption})}



Public function defined in the header. 

Get the list of registered subplugins. 

Definition at line 176 of file nnstreamer\+\_\+subplugin.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{nnstreamer__subplugin_8c_a9a49cd912879fbdf703cdeb1da5f4331_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{nnstreamer__subplugin_8c_a9a49cd912879fbdf703cdeb1da5f4331_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{nnstreamer__subplugin_8c_a9a9749415079f97324f49974a78c2a75}\label{nnstreamer__subplugin_8c_a9a9749415079f97324f49974a78c2a75}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!get\_subplugin@{get\_subplugin}}
\index{get\_subplugin@{get\_subplugin}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{get\_subplugin()}{get\_subplugin()}}
{\footnotesize\ttfamily const void$\ast$ get\+\_\+subplugin (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060}{subplugin\+Type}}}]{type,  }\item[{const char $\ast$}]{name }\end{DoxyParamCaption})}



Public function defined in the header. 

Retrieve the registered data with the subplugin name. Search and register if found with the conf

Definition at line 141 of file nnstreamer\+\_\+subplugin.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{nnstreamer__subplugin_8c_a9a9749415079f97324f49974a78c2a75_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{nnstreamer__subplugin_8c_a9a9749415079f97324f49974a78c2a75_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{nnstreamer__subplugin_8c_ac10bbb5734ddb63b494bf15a1f4728a5}\label{nnstreamer__subplugin_8c_ac10bbb5734ddb63b494bf15a1f4728a5}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!init\_subplugin@{init\_subplugin}}
\index{init\_subplugin@{init\_subplugin}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{init\_subplugin()}{init\_subplugin()}}
{\footnotesize\ttfamily static void init\+\_\+subplugin (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Create handles at the start of library. 

$<$ The name of subplugin

$<$ subplugin specific data forwarded from the subplugin

$<$ \mbox{[}O\+P\+T\+I\+O\+N\+AL\mbox{]} subplugin specific custom property desc list

Internal error (duplicated init call?)

Definition at line 37 of file nnstreamer\+\_\+subplugin.\+c.

\mbox{\Hypertarget{nnstreamer__subplugin_8c_a5942f0329fe7602e106458d69a9a477f}\label{nnstreamer__subplugin_8c_a5942f0329fe7602e106458d69a9a477f}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!register\_subplugin@{register\_subplugin}}
\index{register\_subplugin@{register\_subplugin}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{register\_subplugin()}{register\_subplugin()}}
{\footnotesize\ttfamily gboolean register\+\_\+subplugin (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060}{subplugin\+Type}}}]{type,  }\item[{const char $\ast$}]{name,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Public function defined in the header. 

Register the subplugin. If duplicated name exists, it is rejected. \begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000053}{Todo}}]data out of scope at add \end{DoxyRefDesc}


Definition at line 225 of file nnstreamer\+\_\+subplugin.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{nnstreamer__subplugin_8c_a5942f0329fe7602e106458d69a9a477f_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{nnstreamer__subplugin_8c_a5942f0329fe7602e106458d69a9a477f_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{nnstreamer__subplugin_8c_a25820d83c2db0d66da5664603d7590a1}\label{nnstreamer__subplugin_8c_a25820d83c2db0d66da5664603d7590a1}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!subplugin\_get\_custom\_property\_desc@{subplugin\_get\_custom\_property\_desc}}
\index{subplugin\_get\_custom\_property\_desc@{subplugin\_get\_custom\_property\_desc}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{subplugin\_get\_custom\_property\_desc()}{subplugin\_get\_custom\_property\_desc()}}
{\footnotesize\ttfamily G\+Data$\ast$ subplugin\+\_\+get\+\_\+custom\+\_\+property\+\_\+desc (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060}{subplugin\+Type}}}]{type,  }\item[{const char $\ast$}]{name }\end{DoxyParamCaption})}



common interface to get custom property description of a sub-\/plugin. 



Definition at line 359 of file nnstreamer\+\_\+subplugin.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{nnstreamer__subplugin_8c_a25820d83c2db0d66da5664603d7590a1_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{nnstreamer__subplugin_8c_a25820d83c2db0d66da5664603d7590a1_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{nnstreamer__subplugin_8c_a3e7200a364bb55b2d7e49f898682c9e3}\label{nnstreamer__subplugin_8c_a3e7200a364bb55b2d7e49f898682c9e3}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!subplugin\_set\_custom\_property\_desc@{subplugin\_set\_custom\_property\_desc}}
\index{subplugin\_set\_custom\_property\_desc@{subplugin\_set\_custom\_property\_desc}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{subplugin\_set\_custom\_property\_desc()}{subplugin\_set\_custom\_property\_desc()}}
{\footnotesize\ttfamily void subplugin\+\_\+set\+\_\+custom\+\_\+property\+\_\+desc (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060}{subplugin\+Type}}}]{type,  }\item[{const char $\ast$}]{name,  }\item[{const gchar $\ast$}]{prop,  }\item[{va\+\_\+list}]{varargs }\end{DoxyParamCaption})}



common interface to set custom property description of a sub-\/plugin. 



Definition at line 329 of file nnstreamer\+\_\+subplugin.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{nnstreamer__subplugin_8c_a3e7200a364bb55b2d7e49f898682c9e3_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{nnstreamer__subplugin_8c_a3e7200a364bb55b2d7e49f898682c9e3_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{nnstreamer__subplugin_8c_a80d306e6bc53a126f715ca4c531d9a7d}\label{nnstreamer__subplugin_8c_a80d306e6bc53a126f715ca4c531d9a7d}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!unregister\_subplugin@{unregister\_subplugin}}
\index{unregister\_subplugin@{unregister\_subplugin}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{unregister\_subplugin()}{unregister\_subplugin()}}
{\footnotesize\ttfamily gboolean unregister\+\_\+subplugin (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060}{subplugin\+Type}}}]{type,  }\item[{const char $\ast$}]{name }\end{DoxyParamCaption})}



Public function defined in the header. 

Unregister the subplugin. 

Definition at line 289 of file nnstreamer\+\_\+subplugin.\+c.

Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{nnstreamer__subplugin_8c_a80d306e6bc53a126f715ca4c531d9a7d_icgraph}
\end{center}
\end{figure}


\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{nnstreamer__subplugin_8c_a2e3f8acdf5389823484a6221d11881b8}\label{nnstreamer__subplugin_8c_a2e3f8acdf5389823484a6221d11881b8}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!handles@{handles}}
\index{handles@{handles}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{handles}{handles}}
{\footnotesize\ttfamily G\+Ptr\+Array$\ast$ handles = N\+U\+LL\hspace{0.3cm}{\ttfamily [static]}}



Array of dynamic loaded handles. 



Definition at line 35 of file nnstreamer\+\_\+subplugin.\+c.

\mbox{\Hypertarget{nnstreamer__subplugin_8c_ab041dc903b7b809a9a2a536f98439d98}\label{nnstreamer__subplugin_8c_ab041dc903b7b809a9a2a536f98439d98}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!searchAlgorithm@{searchAlgorithm}}
\index{searchAlgorithm@{searchAlgorithm}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{searchAlgorithm}{searchAlgorithm}}
{\footnotesize\ttfamily \mbox{\hyperlink{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6}{subplugin\+Search\+Logic}} search\+Algorithm\mbox{[}$\,$\mbox{]}\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{  [\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060a49c348a060a53415471e70d0cc3f6bab}{NNS\_SUBPLUGIN\_FILTER}}] = \mbox{\hyperlink{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6acc0d7c34ef551217b050af39b9631ce6}{NNS\_SEARCH\_FILENAME}},}
\DoxyCodeLine{  [\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060affa3fdf95abbbadf8bf43aea026db9ad}{NNS\_SUBPLUGIN\_DECODER}}] = \mbox{\hyperlink{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6acc0d7c34ef551217b050af39b9631ce6}{NNS\_SEARCH\_FILENAME}},}
\DoxyCodeLine{  [\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060ac71634b380c535008e1bcca78e8b4f52}{NNS\_EASY\_CUSTOM\_FILTER}}] = \mbox{\hyperlink{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6acc0d7c34ef551217b050af39b9631ce6}{NNS\_SEARCH\_FILENAME}},}
\DoxyCodeLine{  [\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060a6f487ea8243f9ab8c838d003d3783f52}{NNS\_SUBPLUGIN\_CONVERTER}}] = \mbox{\hyperlink{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6a3aa92cb009d08dcc364978b2cd008a57}{NNS\_SEARCH\_GETALL}},}
\DoxyCodeLine{  [\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060aa43ed85d3788d4fa19102196a6efea1f}{NNS\_SUBPLUGIN\_TRAINER}}] = \mbox{\hyperlink{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6acc0d7c34ef551217b050af39b9631ce6}{NNS\_SEARCH\_FILENAME}},}
\DoxyCodeLine{  [\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060aba8fabaaf98fe9e9f9c34d5a54f3dec6}{NNS\_CUSTOM\_CONVERTER}}] = \mbox{\hyperlink{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6a9c46d31b5d4bf08467ff6330d06b31b1}{NNS\_SEARCH\_NO\_OP}},}
\DoxyCodeLine{  [\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060af60dc45df7d07756bd520b549a6c90dd}{NNS\_CUSTOM\_DECODER}}] = \mbox{\hyperlink{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6a9c46d31b5d4bf08467ff6330d06b31b1}{NNS\_SEARCH\_NO\_OP}},}
\DoxyCodeLine{  [\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060a8783ec0fd48caa402ae0a6d0feb23b16}{NNS\_IF\_CUSTOM}}] = \mbox{\hyperlink{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6a9c46d31b5d4bf08467ff6330d06b31b1}{NNS\_SEARCH\_NO\_OP}},}
\DoxyCodeLine{  [\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060a5eda195c37309124e7ab9861887fc553}{NNS\_SUBPLUGIN\_END}}] = \mbox{\hyperlink{nnstreamer__subplugin_8c_a67fc1fa85ceb210d4479ba526c83dab6a9c46d31b5d4bf08467ff6330d06b31b1}{NNS\_SEARCH\_NO\_OP}},}
\DoxyCodeLine{\}}

\end{DoxyCode}


Definition at line 71 of file nnstreamer\+\_\+subplugin.\+c.

\mbox{\Hypertarget{nnstreamer__subplugin_8c_aa5a1e5e8c11c77eff4ca0c8113375a7b}\label{nnstreamer__subplugin_8c_aa5a1e5e8c11c77eff4ca0c8113375a7b}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!subpluginData@{subpluginData}}
\index{subpluginData@{subpluginData}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{subpluginData}{subpluginData}}
{\footnotesize\ttfamily subplugin\+Data}



Definition at line 45 of file nnstreamer\+\_\+subplugin.\+c.

\mbox{\Hypertarget{nnstreamer__subplugin_8c_ac02072ab7b5e9a6acc86f94d4a227996}\label{nnstreamer__subplugin_8c_ac02072ab7b5e9a6acc86f94d4a227996}} 
\index{nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}!subplugins@{subplugins}}
\index{subplugins@{subplugins}!nnstreamer\_subplugin.c@{nnstreamer\_subplugin.c}}
\doxysubsubsection{\texorpdfstring{subplugins}{subplugins}}
{\footnotesize\ttfamily G\+Hash\+Table$\ast$ subplugins\mbox{[}\mbox{\hyperlink{nnstreamer__subplugin_8h_a5859b643ab4af6b6b9ae2344242a8060a5eda195c37309124e7ab9861887fc553}{N\+N\+S\+\_\+\+S\+U\+B\+P\+L\+U\+G\+I\+N\+\_\+\+E\+ND}}\mbox{]} = \{ 0 \}\hspace{0.3cm}{\ttfamily [static]}}



Definition at line 47 of file nnstreamer\+\_\+subplugin.\+c.

