Loading lib_enc/igf_enc_fx.c +90 −5 Original line number Diff line number Diff line Loading @@ -255,7 +255,7 @@ static void IGF_CalculateEnvelope( return; } #ifndef FIX_2346_DUPLICATED_IGF_FUNCTIONS /**********************************************************************/ /* writes IGF SCF values **************************************************************************/ Loading Loading @@ -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 **************************************************************************/ Loading Loading @@ -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 ); Loading Loading @@ -3173,7 +3253,7 @@ static void IGF_CalculateStereoEnvelope_fx( return; } #ifndef FIX_2346_DUPLICATED_IGF_FUNCTIONS /*-------------------------------------------------------------------* * IGF_WriteEnvelope() * Loading Loading @@ -3256,7 +3336,7 @@ static Word16 IGF_WriteEnvelope_ivas( return totBitCount; } #endif /*-------------------------------------------------------------------* * IGF_Whitening() * Loading Loading @@ -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 ); Loading Loading
lib_enc/igf_enc_fx.c +90 −5 Original line number Diff line number Diff line Loading @@ -255,7 +255,7 @@ static void IGF_CalculateEnvelope( return; } #ifndef FIX_2346_DUPLICATED_IGF_FUNCTIONS /**********************************************************************/ /* writes IGF SCF values **************************************************************************/ Loading Loading @@ -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 **************************************************************************/ Loading Loading @@ -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 ); Loading Loading @@ -3173,7 +3253,7 @@ static void IGF_CalculateStereoEnvelope_fx( return; } #ifndef FIX_2346_DUPLICATED_IGF_FUNCTIONS /*-------------------------------------------------------------------* * IGF_WriteEnvelope() * Loading Loading @@ -3256,7 +3336,7 @@ static Word16 IGF_WriteEnvelope_ivas( return totBitCount; } #endif /*-------------------------------------------------------------------* * IGF_Whitening() * Loading Loading @@ -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 ); Loading