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


Custom tensor processing interface for simple functions.  


{\ttfamily \#include $<$errno.\+h$>$}\newline
{\ttfamily \#include $<$glib.\+h$>$}\newline
{\ttfamily \#include $<$tensor\+\_\+filter\+\_\+custom\+\_\+easy.\+h$>$}\newline
{\ttfamily \#include $<$nnstreamer\+\_\+log.\+h$>$}\newline
{\ttfamily \#include $<$nnstreamer\+\_\+plugin\+\_\+api\+\_\+util.\+h$>$}\newline
{\ttfamily \#include $<$nnstreamer\+\_\+subplugin.\+h$>$}\newline
{\ttfamily \#include $<$nnstreamer\+\_\+util.\+h$>$}\newline
Include dependency graph for tensor\+\_\+filter\+\_\+custom\+\_\+easy.\+c\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{tensor__filter__custom__easy_8c__incl}
\end{center}
\end{figure}
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{structruntime__data}{runtime\+\_\+data}}
\begin{DoxyCompactList}\small\item\em The easy-\/filter user\textquotesingle{}s data. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \mbox{\hyperlink{tensor__filter__custom__easy_8c_a019cdaf837a2875c3a46989ec9892cd1}{init\+\_\+filter\+\_\+custom\+\_\+easy}} (void)
\begin{DoxyCompactList}\small\item\em internal\+\_\+data \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{tensor__filter__custom__easy_8c_a5c43a045b6ff8d5429c81d181f4dfd75}{custom\+\_\+free\+\_\+internal\+\_\+data}} (\mbox{\hyperlink{tensor__filter__custom_8c_a0e541a8dff66a566114ab7f3918ea2ea}{internal\+\_\+data}} $\ast$\mbox{\hyperlink{gsttensor__if_8c_a3c9cc8d6e8da85fef51da4c7115b97f6}{data}})
\begin{DoxyCompactList}\small\item\em Internal function to release internal data. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{tensor__filter__custom__easy_8c_a88c3ec2175634b543fe1d0567cd4d946}{N\+N\+S\+\_\+custom\+\_\+easy\+\_\+register}} (const char $\ast$modelname, \mbox{\hyperlink{tensor__filter__custom_8h_a9598305bb440b4f8e1685f7da067500d}{N\+N\+S\+\_\+custom\+\_\+invoke}} func, void $\ast$\mbox{\hyperlink{gsttensor__if_8c_a3c9cc8d6e8da85fef51da4c7115b97f6}{data}}, const \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$in\+\_\+info, const \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$out\+\_\+info)
\begin{DoxyCompactList}\small\item\em Register the custom-\/easy tensor function. More info in .h. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{tensor__filter__custom__easy_8c_a617e17cc8587e3690bc5816a73b64228}{N\+N\+S\+\_\+custom\+\_\+easy\+\_\+dynamic\+\_\+register}} (const char $\ast$modelname, \mbox{\hyperlink{tensor__filter__custom__easy_8h_a642d2957ce783889b73d5afb9cc16636}{N\+N\+S\+\_\+custom\+\_\+invoke\+\_\+dynamic}} func, void $\ast$\mbox{\hyperlink{gsttensor__if_8c_a3c9cc8d6e8da85fef51da4c7115b97f6}{data}}, const \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$in\+\_\+info)
\begin{DoxyCompactList}\small\item\em Register the custom-\/easy tensor function. More info in .h. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{tensor__filter__custom__easy_8c_a701757c00b46887100e566c931ece896}{N\+N\+S\+\_\+custom\+\_\+easy\+\_\+unregister}} (const char $\ast$modelname)
\begin{DoxyCompactList}\small\item\em Unregister the custom-\/easy tensor function. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{tensor__filter__custom__easy_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 Callback required by tensor\+\_\+filter subplugin. \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{tensor__filter__custom__easy_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 Callback required by tensor\+\_\+filter subplugin. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{tensor__filter__custom__easy_8c_a3cb1d97a89a3d195b90d8ef519489b28}{custom\+\_\+invoke}} (const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a2aed82bb2c62b38fba28759423860e0c}{Gst\+Tensor\+Filter\+Framework}} $\ast$self, \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, void $\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 Callback required by tensor\+\_\+filter subplugin. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{tensor__filter__custom__easy_8c_a5f62b41f04455740062745ae7f2890a2}{custom\+\_\+get\+Framework\+Info}} (const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a2aed82bb2c62b38fba28759423860e0c}{Gst\+Tensor\+Filter\+Framework}} $\ast$self, const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, void $\ast$private\+\_\+data, \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a19a20fba4bcd858e99568b0a7f20df69}{Gst\+Tensor\+Filter\+Framework\+Info}} $\ast$fw\+\_\+info)
\begin{DoxyCompactList}\small\item\em V1 tensor-\/filter wrapper callback function, \char`\"{}get\+Framework\+Info\char`\"{}. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{tensor__filter__custom__easy_8c_a7f86b932607884bd6fd58ced1afcc16a}{custom\+\_\+get\+Model\+Info}} (const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a2aed82bb2c62b38fba28759423860e0c}{Gst\+Tensor\+Filter\+Framework}} $\ast$self, const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, void $\ast$private\+\_\+data, \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_afb43c204ad5b9ca1002ca79157c1aa9c}{model\+\_\+info\+\_\+ops}} ops, \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$in\+\_\+info, \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$out\+\_\+info)
\begin{DoxyCompactList}\small\item\em C V1 tensor-\/filter wrapper callback function, \char`\"{}get\+Model\+Info\char`\"{}. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{tensor__filter__custom__easy_8c_a5ccf77a5f69624b3d0dfcea4910bd6f3}{custom\+\_\+event\+Handler}} (const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a2aed82bb2c62b38fba28759423860e0c}{Gst\+Tensor\+Filter\+Framework}} $\ast$self, const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, void $\ast$private\+\_\+data, \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_ae9439bb1aad5af8d98f3b708f1301e97}{event\+\_\+ops}} ops, \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a4261938c628065c946cfcbcb917256d6}{Gst\+Tensor\+Filter\+Framework\+Event\+Data}} $\ast$\mbox{\hyperlink{gsttensor__if_8c_a3c9cc8d6e8da85fef51da4c7115b97f6}{data}})
\begin{DoxyCompactList}\small\item\em C V1 tensor-\/filter wrapper callback function, \char`\"{}event\+Handler\char`\"{}. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{tensor__filter__custom__easy_8c_ac3eec28c5d83ba26a1180236d04c0e4f}{fini\+\_\+filter\+\_\+custom\+\_\+easy}} (void)
\begin{DoxyCompactList}\small\item\em Destruct the subplugin. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{tensor__filter__custom__easy_8c_aa10ab034365c9a1f3e1ac5fd3cc0ec8b}{internal\+\_\+data}}
\item 
static \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a2aed82bb2c62b38fba28759423860e0c}{Gst\+Tensor\+Filter\+Framework}} \mbox{\hyperlink{tensor__filter__custom__easy_8c_a9332985f4d7b80e46a3fb5b3b1fa9312}{N\+N\+S\+\_\+support\+\_\+custom\+\_\+easy}}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Custom tensor processing interface for simple functions. 

G\+Streamer Tensor\+\_\+\+Filter, Customized Module, Easy Mode Copyright (C) 2019 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}
24 Oct 2019 
\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__bug000108}{Bug}}]No known bugs except for N\+YI items \end{DoxyRefDesc}


\doxysubsection{Function Documentation}
\mbox{\Hypertarget{tensor__filter__custom__easy_8c_a32d79fcb832ce8be1b8c841de80a0471}\label{tensor__filter__custom__easy_8c_a32d79fcb832ce8be1b8c841de80a0471}} 
\index{tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}!custom\_close@{custom\_close}}
\index{custom\_close@{custom\_close}!tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.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]}}



Callback required by tensor\+\_\+filter subplugin. 



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

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=246pt]{tensor__filter__custom__easy_8c_a32d79fcb832ce8be1b8c841de80a0471_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{tensor__filter__custom__easy_8c_a5ccf77a5f69624b3d0dfcea4910bd6f3}\label{tensor__filter__custom__easy_8c_a5ccf77a5f69624b3d0dfcea4910bd6f3}} 
\index{tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}!custom\_eventHandler@{custom\_eventHandler}}
\index{custom\_eventHandler@{custom\_eventHandler}!tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}}
\doxysubsubsection{\texorpdfstring{custom\_eventHandler()}{custom\_eventHandler()}}
{\footnotesize\ttfamily static int custom\+\_\+event\+Handler (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a2aed82bb2c62b38fba28759423860e0c}{Gst\+Tensor\+Filter\+Framework}} $\ast$}]{self,  }\item[{const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$}]{prop,  }\item[{void $\ast$}]{private\+\_\+data,  }\item[{\mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_ae9439bb1aad5af8d98f3b708f1301e97}{event\+\_\+ops}}}]{ops,  }\item[{\mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a4261938c628065c946cfcbcb917256d6}{Gst\+Tensor\+Filter\+Framework\+Event\+Data}} $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



C V1 tensor-\/filter wrapper callback function, \char`\"{}event\+Handler\char`\"{}. 



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

\mbox{\Hypertarget{tensor__filter__custom__easy_8c_a5c43a045b6ff8d5429c81d181f4dfd75}\label{tensor__filter__custom__easy_8c_a5c43a045b6ff8d5429c81d181f4dfd75}} 
\index{tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}!custom\_free\_internal\_data@{custom\_free\_internal\_data}}
\index{custom\_free\_internal\_data@{custom\_free\_internal\_data}!tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}}
\doxysubsubsection{\texorpdfstring{custom\_free\_internal\_data()}{custom\_free\_internal\_data()}}
{\footnotesize\ttfamily static void custom\+\_\+free\+\_\+internal\+\_\+data (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{tensor__filter__custom_8c_a0e541a8dff66a566114ab7f3918ea2ea}{internal\+\_\+data}} $\ast$}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Internal function to release internal data. 



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

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{tensor__filter__custom__easy_8c_a5c43a045b6ff8d5429c81d181f4dfd75_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{tensor__filter__custom__easy_8c_a5c43a045b6ff8d5429c81d181f4dfd75_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{tensor__filter__custom__easy_8c_a5f62b41f04455740062745ae7f2890a2}\label{tensor__filter__custom__easy_8c_a5f62b41f04455740062745ae7f2890a2}} 
\index{tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}!custom\_getFrameworkInfo@{custom\_getFrameworkInfo}}
\index{custom\_getFrameworkInfo@{custom\_getFrameworkInfo}!tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}}
\doxysubsubsection{\texorpdfstring{custom\_getFrameworkInfo()}{custom\_getFrameworkInfo()}}
{\footnotesize\ttfamily static int custom\+\_\+get\+Framework\+Info (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a2aed82bb2c62b38fba28759423860e0c}{Gst\+Tensor\+Filter\+Framework}} $\ast$}]{self,  }\item[{const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$}]{prop,  }\item[{void $\ast$}]{private\+\_\+data,  }\item[{\mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a19a20fba4bcd858e99568b0a7f20df69}{Gst\+Tensor\+Filter\+Framework\+Info}} $\ast$}]{fw\+\_\+info }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



V1 tensor-\/filter wrapper callback function, \char`\"{}get\+Framework\+Info\char`\"{}. 



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

\mbox{\Hypertarget{tensor__filter__custom__easy_8c_a7f86b932607884bd6fd58ced1afcc16a}\label{tensor__filter__custom__easy_8c_a7f86b932607884bd6fd58ced1afcc16a}} 
\index{tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}!custom\_getModelInfo@{custom\_getModelInfo}}
\index{custom\_getModelInfo@{custom\_getModelInfo}!tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}}
\doxysubsubsection{\texorpdfstring{custom\_getModelInfo()}{custom\_getModelInfo()}}
{\footnotesize\ttfamily static int custom\+\_\+get\+Model\+Info (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a2aed82bb2c62b38fba28759423860e0c}{Gst\+Tensor\+Filter\+Framework}} $\ast$}]{self,  }\item[{const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$}]{prop,  }\item[{void $\ast$}]{private\+\_\+data,  }\item[{\mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_afb43c204ad5b9ca1002ca79157c1aa9c}{model\+\_\+info\+\_\+ops}}}]{ops,  }\item[{\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]}}



C V1 tensor-\/filter wrapper callback function, \char`\"{}get\+Model\+Info\char`\"{}. 



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

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{tensor__filter__custom__easy_8c_a7f86b932607884bd6fd58ced1afcc16a_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{tensor__filter__custom__easy_8c_a3cb1d97a89a3d195b90d8ef519489b28}\label{tensor__filter__custom__easy_8c_a3cb1d97a89a3d195b90d8ef519489b28}} 
\index{tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}!custom\_invoke@{custom\_invoke}}
\index{custom\_invoke@{custom\_invoke}!tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}}
\doxysubsubsection{\texorpdfstring{custom\_invoke()}{custom\_invoke()}}
{\footnotesize\ttfamily static int custom\+\_\+invoke (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a2aed82bb2c62b38fba28759423860e0c}{Gst\+Tensor\+Filter\+Framework}} $\ast$}]{self,  }\item[{\mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$}]{prop,  }\item[{void $\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]}}



Callback required by tensor\+\_\+filter subplugin. 



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

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=264pt]{tensor__filter__custom__easy_8c_a3cb1d97a89a3d195b90d8ef519489b28_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{tensor__filter__custom__easy_8c_a99803bce33c25f150656b866d281a725}\label{tensor__filter__custom__easy_8c_a99803bce33c25f150656b866d281a725}} 
\index{tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}!custom\_open@{custom\_open}}
\index{custom\_open@{custom\_open}!tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.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]}}



Callback required by tensor\+\_\+filter subplugin. 



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

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



Destruct the subplugin. 



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

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



internal\+\_\+data 

Initialize this object for tensor\+\_\+filter subplugin runtime register. $<$ The easy-\/filter writer\textquotesingle{}s data

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

\mbox{\Hypertarget{tensor__filter__custom__easy_8c_a617e17cc8587e3690bc5816a73b64228}\label{tensor__filter__custom__easy_8c_a617e17cc8587e3690bc5816a73b64228}} 
\index{tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}!NNS\_custom\_easy\_dynamic\_register@{NNS\_custom\_easy\_dynamic\_register}}
\index{NNS\_custom\_easy\_dynamic\_register@{NNS\_custom\_easy\_dynamic\_register}!tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}}
\doxysubsubsection{\texorpdfstring{NNS\_custom\_easy\_dynamic\_register()}{NNS\_custom\_easy\_dynamic\_register()}}
{\footnotesize\ttfamily int N\+N\+S\+\_\+custom\+\_\+easy\+\_\+dynamic\+\_\+register (\begin{DoxyParamCaption}\item[{const char $\ast$}]{modelname,  }\item[{\mbox{\hyperlink{tensor__filter__custom__easy_8h_a642d2957ce783889b73d5afb9cc16636}{N\+N\+S\+\_\+custom\+\_\+invoke\+\_\+dynamic}}}]{func,  }\item[{void $\ast$}]{data,  }\item[{const \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$}]{in\+\_\+info }\end{DoxyParamCaption})}



Register the custom-\/easy tensor function. More info in .h. 

Register the custom-\/easy tensor function for dynamic invoke.

\begin{DoxyReturn}{Returns}
0 if success. -\/E\+R\+R\+NO if error. 
\end{DoxyReturn}


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

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{tensor__filter__custom__easy_8c_a617e17cc8587e3690bc5816a73b64228_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{tensor__filter__custom__easy_8c_a88c3ec2175634b543fe1d0567cd4d946}\label{tensor__filter__custom__easy_8c_a88c3ec2175634b543fe1d0567cd4d946}} 
\index{tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}!NNS\_custom\_easy\_register@{NNS\_custom\_easy\_register}}
\index{NNS\_custom\_easy\_register@{NNS\_custom\_easy\_register}!tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}}
\doxysubsubsection{\texorpdfstring{NNS\_custom\_easy\_register()}{NNS\_custom\_easy\_register()}}
{\footnotesize\ttfamily int N\+N\+S\+\_\+custom\+\_\+easy\+\_\+register (\begin{DoxyParamCaption}\item[{const char $\ast$}]{modelname,  }\item[{\mbox{\hyperlink{tensor__filter__custom_8h_a9598305bb440b4f8e1685f7da067500d}{N\+N\+S\+\_\+custom\+\_\+invoke}}}]{func,  }\item[{void $\ast$}]{data,  }\item[{const \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$}]{in\+\_\+info,  }\item[{const \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$}]{out\+\_\+info }\end{DoxyParamCaption})}



Register the custom-\/easy tensor function. More info in .h. 

Register the custom-\/easy tensor function.

\begin{DoxyReturn}{Returns}
0 if success. -\/E\+R\+R\+NO if error. 
\end{DoxyReturn}


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

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{tensor__filter__custom__easy_8c_a88c3ec2175634b543fe1d0567cd4d946_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{tensor__filter__custom__easy_8c_a701757c00b46887100e566c931ece896}\label{tensor__filter__custom__easy_8c_a701757c00b46887100e566c931ece896}} 
\index{tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}!NNS\_custom\_easy\_unregister@{NNS\_custom\_easy\_unregister}}
\index{NNS\_custom\_easy\_unregister@{NNS\_custom\_easy\_unregister}!tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}}
\doxysubsubsection{\texorpdfstring{NNS\_custom\_easy\_unregister()}{NNS\_custom\_easy\_unregister()}}
{\footnotesize\ttfamily int N\+N\+S\+\_\+custom\+\_\+easy\+\_\+unregister (\begin{DoxyParamCaption}\item[{const char $\ast$}]{modelname }\end{DoxyParamCaption})}



Unregister the custom-\/easy tensor function. 

\begin{DoxyReturn}{Returns}
0 if success. -\/E\+I\+N\+V\+AL if invalid model name. 
\end{DoxyReturn}


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

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


\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{tensor__filter__custom__easy_8c_aa10ab034365c9a1f3e1ac5fd3cc0ec8b}\label{tensor__filter__custom__easy_8c_aa10ab034365c9a1f3e1ac5fd3cc0ec8b}} 
\index{tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}!internal\_data@{internal\_data}}
\index{internal\_data@{internal\_data}!tensor\_filter\_custom\_easy.c@{tensor\_filter\_custom\_easy.c}}
\doxysubsubsection{\texorpdfstring{internal\_data}{internal\_data}}
{\footnotesize\ttfamily \mbox{\hyperlink{tensor__filter__custom_8c_a0e541a8dff66a566114ab7f3918ea2ea}{internal\+\_\+data}}}



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

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

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= \{}
\DoxyCodeLine{  .version = \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a3911a067d16994f63e829cd8686e68f8}{GST\_TENSOR\_FILTER\_FRAMEWORK\_V1}},}
\DoxyCodeLine{  .open = \mbox{\hyperlink{tensor__filter__custom__easy_8c_a99803bce33c25f150656b866d281a725}{custom\_open}},}
\DoxyCodeLine{  .close = \mbox{\hyperlink{tensor__filter__custom__easy_8c_a32d79fcb832ce8be1b8c841de80a0471}{custom\_close}},}
\DoxyCodeLine{  .invoke = \mbox{\hyperlink{tensor__filter__custom__easy_8c_a3cb1d97a89a3d195b90d8ef519489b28}{custom\_invoke}},}
\DoxyCodeLine{  .getFrameworkInfo = \mbox{\hyperlink{tensor__filter__custom__easy_8c_a5f62b41f04455740062745ae7f2890a2}{custom\_getFrameworkInfo}},}
\DoxyCodeLine{  .getModelInfo = \mbox{\hyperlink{tensor__filter__custom__easy_8c_a7f86b932607884bd6fd58ced1afcc16a}{custom\_getModelInfo}},}
\DoxyCodeLine{  .eventHandler = \mbox{\hyperlink{tensor__filter__custom__easy_8c_a5ccf77a5f69624b3d0dfcea4910bd6f3}{custom\_eventHandler}},}
\DoxyCodeLine{  .subplugin\_data = NULL,}
\DoxyCodeLine{\}}

\end{DoxyCode}


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

