Loading lib_rend/ivas_dirac_dec_binaural_functions.c +8 −11 Original line number Diff line number Diff line Loading @@ -854,27 +854,24 @@ static void ivas_dirac_dec_binaural_internal( #ifdef SPLIT_REND_WITH_HEAD_ROT_MASA if ( pMultiBinPoseData != NULL && pMultiBinPoseData->num_poses > 1 ) { /* quaternion-based rotation from ivas_binRenderer_internal.c:ivas_binRenderer() */ IVAS_QUATERNION Quaternions_rel, Quaternions_abs, *Quaternions_ref; /* quaternion-based rotation from ivas_binRenderer_internal.c:ivas_binRenderer(), but using absolute rotation instead of delta rotations */ IVAS_QUATERNION Quaternions_rot, Quaternions_abs, *Quaternions_ref; float Rmat_local[3][3]; if ( hCombinedOrientationData ) { Quaternions_ref = &hCombinedOrientationData->Quaternions[0]; Quaternions_rel.w = -3.0f; /*euler*/ Quaternions_rot.w = -3.0f; /*euler*/ Quaternions_abs.w = -3.0f; /*euler*/ Quat2EulerDegree( *Quaternions_ref, &Quaternions_abs.z, &Quaternions_abs.y, &Quaternions_abs.x ); /*order in Quat2Euler seems to be reversed ?*/ for ( pos_idx = 1; pos_idx < pMultiBinPoseData->num_poses; pos_idx++ ) { Quaternions_rel.x = pMultiBinPoseData->relative_head_poses[pos_idx][0] - pMultiBinPoseData->relative_head_poses[pos_idx - 1][0]; Quaternions_rel.y = pMultiBinPoseData->relative_head_poses[pos_idx][1] - pMultiBinPoseData->relative_head_poses[pos_idx - 1][1]; Quaternions_rel.z = pMultiBinPoseData->relative_head_poses[pos_idx][2] - pMultiBinPoseData->relative_head_poses[pos_idx - 1][2]; Quaternions_abs.x = Quaternions_abs.x + Quaternions_rel.x; Quaternions_abs.y = Quaternions_abs.y + Quaternions_rel.y; Quaternions_abs.z = Quaternions_abs.z + Quaternions_rel.z; Quaternions_rot.x = Quaternions_abs.x + pMultiBinPoseData->relative_head_poses[pos_idx][0]; Quaternions_rot.y = Quaternions_abs.y + pMultiBinPoseData->relative_head_poses[pos_idx][1]; Quaternions_rot.z = Quaternions_abs.z + pMultiBinPoseData->relative_head_poses[pos_idx][2]; QuatToRotMat( Quaternions_rel, Rmat_local ); QuatToRotMat( Quaternions_rot, Rmat_local ); hDiracDecBin = st_ivas->hDiracDecBin[pos_idx]; assert(hDiracDecBin != NULL && "No DiracDecBin handle for this position"); Loading Loading
lib_rend/ivas_dirac_dec_binaural_functions.c +8 −11 Original line number Diff line number Diff line Loading @@ -854,27 +854,24 @@ static void ivas_dirac_dec_binaural_internal( #ifdef SPLIT_REND_WITH_HEAD_ROT_MASA if ( pMultiBinPoseData != NULL && pMultiBinPoseData->num_poses > 1 ) { /* quaternion-based rotation from ivas_binRenderer_internal.c:ivas_binRenderer() */ IVAS_QUATERNION Quaternions_rel, Quaternions_abs, *Quaternions_ref; /* quaternion-based rotation from ivas_binRenderer_internal.c:ivas_binRenderer(), but using absolute rotation instead of delta rotations */ IVAS_QUATERNION Quaternions_rot, Quaternions_abs, *Quaternions_ref; float Rmat_local[3][3]; if ( hCombinedOrientationData ) { Quaternions_ref = &hCombinedOrientationData->Quaternions[0]; Quaternions_rel.w = -3.0f; /*euler*/ Quaternions_rot.w = -3.0f; /*euler*/ Quaternions_abs.w = -3.0f; /*euler*/ Quat2EulerDegree( *Quaternions_ref, &Quaternions_abs.z, &Quaternions_abs.y, &Quaternions_abs.x ); /*order in Quat2Euler seems to be reversed ?*/ for ( pos_idx = 1; pos_idx < pMultiBinPoseData->num_poses; pos_idx++ ) { Quaternions_rel.x = pMultiBinPoseData->relative_head_poses[pos_idx][0] - pMultiBinPoseData->relative_head_poses[pos_idx - 1][0]; Quaternions_rel.y = pMultiBinPoseData->relative_head_poses[pos_idx][1] - pMultiBinPoseData->relative_head_poses[pos_idx - 1][1]; Quaternions_rel.z = pMultiBinPoseData->relative_head_poses[pos_idx][2] - pMultiBinPoseData->relative_head_poses[pos_idx - 1][2]; Quaternions_abs.x = Quaternions_abs.x + Quaternions_rel.x; Quaternions_abs.y = Quaternions_abs.y + Quaternions_rel.y; Quaternions_abs.z = Quaternions_abs.z + Quaternions_rel.z; Quaternions_rot.x = Quaternions_abs.x + pMultiBinPoseData->relative_head_poses[pos_idx][0]; Quaternions_rot.y = Quaternions_abs.y + pMultiBinPoseData->relative_head_poses[pos_idx][1]; Quaternions_rot.z = Quaternions_abs.z + pMultiBinPoseData->relative_head_poses[pos_idx][2]; QuatToRotMat( Quaternions_rel, Rmat_local ); QuatToRotMat( Quaternions_rot, Rmat_local ); hDiracDecBin = st_ivas->hDiracDecBin[pos_idx]; assert(hDiracDecBin != NULL && "No DiracDecBin handle for this position"); Loading