\hypertarget{structagora_1_1rtc_1_1_video_rendering_tracing_info}{}\doxysection{agora\+::rtc\+::Video\+Rendering\+Tracing\+Info Struct Reference}
\label{structagora_1_1rtc_1_1_video_rendering_tracing_info}\index{agora::rtc::VideoRenderingTracingInfo@{agora::rtc::VideoRenderingTracingInfo}}


Indicators during video frame rendering progress.  




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

\doxysubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item 
int \mbox{\hyperlink{structagora_1_1rtc_1_1_video_rendering_tracing_info_af5923ce0f2df0ebd78c8b5883edea1d6}{elapsed\+Time}}
\item 
int \mbox{\hyperlink{structagora_1_1rtc_1_1_video_rendering_tracing_info_adef97e2b71d144414b851320b31fb56b}{start2\+Join\+Channel}}
\item 
int \mbox{\hyperlink{structagora_1_1rtc_1_1_video_rendering_tracing_info_af9b1ec63c981af7111c98b45563ab058}{join2\+Join\+Success}}
\item 
int \mbox{\hyperlink{structagora_1_1rtc_1_1_video_rendering_tracing_info_a20d6e6907890b9241d2ef8a797094c4e}{join\+Success2\+Remote\+Joined}}
\item 
int \mbox{\hyperlink{structagora_1_1rtc_1_1_video_rendering_tracing_info_af56155b67228bdc1cb2ffa9193154dcc}{remote\+Joined2\+Set\+View}}
\item 
int \mbox{\hyperlink{structagora_1_1rtc_1_1_video_rendering_tracing_info_a688192e95fc6906b4b1efb9efa146d61}{remote\+Joined2\+Unmute\+Video}}
\item 
int \mbox{\hyperlink{structagora_1_1rtc_1_1_video_rendering_tracing_info_a1e76db654d0ea4b1128ff9692fa18f13}{remote\+Joined2\+Packet\+Received}}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Indicators during video frame rendering progress. 

\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{structagora_1_1rtc_1_1_video_rendering_tracing_info_af5923ce0f2df0ebd78c8b5883edea1d6}\label{structagora_1_1rtc_1_1_video_rendering_tracing_info_af5923ce0f2df0ebd78c8b5883edea1d6}} 
\index{agora::rtc::VideoRenderingTracingInfo@{agora::rtc::VideoRenderingTracingInfo}!elapsedTime@{elapsedTime}}
\index{elapsedTime@{elapsedTime}!agora::rtc::VideoRenderingTracingInfo@{agora::rtc::VideoRenderingTracingInfo}}
\doxysubsubsection{\texorpdfstring{elapsedTime}{elapsedTime}}
{\footnotesize\ttfamily int agora\+::rtc\+::\+Video\+Rendering\+Tracing\+Info\+::elapsed\+Time}

The time interval (ms) from {\ttfamily start\+Media\+Rendering\+Tracing} to S\+DK triggering the {\ttfamily on\+Video\+Rendering\+Tracing\+Result} callback. Agora recommends you call {\ttfamily start\+Media\+Rendering\+Tracing} before joining a channel. \mbox{\Hypertarget{structagora_1_1rtc_1_1_video_rendering_tracing_info_adef97e2b71d144414b851320b31fb56b}\label{structagora_1_1rtc_1_1_video_rendering_tracing_info_adef97e2b71d144414b851320b31fb56b}} 
\index{agora::rtc::VideoRenderingTracingInfo@{agora::rtc::VideoRenderingTracingInfo}!start2JoinChannel@{start2JoinChannel}}
\index{start2JoinChannel@{start2JoinChannel}!agora::rtc::VideoRenderingTracingInfo@{agora::rtc::VideoRenderingTracingInfo}}
\doxysubsubsection{\texorpdfstring{start2JoinChannel}{start2JoinChannel}}
{\footnotesize\ttfamily int agora\+::rtc\+::\+Video\+Rendering\+Tracing\+Info\+::start2\+Join\+Channel}

The time interval (ms) from {\ttfamily start\+Media\+Rendering\+Tracing} to {\ttfamily join\+Channel(const char$\ast$ token, const char$\ast$ channel\+Id, const char$\ast$ info, uid\+\_\+t uid)} or {\ttfamily join\+Channel(const char$\ast$ token, const char$\ast$ channel\+Id, uid\+\_\+t uid, const \mbox{\hyperlink{structagora_1_1rtc_1_1_channel_media_options}{Channel\+Media\+Options}}\& options)} . A negative number indicates that {\ttfamily start\+Media\+Rendering\+Tracing} is called after calling {\ttfamily join\+Channel(const char$\ast$ token, const char$\ast$ channel\+Id, uid\+\_\+t uid, const \mbox{\hyperlink{structagora_1_1rtc_1_1_channel_media_options}{Channel\+Media\+Options}}\& options)}. \mbox{\Hypertarget{structagora_1_1rtc_1_1_video_rendering_tracing_info_af9b1ec63c981af7111c98b45563ab058}\label{structagora_1_1rtc_1_1_video_rendering_tracing_info_af9b1ec63c981af7111c98b45563ab058}} 
\index{agora::rtc::VideoRenderingTracingInfo@{agora::rtc::VideoRenderingTracingInfo}!join2JoinSuccess@{join2JoinSuccess}}
\index{join2JoinSuccess@{join2JoinSuccess}!agora::rtc::VideoRenderingTracingInfo@{agora::rtc::VideoRenderingTracingInfo}}
\doxysubsubsection{\texorpdfstring{join2JoinSuccess}{join2JoinSuccess}}
{\footnotesize\ttfamily int agora\+::rtc\+::\+Video\+Rendering\+Tracing\+Info\+::join2\+Join\+Success}

The time interval (ms) from {\ttfamily join\+Channel(const char$\ast$ token, const char$\ast$ channel\+Id, const char$\ast$ info, uid\+\_\+t uid)} or {\ttfamily join\+Channel(const char$\ast$ token, const char$\ast$ channel\+Id, uid\+\_\+t uid, const \mbox{\hyperlink{structagora_1_1rtc_1_1_channel_media_options}{Channel\+Media\+Options}}\& options)} to successfully joining the channel. \mbox{\Hypertarget{structagora_1_1rtc_1_1_video_rendering_tracing_info_a20d6e6907890b9241d2ef8a797094c4e}\label{structagora_1_1rtc_1_1_video_rendering_tracing_info_a20d6e6907890b9241d2ef8a797094c4e}} 
\index{agora::rtc::VideoRenderingTracingInfo@{agora::rtc::VideoRenderingTracingInfo}!joinSuccess2RemoteJoined@{joinSuccess2RemoteJoined}}
\index{joinSuccess2RemoteJoined@{joinSuccess2RemoteJoined}!agora::rtc::VideoRenderingTracingInfo@{agora::rtc::VideoRenderingTracingInfo}}
\doxysubsubsection{\texorpdfstring{joinSuccess2RemoteJoined}{joinSuccess2RemoteJoined}}
{\footnotesize\ttfamily int agora\+::rtc\+::\+Video\+Rendering\+Tracing\+Info\+::join\+Success2\+Remote\+Joined}


\begin{DoxyItemize}
\item If the local user calls {\ttfamily start\+Media\+Rendering\+Tracing} before successfully joining the channel, this value is the time interval (ms) from the local user successfully joining the channel to the remote user joining the channel.
\item If the local user calls {\ttfamily start\+Media\+Rendering\+Tracing} after successfully joining the channel, the value is the time interval (ms) from {\ttfamily start\+Media\+Rendering\+Tracing} to when the remote user joins the channel. \begin{DoxyNote}{Note}

\end{DoxyNote}

\item If the local user calls {\ttfamily start\+Media\+Rendering\+Tracing} after the remote user joins the channel, the value is 0 and meaningless.
\item In order to reduce the time of rendering the first frame for remote users, Agora recommends that the local user joins the channel when the remote user is in the channel to reduce this value. 
\end{DoxyItemize}\mbox{\Hypertarget{structagora_1_1rtc_1_1_video_rendering_tracing_info_af56155b67228bdc1cb2ffa9193154dcc}\label{structagora_1_1rtc_1_1_video_rendering_tracing_info_af56155b67228bdc1cb2ffa9193154dcc}} 
\index{agora::rtc::VideoRenderingTracingInfo@{agora::rtc::VideoRenderingTracingInfo}!remoteJoined2SetView@{remoteJoined2SetView}}
\index{remoteJoined2SetView@{remoteJoined2SetView}!agora::rtc::VideoRenderingTracingInfo@{agora::rtc::VideoRenderingTracingInfo}}
\doxysubsubsection{\texorpdfstring{remoteJoined2SetView}{remoteJoined2SetView}}
{\footnotesize\ttfamily int agora\+::rtc\+::\+Video\+Rendering\+Tracing\+Info\+::remote\+Joined2\+Set\+View}


\begin{DoxyItemize}
\item If the local user calls {\ttfamily start\+Media\+Rendering\+Tracing} before the remote user joins the channel, this value is the time interval (ms) from when the remote user joins the channel to when the local user sets the remote view.
\item If the local user calls {\ttfamily start\+Media\+Rendering\+Tracing} after the remote user joins the channel, this value is the time interval (ms) from calling {\ttfamily start\+Media\+Rendering\+Tracing} to setting the remote view. \begin{DoxyNote}{Note}

\end{DoxyNote}

\item If the local user calls {\ttfamily start\+Media\+Rendering\+Tracing} after setting the remote view, the value is 0 and has no effect.
\item In order to reduce the time of rendering the first frame for remote users, Agora recommends that the local user sets the remote view before the remote user joins the channel, or sets the remote view immediately after the remote user joins the channel to reduce this value. 
\end{DoxyItemize}\mbox{\Hypertarget{structagora_1_1rtc_1_1_video_rendering_tracing_info_a688192e95fc6906b4b1efb9efa146d61}\label{structagora_1_1rtc_1_1_video_rendering_tracing_info_a688192e95fc6906b4b1efb9efa146d61}} 
\index{agora::rtc::VideoRenderingTracingInfo@{agora::rtc::VideoRenderingTracingInfo}!remoteJoined2UnmuteVideo@{remoteJoined2UnmuteVideo}}
\index{remoteJoined2UnmuteVideo@{remoteJoined2UnmuteVideo}!agora::rtc::VideoRenderingTracingInfo@{agora::rtc::VideoRenderingTracingInfo}}
\doxysubsubsection{\texorpdfstring{remoteJoined2UnmuteVideo}{remoteJoined2UnmuteVideo}}
{\footnotesize\ttfamily int agora\+::rtc\+::\+Video\+Rendering\+Tracing\+Info\+::remote\+Joined2\+Unmute\+Video}


\begin{DoxyItemize}
\item If the local user calls {\ttfamily start\+Media\+Rendering\+Tracing} before the remote user joins the channel, this value is the time interval (ms) from the remote user joining the channel to subscribing to the remote video stream.
\item If the local user calls {\ttfamily start\+Media\+Rendering\+Tracing} after the remote user joins the channel, this value is the time interval (ms) from {\ttfamily start\+Media\+Rendering\+Tracing} to subscribing to the remote video stream. \begin{DoxyNote}{Note}

\end{DoxyNote}

\item If the local user calls {\ttfamily start\+Media\+Rendering\+Tracing} after subscribing to the remote video stream, the value is 0 and has no effect.
\item In order to reduce the time of rendering the first frame for remote users, Agora recommends that after the remote user joins the channel, the local user immediately subscribes to the remote video stream to reduce this value. 
\end{DoxyItemize}\mbox{\Hypertarget{structagora_1_1rtc_1_1_video_rendering_tracing_info_a1e76db654d0ea4b1128ff9692fa18f13}\label{structagora_1_1rtc_1_1_video_rendering_tracing_info_a1e76db654d0ea4b1128ff9692fa18f13}} 
\index{agora::rtc::VideoRenderingTracingInfo@{agora::rtc::VideoRenderingTracingInfo}!remoteJoined2PacketReceived@{remoteJoined2PacketReceived}}
\index{remoteJoined2PacketReceived@{remoteJoined2PacketReceived}!agora::rtc::VideoRenderingTracingInfo@{agora::rtc::VideoRenderingTracingInfo}}
\doxysubsubsection{\texorpdfstring{remoteJoined2PacketReceived}{remoteJoined2PacketReceived}}
{\footnotesize\ttfamily int agora\+::rtc\+::\+Video\+Rendering\+Tracing\+Info\+::remote\+Joined2\+Packet\+Received}


\begin{DoxyItemize}
\item If the local user calls {\ttfamily start\+Media\+Rendering\+Tracing} before the remote user joins the channel, this value is the time interval (ms) from when the remote user joins the channel to when the local user receives the remote video stream.
\item If the local user calls {\ttfamily start\+Media\+Rendering\+Tracing} after the remote user joins the channel, this value is the time interval (ms) from {\ttfamily start\+Media\+Rendering\+Tracing} to receiving the remote video stream. \begin{DoxyNote}{Note}

\end{DoxyNote}

\item If the local user calls {\ttfamily start\+Media\+Rendering\+Tracing} after receiving the remote video stream, the value is 0 and has no effect.
\item In order to reduce the time of rendering the first frame for remote users, Agora recommends that the remote user publishes video streams immediately after joining the channel, and the local user immediately subscribes to remote video streams to reduce this value. 
\end{DoxyItemize}