\hypertarget{structagora_1_1rtc_1_1_video_encoder_configuration}{}\doxysection{agora\+::rtc\+::Video\+Encoder\+Configuration Struct Reference}
\label{structagora_1_1rtc_1_1_video_encoder_configuration}\index{agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}}


{\ttfamily \#include $<$Agora\+Base.\+h$>$}

\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{structagora_1_1rtc_1_1_video_encoder_configuration_ac6014469c3224d61584b816ff55a796c}\label{structagora_1_1rtc_1_1_video_encoder_configuration_ac6014469c3224d61584b816ff55a796c}} 
{\bfseries Video\+Encoder\+Configuration} (const \mbox{\hyperlink{structagora_1_1rtc_1_1_video_dimensions}{Video\+Dimensions}} \&d, int f, int b, O\+R\+I\+E\+N\+T\+A\+T\+I\+O\+N\+\_\+\+M\+O\+DE m, V\+I\+D\+E\+O\+\_\+\+M\+I\+R\+R\+O\+R\+\_\+\+M\+O\+D\+E\+\_\+\+T\+Y\+PE mirror=V\+I\+D\+E\+O\+\_\+\+M\+I\+R\+R\+O\+R\+\_\+\+M\+O\+D\+E\+\_\+\+D\+I\+S\+A\+B\+L\+ED)
\item 
\mbox{\Hypertarget{structagora_1_1rtc_1_1_video_encoder_configuration_ab5ef38e3c50320d0829351ffc0289d41}\label{structagora_1_1rtc_1_1_video_encoder_configuration_ab5ef38e3c50320d0829351ffc0289d41}} 
{\bfseries Video\+Encoder\+Configuration} (int width, int height, int f, int b, O\+R\+I\+E\+N\+T\+A\+T\+I\+O\+N\+\_\+\+M\+O\+DE m, V\+I\+D\+E\+O\+\_\+\+M\+I\+R\+R\+O\+R\+\_\+\+M\+O\+D\+E\+\_\+\+T\+Y\+PE mirror=V\+I\+D\+E\+O\+\_\+\+M\+I\+R\+R\+O\+R\+\_\+\+M\+O\+D\+E\+\_\+\+D\+I\+S\+A\+B\+L\+ED)
\item 
\mbox{\Hypertarget{structagora_1_1rtc_1_1_video_encoder_configuration_af0da8ba4875febcedb24021cc71a696d}\label{structagora_1_1rtc_1_1_video_encoder_configuration_af0da8ba4875febcedb24021cc71a696d}} 
{\bfseries Video\+Encoder\+Configuration} (const \mbox{\hyperlink{structagora_1_1rtc_1_1_video_encoder_configuration}{Video\+Encoder\+Configuration}} \&config)
\item 
\mbox{\Hypertarget{structagora_1_1rtc_1_1_video_encoder_configuration_a69124681e1bee0952b2ca30ccebc889f}\label{structagora_1_1rtc_1_1_video_encoder_configuration_a69124681e1bee0952b2ca30ccebc889f}} 
\mbox{\hyperlink{structagora_1_1rtc_1_1_video_encoder_configuration}{Video\+Encoder\+Configuration}} \& {\bfseries operator=} (const \mbox{\hyperlink{structagora_1_1rtc_1_1_video_encoder_configuration}{Video\+Encoder\+Configuration}} \&rhs)
\end{DoxyCompactItemize}
\doxysubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item 
V\+I\+D\+E\+O\+\_\+\+C\+O\+D\+E\+C\+\_\+\+T\+Y\+PE \mbox{\hyperlink{structagora_1_1rtc_1_1_video_encoder_configuration_a7af2f2459b1d279fed2f43814662a789}{codec\+Type}}
\item 
\mbox{\hyperlink{structagora_1_1rtc_1_1_video_dimensions}{Video\+Dimensions}} \mbox{\hyperlink{structagora_1_1rtc_1_1_video_encoder_configuration_af31036bc7b00a4497716b1eb367d868d}{dimensions}}
\item 
int \mbox{\hyperlink{structagora_1_1rtc_1_1_video_encoder_configuration_ae0fb4d92e1ed877758bf05f4e0b8a9da}{frame\+Rate}}
\item 
int \mbox{\hyperlink{structagora_1_1rtc_1_1_video_encoder_configuration_af10ca07d888e2f33b34feb431300da69}{bitrate}}
\item 
int \mbox{\hyperlink{structagora_1_1rtc_1_1_video_encoder_configuration_ab3249ca88227aaf36f21681b9de7ced2}{min\+Bitrate}}
\item 
O\+R\+I\+E\+N\+T\+A\+T\+I\+O\+N\+\_\+\+M\+O\+DE \mbox{\hyperlink{structagora_1_1rtc_1_1_video_encoder_configuration_acdd8e209a4e4dafceef5879988f39fb6}{orientation\+Mode}}
\item 
D\+E\+G\+R\+A\+D\+A\+T\+I\+O\+N\+\_\+\+P\+R\+E\+F\+E\+R\+E\+N\+CE \mbox{\hyperlink{structagora_1_1rtc_1_1_video_encoder_configuration_a491316b0de64bf930938404b113f062f}{degradation\+Preference}}
\item 
V\+I\+D\+E\+O\+\_\+\+M\+I\+R\+R\+O\+R\+\_\+\+M\+O\+D\+E\+\_\+\+T\+Y\+PE \mbox{\hyperlink{structagora_1_1rtc_1_1_video_encoder_configuration_a1ca537cb6966901330bce3681194ceb5}{mirror\+Mode}}
\item 
\mbox{\hyperlink{structagora_1_1rtc_1_1_advance_options}{Advance\+Options}} \mbox{\hyperlink{structagora_1_1rtc_1_1_video_encoder_configuration_a4e712fcd4039a320d82478f289733b18}{advance\+Options}}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
The definition of the \mbox{\hyperlink{structagora_1_1rtc_1_1_video_encoder_configuration}{Video\+Encoder\+Configuration}} struct. 

\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{structagora_1_1rtc_1_1_video_encoder_configuration_a7af2f2459b1d279fed2f43814662a789}\label{structagora_1_1rtc_1_1_video_encoder_configuration_a7af2f2459b1d279fed2f43814662a789}} 
\index{agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}!codecType@{codecType}}
\index{codecType@{codecType}!agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}}
\doxysubsubsection{\texorpdfstring{codecType}{codecType}}
{\footnotesize\ttfamily V\+I\+D\+E\+O\+\_\+\+C\+O\+D\+E\+C\+\_\+\+T\+Y\+PE agora\+::rtc\+::\+Video\+Encoder\+Configuration\+::codec\+Type}

The video encoder code type\+: \#\+V\+I\+D\+E\+O\+\_\+\+C\+O\+D\+E\+C\+\_\+\+T\+Y\+PE. \mbox{\Hypertarget{structagora_1_1rtc_1_1_video_encoder_configuration_af31036bc7b00a4497716b1eb367d868d}\label{structagora_1_1rtc_1_1_video_encoder_configuration_af31036bc7b00a4497716b1eb367d868d}} 
\index{agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}!dimensions@{dimensions}}
\index{dimensions@{dimensions}!agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}}
\doxysubsubsection{\texorpdfstring{dimensions}{dimensions}}
{\footnotesize\ttfamily \mbox{\hyperlink{structagora_1_1rtc_1_1_video_dimensions}{Video\+Dimensions}} agora\+::rtc\+::\+Video\+Encoder\+Configuration\+::dimensions}

The video dimension\+: \mbox{\hyperlink{structagora_1_1rtc_1_1_video_dimensions}{Video\+Dimensions}}. \mbox{\Hypertarget{structagora_1_1rtc_1_1_video_encoder_configuration_ae0fb4d92e1ed877758bf05f4e0b8a9da}\label{structagora_1_1rtc_1_1_video_encoder_configuration_ae0fb4d92e1ed877758bf05f4e0b8a9da}} 
\index{agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}!frameRate@{frameRate}}
\index{frameRate@{frameRate}!agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}}
\doxysubsubsection{\texorpdfstring{frameRate}{frameRate}}
{\footnotesize\ttfamily int agora\+::rtc\+::\+Video\+Encoder\+Configuration\+::frame\+Rate}

The frame rate of the video. You can set it manually, or choose one from \#\+F\+R\+A\+M\+E\+\_\+\+R\+A\+TE. \mbox{\Hypertarget{structagora_1_1rtc_1_1_video_encoder_configuration_af10ca07d888e2f33b34feb431300da69}\label{structagora_1_1rtc_1_1_video_encoder_configuration_af10ca07d888e2f33b34feb431300da69}} 
\index{agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}!bitrate@{bitrate}}
\index{bitrate@{bitrate}!agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}}
\doxysubsubsection{\texorpdfstring{bitrate}{bitrate}}
{\footnotesize\ttfamily int agora\+::rtc\+::\+Video\+Encoder\+Configuration\+::bitrate}

The bitrate (Kbps) of the video.

Refer to the {\bfseries{Video Bitrate Table}} below and set your bitrate. If you set a bitrate beyond the proper range, the S\+DK automatically adjusts it to a value within the range. You can also choose from the following options\+:


\begin{DoxyItemize}
\item \#\+S\+T\+A\+N\+D\+A\+R\+D\+\_\+\+B\+I\+T\+R\+A\+TE\+: (Recommended) Standard bitrate mode. In this mode, the bitrates differ between the Live Broadcast and Communication profiles\+:
\begin{DoxyItemize}
\item In the Communication profile, the video bitrate is the same as the base bitrate.
\item In the Live Broadcast profile, the video bitrate is twice the base bitrate.
\end{DoxyItemize}
\item \#\+C\+O\+M\+P\+A\+T\+I\+B\+L\+E\+\_\+\+B\+I\+T\+R\+A\+TE\+: Compatible bitrate mode. The compatible bitrate mode. In this mode, the bitrate stays the same regardless of the profile. If you choose this mode for the Live Broadcast profile, the video frame rate may be lower than the set value.
\end{DoxyItemize}

Agora uses different video codecs for different profiles to optimize the user experience. For example, the communication profile prioritizes the smoothness while the live-\/broadcast profile prioritizes the video quality (a higher bitrate). Therefore, We recommend setting this parameter as \#\+S\+T\+A\+N\+D\+A\+R\+D\+\_\+\+B\+I\+T\+R\+A\+TE.

\tabulinesep=1mm
\begin{longtabu}spread 0pt [c]{*{4}{|X[-1]}|}
\hline
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Resolution }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Frame Rate (fps) }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Base Bitrate (Kbps) }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Live Bitrate (Kbps)  }\\\cline{1-4}
\endfirsthead
\hline
\endfoot
\hline
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Resolution }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Frame Rate (fps) }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Base Bitrate (Kbps) }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Live Bitrate (Kbps)  }\\\cline{1-4}
\endhead
160 $\ast$ 120 &15 &65 &110  \\\cline{1-4}
120 $\ast$ 120 &15 &50 &90  \\\cline{1-4}
320 $\ast$ 180 &15 &140 &240  \\\cline{1-4}
180 $\ast$ 180 &15 &100 &160  \\\cline{1-4}
240 $\ast$ 180 &15 &120 &200  \\\cline{1-4}
320 $\ast$ 240 &15 &200 &300  \\\cline{1-4}
240 $\ast$ 240 &15 &140 &240  \\\cline{1-4}
424 $\ast$ 240 &15 &220 &370  \\\cline{1-4}
640 $\ast$ 360 &15 &400 &680  \\\cline{1-4}
360 $\ast$ 360 &15 &260 &440  \\\cline{1-4}
640 $\ast$ 360 &30 &600 &1030  \\\cline{1-4}
360 $\ast$ 360 &30 &400 &670  \\\cline{1-4}
480 $\ast$ 360 &15 &320 &550  \\\cline{1-4}
480 $\ast$ 360 &30 &490 &830  \\\cline{1-4}
640 $\ast$ 480 &15 &500 &750  \\\cline{1-4}
480 $\ast$ 480 &15 &400 &680  \\\cline{1-4}
640 $\ast$ 480 &30 &750 &1130  \\\cline{1-4}
480 $\ast$ 480 &30 &600 &1030  \\\cline{1-4}
848 $\ast$ 480 &15 &610 &920  \\\cline{1-4}
848 $\ast$ 480 &30 &930 &1400  \\\cline{1-4}
640 $\ast$ 480 &10 &400 &600  \\\cline{1-4}
960 $\ast$ 540 &15 &750 &1100  \\\cline{1-4}
960 $\ast$ 540 &30 &1110 &1670  \\\cline{1-4}
1280 $\ast$ 720 &15 &1130 &1600  \\\cline{1-4}
1280 $\ast$ 720 &30 &1710 &2400  \\\cline{1-4}
960 $\ast$ 720 &15 &910 &1280  \\\cline{1-4}
960 $\ast$ 720 &30 &1380 &2000  \\\cline{1-4}
1920 $\ast$ 1080 &15 &2080 &2500  \\\cline{1-4}
1920 $\ast$ 1080 &30 &3150 &3780  \\\cline{1-4}
1920 $\ast$ 1080 &60 &4780 &5730  \\\cline{1-4}
2560 $\ast$ 1440 &30 &4850 &4850  \\\cline{1-4}
2560 $\ast$ 1440 &60 &7350 &7350  \\\cline{1-4}
3840 $\ast$ 2160 &30 &8910 &8910  \\\cline{1-4}
3840 $\ast$ 2160 &60 &13500 &13500  \\\cline{1-4}
\end{longtabu}
\mbox{\Hypertarget{structagora_1_1rtc_1_1_video_encoder_configuration_ab3249ca88227aaf36f21681b9de7ced2}\label{structagora_1_1rtc_1_1_video_encoder_configuration_ab3249ca88227aaf36f21681b9de7ced2}} 
\index{agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}!minBitrate@{minBitrate}}
\index{minBitrate@{minBitrate}!agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}}
\doxysubsubsection{\texorpdfstring{minBitrate}{minBitrate}}
{\footnotesize\ttfamily int agora\+::rtc\+::\+Video\+Encoder\+Configuration\+::min\+Bitrate}

The minimum encoding bitrate (Kbps).

The Agora S\+DK automatically adjusts the encoding bitrate to adapt to the network conditions.

Using a value greater than the default value forces the video encoder to output high-\/quality images but may cause more packet loss and hence sacrifice the smoothness of the video transmission. That said, unless you have special requirements for image quality, Agora does not recommend changing this value.

\begin{DoxyNote}{Note}
This parameter applies to the live-\/broadcast profile only. 
\end{DoxyNote}
\mbox{\Hypertarget{structagora_1_1rtc_1_1_video_encoder_configuration_acdd8e209a4e4dafceef5879988f39fb6}\label{structagora_1_1rtc_1_1_video_encoder_configuration_acdd8e209a4e4dafceef5879988f39fb6}} 
\index{agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}!orientationMode@{orientationMode}}
\index{orientationMode@{orientationMode}!agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}}
\doxysubsubsection{\texorpdfstring{orientationMode}{orientationMode}}
{\footnotesize\ttfamily O\+R\+I\+E\+N\+T\+A\+T\+I\+O\+N\+\_\+\+M\+O\+DE agora\+::rtc\+::\+Video\+Encoder\+Configuration\+::orientation\+Mode}

The video orientation mode\+: \#\+O\+R\+I\+E\+N\+T\+A\+T\+I\+O\+N\+\_\+\+M\+O\+DE. \mbox{\Hypertarget{structagora_1_1rtc_1_1_video_encoder_configuration_a491316b0de64bf930938404b113f062f}\label{structagora_1_1rtc_1_1_video_encoder_configuration_a491316b0de64bf930938404b113f062f}} 
\index{agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}!degradationPreference@{degradationPreference}}
\index{degradationPreference@{degradationPreference}!agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}}
\doxysubsubsection{\texorpdfstring{degradationPreference}{degradationPreference}}
{\footnotesize\ttfamily D\+E\+G\+R\+A\+D\+A\+T\+I\+O\+N\+\_\+\+P\+R\+E\+F\+E\+R\+E\+N\+CE agora\+::rtc\+::\+Video\+Encoder\+Configuration\+::degradation\+Preference}

The video degradation preference under limited bandwidth\+: \#\+D\+E\+G\+R\+A\+D\+A\+T\+I\+O\+N\+\_\+\+P\+R\+E\+F\+E\+R\+E\+N\+CE. \mbox{\Hypertarget{structagora_1_1rtc_1_1_video_encoder_configuration_a1ca537cb6966901330bce3681194ceb5}\label{structagora_1_1rtc_1_1_video_encoder_configuration_a1ca537cb6966901330bce3681194ceb5}} 
\index{agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}!mirrorMode@{mirrorMode}}
\index{mirrorMode@{mirrorMode}!agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}}
\doxysubsubsection{\texorpdfstring{mirrorMode}{mirrorMode}}
{\footnotesize\ttfamily V\+I\+D\+E\+O\+\_\+\+M\+I\+R\+R\+O\+R\+\_\+\+M\+O\+D\+E\+\_\+\+T\+Y\+PE agora\+::rtc\+::\+Video\+Encoder\+Configuration\+::mirror\+Mode}

The mirror mode is disabled by default If mirror\+\_\+type is set to V\+I\+D\+E\+O\+\_\+\+M\+I\+R\+R\+O\+R\+\_\+\+M\+O\+D\+E\+\_\+\+E\+N\+A\+B\+L\+ED, then the video frame would be mirrored before encoding. \mbox{\Hypertarget{structagora_1_1rtc_1_1_video_encoder_configuration_a4e712fcd4039a320d82478f289733b18}\label{structagora_1_1rtc_1_1_video_encoder_configuration_a4e712fcd4039a320d82478f289733b18}} 
\index{agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}!advanceOptions@{advanceOptions}}
\index{advanceOptions@{advanceOptions}!agora::rtc::VideoEncoderConfiguration@{agora::rtc::VideoEncoderConfiguration}}
\doxysubsubsection{\texorpdfstring{advanceOptions}{advanceOptions}}
{\footnotesize\ttfamily \mbox{\hyperlink{structagora_1_1rtc_1_1_advance_options}{Advance\+Options}} agora\+::rtc\+::\+Video\+Encoder\+Configuration\+::advance\+Options}

The advanced options for the video encoder configuration. See \mbox{\hyperlink{structagora_1_1rtc_1_1_advance_options}{Advance\+Options}}. 