\hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas}{}\doxysection{io.\+agora.\+rtc2.\+video.\+Video\+Canvas Class Reference}
\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas}\index{io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}}


Attributes of the video canvas object.  


\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a5b697068cbebbdc4636d25a3e845a0fa}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a5b697068cbebbdc4636d25a3e845a0fa}} 
{\bfseries Video\+Canvas} (View \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a5d4e289a0348cf8356dacbc1465bba76}{view}})
\item 
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_aea0e3d62c8fee7b62e9ce5e122b18ec9}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_aea0e3d62c8fee7b62e9ce5e122b18ec9}} 
{\bfseries Video\+Canvas} (View \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a5d4e289a0348cf8356dacbc1465bba76}{view}}, int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_ac3c0eb2213dec1dfa6f578634ec4bd60}{render\+Mode}}, int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a9731957f0e0ee6a39949791a6dcc3ba1}{uid}})
\item 
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a3b3a3d57f14a44a5434dd32af4ed59fc}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a3b3a3d57f14a44a5434dd32af4ed59fc}} 
{\bfseries Video\+Canvas} (View \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a5d4e289a0348cf8356dacbc1465bba76}{view}}, int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_ac3c0eb2213dec1dfa6f578634ec4bd60}{render\+Mode}}, int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a9731957f0e0ee6a39949791a6dcc3ba1}{uid}}, int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a8d28c9c982e2486ddd757a7687562c86}{subview\+Uid}})
\end{DoxyCompactItemize}
\doxysubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a9731957f0e0ee6a39949791a6dcc3ba1}{uid}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a8d28c9c982e2486ddd757a7687562c86}{subview\+Uid}}
\item 
View \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a5d4e289a0348cf8356dacbc1465bba76}{view}}
\item 
Surface\+Texture \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_aa066ac76dcf4e9abb70c4ef2ae5a7b52}{surface\+Texture}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_ac3c0eb2213dec1dfa6f578634ec4bd60}{render\+Mode}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a4dd61463353d4460e47ecb8073c5ce16}{mirror\+Mode}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a2c596be075c010fdc7d0eea325acd817}{setup\+Mode}} = V\+I\+E\+W\+\_\+\+S\+E\+T\+U\+P\+\_\+\+M\+O\+D\+E\+\_\+\+R\+E\+P\+L\+A\+CE
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a5651009107c3ea5d819a529a697d4558}{source\+Type}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a555ac73b98d4a9fbac885bacdc235807}{media\+Player\+Id}}
\item 
Rect \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_aa464a086da8e489afab68d325e86d8e9}{rect}}
\item 
boolean \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a962605b581c3725ac61875953f0497bb}{enable\+Alpha\+Mask}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a75269e3af139eb4c4aea384987bae994}{background\+Color}}
\item 
Constants.\+Video\+Module\+Position \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_aa3e80fa763e0c811d94191e1baebbbdc}{position}}
\end{DoxyCompactItemize}
\doxysubsection*{Static Public Attributes}
\begin{DoxyCompactItemize}
\item 
static final int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a6f60c311a3c518d94ca28816773259b7}{R\+E\+N\+D\+E\+R\+\_\+\+M\+O\+D\+E\+\_\+\+H\+I\+D\+D\+EN}} = 1
\item 
static final int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a43d7554af56c4d2f6a27bf8d6a9ba136}{R\+E\+N\+D\+E\+R\+\_\+\+M\+O\+D\+E\+\_\+\+F\+IT}} = 2
\item 
static final int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_af57a8b1432125b4439d01b0afaeaca81}{R\+E\+N\+D\+E\+R\+\_\+\+M\+O\+D\+E\+\_\+\+A\+D\+A\+P\+T\+I\+VE}} = 3
\item 
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a06909b3e71bfe25d65180744850408bf}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a06909b3e71bfe25d65180744850408bf}} 
static final int {\bfseries V\+I\+E\+W\+\_\+\+S\+E\+T\+U\+P\+\_\+\+M\+O\+D\+E\+\_\+\+R\+E\+P\+L\+A\+CE} = 0
\item 
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a4844af57316a1307c04b18c4df31556a}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a4844af57316a1307c04b18c4df31556a}} 
static final int {\bfseries V\+I\+E\+W\+\_\+\+S\+E\+T\+U\+P\+\_\+\+M\+O\+D\+E\+\_\+\+A\+DD} = 1
\item 
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a3f70b92ec5f4140aaa28615c4e81be0a}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a3f70b92ec5f4140aaa28615c4e81be0a}} 
static final int {\bfseries V\+I\+E\+W\+\_\+\+S\+E\+T\+U\+P\+\_\+\+M\+O\+D\+E\+\_\+\+R\+E\+M\+O\+VE} = 2
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Attributes of the video canvas object. 

\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a9731957f0e0ee6a39949791a6dcc3ba1}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a9731957f0e0ee6a39949791a6dcc3ba1}} 
\index{io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}!uid@{uid}}
\index{uid@{uid}!io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}}
\doxysubsubsection{\texorpdfstring{uid}{uid}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+video.\+Video\+Canvas.\+uid}

User ID that publishes the video source. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a8d28c9c982e2486ddd757a7687562c86}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a8d28c9c982e2486ddd757a7687562c86}} 
\index{io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}!subviewUid@{subviewUid}}
\index{subviewUid@{subviewUid}!io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}}
\doxysubsubsection{\texorpdfstring{subviewUid}{subviewUid}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+video.\+Video\+Canvas.\+subview\+Uid}

The ID of the user who publishes a specific sub-\/video stream within the mixed video stream. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a6f60c311a3c518d94ca28816773259b7}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a6f60c311a3c518d94ca28816773259b7}} 
\index{io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}!RENDER\_MODE\_HIDDEN@{RENDER\_MODE\_HIDDEN}}
\index{RENDER\_MODE\_HIDDEN@{RENDER\_MODE\_HIDDEN}!io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}}
\doxysubsubsection{\texorpdfstring{RENDER\_MODE\_HIDDEN}{RENDER\_MODE\_HIDDEN}}
{\footnotesize\ttfamily final int io.\+agora.\+rtc2.\+video.\+Video\+Canvas.\+R\+E\+N\+D\+E\+R\+\_\+\+M\+O\+D\+E\+\_\+\+H\+I\+D\+D\+EN = 1\hspace{0.3cm}{\ttfamily [static]}}

1\+: Uniformly scale the video until it fills the visible boundaries (cropped). One dimension of the video may have clipped contents. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a43d7554af56c4d2f6a27bf8d6a9ba136}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a43d7554af56c4d2f6a27bf8d6a9ba136}} 
\index{io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}!RENDER\_MODE\_FIT@{RENDER\_MODE\_FIT}}
\index{RENDER\_MODE\_FIT@{RENDER\_MODE\_FIT}!io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}}
\doxysubsubsection{\texorpdfstring{RENDER\_MODE\_FIT}{RENDER\_MODE\_FIT}}
{\footnotesize\ttfamily final int io.\+agora.\+rtc2.\+video.\+Video\+Canvas.\+R\+E\+N\+D\+E\+R\+\_\+\+M\+O\+D\+E\+\_\+\+F\+IT = 2\hspace{0.3cm}{\ttfamily [static]}}

2\+: Uniformly scale the video until one of its dimension fits the boundary (zoomed to fit). Areas that are not filled due to the disparity in the aspect ratio are filled with black. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_af57a8b1432125b4439d01b0afaeaca81}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_af57a8b1432125b4439d01b0afaeaca81}} 
\index{io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}!RENDER\_MODE\_ADAPTIVE@{RENDER\_MODE\_ADAPTIVE}}
\index{RENDER\_MODE\_ADAPTIVE@{RENDER\_MODE\_ADAPTIVE}!io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}}
\doxysubsubsection{\texorpdfstring{RENDER\_MODE\_ADAPTIVE}{RENDER\_MODE\_ADAPTIVE}}
{\footnotesize\ttfamily final int io.\+agora.\+rtc2.\+video.\+Video\+Canvas.\+R\+E\+N\+D\+E\+R\+\_\+\+M\+O\+D\+E\+\_\+\+A\+D\+A\+P\+T\+I\+VE = 3\hspace{0.3cm}{\ttfamily [static]}}

3\+: This mode is deprecated and Agora does not recommend using it. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a5d4e289a0348cf8356dacbc1465bba76}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a5d4e289a0348cf8356dacbc1465bba76}} 
\index{io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}!view@{view}}
\index{view@{view}!io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}}
\doxysubsubsection{\texorpdfstring{view}{view}}
{\footnotesize\ttfamily View io.\+agora.\+rtc2.\+video.\+Video\+Canvas.\+view}

The video display window. It must be one {\ttfamily Surface\+View} or {\ttfamily Texture\+View} object. \begin{DoxyNote}{Note}
In one {\ttfamily \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas}{Video\+Canvas}}}, you can only choose to set either {\ttfamily view} or {\ttfamily surface\+Texture}. If both are set, only the settings in {\ttfamily view} take effect. 
\end{DoxyNote}
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_aa066ac76dcf4e9abb70c4ef2ae5a7b52}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_aa066ac76dcf4e9abb70c4ef2ae5a7b52}} 
\index{io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}!surfaceTexture@{surfaceTexture}}
\index{surfaceTexture@{surfaceTexture}!io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}}
\doxysubsubsection{\texorpdfstring{surfaceTexture}{surfaceTexture}}
{\footnotesize\ttfamily Surface\+Texture io.\+agora.\+rtc2.\+video.\+Video\+Canvas.\+surface\+Texture}

A container that provides video images. When you use this member, you need to implement texture drawing in O\+P\+E\+N\+GL yourself. See {\ttfamily Surface\+Texture}. \begin{DoxyNote}{Note}
In one {\ttfamily \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas}{Video\+Canvas}}}, you can only choose to set either {\ttfamily view} or {\ttfamily surface\+Texture}. If both are set, only the settings in {\ttfamily view} take effect. 
\end{DoxyNote}
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_ac3c0eb2213dec1dfa6f578634ec4bd60}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_ac3c0eb2213dec1dfa6f578634ec4bd60}} 
\index{io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}!renderMode@{renderMode}}
\index{renderMode@{renderMode}!io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}}
\doxysubsubsection{\texorpdfstring{renderMode}{renderMode}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+video.\+Video\+Canvas.\+render\+Mode}


\begin{DoxyItemize}
\item R\+E\+N\+D\+E\+R\+\_\+\+M\+O\+D\+E\+\_\+\+H\+I\+D\+D\+EN (1)\+: Hidden mode. Uniformly scale the video until it fills the visible boundaries (cropped). One dimension of the video may have clipped contents.
\item R\+E\+N\+D\+E\+R\+\_\+\+M\+O\+D\+E\+\_\+\+F\+IT (2)\+: Fit mode. Uniformly scale the video until one of its dimension fits the boundary (zoomed to fit). Areas that are not filled due to the disparity in the aspect ratio are filled with black.
\item R\+E\+N\+D\+E\+R\+\_\+\+M\+O\+D\+E\+\_\+\+A\+D\+A\+P\+T\+I\+VE (3)\+: Adaptive mode. Deprecated\+: This enumerator is deprecated and not recommended for use. 
\end{DoxyItemize}\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a4dd61463353d4460e47ecb8073c5ce16}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a4dd61463353d4460e47ecb8073c5ce16}} 
\index{io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}!mirrorMode@{mirrorMode}}
\index{mirrorMode@{mirrorMode}!io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}}
\doxysubsubsection{\texorpdfstring{mirrorMode}{mirrorMode}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+video.\+Video\+Canvas.\+mirror\+Mode}


\begin{DoxyItemize}
\item V\+I\+D\+E\+O\+\_\+\+M\+I\+R\+R\+O\+R\+\_\+\+M\+O\+D\+E\+\_\+\+A\+U\+TO (0)\+: The S\+DK determines whether to enable the mirror mode. If you use a front camera, the S\+DK enables the mirror mode by default; if you use a rear camera, the S\+DK disables the mirror mode by default.
\item V\+I\+D\+E\+O\+\_\+\+M\+I\+R\+R\+O\+R\+\_\+\+M\+O\+D\+E\+\_\+\+E\+N\+A\+B\+L\+ED (1)\+: Enable the mirroring mode of the local view.
\item V\+I\+D\+E\+O\+\_\+\+M\+I\+R\+R\+O\+R\+\_\+\+M\+O\+D\+E\+\_\+\+D\+I\+S\+A\+B\+L\+ED (2)\+: Disable the mirroring mode of the local view. \begin{DoxyNote}{Note}

\end{DoxyNote}

\item For the mirror mode of the local video view\+: If you use a front camera, the S\+DK enables the mirror mode by default; if you use a rear camera, the S\+DK disables the mirror mode by default.
\item For the remote user\+: The mirror mode is disabled by default. 
\end{DoxyItemize}\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a2c596be075c010fdc7d0eea325acd817}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a2c596be075c010fdc7d0eea325acd817}} 
\index{io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}!setupMode@{setupMode}}
\index{setupMode@{setupMode}!io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}}
\doxysubsubsection{\texorpdfstring{setupMode}{setupMode}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+video.\+Video\+Canvas.\+setup\+Mode = V\+I\+E\+W\+\_\+\+S\+E\+T\+U\+P\+\_\+\+M\+O\+D\+E\+\_\+\+R\+E\+P\+L\+A\+CE}

Setting mode of the view.
\begin{DoxyItemize}
\item V\+I\+E\+W\+\_\+\+S\+E\+T\+U\+P\+\_\+\+M\+O\+D\+E\+\_\+\+R\+E\+P\+L\+A\+CE (0)\+: (Default) Replaces a view.
\item V\+I\+E\+W\+\_\+\+S\+E\+T\+U\+P\+\_\+\+M\+O\+D\+E\+\_\+\+A\+DD (1)\+: Adds a view.
\item V\+I\+E\+W\+\_\+\+S\+E\+T\+U\+P\+\_\+\+M\+O\+D\+E\+\_\+\+R\+E\+M\+O\+VE (2)\+: Deletes a view. \begin{DoxyNote}{Note}
When you no longer need to use a certain view, it is recommended to delete the view by setting {\ttfamily setup\+Mode} to V\+I\+E\+W\+\_\+\+S\+E\+T\+U\+P\+\_\+\+M\+O\+D\+E\+\_\+\+R\+E\+M\+O\+VE, otherwise it may lead to leak of rendering resources. 
\end{DoxyNote}

\end{DoxyItemize}\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a5651009107c3ea5d819a529a697d4558}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a5651009107c3ea5d819a529a697d4558}} 
\index{io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}!sourceType@{sourceType}}
\index{sourceType@{sourceType}!io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}}
\doxysubsubsection{\texorpdfstring{sourceType}{sourceType}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+video.\+Video\+Canvas.\+source\+Type}

The type of the video source. See {\ttfamily Video\+Source\+Type}. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a555ac73b98d4a9fbac885bacdc235807}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a555ac73b98d4a9fbac885bacdc235807}} 
\index{io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}!mediaPlayerId@{mediaPlayerId}}
\index{mediaPlayerId@{mediaPlayerId}!io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}}
\doxysubsubsection{\texorpdfstring{mediaPlayerId}{mediaPlayerId}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+video.\+Video\+Canvas.\+media\+Player\+Id}

The ID of the media player. You can get the Device ID by calling {\ttfamily get\+Media\+Player\+Id}. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_aa464a086da8e489afab68d325e86d8e9}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_aa464a086da8e489afab68d325e86d8e9}} 
\index{io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}!rect@{rect}}
\index{rect@{rect}!io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}}
\doxysubsubsection{\texorpdfstring{rect}{rect}}
{\footnotesize\ttfamily Rect io.\+agora.\+rtc2.\+video.\+Video\+Canvas.\+rect}

(Optional) Display area for the video frame. See {\ttfamily Rect}. {\ttfamily width} and {\ttfamily height} represent the video pixel width and height of the area. The default value is null (width or height is 0), which means that the actual resolution of the video frame is displayed. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a962605b581c3725ac61875953f0497bb}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a962605b581c3725ac61875953f0497bb}} 
\index{io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}!enableAlphaMask@{enableAlphaMask}}
\index{enableAlphaMask@{enableAlphaMask}!io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}}
\doxysubsubsection{\texorpdfstring{enableAlphaMask}{enableAlphaMask}}
{\footnotesize\ttfamily boolean io.\+agora.\+rtc2.\+video.\+Video\+Canvas.\+enable\+Alpha\+Mask}

(Optional) Whether to enable alpha mask rendering\+:
\begin{DoxyItemize}
\item {\ttfamily true}\+: Enable alpha mask rendering.
\item {\ttfamily false}\+: (Default) Disable alpha mask rendering. Alpha mask rendering can create images with transparent effects and extract portraits from videos. When used in combination with other methods, you can implement effects such as portrait-\/in-\/picture and watermarking. 
\end{DoxyItemize}\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a75269e3af139eb4c4aea384987bae994}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_a75269e3af139eb4c4aea384987bae994}} 
\index{io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}!backgroundColor@{backgroundColor}}
\index{backgroundColor@{backgroundColor}!io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}}
\doxysubsubsection{\texorpdfstring{backgroundColor}{backgroundColor}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+video.\+Video\+Canvas.\+background\+Color}

The background color of the video canvas in R\+G\+BA format. The default value is 0x00000000, which represents black. \begin{DoxyNote}{Note}

\begin{DoxyItemize}
\item If you are developing with Kotlin, and encounter a compilation error after setting this parameter to {\ttfamily 0x\+F\+F\+F\+F\+F\+F\+FF}, you can use {\ttfamily (0x\+F\+F\+F\+F\+F\+F\+FF).to\+Int()} or {\ttfamily android.\+graphics.\+Color.\+parse\+Color(\char`\"{}\#\+F\+F\+F\+F\+F\+F\+F\+F\char`\"{})}.
\item Currently, the {\ttfamily background\+Color} parameter does not support the alpha channel when using the R\+G\+BA format. 
\end{DoxyItemize}
\end{DoxyNote}
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_aa3e80fa763e0c811d94191e1baebbbdc}\label{classio_1_1agora_1_1rtc2_1_1video_1_1_video_canvas_aa3e80fa763e0c811d94191e1baebbbdc}} 
\index{io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}!position@{position}}
\index{position@{position}!io.agora.rtc2.video.VideoCanvas@{io.agora.rtc2.video.VideoCanvas}}
\doxysubsubsection{\texorpdfstring{position}{position}}
{\footnotesize\ttfamily Constants.\+Video\+Module\+Position io.\+agora.\+rtc2.\+video.\+Video\+Canvas.\+position}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{=}
\DoxyCodeLine{      Constants.VideoModulePosition.VIDEO\_MODULE\_POSITION\_POST\_CAPTURER}

\end{DoxyCode}
The observation position of the video frame in the video link. See {\ttfamily Video\+Module\+Position}. 