Loading lib_isar/isar_prot.h +14 −0 Original line number Diff line number Diff line Loading @@ -276,6 +276,20 @@ void isar_renderSplitGetMultiBinPoseData( MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, const ISAR_SPLIT_REND_ROT_AXIS rot_axis ); #ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS int16_t isar_renderSplitGetRot_axisNumBits( const int16_t dof ); ISAR_SPLIT_REND_ROT_AXIS isar_renderSplitGetRot_axisFromCode( const int16_t dof, const int16_t code ); int16_t isar_renderSplitGetCodeFromRot_axis( const int16_t dof, const ISAR_SPLIT_REND_ROT_AXIS rot_axis, int16_t *num_bits ); #endif void isar_init_split_post_rend_handles( ISAR_SPLIT_POST_REND_WRAPPER *hSplitRendWrapper ); Loading lib_isar/isar_splitRendererPost.c +14 −2 Original line number Diff line number Diff line Loading @@ -748,16 +748,28 @@ void isar_splitBinPostRendMdDec( ISAR_SPLIT_REND_CONFIG_DATA split_rend_config; ISAR_SPLIT_REND_ROT_AXIS rot_axis; #ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS int16_t ro_md_flag; int16_t ro_md_flag, num_bits, axis_code; #endif hBinHrSplitPostRend->low_Res = 1; split_rend_config.dof = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_DOF_BITS ); split_rend_config.hq_mode = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_HQ_MODE_BITS ); rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_ROT_AXIS_BITS ); #ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS num_bits = isar_renderSplitGetRot_axisNumBits( split_rend_config.dof ); if ( num_bits > 0 ) { axis_code = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, (int32_t) num_bits ); } else { axis_code = 0; } rot_axis = isar_renderSplitGetRot_axisFromCode( split_rend_config.dof, axis_code ); ro_md_flag = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_RO_FLAG_BITS ); #else rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_ROT_AXIS_BITS ); #endif isar_renderSplitGetMultiBinPoseData( &split_rend_config, pMultiBinPoseData, rot_axis ); Loading lib_isar/isar_splitRendererPre.c +10 −1 Original line number Diff line number Diff line Loading @@ -1291,6 +1291,9 @@ static void isar_SplitRenderer_quant_code( float pred_1byquantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; float pred_quantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; ISAR_BIN_HR_SPLIT_REND_MD_HANDLE hMd; #ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS int16_t rot_axis_code, num_bits; #endif if ( low_res_pre_rend_rot ) { Loading @@ -1305,9 +1308,15 @@ static void isar_SplitRenderer_quant_code( ISAR_SPLIT_REND_BITStream_write_int32( pBits, pMultiBinPoseData->dof, ISAR_SPLIT_REND_DOF_BITS ); ISAR_SPLIT_REND_BITStream_write_int32( pBits, pMultiBinPoseData->hq_mode, ISAR_SPLIT_REND_HQ_MODE_BITS ); ISAR_SPLIT_REND_BITStream_write_int32( pBits, (int32_t) pMultiBinPoseData->rot_axis, ISAR_SPLIT_REND_ROT_AXIS_BITS ); #ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS rot_axis_code = isar_renderSplitGetCodeFromRot_axis( pMultiBinPoseData->dof, pMultiBinPoseData->rot_axis, &num_bits ); if ( num_bits > 0 ) { ISAR_SPLIT_REND_BITStream_write_int32( pBits, (int32_t) rot_axis_code, num_bits ); } ISAR_SPLIT_REND_BITStream_write_int32( pBits, (int32_t) ro_md_flag, ISAR_SPLIT_REND_RO_FLAG_BITS ); #else ISAR_SPLIT_REND_BITStream_write_int32( pBits, (int32_t) pMultiBinPoseData->rot_axis, ISAR_SPLIT_REND_ROT_AXIS_BITS ); #endif /* code ref pose*/ Loading lib_isar/isar_splitRenderer_utils.c +97 −0 Original line number Diff line number Diff line Loading @@ -905,6 +905,99 @@ void isar_split_rend_get_quant_params( return; } #ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS /*------------------------------------------------------------------------- * Function isar_renderSplitGetRot_axisNumBits() * * *------------------------------------------------------------------------*/ int16_t isar_renderSplitGetRot_axisNumBits( const int16_t dof ) { int16_t num_bits; if ( dof < 3 ) { num_bits = 2; } else { num_bits = 0; } return num_bits; } /*------------------------------------------------------------------------- * Function isar_renderSplitGetRot_axisFromCode() * * *------------------------------------------------------------------------*/ ISAR_SPLIT_REND_ROT_AXIS isar_renderSplitGetRot_axisFromCode( const int16_t dof, const int16_t code ) { ISAR_SPLIT_REND_ROT_AXIS rot_axis; if ( dof == 1 ) { rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) code; } else if ( dof == 2 ) { if ( code == 0 ) { rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) code; } else { rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) ( code - 1 ) + YAW_PITCH; } } else { rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) DEFAULT_AXIS; } return rot_axis; } /*------------------------------------------------------------------------- * Function isar_renderSplitGetCodeFromRot_axis() * * *------------------------------------------------------------------------*/ int16_t isar_renderSplitGetCodeFromRot_axis( const int16_t dof, const ISAR_SPLIT_REND_ROT_AXIS rot_axis, int16_t *num_bits ) { int16_t code = 0; if ( dof == 1 ) { code = (int16_t) rot_axis; } else if ( dof == 2 ) { if ( rot_axis == DEFAULT_AXIS ) { code = (int16_t) rot_axis; } else { code = (int16_t) ( rot_axis - YAW_PITCH ) + 1; } } else { code = (int16_t) DEFAULT_AXIS; } *num_bits = isar_renderSplitGetRot_axisNumBits( dof ); return code; } #endif /*------------------------------------------------------------------------- * Function isar_renderSplitGetMultiBinPoseData() Loading Loading @@ -970,15 +1063,19 @@ void isar_renderSplitGetMultiBinPoseData( switch ( rot_axis ) { case DEFAULT_AXIS: #ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS case YAW: case PITCH: #endif case YAW_PITCH: { num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES; num_pitch_poses = SPLIT_REND_MAX_PITCH_ONLY_POSES; break; } #ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS case ROLL: #endif case YAW_ROLL: { num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES; Loading Loading
lib_isar/isar_prot.h +14 −0 Original line number Diff line number Diff line Loading @@ -276,6 +276,20 @@ void isar_renderSplitGetMultiBinPoseData( MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, const ISAR_SPLIT_REND_ROT_AXIS rot_axis ); #ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS int16_t isar_renderSplitGetRot_axisNumBits( const int16_t dof ); ISAR_SPLIT_REND_ROT_AXIS isar_renderSplitGetRot_axisFromCode( const int16_t dof, const int16_t code ); int16_t isar_renderSplitGetCodeFromRot_axis( const int16_t dof, const ISAR_SPLIT_REND_ROT_AXIS rot_axis, int16_t *num_bits ); #endif void isar_init_split_post_rend_handles( ISAR_SPLIT_POST_REND_WRAPPER *hSplitRendWrapper ); Loading
lib_isar/isar_splitRendererPost.c +14 −2 Original line number Diff line number Diff line Loading @@ -748,16 +748,28 @@ void isar_splitBinPostRendMdDec( ISAR_SPLIT_REND_CONFIG_DATA split_rend_config; ISAR_SPLIT_REND_ROT_AXIS rot_axis; #ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS int16_t ro_md_flag; int16_t ro_md_flag, num_bits, axis_code; #endif hBinHrSplitPostRend->low_Res = 1; split_rend_config.dof = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_DOF_BITS ); split_rend_config.hq_mode = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_HQ_MODE_BITS ); rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_ROT_AXIS_BITS ); #ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS num_bits = isar_renderSplitGetRot_axisNumBits( split_rend_config.dof ); if ( num_bits > 0 ) { axis_code = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, (int32_t) num_bits ); } else { axis_code = 0; } rot_axis = isar_renderSplitGetRot_axisFromCode( split_rend_config.dof, axis_code ); ro_md_flag = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_RO_FLAG_BITS ); #else rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_ROT_AXIS_BITS ); #endif isar_renderSplitGetMultiBinPoseData( &split_rend_config, pMultiBinPoseData, rot_axis ); Loading
lib_isar/isar_splitRendererPre.c +10 −1 Original line number Diff line number Diff line Loading @@ -1291,6 +1291,9 @@ static void isar_SplitRenderer_quant_code( float pred_1byquantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; float pred_quantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; ISAR_BIN_HR_SPLIT_REND_MD_HANDLE hMd; #ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS int16_t rot_axis_code, num_bits; #endif if ( low_res_pre_rend_rot ) { Loading @@ -1305,9 +1308,15 @@ static void isar_SplitRenderer_quant_code( ISAR_SPLIT_REND_BITStream_write_int32( pBits, pMultiBinPoseData->dof, ISAR_SPLIT_REND_DOF_BITS ); ISAR_SPLIT_REND_BITStream_write_int32( pBits, pMultiBinPoseData->hq_mode, ISAR_SPLIT_REND_HQ_MODE_BITS ); ISAR_SPLIT_REND_BITStream_write_int32( pBits, (int32_t) pMultiBinPoseData->rot_axis, ISAR_SPLIT_REND_ROT_AXIS_BITS ); #ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS rot_axis_code = isar_renderSplitGetCodeFromRot_axis( pMultiBinPoseData->dof, pMultiBinPoseData->rot_axis, &num_bits ); if ( num_bits > 0 ) { ISAR_SPLIT_REND_BITStream_write_int32( pBits, (int32_t) rot_axis_code, num_bits ); } ISAR_SPLIT_REND_BITStream_write_int32( pBits, (int32_t) ro_md_flag, ISAR_SPLIT_REND_RO_FLAG_BITS ); #else ISAR_SPLIT_REND_BITStream_write_int32( pBits, (int32_t) pMultiBinPoseData->rot_axis, ISAR_SPLIT_REND_ROT_AXIS_BITS ); #endif /* code ref pose*/ Loading
lib_isar/isar_splitRenderer_utils.c +97 −0 Original line number Diff line number Diff line Loading @@ -905,6 +905,99 @@ void isar_split_rend_get_quant_params( return; } #ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS /*------------------------------------------------------------------------- * Function isar_renderSplitGetRot_axisNumBits() * * *------------------------------------------------------------------------*/ int16_t isar_renderSplitGetRot_axisNumBits( const int16_t dof ) { int16_t num_bits; if ( dof < 3 ) { num_bits = 2; } else { num_bits = 0; } return num_bits; } /*------------------------------------------------------------------------- * Function isar_renderSplitGetRot_axisFromCode() * * *------------------------------------------------------------------------*/ ISAR_SPLIT_REND_ROT_AXIS isar_renderSplitGetRot_axisFromCode( const int16_t dof, const int16_t code ) { ISAR_SPLIT_REND_ROT_AXIS rot_axis; if ( dof == 1 ) { rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) code; } else if ( dof == 2 ) { if ( code == 0 ) { rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) code; } else { rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) ( code - 1 ) + YAW_PITCH; } } else { rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) DEFAULT_AXIS; } return rot_axis; } /*------------------------------------------------------------------------- * Function isar_renderSplitGetCodeFromRot_axis() * * *------------------------------------------------------------------------*/ int16_t isar_renderSplitGetCodeFromRot_axis( const int16_t dof, const ISAR_SPLIT_REND_ROT_AXIS rot_axis, int16_t *num_bits ) { int16_t code = 0; if ( dof == 1 ) { code = (int16_t) rot_axis; } else if ( dof == 2 ) { if ( rot_axis == DEFAULT_AXIS ) { code = (int16_t) rot_axis; } else { code = (int16_t) ( rot_axis - YAW_PITCH ) + 1; } } else { code = (int16_t) DEFAULT_AXIS; } *num_bits = isar_renderSplitGetRot_axisNumBits( dof ); return code; } #endif /*------------------------------------------------------------------------- * Function isar_renderSplitGetMultiBinPoseData() Loading Loading @@ -970,15 +1063,19 @@ void isar_renderSplitGetMultiBinPoseData( switch ( rot_axis ) { case DEFAULT_AXIS: #ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS case YAW: case PITCH: #endif case YAW_PITCH: { num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES; num_pitch_poses = SPLIT_REND_MAX_PITCH_ONLY_POSES; break; } #ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS case ROLL: #endif case YAW_ROLL: { num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES; Loading