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


Custom tensor post-\/processing interface for N\+N\+Streamer suite for post-\/processing code developers.  


{\ttfamily \#include $<$stdint.\+h$>$}\newline
{\ttfamily \#include \char`\"{}tensor\+\_\+typedef.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}nnstreamer\+\_\+plugin\+\_\+api\+\_\+filter.\+h\char`\"{}}\newline
Include dependency graph for tensor\+\_\+filter\+\_\+custom.\+h\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=300pt]{tensor__filter__custom_8h__incl}
\end{center}
\end{figure}
This graph shows which files directly or indirectly include this file\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{tensor__filter__custom_8h__dep__incl}
\end{center}
\end{figure}
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{struct__NNStreamer__custom__class}{\+\_\+\+N\+N\+Streamer\+\_\+custom\+\_\+class}}
\begin{DoxyCompactList}\small\item\em Custom Filter Class. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef void $\ast$($\ast$ \mbox{\hyperlink{tensor__filter__custom_8h_a95443516e7c3574923ec1e10fb4a2040}{N\+N\+S\+\_\+custom\+\_\+init\+\_\+func}}) (const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}})
\begin{DoxyCompactList}\small\item\em A function that is called before calling other functions. \end{DoxyCompactList}\item 
typedef void($\ast$ \mbox{\hyperlink{tensor__filter__custom_8h_a1f488616765bc59ae4894e03b9d05f07}{N\+N\+S\+\_\+custom\+\_\+exit\+\_\+func}}) (void $\ast$private\+\_\+data, const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}})
\begin{DoxyCompactList}\small\item\em A function that is called after calling other functions, when it\textquotesingle{}s ready to close. \end{DoxyCompactList}\item 
typedef int($\ast$ \mbox{\hyperlink{tensor__filter__custom_8h_a48317b517d29eec847102fc94d790d3b}{N\+N\+S\+\_\+custom\+\_\+get\+\_\+input\+\_\+dimension}}) (void $\ast$private\+\_\+data, const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$info)
\begin{DoxyCompactList}\small\item\em Get input tensor type. \end{DoxyCompactList}\item 
typedef int($\ast$ \mbox{\hyperlink{tensor__filter__custom_8h_a13146dd2d2e8fd8ddf5b31a942999a45}{N\+N\+S\+\_\+custom\+\_\+get\+\_\+output\+\_\+dimension}}) (void $\ast$private\+\_\+data, const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$info)
\begin{DoxyCompactList}\small\item\em Get output tensor type. \end{DoxyCompactList}\item 
typedef int($\ast$ \mbox{\hyperlink{tensor__filter__custom_8h_ac186a60363675944e72982237e19bfe7}{N\+N\+S\+\_\+custom\+\_\+set\+\_\+input\+\_\+dimension}}) (void $\ast$private\+\_\+data, const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, const \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$in\+\_\+info, \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$out\+\_\+info)
\begin{DoxyCompactList}\small\item\em Set input dim by framework. Let custom plugin set output dim accordingly. \end{DoxyCompactList}\item 
typedef int($\ast$ \mbox{\hyperlink{tensor__filter__custom_8h_a9598305bb440b4f8e1685f7da067500d}{N\+N\+S\+\_\+custom\+\_\+invoke}}) (void $\ast$private\+\_\+data, const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, const \mbox{\hyperlink{structGstTensorMemory}{Gst\+Tensor\+Memory}} $\ast$input, \mbox{\hyperlink{structGstTensorMemory}{Gst\+Tensor\+Memory}} $\ast$output)
\begin{DoxyCompactList}\small\item\em Invoke the \char`\"{}main function\char`\"{}. Without allocating output buffer. (fill in the given output buffer) \end{DoxyCompactList}\item 
typedef int($\ast$ \mbox{\hyperlink{tensor__filter__custom_8h_af15e4524591167a87dcd13e4d66e0377}{N\+N\+S\+\_\+custom\+\_\+allocate\+\_\+invoke}}) (void $\ast$private\+\_\+data, const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, const \mbox{\hyperlink{structGstTensorMemory}{Gst\+Tensor\+Memory}} $\ast$input, \mbox{\hyperlink{structGstTensorMemory}{Gst\+Tensor\+Memory}} $\ast$output)
\begin{DoxyCompactList}\small\item\em Invoke the \char`\"{}main function\char`\"{}. Without allocating output buffer. (fill in the given output buffer) \end{DoxyCompactList}\item 
typedef void($\ast$ \mbox{\hyperlink{tensor__filter__custom_8h_ab3375231241122649f9f44a237f8aff2}{N\+N\+S\+\_\+custom\+\_\+destroy\+\_\+notify}}) (void $\ast$\mbox{\hyperlink{gsttensor__if_8c_a3c9cc8d6e8da85fef51da4c7115b97f6}{data}})
\begin{DoxyCompactList}\small\item\em It\textquotesingle{}s a post-\/processing method about the used data pointer if it has been allocated at custom filter. \end{DoxyCompactList}\item 
typedef struct \mbox{\hyperlink{struct__NNStreamer__custom__class}{\+\_\+\+N\+N\+Streamer\+\_\+custom\+\_\+class}} \mbox{\hyperlink{tensor__filter__custom_8h_ae07d49ce96bcfc51b141be0da772f2d7}{N\+N\+Streamer\+\_\+custom\+\_\+class}}
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{tensor__filter__custom_8h_ae07d49ce96bcfc51b141be0da772f2d7}{N\+N\+Streamer\+\_\+custom\+\_\+class}} $\ast$ \mbox{\hyperlink{tensor__filter__custom_8h_aa188e3b7c96e3ab638df6aa84f99dcb9}{N\+N\+Streamer\+\_\+custom}}
\begin{DoxyCompactList}\small\item\em A custom filter M\+U\+ST define N\+N\+Streamer\+\_\+custom. This object represents the custom filter itself. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Custom tensor post-\/processing interface for N\+N\+Streamer suite for post-\/processing code developers. 

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


How To for N\+Ndevelopers\+:


\begin{DoxyEnumerate}
\item Define struct, \char`\"{}\+N\+N\+Streamer\+\_\+custom\char`\"{}, with the functions defined.
\item Compile as a shared object. (.so in Linux)
\item Use N\+N\+Streamer (tensor\+\_\+filter framework=custom, model=F\+I\+L\+E\+P\+A\+T\+H\+\_\+\+O\+F\+\_\+\+Y\+O\+U\+R\+\_\+\+S\+O.\+so, ...)
\end{DoxyEnumerate}

To Packagers\+:

This file is to be packaged as \char`\"{}devel\char`\"{} package for NN developers. 

\doxysubsection{Typedef Documentation}
\mbox{\Hypertarget{tensor__filter__custom_8h_af15e4524591167a87dcd13e4d66e0377}\label{tensor__filter__custom_8h_af15e4524591167a87dcd13e4d66e0377}} 
\index{tensor\_filter\_custom.h@{tensor\_filter\_custom.h}!NNS\_custom\_allocate\_invoke@{NNS\_custom\_allocate\_invoke}}
\index{NNS\_custom\_allocate\_invoke@{NNS\_custom\_allocate\_invoke}!tensor\_filter\_custom.h@{tensor\_filter\_custom.h}}
\doxysubsubsection{\texorpdfstring{NNS\_custom\_allocate\_invoke}{NNS\_custom\_allocate\_invoke}}
{\footnotesize\ttfamily typedef int($\ast$ N\+N\+S\+\_\+custom\+\_\+allocate\+\_\+invoke) (void $\ast$private\+\_\+data, const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, const \mbox{\hyperlink{structGstTensorMemory}{Gst\+Tensor\+Memory}} $\ast$input, \mbox{\hyperlink{structGstTensorMemory}{Gst\+Tensor\+Memory}} $\ast$output)}



Invoke the \char`\"{}main function\char`\"{}. Without allocating output buffer. (fill in the given output buffer) 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em private\+\_\+data} & The pointer returned by N\+N\+Streamer\+\_\+custom\+\_\+init. \\
\hline
\mbox{\texttt{ in}}  & {\em prop} & Gst\+Tensor\+Filter\textquotesingle{}s property values. Do not change its values. \\
\hline
\mbox{\texttt{ in}}  & {\em input} & The array of input tensors, each tensor size = dim\+\_\+1 x dim\+\_\+2 x .. x dim\+\_\+n x typesize, allocated by caller \\
\hline
\mbox{\texttt{ out}}  & {\em output} & The array of output tensors, each tensor size = dim\+\_\+1 x dim\+\_\+2 x .. x dim\+\_\+n x typesize, the memory block for output tensor should be allocated. (data in \mbox{\hyperlink{structGstTensorMemory}{Gst\+Tensor\+Memory}}) \\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
rank limit (N\+N\+S\+\_\+\+T\+E\+N\+S\+O\+R\+\_\+\+R\+A\+N\+K\+\_\+\+L\+I\+M\+IT) and typesize (tensor\+\_\+element\+\_\+size) defined in \mbox{\hyperlink{tensor__typedef_8h}{tensor\+\_\+typedef.\+h}} 
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
0 if success 
\end{DoxyReturn}


Definition at line 111 of file tensor\+\_\+filter\+\_\+custom.\+h.

\mbox{\Hypertarget{tensor__filter__custom_8h_ab3375231241122649f9f44a237f8aff2}\label{tensor__filter__custom_8h_ab3375231241122649f9f44a237f8aff2}} 
\index{tensor\_filter\_custom.h@{tensor\_filter\_custom.h}!NNS\_custom\_destroy\_notify@{NNS\_custom\_destroy\_notify}}
\index{NNS\_custom\_destroy\_notify@{NNS\_custom\_destroy\_notify}!tensor\_filter\_custom.h@{tensor\_filter\_custom.h}}
\doxysubsubsection{\texorpdfstring{NNS\_custom\_destroy\_notify}{NNS\_custom\_destroy\_notify}}
{\footnotesize\ttfamily typedef void($\ast$ N\+N\+S\+\_\+custom\+\_\+destroy\+\_\+notify) (void $\ast$\mbox{\hyperlink{gsttensor__if_8c_a3c9cc8d6e8da85fef51da4c7115b97f6}{data}})}



It\textquotesingle{}s a post-\/processing method about the used data pointer if it has been allocated at custom filter. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em data} & the data element. \\
\hline
\end{DoxyParams}


Definition at line 118 of file tensor\+\_\+filter\+\_\+custom.\+h.

\mbox{\Hypertarget{tensor__filter__custom_8h_a1f488616765bc59ae4894e03b9d05f07}\label{tensor__filter__custom_8h_a1f488616765bc59ae4894e03b9d05f07}} 
\index{tensor\_filter\_custom.h@{tensor\_filter\_custom.h}!NNS\_custom\_exit\_func@{NNS\_custom\_exit\_func}}
\index{NNS\_custom\_exit\_func@{NNS\_custom\_exit\_func}!tensor\_filter\_custom.h@{tensor\_filter\_custom.h}}
\doxysubsubsection{\texorpdfstring{NNS\_custom\_exit\_func}{NNS\_custom\_exit\_func}}
{\footnotesize\ttfamily typedef void($\ast$ N\+N\+S\+\_\+custom\+\_\+exit\+\_\+func) (void $\ast$private\+\_\+data, const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}})}



A function that is called after calling other functions, when it\textquotesingle{}s ready to close. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em private\+\_\+data} & If you have allocated $\ast$private\+\_\+data at init, free it here. \\
\hline
\mbox{\texttt{ in}}  & {\em prop} & Gst\+Tensor\+Filter\textquotesingle{}s property values. Do not change its values. \\
\hline
\end{DoxyParams}


Definition at line 53 of file tensor\+\_\+filter\+\_\+custom.\+h.

\mbox{\Hypertarget{tensor__filter__custom_8h_a48317b517d29eec847102fc94d790d3b}\label{tensor__filter__custom_8h_a48317b517d29eec847102fc94d790d3b}} 
\index{tensor\_filter\_custom.h@{tensor\_filter\_custom.h}!NNS\_custom\_get\_input\_dimension@{NNS\_custom\_get\_input\_dimension}}
\index{NNS\_custom\_get\_input\_dimension@{NNS\_custom\_get\_input\_dimension}!tensor\_filter\_custom.h@{tensor\_filter\_custom.h}}
\doxysubsubsection{\texorpdfstring{NNS\_custom\_get\_input\_dimension}{NNS\_custom\_get\_input\_dimension}}
{\footnotesize\ttfamily typedef int($\ast$ N\+N\+S\+\_\+custom\+\_\+get\+\_\+input\+\_\+dimension) (void $\ast$private\+\_\+data, const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$info)}



Get input tensor type. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em private\+\_\+data} & The pointer returned by N\+N\+Streamer\+\_\+custom\+\_\+init. \\
\hline
\mbox{\texttt{ in}}  & {\em prop} & Gst\+Tensor\+Filter\textquotesingle{}s property values. Do not change its values. \\
\hline
\mbox{\texttt{ out}}  & {\em info} & Structure for tensor info. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if success 
\end{DoxyReturn}


Definition at line 63 of file tensor\+\_\+filter\+\_\+custom.\+h.

\mbox{\Hypertarget{tensor__filter__custom_8h_a13146dd2d2e8fd8ddf5b31a942999a45}\label{tensor__filter__custom_8h_a13146dd2d2e8fd8ddf5b31a942999a45}} 
\index{tensor\_filter\_custom.h@{tensor\_filter\_custom.h}!NNS\_custom\_get\_output\_dimension@{NNS\_custom\_get\_output\_dimension}}
\index{NNS\_custom\_get\_output\_dimension@{NNS\_custom\_get\_output\_dimension}!tensor\_filter\_custom.h@{tensor\_filter\_custom.h}}
\doxysubsubsection{\texorpdfstring{NNS\_custom\_get\_output\_dimension}{NNS\_custom\_get\_output\_dimension}}
{\footnotesize\ttfamily typedef int($\ast$ N\+N\+S\+\_\+custom\+\_\+get\+\_\+output\+\_\+dimension) (void $\ast$private\+\_\+data, const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$info)}



Get output tensor type. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em private\+\_\+data} & The pointer returned by N\+N\+Streamer\+\_\+custom\+\_\+init. \\
\hline
\mbox{\texttt{ in}}  & {\em prop} & Gst\+Tensor\+Filter\textquotesingle{}s property values. Do not change its values. \\
\hline
\mbox{\texttt{ out}}  & {\em info} & Structure for tensor info. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if success 
\end{DoxyReturn}


Definition at line 73 of file tensor\+\_\+filter\+\_\+custom.\+h.

\mbox{\Hypertarget{tensor__filter__custom_8h_a95443516e7c3574923ec1e10fb4a2040}\label{tensor__filter__custom_8h_a95443516e7c3574923ec1e10fb4a2040}} 
\index{tensor\_filter\_custom.h@{tensor\_filter\_custom.h}!NNS\_custom\_init\_func@{NNS\_custom\_init\_func}}
\index{NNS\_custom\_init\_func@{NNS\_custom\_init\_func}!tensor\_filter\_custom.h@{tensor\_filter\_custom.h}}
\doxysubsubsection{\texorpdfstring{NNS\_custom\_init\_func}{NNS\_custom\_init\_func}}
{\footnotesize\ttfamily typedef void$\ast$($\ast$ N\+N\+S\+\_\+custom\+\_\+init\+\_\+func) (const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}})}



A function that is called before calling other functions. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em prop} & Gst\+Tensor\+Filter\textquotesingle{}s property values. Do not change its values. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The returned pointer will be passed to other functions as \char`\"{}private\+\_\+data\char`\"{}. 
\end{DoxyReturn}


Definition at line 46 of file tensor\+\_\+filter\+\_\+custom.\+h.

\mbox{\Hypertarget{tensor__filter__custom_8h_a9598305bb440b4f8e1685f7da067500d}\label{tensor__filter__custom_8h_a9598305bb440b4f8e1685f7da067500d}} 
\index{tensor\_filter\_custom.h@{tensor\_filter\_custom.h}!NNS\_custom\_invoke@{NNS\_custom\_invoke}}
\index{NNS\_custom\_invoke@{NNS\_custom\_invoke}!tensor\_filter\_custom.h@{tensor\_filter\_custom.h}}
\doxysubsubsection{\texorpdfstring{NNS\_custom\_invoke}{NNS\_custom\_invoke}}
{\footnotesize\ttfamily typedef int($\ast$ N\+N\+S\+\_\+custom\+\_\+invoke) (void $\ast$private\+\_\+data, const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, const \mbox{\hyperlink{structGstTensorMemory}{Gst\+Tensor\+Memory}} $\ast$input, \mbox{\hyperlink{structGstTensorMemory}{Gst\+Tensor\+Memory}} $\ast$output)}



Invoke the \char`\"{}main function\char`\"{}. Without allocating output buffer. (fill in the given output buffer) 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em private\+\_\+data} & The pointer returned by N\+N\+Streamer\+\_\+custom\+\_\+init. \\
\hline
\mbox{\texttt{ in}}  & {\em prop} & Gst\+Tensor\+Filter\textquotesingle{}s property values. Do not change its values. \\
\hline
\mbox{\texttt{ in}}  & {\em input} & The array of input tensors, each tensor size = dim\+\_\+1 x dim\+\_\+2 x .. x dim\+\_\+n x typesize, allocated by caller \\
\hline
\mbox{\texttt{ out}}  & {\em output} & The array of output tensors, each tensor size = dim\+\_\+1 x dim\+\_\+2 x .. x dim\+\_\+n x typesize, allocated by caller \\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
rank limit (N\+N\+S\+\_\+\+T\+E\+N\+S\+O\+R\+\_\+\+R\+A\+N\+K\+\_\+\+L\+I\+M\+IT) and typesize (tensor\+\_\+element\+\_\+size) defined in \mbox{\hyperlink{tensor__typedef_8h}{tensor\+\_\+typedef.\+h}} 
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
0 if success 
\end{DoxyReturn}


Definition at line 99 of file tensor\+\_\+filter\+\_\+custom.\+h.

\mbox{\Hypertarget{tensor__filter__custom_8h_ac186a60363675944e72982237e19bfe7}\label{tensor__filter__custom_8h_ac186a60363675944e72982237e19bfe7}} 
\index{tensor\_filter\_custom.h@{tensor\_filter\_custom.h}!NNS\_custom\_set\_input\_dimension@{NNS\_custom\_set\_input\_dimension}}
\index{NNS\_custom\_set\_input\_dimension@{NNS\_custom\_set\_input\_dimension}!tensor\_filter\_custom.h@{tensor\_filter\_custom.h}}
\doxysubsubsection{\texorpdfstring{NNS\_custom\_set\_input\_dimension}{NNS\_custom\_set\_input\_dimension}}
{\footnotesize\ttfamily typedef int($\ast$ N\+N\+S\+\_\+custom\+\_\+set\+\_\+input\+\_\+dimension) (void $\ast$private\+\_\+data, const \mbox{\hyperlink{nnstreamer__plugin__api__filter_8h_a7428acc2020e8d15a75cda36d49c1beb}{Gst\+Tensor\+Filter\+Properties}} $\ast$\mbox{\hyperlink{gsttensor__srciio_8c_ad143acf0919ab4b62947be3f2f168a91}{prop}}, const \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$in\+\_\+info, \mbox{\hyperlink{structGstTensorsInfo}{Gst\+Tensors\+Info}} $\ast$out\+\_\+info)}



Set input dim by framework. Let custom plugin set output dim accordingly. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em private\+\_\+data} & The pointer returned by N\+N\+Streamer\+\_\+custom\+\_\+init. \\
\hline
\mbox{\texttt{ in}}  & {\em prop} & Gst\+Tensor\+Filter\textquotesingle{}s property values. Do not change its values. \\
\hline
\mbox{\texttt{ in}}  & {\em in\+\_\+info} & Input tensor info designated by the G\+Streamer framework. Note that this is not a fixed value and G\+Streamer may try different values during pad-\/cap negotiations. \\
\hline
\mbox{\texttt{ out}}  & {\em out\+\_\+info} & Output tensor info according to the input tensor info.\\
\hline
\end{DoxyParams}
@caution Do not fix internal values based on this call. G\+Streamer may call this function repeatedly with different values during pad-\/cap negotiations. Fix values when invoke is finally called. 

Definition at line 87 of file tensor\+\_\+filter\+\_\+custom.\+h.

\mbox{\Hypertarget{tensor__filter__custom_8h_ae07d49ce96bcfc51b141be0da772f2d7}\label{tensor__filter__custom_8h_ae07d49ce96bcfc51b141be0da772f2d7}} 
\index{tensor\_filter\_custom.h@{tensor\_filter\_custom.h}!NNStreamer\_custom\_class@{NNStreamer\_custom\_class}}
\index{NNStreamer\_custom\_class@{NNStreamer\_custom\_class}!tensor\_filter\_custom.h@{tensor\_filter\_custom.h}}
\doxysubsubsection{\texorpdfstring{NNStreamer\_custom\_class}{NNStreamer\_custom\_class}}
{\footnotesize\ttfamily typedef struct \mbox{\hyperlink{struct__NNStreamer__custom__class}{\+\_\+\+N\+N\+Streamer\+\_\+custom\+\_\+class}} \mbox{\hyperlink{tensor__filter__custom_8h_ae07d49ce96bcfc51b141be0da772f2d7}{N\+N\+Streamer\+\_\+custom\+\_\+class}}}



Definition at line 136 of file tensor\+\_\+filter\+\_\+custom.\+h.



\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{tensor__filter__custom_8h_aa188e3b7c96e3ab638df6aa84f99dcb9}\label{tensor__filter__custom_8h_aa188e3b7c96e3ab638df6aa84f99dcb9}} 
\index{tensor\_filter\_custom.h@{tensor\_filter\_custom.h}!NNStreamer\_custom@{NNStreamer\_custom}}
\index{NNStreamer\_custom@{NNStreamer\_custom}!tensor\_filter\_custom.h@{tensor\_filter\_custom.h}}
\doxysubsubsection{\texorpdfstring{NNStreamer\_custom}{NNStreamer\_custom}}
{\footnotesize\ttfamily \mbox{\hyperlink{tensor__filter__custom_8h_ae07d49ce96bcfc51b141be0da772f2d7}{N\+N\+Streamer\+\_\+custom\+\_\+class}}$\ast$ N\+N\+Streamer\+\_\+custom}



A custom filter M\+U\+ST define N\+N\+Streamer\+\_\+custom. This object represents the custom filter itself. 

