\hypertarget{classagora_1_1media_1_1_i_face_info_observer}{}\doxysection{agora\+::media\+::I\+Face\+Info\+Observer Class Reference}
\label{classagora_1_1media_1_1_i_face_info_observer}\index{agora::media::IFaceInfoObserver@{agora::media::IFaceInfoObserver}}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual bool \mbox{\hyperlink{classagora_1_1media_1_1_i_face_info_observer_ae65ab5014661665fd6d0a0839537c320}{on\+Face\+Info}} (const char $\ast$out\+Face\+Info)=0
\begin{DoxyCompactList}\small\item\em Occurs when the facial information processed by speech driven extension is received. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{classagora_1_1media_1_1_i_face_info_observer_ae65ab5014661665fd6d0a0839537c320}\label{classagora_1_1media_1_1_i_face_info_observer_ae65ab5014661665fd6d0a0839537c320}} 
\index{agora::media::IFaceInfoObserver@{agora::media::IFaceInfoObserver}!onFaceInfo@{onFaceInfo}}
\index{onFaceInfo@{onFaceInfo}!agora::media::IFaceInfoObserver@{agora::media::IFaceInfoObserver}}
\doxysubsubsection{\texorpdfstring{onFaceInfo()}{onFaceInfo()}}
{\footnotesize\ttfamily virtual bool agora\+::media\+::\+I\+Face\+Info\+Observer\+::on\+Face\+Info (\begin{DoxyParamCaption}\item[{const char $\ast$}]{out\+Face\+Info }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}}



Occurs when the facial information processed by speech driven extension is received. 


\begin{DoxyParams}{Parameters}
{\em out\+Face\+Info} & Output parameter, the J\+S\+ON string of the facial information processed by the voice driver plugin, including the following fields\+:
\begin{DoxyItemize}
\item faces\+: Object sequence. The collection of facial information, with each face corresponding to an object.
\item blendshapes\+: Object. The collection of face capture coefficients, named according to A\+Rkit standards, with each key-\/value pair representing a blendshape coefficient. The blendshape coefficient is a floating point number with a range of \mbox{[}0.\+0, 1.\+0\mbox{]}.
\item rotation\+: Object sequence. The rotation of the head, which includes the following three key-\/value pairs, with values as floating point numbers ranging from -\/180.\+0 to 180.\+0\+:
\begin{DoxyItemize}
\item pitch\+: Head pitch angle. A positve value means looking down, while a negative value means looking up.
\item yaw\+: Head yaw angle. A positve value means turning left, while a negative value means turning right.
\item roll\+: Head roll angle. A positve value means tilting to the right, while a negative value means tilting to the left.
\end{DoxyItemize}
\item timestamp\+: String. The timestamp of the output result, in milliseconds. Here is an example of J\+S\+ON\+: 
\begin{DoxyCode}{1}
\DoxyCodeLine{\{ "faces":[\{ "blendshapes":\{ "eyeBlinkLeft":0.9, "eyeLookDownLeft":0.0, "eyeLookInLeft":0.0,}
\DoxyCodeLine{"eyeLookOutLeft":0.0, "eyeLookUpLeft":0.0, "eyeSquintLeft":0.0, "eyeWideLeft":0.0,}
\DoxyCodeLine{"eyeBlinkRight":0.0, "eyeLookDownRight":0.0, "eyeLookInRight":0.0, "eyeLookOutRight":0.0,}
\DoxyCodeLine{"eyeLookUpRight":0.0, "eyeSquintRight":0.0, "eyeWideRight":0.0, "jawForward":0.0, "jawLeft":0.0,}
\DoxyCodeLine{"jawRight":0.0, "jawOpen":0.0, "mouthClose":0.0, "mouthFunnel":0.0, "mouthPucker":0.0,}
\DoxyCodeLine{"mouthLeft":0.0, "mouthRight":0.0, "mouthSmileLeft":0.0, "mouthSmileRight":0.0,}
\DoxyCodeLine{"mouthFrownLeft":0.0, "mouthFrownRight":0.0, "mouthDimpleLeft":0.0, "mouthDimpleRight":0.0,}
\DoxyCodeLine{"mouthStretchLeft":0.0, "mouthStretchRight":0.0, "mouthRollLower":0.0, "mouthRollUpper":0.0,}
\DoxyCodeLine{"mouthShrugLower":0.0, "mouthShrugUpper":0.0, "mouthPressLeft":0.0, "mouthPressRight":0.0,}
\DoxyCodeLine{"mouthLowerDownLeft":0.0, "mouthLowerDownRight":0.0, "mouthUpperUpLeft":0.0,}
\DoxyCodeLine{"mouthUpperUpRight":0.0, "browDownLeft":0.0, "browDownRight":0.0, "browInnerUp":0.0,}
\DoxyCodeLine{"browOuterUpLeft":0.0, "browOuterUpRight":0.0, "cheekPuff":0.0, "cheekSquintLeft":0.0,}
\DoxyCodeLine{"cheekSquintRight":0.0, "noseSneerLeft":0.0, "noseSneerRight":0.0, "tongueOut":0.0 \},}
\DoxyCodeLine{"rotation":\{"pitch":30.0, "yaw":25.5, "roll":-\/15.5\},}
\DoxyCodeLine{            \}], "timestamp":"654879876546" \}}
\end{DoxyCode}

\end{DoxyItemize}\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}

\begin{DoxyItemize}
\item {\ttfamily true}\+: Facial information J\+S\+ON parsing successful.
\item {\ttfamily false}\+: Facial information J\+S\+ON parsing failed. 
\end{DoxyItemize}
\end{DoxyReturn}
