\hypertarget{tensor__filter__custom_8c}{}\doxysection{nnstreamer/tensor\+\_\+filter/tensor\+\_\+filter\+\_\+custom.c File Reference}
\label{tensor__filter__custom_8c}\index{nnstreamer/tensor\_filter/tensor\_filter\_custom.c@{nnstreamer/tensor\_filter/tensor\_filter\_custom.c}}


Custom tensor post-\/processing interface for N\+N\+Streamer suite between NN developer-\/plugins and N\+Nstreamer.  


{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$glib.\+h$>$}\newline
{\ttfamily \#include $<$gmodule.\+h$>$}\newline
{\ttfamily \#include \char`\"{}tensor\+\_\+filter\+\_\+custom.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}nnstreamer\+\_\+plugin\+\_\+api\+\_\+filter.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}nnstreamer\+\_\+conf.\+h\char`\"{}}\newline
{\ttfamily \#include $<$nnstreamer\+\_\+log.\+h$>$}\newline
Include dependency graph for tensor\+\_\+filter\+\_\+custom.\+c\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{tensor__filter__custom_8c__incl}
\end{center}
\end{figure}
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{struct__internal__data}{\+\_\+internal\+\_\+data}}
\begin{DoxyCompactList}\small\item\em internal\+\_\+data \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \mbox{\hyperlink{struct__internal__data}{\+\_\+internal\+\_\+data}} \mbox{\hyperlink{tensor__filter__custom_8c_a0e541a8dff66a566114ab7f3918ea2ea}{internal\+\_\+data}}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \mbox{\hyperlink{tensor__filter__custom_8c_a7f7e8f27e2a4c1229d51f9e0ecab83fd}{init\+\_\+filter\+\_\+custom}} (void)
\begin{DoxyCompactList}\small\item\em Initialize this object for tensor\+\_\+filter subplugin runtime register. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{tensor__filter__custom_8c_aaa9550e10594260d2df1b5eac80b3180}{custom\+\_\+loadlib}} (const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, void $\ast$$\ast$private\+\_\+data)
\begin{DoxyCompactList}\small\item\em Load the custom library. Will skip loading if it\textquotesingle{}s already loaded. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{tensor__filter__custom_8c_a99803bce33c25f150656b866d281a725}{custom\+\_\+open}} (const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, void $\ast$$\ast$private\+\_\+data)
\begin{DoxyCompactList}\small\item\em The open callback for Gst\+Tensor\+Filter\+Framework. Called before anything else. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{tensor__filter__custom_8c_a416e55d7e0b6383ea83584dd717583f2}{custom\+\_\+invoke}} (const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, void $\ast$$\ast$private\+\_\+data, const \mbox{\hyperlink{structGstTensorMemory}{Gst\+Tensor\+Memory}} $\ast$input, \mbox{\hyperlink{structGstTensorMemory}{Gst\+Tensor\+Memory}} $\ast$output)
\begin{DoxyCompactList}\small\item\em The mandatory callback for Gst\+Tensor\+Filter\+Framework. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{tensor__filter__custom_8c_ab3ee611d460bf8ceb327b3dd8901b365}{custom\+\_\+get\+Input\+Dim}} (const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, void $\ast$$\ast$private\+\_\+data, \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$info)
\begin{DoxyCompactList}\small\item\em The optional callback for Gst\+Tensor\+Filter\+Framework. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{tensor__filter__custom_8c_a8701396dd83928f06adc31a54214753a}{custom\+\_\+get\+Output\+Dim}} (const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, void $\ast$$\ast$private\+\_\+data, \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$info)
\begin{DoxyCompactList}\small\item\em The optional callback for Gst\+Tensor\+Filter\+Framework. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{tensor__filter__custom_8c_a532451fbc1cdc3a7135c3f7b8a0a96a9}{custom\+\_\+set\+Input\+Dim}} (const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, void $\ast$$\ast$private\+\_\+data, const \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$in\+\_\+info, \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$out\+\_\+info)
\begin{DoxyCompactList}\small\item\em The set-\/input-\/dim callback for Gst\+Tensor\+Filter\+Framework. \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{tensor__filter__custom_8c_a32d79fcb832ce8be1b8c841de80a0471}{custom\+\_\+close}} (const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, void $\ast$$\ast$private\+\_\+data)
\begin{DoxyCompactList}\small\item\em Free private\+Data and move on. \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{tensor__filter__custom_8c_ad51f1414c5dcef59eec1af245d1ba1ec}{custom\+\_\+destroy\+Notify}} (void $\ast$$\ast$private\+\_\+data, void $\ast$\mbox{\hyperlink{gsttensor__if_8c_a3c9cc8d6e8da85fef51da4c7115b97f6}{data}})
\begin{DoxyCompactList}\small\item\em The optional callback for Gst\+Tensor\+Filter\+Framework. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{tensor__filter__custom_8c_aa352e50b4316eba022d0f23d13837dc2}{custom\+\_\+allocate\+In\+Invoke}} (void $\ast$$\ast$private\+\_\+data)
\begin{DoxyCompactList}\small\item\em The optional callback for Gst\+Tensor\+Filter\+Framework. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{tensor__filter__custom_8c_a29dc066031ce7c6e11da206acbc3a35b}{custom\+\_\+check\+Availability}} (\mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a9aeeff91a7314001f4011dbdcb7500f8}{accl\+\_\+hw}} hw)
\begin{DoxyCompactList}\small\item\em Check support of the backend. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{tensor__filter__custom_8c_ad966021b0f49a0a6d863d1432e8d1fac}{fini\+\_\+filter\+\_\+custom}} (void)
\begin{DoxyCompactList}\small\item\em Destruct the subplugin. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
static gchar \mbox{\hyperlink{tensor__filter__custom_8c_a4f6607bb0ec8424e102accfa883d5ab1}{filter\+\_\+subplugin\+\_\+custom}} \mbox{[}$\,$\mbox{]} = \char`\"{}custom\char`\"{}
\item 
static \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a2aed82bb2c62b38fba28759423860e0c}{Gst\+Tensor\+Filter\+Framework}} \mbox{\hyperlink{tensor__filter__custom_8c_a5a70e09f556580eebdcc7b1b782c7d44}{N\+N\+S\+\_\+support\+\_\+custom}}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Custom tensor post-\/processing interface for N\+N\+Streamer suite between NN developer-\/plugins and N\+Nstreamer. 

G\+Streamer Tensor\+\_\+\+Filter Module 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}
01 Jun 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__bug000107}{Bug}}]No known bugs except for N\+YI items\end{DoxyRefDesc}


This is the per-\/\+N\+N-\/framework plugin (custom) for tensor\+\_\+filter. Fill in \char`\"{}\+Gst\+Tensor\+Filter\+Framework\char`\"{} for \mbox{\hyperlink{tensor__filter_8h}{tensor\+\_\+filter.\+h}}/c 

\doxysubsection{Typedef Documentation}
\mbox{\Hypertarget{tensor__filter__custom_8c_a0e541a8dff66a566114ab7f3918ea2ea}\label{tensor__filter__custom_8c_a0e541a8dff66a566114ab7f3918ea2ea}} 
\index{tensor\_filter\_custom.c@{tensor\_filter\_custom.c}!internal\_data@{internal\_data}}
\index{internal\_data@{internal\_data}!tensor\_filter\_custom.c@{tensor\_filter\_custom.c}}
\doxysubsubsection{\texorpdfstring{internal\_data}{internal\_data}}
{\footnotesize\ttfamily typedef struct \mbox{\hyperlink{struct__internal__data}{\+\_\+internal\+\_\+data}} \mbox{\hyperlink{tensor__filter__custom_8c_a0e541a8dff66a566114ab7f3918ea2ea}{internal\+\_\+data}}}



Definition at line 57 of file tensor\+\_\+filter\+\_\+custom.\+c.



\doxysubsection{Function Documentation}
\mbox{\Hypertarget{tensor__filter__custom_8c_aa352e50b4316eba022d0f23d13837dc2}\label{tensor__filter__custom_8c_aa352e50b4316eba022d0f23d13837dc2}} 
\index{tensor\_filter\_custom.c@{tensor\_filter\_custom.c}!custom\_allocateInInvoke@{custom\_allocateInInvoke}}
\index{custom\_allocateInInvoke@{custom\_allocateInInvoke}!tensor\_filter\_custom.c@{tensor\_filter\_custom.c}}
\doxysubsubsection{\texorpdfstring{custom\_allocateInInvoke()}{custom\_allocateInInvoke()}}
{\footnotesize\ttfamily static int custom\+\_\+allocate\+In\+Invoke (\begin{DoxyParamCaption}\item[{void $\ast$$\ast$}]{private\+\_\+data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



The optional callback for Gst\+Tensor\+Filter\+Framework. 



Definition at line 283 of file tensor\+\_\+filter\+\_\+custom.\+c.

\mbox{\Hypertarget{tensor__filter__custom_8c_a29dc066031ce7c6e11da206acbc3a35b}\label{tensor__filter__custom_8c_a29dc066031ce7c6e11da206acbc3a35b}} 
\index{tensor\_filter\_custom.c@{tensor\_filter\_custom.c}!custom\_checkAvailability@{custom\_checkAvailability}}
\index{custom\_checkAvailability@{custom\_checkAvailability}!tensor\_filter\_custom.c@{tensor\_filter\_custom.c}}
\doxysubsubsection{\texorpdfstring{custom\_checkAvailability()}{custom\_checkAvailability()}}
{\footnotesize\ttfamily static int custom\+\_\+check\+Availability (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a9aeeff91a7314001f4011dbdcb7500f8}{accl\+\_\+hw}}}]{hw }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Check support of the backend. 



Definition at line 298 of file tensor\+\_\+filter\+\_\+custom.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{tensor__filter__custom_8c_a29dc066031ce7c6e11da206acbc3a35b_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{tensor__filter__custom_8c_a32d79fcb832ce8be1b8c841de80a0471}\label{tensor__filter__custom_8c_a32d79fcb832ce8be1b8c841de80a0471}} 
\index{tensor\_filter\_custom.c@{tensor\_filter\_custom.c}!custom\_close@{custom\_close}}
\index{custom\_close@{custom\_close}!tensor\_filter\_custom.c@{tensor\_filter\_custom.c}}
\doxysubsubsection{\texorpdfstring{custom\_close()}{custom\_close()}}
{\footnotesize\ttfamily static void custom\+\_\+close (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$}]{prop,  }\item[{void $\ast$$\ast$}]{private\+\_\+data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Free private\+Data and move on. 



Definition at line 252 of file tensor\+\_\+filter\+\_\+custom.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=246pt]{tensor__filter__custom_8c_a32d79fcb832ce8be1b8c841de80a0471_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{tensor__filter__custom_8c_ad51f1414c5dcef59eec1af245d1ba1ec}\label{tensor__filter__custom_8c_ad51f1414c5dcef59eec1af245d1ba1ec}} 
\index{tensor\_filter\_custom.c@{tensor\_filter\_custom.c}!custom\_destroyNotify@{custom\_destroyNotify}}
\index{custom\_destroyNotify@{custom\_destroyNotify}!tensor\_filter\_custom.c@{tensor\_filter\_custom.c}}
\doxysubsubsection{\texorpdfstring{custom\_destroyNotify()}{custom\_destroyNotify()}}
{\footnotesize\ttfamily static void custom\+\_\+destroy\+Notify (\begin{DoxyParamCaption}\item[{void $\ast$$\ast$}]{private\+\_\+data,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



The optional callback for Gst\+Tensor\+Filter\+Framework. 



Definition at line 267 of file tensor\+\_\+filter\+\_\+custom.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=287pt]{tensor__filter__custom_8c_ad51f1414c5dcef59eec1af245d1ba1ec_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{tensor__filter__custom_8c_ab3ee611d460bf8ceb327b3dd8901b365}\label{tensor__filter__custom_8c_ab3ee611d460bf8ceb327b3dd8901b365}} 
\index{tensor\_filter\_custom.c@{tensor\_filter\_custom.c}!custom\_getInputDim@{custom\_getInputDim}}
\index{custom\_getInputDim@{custom\_getInputDim}!tensor\_filter\_custom.c@{tensor\_filter\_custom.c}}
\doxysubsubsection{\texorpdfstring{custom\_getInputDim()}{custom\_getInputDim()}}
{\footnotesize\ttfamily static int custom\+\_\+get\+Input\+Dim (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$}]{prop,  }\item[{void $\ast$$\ast$}]{private\+\_\+data,  }\item[{\mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$}]{info }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



The optional callback for Gst\+Tensor\+Filter\+Framework. 



Definition at line 193 of file tensor\+\_\+filter\+\_\+custom.\+c.

\mbox{\Hypertarget{tensor__filter__custom_8c_a8701396dd83928f06adc31a54214753a}\label{tensor__filter__custom_8c_a8701396dd83928f06adc31a54214753a}} 
\index{tensor\_filter\_custom.c@{tensor\_filter\_custom.c}!custom\_getOutputDim@{custom\_getOutputDim}}
\index{custom\_getOutputDim@{custom\_getOutputDim}!tensor\_filter\_custom.c@{tensor\_filter\_custom.c}}
\doxysubsubsection{\texorpdfstring{custom\_getOutputDim()}{custom\_getOutputDim()}}
{\footnotesize\ttfamily static int custom\+\_\+get\+Output\+Dim (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$}]{prop,  }\item[{void $\ast$$\ast$}]{private\+\_\+data,  }\item[{\mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$}]{info }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



The optional callback for Gst\+Tensor\+Filter\+Framework. 



Definition at line 212 of file tensor\+\_\+filter\+\_\+custom.\+c.

\mbox{\Hypertarget{tensor__filter__custom_8c_a416e55d7e0b6383ea83584dd717583f2}\label{tensor__filter__custom_8c_a416e55d7e0b6383ea83584dd717583f2}} 
\index{tensor\_filter\_custom.c@{tensor\_filter\_custom.c}!custom\_invoke@{custom\_invoke}}
\index{custom\_invoke@{custom\_invoke}!tensor\_filter\_custom.c@{tensor\_filter\_custom.c}}
\doxysubsubsection{\texorpdfstring{custom\_invoke()}{custom\_invoke()}}
{\footnotesize\ttfamily static int custom\+\_\+invoke (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$}]{prop,  }\item[{void $\ast$$\ast$}]{private\+\_\+data,  }\item[{const \mbox{\hyperlink{structGstTensorMemory}{Gst\+Tensor\+Memory}} $\ast$}]{input,  }\item[{\mbox{\hyperlink{structGstTensorMemory}{Gst\+Tensor\+Memory}} $\ast$}]{output }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



The mandatory callback for Gst\+Tensor\+Filter\+Framework. 


\begin{DoxyParams}[1]{Parameters}
 & {\em prop} & The properties of parent object \\
\hline
\mbox{\texttt{ in}}  & {\em input} & The array of input tensors \\
\hline
\mbox{\texttt{ out}}  & {\em output} & The array of output tensors \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK. non-\/zero if error. 
\end{DoxyReturn}


Definition at line 167 of file tensor\+\_\+filter\+\_\+custom.\+c.

\mbox{\Hypertarget{tensor__filter__custom_8c_aaa9550e10594260d2df1b5eac80b3180}\label{tensor__filter__custom_8c_aaa9550e10594260d2df1b5eac80b3180}} 
\index{tensor\_filter\_custom.c@{tensor\_filter\_custom.c}!custom\_loadlib@{custom\_loadlib}}
\index{custom\_loadlib@{custom\_loadlib}!tensor\_filter\_custom.c@{tensor\_filter\_custom.c}}
\doxysubsubsection{\texorpdfstring{custom\_loadlib()}{custom\_loadlib()}}
{\footnotesize\ttfamily static int custom\+\_\+loadlib (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$}]{prop,  }\item[{void $\ast$$\ast$}]{private\+\_\+data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Load the custom library. Will skip loading if it\textquotesingle{}s already loaded. 

\begin{DoxyReturn}{Returns}
0 if successfully loaded. 1 if skipped (already loaded). -\/1 if error 
\end{DoxyReturn}
\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000062}{Todo}}]\+: Check the integrity of filter-\/$>$data and filter-\/$>$model\+\_\+file, nnfw \end{DoxyRefDesc}


\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000063}{Todo}}]Double check if this check is really required and safe \end{DoxyRefDesc}


Definition at line 64 of file tensor\+\_\+filter\+\_\+custom.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{tensor__filter__custom_8c_aaa9550e10594260d2df1b5eac80b3180_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=289pt]{tensor__filter__custom_8c_aaa9550e10594260d2df1b5eac80b3180_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{tensor__filter__custom_8c_a99803bce33c25f150656b866d281a725}\label{tensor__filter__custom_8c_a99803bce33c25f150656b866d281a725}} 
\index{tensor\_filter\_custom.c@{tensor\_filter\_custom.c}!custom\_open@{custom\_open}}
\index{custom\_open@{custom\_open}!tensor\_filter\_custom.c@{tensor\_filter\_custom.c}}
\doxysubsubsection{\texorpdfstring{custom\_open()}{custom\_open()}}
{\footnotesize\ttfamily static int custom\+\_\+open (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$}]{prop,  }\item[{void $\ast$$\ast$}]{private\+\_\+data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



The open callback for Gst\+Tensor\+Filter\+Framework. Called before anything else. 



Definition at line 138 of file tensor\+\_\+filter\+\_\+custom.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{tensor__filter__custom_8c_a99803bce33c25f150656b866d281a725_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{tensor__filter__custom_8c_a532451fbc1cdc3a7135c3f7b8a0a96a9}\label{tensor__filter__custom_8c_a532451fbc1cdc3a7135c3f7b8a0a96a9}} 
\index{tensor\_filter\_custom.c@{tensor\_filter\_custom.c}!custom\_setInputDim@{custom\_setInputDim}}
\index{custom\_setInputDim@{custom\_setInputDim}!tensor\_filter\_custom.c@{tensor\_filter\_custom.c}}
\doxysubsubsection{\texorpdfstring{custom\_setInputDim()}{custom\_setInputDim()}}
{\footnotesize\ttfamily static int custom\+\_\+set\+Input\+Dim (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$}]{prop,  }\item[{void $\ast$$\ast$}]{private\+\_\+data,  }\item[{const \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$}]{in\+\_\+info,  }\item[{\mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$}]{out\+\_\+info }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



The set-\/input-\/dim callback for Gst\+Tensor\+Filter\+Framework. 



Definition at line 231 of file tensor\+\_\+filter\+\_\+custom.\+c.

\mbox{\Hypertarget{tensor__filter__custom_8c_ad966021b0f49a0a6d863d1432e8d1fac}\label{tensor__filter__custom_8c_ad966021b0f49a0a6d863d1432e8d1fac}} 
\index{tensor\_filter\_custom.c@{tensor\_filter\_custom.c}!fini\_filter\_custom@{fini\_filter\_custom}}
\index{fini\_filter\_custom@{fini\_filter\_custom}!tensor\_filter\_custom.c@{tensor\_filter\_custom.c}}
\doxysubsubsection{\texorpdfstring{fini\_filter\_custom()}{fini\_filter\_custom()}}
{\footnotesize\ttfamily void fini\+\_\+filter\+\_\+custom (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



Destruct the subplugin. 



Definition at line 335 of file tensor\+\_\+filter\+\_\+custom.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{tensor__filter__custom_8c_ad966021b0f49a0a6d863d1432e8d1fac_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{tensor__filter__custom_8c_a7f7e8f27e2a4c1229d51f9e0ecab83fd}\label{tensor__filter__custom_8c_a7f7e8f27e2a4c1229d51f9e0ecab83fd}} 
\index{tensor\_filter\_custom.c@{tensor\_filter\_custom.c}!init\_filter\_custom@{init\_filter\_custom}}
\index{init\_filter\_custom@{init\_filter\_custom}!tensor\_filter\_custom.c@{tensor\_filter\_custom.c}}
\doxysubsubsection{\texorpdfstring{init\_filter\_custom()}{init\_filter\_custom()}}
{\footnotesize\ttfamily void init\+\_\+filter\+\_\+custom (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



Initialize this object for tensor\+\_\+filter subplugin runtime register. 



Definition at line 38 of file tensor\+\_\+filter\+\_\+custom.\+c.



\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{tensor__filter__custom_8c_a4f6607bb0ec8424e102accfa883d5ab1}\label{tensor__filter__custom_8c_a4f6607bb0ec8424e102accfa883d5ab1}} 
\index{tensor\_filter\_custom.c@{tensor\_filter\_custom.c}!filter\_subplugin\_custom@{filter\_subplugin\_custom}}
\index{filter\_subplugin\_custom@{filter\_subplugin\_custom}!tensor\_filter\_custom.c@{tensor\_filter\_custom.c}}
\doxysubsubsection{\texorpdfstring{filter\_subplugin\_custom}{filter\_subplugin\_custom}}
{\footnotesize\ttfamily gchar filter\+\_\+subplugin\+\_\+custom\mbox{[}$\,$\mbox{]} = \char`\"{}custom\char`\"{}\hspace{0.3cm}{\ttfamily [static]}}



Definition at line 306 of file tensor\+\_\+filter\+\_\+custom.\+c.

\mbox{\Hypertarget{tensor__filter__custom_8c_a5a70e09f556580eebdcc7b1b782c7d44}\label{tensor__filter__custom_8c_a5a70e09f556580eebdcc7b1b782c7d44}} 
\index{tensor\_filter\_custom.c@{tensor\_filter\_custom.c}!NNS\_support\_custom@{NNS\_support\_custom}}
\index{NNS\_support\_custom@{NNS\_support\_custom}!tensor\_filter\_custom.c@{tensor\_filter\_custom.c}}
\doxysubsubsection{\texorpdfstring{NNS\_support\_custom}{NNS\_support\_custom}}
{\footnotesize\ttfamily \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a2aed82bb2c62b38fba28759423860e0c}{Gst\+Tensor\+Filter\+Framework}} N\+N\+S\+\_\+support\+\_\+custom\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{  .version = \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a269188cdae665ea429f6b9ccf82f71c4}{GST\_TENSOR\_FILTER\_FRAMEWORK\_V0}},}
\DoxyCodeLine{  .name = \mbox{\hyperlink{tensor__filter__custom_8c_a4f6607bb0ec8424e102accfa883d5ab1}{filter\_subplugin\_custom}},}
\DoxyCodeLine{  .allow\_in\_place = \mbox{\hyperlink{gsttensor__transform_8c_ac529551d78a5faa7079a3deaaadc3f5e}{FALSE}},      }
\DoxyCodeLine{  .allocate\_in\_invoke = \mbox{\hyperlink{gsttensor__if_8c_a834713a9a17ec303f21e3dc4ecbe9161}{TRUE}},   }
\DoxyCodeLine{  .run\_without\_model = \mbox{\hyperlink{gsttensor__transform_8c_ac529551d78a5faa7079a3deaaadc3f5e}{FALSE}},   }
\DoxyCodeLine{  .invoke\_NN = \mbox{\hyperlink{tensor__filter__custom_8c_a416e55d7e0b6383ea83584dd717583f2}{custom\_invoke}},}
\DoxyCodeLine{  .handleEvent = NULL,          }
\DoxyCodeLine{  .getInputDimension = \mbox{\hyperlink{tensor__filter__custom_8c_ab3ee611d460bf8ceb327b3dd8901b365}{custom\_getInputDim}},}
\DoxyCodeLine{  .getOutputDimension = \mbox{\hyperlink{tensor__filter__custom_8c_a8701396dd83928f06adc31a54214753a}{custom\_getOutputDim}},}
\DoxyCodeLine{  .setInputDimension = \mbox{\hyperlink{tensor__filter__custom_8c_a532451fbc1cdc3a7135c3f7b8a0a96a9}{custom\_setInputDim}},}
\DoxyCodeLine{  .open = \mbox{\hyperlink{tensor__filter__custom_8c_a99803bce33c25f150656b866d281a725}{custom\_open}},}
\DoxyCodeLine{  .close = \mbox{\hyperlink{tensor__filter__custom_8c_a32d79fcb832ce8be1b8c841de80a0471}{custom\_close}},}
\DoxyCodeLine{  .destroyNotify = \mbox{\hyperlink{tensor__filter__custom_8c_ad51f1414c5dcef59eec1af245d1ba1ec}{custom\_destroyNotify}},        }
\DoxyCodeLine{  .allocateInInvoke = \mbox{\hyperlink{tensor__filter__custom_8c_aa352e50b4316eba022d0f23d13837dc2}{custom\_allocateInInvoke}},}
\DoxyCodeLine{  .checkAvailability = \mbox{\hyperlink{tensor__filter__custom_8c_a29dc066031ce7c6e11da206acbc3a35b}{custom\_checkAvailability}},}
\DoxyCodeLine{\}}

\end{DoxyCode}


Definition at line 308 of file tensor\+\_\+filter\+\_\+custom.\+c.

