\hypertarget{group___mmal_graph_utility}{}\section{Graph Utility}
\label{group___mmal_graph_utility}\index{Graph Utility@{Graph Utility}}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{struct_m_m_a_l___g_r_a_p_h___t}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T}
\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \hyperlink{struct_m_m_a_l___g_r_a_p_h___t}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} \hyperlink{group___mmal_graph_utility_ga36f47a6b5a9c8234259ae7ccbc20e970}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T}
\item 
typedef void($\ast$ \hyperlink{group___mmal_graph_utility_ga609a5b8d55bb195e6894c683f2e9ebd0}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+E\+V\+E\+N\+T\+\_\+\+C\+B}) (\hyperlink{struct_m_m_a_l___g_r_a_p_h___t}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$graph, \hyperlink{struct_m_m_a_l___p_o_r_t___t}{M\+M\+A\+L\+\_\+\+P\+O\+R\+T\+\_\+\+T} $\ast$port, \hyperlink{struct_m_m_a_l___b_u_f_f_e_r___h_e_a_d_e_r___t}{M\+M\+A\+L\+\_\+\+B\+U\+F\+F\+E\+R\+\_\+\+H\+E\+A\+D\+E\+R\+\_\+\+T} $\ast$buffer, void $\ast$cb\+\_\+data)
\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \hyperlink{group___mmal_graph_utility_gacea56e55a5142b02684855c5eece9567}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+T} \{ \hyperlink{group___mmal_graph_utility_ggacea56e55a5142b02684855c5eece9567a4b87cda1b7af926fec78dc2d2b899a51}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+A\+L\+L} = 0, 
\hyperlink{group___mmal_graph_utility_ggacea56e55a5142b02684855c5eece9567a621dd62abc57a0851f79d3c1c26f5eb6}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+S\+T\+R\+A\+I\+G\+H\+T}, 
\hyperlink{group___mmal_graph_utility_ggacea56e55a5142b02684855c5eece9567af00a4b9bd7bfdbc953e8ef97dae594b3}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+C\+U\+S\+T\+O\+M}, 
{\bfseries M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+M\+A\+X}
 \}
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group___mmal_types_ga5ac87230bd615d2b154a9d5899bc37fd}{M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} \hyperlink{group___mmal_graph_utility_ga04afb47c1f1b61d0d060191c95c957c3}{mmal\+\_\+graph\+\_\+create} (\hyperlink{struct_m_m_a_l___g_r_a_p_h___t}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$$\ast$graph, unsigned int userdata\+\_\+size)
\item 
\hyperlink{group___mmal_types_ga5ac87230bd615d2b154a9d5899bc37fd}{M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} \hyperlink{group___mmal_graph_utility_ga941fb4765423f08d3b067c7280694715}{mmal\+\_\+graph\+\_\+add\+\_\+component} (\hyperlink{struct_m_m_a_l___g_r_a_p_h___t}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$graph, \hyperlink{struct_m_m_a_l___c_o_m_p_o_n_e_n_t___t}{M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T} $\ast$component)
\item 
\hyperlink{group___mmal_types_ga5ac87230bd615d2b154a9d5899bc37fd}{M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} \hyperlink{group___mmal_graph_utility_gaeefd7e080477b09927130e2f1e39fca9}{mmal\+\_\+graph\+\_\+component\+\_\+topology} (\hyperlink{struct_m_m_a_l___g_r_a_p_h___t}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$graph, \hyperlink{struct_m_m_a_l___c_o_m_p_o_n_e_n_t___t}{M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T} $\ast$component, \hyperlink{group___mmal_graph_utility_gacea56e55a5142b02684855c5eece9567}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+T} topology, int8\+\_\+t $\ast$input, unsigned int input\+\_\+num, int8\+\_\+t $\ast$output, unsigned int output\+\_\+num)
\item 
\hyperlink{group___mmal_types_ga5ac87230bd615d2b154a9d5899bc37fd}{M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} \hyperlink{group___mmal_graph_utility_ga31109e779a2eaebb6e983a6f524ed951}{mmal\+\_\+graph\+\_\+add\+\_\+port} (\hyperlink{struct_m_m_a_l___g_r_a_p_h___t}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$graph, \hyperlink{struct_m_m_a_l___p_o_r_t___t}{M\+M\+A\+L\+\_\+\+P\+O\+R\+T\+\_\+\+T} $\ast$port)
\item 
\hyperlink{group___mmal_types_ga5ac87230bd615d2b154a9d5899bc37fd}{M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} \hyperlink{group___mmal_graph_utility_gade18906c86d98c6a2bd4f59cc505ca35}{mmal\+\_\+graph\+\_\+add\+\_\+connection} (\hyperlink{struct_m_m_a_l___g_r_a_p_h___t}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$graph, \hyperlink{struct_m_m_a_l___c_o_n_n_e_c_t_i_o_n___t}{M\+M\+A\+L\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+T} $\ast$connection)
\item 
\hyperlink{group___mmal_types_ga5ac87230bd615d2b154a9d5899bc37fd}{M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} \hyperlink{group___mmal_graph_utility_ga2b5a2aa4b9db34d084b6c292a845bbcb}{mmal\+\_\+graph\+\_\+new\+\_\+component} (\hyperlink{struct_m_m_a_l___g_r_a_p_h___t}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$graph, const char $\ast$name, \hyperlink{struct_m_m_a_l___c_o_m_p_o_n_e_n_t___t}{M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T} $\ast$$\ast$component)
\item 
\hyperlink{group___mmal_types_ga5ac87230bd615d2b154a9d5899bc37fd}{M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} \hyperlink{group___mmal_graph_utility_ga9aa924fffe1013dabd3d492c45ff1d93}{mmal\+\_\+graph\+\_\+new\+\_\+connection} (\hyperlink{struct_m_m_a_l___g_r_a_p_h___t}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$graph, \hyperlink{struct_m_m_a_l___p_o_r_t___t}{M\+M\+A\+L\+\_\+\+P\+O\+R\+T\+\_\+\+T} $\ast$out, \hyperlink{struct_m_m_a_l___p_o_r_t___t}{M\+M\+A\+L\+\_\+\+P\+O\+R\+T\+\_\+\+T} $\ast$in, uint32\+\_\+t flags, \hyperlink{struct_m_m_a_l___c_o_n_n_e_c_t_i_o_n___t}{M\+M\+A\+L\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+T} $\ast$$\ast$connection)
\item 
\hyperlink{group___mmal_types_ga5ac87230bd615d2b154a9d5899bc37fd}{M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} \hyperlink{group___mmal_graph_utility_ga61ed23bba8b68f63a5dbe639fb485bbd}{mmal\+\_\+graph\+\_\+enable} (\hyperlink{struct_m_m_a_l___g_r_a_p_h___t}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$graph, \hyperlink{group___mmal_graph_utility_ga609a5b8d55bb195e6894c683f2e9ebd0}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+E\+V\+E\+N\+T\+\_\+\+C\+B} cb, void $\ast$cb\+\_\+data)
\item 
\hypertarget{group___mmal_graph_utility_ga159c375ec89be0d07ead38379152b6c8}{}\hyperlink{group___mmal_types_ga5ac87230bd615d2b154a9d5899bc37fd}{M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} {\bfseries mmal\+\_\+graph\+\_\+disable} (\hyperlink{struct_m_m_a_l___g_r_a_p_h___t}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$graph)\label{group___mmal_graph_utility_ga159c375ec89be0d07ead38379152b6c8}

\item 
\hyperlink{struct_m_m_a_l___p_o_r_t___t}{M\+M\+A\+L\+\_\+\+P\+O\+R\+T\+\_\+\+T} $\ast$ \hyperlink{group___mmal_graph_utility_ga0f17908c53afc4381b019214b3f448e6}{mmal\+\_\+graph\+\_\+find\+\_\+port} (\hyperlink{struct_m_m_a_l___g_r_a_p_h___t}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$graph, const char $\ast$name, \hyperlink{group___mmal_port_gafcd53d504d5e497ee9932be2aee0154a}{M\+M\+A\+L\+\_\+\+P\+O\+R\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+T} type, unsigned index)
\item 
\hyperlink{group___mmal_types_ga5ac87230bd615d2b154a9d5899bc37fd}{M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} \hyperlink{group___mmal_graph_utility_ga198cdd10aa1931380f382941aceeb409}{mmal\+\_\+graph\+\_\+build} (\hyperlink{struct_m_m_a_l___g_r_a_p_h___t}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$ctx, const char $\ast$name, \hyperlink{struct_m_m_a_l___c_o_m_p_o_n_e_n_t___t}{M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T} $\ast$$\ast$component)
\item 
\hyperlink{group___mmal_types_ga5ac87230bd615d2b154a9d5899bc37fd}{M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} \hyperlink{group___mmal_graph_utility_ga79262fdc44352ee2e1544d8452a01464}{mmal\+\_\+graph\+\_\+component\+\_\+constructor} (const char $\ast$name, \hyperlink{struct_m_m_a_l___c_o_m_p_o_n_e_n_t___t}{M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T} $\ast$component)
\item 
\hyperlink{group___mmal_types_ga5ac87230bd615d2b154a9d5899bc37fd}{M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} \hyperlink{group___mmal_graph_utility_ga41c51ae825fd27b1879fa393bcdc722b}{mmal\+\_\+graph\+\_\+destroy} (\hyperlink{struct_m_m_a_l___g_r_a_p_h___t}{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$ctx)
\end{DoxyCompactItemize}


\subsection{Detailed Description}
The graph utility functions allows one to easily create graphs of M\+M\+A\+L components. 

\subsection{Typedef Documentation}
\hypertarget{group___mmal_graph_utility_ga609a5b8d55bb195e6894c683f2e9ebd0}{}\index{Graph Utility@{Graph Utility}!M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+E\+V\+E\+N\+T\+\_\+\+C\+B@{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+E\+V\+E\+N\+T\+\_\+\+C\+B}}
\index{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+E\+V\+E\+N\+T\+\_\+\+C\+B@{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+E\+V\+E\+N\+T\+\_\+\+C\+B}!Graph Utility@{Graph Utility}}
\subsubsection[{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+E\+V\+E\+N\+T\+\_\+\+C\+B}]{\setlength{\rightskip}{0pt plus 5cm}typedef void($\ast$ M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+E\+V\+E\+N\+T\+\_\+\+C\+B) ({\bf M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$graph, {\bf M\+M\+A\+L\+\_\+\+P\+O\+R\+T\+\_\+\+T} $\ast$port, {\bf M\+M\+A\+L\+\_\+\+B\+U\+F\+F\+E\+R\+\_\+\+H\+E\+A\+D\+E\+R\+\_\+\+T} $\ast$buffer, void $\ast$cb\+\_\+data)}\label{group___mmal_graph_utility_ga609a5b8d55bb195e6894c683f2e9ebd0}
Definition of the callback used by a graph to send events to the client.


\begin{DoxyParams}{Parameters}
{\em graph} & the graph sending the event \\
\hline
{\em port} & the port which generated the event \\
\hline
{\em buffer} & the buffer header containing the event data \\
\hline
{\em cb\+\_\+data} & data passed back to the client when the callback is invoked \\
\hline
\end{DoxyParams}
\hypertarget{group___mmal_graph_utility_ga36f47a6b5a9c8234259ae7ccbc20e970}{}\index{Graph Utility@{Graph Utility}!M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T@{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T}}
\index{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T@{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T}!Graph Utility@{Graph Utility}}
\subsubsection[{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T}  {\bf M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T}}\label{group___mmal_graph_utility_ga36f47a6b5a9c8234259ae7ccbc20e970}
Structure describing a graph 

\subsection{Enumeration Type Documentation}
\hypertarget{group___mmal_graph_utility_gacea56e55a5142b02684855c5eece9567}{}\index{Graph Utility@{Graph Utility}!M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+T@{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+T}}
\index{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+T@{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+T}!Graph Utility@{Graph Utility}}
\subsubsection[{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+T}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+T}}\label{group___mmal_graph_utility_gacea56e55a5142b02684855c5eece9567}
List of topology types \begin{Desc}
\item[Enumerator]\par
\begin{description}
\index{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+A\+L\+L@{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+A\+L\+L}!Graph Utility@{Graph Utility}}\index{Graph Utility@{Graph Utility}!M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+A\+L\+L@{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+A\+L\+L}}\item[{\em 
\hypertarget{group___mmal_graph_utility_ggacea56e55a5142b02684855c5eece9567a4b87cda1b7af926fec78dc2d2b899a51}{}M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+A\+L\+L\label{group___mmal_graph_utility_ggacea56e55a5142b02684855c5eece9567a4b87cda1b7af926fec78dc2d2b899a51}
}]All input ports and output ports are linked \index{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+S\+T\+R\+A\+I\+G\+H\+T@{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+S\+T\+R\+A\+I\+G\+H\+T}!Graph Utility@{Graph Utility}}\index{Graph Utility@{Graph Utility}!M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+S\+T\+R\+A\+I\+G\+H\+T@{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+S\+T\+R\+A\+I\+G\+H\+T}}\item[{\em 
\hypertarget{group___mmal_graph_utility_ggacea56e55a5142b02684855c5eece9567a621dd62abc57a0851f79d3c1c26f5eb6}{}M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+S\+T\+R\+A\+I\+G\+H\+T\label{group___mmal_graph_utility_ggacea56e55a5142b02684855c5eece9567a621dd62abc57a0851f79d3c1c26f5eb6}
}]Input ports and output ports of the same index are linked \index{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+C\+U\+S\+T\+O\+M@{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+C\+U\+S\+T\+O\+M}!Graph Utility@{Graph Utility}}\index{Graph Utility@{Graph Utility}!M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+C\+U\+S\+T\+O\+M@{M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+C\+U\+S\+T\+O\+M}}\item[{\em 
\hypertarget{group___mmal_graph_utility_ggacea56e55a5142b02684855c5eece9567af00a4b9bd7bfdbc953e8ef97dae594b3}{}M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+C\+U\+S\+T\+O\+M\label{group___mmal_graph_utility_ggacea56e55a5142b02684855c5eece9567af00a4b9bd7bfdbc953e8ef97dae594b3}
}]Custom defined topology \end{description}
\end{Desc}


\subsection{Function Documentation}
\hypertarget{group___mmal_graph_utility_ga941fb4765423f08d3b067c7280694715}{}\index{Graph Utility@{Graph Utility}!mmal\+\_\+graph\+\_\+add\+\_\+component@{mmal\+\_\+graph\+\_\+add\+\_\+component}}
\index{mmal\+\_\+graph\+\_\+add\+\_\+component@{mmal\+\_\+graph\+\_\+add\+\_\+component}!Graph Utility@{Graph Utility}}
\subsubsection[{mmal\+\_\+graph\+\_\+add\+\_\+component}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} mmal\+\_\+graph\+\_\+add\+\_\+component (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$}]{graph, }
\item[{{\bf M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T} $\ast$}]{component}
\end{DoxyParamCaption}
)}\label{group___mmal_graph_utility_ga941fb4765423f08d3b067c7280694715}
Add a component to a graph. Allows the client to add a component to the graph.


\begin{DoxyParams}{Parameters}
{\em graph} & instance of the graph \\
\hline
{\em component} & component to add to a graph \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
M\+M\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S on success 
\end{DoxyReturn}
\hypertarget{group___mmal_graph_utility_gade18906c86d98c6a2bd4f59cc505ca35}{}\index{Graph Utility@{Graph Utility}!mmal\+\_\+graph\+\_\+add\+\_\+connection@{mmal\+\_\+graph\+\_\+add\+\_\+connection}}
\index{mmal\+\_\+graph\+\_\+add\+\_\+connection@{mmal\+\_\+graph\+\_\+add\+\_\+connection}!Graph Utility@{Graph Utility}}
\subsubsection[{mmal\+\_\+graph\+\_\+add\+\_\+connection}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} mmal\+\_\+graph\+\_\+add\+\_\+connection (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$}]{graph, }
\item[{{\bf M\+M\+A\+L\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+T} $\ast$}]{connection}
\end{DoxyParamCaption}
)}\label{group___mmal_graph_utility_gade18906c86d98c6a2bd4f59cc505ca35}
Add a connection to a graph. Allows the client to add an internal connection to a graph.


\begin{DoxyParams}{Parameters}
{\em graph} & instance of the graph \\
\hline
{\em connection} & connection to add to the graph \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
M\+M\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S on success 
\end{DoxyReturn}
\hypertarget{group___mmal_graph_utility_ga31109e779a2eaebb6e983a6f524ed951}{}\index{Graph Utility@{Graph Utility}!mmal\+\_\+graph\+\_\+add\+\_\+port@{mmal\+\_\+graph\+\_\+add\+\_\+port}}
\index{mmal\+\_\+graph\+\_\+add\+\_\+port@{mmal\+\_\+graph\+\_\+add\+\_\+port}!Graph Utility@{Graph Utility}}
\subsubsection[{mmal\+\_\+graph\+\_\+add\+\_\+port}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} mmal\+\_\+graph\+\_\+add\+\_\+port (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$}]{graph, }
\item[{{\bf M\+M\+A\+L\+\_\+\+P\+O\+R\+T\+\_\+\+T} $\ast$}]{port}
\end{DoxyParamCaption}
)}\label{group___mmal_graph_utility_ga31109e779a2eaebb6e983a6f524ed951}
Add a port to a graph. Allows the client to add an input or output port to a graph. The given port will effectively become an end point for the graph.


\begin{DoxyParams}{Parameters}
{\em graph} & instance of the graph \\
\hline
{\em port} & port to add to the graph \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
M\+M\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S on success 
\end{DoxyReturn}
\hypertarget{group___mmal_graph_utility_ga198cdd10aa1931380f382941aceeb409}{}\index{Graph Utility@{Graph Utility}!mmal\+\_\+graph\+\_\+build@{mmal\+\_\+graph\+\_\+build}}
\index{mmal\+\_\+graph\+\_\+build@{mmal\+\_\+graph\+\_\+build}!Graph Utility@{Graph Utility}}
\subsubsection[{mmal\+\_\+graph\+\_\+build}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} mmal\+\_\+graph\+\_\+build (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$}]{ctx, }
\item[{const char $\ast$}]{name, }
\item[{{\bf M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T} $\ast$$\ast$}]{component}
\end{DoxyParamCaption}
)}\label{group___mmal_graph_utility_ga198cdd10aa1931380f382941aceeb409}
Create an instance of a component from a graph. The newly created component will expose input and output ports to the client. Not that all the exposed ports will be in a disabled state by default.


\begin{DoxyParams}{Parameters}
{\em graph} & graph to create the component from \\
\hline
{\em name} & name of the component to create \\
\hline
{\em component} & returned component \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
M\+M\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S on success 
\end{DoxyReturn}
\hypertarget{group___mmal_graph_utility_ga79262fdc44352ee2e1544d8452a01464}{}\index{Graph Utility@{Graph Utility}!mmal\+\_\+graph\+\_\+component\+\_\+constructor@{mmal\+\_\+graph\+\_\+component\+\_\+constructor}}
\index{mmal\+\_\+graph\+\_\+component\+\_\+constructor@{mmal\+\_\+graph\+\_\+component\+\_\+constructor}!Graph Utility@{Graph Utility}}
\subsubsection[{mmal\+\_\+graph\+\_\+component\+\_\+constructor}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} mmal\+\_\+graph\+\_\+component\+\_\+constructor (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{name, }
\item[{{\bf M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T} $\ast$}]{component}
\end{DoxyParamCaption}
)}\label{group___mmal_graph_utility_ga79262fdc44352ee2e1544d8452a01464}
Component constructor for a graph. F\+I\+X\+M\+E\+: private function


\begin{DoxyParams}{Parameters}
{\em name} & name of the component to create \\
\hline
{\em component} & component \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
M\+M\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S on success 
\end{DoxyReturn}
\hypertarget{group___mmal_graph_utility_gaeefd7e080477b09927130e2f1e39fca9}{}\index{Graph Utility@{Graph Utility}!mmal\+\_\+graph\+\_\+component\+\_\+topology@{mmal\+\_\+graph\+\_\+component\+\_\+topology}}
\index{mmal\+\_\+graph\+\_\+component\+\_\+topology@{mmal\+\_\+graph\+\_\+component\+\_\+topology}!Graph Utility@{Graph Utility}}
\subsubsection[{mmal\+\_\+graph\+\_\+component\+\_\+topology}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} mmal\+\_\+graph\+\_\+component\+\_\+topology (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$}]{graph, }
\item[{{\bf M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T} $\ast$}]{component, }
\item[{{\bf M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+T}}]{topology, }
\item[{int8\+\_\+t $\ast$}]{input, }
\item[{unsigned int}]{input\+\_\+num, }
\item[{int8\+\_\+t $\ast$}]{output, }
\item[{unsigned int}]{output\+\_\+num}
\end{DoxyParamCaption}
)}\label{group___mmal_graph_utility_gaeefd7e080477b09927130e2f1e39fca9}
Describe the topology of the ports of a component. Allows the client to describe the topology of a component. This information is used by the graph to choose which action to perform when enabling / disabling / committing / flushing a port exposed by the graph. Note that by default the topology of a component is set to M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y\+\_\+\+A\+L\+L.


\begin{DoxyParams}{Parameters}
{\em graph} & instance of the graph \\
\hline
{\em component} & component to describe \\
\hline
{\em topology} & type of topology used by this component \\
\hline
{\em input} & output index (or -\/1 if sink) linked to each input port \\
\hline
{\em input\+\_\+num} & number of indexes in the input list \\
\hline
{\em output} & input index (or -\/1 if source) linked to each output port \\
\hline
{\em output\+\_\+num} & number of indexes in the output list \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
M\+M\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S on success 
\end{DoxyReturn}
\hypertarget{group___mmal_graph_utility_ga04afb47c1f1b61d0d060191c95c957c3}{}\index{Graph Utility@{Graph Utility}!mmal\+\_\+graph\+\_\+create@{mmal\+\_\+graph\+\_\+create}}
\index{mmal\+\_\+graph\+\_\+create@{mmal\+\_\+graph\+\_\+create}!Graph Utility@{Graph Utility}}
\subsubsection[{mmal\+\_\+graph\+\_\+create}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} mmal\+\_\+graph\+\_\+create (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$$\ast$}]{graph, }
\item[{unsigned int}]{userdata\+\_\+size}
\end{DoxyParamCaption}
)}\label{group___mmal_graph_utility_ga04afb47c1f1b61d0d060191c95c957c3}
Create an instance of a graph. The newly created graph will need to be populated by the client.


\begin{DoxyParams}{Parameters}
{\em graph} & returned graph \\
\hline
{\em userdata\+\_\+size} & size to be allocated for the userdata field \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
M\+M\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S on success 
\end{DoxyReturn}
\hypertarget{group___mmal_graph_utility_ga41c51ae825fd27b1879fa393bcdc722b}{}\index{Graph Utility@{Graph Utility}!mmal\+\_\+graph\+\_\+destroy@{mmal\+\_\+graph\+\_\+destroy}}
\index{mmal\+\_\+graph\+\_\+destroy@{mmal\+\_\+graph\+\_\+destroy}!Graph Utility@{Graph Utility}}
\subsubsection[{mmal\+\_\+graph\+\_\+destroy}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} mmal\+\_\+graph\+\_\+destroy (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$}]{ctx}
\end{DoxyParamCaption}
)}\label{group___mmal_graph_utility_ga41c51ae825fd27b1879fa393bcdc722b}
Destroy a previously created graph 
\begin{DoxyParams}{Parameters}
{\em graph} & graph to destroy \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
M\+M\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S on success 
\end{DoxyReturn}
\hypertarget{group___mmal_graph_utility_ga61ed23bba8b68f63a5dbe639fb485bbd}{}\index{Graph Utility@{Graph Utility}!mmal\+\_\+graph\+\_\+enable@{mmal\+\_\+graph\+\_\+enable}}
\index{mmal\+\_\+graph\+\_\+enable@{mmal\+\_\+graph\+\_\+enable}!Graph Utility@{Graph Utility}}
\subsubsection[{mmal\+\_\+graph\+\_\+enable}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} mmal\+\_\+graph\+\_\+enable (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$}]{graph, }
\item[{{\bf M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+E\+V\+E\+N\+T\+\_\+\+C\+B}}]{cb, }
\item[{void $\ast$}]{cb\+\_\+data}
\end{DoxyParamCaption}
)}\label{group___mmal_graph_utility_ga61ed23bba8b68f63a5dbe639fb485bbd}
Enable the graph and start processing.


\begin{DoxyParams}{Parameters}
{\em graph} & the graph to enable \\
\hline
{\em cb} & the callback to invoke when an event occurs on any of the internal control ports \\
\hline
{\em cb\+\_\+data} & data passed back to the client when the callback is invoked\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
M\+M\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S on success 
\end{DoxyReturn}
\hypertarget{group___mmal_graph_utility_ga0f17908c53afc4381b019214b3f448e6}{}\index{Graph Utility@{Graph Utility}!mmal\+\_\+graph\+\_\+find\+\_\+port@{mmal\+\_\+graph\+\_\+find\+\_\+port}}
\index{mmal\+\_\+graph\+\_\+find\+\_\+port@{mmal\+\_\+graph\+\_\+find\+\_\+port}!Graph Utility@{Graph Utility}}
\subsubsection[{mmal\+\_\+graph\+\_\+find\+\_\+port}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+P\+O\+R\+T\+\_\+\+T}$\ast$ mmal\+\_\+graph\+\_\+find\+\_\+port (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$}]{graph, }
\item[{const char $\ast$}]{name, }
\item[{{\bf M\+M\+A\+L\+\_\+\+P\+O\+R\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+T}}]{type, }
\item[{unsigned}]{index}
\end{DoxyParamCaption}
)}\label{group___mmal_graph_utility_ga0f17908c53afc4381b019214b3f448e6}
Find a port in the graph.


\begin{DoxyParams}{Parameters}
{\em graph} & graph instance \\
\hline
{\em name} & name of the component of interest \\
\hline
{\em type} & type of port (in/out) \\
\hline
{\em index} & which port index within the component\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
port, or N\+U\+L\+L if not found 
\end{DoxyReturn}
\hypertarget{group___mmal_graph_utility_ga2b5a2aa4b9db34d084b6c292a845bbcb}{}\index{Graph Utility@{Graph Utility}!mmal\+\_\+graph\+\_\+new\+\_\+component@{mmal\+\_\+graph\+\_\+new\+\_\+component}}
\index{mmal\+\_\+graph\+\_\+new\+\_\+component@{mmal\+\_\+graph\+\_\+new\+\_\+component}!Graph Utility@{Graph Utility}}
\subsubsection[{mmal\+\_\+graph\+\_\+new\+\_\+component}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} mmal\+\_\+graph\+\_\+new\+\_\+component (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$}]{graph, }
\item[{const char $\ast$}]{name, }
\item[{{\bf M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T} $\ast$$\ast$}]{component}
\end{DoxyParamCaption}
)}\label{group___mmal_graph_utility_ga2b5a2aa4b9db34d084b6c292a845bbcb}
Create a new component and add it to a graph. Allows the client to create and add a component to the graph.


\begin{DoxyParams}{Parameters}
{\em graph} & instance of the graph \\
\hline
{\em name} & name of the component to create \\
\hline
{\em component} & if not N\+U\+L\+L, will contain a pointer to the created component \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
M\+M\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S on success 
\end{DoxyReturn}
\hypertarget{group___mmal_graph_utility_ga9aa924fffe1013dabd3d492c45ff1d93}{}\index{Graph Utility@{Graph Utility}!mmal\+\_\+graph\+\_\+new\+\_\+connection@{mmal\+\_\+graph\+\_\+new\+\_\+connection}}
\index{mmal\+\_\+graph\+\_\+new\+\_\+connection@{mmal\+\_\+graph\+\_\+new\+\_\+connection}!Graph Utility@{Graph Utility}}
\subsubsection[{mmal\+\_\+graph\+\_\+new\+\_\+connection}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} mmal\+\_\+graph\+\_\+new\+\_\+connection (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+G\+R\+A\+P\+H\+\_\+\+T} $\ast$}]{graph, }
\item[{{\bf M\+M\+A\+L\+\_\+\+P\+O\+R\+T\+\_\+\+T} $\ast$}]{out, }
\item[{{\bf M\+M\+A\+L\+\_\+\+P\+O\+R\+T\+\_\+\+T} $\ast$}]{in, }
\item[{uint32\+\_\+t}]{flags, }
\item[{{\bf M\+M\+A\+L\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+T} $\ast$$\ast$}]{connection}
\end{DoxyParamCaption}
)}\label{group___mmal_graph_utility_ga9aa924fffe1013dabd3d492c45ff1d93}
Create and add a connection to a graph. Allows the client to create and add an internal connection to a graph.


\begin{DoxyParams}{Parameters}
{\em graph} & instance of the graph \\
\hline
{\em out} & the output port to use for the connection \\
\hline
{\em in} & the input port to use for the connection \\
\hline
{\em flags} & the flags specifying which type of connection should be created \\
\hline
{\em connection} & if not N\+U\+L\+L, will contain a pointer to the created connection \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
M\+M\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S on success 
\end{DoxyReturn}
