\hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats}{}\doxysection{io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats Class Reference}
\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats}\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}


Audio statistics of the remote user.  


\doxysubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a1c8b82ccc93152913db56d0d681b1f43}{uid}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a0590d15f623df42c606f098e1822fe9f}{quality}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a914ff52103890b131b585e402c9b2893}{network\+Transport\+Delay}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a3256f201b1e109268e7b1957894a5bc8}{jitter\+Buffer\+Delay}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a357c6c61039a5546531c72a85336fc26}{audio\+Loss\+Rate}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_afab7d9ec77d6f7f66f638f6d8425d8c4}{num\+Channels}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_ae23636b0987b06208077acb8d784741e}{received\+Sample\+Rate}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a801f86c4f532dea1dfa2464defadba01}{received\+Bitrate}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a5e47f95b54743e0dcf4b153942e19ab9}{total\+Frozen\+Time}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_aef13884f9d0b62ecbc2b87e9b679eb9e}{frozen\+Rate}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a7fb66359bb50a5cab6733e439b86070b}{mos\+Value}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a476ab5eb3919134b625e04abc35a42e2}{frozen\+Rate\+By\+Custom\+Plc\+Count}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_acff26c45a0b1502f18ed84edd6d7cdda}{plc\+Count}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_af61e243314e7825ce1f705a2bc8cf51b}{frozen\+Cnt\+By\+Custom}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_aa86eb2dc3e7bf3aca9cc0bcb6c15a553}{frozen\+Time\+By\+Custom}}
\item 
long \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a71b211cfd6eb71490d5ea315f607ba46}{total\+Active\+Time}}
\item 
long \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_aaa84315f15c1f9cbf76f598e7098fa40}{publish\+Duration}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_ae86788f1b183f6081396969668f35c82}{qoe\+Quality}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_aebabd4942a56aac6e527113953b00810}{quality\+Changed\+Reason}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a64aa732fe1c243fc25d76ba828a7709a}{rx\+Audio\+Bytes}}
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a589eb4d87dd768d40610f97e674dcaa6}{e2e\+Delay}}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Audio statistics of the remote user. 

\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a1c8b82ccc93152913db56d0d681b1f43}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a1c8b82ccc93152913db56d0d681b1f43}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!uid@{uid}}
\index{uid@{uid}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{uid}{uid}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+uid}

The user ID of the remote user. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a0590d15f623df42c606f098e1822fe9f}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a0590d15f623df42c606f098e1822fe9f}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!quality@{quality}}
\index{quality@{quality}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{quality}{quality}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+quality}

The quality of the audio stream sent by the user.
\begin{DoxyItemize}
\item Q\+U\+A\+L\+I\+T\+Y\+\_\+\+U\+N\+K\+N\+O\+WN (0)\+: The quality is unknown.
\item Q\+U\+A\+L\+I\+T\+Y\+\_\+\+E\+X\+C\+E\+L\+L\+E\+NT (1)\+: The quality is excellent.
\item Q\+U\+A\+L\+I\+T\+Y\+\_\+\+G\+O\+OD (2)\+: The network quality seems excellent, but the bitrate can be slightly lower than excellent.
\item Q\+U\+A\+L\+I\+T\+Y\+\_\+\+P\+O\+OR (3)\+: Users can feel the communication is slightly impaired.
\item Q\+U\+A\+L\+I\+T\+Y\+\_\+\+B\+AD (4)\+: Users cannot communicate smoothly.
\item Q\+U\+A\+L\+I\+T\+Y\+\_\+\+V\+B\+AD (5)\+: The quality is so bad that users can barely communicate.
\item Q\+U\+A\+L\+I\+T\+Y\+\_\+\+D\+O\+WN (6)\+: The network is down, and users cannot communicate at all.
\item Q\+U\+A\+L\+I\+T\+Y\+\_\+\+D\+E\+T\+E\+C\+T\+I\+NG (8)\+: The last-\/mile probe test is in progress. 
\end{DoxyItemize}\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a914ff52103890b131b585e402c9b2893}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a914ff52103890b131b585e402c9b2893}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!networkTransportDelay@{networkTransportDelay}}
\index{networkTransportDelay@{networkTransportDelay}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{networkTransportDelay}{networkTransportDelay}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+network\+Transport\+Delay}

The network delay (ms) from the sender to the receiver. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a3256f201b1e109268e7b1957894a5bc8}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a3256f201b1e109268e7b1957894a5bc8}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!jitterBufferDelay@{jitterBufferDelay}}
\index{jitterBufferDelay@{jitterBufferDelay}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{jitterBufferDelay}{jitterBufferDelay}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+jitter\+Buffer\+Delay}

The network delay (ms) from the audio receiver to the jitter buffer. \begin{DoxyNote}{Note}
When the receiving end is an audience member and {\ttfamily audience\+Latency\+Level} of {\ttfamily \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_client_role_options}{Client\+Role\+Options}}} is 1, this parameter does not take effect. 
\end{DoxyNote}
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a357c6c61039a5546531c72a85336fc26}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a357c6c61039a5546531c72a85336fc26}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!audioLossRate@{audioLossRate}}
\index{audioLossRate@{audioLossRate}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{audioLossRate}{audioLossRate}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+audio\+Loss\+Rate}

The frame loss rate (\%) of the remote audio stream in the reported interval. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_afab7d9ec77d6f7f66f638f6d8425d8c4}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_afab7d9ec77d6f7f66f638f6d8425d8c4}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!numChannels@{numChannels}}
\index{numChannels@{numChannels}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{numChannels}{numChannels}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+num\+Channels}

The number of audio channels. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_ae23636b0987b06208077acb8d784741e}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_ae23636b0987b06208077acb8d784741e}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!receivedSampleRate@{receivedSampleRate}}
\index{receivedSampleRate@{receivedSampleRate}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{receivedSampleRate}{receivedSampleRate}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+received\+Sample\+Rate}

The sampling rate of the received audio stream in the reported interval. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a801f86c4f532dea1dfa2464defadba01}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a801f86c4f532dea1dfa2464defadba01}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!receivedBitrate@{receivedBitrate}}
\index{receivedBitrate@{receivedBitrate}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{receivedBitrate}{receivedBitrate}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+received\+Bitrate}

The average bitrate (Kbps) of the received audio stream in the reported interval. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a5e47f95b54743e0dcf4b153942e19ab9}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a5e47f95b54743e0dcf4b153942e19ab9}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!totalFrozenTime@{totalFrozenTime}}
\index{totalFrozenTime@{totalFrozenTime}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{totalFrozenTime}{totalFrozenTime}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+total\+Frozen\+Time}

The total freeze time (ms) of the remote audio stream after the remote user joins the channel. In a session, audio freeze occurs when the audio frame loss rate reaches 4\%. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_aef13884f9d0b62ecbc2b87e9b679eb9e}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_aef13884f9d0b62ecbc2b87e9b679eb9e}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!frozenRate@{frozenRate}}
\index{frozenRate@{frozenRate}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{frozenRate}{frozenRate}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+frozen\+Rate}

The total audio freeze time as a percentage (\%) of the total time when the audio is available. The audio is considered available when the remote user neither stops sending the audio stream nor disables the audio module after joining the channel. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a7fb66359bb50a5cab6733e439b86070b}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a7fb66359bb50a5cab6733e439b86070b}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!mosValue@{mosValue}}
\index{mosValue@{mosValue}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{mosValue}{mosValue}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+mos\+Value}

The quality of the remote audio stream in the reported interval. The quality is determined by the Agora real-\/time audio M\+OS (Mean Opinion Score) measurement method. The return value range is \mbox{[}0, 500\mbox{]}. Dividing the return value by 100 gets the M\+OS score, which ranges from 0 to 5. The higher the score, the better the audio quality. The subjective perception of audio quality corresponding to the Agora real-\/time audio M\+OS scores is as follows\+: $\vert$ M\+OS score $\vert$ \doxysubsubsection*{Perception of audio quality $\vert$ $\vert$ -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/--- $\vert$ }

$\vert$ $\vert$ Greater than 4 $\vert$ Excellent. The audio sounds clear and smooth. $\vert$ $\vert$ From 3.\+5 to 4 $\vert$ Good. The audio has some perceptible impairment but still sounds clear. $\vert$ $\vert$ From 3 to 3.\+5 $\vert$ Fair. The audio freezes occasionally and requires attentive listening. $\vert$ $\vert$ From 2.\+5 to 3 $\vert$ Poor. The audio sounds choppy and requires considerable effort to understand. $\vert$ $\vert$ From 2 to 2.\+5 $\vert$ Bad. The audio has occasional noise. Consecutive audio dropouts occur, resulting in some information loss. The users can communicate only with difficulty. $\vert$ $\vert$ Less than 2 $\vert$ Very bad. The audio has persistent noise. Consecutive audio dropouts are frequent, resulting in severe information loss. Communication is nearly impossible. $\vert$ \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a476ab5eb3919134b625e04abc35a42e2}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a476ab5eb3919134b625e04abc35a42e2}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!frozenRateByCustomPlcCount@{frozenRateByCustomPlcCount}}
\index{frozenRateByCustomPlcCount@{frozenRateByCustomPlcCount}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{frozenRateByCustomPlcCount}{frozenRateByCustomPlcCount}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+frozen\+Rate\+By\+Custom\+Plc\+Count}

If the packet loss concealment (P\+LC) occurs for N consecutive times, freeze is considered as P\+LC occurring for M consecutive times. freeze cnt = (n\+\_\+plc -\/ n) / m \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_acff26c45a0b1502f18ed84edd6d7cdda}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_acff26c45a0b1502f18ed84edd6d7cdda}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!plcCount@{plcCount}}
\index{plcCount@{plcCount}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{plcCount}{plcCount}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+plc\+Count}

The number of audio packet loss concealment \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_af61e243314e7825ce1f705a2bc8cf51b}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_af61e243314e7825ce1f705a2bc8cf51b}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!frozenCntByCustom@{frozenCntByCustom}}
\index{frozenCntByCustom@{frozenCntByCustom}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{frozenCntByCustom}{frozenCntByCustom}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+frozen\+Cnt\+By\+Custom}

@technical preview The number of times the remote audio stream has experienced freezing. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_aa86eb2dc3e7bf3aca9cc0bcb6c15a553}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_aa86eb2dc3e7bf3aca9cc0bcb6c15a553}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!frozenTimeByCustom@{frozenTimeByCustom}}
\index{frozenTimeByCustom@{frozenTimeByCustom}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{frozenTimeByCustom}{frozenTimeByCustom}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+frozen\+Time\+By\+Custom}

@technical preview The total duration (ms) that the remote audio stream has been in a frozen state. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a71b211cfd6eb71490d5ea315f607ba46}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a71b211cfd6eb71490d5ea315f607ba46}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!totalActiveTime@{totalActiveTime}}
\index{totalActiveTime@{totalActiveTime}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{totalActiveTime}{totalActiveTime}}
{\footnotesize\ttfamily long io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+total\+Active\+Time}

The total active time (ms) between the start of the audio call and the callback of the remote user. The active time refers to the total duration of the remote user without the mute state. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_aaa84315f15c1f9cbf76f598e7098fa40}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_aaa84315f15c1f9cbf76f598e7098fa40}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!publishDuration@{publishDuration}}
\index{publishDuration@{publishDuration}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{publishDuration}{publishDuration}}
{\footnotesize\ttfamily long io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+publish\+Duration}

The total duration (ms) of the remote audio stream. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_ae86788f1b183f6081396969668f35c82}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_ae86788f1b183f6081396969668f35c82}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!qoeQuality@{qoeQuality}}
\index{qoeQuality@{qoeQuality}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{qoeQuality}{qoeQuality}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+qoe\+Quality}

The \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_quality}{Quality}} of Experience (QoE) of the local user when receiving a remote audio stream.
\begin{DoxyItemize}
\item E\+X\+P\+E\+R\+I\+E\+N\+C\+E\+\_\+\+Q\+U\+A\+L\+I\+T\+Y\+\_\+\+G\+O\+OD (0)\+: The QoE of the local user is good.
\item E\+X\+P\+E\+R\+I\+E\+N\+C\+E\+\_\+\+Q\+U\+A\+L\+I\+T\+Y\+\_\+\+B\+AD (1)\+: The QoE of the local user is poor. 
\end{DoxyItemize}\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_aebabd4942a56aac6e527113953b00810}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_aebabd4942a56aac6e527113953b00810}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!qualityChangedReason@{qualityChangedReason}}
\index{qualityChangedReason@{qualityChangedReason}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{qualityChangedReason}{qualityChangedReason}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+quality\+Changed\+Reason}

Reasons why the QoE of the local user when receiving a remote audio stream is poor.
\begin{DoxyItemize}
\item E\+X\+P\+E\+R\+I\+E\+N\+C\+E\+\_\+\+R\+E\+A\+S\+O\+N\+\_\+\+N\+O\+NE (0)\+: No reason, indicating a good QoE of the local user.
\item R\+E\+M\+O\+T\+E\+\_\+\+N\+E\+T\+W\+O\+R\+K\+\_\+\+Q\+U\+A\+L\+I\+T\+Y\+\_\+\+P\+O\+OR (1)\+: The remote user\textquotesingle{}s network quality is poor.
\item L\+O\+C\+A\+L\+\_\+\+N\+E\+T\+W\+O\+R\+K\+\_\+\+Q\+U\+A\+L\+I\+T\+Y\+\_\+\+P\+O\+OR (2)\+: The local user\textquotesingle{}s network quality is poor.
\item W\+I\+R\+E\+L\+E\+S\+S\+\_\+\+S\+I\+G\+N\+A\+L\+\_\+\+P\+O\+OR (4)\+: The local user\textquotesingle{}s Wi-\/\+Fi or mobile network signal is weak.
\item W\+I\+F\+I\+\_\+\+B\+L\+U\+E\+T\+O\+O\+T\+H\+\_\+\+C\+O\+E\+X\+I\+ST (8)\+: The local user enables both Wi-\/\+Fi and bluetooth, and their signals interfere with each other. As a result, audio transmission quality is undermined. 
\end{DoxyItemize}\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a64aa732fe1c243fc25d76ba828a7709a}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a64aa732fe1c243fc25d76ba828a7709a}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!rxAudioBytes@{rxAudioBytes}}
\index{rxAudioBytes@{rxAudioBytes}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{rxAudioBytes}{rxAudioBytes}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+rx\+Audio\+Bytes}

Total number of audio bytes received (bytes) before network countermeasures, represented by an aggregate value. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a589eb4d87dd768d40610f97e674dcaa6}\label{classio_1_1agora_1_1rtc2_1_1_i_rtc_engine_event_handler_1_1_remote_audio_stats_a589eb4d87dd768d40610f97e674dcaa6}} 
\index{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}!e2eDelay@{e2eDelay}}
\index{e2eDelay@{e2eDelay}!io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats@{io.agora.rtc2.IRtcEngineEventHandler.RemoteAudioStats}}
\doxysubsubsection{\texorpdfstring{e2eDelay}{e2eDelay}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+I\+Rtc\+Engine\+Event\+Handler.\+Remote\+Audio\+Stats.\+e2e\+Delay}

End-\/to-\/end audio delay (in milliseconds), which refers to the time from when the audio is captured by the remote user to when it is played by the local user. 