\hypertarget{gsttensor__aggregator_8c}{}\doxysection{nnstreamer/elements/gsttensor\+\_\+aggregator.c File Reference}
\label{gsttensor__aggregator_8c}\index{nnstreamer/elements/gsttensor\_aggregator.c@{nnstreamer/elements/gsttensor\_aggregator.c}}


G\+Streamer plugin to aggregate tensor stream.  


{\ttfamily \#include $<$string.\+h$>$}\newline
{\ttfamily \#include \char`\"{}gsttensor\+\_\+aggregator.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tensor\+\_\+meta.\+h\char`\"{}}\newline
{\ttfamily \#include $<$nnstreamer\+\_\+util.\+h$>$}\newline
Include dependency graph for gsttensor\+\_\+aggregator.\+c\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c__incl}
\end{center}
\end{figure}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{gsttensor__aggregator_8c_a49606be7356624568932ec81c0d429f4}{D\+BG}}~(!self-\/$>$silent)
\begin{DoxyCompactList}\small\item\em Macro for debug mode. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{gsttensor__aggregator_8c_a41cb123933f345f68b3c1baa0132c599}{silent\+\_\+debug\+\_\+config}}(self,  c,  msg)
\item 
\#define \mbox{\hyperlink{gsttensor__aggregator_8c_adef911caed7c65a1643062817f4a59d7}{G\+S\+T\+\_\+\+C\+A\+T\+\_\+\+D\+E\+F\+A\+U\+LT}}~gst\+\_\+tensor\+\_\+aggregator\+\_\+debug
\item 
\#define \mbox{\hyperlink{gsttensor__aggregator_8c_a18d799dbbbb0fd0132807aa9bb7d9adf}{D\+E\+F\+A\+U\+L\+T\+\_\+\+S\+I\+L\+E\+NT}}~\mbox{\hyperlink{gsttensor__if_8c_a834713a9a17ec303f21e3dc4ecbe9161}{T\+R\+UE}}
\begin{DoxyCompactList}\small\item\em Flag to print minimized log. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{gsttensor__aggregator_8c_a63822a8879ac786d555243f3558350c2}{D\+E\+F\+A\+U\+L\+T\+\_\+\+F\+R\+A\+M\+E\+S\+\_\+\+IN}}~1
\begin{DoxyCompactList}\small\item\em The number of frames in input buffer. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{gsttensor__aggregator_8c_a7b318c7b8b1deb012aa6782b23445efb}{D\+E\+F\+A\+U\+L\+T\+\_\+\+F\+R\+A\+M\+E\+S\+\_\+\+O\+UT}}~1
\begin{DoxyCompactList}\small\item\em The number of frames in output buffer. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{gsttensor__aggregator_8c_af70d59a326222c06a2f4b75e602c809c}{D\+E\+F\+A\+U\+L\+T\+\_\+\+F\+R\+A\+M\+E\+S\+\_\+\+F\+L\+U\+SH}}~0
\begin{DoxyCompactList}\small\item\em The number of frames to flush. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{gsttensor__aggregator_8c_a9e778e44c573950fd6d9e4af4e803e69}{D\+E\+F\+A\+U\+L\+T\+\_\+\+F\+R\+A\+M\+E\+S\+\_\+\+D\+I\+M\+E\+N\+S\+I\+ON}}~(\mbox{\hyperlink{tensor__typedef_8h_ae9bf0825943088d62072409b2e752ae8}{N\+N\+S\+\_\+\+T\+E\+N\+S\+O\+R\+\_\+\+R\+A\+N\+K\+\_\+\+L\+I\+M\+IT}} -\/ 1)
\begin{DoxyCompactList}\small\item\em The dimension index of frames in configured tensor. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{gsttensor__aggregator_8c_a3a0e876c9b43cc056e69735c6a96bb5e}{D\+E\+F\+A\+U\+L\+T\+\_\+\+C\+O\+N\+C\+AT}}~\mbox{\hyperlink{gsttensor__if_8c_a834713a9a17ec303f21e3dc4ecbe9161}{T\+R\+UE}}
\begin{DoxyCompactList}\small\item\em Flag to concatenate output buffer. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{gsttensor__aggregator_8c_aa2d8b0bc5c1225ba8d7f84e235c1cf0d}{C\+A\+P\+S\+\_\+\+S\+T\+R\+I\+NG}}~\mbox{\hyperlink{tensor__typedef_8h_a284951c7aec77ea34d1c0279d5a5b4a0}{G\+S\+T\+\_\+\+T\+E\+N\+S\+O\+R\+\_\+\+C\+A\+P\+\_\+\+D\+E\+F\+A\+U\+LT}} \char`\"{};\char`\"{} \mbox{\hyperlink{tensor__typedef_8h_a884f2cfc99396732e99675d186270477}{G\+S\+T\+\_\+\+T\+E\+N\+S\+O\+R\+S\+\_\+\+C\+A\+P\+\_\+\+W\+I\+T\+H\+\_\+\+N\+UM}} (\char`\"{}1\char`\"{})
\begin{DoxyCompactList}\small\item\em Template caps string for pads. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{gsttensor__aggregator_8c_af4a8b634358117f29cce683915c3e7d1}{gst\+\_\+tensor\+\_\+aggregator\+\_\+parent\+\_\+class}}~parent\+\_\+class
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \{ \newline
\mbox{\hyperlink{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9eac37dda0da1a44e10c0504afeeb863f3c}{P\+R\+O\+P\+\_\+0}}, 
\mbox{\hyperlink{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9ea4809329e12d8b72b6fa6680101fc2906}{P\+R\+O\+P\+\_\+\+F\+R\+A\+M\+E\+S\+\_\+\+IN}}, 
\mbox{\hyperlink{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9eac8e7ad8215834fb0b6c6d7054a64974f}{P\+R\+O\+P\+\_\+\+F\+R\+A\+M\+E\+S\+\_\+\+O\+UT}}, 
\mbox{\hyperlink{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9ea50cffb3b2df9175dccd6e0d4520e0d42}{P\+R\+O\+P\+\_\+\+F\+R\+A\+M\+E\+S\+\_\+\+F\+L\+U\+SH}}, 
\newline
\mbox{\hyperlink{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9eafd15693026f1bac8271c443967c3db52}{P\+R\+O\+P\+\_\+\+F\+R\+A\+M\+E\+S\+\_\+\+D\+I\+M\+E\+N\+S\+I\+ON}}, 
\mbox{\hyperlink{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9ea6faa1714768ce0ffb336e9f58e9daa5c}{P\+R\+O\+P\+\_\+\+C\+O\+N\+C\+AT}}, 
\mbox{\hyperlink{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9ea707b785966c328fb5a6088b7879c7bb5}{P\+R\+O\+P\+\_\+\+S\+I\+L\+E\+NT}}
 \}
\begin{DoxyCompactList}\small\item\em tensor\+\_\+aggregator properties \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{gsttensor__aggregator_8c_a1bc95bece131c85a1535700d4883032e}{G\+S\+T\+\_\+\+D\+E\+B\+U\+G\+\_\+\+C\+A\+T\+E\+G\+O\+R\+Y\+\_\+\+S\+T\+A\+T\+IC}} (gst\+\_\+tensor\+\_\+aggregator\+\_\+debug)
\item 
\mbox{\hyperlink{gsttensor__aggregator_8c_a145e21899ab27e93d47f42ee9ff47474}{G\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+T\+Y\+PE}} (\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}}, gst\+\_\+tensor\+\_\+aggregator, G\+S\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+E\+L\+E\+M\+E\+NT)
\item 
static void \mbox{\hyperlink{gsttensor__aggregator_8c_a7ef2ccbe16682044af84b14aa2a53d3e}{gst\+\_\+tensor\+\_\+aggregator\+\_\+finalize}} (G\+Object $\ast$object)
\begin{DoxyCompactList}\small\item\em Function to finalize instance. \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{gsttensor__aggregator_8c_aa1404a8022b7d60ae0245362b5b65717}{gst\+\_\+tensor\+\_\+aggregator\+\_\+set\+\_\+property}} (G\+Object $\ast$object, guint prop\+\_\+id, const G\+Value $\ast$value, G\+Param\+Spec $\ast$pspec)
\begin{DoxyCompactList}\small\item\em Setter for tensor\+\_\+aggregator properties. \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{gsttensor__aggregator_8c_a7ce42c53b5f2e02481a998190097eb40}{gst\+\_\+tensor\+\_\+aggregator\+\_\+get\+\_\+property}} (G\+Object $\ast$object, guint prop\+\_\+id, G\+Value $\ast$value, G\+Param\+Spec $\ast$pspec)
\begin{DoxyCompactList}\small\item\em Getter for tensor\+\_\+aggregator properties. \end{DoxyCompactList}\item 
static gboolean \mbox{\hyperlink{gsttensor__aggregator_8c_a2703d8ceae6bfc329cfe47f62e50e6a5}{gst\+\_\+tensor\+\_\+aggregator\+\_\+sink\+\_\+event}} (Gst\+Pad $\ast$pad, Gst\+Object $\ast$parent, Gst\+Event $\ast$event)
\begin{DoxyCompactList}\small\item\em This function handles sink events. \end{DoxyCompactList}\item 
static gboolean \mbox{\hyperlink{gsttensor__aggregator_8c_a3b48721a4c6e30e1d21cfed962106d71}{gst\+\_\+tensor\+\_\+aggregator\+\_\+sink\+\_\+query}} (Gst\+Pad $\ast$pad, Gst\+Object $\ast$parent, Gst\+Query $\ast$query)
\begin{DoxyCompactList}\small\item\em This function handles sink pad query. \end{DoxyCompactList}\item 
static gboolean \mbox{\hyperlink{gsttensor__aggregator_8c_af45b45bf4d1d8716d4a51d294c2db189}{gst\+\_\+tensor\+\_\+aggregator\+\_\+src\+\_\+query}} (Gst\+Pad $\ast$pad, Gst\+Object $\ast$parent, Gst\+Query $\ast$query)
\begin{DoxyCompactList}\small\item\em This function handles src pad query. \end{DoxyCompactList}\item 
static Gst\+Flow\+Return \mbox{\hyperlink{gsttensor__aggregator_8c_ab97655a5226d65c0a46e8d987fcf28c4}{gst\+\_\+tensor\+\_\+aggregator\+\_\+chain}} (Gst\+Pad $\ast$pad, Gst\+Object $\ast$parent, Gst\+Buffer $\ast$buf)
\begin{DoxyCompactList}\small\item\em Chain function, this function does the actual processing. \end{DoxyCompactList}\item 
static Gst\+State\+Change\+Return \mbox{\hyperlink{gsttensor__aggregator_8c_ae48d6592ea4dd8e8876789d3617e774a}{gst\+\_\+tensor\+\_\+aggregator\+\_\+change\+\_\+state}} (Gst\+Element $\ast$element, Gst\+State\+Change transition)
\begin{DoxyCompactList}\small\item\em Called to perform state change. \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{gsttensor__aggregator_8c_aec77d71ee6cc0061926a70085eba1984}{gst\+\_\+tensor\+\_\+aggregator\+\_\+reset}} (\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}} $\ast$self)
\begin{DoxyCompactList}\small\item\em Clear and reset data. \end{DoxyCompactList}\item 
static Gst\+Caps $\ast$ \mbox{\hyperlink{gsttensor__aggregator_8c_ace10c7978f95d2ce1dddd092fd492f3b}{gst\+\_\+tensor\+\_\+aggregator\+\_\+query\+\_\+caps}} (\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}} $\ast$self, Gst\+Pad $\ast$pad, Gst\+Caps $\ast$filter)
\begin{DoxyCompactList}\small\item\em Get pad caps for caps negotiation. \end{DoxyCompactList}\item 
static gboolean \mbox{\hyperlink{gsttensor__aggregator_8c_a5366708345faf680f48f44a098207c61}{gst\+\_\+tensor\+\_\+aggregator\+\_\+parse\+\_\+caps}} (\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}} $\ast$self, const Gst\+Caps $\ast$caps)
\begin{DoxyCompactList}\small\item\em Parse caps and set tensor info. \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{gsttensor__aggregator_8c_a2fb4b0c0d01821063f140e7582125e08}{gst\+\_\+tensor\+\_\+aggregator\+\_\+class\+\_\+init}} (\mbox{\hyperlink{gsttensor__aggregator_8h_a9fa836ddbdd23e0f41f492a06c8f77a3}{Gst\+Tensor\+Aggregator\+Class}} $\ast$klass)
\begin{DoxyCompactList}\small\item\em Initialize the tensor\+\_\+aggregator\textquotesingle{}s class. \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{gsttensor__aggregator_8c_a8bc35e08eb186b99b8f1fd897b6ffd2e}{gst\+\_\+tensor\+\_\+aggregator\+\_\+init}} (\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}} $\ast$self)
\begin{DoxyCompactList}\small\item\em Initialize tensor\+\_\+aggregator element. \end{DoxyCompactList}\item 
static Gst\+Adapter $\ast$ \mbox{\hyperlink{gsttensor__aggregator_8c_a8fd3c6743c753148c0a7ea51685bb7df}{gst\+\_\+tensor\+\_\+aggregator\+\_\+get\+\_\+adapter}} (\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}} $\ast$self, Gst\+Buffer $\ast$buf)
\begin{DoxyCompactList}\small\item\em Internal function to get adapter. \end{DoxyCompactList}\item 
static gboolean \mbox{\hyperlink{gsttensor__aggregator_8c_a1ba50487f048a3fdc286716a293af043}{gst\+\_\+tensor\+\_\+aggregator\+\_\+check\+\_\+concat\+\_\+axis}} (\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}} $\ast$self, const \mbox{\hyperlink{structGstTensorInfo}{Gst\+Tensor\+Info}} $\ast$info)
\begin{DoxyCompactList}\small\item\em Check tensor dimension and axis to concatenate data. \end{DoxyCompactList}\item 
static gboolean \mbox{\hyperlink{gsttensor__aggregator_8c_a40774dda0f8fa76c1abd85b20858c472}{gst\+\_\+tensor\+\_\+aggregator\+\_\+concat}} (\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}} $\ast$self, Gst\+Buffer $\ast$outbuf, const \mbox{\hyperlink{structGstTensorInfo}{Gst\+Tensor\+Info}} $\ast$info)
\begin{DoxyCompactList}\small\item\em Change the data in buffer with given axis. \end{DoxyCompactList}\item 
static Gst\+Flow\+Return \mbox{\hyperlink{gsttensor__aggregator_8c_aa6bb0bdd84d7436d74a8ef2ca5ceb61b}{gst\+\_\+tensor\+\_\+aggregator\+\_\+push}} (\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}} $\ast$self, Gst\+Buffer $\ast$outbuf, gsize frame\+\_\+size)
\begin{DoxyCompactList}\small\item\em Push the buffer to source pad. (Concatenate the buffer if needed) \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
static Gst\+Static\+Pad\+Template \mbox{\hyperlink{gsttensor__aggregator_8c_a26e2485c5fd610ac13e266fb32008cf7}{sink\+\_\+template}}
\begin{DoxyCompactList}\small\item\em Template for sink pad. \end{DoxyCompactList}\item 
static Gst\+Static\+Pad\+Template \mbox{\hyperlink{gsttensor__aggregator_8c_a643731249f31c7864f3fb8d64d41a373}{src\+\_\+template}}
\begin{DoxyCompactList}\small\item\em Template for src pad. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
G\+Streamer plugin to aggregate tensor stream. 

G\+Streamer Copyright (C) 2005 Thomas Vander Stichele \href{mailto:thomas@apestaart.org}{\texttt{ thomas@apestaart.\+org}} Copyright (C) 2005 Ronald S. Bultje \href{mailto:rbultje@ronald.bitfreak.net}{\texttt{ rbultje@ronald.\+bitfreak.\+net}} Copyright (C) 2018 Samsung Electronics Co., Ltd.

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. S\+E\+C\+T\+I\+ON\+:element-\/tensor\+\_\+aggregator

\begin{DoxyDate}{Date}
29 August 2018 
\end{DoxyDate}
\begin{DoxySeeAlso}{See also}
\href{https://github.com/nnstreamer/nnstreamer}{\texttt{ https\+://github.\+com/nnstreamer/nnstreamer}} 
\end{DoxySeeAlso}
\begin{DoxyAuthor}{Author}
Jaeyun Jung \href{mailto:jy1210.jung@samsung.com}{\texttt{ jy1210.\+jung@samsung.\+com}} 
\end{DoxyAuthor}
\begin{DoxyRefDesc}{Bug}
\item[\mbox{\hyperlink{bug__bug000024}{Bug}}]No known bugs except for N\+YI items \end{DoxyRefDesc}


\doxysubsection{Macro Definition Documentation}
\mbox{\Hypertarget{gsttensor__aggregator_8c_aa2d8b0bc5c1225ba8d7f84e235c1cf0d}\label{gsttensor__aggregator_8c_aa2d8b0bc5c1225ba8d7f84e235c1cf0d}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!CAPS\_STRING@{CAPS\_STRING}}
\index{CAPS\_STRING@{CAPS\_STRING}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{CAPS\_STRING}{CAPS\_STRING}}
{\footnotesize\ttfamily \#define C\+A\+P\+S\+\_\+\+S\+T\+R\+I\+NG~\mbox{\hyperlink{tensor__typedef_8h_a284951c7aec77ea34d1c0279d5a5b4a0}{G\+S\+T\+\_\+\+T\+E\+N\+S\+O\+R\+\_\+\+C\+A\+P\+\_\+\+D\+E\+F\+A\+U\+LT}} \char`\"{};\char`\"{} \mbox{\hyperlink{tensor__typedef_8h_a884f2cfc99396732e99675d186270477}{G\+S\+T\+\_\+\+T\+E\+N\+S\+O\+R\+S\+\_\+\+C\+A\+P\+\_\+\+W\+I\+T\+H\+\_\+\+N\+UM}} (\char`\"{}1\char`\"{})}



Template caps string for pads. 



Definition at line 106 of file gsttensor\+\_\+aggregator.\+c.

\mbox{\Hypertarget{gsttensor__aggregator_8c_a49606be7356624568932ec81c0d429f4}\label{gsttensor__aggregator_8c_a49606be7356624568932ec81c0d429f4}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!DBG@{DBG}}
\index{DBG@{DBG}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{DBG}{DBG}}
{\footnotesize\ttfamily \#define D\+BG~(!self-\/$>$silent)}



Macro for debug mode. 



Definition at line 42 of file gsttensor\+\_\+aggregator.\+c.

\mbox{\Hypertarget{gsttensor__aggregator_8c_a3a0e876c9b43cc056e69735c6a96bb5e}\label{gsttensor__aggregator_8c_a3a0e876c9b43cc056e69735c6a96bb5e}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!DEFAULT\_CONCAT@{DEFAULT\_CONCAT}}
\index{DEFAULT\_CONCAT@{DEFAULT\_CONCAT}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{DEFAULT\_CONCAT}{DEFAULT\_CONCAT}}
{\footnotesize\ttfamily \#define D\+E\+F\+A\+U\+L\+T\+\_\+\+C\+O\+N\+C\+AT~\mbox{\hyperlink{gsttensor__if_8c_a834713a9a17ec303f21e3dc4ecbe9161}{T\+R\+UE}}}



Flag to concatenate output buffer. 



Definition at line 101 of file gsttensor\+\_\+aggregator.\+c.

\mbox{\Hypertarget{gsttensor__aggregator_8c_a9e778e44c573950fd6d9e4af4e803e69}\label{gsttensor__aggregator_8c_a9e778e44c573950fd6d9e4af4e803e69}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!DEFAULT\_FRAMES\_DIMENSION@{DEFAULT\_FRAMES\_DIMENSION}}
\index{DEFAULT\_FRAMES\_DIMENSION@{DEFAULT\_FRAMES\_DIMENSION}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{DEFAULT\_FRAMES\_DIMENSION}{DEFAULT\_FRAMES\_DIMENSION}}
{\footnotesize\ttfamily \#define D\+E\+F\+A\+U\+L\+T\+\_\+\+F\+R\+A\+M\+E\+S\+\_\+\+D\+I\+M\+E\+N\+S\+I\+ON~(\mbox{\hyperlink{tensor__typedef_8h_ae9bf0825943088d62072409b2e752ae8}{N\+N\+S\+\_\+\+T\+E\+N\+S\+O\+R\+\_\+\+R\+A\+N\+K\+\_\+\+L\+I\+M\+IT}} -\/ 1)}



The dimension index of frames in configured tensor. 



Definition at line 96 of file gsttensor\+\_\+aggregator.\+c.

\mbox{\Hypertarget{gsttensor__aggregator_8c_af70d59a326222c06a2f4b75e602c809c}\label{gsttensor__aggregator_8c_af70d59a326222c06a2f4b75e602c809c}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!DEFAULT\_FRAMES\_FLUSH@{DEFAULT\_FRAMES\_FLUSH}}
\index{DEFAULT\_FRAMES\_FLUSH@{DEFAULT\_FRAMES\_FLUSH}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{DEFAULT\_FRAMES\_FLUSH}{DEFAULT\_FRAMES\_FLUSH}}
{\footnotesize\ttfamily \#define D\+E\+F\+A\+U\+L\+T\+\_\+\+F\+R\+A\+M\+E\+S\+\_\+\+F\+L\+U\+SH~0}



The number of frames to flush. 



Definition at line 91 of file gsttensor\+\_\+aggregator.\+c.

\mbox{\Hypertarget{gsttensor__aggregator_8c_a63822a8879ac786d555243f3558350c2}\label{gsttensor__aggregator_8c_a63822a8879ac786d555243f3558350c2}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!DEFAULT\_FRAMES\_IN@{DEFAULT\_FRAMES\_IN}}
\index{DEFAULT\_FRAMES\_IN@{DEFAULT\_FRAMES\_IN}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{DEFAULT\_FRAMES\_IN}{DEFAULT\_FRAMES\_IN}}
{\footnotesize\ttfamily \#define D\+E\+F\+A\+U\+L\+T\+\_\+\+F\+R\+A\+M\+E\+S\+\_\+\+IN~1}



The number of frames in input buffer. 



Definition at line 81 of file gsttensor\+\_\+aggregator.\+c.

\mbox{\Hypertarget{gsttensor__aggregator_8c_a7b318c7b8b1deb012aa6782b23445efb}\label{gsttensor__aggregator_8c_a7b318c7b8b1deb012aa6782b23445efb}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!DEFAULT\_FRAMES\_OUT@{DEFAULT\_FRAMES\_OUT}}
\index{DEFAULT\_FRAMES\_OUT@{DEFAULT\_FRAMES\_OUT}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{DEFAULT\_FRAMES\_OUT}{DEFAULT\_FRAMES\_OUT}}
{\footnotesize\ttfamily \#define D\+E\+F\+A\+U\+L\+T\+\_\+\+F\+R\+A\+M\+E\+S\+\_\+\+O\+UT~1}



The number of frames in output buffer. 



Definition at line 86 of file gsttensor\+\_\+aggregator.\+c.

\mbox{\Hypertarget{gsttensor__aggregator_8c_a18d799dbbbb0fd0132807aa9bb7d9adf}\label{gsttensor__aggregator_8c_a18d799dbbbb0fd0132807aa9bb7d9adf}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!DEFAULT\_SILENT@{DEFAULT\_SILENT}}
\index{DEFAULT\_SILENT@{DEFAULT\_SILENT}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{DEFAULT\_SILENT}{DEFAULT\_SILENT}}
{\footnotesize\ttfamily \#define D\+E\+F\+A\+U\+L\+T\+\_\+\+S\+I\+L\+E\+NT~\mbox{\hyperlink{gsttensor__if_8c_a834713a9a17ec303f21e3dc4ecbe9161}{T\+R\+UE}}}



Flag to print minimized log. 



Definition at line 76 of file gsttensor\+\_\+aggregator.\+c.

\mbox{\Hypertarget{gsttensor__aggregator_8c_adef911caed7c65a1643062817f4a59d7}\label{gsttensor__aggregator_8c_adef911caed7c65a1643062817f4a59d7}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!GST\_CAT\_DEFAULT@{GST\_CAT\_DEFAULT}}
\index{GST\_CAT\_DEFAULT@{GST\_CAT\_DEFAULT}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{GST\_CAT\_DEFAULT}{GST\_CAT\_DEFAULT}}
{\footnotesize\ttfamily \#define G\+S\+T\+\_\+\+C\+A\+T\+\_\+\+D\+E\+F\+A\+U\+LT~gst\+\_\+tensor\+\_\+aggregator\+\_\+debug}



Definition at line 57 of file gsttensor\+\_\+aggregator.\+c.

\mbox{\Hypertarget{gsttensor__aggregator_8c_af4a8b634358117f29cce683915c3e7d1}\label{gsttensor__aggregator_8c_af4a8b634358117f29cce683915c3e7d1}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_parent\_class@{gst\_tensor\_aggregator\_parent\_class}}
\index{gst\_tensor\_aggregator\_parent\_class@{gst\_tensor\_aggregator\_parent\_class}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_parent\_class}{gst\_tensor\_aggregator\_parent\_class}}
{\footnotesize\ttfamily \#define gst\+\_\+tensor\+\_\+aggregator\+\_\+parent\+\_\+class~parent\+\_\+class}



Definition at line 124 of file gsttensor\+\_\+aggregator.\+c.

\mbox{\Hypertarget{gsttensor__aggregator_8c_a41cb123933f345f68b3c1baa0132c599}\label{gsttensor__aggregator_8c_a41cb123933f345f68b3c1baa0132c599}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!silent\_debug\_config@{silent\_debug\_config}}
\index{silent\_debug\_config@{silent\_debug\_config}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{silent\_debug\_config}{silent\_debug\_config}}
{\footnotesize\ttfamily \#define silent\+\_\+debug\+\_\+config(\begin{DoxyParamCaption}\item[{}]{self,  }\item[{}]{c,  }\item[{}]{msg }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{  \textcolor{keywordflow}{do} \{ \(\backslash\)}
\DoxyCodeLine{  if (\mbox{\hyperlink{gsttensor__aggregator_8c_a49606be7356624568932ec81c0d429f4}{DBG}}) \{ \(\backslash\)}
\DoxyCodeLine{    if (c) \{ \(\backslash\)}
\DoxyCodeLine{      gchar *dim\_str; \(\backslash\)}
\DoxyCodeLine{      dim\_str = \mbox{\hyperlink{nnstreamer__plugin__api__util_8h_a644009058b44fe850c2645f51167d701}{gst\_tensor\_get\_dimension\_string}} ((c)-\/>info.info[0].dimension); \(\backslash\)}
\DoxyCodeLine{      GST\_DEBUG\_OBJECT (\textcolor{keyword}{self}, msg \textcolor{stringliteral}{" type=\%d dim=\%s rate=\%d/\%d"}, (c)-\/>info.info[0].type, dim\_str, (c)-\/>rate\_n, (c)-\/>rate\_d); \(\backslash\)}
\DoxyCodeLine{      g\_free (dim\_str); \(\backslash\)}
\DoxyCodeLine{    \} \(\backslash\)}
\DoxyCodeLine{  \} \(\backslash\)}
\DoxyCodeLine{\} \textcolor{keywordflow}{while} (0)}

\end{DoxyCode}


Definition at line 45 of file gsttensor\+\_\+aggregator.\+c.



\doxysubsection{Enumeration Type Documentation}
\mbox{\Hypertarget{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9e}\label{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9e}} 
\doxysubsubsection{\texorpdfstring{anonymous enum}{anonymous enum}}
{\footnotesize\ttfamily anonymous enum}



tensor\+\_\+aggregator properties 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{PROP\_0@{PROP\_0}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!PROP\_0@{PROP\_0}}}\mbox{\Hypertarget{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9eac37dda0da1a44e10c0504afeeb863f3c}\label{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9eac37dda0da1a44e10c0504afeeb863f3c}} 
P\+R\+O\+P\+\_\+0&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PROP\_FRAMES\_IN@{PROP\_FRAMES\_IN}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!PROP\_FRAMES\_IN@{PROP\_FRAMES\_IN}}}\mbox{\Hypertarget{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9ea4809329e12d8b72b6fa6680101fc2906}\label{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9ea4809329e12d8b72b6fa6680101fc2906}} 
P\+R\+O\+P\+\_\+\+F\+R\+A\+M\+E\+S\+\_\+\+IN&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PROP\_FRAMES\_OUT@{PROP\_FRAMES\_OUT}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!PROP\_FRAMES\_OUT@{PROP\_FRAMES\_OUT}}}\mbox{\Hypertarget{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9eac8e7ad8215834fb0b6c6d7054a64974f}\label{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9eac8e7ad8215834fb0b6c6d7054a64974f}} 
P\+R\+O\+P\+\_\+\+F\+R\+A\+M\+E\+S\+\_\+\+O\+UT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PROP\_FRAMES\_FLUSH@{PROP\_FRAMES\_FLUSH}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!PROP\_FRAMES\_FLUSH@{PROP\_FRAMES\_FLUSH}}}\mbox{\Hypertarget{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9ea50cffb3b2df9175dccd6e0d4520e0d42}\label{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9ea50cffb3b2df9175dccd6e0d4520e0d42}} 
P\+R\+O\+P\+\_\+\+F\+R\+A\+M\+E\+S\+\_\+\+F\+L\+U\+SH&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PROP\_FRAMES\_DIMENSION@{PROP\_FRAMES\_DIMENSION}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!PROP\_FRAMES\_DIMENSION@{PROP\_FRAMES\_DIMENSION}}}\mbox{\Hypertarget{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9eafd15693026f1bac8271c443967c3db52}\label{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9eafd15693026f1bac8271c443967c3db52}} 
P\+R\+O\+P\+\_\+\+F\+R\+A\+M\+E\+S\+\_\+\+D\+I\+M\+E\+N\+S\+I\+ON&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PROP\_CONCAT@{PROP\_CONCAT}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!PROP\_CONCAT@{PROP\_CONCAT}}}\mbox{\Hypertarget{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9ea6faa1714768ce0ffb336e9f58e9daa5c}\label{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9ea6faa1714768ce0ffb336e9f58e9daa5c}} 
P\+R\+O\+P\+\_\+\+C\+O\+N\+C\+AT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PROP\_SILENT@{PROP\_SILENT}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!PROP\_SILENT@{PROP\_SILENT}}}\mbox{\Hypertarget{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9ea707b785966c328fb5a6088b7879c7bb5}\label{gsttensor__aggregator_8c_a05589fbab0657f08285ebdfe93f5ec9ea707b785966c328fb5a6088b7879c7bb5}} 
P\+R\+O\+P\+\_\+\+S\+I\+L\+E\+NT&\\
\hline

\end{DoxyEnumFields}


Definition at line 62 of file gsttensor\+\_\+aggregator.\+c.



\doxysubsection{Function Documentation}
\mbox{\Hypertarget{gsttensor__aggregator_8c_a145e21899ab27e93d47f42ee9ff47474}\label{gsttensor__aggregator_8c_a145e21899ab27e93d47f42ee9ff47474}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!G\_DEFINE\_TYPE@{G\_DEFINE\_TYPE}}
\index{G\_DEFINE\_TYPE@{G\_DEFINE\_TYPE}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{G\_DEFINE\_TYPE()}{G\_DEFINE\_TYPE()}}
{\footnotesize\ttfamily G\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+T\+Y\+PE (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}}}]{,  }\item[{gst\+\_\+tensor\+\_\+aggregator}]{,  }\item[{G\+S\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+E\+L\+E\+M\+E\+NT}]{ }\end{DoxyParamCaption})}

\mbox{\Hypertarget{gsttensor__aggregator_8c_a1bc95bece131c85a1535700d4883032e}\label{gsttensor__aggregator_8c_a1bc95bece131c85a1535700d4883032e}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!GST\_DEBUG\_CATEGORY\_STATIC@{GST\_DEBUG\_CATEGORY\_STATIC}}
\index{GST\_DEBUG\_CATEGORY\_STATIC@{GST\_DEBUG\_CATEGORY\_STATIC}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{GST\_DEBUG\_CATEGORY\_STATIC()}{GST\_DEBUG\_CATEGORY\_STATIC()}}
{\footnotesize\ttfamily G\+S\+T\+\_\+\+D\+E\+B\+U\+G\+\_\+\+C\+A\+T\+E\+G\+O\+R\+Y\+\_\+\+S\+T\+A\+T\+IC (\begin{DoxyParamCaption}\item[{gst\+\_\+tensor\+\_\+aggregator\+\_\+debug}]{ }\end{DoxyParamCaption})}

\mbox{\Hypertarget{gsttensor__aggregator_8c_ab97655a5226d65c0a46e8d987fcf28c4}\label{gsttensor__aggregator_8c_ab97655a5226d65c0a46e8d987fcf28c4}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_chain@{gst\_tensor\_aggregator\_chain}}
\index{gst\_tensor\_aggregator\_chain@{gst\_tensor\_aggregator\_chain}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_chain()}{gst\_tensor\_aggregator\_chain()}}
{\footnotesize\ttfamily static Gst\+Flow\+Return gst\+\_\+tensor\+\_\+aggregator\+\_\+chain (\begin{DoxyParamCaption}\item[{Gst\+Pad $\ast$}]{pad,  }\item[{Gst\+Object $\ast$}]{parent,  }\item[{Gst\+Buffer $\ast$}]{buf }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Chain function, this function does the actual processing. 

push the incoming buffer (do concat if needed)

supposed same duration for incoming buffer

Update timestamp. If frames-\/in is larger then frames-\/out, the same timestamp (pts and dts) would be returned.

set timestamp

flush data

\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000009}{Todo}}]flush data Invalid state, tried to flush large size. We have to determine how to handle this case. (flush the out-\/size or all available bytes) Now all available bytes in adapter will be flushed. \end{DoxyRefDesc}


Definition at line 835 of file gsttensor\+\_\+aggregator.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_ab97655a5226d65c0a46e8d987fcf28c4_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_ab97655a5226d65c0a46e8d987fcf28c4_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{gsttensor__aggregator_8c_ae48d6592ea4dd8e8876789d3617e774a}\label{gsttensor__aggregator_8c_ae48d6592ea4dd8e8876789d3617e774a}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_change\_state@{gst\_tensor\_aggregator\_change\_state}}
\index{gst\_tensor\_aggregator\_change\_state@{gst\_tensor\_aggregator\_change\_state}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_change\_state()}{gst\_tensor\_aggregator\_change\_state()}}
{\footnotesize\ttfamily static Gst\+State\+Change\+Return gst\+\_\+tensor\+\_\+aggregator\+\_\+change\+\_\+state (\begin{DoxyParamCaption}\item[{Gst\+Element $\ast$}]{element,  }\item[{Gst\+State\+Change}]{transition }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Called to perform state change. 



Definition at line 947 of file gsttensor\+\_\+aggregator.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_ae48d6592ea4dd8e8876789d3617e774a_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_ae48d6592ea4dd8e8876789d3617e774a_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{gsttensor__aggregator_8c_a1ba50487f048a3fdc286716a293af043}\label{gsttensor__aggregator_8c_a1ba50487f048a3fdc286716a293af043}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_check\_concat\_axis@{gst\_tensor\_aggregator\_check\_concat\_axis}}
\index{gst\_tensor\_aggregator\_check\_concat\_axis@{gst\_tensor\_aggregator\_check\_concat\_axis}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_check\_concat\_axis()}{gst\_tensor\_aggregator\_check\_concat\_axis()}}
{\footnotesize\ttfamily static gboolean gst\+\_\+tensor\+\_\+aggregator\+\_\+check\+\_\+concat\+\_\+axis (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}} $\ast$}]{self,  }\item[{const \mbox{\hyperlink{structGstTensorInfo}{Gst\+Tensor\+Info}} $\ast$}]{info }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Check tensor dimension and axis to concatenate data. 


\begin{DoxyParams}{Parameters}
{\em self} & this pointer to Gst\+Tensor\+Aggregator \\
\hline
{\em info} & tensor info for one frame \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
True if needed to concatenate 
\end{DoxyReturn}
Internal error. Caller should\textquotesingle{}ve checked it

Check condition to concatenate data.

concatenate data

Definition at line 540 of file gsttensor\+\_\+aggregator.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=300pt]{gsttensor__aggregator_8c_a1ba50487f048a3fdc286716a293af043_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_a1ba50487f048a3fdc286716a293af043_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{gsttensor__aggregator_8c_a2fb4b0c0d01821063f140e7582125e08}\label{gsttensor__aggregator_8c_a2fb4b0c0d01821063f140e7582125e08}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_class\_init@{gst\_tensor\_aggregator\_class\_init}}
\index{gst\_tensor\_aggregator\_class\_init@{gst\_tensor\_aggregator\_class\_init}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_class\_init()}{gst\_tensor\_aggregator\_class\_init()}}
{\footnotesize\ttfamily static void gst\+\_\+tensor\+\_\+aggregator\+\_\+class\+\_\+init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{gsttensor__aggregator_8h_a9fa836ddbdd23e0f41f492a06c8f77a3}{Gst\+Tensor\+Aggregator\+Class}} $\ast$}]{klass }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Initialize the tensor\+\_\+aggregator\textquotesingle{}s class. 

Gst\+Tensor\+Aggregator\+::frames-\/in\+:

The number of frames in incoming buffer. Gst\+Tensor\+Aggregator itself cannot get the frames in buffer. (buffer is a sinle tensor instance) Gst\+Tensor\+Aggregator calculates the size of single frame with this property.

Gst\+Tensor\+Aggregator\+::frames-\/out\+:

The number of frames in outgoing buffer. (buffer is a sinle tensor instance) Gst\+Tensor\+Aggregator calculates the size of outgoing frames and pushes a buffer to source pad.

Gst\+Tensor\+Aggregator\+::frames-\/flush\+:

The number of frames to flush. Gst\+Tensor\+Aggregator flushes the bytes (N frames) in Gst\+Adapter after pushing a buffer. If set 0 (default value), all outgoing frames will be flushed.

Gst\+Tensor\+Aggregator\+::frames-\/dim\+:

The dimension index of frames in tensor. If frames-\/in and frames-\/out are different, Gst\+Tensor\+Aggregator has to change the dimension of tensor. With this property, Gst\+Tensor\+Aggregator changes the out-\/caps.

\mbox{\hyperlink{struct__GstTensorAggregator_ab6be4e5512f9bbeec5241fc413210ac2}{Gst\+Tensor\+Aggregator\+::concat}}\+:

The flag to concatenate output buffer. If concat is true and frames-\/out is larger than 1, Gst\+Tensor\+Aggregator will concatenate the output buffer with the axis frames-\/dim.

\mbox{\hyperlink{struct__GstTensorAggregator_a39cea68e1233d3872909996bd2b9004c}{Gst\+Tensor\+Aggregator\+::silent}}\+:

The flag to enable/disable debugging messages.

Definition at line 155 of file gsttensor\+\_\+aggregator.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_a2fb4b0c0d01821063f140e7582125e08_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{gsttensor__aggregator_8c_a40774dda0f8fa76c1abd85b20858c472}\label{gsttensor__aggregator_8c_a40774dda0f8fa76c1abd85b20858c472}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_concat@{gst\_tensor\_aggregator\_concat}}
\index{gst\_tensor\_aggregator\_concat@{gst\_tensor\_aggregator\_concat}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_concat()}{gst\_tensor\_aggregator\_concat()}}
{\footnotesize\ttfamily static gboolean gst\+\_\+tensor\+\_\+aggregator\+\_\+concat (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}} $\ast$}]{self,  }\item[{Gst\+Buffer $\ast$}]{outbuf,  }\item[{const \mbox{\hyperlink{structGstTensorInfo}{Gst\+Tensor\+Info}} $\ast$}]{info }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Change the data in buffer with given axis. 


\begin{DoxyParams}{Parameters}
{\em self} & this pointer to Gst\+Tensor\+Aggregator \\
\hline
{\em outbuf} & buffer to be concatenated \\
\hline
{\em info} & tensor info for one frame \\
\hline
\end{DoxyParams}
Internal error

Concatenate output buffer with given axis (frames-\/dim) If frames-\/dim is equal to (N\+N\+S\+\_\+\+T\+E\+N\+S\+O\+R\+\_\+\+R\+A\+N\+K\+\_\+\+L\+I\+M\+IT -\/ 1), nothing to do. (In this case, this function will not be called. See gst\+\_\+tensor\+\_\+aggregator\+\_\+check\+\_\+concat\+\_\+axis ())

Ex1) concatenate 2 frames with dimension 3\+:4\+:2\+:1

frame 1 \mbox{[} \mbox{[} \mbox{[}1101 1102 1103\mbox{]} \mbox{[}1104 1105 1106\mbox{]} \mbox{[}1107 1108 1109\mbox{]} \mbox{[}1110 1111 1112\mbox{]} \mbox{]} \mbox{[} \mbox{[}1113 1114 1115\mbox{]} \mbox{[}1116 1117 1118\mbox{]} \mbox{[}1119 1120 1121\mbox{]} \mbox{[}1122 1123 1124\mbox{]} \mbox{]} \mbox{]}

frame 2 \mbox{[} \mbox{[} \mbox{[}2101 2102 2103\mbox{]} \mbox{[}2104 2105 2106\mbox{]} \mbox{[}2107 2108 2109\mbox{]} \mbox{[}2110 2111 2112\mbox{]} \mbox{]} \mbox{[} \mbox{[}2113 2114 2115\mbox{]} \mbox{[}2116 2117 2118\mbox{]} \mbox{[}2119 2120 2121\mbox{]} \mbox{[}2122 2123 2124\mbox{]} \mbox{]} \mbox{]}

1-\/1. result with frames-\/dim 3 (3\+:4\+:2\+:2) \mbox{[} \mbox{[} \mbox{[}1101 1102 1103\mbox{]} \mbox{[}1104 1105 1106\mbox{]} \mbox{[}1107 1108 1109\mbox{]} \mbox{[}1110 1111 1112\mbox{]} \mbox{]} \mbox{[} \mbox{[}1113 1114 1115\mbox{]} \mbox{[}1116 1117 1118\mbox{]} \mbox{[}1119 1120 1121\mbox{]} \mbox{[}1122 1123 1124\mbox{]} \mbox{]} \mbox{]} \mbox{[} \mbox{[} \mbox{[}2101 2102 2103\mbox{]} \mbox{[}2104 2105 2106\mbox{]} \mbox{[}2107 2108 2109\mbox{]} \mbox{[}2110 2111 2112\mbox{]} \mbox{]} \mbox{[} \mbox{[}2113 2114 2115\mbox{]} \mbox{[}2116 2117 2118\mbox{]} \mbox{[}2119 2120 2121\mbox{]} \mbox{[}2122 2123 2124\mbox{]} \mbox{]} \mbox{]}

1-\/2. result with frames-\/dim 2 (3\+:4\+:4\+:1) \mbox{[} \mbox{[} \mbox{[}1101 1102 1103\mbox{]} \mbox{[}1104 1105 1106\mbox{]} \mbox{[}1107 1108 1109\mbox{]} \mbox{[}1110 1111 1112\mbox{]} \mbox{]} \mbox{[} \mbox{[}1113 1114 1115\mbox{]} \mbox{[}1116 1117 1118\mbox{]} \mbox{[}1119 1120 1121\mbox{]} \mbox{[}1122 1123 1124\mbox{]} \mbox{]} \mbox{[} \mbox{[}2101 2102 2103\mbox{]} \mbox{[}2104 2105 2106\mbox{]} \mbox{[}2107 2108 2109\mbox{]} \mbox{[}2110 2111 2112\mbox{]} \mbox{]} \mbox{[} \mbox{[}2113 2114 2115\mbox{]} \mbox{[}2116 2117 2118\mbox{]} \mbox{[}2119 2120 2121\mbox{]} \mbox{[}2122 2123 2124\mbox{]} \mbox{]} \mbox{]}

1-\/3. result with frames-\/dim 1 (3\+:8\+:2\+:1) \mbox{[} \mbox{[} \mbox{[}1101 1102 1103\mbox{]} \mbox{[}1104 1105 1106\mbox{]} \mbox{[}1107 1108 1109\mbox{]} \mbox{[}1110 1111 1112\mbox{]} \mbox{[}2101 2102 2103\mbox{]} \mbox{[}2104 2105 2106\mbox{]} \mbox{[}2107 2108 2109\mbox{]} \mbox{[}2110 2111 2112\mbox{]} \mbox{]} \mbox{[} \mbox{[}1113 1114 1115\mbox{]} \mbox{[}1116 1117 1118\mbox{]} \mbox{[}1119 1120 1121\mbox{]} \mbox{[}1122 1123 1124\mbox{]} \mbox{[}2113 2114 2115\mbox{]} \mbox{[}2116 2117 2118\mbox{]} \mbox{[}2119 2120 2121\mbox{]} \mbox{[}2122 2123 2124\mbox{]} \mbox{]} \mbox{]}

1-\/4. result with frames-\/dim 0 (6\+:4\+:2\+:1) \mbox{[} \mbox{[} \mbox{[}1101 1102 1103 2101 2102 2103\mbox{]} \mbox{[}1104 1105 1106 2104 2105 2106\mbox{]} \mbox{[}1107 1108 1109 2107 2108 2109\mbox{]} \mbox{[}1110 1111 1112 2110 2111 2112\mbox{]} \mbox{]} \mbox{[} \mbox{[}1113 1114 1115 2113 2114 2115\mbox{]} \mbox{[}1116 1117 1118 2116 2117 2118\mbox{]} \mbox{[}1119 1120 1121 2119 2120 2121\mbox{]} \mbox{[}1122 1123 1124 2122 2123 2124\mbox{]} \mbox{]} \mbox{]}

Ex2) concatenate 2 frames with dimension 3\+:4\+:2\+:2

frame 1 \mbox{[} \mbox{[} \mbox{[}1101 1102 1103\mbox{]} \mbox{[}1104 1105 1106\mbox{]} \mbox{[}1107 1108 1109\mbox{]} \mbox{[}1110 1111 1112\mbox{]} \mbox{]} \mbox{[} \mbox{[}1113 1114 1115\mbox{]} \mbox{[}1116 1117 1118\mbox{]} \mbox{[}1119 1120 1121\mbox{]} \mbox{[}1122 1123 1124\mbox{]} \mbox{]} \mbox{]} \mbox{[} \mbox{[} \mbox{[}1201 1202 1203\mbox{]} \mbox{[}1204 1205 1206\mbox{]} \mbox{[}1207 1208 1209\mbox{]} \mbox{[}1210 1211 1212\mbox{]} \mbox{]} \mbox{[} \mbox{[}1213 1214 1215\mbox{]} \mbox{[}1216 1217 1218\mbox{]} \mbox{[}1219 1220 1221\mbox{]} \mbox{[}1222 1223 1224\mbox{]} \mbox{]} \mbox{]}

frame 2 \mbox{[} \mbox{[} \mbox{[}2101 2102 2103\mbox{]} \mbox{[}2104 2105 2106\mbox{]} \mbox{[}2107 2108 2109\mbox{]} \mbox{[}2110 2111 2112\mbox{]} \mbox{]} \mbox{[} \mbox{[}2113 2114 2115\mbox{]} \mbox{[}2116 2117 2118\mbox{]} \mbox{[}2119 2120 2121\mbox{]} \mbox{[}2122 2123 2124\mbox{]} \mbox{]} \mbox{]} \mbox{[} \mbox{[} \mbox{[}2201 2202 2203\mbox{]} \mbox{[}2204 2205 2206\mbox{]} \mbox{[}2207 2208 2209\mbox{]} \mbox{[}2210 2211 2212\mbox{]} \mbox{]} \mbox{[} \mbox{[}2213 2214 2215\mbox{]} \mbox{[}2216 2217 2218\mbox{]} \mbox{[}2219 2220 2221\mbox{]} \mbox{[}2222 2223 2224\mbox{]} \mbox{]} \mbox{]}

2-\/1. result with frames-\/dim 3 (3\+:4\+:2\+:4) \mbox{[} \mbox{[} \mbox{[}1101 1102 1103\mbox{]} \mbox{[}1104 1105 1106\mbox{]} \mbox{[}1107 1108 1109\mbox{]} \mbox{[}1110 1111 1112\mbox{]} \mbox{]} \mbox{[} \mbox{[}1113 1114 1115\mbox{]} \mbox{[}1116 1117 1118\mbox{]} \mbox{[}1119 1120 1121\mbox{]} \mbox{[}1122 1123 1124\mbox{]} \mbox{]} \mbox{]} \mbox{[} \mbox{[} \mbox{[}1201 1202 1203\mbox{]} \mbox{[}1204 1205 1206\mbox{]} \mbox{[}1207 1208 1209\mbox{]} \mbox{[}1210 1211 1212\mbox{]} \mbox{]} \mbox{[} \mbox{[}1213 1214 1215\mbox{]} \mbox{[}1216 1217 1218\mbox{]} \mbox{[}1219 1220 1221\mbox{]} \mbox{[}1222 1223 1224\mbox{]} \mbox{]} \mbox{]} \mbox{[} \mbox{[} \mbox{[}2101 2102 2103\mbox{]} \mbox{[}2104 2105 2106\mbox{]} \mbox{[}2107 2108 2109\mbox{]} \mbox{[}2110 2111 2112\mbox{]} \mbox{]} \mbox{[} \mbox{[}2113 2114 2115\mbox{]} \mbox{[}2116 2117 2118\mbox{]} \mbox{[}2119 2120 2121\mbox{]} \mbox{[}2122 2123 2124\mbox{]} \mbox{]} \mbox{]} \mbox{[} \mbox{[} \mbox{[}2201 2202 2203\mbox{]} \mbox{[}2204 2205 2206\mbox{]} \mbox{[}2207 2208 2209\mbox{]} \mbox{[}2210 2211 2212\mbox{]} \mbox{]} \mbox{[} \mbox{[}2213 2214 2215\mbox{]} \mbox{[}2216 2217 2218\mbox{]} \mbox{[}2219 2220 2221\mbox{]} \mbox{[}2222 2223 2224\mbox{]} \mbox{]} \mbox{]}

2-\/2. result with frames-\/dim 2 (3\+:4\+:4\+:2) \mbox{[} \mbox{[} \mbox{[}1101 1102 1103\mbox{]} \mbox{[}1104 1105 1106\mbox{]} \mbox{[}1107 1108 1109\mbox{]} \mbox{[}1110 1111 1112\mbox{]} \mbox{]} \mbox{[} \mbox{[}1113 1114 1115\mbox{]} \mbox{[}1116 1117 1118\mbox{]} \mbox{[}1119 1120 1121\mbox{]} \mbox{[}1122 1123 1124\mbox{]} \mbox{]} \mbox{[} \mbox{[}2101 2102 2103\mbox{]} \mbox{[}2104 2105 2106\mbox{]} \mbox{[}2107 2108 2109\mbox{]} \mbox{[}2110 2111 2112\mbox{]} \mbox{]} \mbox{[} \mbox{[}2113 2114 2115\mbox{]} \mbox{[}2116 2117 2118\mbox{]} \mbox{[}2119 2120 2121\mbox{]} \mbox{[}2122 2123 2124\mbox{]} \mbox{]} \mbox{]} \mbox{[} \mbox{[} \mbox{[}1201 1202 1203\mbox{]} \mbox{[}1204 1205 1206\mbox{]} \mbox{[}1207 1208 1209\mbox{]} \mbox{[}1210 1211 1212\mbox{]} \mbox{]} \mbox{[} \mbox{[}1213 1214 1215\mbox{]} \mbox{[}1216 1217 1218\mbox{]} \mbox{[}1219 1220 1221\mbox{]} \mbox{[}1222 1223 1224\mbox{]} \mbox{]} \mbox{[} \mbox{[}2201 2202 2203\mbox{]} \mbox{[}2204 2205 2206\mbox{]} \mbox{[}2207 2208 2209\mbox{]} \mbox{[}2210 2211 2212\mbox{]} \mbox{]} \mbox{[} \mbox{[}2213 2214 2215\mbox{]} \mbox{[}2216 2217 2218\mbox{]} \mbox{[}2219 2220 2221\mbox{]} \mbox{[}2222 2223 2224\mbox{]} \mbox{]} \mbox{]}

2-\/3. result with frames-\/dim 1 (3\+:8\+:2\+:2) \mbox{[} \mbox{[} \mbox{[}1101 1102 1103\mbox{]} \mbox{[}1104 1105 1106\mbox{]} \mbox{[}1107 1108 1109\mbox{]} \mbox{[}1110 1111 1112\mbox{]} \mbox{[}2101 2102 2103\mbox{]} \mbox{[}2104 2105 2106\mbox{]} \mbox{[}2107 2108 2109\mbox{]} \mbox{[}2110 2111 2112\mbox{]} \mbox{]} \mbox{[} \mbox{[}1113 1114 1115\mbox{]} \mbox{[}1116 1117 1118\mbox{]} \mbox{[}1119 1120 1121\mbox{]} \mbox{[}1122 1123 1124\mbox{]} \mbox{[}2113 2114 2115\mbox{]} \mbox{[}2116 2117 2118\mbox{]} \mbox{[}2119 2120 2121\mbox{]} \mbox{[}2122 2123 2124\mbox{]} \mbox{]} \mbox{]} \mbox{[} \mbox{[} \mbox{[}1201 1202 1203\mbox{]} \mbox{[}1204 1205 1206\mbox{]} \mbox{[}1207 1208 1209\mbox{]} \mbox{[}1210 1211 1212\mbox{]} \mbox{[}2201 2202 2203\mbox{]} \mbox{[}2204 2205 2206\mbox{]} \mbox{[}2207 2208 2209\mbox{]} \mbox{[}2210 2211 2212\mbox{]} \mbox{]} \mbox{[} \mbox{[}1213 1214 1215\mbox{]} \mbox{[}1216 1217 1218\mbox{]} \mbox{[}1219 1220 1221\mbox{]} \mbox{[}1222 1223 1224\mbox{]} \mbox{[}2213 2214 2215\mbox{]} \mbox{[}2216 2217 2218\mbox{]} \mbox{[}2219 2220 2221\mbox{]} \mbox{[}2222 2223 2224\mbox{]} \mbox{]} \mbox{]}

2-\/4. result with frames-\/dim 0 (6\+:4\+:2\+:2) \mbox{[} \mbox{[} \mbox{[}1101 1102 1103 2101 2102 2103\mbox{]} \mbox{[}1104 1105 1106 2104 2105 2106\mbox{]} \mbox{[}1107 1108 1109 2107 2108 2109\mbox{]} \mbox{[}1110 1111 1112 2110 2111 2112\mbox{]} \mbox{]} \mbox{[} \mbox{[}1113 1114 1115 2113 2114 2115\mbox{]} \mbox{[}1116 1117 1118 2116 2117 2118\mbox{]} \mbox{[}1119 1120 1121 2119 2120 2121\mbox{]} \mbox{[}1122 1123 1124 2122 2123 2124\mbox{]} \mbox{]} \mbox{]} \mbox{[} \mbox{[} \mbox{[}1201 1202 1203 2201 2202 2203\mbox{]} \mbox{[}1204 1205 1206 2204 2205 2206\mbox{]} \mbox{[}1207 1208 1209 2207 2208 2209\mbox{]} \mbox{[}1210 1211 1212 2210 2211 2212\mbox{]} \mbox{]} \mbox{[} \mbox{[}1213 1214 1215 2213 2214 2215\mbox{]} \mbox{[}1216 1217 1218 2216 2217 2218\mbox{]} \mbox{[}1219 1220 1221 2219 2220 2221\mbox{]} \mbox{[}1222 1223 1224 2222 2223 2224\mbox{]} \mbox{]} \mbox{]}

Ex3) concatenate 2 frames with dimension 3\+:4\+:1\+:1

frame 1 \mbox{[} \mbox{[} \mbox{[}1101 1102 1103\mbox{]} \mbox{[}1104 1105 1106\mbox{]} \mbox{[}1107 1108 1109\mbox{]} \mbox{[}1110 1111 1112\mbox{]} \mbox{]} \mbox{]}

frame 2 \mbox{[} \mbox{[} \mbox{[}2101 2102 2103\mbox{]} \mbox{[}2104 2105 2106\mbox{]} \mbox{[}2107 2108 2109\mbox{]} \mbox{[}2110 2111 2112\mbox{]} \mbox{]} \mbox{]}

3-\/1. result with frames-\/dim 3 (3\+:4\+:1\+:2) \mbox{[} \mbox{[} \mbox{[}1101 1102 1103\mbox{]} \mbox{[}1104 1105 1106\mbox{]} \mbox{[}1107 1108 1109\mbox{]} \mbox{[}1110 1111 1112\mbox{]} \mbox{]} \mbox{]} \mbox{[} \mbox{[} \mbox{[}2101 2102 2103\mbox{]} \mbox{[}2104 2105 2106\mbox{]} \mbox{[}2107 2108 2109\mbox{]} \mbox{[}2110 2111 2112\mbox{]} \mbox{]} \mbox{]}

3-\/2. result with frames-\/dim 2 (3\+:4\+:2\+:1) \mbox{[} \mbox{[} \mbox{[}1101 1102 1103\mbox{]} \mbox{[}1104 1105 1106\mbox{]} \mbox{[}1107 1108 1109\mbox{]} \mbox{[}1110 1111 1112\mbox{]} \mbox{]} \mbox{[} \mbox{[}2101 2102 2103\mbox{]} \mbox{[}2104 2105 2106\mbox{]} \mbox{[}2107 2108 2109\mbox{]} \mbox{[}2110 2111 2112\mbox{]} \mbox{]} \mbox{]}

3-\/3. result with frames-\/dim 1 (3\+:8\+:1\+:1) \mbox{[} \mbox{[} \mbox{[}1101 1102 1103\mbox{]} \mbox{[}1104 1105 1106\mbox{]} \mbox{[}1107 1108 1109\mbox{]} \mbox{[}1110 1111 1112\mbox{]} \mbox{[}2101 2102 2103\mbox{]} \mbox{[}2104 2105 2106\mbox{]} \mbox{[}2107 2108 2109\mbox{]} \mbox{[}2110 2111 2112\mbox{]} \mbox{]} \mbox{]}

3-\/4. result with frames-\/dim 0 (6\+:4\+:1\+:1) \mbox{[} \mbox{[} \mbox{[}1101 1102 1103 2101 2102 2103\mbox{]} \mbox{[}1104 1105 1106 2104 2105 2106\mbox{]} \mbox{[}1107 1108 1109 2107 2108 2109\mbox{]} \mbox{[}1110 1111 1112 2110 2111 2112\mbox{]} \mbox{]} \mbox{]}

get block size

Definition at line 569 of file gsttensor\+\_\+aggregator.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_a40774dda0f8fa76c1abd85b20858c472_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_a40774dda0f8fa76c1abd85b20858c472_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{gsttensor__aggregator_8c_a7ef2ccbe16682044af84b14aa2a53d3e}\label{gsttensor__aggregator_8c_a7ef2ccbe16682044af84b14aa2a53d3e}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_finalize@{gst\_tensor\_aggregator\_finalize}}
\index{gst\_tensor\_aggregator\_finalize@{gst\_tensor\_aggregator\_finalize}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_finalize()}{gst\_tensor\_aggregator\_finalize()}}
{\footnotesize\ttfamily static void gst\+\_\+tensor\+\_\+aggregator\+\_\+finalize (\begin{DoxyParamCaption}\item[{G\+Object $\ast$}]{object }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Function to finalize instance. 



Definition at line 294 of file gsttensor\+\_\+aggregator.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_a7ef2ccbe16682044af84b14aa2a53d3e_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_a7ef2ccbe16682044af84b14aa2a53d3e_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{gsttensor__aggregator_8c_a8fd3c6743c753148c0a7ea51685bb7df}\label{gsttensor__aggregator_8c_a8fd3c6743c753148c0a7ea51685bb7df}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_get\_adapter@{gst\_tensor\_aggregator\_get\_adapter}}
\index{gst\_tensor\_aggregator\_get\_adapter@{gst\_tensor\_aggregator\_get\_adapter}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_get\_adapter()}{gst\_tensor\_aggregator\_get\_adapter()}}
{\footnotesize\ttfamily static Gst\+Adapter$\ast$ gst\+\_\+tensor\+\_\+aggregator\+\_\+get\+\_\+adapter (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}} $\ast$}]{self,  }\item[{Gst\+Buffer $\ast$}]{buf }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Internal function to get adapter. 



Definition at line 521 of file gsttensor\+\_\+aggregator.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_a8fd3c6743c753148c0a7ea51685bb7df_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_a8fd3c6743c753148c0a7ea51685bb7df_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{gsttensor__aggregator_8c_a7ce42c53b5f2e02481a998190097eb40}\label{gsttensor__aggregator_8c_a7ce42c53b5f2e02481a998190097eb40}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_get\_property@{gst\_tensor\_aggregator\_get\_property}}
\index{gst\_tensor\_aggregator\_get\_property@{gst\_tensor\_aggregator\_get\_property}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_get\_property()}{gst\_tensor\_aggregator\_get\_property()}}
{\footnotesize\ttfamily static void gst\+\_\+tensor\+\_\+aggregator\+\_\+get\+\_\+property (\begin{DoxyParamCaption}\item[{G\+Object $\ast$}]{object,  }\item[{guint}]{prop\+\_\+id,  }\item[{G\+Value $\ast$}]{value,  }\item[{G\+Param\+Spec $\ast$}]{pspec }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Getter for tensor\+\_\+aggregator properties. 



Definition at line 349 of file gsttensor\+\_\+aggregator.\+c.

Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_a7ce42c53b5f2e02481a998190097eb40_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{gsttensor__aggregator_8c_a8bc35e08eb186b99b8f1fd897b6ffd2e}\label{gsttensor__aggregator_8c_a8bc35e08eb186b99b8f1fd897b6ffd2e}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_init@{gst\_tensor\_aggregator\_init}}
\index{gst\_tensor\_aggregator\_init@{gst\_tensor\_aggregator\_init}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_init()}{gst\_tensor\_aggregator\_init()}}
{\footnotesize\ttfamily static void gst\+\_\+tensor\+\_\+aggregator\+\_\+init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}} $\ast$}]{self }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Initialize tensor\+\_\+aggregator element. 

setup sink pad

setup src pad

init properties

Definition at line 254 of file gsttensor\+\_\+aggregator.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_a8bc35e08eb186b99b8f1fd897b6ffd2e_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{gsttensor__aggregator_8c_a5366708345faf680f48f44a098207c61}\label{gsttensor__aggregator_8c_a5366708345faf680f48f44a098207c61}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_parse\_caps@{gst\_tensor\_aggregator\_parse\_caps}}
\index{gst\_tensor\_aggregator\_parse\_caps@{gst\_tensor\_aggregator\_parse\_caps}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_parse\_caps()}{gst\_tensor\_aggregator\_parse\_caps()}}
{\footnotesize\ttfamily static gboolean gst\+\_\+tensor\+\_\+aggregator\+\_\+parse\+\_\+caps (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}} $\ast$}]{self,  }\item[{const Gst\+Caps $\ast$}]{caps }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Parse caps and set tensor info. 

\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000010}{Todo}}]flush data Check properties to detect invalid case. Assertion when in=5 out=10 flush=20 or in=10 out=5 flush=20 \end{DoxyRefDesc}


update dimension in output tensor. e.\+g, in-\/dimension 2\+:200\+:200\+:1 if frames\+\_\+out=10 and frames\+\_\+dim=3, then out-\/dimension is 2\+:200\+:200\+:10. if frames\+\_\+out=10 and frames\+\_\+dim=2, then out-\/dimension is 2\+:200\+:2000\+:1.

Definition at line 1026 of file gsttensor\+\_\+aggregator.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_a5366708345faf680f48f44a098207c61_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_a5366708345faf680f48f44a098207c61_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{gsttensor__aggregator_8c_aa6bb0bdd84d7436d74a8ef2ca5ceb61b}\label{gsttensor__aggregator_8c_aa6bb0bdd84d7436d74a8ef2ca5ceb61b}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_push@{gst\_tensor\_aggregator\_push}}
\index{gst\_tensor\_aggregator\_push@{gst\_tensor\_aggregator\_push}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_push()}{gst\_tensor\_aggregator\_push()}}
{\footnotesize\ttfamily static Gst\+Flow\+Return gst\+\_\+tensor\+\_\+aggregator\+\_\+push (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}} $\ast$}]{self,  }\item[{Gst\+Buffer $\ast$}]{outbuf,  }\item[{gsize}]{frame\+\_\+size }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Push the buffer to source pad. (Concatenate the buffer if needed) 

tensor info for one frame

change data in buffer with given axis

Definition at line 805 of file gsttensor\+\_\+aggregator.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_aa6bb0bdd84d7436d74a8ef2ca5ceb61b_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_aa6bb0bdd84d7436d74a8ef2ca5ceb61b_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{gsttensor__aggregator_8c_ace10c7978f95d2ce1dddd092fd492f3b}\label{gsttensor__aggregator_8c_ace10c7978f95d2ce1dddd092fd492f3b}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_query\_caps@{gst\_tensor\_aggregator\_query\_caps}}
\index{gst\_tensor\_aggregator\_query\_caps@{gst\_tensor\_aggregator\_query\_caps}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_query\_caps()}{gst\_tensor\_aggregator\_query\_caps()}}
{\footnotesize\ttfamily static Gst\+Caps $\ast$ gst\+\_\+tensor\+\_\+aggregator\+\_\+query\+\_\+caps (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}} $\ast$}]{self,  }\item[{Gst\+Pad $\ast$}]{pad,  }\item[{Gst\+Caps $\ast$}]{filter }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Get pad caps for caps negotiation. 



Definition at line 990 of file gsttensor\+\_\+aggregator.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_ace10c7978f95d2ce1dddd092fd492f3b_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_ace10c7978f95d2ce1dddd092fd492f3b_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{gsttensor__aggregator_8c_aec77d71ee6cc0061926a70085eba1984}\label{gsttensor__aggregator_8c_aec77d71ee6cc0061926a70085eba1984}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_reset@{gst\_tensor\_aggregator\_reset}}
\index{gst\_tensor\_aggregator\_reset@{gst\_tensor\_aggregator\_reset}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_reset()}{gst\_tensor\_aggregator\_reset()}}
{\footnotesize\ttfamily static void gst\+\_\+tensor\+\_\+aggregator\+\_\+reset (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{gsttensor__aggregator_8h_ad22144e09d52c6c03039ddf6f753e869}{Gst\+Tensor\+Aggregator}} $\ast$}]{self }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Clear and reset data. 



Definition at line 980 of file gsttensor\+\_\+aggregator.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_aec77d71ee6cc0061926a70085eba1984_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_aec77d71ee6cc0061926a70085eba1984_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{gsttensor__aggregator_8c_aa1404a8022b7d60ae0245362b5b65717}\label{gsttensor__aggregator_8c_aa1404a8022b7d60ae0245362b5b65717}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_set\_property@{gst\_tensor\_aggregator\_set\_property}}
\index{gst\_tensor\_aggregator\_set\_property@{gst\_tensor\_aggregator\_set\_property}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_set\_property()}{gst\_tensor\_aggregator\_set\_property()}}
{\footnotesize\ttfamily static void gst\+\_\+tensor\+\_\+aggregator\+\_\+set\+\_\+property (\begin{DoxyParamCaption}\item[{G\+Object $\ast$}]{object,  }\item[{guint}]{prop\+\_\+id,  }\item[{const G\+Value $\ast$}]{value,  }\item[{G\+Param\+Spec $\ast$}]{pspec }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Setter for tensor\+\_\+aggregator properties. 



Definition at line 313 of file gsttensor\+\_\+aggregator.\+c.

Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_aa1404a8022b7d60ae0245362b5b65717_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{gsttensor__aggregator_8c_a2703d8ceae6bfc329cfe47f62e50e6a5}\label{gsttensor__aggregator_8c_a2703d8ceae6bfc329cfe47f62e50e6a5}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_sink\_event@{gst\_tensor\_aggregator\_sink\_event}}
\index{gst\_tensor\_aggregator\_sink\_event@{gst\_tensor\_aggregator\_sink\_event}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_sink\_event()}{gst\_tensor\_aggregator\_sink\_event()}}
{\footnotesize\ttfamily static gboolean gst\+\_\+tensor\+\_\+aggregator\+\_\+sink\+\_\+event (\begin{DoxyParamCaption}\item[{Gst\+Pad $\ast$}]{pad,  }\item[{Gst\+Object $\ast$}]{parent,  }\item[{Gst\+Event $\ast$}]{event }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



This function handles sink events. 



Definition at line 385 of file gsttensor\+\_\+aggregator.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_a2703d8ceae6bfc329cfe47f62e50e6a5_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_a2703d8ceae6bfc329cfe47f62e50e6a5_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{gsttensor__aggregator_8c_a3b48721a4c6e30e1d21cfed962106d71}\label{gsttensor__aggregator_8c_a3b48721a4c6e30e1d21cfed962106d71}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_sink\_query@{gst\_tensor\_aggregator\_sink\_query}}
\index{gst\_tensor\_aggregator\_sink\_query@{gst\_tensor\_aggregator\_sink\_query}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_sink\_query()}{gst\_tensor\_aggregator\_sink\_query()}}
{\footnotesize\ttfamily static gboolean gst\+\_\+tensor\+\_\+aggregator\+\_\+sink\+\_\+query (\begin{DoxyParamCaption}\item[{Gst\+Pad $\ast$}]{pad,  }\item[{Gst\+Object $\ast$}]{parent,  }\item[{Gst\+Query $\ast$}]{query }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



This function handles sink pad query. 



Definition at line 434 of file gsttensor\+\_\+aggregator.\+c.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_a3b48721a4c6e30e1d21cfed962106d71_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{gsttensor__aggregator_8c_a3b48721a4c6e30e1d21cfed962106d71_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{gsttensor__aggregator_8c_af45b45bf4d1d8716d4a51d294c2db189}\label{gsttensor__aggregator_8c_af45b45bf4d1d8716d4a51d294c2db189}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!gst\_tensor\_aggregator\_src\_query@{gst\_tensor\_aggregator\_src\_query}}
\index{gst\_tensor\_aggregator\_src\_query@{gst\_tensor\_aggregator\_src\_query}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{gst\_tensor\_aggregator\_src\_query()}{gst\_tensor\_aggregator\_src\_query()}}
{\footnotesize\ttfamily static gboolean gst\+\_\+tensor\+\_\+aggregator\+\_\+src\+\_\+query (\begin{DoxyParamCaption}\item[{Gst\+Pad $\ast$}]{pad,  }\item[{Gst\+Object $\ast$}]{parent,  }\item[{Gst\+Query $\ast$}]{query }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



This function handles src pad query. 



Definition at line 487 of file gsttensor\+\_\+aggregator.\+c.

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


\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{gsttensor__aggregator_8c_a26e2485c5fd610ac13e266fb32008cf7}\label{gsttensor__aggregator_8c_a26e2485c5fd610ac13e266fb32008cf7}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!sink\_template@{sink\_template}}
\index{sink\_template@{sink\_template}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{sink\_template}{sink\_template}}
{\footnotesize\ttfamily Gst\+Static\+Pad\+Template sink\+\_\+template\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= GST\_STATIC\_PAD\_TEMPLATE (\textcolor{stringliteral}{"sink"},}
\DoxyCodeLine{    GST\_PAD\_SINK,}
\DoxyCodeLine{    GST\_PAD\_ALWAYS,}
\DoxyCodeLine{    GST\_STATIC\_CAPS (\mbox{\hyperlink{gsttensor__aggregator_8c_aa2d8b0bc5c1225ba8d7f84e235c1cf0d}{CAPS\_STRING}}))}

\end{DoxyCode}


Template for sink pad. 



Definition at line 111 of file gsttensor\+\_\+aggregator.\+c.

\mbox{\Hypertarget{gsttensor__aggregator_8c_a643731249f31c7864f3fb8d64d41a373}\label{gsttensor__aggregator_8c_a643731249f31c7864f3fb8d64d41a373}} 
\index{gsttensor\_aggregator.c@{gsttensor\_aggregator.c}!src\_template@{src\_template}}
\index{src\_template@{src\_template}!gsttensor\_aggregator.c@{gsttensor\_aggregator.c}}
\doxysubsubsection{\texorpdfstring{src\_template}{src\_template}}
{\footnotesize\ttfamily Gst\+Static\+Pad\+Template src\+\_\+template\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= GST\_STATIC\_PAD\_TEMPLATE (\textcolor{stringliteral}{"src"},}
\DoxyCodeLine{    GST\_PAD\_SRC,}
\DoxyCodeLine{    GST\_PAD\_ALWAYS,}
\DoxyCodeLine{    GST\_STATIC\_CAPS (\mbox{\hyperlink{gsttensor__aggregator_8c_aa2d8b0bc5c1225ba8d7f84e235c1cf0d}{CAPS\_STRING}}))}

\end{DoxyCode}


Template for src pad. 



Definition at line 119 of file gsttensor\+\_\+aggregator.\+c.

