Commit a0a080d8 authored by TYAGIRIS's avatar TYAGIRIS
Browse files

save the header bit(s)

parent e11198a7
Loading
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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 );

+14 −2
Original line number Diff line number Diff line
@@ -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 );
+10 −1
Original line number Diff line number Diff line
@@ -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 )
    {
@@ -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*/
+97 −0
Original line number Diff line number Diff line
@@ -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()
@@ -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;