\hypertarget{group___mmal_component}{}\section{Components}
\label{group___mmal_component}\index{Components@{Components}}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \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}
\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group___mmal_component_ga5df6bff84b8bba3671e7737a74564839}{}typedef struct \hyperlink{struct_m_m_a_l___c_o_m_p_o_n_e_n_t___p_r_i_v_a_t_e___t}{M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+P\+R\+I\+V\+A\+T\+E\+\_\+\+T} {\bfseries M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+P\+R\+I\+V\+A\+T\+E\+\_\+\+T}\label{group___mmal_component_ga5df6bff84b8bba3671e7737a74564839}

\item 
typedef struct \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} \hyperlink{group___mmal_component_gaf5ed901e991d2eb29436d01574aceddc}{M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T}
\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_component_ga402fecd9fa4f1d1b76e724eec5fe93b9}{mmal\+\_\+component\+\_\+create} (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 
void \hyperlink{group___mmal_component_gafe636b68a89f7649d8fa0220632f4b33}{mmal\+\_\+component\+\_\+acquire} (\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_component_gaa5c8101517f0ba635c7fabc7dda561e4}{mmal\+\_\+component\+\_\+release} (\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_component_ga25c289404703b6a348fe1c1880fe3f5f}{mmal\+\_\+component\+\_\+destroy} (\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_component_ga8f3de5407c032faa0af3c0c3aaba235a}{mmal\+\_\+component\+\_\+enable} (\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_component_ga9477827891cb5a2a5c77fb23dd4ea7d9}{mmal\+\_\+component\+\_\+disable} (\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)
\end{DoxyCompactItemize}


\subsection{Detailed Description}
Definition of a M\+M\+A\+L component and its associated A\+P\+I. A component will always expose ports which it uses to send and receive data in the form of buffer headers (\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}) 

\subsection{Typedef Documentation}
\hypertarget{group___mmal_component_gaf5ed901e991d2eb29436d01574aceddc}{}\index{Components@{Components}!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}}
\index{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}!Components@{Components}}
\subsubsection[{M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T}  {\bf M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T}}\label{group___mmal_component_gaf5ed901e991d2eb29436d01574aceddc}
Definition of a component. 

\subsection{Function Documentation}
\hypertarget{group___mmal_component_gafe636b68a89f7649d8fa0220632f4b33}{}\index{Components@{Components}!mmal\+\_\+component\+\_\+acquire@{mmal\+\_\+component\+\_\+acquire}}
\index{mmal\+\_\+component\+\_\+acquire@{mmal\+\_\+component\+\_\+acquire}!Components@{Components}}
\subsubsection[{mmal\+\_\+component\+\_\+acquire}]{\setlength{\rightskip}{0pt plus 5cm}void mmal\+\_\+component\+\_\+acquire (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T} $\ast$}]{component}
\end{DoxyParamCaption}
)}\label{group___mmal_component_gafe636b68a89f7649d8fa0220632f4b33}
Acquire a reference on a component. Acquiring a reference on a component will prevent a component from being destroyed until the acquired reference is released (by a call to \hyperlink{group___mmal_component_ga25c289404703b6a348fe1c1880fe3f5f}{mmal\+\_\+component\+\_\+destroy}). References are internally counted so all acquired references need a matching call to release them.


\begin{DoxyParams}{Parameters}
{\em component} & component to acquire \\
\hline
\end{DoxyParams}
\hypertarget{group___mmal_component_ga402fecd9fa4f1d1b76e724eec5fe93b9}{}\index{Components@{Components}!mmal\+\_\+component\+\_\+create@{mmal\+\_\+component\+\_\+create}}
\index{mmal\+\_\+component\+\_\+create@{mmal\+\_\+component\+\_\+create}!Components@{Components}}
\subsubsection[{mmal\+\_\+component\+\_\+create}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} mmal\+\_\+component\+\_\+create (
\begin{DoxyParamCaption}
\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_component_ga402fecd9fa4f1d1b76e724eec5fe93b9}
Create an instance of a component. The newly created component will expose ports to the client. All the exposed ports are disabled by default. Note that components are reference counted and creating a component automatically acquires a reference to it (released when \hyperlink{group___mmal_component_ga25c289404703b6a348fe1c1880fe3f5f}{mmal\+\_\+component\+\_\+destroy} is called).


\begin{DoxyParams}{Parameters}
{\em name} & name of the component to create, e.\+g. \char`\"{}video\+\_\+decode\char`\"{} \\
\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_component_ga25c289404703b6a348fe1c1880fe3f5f}{}\index{Components@{Components}!mmal\+\_\+component\+\_\+destroy@{mmal\+\_\+component\+\_\+destroy}}
\index{mmal\+\_\+component\+\_\+destroy@{mmal\+\_\+component\+\_\+destroy}!Components@{Components}}
\subsubsection[{mmal\+\_\+component\+\_\+destroy}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} mmal\+\_\+component\+\_\+destroy (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T} $\ast$}]{component}
\end{DoxyParamCaption}
)}\label{group___mmal_component_ga25c289404703b6a348fe1c1880fe3f5f}
Destroy a previously created component Release an acquired reference on a component. Only actually destroys the component when the last reference is being released.


\begin{DoxyParams}{Parameters}
{\em component} & component 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_component_ga9477827891cb5a2a5c77fb23dd4ea7d9}{}\index{Components@{Components}!mmal\+\_\+component\+\_\+disable@{mmal\+\_\+component\+\_\+disable}}
\index{mmal\+\_\+component\+\_\+disable@{mmal\+\_\+component\+\_\+disable}!Components@{Components}}
\subsubsection[{mmal\+\_\+component\+\_\+disable}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} mmal\+\_\+component\+\_\+disable (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T} $\ast$}]{component}
\end{DoxyParamCaption}
)}\label{group___mmal_component_ga9477827891cb5a2a5c77fb23dd4ea7d9}
Disable processing on a component 
\begin{DoxyParams}{Parameters}
{\em component} & component to disable \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
M\+M\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S on success 
\end{DoxyReturn}
\hypertarget{group___mmal_component_ga8f3de5407c032faa0af3c0c3aaba235a}{}\index{Components@{Components}!mmal\+\_\+component\+\_\+enable@{mmal\+\_\+component\+\_\+enable}}
\index{mmal\+\_\+component\+\_\+enable@{mmal\+\_\+component\+\_\+enable}!Components@{Components}}
\subsubsection[{mmal\+\_\+component\+\_\+enable}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} mmal\+\_\+component\+\_\+enable (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T} $\ast$}]{component}
\end{DoxyParamCaption}
)}\label{group___mmal_component_ga8f3de5407c032faa0af3c0c3aaba235a}
Enable processing on a component 
\begin{DoxyParams}{Parameters}
{\em component} & component to enable \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
M\+M\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S on success 
\end{DoxyReturn}
\hypertarget{group___mmal_component_gaa5c8101517f0ba635c7fabc7dda561e4}{}\index{Components@{Components}!mmal\+\_\+component\+\_\+release@{mmal\+\_\+component\+\_\+release}}
\index{mmal\+\_\+component\+\_\+release@{mmal\+\_\+component\+\_\+release}!Components@{Components}}
\subsubsection[{mmal\+\_\+component\+\_\+release}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} mmal\+\_\+component\+\_\+release (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+C\+O\+M\+P\+O\+N\+E\+N\+T\+\_\+\+T} $\ast$}]{component}
\end{DoxyParamCaption}
)}\label{group___mmal_component_gaa5c8101517f0ba635c7fabc7dda561e4}
Release a reference on a component Release an acquired reference on a component. Triggers the destruction of the component when the last reference is being released. \begin{DoxyNote}{Note}
This is in fact an alias of \hyperlink{group___mmal_component_ga25c289404703b6a348fe1c1880fe3f5f}{mmal\+\_\+component\+\_\+destroy} which is added to make client code clearer.
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em component} & component to release \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
M\+M\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S on success 
\end{DoxyReturn}
