\hypertarget{classagora_1_1rtc_1_1_i_video_filter}{}\doxysection{agora\+::rtc\+::I\+Video\+Filter Class Reference}
\label{classagora_1_1rtc_1_1_i_video_filter}\index{agora::rtc::IVideoFilter@{agora::rtc::IVideoFilter}}


{\ttfamily \#include $<$N\+G\+I\+Agora\+Media\+Node.\+h$>$}

Inheritance diagram for agora\+::rtc\+::I\+Video\+Filter\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=4.000000cm]{classagora_1_1rtc_1_1_i_video_filter}
\end{center}
\end{figure}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual void \mbox{\hyperlink{classagora_1_1rtc_1_1_i_video_filter_ad9263aa3d99bdbeeb62649878d46b410}{set\+Enabled}} (bool enable)
\item 
virtual bool \mbox{\hyperlink{classagora_1_1rtc_1_1_i_video_filter_a4c5f3b5dd8839bc9ede19e8abd4d4a07}{is\+Enabled}} ()
\item 
virtual int \mbox{\hyperlink{classagora_1_1rtc_1_1_i_video_filter_a5668a9ffeffa7a41f808eda22c348ca5}{set\+Property}} (const char $\ast$key, const void $\ast$buf, size\+\_\+t buf\+\_\+size)
\item 
virtual int \mbox{\hyperlink{classagora_1_1rtc_1_1_i_video_filter_ace25023628d634acb3b5fef1ef56f724}{get\+Property}} (const char $\ast$key, void $\ast$buf, size\+\_\+t buf\+\_\+size)
\item 
virtual bool \mbox{\hyperlink{classagora_1_1rtc_1_1_i_video_filter_a366c0c1faf83b44af91e0b1ee061b054}{on\+Data\+Stream\+Will\+Start}} ()
\item 
virtual void \mbox{\hyperlink{classagora_1_1rtc_1_1_i_video_filter_aa1f93c239cce08de3b09502a108de0a0}{on\+Data\+Stream\+Will\+Stop}} ()
\item 
virtual bool \mbox{\hyperlink{classagora_1_1rtc_1_1_i_video_filter_a43088843be040e751fd2d26bd284de8e}{is\+External}} ()
\item 
virtual bool \mbox{\hyperlink{classagora_1_1rtc_1_1_i_video_filter_a423710003ed46e4571e477df95090c4f}{is\+Extension\+Filter}} ()
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
The \mbox{\hyperlink{classagora_1_1rtc_1_1_i_video_filter}{I\+Video\+Filter}} class.

This class is the intermediate node for video, which contains both the video source and the video sink. It reads video frames from the underlying video pipeline and writes video frames back after adaptation. 

\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{classagora_1_1rtc_1_1_i_video_filter_ad9263aa3d99bdbeeb62649878d46b410}\label{classagora_1_1rtc_1_1_i_video_filter_ad9263aa3d99bdbeeb62649878d46b410}} 
\index{agora::rtc::IVideoFilter@{agora::rtc::IVideoFilter}!setEnabled@{setEnabled}}
\index{setEnabled@{setEnabled}!agora::rtc::IVideoFilter@{agora::rtc::IVideoFilter}}
\doxysubsubsection{\texorpdfstring{setEnabled()}{setEnabled()}}
{\footnotesize\ttfamily virtual void agora\+::rtc\+::\+I\+Video\+Filter\+::set\+Enabled (\begin{DoxyParamCaption}\item[{bool}]{enable }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

Enables or disables the video filter. 
\begin{DoxyParams}{Parameters}
{\em enable} & Whether to enable the video filter\+:
\begin{DoxyItemize}
\item {\ttfamily true}\+: (Default) Enable the video filter.
\item {\ttfamily false}\+: Do not enable the video filter. If the filter is disabled, frames will be passed without adaption. 
\end{DoxyItemize}\\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classagora_1_1rtc_1_1_i_video_filter_a4c5f3b5dd8839bc9ede19e8abd4d4a07}\label{classagora_1_1rtc_1_1_i_video_filter_a4c5f3b5dd8839bc9ede19e8abd4d4a07}} 
\index{agora::rtc::IVideoFilter@{agora::rtc::IVideoFilter}!isEnabled@{isEnabled}}
\index{isEnabled@{isEnabled}!agora::rtc::IVideoFilter@{agora::rtc::IVideoFilter}}
\doxysubsubsection{\texorpdfstring{isEnabled()}{isEnabled()}}
{\footnotesize\ttfamily virtual bool agora\+::rtc\+::\+I\+Video\+Filter\+::is\+Enabled (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

Checks whether the video filter is enabled. \begin{DoxyReturn}{Returns}

\begin{DoxyItemize}
\item {\ttfamily true}\+: The video filter is enabled.
\item {\ttfamily false}\+: The video filter is not enabled. 
\end{DoxyItemize}
\end{DoxyReturn}
\mbox{\Hypertarget{classagora_1_1rtc_1_1_i_video_filter_a5668a9ffeffa7a41f808eda22c348ca5}\label{classagora_1_1rtc_1_1_i_video_filter_a5668a9ffeffa7a41f808eda22c348ca5}} 
\index{agora::rtc::IVideoFilter@{agora::rtc::IVideoFilter}!setProperty@{setProperty}}
\index{setProperty@{setProperty}!agora::rtc::IVideoFilter@{agora::rtc::IVideoFilter}}
\doxysubsubsection{\texorpdfstring{setProperty()}{setProperty()}}
{\footnotesize\ttfamily virtual int agora\+::rtc\+::\+I\+Video\+Filter\+::set\+Property (\begin{DoxyParamCaption}\item[{const char $\ast$}]{key,  }\item[{const void $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+size }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

Sets a private property in the {\ttfamily \mbox{\hyperlink{classagora_1_1rtc_1_1_i_video_filter}{I\+Video\+Filter}}} class.


\begin{DoxyParams}{Parameters}
{\em key} & The pointer to the property name. \\
\hline
{\em buf} & The pointer to the buffer of this private property. \\
\hline
{\em buf\+\_\+size} & The buffer size of this private property. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}

\begin{DoxyItemize}
\item The actual size of the private property, if the method call succeeds.
\item -\/1, if the method call fails. 
\end{DoxyItemize}
\end{DoxyReturn}
\mbox{\Hypertarget{classagora_1_1rtc_1_1_i_video_filter_ace25023628d634acb3b5fef1ef56f724}\label{classagora_1_1rtc_1_1_i_video_filter_ace25023628d634acb3b5fef1ef56f724}} 
\index{agora::rtc::IVideoFilter@{agora::rtc::IVideoFilter}!getProperty@{getProperty}}
\index{getProperty@{getProperty}!agora::rtc::IVideoFilter@{agora::rtc::IVideoFilter}}
\doxysubsubsection{\texorpdfstring{getProperty()}{getProperty()}}
{\footnotesize\ttfamily virtual int agora\+::rtc\+::\+I\+Video\+Filter\+::get\+Property (\begin{DoxyParamCaption}\item[{const char $\ast$}]{key,  }\item[{void $\ast$}]{buf,  }\item[{size\+\_\+t}]{buf\+\_\+size }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

Gets a private property in the \mbox{\hyperlink{classagora_1_1rtc_1_1_i_video_filter}{I\+Video\+Filter}} class.


\begin{DoxyParams}{Parameters}
{\em key} & The pointer to the property name. \\
\hline
{\em buf} & The pointer to the buffer of this private property. \\
\hline
{\em buf\+\_\+size} & The buffer size of this private property. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}

\begin{DoxyItemize}
\item The actual size of the private property, if the method call succeeds.
\item -\/1, if the method call fails. 
\end{DoxyItemize}
\end{DoxyReturn}
\mbox{\Hypertarget{classagora_1_1rtc_1_1_i_video_filter_a366c0c1faf83b44af91e0b1ee061b054}\label{classagora_1_1rtc_1_1_i_video_filter_a366c0c1faf83b44af91e0b1ee061b054}} 
\index{agora::rtc::IVideoFilter@{agora::rtc::IVideoFilter}!onDataStreamWillStart@{onDataStreamWillStart}}
\index{onDataStreamWillStart@{onDataStreamWillStart}!agora::rtc::IVideoFilter@{agora::rtc::IVideoFilter}}
\doxysubsubsection{\texorpdfstring{onDataStreamWillStart()}{onDataStreamWillStart()}}
{\footnotesize\ttfamily virtual bool agora\+::rtc\+::\+I\+Video\+Filter\+::on\+Data\+Stream\+Will\+Start (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

This function is invoked right before data stream starts. Custom filter can override this function for initialization. \begin{DoxyReturn}{Returns}

\begin{DoxyItemize}
\item {\ttfamily true}\+: The initialization succeeds.
\item {\ttfamily false}\+: The initialization fails. 
\end{DoxyItemize}
\end{DoxyReturn}
\mbox{\Hypertarget{classagora_1_1rtc_1_1_i_video_filter_aa1f93c239cce08de3b09502a108de0a0}\label{classagora_1_1rtc_1_1_i_video_filter_aa1f93c239cce08de3b09502a108de0a0}} 
\index{agora::rtc::IVideoFilter@{agora::rtc::IVideoFilter}!onDataStreamWillStop@{onDataStreamWillStop}}
\index{onDataStreamWillStop@{onDataStreamWillStop}!agora::rtc::IVideoFilter@{agora::rtc::IVideoFilter}}
\doxysubsubsection{\texorpdfstring{onDataStreamWillStop()}{onDataStreamWillStop()}}
{\footnotesize\ttfamily virtual void agora\+::rtc\+::\+I\+Video\+Filter\+::on\+Data\+Stream\+Will\+Stop (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

This function is invoked right before data stream stops. Custom filter can override this function for deinitialization. \mbox{\Hypertarget{classagora_1_1rtc_1_1_i_video_filter_a43088843be040e751fd2d26bd284de8e}\label{classagora_1_1rtc_1_1_i_video_filter_a43088843be040e751fd2d26bd284de8e}} 
\index{agora::rtc::IVideoFilter@{agora::rtc::IVideoFilter}!isExternal@{isExternal}}
\index{isExternal@{isExternal}!agora::rtc::IVideoFilter@{agora::rtc::IVideoFilter}}
\doxysubsubsection{\texorpdfstring{isExternal()}{isExternal()}}
{\footnotesize\ttfamily virtual bool agora\+::rtc\+::\+I\+Video\+Filter\+::is\+External (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

This function indicates if the filter is for internal use. \begin{DoxyNote}{Note}
Do not override this function. 
\end{DoxyNote}
\begin{DoxyReturn}{Returns}

\begin{DoxyItemize}
\item {\ttfamily true}\+: The filter is implemented by external users.
\item {\ttfamily false}\+: The filter is implemented by internal users. 
\end{DoxyItemize}
\end{DoxyReturn}
\mbox{\Hypertarget{classagora_1_1rtc_1_1_i_video_filter_a423710003ed46e4571e477df95090c4f}\label{classagora_1_1rtc_1_1_i_video_filter_a423710003ed46e4571e477df95090c4f}} 
\index{agora::rtc::IVideoFilter@{agora::rtc::IVideoFilter}!isExtensionFilter@{isExtensionFilter}}
\index{isExtensionFilter@{isExtensionFilter}!agora::rtc::IVideoFilter@{agora::rtc::IVideoFilter}}
\doxysubsubsection{\texorpdfstring{isExtensionFilter()}{isExtensionFilter()}}
{\footnotesize\ttfamily virtual bool agora\+::rtc\+::\+I\+Video\+Filter\+::is\+Extension\+Filter (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

This function indicates if the filter is implemented by third-\/party providers. \begin{DoxyNote}{Note}
Do not override this function. 
\end{DoxyNote}
\begin{DoxyReturn}{Returns}

\begin{DoxyItemize}
\item {\ttfamily true}\+: The filter is implemented by third-\/party providers.
\item {\ttfamily false}\+: otherwise. 
\end{DoxyItemize}
\end{DoxyReturn}


Reimplemented in \mbox{\hyperlink{classagora_1_1rtc_1_1_i_extension_video_filter_a320b131b8dd85ead06555a5f036a7405}{agora\+::rtc\+::\+I\+Extension\+Video\+Filter}}.

