Commit 64b7928e authored by Michael Sturm's avatar Michael Sturm
Browse files

Unifies IGF_WriteEnvelope function.

parent c4efb9f7
Loading
Loading
Loading
Loading
+90 −5
Original line number Diff line number Diff line
@@ -255,7 +255,7 @@ static void IGF_CalculateEnvelope(
    return;
}


#ifndef FIX_2346_DUPLICATED_IGF_FUNCTIONS
/**********************************************************************/ /*
writes IGF SCF values
**************************************************************************/
@@ -322,11 +322,87 @@ static void IGF_WriteEnvelope(
            IGFSCFEncoderRestoreContextState_fx( &hPrivateData->hIGFSCFArithEnc, igfGridIdx );
        }
    }
}
#else
/*-------------------------------------------------------------------*
 * IGF_WriteEnvelope()
 *
 * writes IGF SCF values
 *-------------------------------------------------------------------*/
/*! r: number of bits writen */
static Word16 IGF_WriteEnvelope(
    const IGF_ENC_INSTANCE_HANDLE hIGFEnc, /* i  : instance handle of IGF Encoder                                               */
    BSTR_ENC_HANDLE hBstr,                 /* i/o: encoder bitstream handle                                                     */
    Word16 *pBitOffset,                    /* i  : ptr to bitOffset counter                                                     */
    const Word16 igfGridIdx,               /* i  : igf grid index see declaration of IGF_GRID_IDX for details                   */
    const Word16 isIndepFlag,              /* i  : if 1 frame is independent, 0 = frame is coded with data from previous frame  */
    Word16 *igfAllZero,                    /* i  : returns 1 if all IGF scfs are zero, else 0                                   */
    const Word16 element_mode              /* i  : IVAS element mode type                                                       */
)
{
    IGF_ENC_PRIVATE_DATA_HANDLE hPrivateData;
    H_IGF_GRID hGrid;
    Word16 sfb;
    Word16 totBitCount;
    Word16 startBitCount;

    return;
    startBitCount = *pBitOffset;
    totBitCount = 0;
    *igfAllZero = 1;
    move16();
    move16();
    move16();
    hPrivateData = &hIGFEnc->igfData;
    hGrid = &hPrivateData->igfInfo.grid[igfGridIdx];

    FOR( sfb = hGrid->startSfb; sfb < hGrid->stopSfb; sfb++ )
    {
        IF( hPrivateData->igfScfQuantized[sfb] != 0 )
        {
            *igfAllZero = 0;
            move16();
            BREAK;
        }
    }

    IF( *igfAllZero != 0 )
    {
        IGF_write_bit_fx( hBstr, pBitOffset, 1 );

        if ( NULL == hBstr )
        {
            IGFSCFEncoderSaveContextState_fx( &hPrivateData->hIGFSCFArithEnc, igfGridIdx );
        }

        IGFSCFEncoderReset_fx( &hPrivateData->hIGFSCFArithEnc );

        if ( NULL == hBstr )
        {
            IGFSCFEncoderRestoreContextState_fx( &hPrivateData->hIGFSCFArithEnc, igfGridIdx );
        }
    }
    ELSE
    {
        IGF_write_bit_fx( hBstr, pBitOffset, 0 );

        if ( NULL == hBstr )
        {
            IGFSCFEncoderSaveContextState_fx( &hPrivateData->hIGFSCFArithEnc, igfGridIdx );
        }

        *pBitOffset = IGFSCFEncoderEncode_fx( &hPrivateData->hIGFSCFArithEnc, hBstr, *pBitOffset, &hPrivateData->igfScfQuantized[hGrid->startSfb], igfGridIdx, element_mode, isIndepFlag );
        move16();

        if ( NULL == hBstr )
        {
            IGFSCFEncoderRestoreContextState_fx( &hPrivateData->hIGFSCFArithEnc, igfGridIdx );
        }
    }
    totBitCount = sub( *pBitOffset, startBitCount );

    return totBitCount;
}
#endif
/**********************************************************************/ /*
identifies significant spectral content
**************************************************************************/
@@ -1431,7 +1507,11 @@ Word16 IGFEncWriteBitstream_fx(
        move16();
    }

#ifdef FIX_2346_DUPLICATED_IGF_FUNCTIONS
    IGF_WriteEnvelope( hInstance, hBstr, pBitOffset, igfGridIdx, isIndepFlag, &igfAllZero, EVS_MONO );
#else
    IGF_WriteEnvelope( hInstance, hBstr, pBitOffset, igfGridIdx, isIndepFlag, &igfAllZero );
#endif

    IGF_WriteWhiteningLevels_fx( hInstance, hBstr, pBitOffset, igfGridIdx, isIndepFlag );

@@ -3173,7 +3253,7 @@ static void IGF_CalculateStereoEnvelope_fx(
    return;
}


#ifndef FIX_2346_DUPLICATED_IGF_FUNCTIONS
/*-------------------------------------------------------------------*
 * IGF_WriteEnvelope()
 *
@@ -3256,7 +3336,7 @@ static Word16 IGF_WriteEnvelope_ivas(
    return totBitCount;
}


#endif
/*-------------------------------------------------------------------*
 * IGF_Whitening()
 *
@@ -3941,7 +4021,12 @@ Word16 IGFEncWriteBitstream_ivas_fx(
        move16();
    }


#ifdef FIX_2346_DUPLICATED_IGF_FUNCTIONS
    IGF_WriteEnvelope( hIGFEnc, hBstr, pBitOffset, igfGridIdx, isIndepFlag, &igfAllZero, IVAS_SCE );
#else
    IGF_WriteEnvelope_ivas( hIGFEnc, hBstr, pBitOffset, igfGridIdx, isIndepFlag, &igfAllZero );
#endif

    IGF_WriteWhiteningLevels_ivas_fx( hIGFEnc, hBstr, pBitOffset, igfGridIdx, isIndepFlag );