diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 44be5808dbafc8ff53e5e0f796ee68bfede43c68..886fa96f1ee6c66ee0db06dbb82517f8db122612 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1677,7 +1677,7 @@ ivas-pytest-enc-usan:
before_script:
- CLANG_NUM=3
- DUT_DECODER_PATH=./$REF_DECODER_PATH
- - TEST_SUITE=$SHORT_TEST_SUITE_ENCODER
+ - TEST_SUITE=$LONG_TEST_SUITE_ENCODER
<<: *ivas-pytest-sanitizers-anchor
### jobs that test flt encoder -> fx decoder
@@ -1767,7 +1767,7 @@ ivas-pytest-dec-usan:
before_script:
- CLANG_NUM=3
- DUT_ENCODER_PATH=./$REF_ENCODER_PATH
- - TEST_SUITE=$SHORT_TEST_SUITE
+ - TEST_SUITE=$LONG_TEST_SUITE_NO_RENDERER
<<: *ivas-pytest-sanitizers-anchor
# ---------------------------------------------------------------
diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj
index 2ca8b2dfb26f1a268b7a4dd743529c8e2261d4df..17b82663162d0b2d58e628269ecbaef86ab3c4cc 100644
--- a/Workspace_msvc/lib_rend.vcxproj
+++ b/Workspace_msvc/lib_rend.vcxproj
@@ -178,7 +178,7 @@
-
+
diff --git a/Workspace_msvc/lib_rend.vcxproj.filters b/Workspace_msvc/lib_rend.vcxproj.filters
index 47b4fee016dc94ad61f00c2602859943261c3412..5c4a4901111136b5ce1c1406701ffe10e156b86b 100644
--- a/Workspace_msvc/lib_rend.vcxproj.filters
+++ b/Workspace_msvc/lib_rend.vcxproj.filters
@@ -125,9 +125,6 @@
-
- rend_h
-
rend_h
@@ -143,6 +140,9 @@
rend_h
+
+ rend_h
+
diff --git a/lib_com/bitstream.c b/lib_com/bitstream.c
index 9c0a53f8f541644be805662bdde778e026fd1a7c..79a659eb08094da54b43617b4ee77772b5a21c66 100644
--- a/lib_com/bitstream.c
+++ b/lib_com/bitstream.c
@@ -43,7 +43,6 @@
#include "stat_dec.h"
#include "rom_com.h"
#include "mime.h"
-#include "ivas_prot.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
@@ -1319,33 +1318,6 @@ UWord16 get_indice_st(
}
#define WMC_TOOL_SKIP
-/*-------------------------------------------------------------------*
- * reset_indices_enc()
- *
- * Reset the buffer of encoder indices
- *-------------------------------------------------------------------*/
-
-void reset_indices_enc(
- BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */
- const Word16 max_num_indices /* i : max number of indices */
-)
-{
- Word16 i;
-
- hBstr->nb_bits_tot = 0;
- move16();
- hBstr->nb_ind_tot = 0;
- move16();
-
- FOR( i = 0; i < max_num_indices; i++ )
- {
- hBstr->ind_list[i].nb_bits = -1;
- move16();
- }
-
- return;
-}
-
/*-------------------------------------------------------------------*
* reset_indices_dec()
*
@@ -1534,21 +1506,21 @@ static ivas_error write_indices_element_fx(
{
IF( st_ivas->hSCE[element_id]->hMetaData != NULL )
{
- reset_indices_enc( st_ivas->hSCE[element_id]->hMetaData, st_ivas->hSCE[element_id]->hMetaData->nb_ind_tot );
+ reset_indices_enc_fx( st_ivas->hSCE[element_id]->hMetaData, st_ivas->hSCE[element_id]->hMetaData->nb_ind_tot );
}
- reset_indices_enc( sts[0]->hBstr, sts[0]->hBstr->nb_ind_tot );
+ reset_indices_enc_fx( sts[0]->hBstr, sts[0]->hBstr->nb_ind_tot );
}
ELSE
{
IF( st_ivas->hCPE[element_id]->hMetaData != NULL )
{
- reset_indices_enc( st_ivas->hCPE[element_id]->hMetaData, st_ivas->hCPE[element_id]->hMetaData->nb_ind_tot );
+ reset_indices_enc_fx( st_ivas->hCPE[element_id]->hMetaData, st_ivas->hCPE[element_id]->hMetaData->nb_ind_tot );
}
FOR( n = 0; n < n_channels; n++ )
{
- reset_indices_enc( sts[n]->hBstr, sts[n]->hBstr->nb_ind_tot );
+ reset_indices_enc_fx( sts[n]->hBstr, sts[n]->hBstr->nb_ind_tot );
}
}
@@ -2060,67 +2032,84 @@ void ivas_set_bitstream_pointers(
*-------------------------------------------------------------------*/
/*! r: 1 = reading OK, 0 = problem */
-ivas_error read_indices(
+ivas_error read_indices_fx(
Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- uint16_t bit_stream[], /* i : bitstream buffer */
+ UWord16 bit_stream[], /* i : bitstream buffer */
UWord16 num_bits, /* i : number of bits in bitstream */
- int16_t *prev_ft_speech,
- int16_t *CNG,
- int16_t bfi /* i : bad frame indicator */
+ Word16 *prev_ft_speech,
+ Word16 *CNG,
+ Word16 bfi /* i : bad frame indicator */
)
{
- int16_t k;
+ Word16 k;
Decoder_State **sts;
- int32_t total_brate = 0;
- int16_t curr_ft_good_sp, curr_ft_bad_sp;
- int16_t g192_sid_first, sid_upd_bad, sid_update;
- int16_t speech_bad, speech_lost;
- int16_t n;
+ Word32 total_brate = 0;
+ move32();
+ Word16 curr_ft_good_sp, curr_ft_bad_sp;
+ Word16 g192_sid_first, sid_upd_bad, sid_update;
+ Word16 speech_bad, speech_lost;
+ Word16 n;
ivas_error error;
error = IVAS_ERR_OK;
+ move32();
st_ivas->BER_detect = 0;
+ move16();
st_ivas->num_bits = num_bits;
+ move16();
sts = reset_elements( st_ivas );
st_ivas->bfi = bfi;
+ move16();
/* convert the frame length to total bitrate */
- total_brate = (int32_t) ( num_bits * FRAMES_PER_SEC );
+ total_brate = imult3216( num_bits, FRAMES_PER_SEC );
+ move32();
/* verify that a valid num bits value is present in the G.192 file */
/* only AMRWB, EVS or IVAS bitrates or 0(NO DATA) are allowed in G.192 file frame reading */
- if ( st_ivas->ivas_format != MONO_FORMAT )
+ IF( NE_32( st_ivas->ivas_format, MONO_FORMAT ) )
{
k = 0;
- while ( k < SIZE_IVAS_BRATE_TBL && total_brate != ivas_brate_tbl[k] )
+ move16();
+
+ test();
+ WHILE( LT_16( k, SIZE_IVAS_BRATE_TBL ) && NE_32( total_brate, ivas_brate_tbl[k] ) )
{
- k++;
+ k = add( k, 1 );
}
- if ( st_ivas->ivas_format == ISM_FORMAT && ( k < SIZE_IVAS_BRATE_TBL || total_brate <= SID_2k40 ) )
+ test();
+ test();
+ test();
+ test();
+ IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) && ( LT_16( k, SIZE_IVAS_BRATE_TBL ) || LE_32( total_brate, SID_2k40 ) ) )
{
st_ivas->element_mode_init = IVAS_SCE;
+ move16();
}
- else if ( ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == MASA_FORMAT ) && ( total_brate <= SID_2k40 ) )
+ ELSE IF( ( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) || EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) && LE_32( total_brate, SID_2k40 ) )
{
st_ivas->element_mode_init = IVAS_SCE;
+ move16();
}
- else if ( k == SIZE_IVAS_BRATE_TBL )
+ ELSE IF( EQ_16( k, SIZE_IVAS_BRATE_TBL ) )
{
return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error, illegal bitrate (%d) in the G.192 frame ! Exiting ! \n", total_brate );
}
- else
+ ELSE
{
st_ivas->element_mode_init = -1;
+ move16();
}
}
- else /* AMRWB or EVS */
+ ELSE /* AMRWB or EVS */
{
st_ivas->element_mode_init = EVS_MONO;
+ move16();
- if ( rate2EVSmode_float( total_brate, NULL ) < 0 ) /* negative value means that a valid rate was not found */
+ IF( rate2EVSmode_float( total_brate, NULL ) < 0 ) /* negative value means that a valid rate was not found */
{
return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error, illegal bitrate (%d) in the G.192 frame ! Exiting ! \n", total_brate );
}
@@ -2130,47 +2119,58 @@ ivas_error read_indices(
/* handle SID_FIRST, SID_BAD, SPEECH_LOST, NO_DATA as properly as possible for the ITU-T G.192 format */
/* (total_brate, bfi , st_CNG) = rx_handler(received frame type, [previous frame type], past CNG state, past core) */
curr_ft_good_sp = 0;
+ move16();
curr_ft_bad_sp = 0;
+ move16();
- if ( is_DTXrate( total_brate ) == 0 )
+ IF( is_DTXrate( total_brate ) == 0 )
{
- if ( st_ivas->bfi == 0 )
+ IF( st_ivas->bfi == 0 )
{
curr_ft_good_sp = 1;
+ move16();
}
- else
+ ELSE
{
curr_ft_bad_sp = 1;
+ move16();
}
}
sid_update = 0;
+ move16();
sid_upd_bad = 0;
- if ( is_SIDrate( total_brate ) == 1 )
+ move16();
+ IF( EQ_16( is_SIDrate( total_brate ), 1 ) )
{
- if ( st_ivas->bfi == 0 )
+ IF( st_ivas->bfi == 0 )
{
sid_update = 1;
+ move16();
}
- else
+ ELSE
{
sid_upd_bad = 1; /* this frame type may happen in ETSI/3GPP CS cases, a corrupt SID frames */
+ move16();
}
}
/* all zero indices/bits iSP AMRWB SID_update results in a valid LP filter with extremely high LP-filter-gain */
/* all zero indices/bits may be a result of CS bit errors and/or erroneously injected by gateways or by a bad dejitter handlers */
- if ( total_brate == SID_1k75 && sid_update == 1 )
+ test();
+ IF( EQ_32( total_brate, SID_1k75 ) && EQ_16( sid_update, 1 ) )
{
/* valid sid_update received, check for very risky but formally valid content */
- int16_t sum = 0;
- for ( k = 0; k < num_bits; ++k )
+ Word16 sum = 0;
+ move16();
+ FOR( k = 0; k < num_bits; ++k )
{
- sum += ( bit_stream[k] == 1 ); /* check of 35 zeroes */
+ sum = add( sum, extract_l( EQ_32( bit_stream[k], 1 ) ) ); /* check of 35 zeroes */
}
if ( sum == 0 )
{ /* all zeros */
sid_upd_bad = 1; /* initial signal as corrupt (BER likely) */
+ move16();
}
}
@@ -2181,14 +2181,22 @@ ivas_error read_indices(
Here we inhibit use of the SID-length info, even though it is available in the G.192 file format after STL/EID-XOR .
*/
- if ( sid_upd_bad )
+ IF( sid_upd_bad )
{
sid_upd_bad = 0;
+ move16();
total_brate = FRAME_NO_DATA; /* treat SID_BAD as a stolen signaling frame --> SPEECH LOST */
+ move32();
}
g192_sid_first = 0;
- if ( st_ivas->ivas_format == MONO_FORMAT && sts[0]->core == AMR_WB_CORE && *prev_ft_speech && total_brate == FRAME_NO_DATA && st_ivas->bfi == 0 )
+ move16();
+
+ test();
+ test();
+ test();
+ test();
+ if ( EQ_32( st_ivas->ivas_format, MONO_FORMAT ) && EQ_16( sts[0]->core, AMR_WB_CORE ) && *prev_ft_speech && total_brate == FRAME_NO_DATA && st_ivas->bfi == 0 )
{
g192_sid_first = 1; /* SID_FIRST detected for previous AMRWB/AMRWBIO active frames only */
/* It is not possible to perfectly simulate rate switching conditions EVS->AMRWBIO where:
@@ -2196,104 +2204,135 @@ ivas_error read_indices(
and a good length 0 "SID_FIRST"(NO_DATA) frame is sent in AMRWBIO,
due to the one frame state memory in the AMRWB legacy G.192 SID_FIRST encoding
*/
+ move16();
}
speech_bad = 0;
+ move16();
+
+ test();
if ( st_ivas->bfi != 0 && ( is_DTXrate( total_brate ) == 0 ) )
{
speech_bad = 1; /* initial ft assumption, CNG_state decides what to do */
+ move16();
}
speech_lost = 0;
+ move16();
+
+ test();
if ( total_brate == FRAME_NO_DATA && st_ivas->bfi != 0 ) /* unsent NO_DATA or stolen NO_DATA/signaling frame */
{
speech_lost = 1; /* initial ft assumption, CNG_state decides what to do */
+ move16();
}
/* Do not allow decoder to enter CNG-synthesis for any instantly received GOOD+LENGTH==0 frame
as this frame was never transmitted, one can not know it is good and has a a length of zero ) */
- if ( *CNG != 0 )
+ IF( *CNG != 0 )
{
/* We were in CNG synthesis */
if ( curr_ft_good_sp != 0 )
{
/* only a good speech frame makes you leave CNG synthesis */
*CNG = 0;
+ move16();
}
}
- else
+ ELSE
{
/* We were in SPEECH synthesis */
/* only a received/detected SID frame can make the decoder enter into CNG synthsis */
+ test();
+ test();
if ( g192_sid_first || sid_update || sid_upd_bad )
{
*CNG = 1;
+ move16();
}
}
/* set bfi, total_brate pair for proper decoding */
/* handle the G.192 _simulated_ untransmitted NO_DATA frame, setting for decoder SPEECH synthesis */
+ test();
+ test();
if ( *CNG == 0 && total_brate == FRAME_NO_DATA && st_ivas->bfi == 0 )
{
st_ivas->bfi = 1; /* SPEECH PLC code will now become active as in a real system */
/* total_brate= 0 */
+ move16();
}
/* handle bad/lost speech frame(and CS bad SID frame) in the decoders CNG synthesis settings pair (total_brate, bfi) */
- if ( (
- bfi != FRAMEMODE_FUTURE &&
- ( *CNG != 0 ) && ( ( speech_bad != 0 ) || ( speech_lost != 0 ) ) ) || /* SP_BAD or SPEECH_LOST) --> stay in CNG */
- ( sid_upd_bad != 0 ) ) /* SID_UPD_BAD --> start CNG */
+ test();
+ test();
+ test();
+ test();
+ IF( (
+ NE_16( bfi, FRAMEMODE_FUTURE ) &&
+ ( *CNG != 0 ) && ( ( speech_bad != 0 ) || ( speech_lost != 0 ) ) ) || /* SP_BAD or SPEECH_LOST) --> stay in CNG */
+ ( sid_upd_bad != 0 ) ) /* SID_UPD_BAD --> start CNG */
{
st_ivas->bfi = 0; /* bfi=0 needed to activate CNG code */
+ move16();
total_brate = FRAME_NO_DATA;
+ move32();
}
/* update for next frame's G.192 file format's odd SID_FIRST detection (primarily for AMRWBIO) */
+ test();
*prev_ft_speech = ( ( curr_ft_good_sp != 0 ) || ( curr_ft_bad_sp != 0 ) );
+ move16();
/* st->total brate= total_brate; updated in a good frame below */
- for ( k = 0; k < st_ivas->nCPE; k++ )
+ FOR( k = 0; k < st_ivas->nCPE; k++ )
{
sts = st_ivas->hCPE[k]->hCoreCoder;
- for ( n = 0; n < CPE_CHANNELS; n++ )
+ FOR( n = 0; n < CPE_CHANNELS; n++ )
{
sts[n]->bfi = st_ivas->bfi;
+ move16();
}
}
- for ( k = 0; k < st_ivas->nSCE; k++ )
+ FOR( k = 0; k < st_ivas->nSCE; k++ )
{
sts = st_ivas->hSCE[k]->hCoreCoder;
sts[0]->bfi = st_ivas->bfi;
+ move16();
}
- if ( st_ivas->bfi == 0 )
+ IF( st_ivas->bfi == 0 )
{
/* select Mode 1 or Mode 2 */
- if ( st_ivas->ivas_format == MONO_FORMAT ) /* EVS mono */
+ IF( EQ_32( st_ivas->ivas_format, MONO_FORMAT ) ) /* EVS mono */
{
decoder_selectCodec( sts[0], total_brate, bit_stream[0] );
st_ivas->hDecoderConfig->Opt_AMR_WB = sts[0]->Opt_AMR_WB;
+ move16();
}
- else /* IVAS */
+ ELSE /* IVAS */
{
st_ivas->codec_mode = MODE1;
+ move16();
st_ivas->hDecoderConfig->Opt_AMR_WB = 0;
+ move16();
}
}
/* GOOD frame */
- if ( st_ivas->bfi == 0 || st_ivas->bfi == FRAMEMODE_FUTURE )
+ test();
+ if ( st_ivas->bfi == 0 || EQ_16( st_ivas->bfi, FRAMEMODE_FUTURE ) )
{
/* GOOD frame - convert ITU-T G.192 words to short values */
st_ivas->hDecoderConfig->ivas_total_brate = total_brate;
+ move32();
}
st_ivas->bit_stream = bit_stream;
- if ( st_ivas->ivas_format == MONO_FORMAT )
+ IF( EQ_32( st_ivas->ivas_format, MONO_FORMAT ) )
{
ivas_set_bitstream_pointers( st_ivas );
}
diff --git a/lib_com/bitstream_fx.c b/lib_com/bitstream_fx.c
index 6163fc4ff4163b4f2bee8a629d9ca7f35c2fdfaa..d4938f399607265c110c754aa2eba32587d817b8 100644
--- a/lib_com/bitstream_fx.c
+++ b/lib_com/bitstream_fx.c
@@ -543,7 +543,8 @@ UWord16 get_indice_1_fx( /* o : value of the indice */
*-------------------------------------------------------------------*/
void reset_indices_enc_fx(
- BSTR_ENC_HANDLE hBstr /* i/o: encoder state structure */
+ BSTR_ENC_HANDLE hBstr, /* i/o: encoder state structure */
+ const Word16 max_num_indices /* i : max number of indices */
)
{
Word16 i;
@@ -559,7 +560,7 @@ void reset_indices_enc_fx(
hBstr->last_ind_fx = -1;
move16();
- FOR( i = 0; i < MAX_NUM_INDICES; i++ )
+ FOR( i = 0; i < max_num_indices; i++ )
{
hBstr->ind_list[i].nb_bits = -1;
move16();
@@ -1547,358 +1548,6 @@ Word32 BIT_ALLOC_IDX_16KHZ_fx( Word32 brate, Word16 ctype, Word16 sfrm, Word16 t
return L_temp;
}
-
-/*-------------------------------------------------------------------*
- * read_indices_fx()
- *
- * Read indices from an ITU-T G.192 bitstream to the buffer
- * Simulate packet losses by inserting frame erasures
- *-------------------------------------------------------------------*/
-
-Word16 read_indices_fx( /* o : 1 = reading OK, 0 = problem */
- Decoder_State *st, /* i/o: decoder state structure */
- FILE *file, /* i : bitstream file */
- Word16 rew_flag /* i : rewind flag (rewind file after reading)*/
-)
-{
- Word16 k;
- UWord16 utmp, stream[2 + MAX_BITS_PER_FRAME], *pt_stream, *bit_stream_ptr;
- Word16 num_bits;
- Word32 total_brate;
- Word32 L_tmp;
- Word16 curr_ft_good_sp, curr_ft_bad_sp;
- Word16 g192_sid_first, sid_upd_bad, sid_update;
- Word16 speech_bad, speech_lost;
- Word16 num_bits_read;
-
- st->bfi = 0;
- move16();
- st->BER_detect = 0;
- move16();
- st->mdct_sw_enable = 0;
- move16();
- st->mdct_sw = 0;
- move16();
- reset_indices_dec_fx( st );
-
- /* read the Sync Header field from the bitstream */
- /* in case rew_flag is set, read until first good frame is encountered */
- test();
- test();
- DO
- {
- /* read the Sync header */
- IF( NE_32( fread( &utmp, sizeof( unsigned short ), 1, file ), 1 ) )
- {
- IF( ferror( file ) )
- {
- /* error during reading */
- fprintf( stderr, "\nError reading the bitstream !" );
- exit( -1 );
- }
- ELSE
- {
- /* end of file reached */
- return 0;
- }
- }
-
- /* set the BFI indicator according the value of Sync Header */
- IF( EQ_16( utmp, SYNC_BAD_FRAME ) )
- {
- st->bfi = 1;
- move16();
- }
- ELSE
- {
- st->bfi = 0;
- move16();
- }
-
- /* read the Frame Length field from the bitstream */
- IF( NE_32( fread( &num_bits, sizeof( unsigned short ), 1, file ), 1 ) )
- {
- IF( ferror( file ) )
- {
- /* error during reading */
- fprintf( stderr, "\nError reading the bitstream !" );
- exit( -1 );
- }
- ELSE
- {
- /* end of file reached */
- return 0;
- }
- }
- /* convert the frame length to total bitrate */
- total_brate = L_mult0( num_bits, 50 );
-
- /* read ITU-T G.192 serial stream of indices from file to the local buffer */
- /* Validate that the G.192 length is within the defined bit rate range
- to not allow writing past the end of the "stream" buffer */
- IF( GT_16( num_bits, MAX_BITS_PER_FRAME ) )
- {
- fprintf( stderr, "\nError, too large G.192 frame (size(%d))! Exiting ! \n", num_bits );
- exit( -1 );
- }
-
- /* verify that a valid num bits value is present in the G.192 file */
- /* only AMRWB or EVS bit rates or 0(NO DATA) are allowed in G.192 file frame reading */
- IF( rate2EVSmode( total_brate, NULL ) < 0 ) /* negative value means that a valid rate was not found */
- {
- fprintf( stderr, "\nError, illegal bit rate (%d) in the G.192 frame ! Exiting ! \n", total_brate );
- exit( -1 );
- }
- pt_stream = stream;
-
- num_bits_read = (Word16) fread( pt_stream, sizeof( unsigned short ), num_bits, file );
- move16();
-
- IF( NE_16( num_bits_read, num_bits ) )
- {
- fprintf( stderr, "\nError, invalid number of bits read ! Exiting ! \n" );
- exit( -1 );
- }
- }
- WHILE( rew_flag && ( st->bfi || ( total_brate < 2800 ) ) );
-
- /* G.192 RX DTX handler*/
- IF( !rew_flag )
- {
- /* handle SID_FIRST, SID_BAD, SPEECH_LOST, NO_DATA as properly as possible for the ITU-T G.192 format */
-
- /* (total_brate, bfi , st_CNG) = rx_handler(received frame type, [previous frame type], past CNG state, past core) */
- curr_ft_good_sp = 0;
- move16();
- curr_ft_bad_sp = 0;
- move16();
-
- IF( GT_32( total_brate, SID_2k40 ) )
- {
- IF( st->bfi == 0 )
- {
- curr_ft_good_sp = 1;
- move16();
- }
- ELSE
- {
- curr_ft_bad_sp = 1;
- move16();
- }
- }
- sid_update = 0;
- move16();
- sid_upd_bad = 0;
- move16();
-
- test();
- IF( total_brate == SID_1k75 || total_brate == SID_2k40 )
- {
- IF( st->bfi == 0 )
- {
- sid_update = 1;
- move16();
- }
- ELSE
- {
- sid_upd_bad = 1; /* may happen in CS , corrupt but detected sid frame */
- move16();
- }
- }
-
- /* all zero indeces/bits iSP AMRWB SID_update results in a valid LP filter with extremely high LP-filter-gain */
- /* all zero indeces/bits may be a result of CS bit errors and/or erroneously injected by gateways or by a bad dejitter handlers */
- test();
- IF( EQ_32( total_brate, SID_1k75 ) && EQ_16( sid_update, 1 ) )
- {
- /* valid sid_update received, check for very risky but formally valid content */
- Word16 sum = 0;
- move16();
- FOR( k = 0; k < num_bits; ++k )
- {
- sum = add( sum, extract_l( EQ_16( pt_stream[k], G192_BIN1 ) ) ); /* check of 35 zeroes, 35 ones */
- }
- if ( sum == 0 )
- { /* all zeros */
- sid_upd_bad = 1; /* initial signal as corrupt (BER likley) */
- move16();
- }
- }
-
- /* AMRWB 26.173 G.192 file reader (read_serial) does not declare/use SID_BAD ft,
- it declares every bad synch marked frame initially as a lost_speech frame,
- and then the RXDTX handler CNG state decides the decoding mode CNG/SPEECH.
- While In the AMRWB ETSI/3GPP format eid a CRC error in a detected SID_UPDATE frame triggers SID_UPD_BAD.
-
- Here we inhibit use of the SID-length info, even though it is available in the G.192 file format after STL/EID-XOR .
- */
- IF( sid_upd_bad )
- {
- sid_upd_bad = 0;
- move16();
- total_brate = FRAME_NO_DATA; /* treat SID_BAD as a stolen signaling frame --> SPEECH LOST */
- move32();
- }
-
- g192_sid_first = 0;
- move16();
-
- test();
- test();
- test();
- if ( EQ_16( st->core, AMR_WB_CORE ) && st->prev_ft_speech_fx && total_brate == FRAME_NO_DATA && st->bfi == 0 )
- {
- g192_sid_first = 1; /* SID_FIRST detected for previous AMRWB/AMRWBIO active frames only */
- /*
- It is not possible to perfectly simulate rate switching conditions EVS->AMRWBIO where:
- the very first SID_FIRST detection is based on a past EVS active frame
- and a good length 0 "SID_FIRST"(NO_DATA) frame is sent in AMRWBIO,
- , due to the one frame state memory in the AMRWB legacy G.192 SID_FIRST encoding
- */
- move16();
- }
-
- speech_bad = 0;
- move16();
-
- test();
- if ( GT_32( total_brate, SID_2k40 ) && st->bfi != 0 ) /* CS-type of CRC failure frame */
- {
- speech_bad = 1; /* initial assumption, CNG_state decides what to do */
- move16();
- }
-
- speech_lost = 0;
- move16();
-
- test();
- if ( total_brate == 0 && st->bfi != 0 ) /* unsent NO_DATA or stolen NO_DATA/signaling frame */
- {
- speech_lost = 1; /* initial assumption, CNG_state decides what to do */
- move16();
- }
-
- /* Do not allow decoder to enter CNG-synthesis for any instantly received GOOD+LENGTH==0 frame
- as this frame was never transmitted, one can not know it is good and has a a length of zero ) */
-
- IF( st->CNG_fx != 0 )
- {
- /* We were in CNG synthesis */
- if ( curr_ft_good_sp != 0 )
- {
- /* only a good speech frame makes you leave CNG synthesis */
- st->CNG_fx = 0;
- move16();
- }
- }
- ELSE
- {
- /* We were in SPEECH synthesis */
- /* only a received SID frame can make the decoder enter into CNG synthsis */
- test();
- test();
- if ( g192_sid_first || sid_update || sid_upd_bad )
- {
- st->CNG_fx = 1;
- move16();
- }
- }
-
- /* handle the g.192 _simulated_ untransmitted frame, setting for decoder SPEECH synthesis */
- test();
- test();
- if ( ( st->CNG_fx == 0 ) && ( total_brate == 0 && st->bfi == 0 ) )
- {
- st->bfi = 1;
- move16(); /* SPEECH PLC code will now become active as in a real system */
- /* total_brate= 0 */
- }
-
- /* handle bad speech frame(and bad sid frame) in the decoders CNG synthesis settings pair (total_brate, bfi) */
- test();
- test();
- test();
- IF( ( ( st->CNG_fx != 0 ) && ( ( speech_bad != 0 ) || ( speech_lost != 0 ) ) ) || /* SP_BAD or SPEECH_LOST) --> stay in CNG */
- ( sid_upd_bad != 0 ) ) /* SID_UPD_BAD --> start CNG */
- {
- st->bfi = 0;
- move16();
- total_brate = 0;
- move32();
- }
- /* update for next frame's G.192 file format's SID_FIRST detection (primarily for AMRWBIO) */
- test();
- st->prev_ft_speech_fx = ( ( curr_ft_good_sp != 0 ) || ( curr_ft_bad_sp != 0 ) );
- move16();
-
- /* st->total brate= total_brate ; updated in a good frame below */
- } /* rew_flag */
-
- /* get total bit-rate */
-#ifdef DEBUGGING
- st->bfi |= file_read_FECpattern();
-#endif
- test();
- IF( st->bfi == 0 && !rew_flag )
- {
- /* select MODE1 or MODE2 */
- decoder_selectCodec( st, total_brate, *pt_stream );
- }
-
- Mpy_32_16_ss( total_brate, 5243, &L_tmp, &utmp ); /* 5243 is 1/50 in Q18. (0+18-15=3) */
- st->total_num_bits = extract_l( L_shr( L_tmp, 3 ) ); /* Q0 */
- move16();
-
- /* in case rew_flag is set, rewind the file and return */
- /* (used in io_enc() to print out info about technologies and to initialize the codec) */
- IF( rew_flag )
- {
- rewind( file );
- st->total_brate = total_brate;
- move32();
- return 1;
- }
-
- /* GOOD frame */
- IF( st->bfi == 0 )
- {
- /* GOOD frame - convert ITU-T G.192 words to short values */
- bit_stream_ptr = st->bit_stream;
-
- FOR( k = 0; k < num_bits; ++k )
- {
- *bit_stream_ptr++ = (UWord16) EQ_32( *pt_stream++, G192_BIN1 );
- move16();
- }
-
- /*add two zero bytes for arithmetic coder flush*/
- FOR( k = 0; k < 2 * 8; ++k )
- {
- *bit_stream_ptr++ = 0;
- move16();
- }
- /*a change of the total bitrate should not be
- known to the decoder, if the received frame was lost*/
- st->total_brate = total_brate;
- move32();
-
- mdct_switching_dec( st );
- }
-#ifdef DEBUGGING
- else
- {
- bit_stream_ptr = st->bit_stream;
-
- for ( k = 0; k < num_bits + 2 * 8; ++k )
- {
- *bit_stream_ptr++ = 0;
- }
- }
-#endif
- return 1;
-}
-
-
/*-------------------------------------------------------------------*
* read_indices_mime_handle_dtx()
*
diff --git a/lib_com/cldfb.c b/lib_com/cldfb.c
index a9aa6bf67fdb213eeaef537c3abd77dbb9730e08..91b596ca5ace5c6443e19d8577176c00023b9327 100644
--- a/lib_com/cldfb.c
+++ b/lib_com/cldfb.c
@@ -1363,8 +1363,8 @@ ivas_error openCldfb_ivas_fx(
HANDLE_CLDFB_FILTER_BANK *h_cldfb, /* i/o: filter bank handle */
CLDFB_TYPE type, /* i : analysis or synthesis */
const Word32 sampling_rate, /* i : sampling rate */
- CLDFB_PROTOTYPE prototype /* i : CLDFB version (1.25ms/5ms delay) */
-)
+ CLDFB_PROTOTYPE prototype, /* i : CLDFB version (1.25ms/5ms delay) */
+ const Word16 enc_dec ) /* i : encoder/decoder flag */
{
HANDLE_CLDFB_FILTER_BANK hs;
Word16 buf_len;
@@ -1378,95 +1378,45 @@ ivas_error openCldfb_ivas_fx(
move32();
hs->prototype = prototype;
move32();
- configureCldfb_ivas_fx( hs, sampling_rate );
- hs->memory32 = NULL;
- hs->FilterStates = NULL;
- hs->memory_length = 0;
- move16();
-
- IF( EQ_32( type, CLDFB_ANALYSIS ) )
+ IF( enc_dec == ENC )
{
- buf_len = sub( hs->p_filter_length, hs->no_channels );
+ configureCldfb_ivas_enc_fx( hs, sampling_rate );
+ hs->Q_cldfb_state = 0;
}
ELSE
{
- buf_len = hs->p_filter_length;
- move16();
+ configureCldfb_ivas_fx( hs, sampling_rate );
+ hs->Q_cldfb_state = Q11;
}
-
- IF( ( hs->cldfb_state_fx = (Word32 *) malloc( buf_len * sizeof( Word32 ) ) ) == NULL )
- {
- return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for CLDFB" );
- }
-
- hs->cldfb_state_length = buf_len; // Temporarily added to store the length of buffer
move16();
- hs->cldfb_size = buf_len; /*for having original size at intermediatery conversion, will be removed on removing conversion*/
- move16();
- set32_fx( hs->cldfb_state_fx, 0, buf_len );
- hs->Q_cldfb_state = Q11;
- move16();
- *h_cldfb = hs;
- move16();
-
- return IVAS_ERR_OK;
-}
-
-ivas_error openCldfb_ivas_enc(
- HANDLE_CLDFB_FILTER_BANK *h_cldfb, /* i/o: filter bank handle */
- CLDFB_TYPE type, /* i : analysis or synthesis */
- const Word32 sampling_rate, /* i : sampling rate */
- CLDFB_PROTOTYPE prototype /* i : CLDFB version (1.25ms/5ms delay) */
-)
-{
- HANDLE_CLDFB_FILTER_BANK hs;
- Word16 buf_len;
-
- IF( ( hs = (HANDLE_CLDFB_FILTER_BANK) malloc( sizeof( CLDFB_FILTER_BANK ) ) ) == NULL )
- {
- return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for CLDFB" );
- }
-
- hs->type = type;
- move32();
- hs->prototype = prototype;
- move32();
-
- configureCldfb_ivas_enc_fx( hs, sampling_rate );
+ hs->memory32 = NULL;
+ hs->FilterStates = NULL;
hs->memory_length = 0;
- move32();
+ move16();
- IF( type == CLDFB_ANALYSIS )
+ IF( EQ_32( type, CLDFB_ANALYSIS ) )
{
buf_len = sub( hs->p_filter_length, hs->no_channels );
- hs->FilterStates = (Word16 *) malloc( ( 9 + 16 ) * CLDFB_getNumChannels( sampling_rate ) * sizeof( Word16 ) );
- hs->FilterStates_eg = 0;
- move16();
}
ELSE
{
buf_len = hs->p_filter_length;
move16();
- hs->FilterStates = (Word16 *) malloc( 2 * ( 9 + 16 ) * CLDFB_getNumChannels( sampling_rate ) * sizeof( Word16 ) );
- hs->FilterStates_eg = 0;
- move16();
}
- if ( ( hs->cldfb_state_fx = (Word32 *) malloc( buf_len * sizeof( Word32 ) ) ) == NULL )
+ IF( ( hs->cldfb_state_fx = (Word32 *) malloc( buf_len * sizeof( Word32 ) ) ) == NULL )
{
return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for CLDFB" );
}
+
hs->cldfb_state_length = buf_len; // Temporarily added to store the length of buffer
move16();
hs->cldfb_size = buf_len; /*for having original size at intermediatery conversion, will be removed on removing conversion*/
move16();
set32_fx( hs->cldfb_state_fx, 0, buf_len );
- hs->Q_cldfb_state = 0;
- move16();
- set16_fx( hs->FilterStates, 0, i_mult( 9 + 16, hs->no_channels ) );
- set16_fx( hs->FilterStates_e, 0, sizeof( hs->FilterStates_e ) / sizeof( hs->FilterStates_e[0] ) );
*h_cldfb = hs;
+ move16();
return IVAS_ERR_OK;
}
@@ -1562,41 +1512,6 @@ void analysisCldfbEncoder_ivas_fx(
return;
}
-
-/*-------------------------------------------------------------------*
- * GetEnergyCldfb_ivas()
- *
- * Remove handle
- *--------------------------------------------------------------------*/
-
-void deleteCldfb_ivas(
- HANDLE_CLDFB_FILTER_BANK *h_cldfb /* i/o: filter bank handle */
-)
-{
- HANDLE_CLDFB_FILTER_BANK hs = *h_cldfb;
-
- test();
- IF( h_cldfb == NULL || *h_cldfb == NULL )
- {
- return;
- }
-
- IF( hs->cldfb_state_fx )
- {
- free( hs->cldfb_state_fx );
- }
-
- IF( hs->FilterStates )
- {
- free( hs->FilterStates );
- }
-
- free( hs );
- *h_cldfb = NULL;
-
- return;
-}
-
void deleteCldfb_ivas_fx(
HANDLE_CLDFB_FILTER_BANK *h_cldfb /* i/o: filter bank handle */
)
diff --git a/lib_com/cng_exc_fx.c b/lib_com/cng_exc_fx.c
index 3eab0b1f5251aef2467b21caed74f9d40672a597..4153afa322f6b2c51a39890128b80c94034c51bd 100644
--- a/lib_com/cng_exc_fx.c
+++ b/lib_com/cng_exc_fx.c
@@ -47,7 +47,7 @@ void CNG_exc_fx(
Word16 *cng_ener_seed1,
Word16 exc3[], /*Q_exc*/
Word16 Opt_AMR_WB,
- const int16_t element_mode /* i : IVAS Element mode */
+ const Word16 element_mode /* i : IVAS Element mode */
)
{
Word16 i, tmp, tmp2, exp, exp2, Q_ener;
diff --git a/lib_com/cnst.h b/lib_com/cnst.h
index 1dd415812e95033e35bdb7cfce19b8b43c6dc2ea..1bcfcdb8f3fa23325597a599a71fc696b336cee1 100644
--- a/lib_com/cnst.h
+++ b/lib_com/cnst.h
@@ -240,7 +240,7 @@ enum{
#define L_FRAME48k_EXT 1200 /* Extended MDCT frame size in samples at 48kHz */
/* Conversion of ns to samples for a given sampling frequency */
-#define NS2SA( fs, x ) ( int16_t )( ( ( ( int32_t )( fs ) / 100L ) * ( ( x ) / 100L ) ) / 100000L )
+#define NS2SA( fs, x ) ( Word16 )( ( ( ( Word32 )( fs ) / 100L ) * ( ( x ) / 100L ) ) / 100000L )
#define NRG_CHANGE_E 8
#define AVG_FLAT_E 8
#define ACTIVE_FRAME 0xFF
@@ -1175,7 +1175,6 @@ enum
#define NBITS_NOISE_FILL_LEVEL 3 /* Number of bits used for coding noise filling level for each range */
#define NF_GAIN_BITS ( NBITS_TCX_GAIN + NOISE_FILL_RANGES * NBITS_NOISE_FILL_LEVEL )
#define MIN_NOISE_FILLING_HOLE 8
-#define HOLE_SIZE_FROM_LTP_FLT( gain ) ( 4 + ( int16_t )( 2.0f * gain * ( 4.0f / 0.625f ) ) )
#define HOLE_SIZE_FROM_LTP( gain ) (add(4, extract_h(L_shr(L_mult0(gain, 0x6666), 10)))) /* gain (Q15), 0x6666 = 2.0*(4.0/0.625) (4Q11) */
#define HOLE_SIZE_FROM_LTP32( gain ) (add(4, extract_h(L_shr(Mpy_32_32(gain, 0x66666667), 11)))) /* gain (Q31), 0x66666667 = 2.0*(4.0/0.625) (4Q27) */
@@ -1472,7 +1471,7 @@ enum
#define cbitsnew 16
#define stat_bitsnew 14
-#define ari_q4new ( ( (int32_t) 1 << cbitsnew ) - 1 )
+#define ari_q4new ( ( (Word32) 1 << cbitsnew ) - 1 )
#define ari_q1new ( ari_q4new / 4 + 1 )
#define ari_q2new ( 2 * ari_q1new )
#define ari_q3new ( 3 * ari_q1new )
@@ -1954,7 +1953,6 @@ typedef enum _DCTTYPE
#define N_SMC_MIXTURES 6 /* number of mixtures */
#define N_PCA_COEF 12 /* number of PCA components */
#define HALF_N_PCA_COEF_LOG_P12_Q18 2890731 //Q18 of (0.5f * N_PCA_COEF *logf( PI2 ))
-#define SMC_ST_MEAN_FACT 0.5 /* forgetting factor of short-term IIR mean filter */
#define SMC_ST_MEAN_RSHIFT_FACT_FX 1 /* SMC_ST_MEAN_FACT equivalent right shift factor */
#define M_LSP_SPMUS 6 /* number of LSPs used in speech/music classifier */
diff --git a/lib_com/common_api_types.h b/lib_com/common_api_types.h
index 461fe48d38c947020b28e3843f1bcdcb661a1519..3200cb21d4929ea492d2c18741d1af3c36e96296 100644
--- a/lib_com/common_api_types.h
+++ b/lib_com/common_api_types.h
@@ -114,9 +114,9 @@ typedef enum _IVAS_ENC_FEC_INDICATOR
typedef struct _IVAS_ENC_CHANNEL_AWARE_CONFIG
{
- int16_t channelAwareModeEnabled;
+ Word16 channelAwareModeEnabled;
IVAS_ENC_FEC_INDICATOR fec_indicator;
- int16_t fec_offset;
+ Word16 fec_offset;
} IVAS_ENC_CHANNEL_AWARE_CONFIG;
@@ -136,7 +136,7 @@ typedef struct _IVAS_ISM_METADATA
float gainFactor;
float yaw;
float pitch;
- int16_t non_diegetic_flag;
+ Word16 non_diegetic_flag;
} IVAS_ISM_METADATA;
@@ -189,29 +189,29 @@ typedef struct ivas_LS_setup_custom IVAS_LSSETUP_CUSTOM_STRUCT;
typedef struct _IVAS_LS_CUSTOM_LAYOUT
{
- int16_t num_spk;
+ Word16 num_spk;
float azimuth[IVAS_MAX_OUTPUT_CHANNELS];
float elevation[IVAS_MAX_OUTPUT_CHANNELS];
Word32 azimuth_fx[IVAS_MAX_OUTPUT_CHANNELS]; // Q22
Word32 elevation_fx[IVAS_MAX_OUTPUT_CHANNELS]; // Q22
- int16_t num_lfe;
- int16_t lfe_idx[IVAS_MAX_OUTPUT_CHANNELS];
+ Word16 num_lfe;
+ Word16 lfe_idx[IVAS_MAX_OUTPUT_CHANNELS];
} IVAS_CUSTOM_LS_DATA;
typedef struct _IVAS_JBM_TRACE_DATA
{
- uint32_t systemTimestamp_ms;
- uint16_t extBufferedSamples;
- uint16_t lastDecodedWasActive;
- int32_t output_Fs;
- int16_t dataUnit_flag;
- uint16_t sequenceNumber;
- uint32_t timeStamp;
- uint32_t rcvTime;
-
- int16_t partial_frame;
- int16_t partialCopyOffset;
+ UWord32 systemTimestamp_ms;
+ UWord16 extBufferedSamples;
+ UWord16 lastDecodedWasActive;
+ Word32 output_Fs;
+ Word16 dataUnit_flag;
+ UWord16 sequenceNumber;
+ UWord32 timeStamp;
+ UWord32 rcvTime;
+
+ Word16 partial_frame;
+ Word16 partialCopyOffset;
} IVAS_JBM_TRACE_DATA;
@@ -322,8 +322,8 @@ typedef enum
typedef struct _IVAS_ROOM_ACOUSTICS_CONFIG
{
- int16_t override;
- int16_t nBands; /* Number of frequency bands for which reverb properties are provided, integer, range [2..256] */
+ Word16 override;
+ Word16 nBands; /* Number of frequency bands for which reverb properties are provided, integer, range [2..256] */
float pFc_input[IVAS_CLDFB_NO_CHANNELS_MAX]; /* Center frequencies for which following values are provided: */
float pAcoustic_rt60[IVAS_CLDFB_NO_CHANNELS_MAX]; /* - The room's T60 per center frequency */
float pAcoustic_dsr[IVAS_CLDFB_NO_CHANNELS_MAX]; /* - The room's Diffuse to Source Ratio per center frequency */
@@ -336,12 +336,12 @@ typedef struct _IVAS_ROOM_ACOUSTICS_CONFIG
Word32 inputPreDelay_fx; /* Offset in seconds from where DSR is computed in the RIR (0 = at source), float, range [0.001..10] */ /* Assumed Q-27*/
/* early reflections */
- int16_t use_er; /* ER activation flag */
- int32_t lowComplexity; /* Low complexity ER flag */
- IVAS_VECTOR3 dimensions; /* Room dimensions [m] */
- float AbsCoeff[IVAS_ROOM_ABS_COEFF]; /* Absorption coeffs */
- IVAS_VECTOR3 ListenerOrigin; /* Listener origin */
- int32_t AbsCoeff_fx[IVAS_ROOM_ABS_COEFF]; /* Absorption coeffs */
+ Word16 use_er; /* ER activation flag */
+ Word32 lowComplexity; /* Low complexity ER flag */
+ IVAS_VECTOR3 dimensions; /* Room dimensions [m] */
+ float AbsCoeff[IVAS_ROOM_ABS_COEFF]; /* Absorption coeffs */
+ IVAS_VECTOR3 ListenerOrigin; /* Listener origin */
+ Word32 AbsCoeff_fx[IVAS_ROOM_ABS_COEFF]; /* Absorption coeffs */
} IVAS_ROOM_ACOUSTICS_CONFIG_DATA;
diff --git a/lib_com/core_com_config.c b/lib_com/core_com_config.c
index ed72605de96233aa45f2a5460dc6032004e49efa..f0ee8efd8d12c038c78487a8f39ba71dc21a3b9c 100644
--- a/lib_com/core_com_config.c
+++ b/lib_com/core_com_config.c
@@ -40,7 +40,6 @@
#include "rom_com.h"
#include "prot_fx.h"
#include "wmc_auto.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#define FSCALE_DENOM_BY_12800_Q15 1311
diff --git a/lib_com/edct_fx.c b/lib_com/edct_fx.c
index 8d77da13a7eb7df052bb309302e7f19bdef81432..b1e2a7dd9b76719cec5ef06815655c249d617237 100644
--- a/lib_com/edct_fx.c
+++ b/lib_com/edct_fx.c
@@ -592,11 +592,12 @@ void edxt_fx(
const UWord16 synthesis /* i : nonzero for inverse Q0*/
)
{
- Word16 k, m, fac;
+ Word16 k, m, fac, hdrm, tmp = 0;
const Word16 *cosPtr, *sinPtr;
Word16 n;
n = 0;
move16();
+ move16();
cosPtr = NULL;
sinPtr = NULL;
IF( EQ_16( length, 512 ) )
@@ -735,7 +736,23 @@ void edxt_fx(
IF( EQ_16( length, 512 ) )
{
+ /* Scaling down re and im buffers to avoid overflow in DoRTFTn_fx if the minimum headroom is less than 4 bits */
+ hdrm = s_min( L_norm_arr( re, 512 ), L_norm_arr( im, 512 ) );
+ IF( LT_16( hdrm, 4 ) )
+ {
+ tmp = sub( hdrm, 4 );
+ scale_sig32( re, 512, tmp );
+ scale_sig32( im, 512, tmp );
+ }
+
DoRTFTn_fx( re, im, 512 );
+
+ IF( LT_16( hdrm, 4 ) )
+ {
+ tmp = negate( tmp );
+ scale_sig32( re, 512, tmp );
+ scale_sig32( im, 512, tmp );
+ }
}
ELSE /* fft() doesn't support 512 */
{
@@ -831,7 +848,23 @@ void edxt_fx(
IF( EQ_16( length, 512 ) )
{
+ /* Scaling down re and im buffers to avoid overflow in DoRTFTn_fx if the minimum headroom is less than 4 bits */
+ hdrm = s_min( L_norm_arr( re, 512 ), L_norm_arr( im, 512 ) );
+ IF( LT_16( hdrm, 4 ) )
+ {
+ tmp = sub( hdrm, 4 );
+ scale_sig32( re, 512, tmp );
+ scale_sig32( im, 512, tmp );
+ }
+
DoRTFTn_fx( re, im, 512 );
+
+ IF( LT_16( hdrm, 4 ) )
+ {
+ tmp = negate( tmp );
+ scale_sig32( re, 512, tmp );
+ scale_sig32( im, 512, tmp );
+ }
}
ELSE /* fft() doesn't support 512 */
{
diff --git a/lib_com/fft_evs.c b/lib_com/fft_evs.c
index e53404f0b7f4a8d0cdc9ed405d74f91f119a51c2..94c2dea8ff0a7df4fc62fb898eb379e5d2d31a79 100644
--- a/lib_com/fft_evs.c
+++ b/lib_com/fft_evs.c
@@ -505,7 +505,7 @@ static void fft15_with_cmplx_data( cmplx *inp_data /*Qx*/ )
*/
void fft16( Word32 *re, Word32 *im, Word16 s, Word16 bScale )
{
- int i;
+ Word16 i;
if ( s == 2 )
{
fft16_with_cmplx_data( (cmplx *) re, bScale );
diff --git a/lib_com/fft_fx.c b/lib_com/fft_fx.c
index 73ff582df61d5583b183473ee303d95f84dc675a..7b63e9c679ce1219a018d92196ed50bc04861795 100644
--- a/lib_com/fft_fx.c
+++ b/lib_com/fft_fx.c
@@ -7636,6 +7636,26 @@ Word16 norm_arr( Word16 *arr, Word16 size )
return q;
}
+Word16 W_norm_arr( Word64 *arr, Word16 size )
+{
+ Word16 q = 63;
+ Word16 exp = 0;
+ move16();
+ move16();
+ FOR( Word16 i = 0; i < size; i++ )
+ {
+ if ( arr[i] != 0 )
+ {
+ exp = W_norm( arr[i] );
+ }
+ if ( arr[i] != 0 )
+ {
+ q = s_min( q, exp );
+ }
+ }
+ return q;
+}
+
Word16 get_min_scalefactor( Word32 x, Word32 y )
{
#ifndef FIX_1104_OPT_GETMINSCALEFAC
diff --git a/lib_com/gs_bitallocation_ivas_fx.c b/lib_com/gs_bitallocation_ivas_fx.c
index 0921dc88ca1d69e896ea1a8db45e65a6dc95f0c7..9243f640e890348f577688a0dc77aff03e10a148 100644
--- a/lib_com/gs_bitallocation_ivas_fx.c
+++ b/lib_com/gs_bitallocation_ivas_fx.c
@@ -2,12 +2,11 @@
EVS Codec 3GPP TS26.452 Aug 12, 2021. Version 16.3.0
====================================================================================*/
#include
-#include "options.h" /* Compilation switches */
-#include "cnst.h" /* Common constants */
-#include "rom_com.h" /* Static table prototypes */
-#include "prot_fx.h" /* Function prototypes */
-#include "ivas_prot.h" /* Function prototypes */
-#include "assert.h" /* Debug prototypes */
+#include "options.h" /* Compilation switches */
+#include "cnst.h" /* Common constants */
+#include "rom_com.h" /* Static table prototypes */
+#include "prot_fx.h" /* Function prototypes */
+#include "assert.h" /* Debug prototypes */
#include "stl.h"
#include "ivas_prot_fx.h"
diff --git a/lib_com/ivas_agc_com_fx.c b/lib_com/ivas_agc_com_fx.c
index 94e6b222fcd0401e042f3f0409e435ba82ebc4a4..3f6e181efb2154cf8fc2ce949321b0959c1dab90 100644
--- a/lib_com/ivas_agc_com_fx.c
+++ b/lib_com/ivas_agc_com_fx.c
@@ -34,7 +34,6 @@
#include "options.h"
#include "cnst.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include
#include "wmc_auto.h"
diff --git a/lib_com/ivas_arith_fx.c b/lib_com/ivas_arith_fx.c
index 006a31177873484eeb93f6aa14cd71f38c6b969f..311bccff8e206cbdb862bba20cd4f6e89d62ecc2 100644
--- a/lib_com/ivas_arith_fx.c
+++ b/lib_com/ivas_arith_fx.c
@@ -34,7 +34,6 @@
#include "options.h"
#include "wmc_auto.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "stat_dec.h"
diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h
index 6612fac1fb86e071aca955949ba2002477dfaffd..2abb790f1629a172b0dc5b3e82ac1e5fb82ce6ed 100644
--- a/lib_com/ivas_cnst.h
+++ b/lib_com/ivas_cnst.h
@@ -1440,12 +1440,12 @@ typedef enum _COV_SMOOTHING_TYPE
} COV_SMOOTHING_TYPE;
typedef struct {
- const int32_t *value;
- const uint16_t *length;
+ const Word32 *value;
+ const UWord16 *length;
} HUFF_TAB;
typedef struct {
- int32_t value[81];
+ Word32 value[81];
unsigned short length[81];
} HUFF_ELEMENTS;
@@ -1467,8 +1467,8 @@ typedef struct {
typedef struct
{
- const int16_t (*alpha)[2];
- const int16_t (*beta)[2];
+ const Word16 (*alpha)[2];
+ const Word16 (*beta)[2];
} HUFF_NODE_TABLE;
/*----------------------------------------------------------------------------------*
diff --git a/lib_com/ivas_cov_smooth_fx.c b/lib_com/ivas_cov_smooth_fx.c
index acc0df8215a514ccf2033f6ee2b971879a52f73c..3a93ed1f577c0a8f2536607f5d25256674bd4f5c 100644
--- a/lib_com/ivas_cov_smooth_fx.c
+++ b/lib_com/ivas_cov_smooth_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include "cnst.h"
-#include "ivas_prot.h"
#include "wmc_auto.h"
#include "prot_fx.h"
#include "ivas_prot_fx.h"
diff --git a/lib_com/ivas_dirac_com_fx.c b/lib_com/ivas_dirac_com_fx.c
index 9b60b2c5c9b963c93ca20b070ad2ab4951d1238c..14658779137939c6407057e31a2236065e7a1150 100644
--- a/lib_com/ivas_dirac_com_fx.c
+++ b/lib_com/ivas_dirac_com_fx.c
@@ -36,7 +36,6 @@
#include
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
-#include "ivas_prot.h"
#include "prot_fx.h"
#include "cnst.h"
#include "wmc_auto.h"
diff --git a/lib_com/ivas_entropy_coder_common_fx.c b/lib_com/ivas_entropy_coder_common_fx.c
index 99381d19aced0fb0422feb9c024141284b06471a..f52d59859e7833964f125b0837b23a7d18c91dce 100644
--- a/lib_com/ivas_entropy_coder_common_fx.c
+++ b/lib_com/ivas_entropy_coder_common_fx.c
@@ -32,7 +32,6 @@
#include
#include "options.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "math.h"
#include "prot_fx.h"
diff --git a/lib_com/ivas_fb_mixer_fx.c b/lib_com/ivas_fb_mixer_fx.c
index 883861024e23cf96e9d31b9bfd0048ddd5506078..d5cd8d4f17875b44cbcecb447e9bf0463a25f056 100644
--- a/lib_com/ivas_fb_mixer_fx.c
+++ b/lib_com/ivas_fb_mixer_fx.c
@@ -35,7 +35,6 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
diff --git a/lib_com/ivas_filters_fx.c b/lib_com/ivas_filters_fx.c
index 7705deb6afba76acb6c496fbe4851ac27358379b..1e9aaf0c20771fffa77bbebf43f7109a95cc50b5 100644
--- a/lib_com/ivas_filters_fx.c
+++ b/lib_com/ivas_filters_fx.c
@@ -32,7 +32,6 @@
#include
#include "options.h"
-#include "ivas_prot.h"
#include "ivas_cnst.h"
#include "ivas_stat_com.h"
#include "wmc_auto.h"
diff --git a/lib_com/ivas_ism_com_fx.c b/lib_com/ivas_ism_com_fx.c
index f1201b06ca6952cf7a20f39173cd0af07e4714d2..5f1a13afb7ca1a431d823a6d5461813e136c34a0 100644
--- a/lib_com/ivas_ism_com_fx.c
+++ b/lib_com/ivas_ism_com_fx.c
@@ -36,7 +36,6 @@
#include "ivas_cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_stat_com.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
diff --git a/lib_com/ivas_lfe_com_fx.c b/lib_com/ivas_lfe_com_fx.c
index 7464c41c2c47a4c1d7871f37ada1bcef1e8d1afa..3d1e7aee66e4b495f8aadbff57788cacdcc5389c 100644
--- a/lib_com/ivas_lfe_com_fx.c
+++ b/lib_com/ivas_lfe_com_fx.c
@@ -35,7 +35,6 @@
#include "options.h"
#include "ivas_stat_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
#include "cnst.h"
diff --git a/lib_com/ivas_limiter_fx.c b/lib_com/ivas_limiter_fx.c
index 824e443a3a45228df99fd5995957d0310b96cee6..4250d7a7a46db4ebc5500b6754d015d1f25a601d 100644
--- a/lib_com/ivas_limiter_fx.c
+++ b/lib_com/ivas_limiter_fx.c
@@ -34,7 +34,7 @@
#include "options.h"
#include
#include "prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_rom_rend.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
diff --git a/lib_com/ivas_masa_com_fx.c b/lib_com/ivas_masa_com_fx.c
index fbe752aad277923102b1796d3c52f8bf9e301d19..cfed06357fe908e6c3fda28720aa7272ca67adb0 100644
--- a/lib_com/ivas_masa_com_fx.c
+++ b/lib_com/ivas_masa_com_fx.c
@@ -36,7 +36,6 @@
#include
#include "prot_fx.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "ivas_stat_dec.h"
#include "wmc_auto.h"
diff --git a/lib_com/ivas_mc_com_fx.c b/lib_com/ivas_mc_com_fx.c
index 62d623b830daf6924b4d4cfc0dd9468e6b2d1bd2..8201037a1a5f89eb53acb0e81787b0a87f68da5c 100644
--- a/lib_com/ivas_mc_com_fx.c
+++ b/lib_com/ivas_mc_com_fx.c
@@ -35,7 +35,6 @@
#include "options.h"
#include
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_com/ivas_mc_param_com_fx.c b/lib_com/ivas_mc_param_com_fx.c
index a54abe7ab00d5ee98841b9788f28d2f467cce7b7..4469e7f93d82856a3e2db90e362e3e02265108be 100644
--- a/lib_com/ivas_mc_param_com_fx.c
+++ b/lib_com/ivas_mc_param_com_fx.c
@@ -36,7 +36,6 @@
#include "options.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_stat_com.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
diff --git a/lib_com/ivas_mcmasa_com-fx.c b/lib_com/ivas_mcmasa_com-fx.c
index da0b8f1c4f20898d92d6a9106e0f25ca495de058..23a3800fb792ba9eeee06ef4cd26001a9b54d5e6 100644
--- a/lib_com/ivas_mcmasa_com-fx.c
+++ b/lib_com/ivas_mcmasa_com-fx.c
@@ -31,7 +31,6 @@
*******************************************************************************************************/
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "options.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_com/ivas_mct_com_fx.c b/lib_com/ivas_mct_com_fx.c
index 1f3c58153b3b52bd4f97ef03ebea6305f01dfd14..81a56df146d9ba7378dbcadacb6aeb39b98f28b0 100644
--- a/lib_com/ivas_mct_com_fx.c
+++ b/lib_com/ivas_mct_com_fx.c
@@ -33,8 +33,8 @@
#include
#include "options.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "prot_fx.h"
+#include "ivas_prot_fx.h"
#include "wmc_auto.h"
#include
diff --git a/lib_com/ivas_mdct_core_com_fx.c b/lib_com/ivas_mdct_core_com_fx.c
index 000f3992f1f1670bcd13f82edf20e8cd4adf3072..fe313eecdd7c3be915f9d9aa73c37081e79b61ac 100644
--- a/lib_com/ivas_mdct_core_com_fx.c
+++ b/lib_com/ivas_mdct_core_com_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "prot_fx.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_com/ivas_mdft_imdft_fx.c b/lib_com/ivas_mdft_imdft_fx.c
index b104443073a0d1bc311186a9a88deeee447b3c5b..5d7bee1a6929347ac19968f7d8996878878f8897 100644
--- a/lib_com/ivas_mdft_imdft_fx.c
+++ b/lib_com/ivas_mdft_imdft_fx.c
@@ -34,7 +34,6 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include
#include "wmc_auto.h"
diff --git a/lib_com/ivas_omasa_com_fx.c b/lib_com/ivas_omasa_com_fx.c
index ef63502854d78c30549ba6dbcae6ad0c7171478f..1c1d4bf6cb6ca87def78b29f60c793547d2f3e4d 100644
--- a/lib_com/ivas_omasa_com_fx.c
+++ b/lib_com/ivas_omasa_com_fx.c
@@ -33,7 +33,6 @@
#include "options.h"
#include
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "prot_fx.h"
#include "ivas_rom_com.h"
diff --git a/lib_com/ivas_pca_tools_fx.c b/lib_com/ivas_pca_tools_fx.c
index 1e36c5e8e8bcf0f1ffb18a7e31a39c5ccfec1018..c84078a7d4291080687cfe2597eafe8af3aba784 100644
--- a/lib_com/ivas_pca_tools_fx.c
+++ b/lib_com/ivas_pca_tools_fx.c
@@ -32,7 +32,6 @@
#include
#include "options.h"
-#include "ivas_prot.h"
#include "ivas_cnst.h"
#include
#include
diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h
deleted file mode 100644
index 8d5e4a29adfe509506287dfe2320982c39b81ec8..0000000000000000000000000000000000000000
--- a/lib_com/ivas_prot.h
+++ /dev/null
@@ -1,4066 +0,0 @@
-/******************************************************************************************************
-
- (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository. All Rights Reserved.
-
- This software is protected by copyright law and by international treaties.
- The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
- Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
- Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
- Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
- contributors to this repository retain full ownership rights in their respective contributions in
- the software. This notice grants no license of any kind, including but not limited to patent
- license, nor is any license granted by implication, estoppel or otherwise.
-
- Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
- contributions.
-
- This software is provided "AS IS", without any express or implied warranties. The software is in the
- development stage. It is intended exclusively for experts who have experience with such software and
- solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
- and fitness for a particular purpose are hereby disclaimed and excluded.
-
- Any dispute, controversy or claim arising under or in relation to providing this software shall be
- submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
- accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
- the United Nations Convention on Contracts on the International Sales of Goods.
-
-*******************************************************************************************************/
-
-#ifndef IVAS_PROT_H
-#define IVAS_PROT_H
-
-#include
-#include "options.h"
-#include
-#include "typedef.h"
-#include "stat_enc.h"
-#include "stat_dec.h"
-#include "stat_com.h"
-#include "ivas_stat_enc.h"
-#include "ivas_stat_dec.h"
-#include "ivas_stat_rend.h"
-#include "ivas_stat_com.h"
-#include "ivas_error_utils.h"
-
-
-/* clang-format off */
-
-/*----------------------------------------------------------------------------------*
- * General IVAS prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_enc(
- Encoder_Struct *st_ivas, /* i : IVAS encoder structure */
- const int16_t *data, /* i : input signal */
- const int16_t n_samples /* i : number of input samples */
-);
-
-void stereo_dmx_evs_enc(
- STEREO_DMX_EVS_ENC_HANDLE hStereoDmxEVS, /* i/o: Stereo downmix for EVS encoder handle */
- const int32_t input_Fs, /* i : input sampling rate */
- int16_t data[CPE_CHANNELS * L_FRAME48k], /* i/o: input signal */
- const int16_t n_samples, /* i : number of input samples */
- const bool is_binaural /* i : indication that input is binaural audio */
-);
-
-/*! r: number of channels to be analysed */
-
-void copy_encoder_config_ivas_fx(
- Encoder_Struct *st_ivas, /* i : IVAS encoder structure */
- Encoder_State *st, /* o : encoder state structure */
- const Word16 flag_all /* i : flag 1==update all, 0=partial update Q0*/
-);
-
-
-
-ivas_error create_sce_enc(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- const int16_t sce_id, /* i : SCE # identifier */
- const int32_t element_brate /* i : element bitrate */
-);
-
-ivas_error create_cpe_enc(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- const int16_t cpe_id, /* i : CPE # identifier */
- const int32_t element_brate /* i : element bitrate */
-);
-
-ivas_error create_mct_enc_fx(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-void destroy_cpe_enc(
- CPE_ENC_HANDLE hCPE /* i/o: CPE encoder structure */
-);
-
-void ivas_mct_enc_close_fx(
- MCT_ENC_HANDLE *hMCT /* i/o: MCT encoder structure */
-);
-
-ivas_error ivas_corecoder_enc_reconfig(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- const int16_t nSCE_old, /* i : number of SCEs in previous frame */
- const int16_t nCPE_old, /* i : number of CPEs in previous frame */
- const int16_t nchan_transport_old, /* i : number of TCs in previous frame */
- const int32_t brate_SCE, /* i : bitrate to be set for the SCEs */
- const int32_t brate_CPE, /* i : bitrate to be set for the CPEs */
- const MC_MODE last_mc_mode /* i : switching between MC modes: last mode */
-);
-
-ivas_error ivas_sce_enc(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- const int16_t sce_id, /* i : SCE # identifier */
- const float data_f[], /* i : input signal for single channel */
- const int16_t input_frame, /* i : input frame length per channel */
- const int16_t nb_bits_metadata /* i : number of metadata bits */
-);
-
-
-ivas_error ivas_cpe_enc(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- const Word16 cpe_id, /* i : CPE # identifier */
- float data_f_ch0[], /* i : input signal for channel 0 */
- float data_f_ch1[], /* i : input signal for channel 1 */
- const Word16 input_frame, /* i : input frame length per channel */
- const Word16 nb_bits_metadata /* i : number of metadata bits */
-);
-
-ivas_error ivas_mct_enc(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- float *data[MCT_MAX_CHANNELS], /* i : input signal buffers */
- const int16_t input_frame, /* i : input frame length per channel */
- const int16_t nb_bits_metadata /* i : number of metadata bits */
-);
-
-ivas_error pre_proc_front_ivas(
- SCE_ENC_HANDLE hSCE, /* i/o: SCE encoder structure */
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- const int32_t element_brate, /* i : SCE/CPE element bitrate */
- const int16_t nb_bits_metadata, /* i : number of metadata bits */
- const int16_t input_frame, /* i : frame length */
- const int16_t n, /* i : channel number */
- float old_inp_12k8[], /* o : buffer of old input signal */
- float old_inp_16k[], /* o : buffer of old input signal @16kHz */
- float *ener, /* o : residual energy from Levinson-Durbin */
- float *relE, /* o : frame relative energy */
- float A[NB_SUBFR16k * ( M + 1 )], /* o : A(z) unquantized for the 4 subframes */
- float Aw[NB_SUBFR16k * ( M + 1 )], /* o : weighted A(z) unquantized for subframes */
- float epsP[M + 1], /* o : LP prediction errors */
- float lsp_new[M], /* o : LSPs at the end of the frame */
- float lsp_mid[M], /* o : LSPs in the middle of the frame */
- int16_t *vad_hover_flag, /* o : VAD hangover flag */
- int16_t *attack_flag, /* o : flag signaling attack */
- float realBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: real buffer */
- float imagBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: imag buffer */
- float old_wsp[], /* o : weighted input signal buffer */
- float pitch_fr[NB_SUBFR], /* o : fractional pitch values */
- float voicing_fr[NB_SUBFR], /* o : fractional pitch gains */
- int16_t *loc_harm, /* o : harmonicity flag */
- float *cor_map_sum, /* o : speech/music clasif. parameter */
- int16_t *vad_flag_dtx, /* o : HE-SAD flag with additional DTX HO */
- float enerBuffer[CLDFB_NO_CHANNELS_MAX], /* o : energy buffer */
- float fft_buff[2 * L_FFT], /* o : FFT buffer */
- const float tdm_A_PCh[M + 1], /* i : unq. LP coeff. of primary channel */
- const float tdm_lsp_new_PCh[M], /* i : unq. LSPs of primary channel */
- const float currFlatness, /* i : flatness parameter */
- const int16_t tdm_ratio_idx, /* i : Current Ratio_L index */
- float fr_bands_LR[][2 * NB_BANDS], /* i : energy in frequency bands */
- const float Etot_LR[], /* i : total energy Left & Right channel */
- float lf_E_LR[][2 * VOIC_BINS], /* i : per bin spectrum energy in lf, LR channels */
- const int16_t localVAD_HE_SAD_LR[], /* i : HE-SAD flag without hangover, LR channels */
- float band_energies_LR[2 * NB_BANDS], /* o : energy in critical bands without minimum noise floor E_MIN */
- const int16_t flag_16k_smc, /* i : flag to indicate if the OL SMC is run at 16 kHz */
- const int16_t front_vad_flag, /* i : front-VAD flag to overwrite VAD decision */
- const int16_t force_front_vad, /* i : flag to force VAD decision */
- const int16_t front_vad_dtx_flag, /* i : front-VAD DTX flag to overwrite VAD decision*/
- const IVAS_FORMAT ivas_format, /* i : IVAS format */
- const int16_t MCT_flag, /* i : hMCT handle allocated (1) or not (0) */
- const int32_t ivas_total_brate /* i : IVAS total bitrate */
-);
-
-ivas_error pre_proc_front_ivas_fx(
- SCE_ENC_HANDLE hSCE, /* i/o: SCE encoder structure */
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- const Word32 element_brate, /* i : SCE/CPE element bitrate Q0*/
- const Word16 nb_bits_metadata, /* i : number of metadata bits Q0*/
- const Word16 input_frame, /* i : frame length Q0*/
- const Word16 n, /* i : channel number Q0*/
- Word16 old_inp_12k8_fx[], /* o : buffer of old input signal Q_new-1*/
- Word16 old_inp_16k_fx[], /* o : buffer of old input signal @16kHz Q_new-1*/
- Word32 *ener_fx, /* o : residual energy from Levinson-Durbin epsP_fx_q*/
- Word16 *relE_fx, /* o : frame relative energy Q8*/
- Word16 A_fx[NB_SUBFR16k * ( M + 1 )], /* o : A(z) unquantized for the 4 subframes Q12*/
- Word16 Aw_fx[NB_SUBFR16k * ( M + 1 )], /* o : weighted A(z) unquantized for subframes Q12*/
- Word32 epsP_fx[M + 1], /* o : LP prediction errors epsP_fx_q*/
- Word16 *epsP_fx_q,
- Word16 lsp_new_fx[M], /* o : LSPs at the end of the frame Q15*/
- Word16 lsp_mid_fx[M], /* o : LSPs in the middle of the frame Q15*/
- Word16 *vad_hover_flag, /* o : VAD hangover flag Q0*/
- Word16 *attack_flag, /* o : flag signaling attack Q0*/
- Word32 realBuffer_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: real buffer Q(q_re_im_buf)*/
- Word32 imagBuffer_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: imag buffer Q(q_re_im_buf)*/
- Word16 *q_re_im_buf, /* i/o: Q-factor of real and imag buffer */
- Word16 old_wsp_fx[], /* o : weighted input signal buffer q_old_wsp*/
- Word16 *q_old_wsp,
- Word16 pitch_fr_fx[NB_SUBFR], /* o : fractional pitch values Q6*/
- Word16 voicing_fr_fx[NB_SUBFR], /* o : fractional pitch gains Q15*/
- Word16 *loc_harm, /* o : harmonicity flag Q0*/
- Word16 *cor_map_sum_fx, /* o : speech/music clasif. parameter Q8*/
- Word16 *vad_flag_dtx, /* o : HE-SAD flag with additional DTX HO Q0*/
- Word32 enerBuffer_fx[CLDFB_NO_CHANNELS_MAX], /* o : energy buffer enerBuffer_fx_exp*/
- Word16 *enerBuffer_fx_exp, /* o : energy buffer */
- Word16 fft_buff_fx[2 * L_FFT], /* o : FFT buffer fft_buff_fx_q*/
- Word16 *fft_buff_fx_q, /* o : FFT buffer */
- const Word16 tdm_A_PCh_fx[M + 1], /* i : unq. LP coeff. of primary channel Q12*/
- const Word16 tdm_lsp_new_PCh_fx[M], /* i : unq. LSPs of primary channel Q15*/
- const Word16 currFlatness_fx, /* i : flatness parameter Q7*/
- const Word16 tdm_ratio_idx, /* i : Current Ratio_L index Q0*/
- Word32 fr_bands_LR_fx[][2 * NB_BANDS], /* i : energy in frequency bands (fr_bands_LR_fx_q) fr_bands_LR_fx_q*/
- Word16 fr_bands_LR_fx_q[CPE_CHANNELS],
- const Word16 Etot_LR_fx[], /* i : total energy Left & Right channel Q8*/
- Word32 lf_E_LR_fx[][2 * VOIC_BINS], /* i : per bin spectrum energy in lf, LR channels (lf_E_LR_fx_q)*/
- Word16 lf_E_LR_fx_q,
- const Word16 localVAD_HE_SAD_LR[], /* i : HE-SAD flag without hangover, LR channels Q0*/
- Word32 band_energies_LR_fx[2 * NB_BANDS], /* o : energy in critical bands without minimum noise floor E_MIN (band_energies_LR_fx_q)*/
- Word16 band_energies_LR_fx_q,
- const Word16 flag_16k_smc, /* i : flag to indicate if the OL SMC is run at 16 kHz Q0*/
- const Word16 front_vad_flag, /* i : front-VAD flag to overwrite VAD decision Q0*/
- const Word16 force_front_vad, /* i : flag to force VAD decision Q0*/
- const Word16 front_vad_dtx_flag, /* i : front-VAD DTX flag to overwrite VAD decision Q0*/
- const IVAS_FORMAT ivas_format, /* i : IVAS format */
- const Word16 MCT_flag, /* i : hMCT handle allocated (1) or not (0) Q0*/
-#ifdef NONBE_1211_DTX_BR_SWITCHING
- const Word32 last_ivas_total_brate, /* i : last IVAS total bitrate Q0*/
-#endif
- const Word32 ivas_total_brate, /* i : IVAS total bitrate - for setting the DTX Q0*/
- Word16 *Q_new
-#ifdef DEBUG_MODE_INFO
- ,
- const Word16 ch_idx
-#endif
-);
-ivas_error pre_proc_ivas_fx(
- Encoder_State *st, /* i/o: encoder state structure */
- const Word16 last_element_mode, /* i : last element mode Q0*/
- const Word32 element_brate, /* i : element bitrate Q0*/
- const Word32 last_element_brate, /* i : last element bitrate Q0*/
- const Word16 input_frame, /* i : frame length Q0*/
- Word16 old_inp_12k8_fx[], /* i/o: buffer of old input signal Q_new-1 */
- Word16 old_inp_16k_fx[], /* i/o: buffer of old input signal @ 16kHz Q_new-1 */
- Word16 **inp_fx, /* o : ptr. to inp. signal in the current frame Q_new*/
- Word32 *ener_fx, /* o : residual energy from Levinson-Durbin epsP_fx_q*/
- Word16 A_fx[NB_SUBFR16k * ( M + 1 )], /* i/o: A(z) unquantized for the 4 subframes Q12*/
- Word16 Aw_fx[NB_SUBFR16k * ( M + 1 )], /* i/o: weighted A(z) unquantized for subframes Q14*/
- Word32 epsP_fx[M + 1], /* i : LP prediction errors epsP_fx_q*/
- Word16 *epsP_fx_q, /* i : LP prediction errors */
- Word16 lsp_new_fx[M], /* i/o: LSPs at the end of the frame Q15*/
- Word16 lsp_mid_fx[M], /* i/o: LSPs in the middle of the frame Q15*/
- Word16 *new_inp_resamp16k_fx, /* o : new input signal @16kHz, non pre-emphasised, used by the WB TBE/BWE Q_new-1*/
- Word16 *Voicing_flag, /* o : voicing flag for HQ FEC Q0*/
- Word16 old_wsp_fx[], /* i : weighted input signal buffer e_old_wsp*/
- Word16 e_old_wsp,
- const Word16 loc_harm, /* i : harmonicity flag Q0*/
- const Word16 vad_flag_dtx, /* i : HE-SAD flag with additional DTX HO Q0*/
- const Word16 MCT_flag, /* i : hMCT handle allocated (1) or not (0) Q0*/
- const Word16 vad_hover_flag, /* i : VAD hangover flag Q0*/
- const Word16 flag_16k_smc, /* i : flag to indicate if the OL SMC is run at 16 kHz Q0*/
- Word32 enerBuffer_fx[CLDFB_NO_CHANNELS_MAX], /* e_enerBuffer */
- Word16 e_enerBuffer,
- Word16 fft_buff_fx[2 * L_FFT], /* Qx */
- Word16 cor_map_sum_fx, /* Q8 */
- Word16 *Q_new
-);
-/*! r: number of clipped samples */
-void ivas_initialize_handles_enc_fx(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-ivas_error ivas_init_encoder(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-void ivas_destroy_enc_fx(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-ivas_error ivas_initialize_MD_bstr_enc_fx(
- BSTR_ENC_HANDLE *hBstr, /* o : encoder MD bitstream handle */
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-void ivas_destroy_MD_bstr_enc_fx(
- BSTR_ENC_HANDLE *hMetaData /* i/o: encoder MD bitstream handle */
-);
-
-ivas_error ivas_init_decoder_front(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-ivas_error ivas_init_decoder(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-ivas_error ivas_output_buff_dec(
- float *p_output_f[], /* i/o: output audio buffers */
- const int16_t nchan_out_buff_old, /* i : previous frame number of output channels*/
- const int16_t nchan_out_buff /* i : number of output channels */
-);
-#endif
-
-ivas_error stereo_dmx_evs_init_encoder(
- STEREO_DMX_EVS_ENC_HANDLE *hStereoDmxEVS, /* o : Stereo downmix for EVS encoder handle */
- const int32_t input_Fs /* i : input sampling rate */
-);
-
-void stereo_dmx_evs_close_encoder(
- STEREO_DMX_EVS_ENC_HANDLE *hStereoDmxEVS /* i/o: Stereo downmix for EVS encoder handle */
-);
-
-ivas_error ivas_dec(
- Decoder_Struct *st_ivas, /* i : IVAS decoder structure */
- int16_t *data /* o : output synthesis signal */
-);
-
-
-ivas_error mct_dec_reconfigure(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const uint16_t b_nchan_change /* i : flag indicating different channel count */
-);
-
-
-void ivas_mct_dec_close(
- MCT_DEC_HANDLE *hMCT /* i/o: MCT decoder structure */
-);
-
-ivas_error ivas_corecoder_dec_reconfig(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t nSCE_old, /* i : number of SCEs in previous frame */
- int16_t nCPE_old, /* i : number of CPEs in previous frame */
- const int16_t nchan_transport_old, /* i : number of TCs in previous frame */
- const int16_t sba_dirac_stereo_flag_old, /* i : signal stereo rendering using DFT upmix in previous frame */
- const int32_t brate_SCE, /* i : bitrate to be set for the SCEs */
- const int32_t brate_CPE /* i : bitrate to be set for the CPEs */
-);
-
-ivas_error ivas_hp20_dec_reconfig(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t nchan_hp20_old /* i : number of HP20 filters in previous frame*/
-);
-
-ivas_error ivas_sce_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t sce_id, /* i : SCE # identifier */
- float *output[1], /* o : output synthesis signal */
- const int16_t output_frame, /* i : output frame length per channel */
- const int16_t nb_bits_metadata /* i : number of metadata bits */
-);
-
-ivas_error ivas_cpe_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t cpe_id, /* i : CPE # identifier */
- float *output[CPE_CHANNELS], /* o : output synthesis signal */
- const int16_t output_frame, /* i : output frame length per channel */
- const int16_t nb_bits_metadata /* i : number of metadata bits */
-);
-
-ivas_error ivas_mct_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- float *output[], /* o : output synthesis signal */
- const int16_t output_frame, /* i : output frame length per channel */
- const int16_t nb_bits_metadata /* i : number of metadata bits */
-);
-
-/*! r: number of channels to be synthesised */
-
-void copy_decoder_config(
- Decoder_Struct *st_ivas, /* i : IVAS decoder structure */
- Decoder_State *st /* o : decoder state structure */
-);
-
-void destroy_core_dec(
- DEC_CORE_HANDLE hCoreCoder /* i/o: core decoder structure */
-);
-
-
-void ivas_initialize_handles_dec(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-ivas_error ivas_core_enc_fx(
- SCE_ENC_HANDLE hSCE, /* i/o: SCE encoder structure */
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */
- const Word16 n_CoreChannels, /* i : number of core channels to be coded Q0*/
- Word16 old_inp_12k8_fx[][L_INP_12k8], /* i : buffer of old input signal Q_new-1*/
- Word16 old_inp_16k_fx[][L_INP], /* i : buffer of old input signal Q_new-1*/
- Word16 Q_new[],
- Word32 ener_fx[], /* i : residual energy from Levinson-Durbin epsP_fx_q*/
- Word16 A_fx[][NB_SUBFR16k * ( M + 1 )], /* i : A(z) unquantized for the 4 subframes Q12*/
- Word16 Aw_fx[][NB_SUBFR16k * ( M + 1 )], /* i : weighted A(z) unquantized for subframes Q12*/
- Word32 epsP_fx[][M + 1], /* i : LP prediction errors epsP_fx_q*/
- Word16 epsP_fx_q[], /* i : LP prediction errors */
- Word16 lsp_new_fx[][M], /* i : LSPs at the end of the frame Q15*/
- Word16 lsp_mid_fx[][M], /* i : LSPs in the middle of the frame Q15*/
- const Word16 vad_hover_flag[], /* i : VAD hanglover flag Q0*/
- Word16 attack_flag[], /* i : attack flag (GSC or TC) Q0*/
- Word32 realBuffer_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: real buffer q_re_im_buf*/
- Word32 imagBuffer_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: imag buffer q_re_im_buf*/
- Word16 *q_re_im_buf,
- Word16 old_wsp_fx[][L_WSP], /* i : weighted input signal buffer e_old_wsp*/
- Word16 e_old_wsp[],
- const Word16 loc_harm[], /* i : harmonicity flag Q0*/
- const Word16 cor_map_sum_fx[], /* i : speech/music clasif. parameter Q8*/
- const Word16 vad_flag_dtx[], /* i : HE-SAD flag with additional DTX HO Q0*/
- Word32 enerBuffer_fx[][CLDFB_NO_CHANNELS_MAX], /* o : energy buffer enerBuffer_fx_exp*/
- Word16 enerBuffer_fx_exp[], /* o : energy buffer */
- Word16 fft_buff_fx[][2 * L_FFT], /* i : FFT buffer Qx*/
- const Word16 tdm_SM_or_LRTD_Pri, /* i : channel combination scheme flag Q0*/
- const Word16 ivas_format, /* i : IVAS format Q0*/
- const Word16 flag_16k_smc /* i : flag to indicate if the OL SMC is run at 16 kHz Q0*/
-);
-
-
-
-void decod_gen_2sbfr(
- Decoder_State *st, /* i/o: decoder static memory */
- const int16_t sharpFlag, /* i : formant sharpening flag */
- const float *Aq, /* i : LP filter coefficient */
- float *pitch_buf, /* o : floating pitch values for each subframe */
- float *voice_factors, /* o : voicing factors */
- float *exc, /* i/o: adapt. excitation exc */
- float *exc2, /* i/o: adapt. excitation/total exc */
- float *bwe_exc, /* o : excitation for SWB TBE */
- float *gain_buf, /* o : floating pitch gain for each subframe */
- const int16_t tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */
- const float tdm_Pri_pitch_buf[] /* i : pitch values for primary channel */
-);
-
-void synchro_synthesis(
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *output[CPE_CHANNELS], /* i/o: output synthesis signal */
- const int16_t output_frame, /* i : Number of samples */
- const int16_t sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */
-);
-
-void synchro_synthesis_fixed(
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *output[CPE_CHANNELS], /* i/o: output synthesis signal */
- const int16_t output_frame, /* i : Number of samples */
- const int16_t sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */
-);
-
-void stereo_tcx_init_enc(
- Encoder_State *st /* i/o: encoder state structure */
-);
-
-
-
-
-void stereo_tcx_init_dec(
- Decoder_State *st, /* i/o: decoder state structure */
- const int16_t MCT_flag, /* i : hMCT handle allocated (1) or not (0) */
- const int16_t last_element_mode /* i : element mode of previous frame */
-);
-
-/*! r: S/M decision (0 = speech or noise, 1 = unclear, 2 = music) */
-int16_t ivas_smc_gmm(
- Encoder_State *st, /* i/o: encoder state structure */
- STEREO_CLASSIF_HANDLE hStereoClassif, /* i/o: stereo classifier structure */
- const int16_t localVAD_HE_SAD, /* i : HE-SAD flag without hangover */
- const float Etot, /* i : total frame energy */
- const float lsp_new[M], /* i : LSPs in current frame */
- const float cor_map_sum, /* i : correlation map sum (from multi-harmonic anal.) */
- const float epsP[M + 1], /* i : LP prediciton error */
- const float PS[], /* i : energy spectrum */
- const float non_sta, /* i : unbound non-stationarity */
- const float relE, /* i : relative frame energy */
- int16_t *high_lpn_flag, /* i/o: sp/mus LPN flag */
- const int16_t flag_spitch /* i : flag to indicate very short stable pitch */
-);
-
-void ivas_smc_mode_selection(
- Encoder_State *st, /* i/o: encoder state structure */
- const int32_t element_brate, /* i : element bitrate */
- int16_t smc_dec, /* i : raw decision of the 1st stage classifier */
- const float relE, /* i : relative frame energy */
- const float Etot, /* i : total frame energy */
- int16_t *attack_flag, /* i/o: attack flag (GSC or TC) */
- const float *inp, /* i : input signal */
- const float S_map[], /* i : short-term correlation map */
- const int16_t flag_spitch /* i : flag to indicate very short stable pitch */
-);
-
-/*! r: S/M decision (0=speech or noise,1=unclear,2=music) */
-int16_t ivas_acelp_tcx20_switching(
- Encoder_State *st, /* i/o: encoder state structure */
- const float *inp, /* i : new input signal */
- const float *wsp, /* i : input weighted signal */
- const float non_staX, /* i : unbound non-stationarity for sp/mu clas */
- const float *pitch_fr, /* i : fraction pitch values */
- const float *voicing_fr, /* i : fractional voicing values */
- const float currFlatness, /* i : flatness */
- const float lsp_mid[M], /* i : LSPs at the middle of the frame */
- const float stab_fac, /* i : LP filter stability */
- float *res_cod_SNR_M,
- const int16_t flag_16k_smc /* i : flag to indicate if the OL SMC is run at 16 kHz */
-);
-
-
-
-void ivas_decision_matrix_dec(
- Decoder_State *st, /* i/o: decoder state structure */
- int16_t *sharpFlag, /* o : formant sharpening flag */
- int16_t *core_switching_flag, /* o : ACELP->HQ switching frame flag */
- const int32_t element_brate, /* i : element bitrate */
- const int16_t nchan_out /* i : Number of output channels */
-);
-
-void set_bw_stereo(
- CPE_ENC_HANDLE hCPE /* i/o: CPE encoder structures */
-);
-
-/*! r: flag indicating whether the coded BW has changed */
-int16_t set_bw_mct(
- CPE_ENC_HANDLE hCPE[MCT_MAX_BLOCKS], /* i/o: CPE encoder structures */
- const int16_t nCPE /* i : number of CPEs */
-);
-void dec_acelp_fast(
- Decoder_State *st, /* i/o: decoder state structure */
- const int16_t cdk_index, /* i : codebook index */
- float code[], /* o : algebraic (fixed) codebook excitation */
- const int16_t L_subfr /* i : subframe length */
-);
-
-void set_transient_stereo(
- CPE_ENC_HANDLE hCPE, /* i : CPE structure */
- float currFlatness[] /* i/o: current flatness */
-);
-
-/*! r: preliminary flag to force ACELP */
-int16_t transient_analysis(
- TRAN_DET_HANDLE hTranDet, /* i : handle transient detection */
- const float cor_map_LT[], /* i : LT correlation map */
- const float multi_harm_limit /* i : multi harminic threshold */
-);
-
-void ivas_post_proc(
- SCE_DEC_HANDLE hSCE, /* i/o: SCE decoder structure */
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- const int16_t n, /* i : channel number */
- float synth[], /* i/o: output synthesis signal */
- float *output[CPE_CHANNELS], /* i/o: output synthesis signal */
- const int16_t output_frame, /* i : output frame length */
- const int16_t sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */
-);
-
-void ivas_renderer_select(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-ivas_error ivas_mc_enc_config_fx(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-ivas_error ivas_mc_dec_config(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t idx, /* i : LS config. index */
- uint16_t *nSamplesRendered, /* o : samples flushed from last frame (JBM) */
- int16_t *data /* o : output synthesis signal */
-);
-
-/*! r: MC format mode (MCT, McMASA, ParamMC) */
-MC_MODE ivas_mc_mode_select(
- const MC_LS_SETUP mc_ls_setup, /* i : MC loudspeaker setup */
- const int32_t total_brate /* i : IVAS total bitrate */
-);
-
-/*! r: number of loudspeaker channels */
-int16_t ivas_mc_ls_setup_get_num_channels(
- const MC_LS_SETUP mc_ls_setup /* i : loudspeaker setup (CICP) */
-);
-
-/*! r: output configuration*/
-AUDIO_CONFIG ivas_mc_map_ls_setup_to_output_config(
- const MC_LS_SETUP mc_ls_setup /* i : multi channel loudspeaker setup */
-);
-
-/*! r: multi channel loudspeaker setup */
-MC_LS_SETUP ivas_mc_map_output_config_to_mc_ls_setup(
- const AUDIO_CONFIG output_config /* i : output audio configuration */
-);
-
-void smooth_dft2td_transition(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *output[CPE_CHANNELS], /* i/o: synthesis @external Fs */
- const int16_t output_frame /* i : output frame length */
-);
-
-
-/*! r: flag indicating a valid bitrate */
-Word16 is_IVAS_bitrate_fx(
- const Word32 ivas_total_brate /* i : IVAS total bitrate */
-);
-
-int16_t is_DTXrate(
- const int32_t ivas_total_brate /* i : IVAS total bitrate */
-);
-
-
-void TonalMdctConceal_create_concealment_noise_ivas(
- float concealment_noise[L_FRAME48k],
- CPE_DEC_HANDLE hCPE,
- const int16_t L_frameTCX,
- const int16_t L_frame,
- const int16_t idchan,
- const int16_t subframe_idx,
- const int16_t core,
- const float crossfade_gain,
- const TONALMDCTCONC_NOISE_GEN_MODE noise_gen_mode
-);
-
-void TonalMdctConceal_whiten_noise_shape_ivas(
- Decoder_State *st,
- const int16_t L_frame,
- const TONALMDCTCONC_NOISE_SHAPE_WHITENING_MODE
-);
-
-void dtx_read_padding_bits(
- DEC_CORE_HANDLE st,
- const int16_t num_bits
-);
-
-
-
-/*----------------------------------------------------------------------------------*
- * JBM prototypes
- *----------------------------------------------------------------------------------*/
-
-
-
-ivas_error ivas_jbm_dec_flush_renderer(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t tc_granularity_new, /* i : new renderer granularity */
- const RENDERER_TYPE renderer_type_old, /* i : old renderer type */
- const AUDIO_CONFIG intern_config_old, /* i : old internal config */
- const IVAS_OUTPUT_SETUP_HANDLE hIntSetupOld, /* i : old internal output setup */
- const MC_MODE mc_mode_old, /* i : old MC mode */
- const ISM_MODE ism_mode_old, /* i : old ISM mode */
- uint16_t *nSamplesRendered, /* o : number of samples flushed */
- int16_t *data /* o : output synthesis signal */
-);
-
-void ivas_jbm_dec_feed_tc_to_renderer(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t nSamplesForRendering, /* i : number of TC samples available for rendering */
- int16_t *nSamplesResidual, /* o : number of samples not fitting into the renderer grid and buffer for the next call*/
- float *data /* i/o: transport channels/output synthesis signal */
-);
-
-ivas_error ivas_jbm_dec_set_discard_samples(
- Decoder_Struct *st_ivas /* i/o: main IVAS decoder structre */
-);
-
-void ivas_jbm_dec_get_adapted_linear_interpolator(
- const int16_t default_interp_length, /* i : default length of the (full-frame) interpolator */
- const int16_t interp_length, /* i : length of the interpolator to be created */
- float *interpolator /* o : the interpolator */
-);
-
-
-
-int16_t ivas_jbm_dec_get_num_tc_channels(
- Decoder_Struct *st_ivas /* i : IVAS decoder handle */
-);
-
-void ivas_jbm_dec_copy_tc_no_tsm(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- float *tc[], /* i : transport channels */
- const int16_t output_frame /* i : output frame size */
-);
-
-
-TC_BUFFER_MODE ivas_jbm_dec_get_tc_buffer_mode(
- Decoder_Struct *st_ivas /* i : IVAS decoder handle */
-);
-
-/*! r: render granularity */
-int16_t ivas_jbm_dec_get_render_granularity_flt(
- const RENDERER_TYPE rendererType, /* i : renderer type */
- const IVAS_FORMAT ivas_format, /* i : ivas format */
- const MC_MODE mc_mode, /* i : MC mode */
- const int32_t output_Fs /* i : sampling rate */
-);
-
-ivas_error ivas_jbm_dec_tc_buffer_open(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const TC_BUFFER_MODE tc_buffer_mode, /* i : buffer mode */
- const int16_t nchan_transport_jbm, /* i : number of real transport channels */
- const int16_t nchan_transport_internal, /* i : number of totally buffered channels */
- const int16_t nchan_full, /* i : number of channels to fully store */
- const int16_t n_samples_granularity /* i : granularity of the renderer/buffer */
-);
-
-ivas_error ivas_jbm_dec_tc_buffer_reconfigure(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const TC_BUFFER_MODE tc_buffer_mode, /* i : new buffer mode */
- const int16_t nchan_transport_jbm, /* i : new number of real transport channels */
- const int16_t nchan_transport_internal, /* i : new number of totally buffered channels */
- const int16_t nchan_full, /* i : new number of channels to fully store */
- const int16_t n_samples_granularity /* i : new granularity of the renderer/buffer */
-);
-
-void ivas_jbm_dec_tc_buffer_close(
- DECODER_TC_BUFFER_HANDLE *phTcBuffer /* i/o: TC buffer handle */
-);
-
-void ivas_jbm_dec_td_renderers_adapt_subframes(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-ivas_error ivas_jbm_dec_metadata_open(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-void ivas_jbm_masa_sf_to_sf_map(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * ISM prototypes
- *----------------------------------------------------------------------------------*/
-
-void bitbudget_to_brate(
- const Word16 x[], /* i : bitbudgets Q0 */
- Word32 y[], /* o : bitrates Q0 */
- const Word16 N /* i : number of entries to be converted */
-);
-
-void ivas_ism_reset_metadata(
- ISM_METADATA_HANDLE hIsmMeta /* i/o: ISM metadata handles */
-);
-
-void ivas_ism_reset_metadata_enc(
- ISM_METADATA_HANDLE hIsmMeta /* i/o: ISM metadata handle */
-);
-void ivas_ism_reset_metadata_API(
- ISM_METADATA_HANDLE hIsmMeta /* i/o: ISM metadata handles */
-);
-
-/*! r: index of the winning codeword */
-Word16 ism_quant_meta_fx(
- const Word32 val, /* i : scalar value to quantize Q22 */
- Word32 *valQ, /* o : quantized value Q22 */
- const Word32 borders_fx[], /* i : level borders Q22 */
- const Word32 q_step_fx, /* i : quantization step Q22 */
- const Word32 q_step_border_fx, /* i : quantization step at the border Q22 */
- const Word16 cbsize /* i : codebook size */
-);
-
-ivas_error ivas_ism_metadata_enc_create_fx(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- const int16_t n_ISms, /* i : number of objects */
- int32_t element_brate_tmp[] /* o : element bitrate per object */
-);
-
-ivas_error ivas_ism_metadata_dec_create(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t n_ISms, /* i : number of objects */
- int32_t element_brate_tmp[] /* o : element bitrate per object */
-);
-
-ivas_error ivas_ism_enc(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- float *data[], /* i : input signal [channels][samples] */
- const int16_t input_frame, /* i : input frame length per channel */
- int16_t *nb_bits_metadata, /* i : number of metadata bits */
- const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */
-);
-
-ivas_error ivas_ism_metadata_dec(
- const int32_t ism_total_brate, /* i : ISM total bitrate */
- const int16_t nchan_ism, /* i : number of ISM channels */
- int16_t *nchan_transport, /* o : number of transport channels */
- ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */
- SCE_DEC_HANDLE hSCE[], /* i/o: SCE decoder handles */
- const int16_t bfi, /* i : bfi flag */
- int16_t nb_bits_metadata[], /* o : number of metadata bits */
- ISM_MODE ism_mode, /* i : ISM mode */
- ISM_DTX_DATA_DEC hISMDTX, /* i/o: ISM DTX structure */
- const PARAM_ISM_CONFIG_HANDLE hParamIsm, /* i : Param ISM Config Handle */
- int16_t *ism_extended_metadata_flag, /* i/o: Extended metadata active in renderer */
- int16_t *ism_extmeta_cnt, /* i/o: Number of change frames observed */
- DEC_CORE_HANDLE st0 /* i : core-coder handle */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * Parametric ISM prototypes
- *----------------------------------------------------------------------------------*/
-
-/*! r: ISM format mode */
-
-ivas_error ivas_param_ism_enc_open_fx(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-void ivas_param_ism_enc_close_fx(
- PARAM_ISM_CONFIG_HANDLE *hParamIsm, /* i/o: ParamISM handle */
- const int32_t input_Fs /* i : input sampling_rate */
-);
-
-void ivas_ism_metadata_close(
- ISM_METADATA_HANDLE hIsmMetaData[], /* i/o : object metadata handles */
- const int16_t first_idx /* i : index of first handle to deallocate */
-);
-
-
-ivas_error ivas_ism_enc_config(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-
-
-
-void ivas_param_ism_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *output_f[] /* i/o: synthesized core-coder transport channels/DirAC output */
-);
-
-void ivas_ism_dec_digest_tc(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-
-
-void ivas_param_ism_dec_render(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const uint16_t nSamplesAsked, /* i : number of CLDFB slots requested */
- uint16_t *nSamplesRendered, /* o : number of CLDFB slots rendered */
- uint16_t *nSamplesAvailable, /* o : number of CLDFB slots still to render */
- float *output_f[] /* o : rendered time signal */
-);
-
-void ivas_param_ism_params_to_masa_param_mapping(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * ISM DTX prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_ism_dtx_open(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-/*! r: indication of DTX frame */
-int16_t ivas_ism_dtx_enc(
- ISM_DTX_HANDLE hISMDTX, /* i/o: ISM DTX handle */
- SCE_ENC_HANDLE hSCE[MAX_SCE], /* i/o: SCE encoder structure */
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t nchan_ism, /* i : number of objects */
- const int16_t nchan_transport, /* i : number of transport channels */
- int16_t vad_flag[MAX_NUM_OBJECTS], /* i : VAD flag */
- ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */
- int16_t md_diff_flag[], /* o : metadata differential flag */
- int16_t *sid_flag /* o : indication of SID frame */
-);
-
-void ivas_ism_dtx_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- int16_t *nb_bits_metadata /* o : number of metadata bits */
-);
-
-void ivas_ism_metadata_sid_enc_fx(
- ISM_DTX_HANDLE hISMDTX, /* i/o: ISM DTX handle */
- const int16_t flag_noisy_speech, /* i : noisy speech flag */
- const int16_t nchan_ism, /* i : number of objects */
- const int16_t nchan_transport, /* i : number of transport channels */
- const ISM_MODE ism_mode, /* i : ISM mode */
- ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */
- const int16_t sid_flag, /* i : indication of SID frame */
- const int16_t md_diff_flag[], /* i : metadata differental flag */
- BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */
- int16_t nb_bits_metadata[] /* o : number of metadata bits */
-);
-
-void ivas_ism_metadata_sid_dec(
- SCE_DEC_HANDLE hSCE[MAX_SCE], /* i/o: SCE decoder structure */
- const int32_t ism_total_brate, /* i : ISM total bitrate */
- const int16_t bfi, /* i : bfi flag */
- const int16_t nchan_ism, /* i : number of objects */
- const int16_t nchan_transport, /* i : number of transport channels */
- const ISM_MODE ism_mode, /* i : ISM mode */
- int16_t *flag_noisy_speech, /* o : noisy speech flag */
- int16_t *sce_id_dtx, /* o : SCE DTX ID */
- ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */
- int16_t nb_bits_metadata[] /* o : number of metadata bits */
-);
-
-
-void ivas_param_ism_compute_noisy_speech_flag_fx(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-
-void update_last_metadata(
- const int16_t nchan_ism, /* i : number of objects */
- ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */
- const int16_t updt_flag[] /* i : last metadata update flag */
-);
-
-void ivas_ism_dtx_limit_noise_energy_for_near_silence(
- SCE_DEC_HANDLE hSCE[], /* i/o: SCE decoder structures */
- const int16_t sce_id_dtx, /* i : SCE DTX ID */
- const int16_t nchan_transport /* i : number of transport channels */
-);
-
-/*----------------------------------------------------------------------------------*
- * DFT Stereo prototypes
- *----------------------------------------------------------------------------------*/
-
-
-void stereo_dft_enc_analyze(
- Encoder_State **sts, /* i/o: encoder state structure */
- const int16_t n_channels, /* i : number of input channels */
- const int16_t input_frame, /* i : input frame length */
- STEREO_DFT_ENC_DATA_HANDLE hStereoDft, /* i/o: encoder DFT stereo handle */
- STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: encoder MDCT stereo handle */
- float DFT[CPE_CHANNELS][STEREO_DFT_N_MAX_ENC], /* o : DFT buffers */
- float *input_mem[CPE_CHANNELS] /* i/o: input buffer memory */
-);
-
-float stereo_dft_enc_synthesize(
- STEREO_DFT_ENC_DATA_HANDLE hStereoDft, /* i/o: encoder DFT stereo handle */
- float *output, /* o : output synthesis */
- const int16_t chan, /* i : channel number */
- const int32_t input_Fs, /* i : input sampling rate */
- const int32_t output_sampling_rate, /* i : output sampling rate */
- const int16_t L_frame /* i : frame length at internal Fs */
-);
-
-
-
-
-void stereo_dtf_cng(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- float DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* i/o: DFT buffers */
- const int16_t output_frame /* i : output frame size */
-);
-
-void stereo_dft_cng_side_gain(
- STEREO_DFT_ENC_DATA_HANDLE hStereoDft, /* i/o: DFT stereo encoder handle */
- STEREO_CNG_ENC_HANDLE hStereoCng, /* i/o: Stereo CNG data structure */
- const int32_t core_brate, /* i : core bitrate */
- const int32_t last_core_brate, /* i : last core bitrate */
- const int16_t bwidth /* i : audio band-width */
-);
-
-
-void stereo_dft_dequantize_itd(
- int16_t *ind,
- float *out,
- const int32_t output_Fs
-);
-
-
-
-void stereo_dft_dec_sid_coh(
- Decoder_State *st, /* i/o: decoder state structure */
- const int16_t nbands, /* i : number of DFT stereo bands */
- float *coh, /* i/o: coherence */
- int16_t *nb_bits /* i/o: number of bits read */
-);
-
-ivas_error stereo_dft_dec_create(
- STEREO_DFT_DEC_DATA_HANDLE *hStereoDft, /* i/o: decoder DFT stereo handle */
- const int32_t element_brate, /* i : element bitrate */
- const int32_t output_Fs, /* i : output sampling rate */
- const int16_t sba_dirac_stereo_flag, /* i : signal stereo output for SBA DirAC */
- const int16_t nchan_transport /* i : number of transport channels */
-);
-
-void stereo_dft_dec_reset(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft /* i/o: decoder DFT stereo handle */
-);
-
-void stereo_dft_dec_update(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder DFT stereo handle */
- const int16_t output_frame, /* i : output frame length */
- const int16_t sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */
-);
-
-void stereo_dft_dec_destroy(
- STEREO_DFT_DEC_DATA_HANDLE *hStereoDft /* i/o: decoder DFT stereo handle */
-);
-
-void stereo_dft_dec_analyze(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- const float *input, /* i : input signal */
- float out_DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* o : DFT buffers */
- const int16_t chan, /* i : channel number */
- const int16_t input_frame, /* i : input frame size */
- const int16_t output_frame, /* i : output frame size */
- const DFT_STEREO_DEC_ANA_TYPE ana_type, /* i : signal type to analyze */
- const int16_t k_offset, /* i : offset of DFT */
- const int16_t delay /* i : delay in samples for input signal */
-);
-
-void stereo_dft_dec_synthesize(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* i : DFT buffers */
- const int16_t chan, /* i : channel number */
- float output[L_FRAME48k], /* o : output synthesis signal */
- const int16_t output_frame /* i : output frame length */
-);
-
-
-void stereo_dft_res_ecu(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: Decoder DFT stereo handle */
- float *pDFT_RES, /* i/o: residual signal */
- float *const DFT_PRED_RES, /* i/o: residual prediction signal */
- const int16_t k, /* i : Subframe index */
- const int16_t output_frame, /* i : Output frame length */
- const int16_t prev_bfi, /* i : Previous BFI */
- const float dmx_nrg, /* i : Down-mix energy */
- int16_t *num_plocs, /* i/o: Number of peak locations */
- int16_t *plocs, /* i/o: Peak locations (bin) */
- float *plocsi, /* i/o: Peak locations (fractional) */
- float *input_mem /* o : Residual DFT buffer input mem */
-);
-
-void stereo_dft_res_subst_spec(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: Decoder DFT stereo handle */
- float *pDFT_RES, /* i/o: residual signal */
- const float *const DFT_PRED_RES, /* i : residual prediction signal */
- const int16_t time_offs, /* i : Time offset for phase adjustm. */
- const int16_t L_res, /* i : bandwidth of residual signal */
- const int16_t L_ana, /* i : Length of FFT analysis */
- const int16_t k, /* i : Subframe index */
- int16_t *num_plocs, /* i/o: Number of peak locations */
- int16_t *plocs, /* i/o: Peak locations (bin) */
- float *plocsi, /* i/o: Peak locations (fractional) */
- const int16_t analysis_flag /* i : Flag for running peak analysis */
-);
-
-void stereo_dft_res_ecu_burst_att(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: Decoder DFT stereo handle */
- float *pDFT_RES, /* i/o: residual signal /att. residual */
- const float dmx_nrg, /* i : dmx energy of current frame */
- const int16_t L_res, /* i : Bandwidth of residual */
- const int16_t L_ana /* i : Length of FFT analysis */
-);
-
-/*! r: total energy of downmix with maximum swb bandwidth max */
-float stereo_dft_dmx_swb_nrg(
- const float *dmx_k0, /* i : first subframe spectrum */
- const float *dmx_k1, /* i : second subframe spectrum */
- const int16_t frame_length /* i : frame lanegth */
-);
-
-int16_t stereo_dft_sg_recovery(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft /* i/o: Decoder DFT stereo handle */
-);
-
-void stereo_dft_dec_res(
- CPE_DEC_HANDLE hCPE, /* i/o: decoder CPE handle */
- float res_buf[STEREO_DFT_N_8k], /* i : residual buffer */
- float *output /* o : output frame */
-);
-
-/*! r: Decision to enable or disable BPF on DFT stereo residual */
-
-void bpf_pitch_coherence(
- Decoder_State *st, /* i/o: decoder state structure */
- const float pitch_buf[] /* i : pitch for each subframe [0,1,2,3] */
-);
-
-void stereo_dft_dec_read_BS(
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int32_t element_brate, /* i : element bitrate */
- int32_t *total_brate, /* o : total bitrate */
- Decoder_State *st, /* i/o: decoder state structure */
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder DFT stereo handle */
- const int16_t bwidth, /* i : bandwidth */
- const int16_t output_frame, /* i : output frame length */
- float res_buf[STEREO_DFT_N_8k], /* o : residual buffer */
- int16_t *nb_bits, /* o : number of bits read */
- float *coh, /* i/o: Coherence */
- const int16_t ivas_format /* i : ivas format */
-);
-
-void stereo_dft_dec_smooth_parameters(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder DFT stereo handle */
- const int16_t prev_sid_nodata, /* i : Previous SID/No data indicator */
- const int16_t active_frame_counter, /* i : Active frame counter */
- const int32_t element_brate /* i : Element bitrate */
-);
-
-void stereo_dft_generate_res_pred(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder DFT stereo handle */
- const float samp_ratio, /* i : sampling ratio */
- float *pDFT_DMX, /* i : downmix signal */
- float *DFT_PRED_RES, /* o : residual prediction signal */
- float *pPredGain, /* i : residual prediction gains */
- const int16_t k, /* i : subframe index */
- float *ap_filt_DMX, /* i : enhanced stereo filling signal */
- int16_t *stop, /* o : last FD stereo filling bin */
- const int16_t bfi /* i : BFI flag */
-);
-
-void stereo_dft_dec_core_switching(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float output[], /* i/o: synthesis @internal Fs */
- float synth[], /* i : synthesis @output Fs */
- float hb_synth[], /* i/o: hb synthesis */
- float DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* o : DFT buffers */
- const int16_t output_frame, /* i : output frame length */
- const int16_t use_cldfb_for_dft, /* i : flag to use of CLDFB for DFT Stereo */
- const int16_t sba_dirac_stereo_dtx_flag /* i : DTX indicator for SBA DirAC stereo */
-);
-
-void init_basic_allpass(
- basic_allpass_t *ap, /* i/o: basic allpass structure */
- const float *gains, /* i : allpass filter gains */
- const int16_t *delays /* i : allpass filter delays */
-);
-
-void filter_with_allpass(
- const float *sig, /* i : allpass input signal */
- float *out, /* o : filtered output */
- const int16_t len, /* i : length of input */
- basic_allpass_t *ap /* i/o: basic allpass structure */
-);
-
-/*! r: used GR order */
-
-/*! r: used GR order */
-
-
-/*! r: number of bits written */
-
-/*! r: number of bits written */
-
-
-void stereo_dft_enc_compute_itd(
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- float *DFT_L,
- float *DFT_R,
- const int16_t k_offset,
- const int16_t input_frame,
- const int16_t vad_flag_dtx[],
- const int16_t vad_hover_flag[],
- float *bin_nrgL,
- float *bin_nrgR
-);
-
-void stereo_dft_config(
- STEREO_DFT_CONFIG_DATA_HANDLE hConfig, /* o : DFT stereo configuration */
- const int32_t brate, /* i : IVAS/CPE/nominal total bitrate */
- int16_t *bits_frame_nominal, /* o : primary channel nominal bits per frame */
- int16_t *bits_frame_nominal_2 /* o : secondary channel nominal bits per frame*/
-);
-
-int16_t stereo_dft_band_config(
- int16_t *band_limits, /* o : DFT band limits */
- const int16_t band_res, /* i : DFT band resolution */
- const int16_t NFFT, /* i : analysis/synthesis window length */
- const int16_t enc_dec /* i : flag to indicate enc vs dec */
-);
-
-void stereo_dft_dmx_out_reset(
- STEREO_DFT_DMX_DATA_HANDLE hStereoDftDmx /* i/o: DFT stereo DMX decoder */
-);
-
-void stereo_dft_unify_dmx(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder stereo handle */
- Decoder_State *st0, /* i/o: decoder state structure */
- float DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* i/o: DFT buffers */
- float *input_mem, /* i/o: mem of buffer DFT analysis */
- const int16_t prev_sid_nodata /* i : Previous SID/No data indicator */
-);
-
-void add_HB_to_mono_dmx(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float output[L_FRAME48k], /* i/o: output synthesis */
- float outputHB[L_FRAME48k], /* i : HB synthesis */
- const int16_t last_core, /* i : last core, primary channel */
- const int16_t output_frame /* i : frame length */
-);
-
-/*----------------------------------------------------------------------------------*
- * Range Coder prototypes
- *----------------------------------------------------------------------------------*/
-
-void rc_uni_dec_init(
- RangeUniDecState *rc_st_dec, /* i/o: RC state handle */
- uint16_t *bit_buffer, /* i : Bit buffer */
- const int16_t max_available_bits /* i : Total maximum bits available */
-);
-
-/*! r: Read symbol */
-uint16_t rc_uni_dec_read_symbol_fastS(
- RangeUniDecState *rc_st_dec, /* i/o: Decoder State */
- const uint16_t cum_freq_table[], /* i : Cumulative frequency up to symbol */
- const uint16_t sym_freq_table[], /* i : Symbol frequency */
- const uint16_t alphabet_size, /* i : Number of symbols in the alphabet */
- const uint16_t tot_shift /* i : Total frequency as a power of 2 */
-);
-
-/*! r: Read bit */
-uint16_t rc_uni_dec_read_bit(
- RangeUniDecState *rc_st_dec /* i/o: RC state handle */
-);
-
-/*! r: Read bit */
-uint16_t rc_uni_dec_read_bit_prob_fast(
- RangeUniDecState *rc_st_dec, /* i/o: RC state handle */
- const int16_t freq0, /* i : Frequency for symbol 0 */
- const uint16_t tot_shift /* i : Total frequency as a power of 2 */
-);
-
-/*! r: Read bits */
-uint16_t rc_uni_dec_read_bits(
- RangeUniDecState *rc_st_dec, /* i/o: RC state handle */
- const int16_t bits /* i : Number of bits */
-);
-
-/*! r: Total number of bits consumed */
-int16_t rc_uni_dec_virtual_finish(
- RangeUniDecState *rc_st_dec /* i/o: RC state handle */
-);
-
-/*! r: Total number of bits consumed */
-int16_t rc_uni_dec_finish(
- RangeUniDecState *rc_st_dec /* i/o: RC state handle */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * ECLVQ Stereo prototypes
- *----------------------------------------------------------------------------------*/
-
-float ECSQ_dequantize_gain(
- const int16_t index
-);
-
-
-
-void ECSQ_init_instance(
- ECSQ_instance *ecsq_inst,
- const int16_t config_index,
- void *ac_handle
-);
-
-
-
-void ECSQ_dequantize_vector(
- const int16_t *input,
- const float global_gain,
- const int16_t N,
- float *output
-);
-
-
-/*----------------------------------------------------------------------------------*
- * ICA Stereo prototypes
- *----------------------------------------------------------------------------------*/
-
-void stereo_tca_init_enc(
- STEREO_TCA_ENC_HANDLE hStereoTCA, /* i/o: Stereo TCA encoder handle */
- const int32_t input_Fs /* i : input sampling frequency */
-);
-
-void stereo_tca_enc(
- CPE_ENC_HANDLE hCPE, /* i : CPE encoder structure */
- const int16_t input_frame /* i : length of a frame per channel */
-);
-
-void stereo_tca_init_dec(
- STEREO_TCA_DEC_HANDLE hStereoTCA /* i/o: Stereo TCA handle */
-);
-
-void stereo_tca_dec(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *synth[CPE_CHANNELS], /* i/o: output synth */
- const int16_t output_frame /* i : length of a frame per channel */
-);
-
-void stereo_tca_scale_R_channel(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *output, /* i/o: output synthesis, R channel */
- const int16_t output_frame /* i : frame length */
-);
-
-void adjustTargetSignal(
- float *target,
- const int16_t prevShift,
- const int16_t currShift,
- const int16_t L_shift_adapt,
- const int16_t method
-);
-
-/*----------------------------------------------------------------------------------*
- * IC-BWE Stereo prototypes
- *----------------------------------------------------------------------------------*/
-
-
-void stereo_icBWE_preproc(
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- const int16_t input_frame, /* i : input frame length */
- float shb_speech_nonref[] /* o : SHB speech non-ref channel */
-);
-
-void stereo_icBWE_enc(
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- const float shb_speech_ref[], /* i : SHB speech ref channel */
- float shb_speech_nonref[], /* i/o: SHB speech non-ref channel */
- const float *voice_factors /* i : voicing factors */
-);
-
-void stereo_icBWE_init_dec(
- STEREO_ICBWE_DEC_HANDLE hStereoICBWE /* i/o: Stereo inter-channel BWE handle */
-);
-
-void stereo_icBWE_dec(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *synthRef, /* i/o: Reference channel HB synthesis at output Fs */
- float *synth, /* o : Non reference channel HB synthesis at output Fs */
- const float *fb_synth_ref, /* i : ref. high-band synthesis 16-20 kHz */
- const float *voice_factors, /* i : voicing factors */
- const int16_t output_frame /* i : frame length */
-);
-
-void stereo_icBWE_decproc(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *output[CPE_CHANNELS], /* i/o: output symthesis */
- float outputHB[CPE_CHANNELS][L_FRAME48k], /* i : HB synthesis */
- const int16_t last_core, /* i : last core, primary channel */
- const int16_t last_bwidth, /* i : last bandwidth */
- const int16_t output_frame /* i : frame length */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * Stereo classifiers prototypes
- *----------------------------------------------------------------------------------*/
-
-void stereo_classifier_features(
- STEREO_CLASSIF_HANDLE hStereoClassif, /* i/o: stereo classifier structure */
- const int16_t idchan, /* i : channel ID */
- const int16_t element_mode, /* i : element mode */
- const int16_t vad_flag, /* i : VAD flag */
- const float lsf_new[], /* i : LSFs at the end of the frame */
- const float epsP[], /* i : LP analysis residual energies for each iteration*/
- const int16_t pitch[], /* i : open-loop pitch values for quantiz. */
- const float voicing[], /* i : OL maximum normalized correlation */
- const float cor_map_sum, /* i : speech/music clasif. parameter */
- const float non_staX, /* i : unbound non-stationarity for sp/mu clas. */
- const float sp_div, /* i : spectral diversity feature */
- const int16_t clas /* i : signal class */
-);
-
-
-void xtalk_classifier_dft(
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- const int16_t itd, /* i : ITD from DFT stereo - used as a feature */
- const float gcc_phat[] /* i : GPHAT cross-channel correlation function */
-);
-
-/*----------------------------------------------------------------------------------*
- * TD Stereo prototypes
- *----------------------------------------------------------------------------------*/
-
-void stereo_td_init_enc(
- STEREO_TD_ENC_DATA_HANDLE hStereoTD, /* i/o: TD stereo encoder handle */
- const int16_t last_element_mode /* i : last element mode */
-);
-
-
-
-void stereo_tdm_downmix(
- STEREO_TD_ENC_DATA_HANDLE hStereoTD, /* i : TD stereo IVAS encoder structure */
- float *Left_in, /* i/o: Left channel -> Primary channel */
- float *Right_in, /* i/o: Right channel -> Secondary channel */
- const int16_t input_frame, /* i : Number of samples */
- const int16_t tdm_ratio_idx, /* i : TDM ratio index */
- const int16_t tdm_SM_flag, /* i : channel combination scheme flag */
- const int16_t tdm_ratio_idx_SM /* i : TDM ratio index for SM mode */
-);
-
-void stereo_td_init_dec(
- STEREO_TD_DEC_DATA_HANDLE hStereoTD, /* i/o: TD stereo decoder handle */
- const int16_t last_element_mode /* i : last element mode */
-);
-
-void tdm_configure_dec(
- const int16_t ivas_format, /* i : IVAS format */
- const int16_t ism_mode, /* i : ISM mode in combined format */
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- int16_t *tdm_ratio_idx, /* o : ratio index */
- const int16_t nb_bits_metadata /* i : number of metadata bits */
-);
-
-void tdm_upmix_plain(
- float Left[], /* o : left channel */
- float Right[], /* o : right channel */
- const float PCh_2_L[], /* i : primary channel */
- const float SCh_2_R[], /* i : secondary channel */
- const float LR_ratio, /* i : mixing ratio */
- const float inv_den_LR_ratio, /* i : inverse mixing ration */
- const int16_t start_index, /* i : start index */
- const int16_t end_index, /* i : end index */
- const int16_t plus_minus_flag /* i : plus/minus flag */
-);
-
-void stereo_tdm_combine(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *PCh_2_L, /* i/o: Primary channel -> output as L channel */
- float *SCh_2_R, /* i/o: Seconday channel -> output as R channel */
- const int16_t output_frame, /* i : Number of samples */
- const int16_t flag_HB, /* i : flag to distinguish between core (0) and HB (1) synthesis */
- const int16_t tdm_ratio_idx /* i : TDM ratio index */
-);
-
-/*! r: replication decision; 1 = Use old LP */
-void tdm_ol_pitch_comparison(
- CPE_ENC_HANDLE hCPE, /* i : CPE encoder structure */
- float pitch_fr[CPE_CHANNELS][NB_SUBFR], /* i/o: fractional pitch values */
- float voicing_fr[CPE_CHANNELS][NB_SUBFR] /* i/o: fractional pitch gains */
-);
-
-void tdm_configure_enc(
- const int16_t ivas_format, /* i : IVAS format */
- const int16_t ism_mode, /* i : ISM mode in combined format */
- CPE_ENC_HANDLE hCPE, /* i : CPE encoder structure */
- const float Etot_last[CPE_CHANNELS], /* i/o: Energy of last frame */
- const int16_t tdm_SM_or_LRTD_Pri, /* i : channel combination scheme flag in TD stereo OR LRTD primary channel */
- const int16_t tdm_ratio_idx, /* i : ratio index */
- const int16_t tdm_ratio_idx_SM, /* i : ratio index in SM mode */
- const int16_t attack_flag, /* i : Primary channel attack flag */
- const int16_t nb_bits_metadata /* i : number of metadata bits */
-);
-
-
-void tdm_bit_alloc(
- const int16_t ivas_format, /* i : IVAS format */
- const int16_t ism_mode, /* i : ISM mode in combined format */
- const int32_t element_brate_wo_meta, /* i : element bitrate without metadata */
- const int16_t tdm_lp_reuse_flag, /* i : LPC reusage flag */
- int32_t *total_brate_pri, /* o : Allocated primary channel bitrate */
- int32_t *total_brate_sec, /* o : Allocated secondary channel bitrate */
- int16_t *tdm_low_rate_mode, /* o : secondary channel low rate mode flag */
- const int16_t coder_type, /* i : secondary channel coder type */
- const int16_t ener_ratio_idx, /* i : correlation ratio indexe */
- const int16_t tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */
- const int16_t bwidth_pri, /* i : bandwidth of the primary channel */
- const int16_t bwidth_sec, /* i : bandwidth of the secondary channel */
- const int16_t flag_ACELP16k_pri, /* i : ACELP@16kHz core flag, primary chan. */
- const int16_t tdm_LRTD_flag, /* i : LRTD stereo mode flag */
- const int16_t coder_type0, /* i : coder type (temporary in the encoder, from bitstream in decoder) */
- const int16_t tdm_inst_ratio_idx /* i : instantaneous correlation ratio index */
-);
-
-
-/*! r: value of the indice */
-uint16_t get_indice_st(
- Decoder_State *st, /* i/o: decoder state structure */
- const int32_t element_brate, /* i : element bitrate */
- const int16_t pos, /* i : absolute position in the bitstream */
- const int16_t nb_bits /* i : number of bits to quantize the indice */
-);
-
-void tdm_low_rate_dec(
- Decoder_State *st, /* i/o: decoder static memory */
- float dct_epit[], /* o : GSC excitation in DCT domain */
- float *tmp_noise, /* o : long term temporary noise energy */
- float *pitch_buf, /* o : floating pitch values for each subframe */
- float *voice_factors, /* o : voicing factors */
- float *exc, /* i/o: adapt. excitation exc */
- float *exc2, /* i/o: adapt. excitation/total exc */
- float *bwe_exc, /* o : excitation for SWB TBE */
- const float *lsf_new /* i : ISFs at the end of the frame */
-);
-
-void tdm_SCh_LSF_intra_pred(
- const int32_t element_brate, /* i : element bitrate */
- const float *tdm_lsfQ_PCh, /* i : primary channel LSFs */
- float *pred_lsf_SCh /* o : predicted secondary channel LSFs */
-);
-
-
-void first_VQstages(
- const float *const *cb,
- const float u[], /* i : vector to be encoded (prediction and mean removed) */
- const int16_t *levels, /* i : number of levels in each stage */
- const int16_t stagesVQ, /* i : number of stages */
- const float w[], /* i : weights */
- const int16_t N, /* i : vector dimension */
- const int16_t max_inner, /* i : maximum number of swaps in inner loop */
- int16_t indices_VQstage[]
-);
-
-
-void deindex_lvq_SHB(
- UWord32 index,
- float *out,
- const int16_t nbits,
- const int16_t mode
-);
-
-/*----------------------------------------------------------------------------------*
- * MDCT Stereo prototypes
- *----------------------------------------------------------------------------------*/
-
-void stereo_td_itd_mdct_stereo(
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder handle */
- const int16_t vad_flag_dtx[], /* i : VAD dtx flags */
- const int16_t vad_hover_flag[], /* i : VAD hangover flags */
- const int16_t input_frame /* i : frame length */
-);
-
-void QuantizeTCXSpectrum(
- Encoder_State *st, /* i : state handle */
- const int16_t frame_cnt, /* i : frame counter in the super_frame */
- const float *x_orig, /* i : shaped MDCT spectrum */
- const float *gainlpc, /* i : FDNS gains */
- const Word16 *Aqind, /* i : frame-independent quantized coefficients (M+1) */
- const int16_t tnsSize, /* i : number of tns parameters put into prm */
- const int16_t nb_bits, /* i : bit budget */
- const int16_t vad_hover_flag, /* i : VAD hangover flag */
- int16_t *pL_frameTCX, /* o : full frame length */
- int16_t *pL_frame, /* o : frame length */
- int16_t *pL_spec, /* o : length of the coded spectrum */
- int16_t *ptcx_offset, /* o : folding point offset relative to the end of the previous frame */
- int16_t *pnoiseFillingBorder, /* o : noise filling border */
- float spectrum[], /* o : quantized MDCT spectrum */
- CONTEXT_HM_CONFIG *hm_cfg, /* o : Context-based harmonic model configuration */
- int16_t *hm_active, /* o : flag indicating if the harmonic model is active */
- float lf_deemph_fact[], /* o : low frequency deemphasis factors */
- int16_t *nf_seed, /* o : noise filling random seed */
- float *ener, /* o : energy of the quantized spectrum */
- float *gain_tcx, /* o : global gain */
- int16_t prm[] /* o : tcx parameters */
-);
-
-void EstimateStereoTCXNoiseLevel(
- Encoder_State **sts, /* i : state handle */
- float *q_spectrum[CPE_CHANNELS][NB_DIV], /* i : quantized MDCT spectrum */
- float gain_tcx[][NB_DIV], /* i : global gain */
- int16_t L_frame[][NB_DIV], /* i : frame length */
- int16_t noiseFillingBorder[][NB_DIV], /* i : noise filling border */
- int16_t hm_active[][NB_DIV], /* i : flag indicating if the harmonic model is active */
- const int16_t ignore_chan[], /* i : flag indicating whether the channel should be ignored */
- float fac_ns[][NB_DIV], /* o : noise filling level */
- int16_t param_core[][NB_DIV * NPRM_DIV], /* o : quantized noise filling level */
- const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */
-);
-
-void TNSAnalysisStereo(
- Encoder_State **sts, /* i : state handle */
- float *mdst_spectrum[CPE_CHANNELS][NB_DIV], /* o : MDST spectrum */
- const int16_t bWhitenedDomain, /* i : whitened domain flag */
- int16_t tnsSize[CPE_CHANNELS][NB_DIV], /* i : number of tns parameters put into prm */
- int16_t tnsBits[CPE_CHANNELS][NB_DIV], /* i : number of tns bits in the frame */
- int16_t param_core[][NB_DIV * NPRM_DIV], /* o : quantized noise filling level */
- const int16_t mct_on /* i : flag mct block (1) or stereo (0) */
-);
-
-void InternalTCXDecoder(
- Encoder_State *st, /* i/o: state handle */
- const int16_t frame_cnt, /* i : frame counter in the super_frame */
- const int16_t L_frameTCX, /* i : full frame length */
- const int16_t L_frame, /* i : frame length */
- const int16_t L_spec, /* i : length of the coded spectrum */
- const int16_t tcx_offset, /* i : folding point offset relative to the end of the previous frame */
- const int16_t noiseFillingBorder, /* i : noise filling border */
- const float *x_quant, /* i : quantized spectrum */
- const float ener, /* i : energy of the quantized spectrum */
- float lf_deemph_fact[], /* i/o: low frequency deemphasis factors */
- const float fac_ns, /* i : noise filling level */
- const int16_t nf_seed, /* i : noise filling random seed */
- const float *A, /* i : LPC representation of the FDNS gains */
- float *gainlpc, /* i/o: FDNS gains */
- const int16_t hm_active, /* i : flag indicating if the harmonic model is active */
- float gain_tcx, /* i/o: global gain / quantized global gain */
- float spectrum[], /* o : dequantized spectrum */
- float synth[], /* o : time domain signal */
- int16_t *gain_tcx_q /* o : quantized global gain (at low bitrates) */
-);
-
-void stereo_mdct_core_enc_fx(
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- Word16 new_samples[CPE_CHANNELS][L_INP], /* i : new samples Q0*/
- Word16 old_wsp[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP Qx*/
- Word16 pitch_buf_fx[CPE_CHANNELS][NB_SUBFR16k] /* o : floating pitch for each subframe Q6*/
-);
-
-void initMdctStereoEncData(
- STEREO_MDCT_ENC_DATA *hStereoMdct, /* i/o: mdct stereo parameters structure */
- const IVAS_FORMAT ivas_format, /* i : IVAS format */
- const int16_t element_mode, /* i : element mode */
- const int32_t element_brate, /* i : element bitrate */
- const int16_t bwidth, /* i : bandwidth */
- const int16_t igf, /* i : flag indicating IGF activity */
- const H_IGF_GRID hIgfGrid, /* i : IGF grid setup */
- const int16_t mem_init /* i : initialize memory after malloc */
-);
-
-ivas_error initMdctItdHandling(
- STEREO_MDCT_ENC_DATA *hStereoMdct, /* i/o: mdct stereo parameters structure */
- const int32_t input_Fs /* i : input sampling rate */
-);
-
-void stereo_mdct_enc_destroy(
- STEREO_MDCT_ENC_DATA_HANDLE *hStereoMdct /* i/o: encoder MDCT stereo handle */
-);
-
-void initMdctStereoDecData(
- STEREO_MDCT_DEC_DATA *hStereoMdct, /* i/o: mdct stereo parameters structure */
- const int16_t igf, /* i : flag indicating IGF activity */
- const H_IGF_GRID igfGrid, /* i : IGF grid configuration */
- const int32_t element_brate, /* i : element bitrate */
- const int16_t bwidth /* i : audio bandwidth */
-);
-
-void stereo_mdct_init_bands(
- const int16_t L_frame, /* i : frame length */
- const int16_t tmp_tcx_mode, /* i : tcx mode (TCX10, TCX 20), -1 if transition frame */
- const int32_t element_brate, /* i : element bitrate */
- const int16_t igf, /* i : flag indicating if IGF is used */
- const H_IGF_GRID hIgfGrid, /* i : IGF grid setup */
- int16_t *sfbOffset, /* o : sfb offset table */
- int16_t *sfbCnt /* o : number of sfbs */
-);
-
-void stereo_mdct_init_igf_start_band(
- STEREO_MDCT_BAND_PARAMETERS *stbParams, /* i/o: stereo frequency band parameters */
- const float transFac, /* i : transform factor */
- const int16_t bwidth, /* i : audio bandwidth */
- const int32_t element_brate /* i : element bitrate */
-);
-
-void init_tcx_enc_info(
- Encoder_State *st, /* i : coder memory state */
- int16_t *L_frame,
- int16_t *L_frameTCX,
- int16_t *L_spec
-);
-
-void decoder_tcx_invQ(
- Decoder_State *st, /* i/o: coder memory state */
- int16_t prm[], /* i : parameters */
- float A[], /* i : coefficients NxAz[M+1] */
- Word16 Aind[], /* i : frame-independent coefficients Az[M+1] */
- const int16_t L_spec,
- const int16_t L_frame,
- const int16_t L_frameTCX,
- float x[],
- float gainlpc2[],
- float xn_buf[],
- int16_t *fUseTns, /* o : flag that is set if TNS data is present */
- STnsData *tnsData,
- float *gain_tcx,
- const int16_t **prm_sqQ,
- int16_t *nf_seed,
- const int16_t bfi, /* i : Bad frame indicator */
- const int16_t frame_cnt /* i : frame counter in the super frame */
-);
-
-void decoder_tcx_noisefilling(
- Decoder_State *st, /* i/o: coder memory state */
- float concealment_noise[L_FRAME48k],
- const float A[], /* i : coefficients NxAz[M+1] */
- const int16_t L_frameTCX_glob,
- const int16_t L_spec,
- const int16_t L_frame,
- const int16_t L_frameTCX,
- float x[],
- float gainlpc2[],
- int16_t *temp_concealment_method,
- const float gain_tcx,
- const int16_t *prm_sqQ,
- int16_t nf_seed,
- const int16_t bfi, /* i : Bad frame indicator */
- const int16_t MCT_flag, /* i : hMCT handle allocated (1) or not (0) */
- const int16_t frame_cnt /* i : frame counter in the super frame */
-);
-
-void decoder_tcx_noiseshaping_igf(
- Decoder_State *st, /* i/o: coder memory state */
- const int16_t L_spec,
- const int16_t L_frame,
- const int16_t L_frameTCX,
- const int16_t left_rect,
- float x[],
- const float gainlpc2[],
- int16_t *temp_concealment_method,
- const int16_t bfi /* i : Bad frame indicator */
-);
-
-void decoder_tcx_tns(
- Decoder_State *st, /* i/o: coder memory state */
- const int16_t L_frame_glob,
- const int16_t L_spec,
- const int16_t L_frame,
- const int16_t L_frameTCX,
- float x[N_MAX],
- const int16_t fUseTns, /* i : flag that is set if TNS data is present */
- STnsData *tnsData,
- const int16_t bfi, /* i : Bad frame indicator */
- const int16_t frame_cnt, /* i : frame counter in the super frame */
- const int16_t whitenedDomain
-);
-
-void decoder_tcx_imdct(
- Decoder_State *st, /* i/o: coder memory state */
- const int16_t L_frame_glob, /* i : frame length */
- const int16_t L_frameTCX_glob,
- const int16_t L_spec,
- const int16_t tcx_offset,
- const int16_t tcx_offsetFB,
- const int16_t L_frame,
- const int16_t L_frameTCX,
- const int16_t left_rect,
- float x[N_MAX],
- float xn_buf[],
- const uint16_t kernelType, /* i : TCX transform kernel type */
- const int16_t fUseTns, /* i : flag that is set if TNS data is present */
- float synth[], /* i/o: synth[-M..L_frame] */
- float synthFB[],
- const int16_t bfi, /* i : Bad frame indicator */
- const int16_t frame_cnt, /* i : frame counter in the super frame */
- const int16_t sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */
-);
-
-void init_tcx_info(
- Decoder_State *st, /* i/o: coder memory state */
- const int16_t L_frame_glob, /* i : global frame length */
- const int16_t L_frameTCX_glob, /* i : FB global frame length */
- const int16_t frame_cnt, /* i : frame counter in the super_frame */
- const int16_t bfi, /* i : bad frame indicator */
- int16_t *tcx_offset, /* o : folding point offset relative to the end of the previous frame */
- int16_t *tcx_offsetFB, /* o : FB folding point offset relative to the end of the previous frame*/
- int16_t *L_frame, /* o : frame length */
- int16_t *L_frameTCX, /* o : TCX frame length */
- int16_t *left_rect, /* o : left part is rectangular */
- int16_t *L_spec /* o : spectrum length */
-);
-
-void decoder_tcx_IGF_mono(
- Decoder_State *st, /* i/o: coder memory state */
- float x[], /* o : de-quatized coefficients */
- const int16_t L_frame, /* i : frame length */
- const int16_t left_rect, /* i : left part is rectangular */
- const int16_t bfi, /* i : bad frame indicator */
- const int16_t frame_cnt /* i : frame counter in the super_frame */
-);
-
-void decoder_tcx_IGF_stereo(
- Decoder_State **sts, /* i/o: coder memory states */
- STEREO_MDCT_DEC_DATA_HANDLE hStereoMdct, /* i/o: MDCT stereo structure */
- int16_t ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask */
- float *x[CPE_CHANNELS][NB_DIV], /* o : de-quatized coefficients */
- const int16_t L_frame, /* i : frame length */
- const int16_t left_rect, /* i : left part is rectangular */
- const int16_t k, /* i : Subframe index */
- const int16_t bfi, /* i : bad frame indicator */
- const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */
-);
-
-void ms_processing(
- STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: MDCT encoder structure */
- Encoder_State **sts, /* i/o: Encoder state structure */
- int16_t ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask */
- const int16_t iSubframe, /* i : subframe number */
- float x_0[], /* i/o: spectrum 1 */
- float x_1[], /* i/o: spectrum 2 */
- int16_t maxSfb /* i : number of stereo frequency bands */
-);
-
-void ms_inv_mask_processing(
- STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: MDCT encoder structure */
- Encoder_State **sts, /* i/o: Encoder state structure */
- int16_t ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask */
- const int16_t iSubframe, /* i : subframe number */
- const float x_0[], /* i : spectrum 1 */
- const float x_1[], /* i : spectrum 2 */
- float x_inv_0[], /* o : inverse spectrum 1 */
- float x_inv_1[], /* o : inverse spectrum 2 */
- int16_t maxSfb /* i : number of stereo frequency bands */
-);
-
-void IGFDecApplyStereo_flt(
- const IGF_DEC_INSTANCE_HANDLE hIGFDecL, /* i : instance handle of IGF Decoder */
- const IGF_DEC_INSTANCE_HANDLE hIGFDecR, /* i : instance handle of IGF Decoder */
- float *spectrumL, /* i/o: L MDCT spectrum */
- float *spectrumR, /* i/o: R MDCT spectrum */
- const int16_t igfGridIdx, /* i : in case of CELP->TCX switching, use 1.25 framelength */
- const int16_t *coreMsMask,
- const int16_t restrict_hopsize,
- const int16_t bfi, /* i : frame loss == 1, frame good == 0 */
- const int16_t bfi_apply_damping /* i : decoder element mode */
-);
-
-void IGFEncStereoEncoder(
- STEREO_MDCT_BAND_PARAMETERS *sfbParam, /* i/o: sfb parameters for the right channel */
- const IGF_ENC_INSTANCE_HANDLE hIGFEnc, /* i : IGF handle */
- const float *mdctSpectrumL, /* i : left spectrum */
- const float *mdctSpectrumR, /* i : right spectrum */
- int16_t *msMask, /* i/o: MS mask */
- int16_t *igfStereoMode, /* o : IGF stereo mode */
- const int16_t mdct_stereo_mode, /* i : MDCT stereo mode */
- const int16_t isTCX20, /* i : flag for indicating TCX20 */
- const int16_t isTransition /* i : flag for transtition */
-);
-
-void IGFDecReplicateTCX10State_flt(
- IGF_DEC_INSTANCE_HANDLE hIGFDec /* i/o: instance handle of IGF Decoder */
-);
-
-
-void InitPsychLPC(
- const int32_t sr_core, /* i : sampling rate of core-coder */
- const int16_t L_frame, /* i : frame length */
- const TCX_CONFIG_HANDLE hTcxCfg /* i : TCX configuration handle */
-);
-
-
-void stereo_coder_tcx(
- STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: MDCT encoder structure */
- Encoder_State **sts, /* i/o: encoder state structure */
- int16_t ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask */
- float *mdst_spectrum[CPE_CHANNELS][NB_DIV], /* i/o: MDST spectrum */
- float *inv_spectrum[CPE_CHANNELS][NB_DIV], /* i/o: inverse spectrum */
- float *inv_mdst_spectrum[CPE_CHANNELS][NB_DIV], /* i/o: inverse MDST spectrum */
- const int16_t mct_on /* i : flag mct block (1) or stereo (0) */
-);
-
-void stereo_decoder_tcx(
- STEREO_MDCT_DEC_DATA *hStereoMdct, /* i/o: MDCT stereo decoder structure */
- int16_t ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask */
- float *spec_r_0[NB_DIV], /* i/o: spectrum right channel */
- float *spec_l[], /* i/o: spectrum left channel [NB_DIV][N] */
- float *spec_r[], /* i/o: spectrum right channel [NB_DIV][N] */
- const int16_t mdct_stereo_mode[], /* i : stereo mode (FB/band wise MS, dual mono */
- const int16_t core_l, /* i : core for left channel (TCX20/TCX10) */
- const int16_t core_r, /* i : core for right channel (TCX20/TCX10) */
- const int16_t igf, /* i : flag for IGF activity */
- const int16_t L_frameTCX_l, /* i : TCX frame length of left channel */
- const int16_t L_frameTCX_r, /* i : TCX frame length of right channel */
- const int16_t mct_on, /* i : flag mct block (1) or stereo (0) */
- const int16_t last_core_l, /* i : last core for left channel */
- const int16_t last_core_r, /* i : last core for right channel */
- const int16_t tmp_plc_upmix /* i : indicates temp upmix for PLC decision */
-);
-
-void stereo_mdct_core_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *signal_out[CPE_CHANNELS], /* o : synthesis @internal_FS */
- float signal_outFB[CPE_CHANNELS][L_FRAME48k] /* o : synthesis @output_FS */
-);
-
-void splitAvailableBits(
- const int16_t total_bits, /* i : total available bits for TCX coding */
- const int16_t split_ratio, /* i : split ratio */
- const int16_t isSBAStereoMode, /* i : signal core coding for SBA */
- int16_t *bits_ch0, /* o : bits for channel 0 */
- int16_t *bits_ch1 /* o : bits for channel 1 */
-);
-
-Word16 write_stereo_to_bitstream_fx
-(
- STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: Stereo MDCT encoder structure */
- Encoder_State **sts, /* i/o: Encoder state structure */
- Word16 ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask Q0*/
- const Word16 mct_on, /* i : flag mct block (1) or stereo (0) Q0*/
- BSTR_ENC_HANDLE hBstr /* i/o: bitstream handle */
-);
-
-
-
-void ComputeSpectrumNoiseMeasure(
- const float *powerSpec,
- const int16_t L_frame,
- const int16_t startLine,
- const int16_t resetMemory,
- int8_t *noiseFlags,
- const int16_t lowpassLine
-);
-
-void IGFSaveSpectrumForITF(
- IGF_ENC_INSTANCE_HANDLE hIGFEnc, /* i/o: instance handle of IGF Encoder */
- const int16_t igfGridIdx, /* i : IGF grid index */
- const float *pITFSpectrum /* i : MDCT spectrum */
-);
-
-void convert_coeffs_to_higher_res(
- const float *in1, /* i : first subframe input */
- const float *in2, /* i : second subframe input */
- float *out, /* o : converted output */
- const int16_t len /* i : length of subframes */
-);
-
-int16_t quantize_sns(
- float sns_in[CPE_CHANNELS][NB_DIV][M],
- float snsQ_out[CPE_CHANNELS][NB_DIV][M],
- Encoder_State **sts,
- int16_t *indices,
- int16_t *zero_side_flag,
- int16_t *sns_stereo_mode
-);
-
-void dequantize_sns(
- int16_t indices[CPE_CHANNELS][NPRM_LPC_NEW],
- float snsQ_out[CPE_CHANNELS][NB_DIV][M],
- Decoder_State **sts
-);
-
-void sns_avq_dec(
- int16_t *index, /* i : Quantization indices */
- float SNS_Q[NB_DIV][M], /* o : Quantized SNS vectors */
- const int16_t L_frame, /* i : frame length */
- const int16_t numlpc /* i : Number of sets of lpc */
-);
-
-void sns_avq_dec_stereo(
- int16_t *indexl, /* i : Quantization indices (left channel) */
- int16_t *indexr, /* i : Quantization indices (right channe) */
- const int16_t L_frame, /* i : frame length */
- float *SNS_Ql, /* o : Quantized SNS vectors (left channel) */
- float *SNS_Qr /* o : Quantized SNS vectors (right channe) */
-);
-
-void convertToMS(
- const int16_t L_frame, /* i : frame length */
- float x0[], /* i/o: mid/left channel coefficients */
- float x1[], /* i/o: side/right channel coefficients */
- const float norm_fac /* i : normalization factor */
-);
-
-void inverseMS(
- const int16_t L_frame, /* i : frame length */
- float x0[], /* i/o: mid/left channel coefficients */
- float x1[], /* i/o: side/right channel coefficients */
- const float norm_fac /* i : normalization factor */
-);
-
-void stereoFdCngCoherence(
- Encoder_State **sts, /* i/o: core encoder structures */
- const int16_t last_element_mode, /* i : last element mode */
- float fft_buff[CPE_CHANNELS][2 * L_FFT] /* i : fft buffers for L and R channels */
-);
-
-void FdCngEncodeMDCTStereoSID(
- CPE_ENC_HANDLE hCPE /* i/o: CPE encoder state structure */
-);
-
-void FdCngDecodeMDCTStereoSID(
- CPE_DEC_HANDLE hCPE /* i/o: CPE decoder state structure */
-);
-
-ivas_error initMdctStereoDtxData(
- CPE_DEC_HANDLE hCPE /* i/o: CPE decoder handle */
-);
-
-void synchonize_channels_mdct_sid(
- Decoder_State *sts[CPE_CHANNELS], /* i/o: decoder state structure */
- const int16_t n /* i : channel number */
-);
-
-void updateBuffersForDmxMdctStereo(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE handle */
- const int16_t output_frame, /* i : output frame length */
- float *output[CPE_CHANNELS], /* i/o: decoder output */
- float synth[CPE_CHANNELS][L_FRAME48k] /* i/o: decoder synthesis */
-);
-
-void applyDmxMdctStereo(
- const CPE_DEC_HANDLE hCPE, /* i : CPE handle */
- float *output[CPE_CHANNELS], /* o : output from core decoder */
- const int16_t output_frame /* i : output frame length */
-);
-
-/*----------------------------------------------------------------------------------*
- * Front-VAD prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error front_vad_create(
- FRONT_VAD_ENC_HANDLE *hFrontVad, /* i/o: front-VAD handle */
- const ENCODER_CONFIG_HANDLE hEncoderConfig /* i : configuration structure */
-);
-
-void front_vad_destroy(
- FRONT_VAD_ENC_HANDLE *hFrontVad /* i/o: front-VAD handle */
-);
-
-ivas_error front_vad(
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure, nullable */
- Encoder_State *st, /* i/o: encoder state structure */
- const ENCODER_CONFIG_HANDLE hEncoderConfig, /* i : configuration structure */
- FRONT_VAD_ENC_HANDLE *hFrontVads, /* i/o: front-VAD handles */
- const int16_t MCT_flag, /* i : hMCT handle allocated (1) or not (0) */
- const int16_t input_frame, /* i : frame length */
- int16_t vad_flag_dtx[], /* o : HE-SAD flag with additional DTX HO */
- float fr_bands[][2 * NB_BANDS], /* i : energy in frequency bands */
- float Etot_LR[], /* o : total energy Left & Right channel */
- float lf_E[][2 * VOIC_BINS], /* i : per bin spectrum energy in lf, LR channels */
- int16_t localVAD_HE_SAD[], /* o : HE-SAD flag without hangover, LR channels */
- int16_t vad_hover_flag[], /* o : VAD hangover flag */
- float band_energies_LR[2 * NB_BANDS], /* o : energy in critical bands without minimum noise floor E_MIN */
- float *PS_out, /* o : energy spectrum */
- float *Bin_E_out /* o : log-energy spectrum of the current frame*/
-);
-
-ivas_error front_vad_spar(
- SPAR_ENC_HANDLE hSpar, /* i/o: SPAR encoder structure */
- const float *omni_in, /* i : omnidirectional input signal */
- ENCODER_CONFIG_HANDLE hEncoderConfig, /* i : encoder configuration handle */
- const int16_t input_frame /* i : input frame length */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * Stereo CNG prototypes
- *----------------------------------------------------------------------------------*/
-
-void stereo_enc_cng_init(
- STEREO_CNG_ENC_HANDLE hStereoCng /* i/o: stereo CNG encoder structure */
-);
-
-void stereo_cng_upd_counters(
- STEREO_CNG_ENC_HANDLE hStereoCng, /* i/o: Stereo CNG data structure */
- const int32_t element_mode, /* i : element mode */
- const int16_t nbands, /* i : Number of bands in active */
- const float sidSideGain[], /* i : SID side gains */
- const int16_t burst_ho_count, /* i : Hang-over count */
- int16_t *coh_fade_counter /* i : Coherence fade counter */
-);
-
-void stereo_cng_init_dec(
- STEREO_CNG_DEC_HANDLE hStereoCng, /* i/o: stereo CNG decoder structure */
- const int16_t *frameSize /* i : pointer to frameSize of channel 0 to be used for channel 1 */
-);
-
-void stereo_cng_compute_PScorr(
- float *output[CPE_CHANNELS], /* i : Output signal */
- float *c_PS_LT, /* i/o: Correlation */
- const int16_t L_frame_0, /* i : L_frame channel 0 */
- const int16_t L_frame_1 /* i : L_frame channel 1 */
-);
-
-void stereo_cng_dec_update(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- const int32_t ivas_total_brate /* i : IVAS total bitrate Q0*/
-);
-
-void stereo_cna_update_params(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *output[CPE_CHANNELS], /* i : Output signal */
- const int16_t output_frame, /* i : Output frame length */
- const int16_t tdm_ratio_idx /* i : TDM ratio index */
-);
-
-void dtx_enc_init(
- Encoder_State *st, /* i : Encoder state handle */
- const int16_t var_SID_rate_flag, /* i : flag for variable SID update rate */
- const int16_t interval_SID /* i : interval for SID update */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * Framework general prototypes
- *----------------------------------------------------------------------------------*/
-
-void mvc2c(
- const uint8_t x[], /* i : input vector */
- uint8_t y[], /* o : output vector */
- const int16_t n /* i : vector size */
-);
-
-/*! r: Adjusted value */
-ivas_error stereo_memory_dec(
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- CPE_DEC_HANDLE hCPE, /* i : CPE decoder structure */
- const int16_t nb_bits_metadata, /* i : number of metadata bits */
- const int32_t output_Fs, /* i : output sampling rate */
- const IVAS_FORMAT ivas_format, /* i : IVAS format */
- const MC_MODE mc_mode, /* i : MC mode */
- const int16_t nchan_transport /* i : number of transport channels */
-);
-
-void stereo_switching_dec(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- const Word32 ivas_total_brate /* i : IVAS total bitrate Q0*/
-);
-
-void stereo_td2dft_update(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- const int16_t n, /* i : channel number */
- float output[], /* i/o: synthesis @internal Fs */
- float synth[], /* i/o: synthesis @output Fs */
- float hb_synth[], /* i/o: hb synthesis */
- const int16_t output_frame /* i : frame length */
-);
-
-void stereo_mdct2dft_update(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float output0[], /* i/o: synthesis @internal Fs, ch0 */
- float synth0[] /* i/o: synthesis @output Fs, ch0 */
-);
-
-
-/*! r: number of bits written */
-
-
-
-/*----------------------------------------------------------------------------------*
- * MCT prototypes
- *----------------------------------------------------------------------------------*/
-void ivas_mdct_core_whitening_enc_fx(
- CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
- Word16 new_samples_fx[CPE_CHANNELS][L_INP], /* i : new samples */
- Word16 old_wsp_fx[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP */
- Word16 pitch_buf[CPE_CHANNELS][NB_SUBFR16k], /* o : floating pitch for each subframe */
- Word32 *mdst_spectrum_long[CPE_CHANNELS], /* o : buffer for MDST spectrum */
- int16_t tnsBits[CPE_CHANNELS][NB_DIV], /* o : buffer TNS bits */
- Word32 *orig_spectrum_long[CPE_CHANNELS], /* o : origingal spectrum w/o whitening */
- int16_t tnsSize[CPE_CHANNELS][NB_DIV], /* o : size of TNS */
- int16_t p_param[CPE_CHANNELS][NB_DIV], /* o : pointer to parameter array */
- BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */
- const int16_t mct_on, /* i : flag mct block (1) or stereo (0) */
- const int16_t nChannels, /* i : total number of coded channels */
-Word16 mdst_spectrum_e[CPE_CHANNELS][NB_DIV],
-Word16 orig_spectrum_e[CPE_CHANNELS][NB_DIV]
-);
-void ivas_mct_core_enc(
- const IVAS_FORMAT ivas_format, /* i : IVAS format */
- MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */
- CPE_ENC_HANDLE hCPE[MCT_MAX_BLOCKS], /* i/o: CPE encoder structures */
- const int16_t nChannels, /* i : number of channels to be coded */
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t switch_bw, /* i : flag bandwidth switch occurance */
- const int16_t lfe_bits, /* i : bits spent for LFE */
- const int16_t sba_order /* i : Ambisonic (SBA) order */
-);
-
-void ivas_mdct_quant_coder(
- CPE_ENC_HANDLE hCPE, /* i/o: Encoder CPE handle */
- int16_t tnsBits[CPE_CHANNELS][NB_DIV], /* i : bits needed for TNS parameters */
- int16_t tnsSize[CPE_CHANNELS][NB_DIV], /* i : size of TNS */
- int16_t p_param[CPE_CHANNELS][NB_DIV], /* i : pointer to parameter array */
- const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */
-);
-
-void apply_MCT_enc(
- MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */
- Encoder_State **sts, /* i/o: encoder state structure */
- float *mdst_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i/o: MDST spectrum */
- float *inv_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i/o: inverse spectrum */
- float *inv_mdst_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i/o: inverse MDST spectrum */
- const int16_t nchan /* i : number of channels */
-);
-
-void write_mct_bitstream(
- Encoder_State **sts, /* i/o: encoder state structure */
- MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */
- const int16_t nchan /* i : number of channels */
-);
-
-void splitAvailableBitsMCT_fx(
- void **sts, /* i/o: encoder/decoder state structure */
- const Word16 total_bits, /* i : total number of available bits */
- const Word16 split_ratio[MCT_MAX_CHANNELS], /* i : ratio for splitting the bits Q0 */
- const Word16 enc_dec, /* i : encoder or decoder flag */
- const Word16 nchan /* i : number of channels */
-);
-
-void getChannelEnergies(
- Encoder_State **sts, /* i : Encoder state structure */
- float nrg[MCT_MAX_CHANNELS], /* o : energies */
- const int16_t nchan /* i : number of channels */
-);
-
-void mctStereoIGF_enc(
- MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */
- Encoder_State **sts, /* i/o: encoder state structure */
- float *orig_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i : MDCT spectrum for ITF */
- float powerSpec[MCT_MAX_CHANNELS][L_FRAME48k], /* i/o: MDCT^2 + MDST^2 spectrum,or estimate */
- float *powerSpecMsInv[MCT_MAX_CHANNELS][NB_DIV], /* i : same as above but for inverse spect. */
- float *inv_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i : inverse spectrum */
- const int16_t sp_aud_decision0[MCT_MAX_CHANNELS] /* i : speech audio decision */
-);
-
-void ivas_mdct_dec_side_bits_frame_channel(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- int16_t param_lpc[CPE_CHANNELS][NPRM_LPC_NEW], /* o : lpc_parameters */
- int16_t p_param[CPE_CHANNELS][NB_DIV], /* o : pointer to param buffer */
- Decoder_State *st0, /* i : pointer to bitstream handle */
- int16_t nTnsBitsTCX10[CPE_CHANNELS][NB_DIV], /* o : number of bits for TNS */
- int16_t param[CPE_CHANNELS][DEC_NPRM_DIV * NB_DIV], /* i/o: parameters buffer */
- const int16_t MCT_flag, /* i : hMCT handle allocated (1) or not (0) */
- const int16_t odd_channel_cpe /* i : flag cpe with odd nb of tc channels */
-);
-
-void ivas_mct_side_bits(
- MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */
- CPE_DEC_HANDLE hCPE[MCT_MAX_BLOCKS], /* i/o: CPE decoder structure */
- const int16_t nCPE, /* i : number of CPEs */
- Decoder_State *st0, /* i : decoder handle for Bstr */
- const int16_t bfi, /* i : BFI flag */
- uint16_t *bitstream, /* o : bitstream indices */
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t nb_bits_metadata /* i : number of metadata bits */
-);
-
-void ivas_mdct_core_invQ(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE handle */
- int16_t nTnsBitsTCX10[CPE_CHANNELS][NB_DIV], /* i : number of TNS bits */
- int16_t p_param[CPE_CHANNELS][NB_DIV], /* i : pointer to param buffer */
- int16_t param_lpc[CPE_CHANNELS][NPRM_LPC_NEW], /* i : lpc parameters */
- int16_t param[CPE_CHANNELS][DEC_NPRM_DIV * NB_DIV], /* i : param buffer */
- int16_t fUseTns[CPE_CHANNELS][NB_DIV], /* i : flag TNS enabled */
- STnsData tnsData[CPE_CHANNELS][NB_DIV], /* i : TNS parameter */
- float *x_0[CPE_CHANNELS][NB_DIV], /* i/o: signal buffer */
- float *x[CPE_CHANNELS][NB_DIV], /* i/o: signal buffer */
- float Aq[CPE_CHANNELS][( NB_SUBFR16k + 1 ) * ( M + 1 )], /* i : LP coefficients */
- int16_t ms_mask[NB_DIV][MAX_SFB], /* i : M/S mask */
- const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */
-);
-
-void ivas_mdct_core_reconstruct(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- float *x[][NB_DIV], /* i/o: pointers to synthesis @internal_FS */
- float signal_outFB[CPE_CHANNELS][L_FRAME_PLUS], /* o : synthesis @output_FS */
- int16_t fUseTns[CPE_CHANNELS][NB_DIV], /* i : flage TNS enabled */
- const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */
-);
-
-void ivas_mdct_core_tns_ns(
- CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
- int16_t fUseTns[CPE_CHANNELS][NB_DIV], /* i : two entries for each channel in TCX10 */
- STnsData tnsData[CPE_CHANNELS][NB_DIV], /* o : TNS parameter */
- float *x[CPE_CHANNELS][NB_DIV], /* o : synthesis @internal_FS */
- float Aq[CPE_CHANNELS][( NB_SUBFR16k + 1 ) * ( M + 1 )], /* o : LP coefficients */
- const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */
-);
-
-
-void ivas_mct_dec_mct(
- MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */
- Decoder_State **sts, /* i/o: decoder state structure */
- const int16_t nchan /* i : number of channels */
-);
-
-void apply_MCT_dec(
- MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */
- Decoder_State **sts, /* i/o: decoder state structure */
- float *x[MCT_MAX_CHANNELS][NB_DIV] /* i/o: decoded and dequan. spect. input to MCT */
-);
-
-void mctStereoIGF_dec(
- MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */
- Decoder_State **sts, /* i/o: decoder state structure */
- float *x[MCT_MAX_CHANNELS][NB_DIV], /* i/o: decoded and dequantized spectrum */
- const int16_t bfi /* i : bad frame flag */
-);
-
-void enc_prm_igf_mdct(
- Encoder_State *st, /* i : Encoder state handle */
- BSTR_ENC_HANDLE hBstr /* i/o: Bitstream handle */
-);
-
-void mdct_read_IGF_bits(
- Decoder_State *st, /* i/o: Encoder state handle */
- Decoder_State *st0 /* i : pointer to handle where bstr is read */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * Q Metadata prototypes for DirAC and MASA
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_qmetadata_enc_encode(
- BSTR_ENC_HANDLE hMetaData, /* i/o: metadata bitstream handle */
- IVAS_QMETADATA *hQMetaData, /* i/o: q_metadata handle */
- const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */
-);
-
-ivas_error ivas_qmetadata_enc_encode_hr_384_512(
- BSTR_ENC_HANDLE hMetaData, /* i/o: metadata bitstream handle */
- IVAS_QMETADATA *hQMetaData, /* i/o: metadata handle */
- const int16_t bits_sph_idx,
- const int16_t bits_sp_coh
-);
-
-void deindex_sph_idx(
- const uint16_t sphIndex, /* i : Spherical index */
- const SPHERICAL_GRID_DATA *gridData, /* i : Prepared spherical grid */
- float *theta, /* o : Elevation */
- float *phi /* o : Azimuth */
-);
-
-/*! r: output index for direction */
-uint16_t index_theta_phi_16(
- float * p_theta, /* i/o: input elevation to be indexed */
- float * p_phi, /* i/o: input azimuth to be indexed */
- const SPHERICAL_GRID_DATA *gridData /* i : generated grid data */
-);
-
-void reset_metadata_spatial(
- const IVAS_FORMAT ivas_format, /* i : IVAS format */
- BSTR_ENC_HANDLE hMetaData, /* i/o: Metadata bitstream handle */
- const int32_t element_brate, /* i : element bitrate */
- int32_t *total_brate, /* o : total bitrate */
- const int32_t core_brate, /* i : core bitrate */
- const int16_t nb_bits_metadata /* i : number of meatdata bits */
-);
-
-/*! r: number of bits written */
-
-/*! r: number of bits read */
-int16_t ivas_qmetadata_dec_decode(
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */
- uint16_t *bitstream, /* i : bitstream */
- int16_t *index, /* i/o: bitstream position */
- const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */
-);
-
-/*! r: number of bits read */
-int16_t ivas_qmetadata_dec_decode_hr_384_512(
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: hQMetaData handle */
- uint16_t *bitstream, /* i : bitstream */
- int16_t *index, /* i/o: bitstream position */
- const SPHERICAL_GRID_DATA *sph_grid16, /* i : spherical grid for deindexing */
- const int16_t bits_sph_idx,
- const int16_t bits_sp_coh,
- const uint8_t ncoding_bands_config
-);
-
-/*! r: number of bits read */
-int16_t ivas_qmetadata_dec_sid_decode(
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */
- uint16_t *bitstream, /* i : bitstream */
- int16_t *index, /* i/o: bitstream position */
- const int16_t nchan_transport, /* i : number of transport channels */
- int16_t *element_mode, /* o : element mode */
- const int16_t ivas_format /* i : IVAS format */
-);
-
-
-
-
-void restore_metadata_buffer(
- BSTR_ENC_HANDLE hMetaData,
- const int16_t next_ind_start,
- const int16_t bit_pos_start
-);
-
-/*! r: codeword index */
-int16_t masa_sq(
- const float in, /* i : input value */
- const float *threshold, /* i : partition */
- const int16_t cb_sz /* i : codebook size */
-);
-
-void ivas_qmetadata_azimuth_elevation_to_direction_vector(
- const float az, /* i : azimuth */
- const float el, /* i : elevation */
- float *dv /* o : direction vector */
-);
-
-ivas_error only_reduce_bits_direction(
- int16_t *reduce_bits_out,
- IVAS_QDIRECTION *q_direction, /* i/o: quantized direction structure */
- int16_t reduce_bits,
- const int16_t coding_subbands,
- const int16_t no_subframes,
- int16_t *ind_order
-);
-
-void quantize_direction_frame(
- IVAS_QDIRECTION *q_direction, /* i/o: quantized direction structure */
- float azimuth_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES],
- float elevation_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES],
- const int16_t hrmasa_flag /* i : flag indicating high-rate MASA MD coding*/
-);
-
-/*! r: quantized spherical index */
-uint16_t quantize_direction(
- const float theta, /* i : input elevation value */
- float phi, /* i : input azimuth value */
- const int16_t no_bits, /* i : number of bits */
- float *theta_q, /* o : quantized elevation */
- float *phi_q, /* o : quantized azimuth */
- uint16_t *index_theta, /* o : quantized elevation index */
- uint16_t *index_phi, /* o : quantized azimuth index */
- const MC_LS_SETUP mc_format /* i : channel format if in MC-mode */
-);
-
-int16_t quantize_direction2D(
- float phi, /* i : input azimuth value */
- const int16_t no_cw, /* i : number of bits */
- float *phi_q, /* o : quantized azimuth value */
- uint16_t *index_phi, /* o : quantized azimuth index */
- const MC_LS_SETUP mc_format /* i : channel format if in MC-mode */
-);
-
-void quantize_direction_frame2D(
- IVAS_QDIRECTION *q_direction, /* i/o: quantized direction structure */
- float azimuth_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES], /* i : input azimuth values */
- float elevation_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES] /* i : input elevation values */
-);
-
-void small_requantize_direction_frame(
- IVAS_QDIRECTION *q_direction, /* i/o: quantized direction structure */
- float azimuth_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES], /* i : input azimuth values */
- float elevation_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES], /* i : input elevation values */
- const int16_t raw_flag[MASA_MAXIMUM_CODING_SUBBANDS], /* i : raw/EC encoding mode for each subband */
- int16_t bits_dir_bands[MASA_MAXIMUM_CODING_SUBBANDS], /* i/o: number of bits per subband */
- int16_t *diff /* i/o: number of bits to be reduced */
-);
-
-/*! r: index azimuth */
-int16_t quantize_phi(
- float phi, /* i : azimuth value */
- const int16_t flag_delta, /* i : flag indicating if the azimuth codebook is translated or not */
- float *phi_hat, /* o : quantized azimuth */
- const int16_t n /* i : azimuth codebook size */
-);
-
-/*! r: decoded elevation value */
-float deindex_elevation(
- uint16_t *id_th, /* i : input index */
- const int16_t no_bits, /* i : number of bits for the spherical grid */
- const MC_LS_SETUP mc_format /* i : channel format if in MC-mode */
-);
-
-float deindex_azimuth(
- int16_t id_phi, /* i : index */
- const int16_t no_bits, /* i : number of bits for the spherical grid */
- const int16_t id_th, /* i : elevation index */
- const int16_t remap, /* i : remapping flag */
- const MC_LS_SETUP mc_format /* i : channel format if in MC-mode */
-);
-
-UWord16 ivas_qmetadata_reorder_generic_fx(
- const Word16 signed_value
-);
-
-void ivas_sba_config(
- const int32_t sba_total_brate, /* i : SBA total bitrate */
- int16_t sba_order, /* i : Ambisonic (SBA) order */
- int16_t nb_channels, /* i : Number of Ambisonic (SBA) channels */
- int16_t *nchan_transport, /* o : number of transport channels */
- const int16_t sba_planar, /* i : SBA planar flag */
- int16_t *nSCE, /* o : number of SCEs */
- int16_t *nCPE, /* o : number of CPEs */
- int16_t *element_mode /* o : element mode of the core coder */
-);
-
-void ivas_sba_set_cna_cng_flag(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-ivas_error ivas_sba_dec_reconfigure(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- uint16_t *nSamplesFlushed, /* o : number of samples flushed */
- int16_t *data /* o : output synthesis signal */
-);
-
-ivas_error ivas_sba_digest_tc(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const int16_t nchan_transport, /* i : number of transport channels */
- const int16_t nCldfbSlots, /* i : number of CLDFB slots */
- const int16_t nSamplesForRendering, /* i : number of samples provided */
- float *data[] /* i : transport channel samples */
-);
-
-
-
-/*! r: Ambisonic (SBA) order */
-int16_t ivas_sba_get_order(
- const int16_t nb_channels, /* i : Number of ambisonic channels */
- const int16_t sba_planar /* i : SBA planar flag */
-);
-
-/*! r: number of Ambisonic channels */
-int16_t ivas_sba_get_nchan(
- const int16_t sba_order, /* i : Ambisonic (SBA) order */
- const int16_t sba_planar /* i : SBA planar flag */
-);
-
-/*! r: number of ambisonics metadata channels */
-
-void ivas_sba_getTCs(
- float *sba_data[], /* i : SBA signals */
- Encoder_Struct *st_ivas, /* i/o: Encoder struct */
- const int16_t input_frame /* i : frame length */
-);
-
-int16_t ivas_sba_remapTCs(
- float *sba_data[], /* i/o: SBA signals */
- Decoder_Struct *st_ivas, /* i/o: decoder struct */
- const int16_t output_frame /* i : frame length */
-);
-
-void ivas_sba_dirac_stereo_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *output[CPE_CHANNELS], /* o : output synthesis signal */
- const int16_t output_frame, /* i : output frame length per channel */
- const int16_t mcmasa /* i : McMASA flag */
-);
-
-void ivas_sba_dirac_stereo_config(
- STEREO_DFT_CONFIG_DATA_HANDLE hConfig /* o : DFT stereo configuration */
-);
-
-
-Word16 ivas_get_sba_dirac_stereo_flag(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-void ivas_sba_dirac_stereo_smooth_parameters(
- STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: encoder DFT stereo handle */
- ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD handle for upmixing */
- const int16_t cross_fade_start_offset, /* i : SPAR mixer delay compensation */
- const int32_t output_Fs, /* i : Fs for delay calculation */
- const int16_t num_md_sub_frames /* i : number of subframes in mixing matrix */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * DirAC prototypes
- *----------------------------------------------------------------------------------*/
-
-
-ivas_error ivas_dirac_enc_reconfigure(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */
-);
-
-
-
-ivas_error ivas_dirac_config(
- void *st_ivas, /* i/o: IVAS encoder/decoder state structure */
- const int16_t enc_dec /* i : encoder or decoder flag */
-);
-
-void ivas_dirac_config_bands(
- int16_t *band_grouping, /* o : band grouping */
- const int16_t nbands, /* i : number of bands */
- const int16_t max_band, /* i : maximal band index +1 */
- int16_t *dirac_to_spar_md_bands, /* o : mapping of DirAC parameter band index to SPAR FB band index */
- const int8_t useLowerBandRes, /* i : flag indicating lower band resolution for DirAC */
- const int16_t enc_param_start_band, /* i : band index of first DirAC parameter band */
- IVAS_FB_MIXER_HANDLE hFbMdft
-);
-
-void ivas_get_dirac_sba_max_md_bits(
- const int32_t sba_total_brate,
- int16_t *bits_frame_nominal,
- int16_t *metadata_max_bits,
- int16_t *qmetadata_max_bit_req,
- const int16_t nbands
- ,
- IVAS_FORMAT ivas_format
-);
-
-ivas_error ivas_dirac_sba_config(
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */
- int16_t *element_mode, /* o : element mode of the core coder */
- int32_t sba_total_brate, /* i : SBA total bitrate */
- const int16_t sba_order, /* i : Ambisonic (SBA) order */
- const int16_t nbands /* i : number of frequency bands */
- ,
- IVAS_FORMAT ivas_format
-);
-
-ivas_error ivas_dirac_dec_config(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const DIRAC_CONFIG_FLAG flag_configopen /* i/ : Flag determining if we open or reconfigure the DirAC decoder */
-);
-
-void ivas_dirac_dec_close(
- DIRAC_DEC_HANDLE *hDirAC_out
-);
-
-void ivas_dirac_dec_read_BS(
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- Decoder_State *st, /* i/o: decoder Core state structure */
- DIRAC_DEC_HANDLE hDirAC, /* i/o: decoder DirAC handle */
- SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial rendering data handle */
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q metadata */
- int16_t *nb_bits, /* o : number of bits read */
- const int16_t last_bit_pos, /* i : last read bitstream position */
- const int16_t hodirac_flag, /* i : flag to indicate HO-DirAC mode */
- int16_t *dirac_to_spar_md_bands /* o : DirAC->SPAR MD bands */
-);
-
-void generate_masking_noise_lb_dirac(
- HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */
- float *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA */
- const int16_t nCldfbTs, /* i : number of CLDFB slots that will be rendered */
- const int16_t cna_flag /* i : CNA flag for LB and HB */
-);
-
-
-void ivas_dirac_dec_render(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const int16_t nchan_transport, /* i : number of transport channels */
- const uint16_t nSamplesAsked, /* i : number of CLDFB slots requested */
- uint16_t *nSamplesRendered, /* o : number of CLDFB slots rendered */
- uint16_t *nSamplesAvailable, /* o : number of CLDFB slots still to render */
- float *output_f[] /* o : rendered time signal */
-);
-
-void ivas_dirac_dec_render_sf(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *output_f[], /* i/o: synthesized core-coder transport channels/DirAC output */
- const int16_t nchan_transport, /* i : number of transport channels */
- float *pppQMfFrame_ts_re[IVAS_MAX_FB_MIXER_IN_CH][CLDFB_NO_COL_MAX],
- float *pppQMfFrame_ts_im[IVAS_MAX_FB_MIXER_IN_CH][CLDFB_NO_COL_MAX]
-);
-
-
-void computeDirectionVectors(
- float *intensity_real_x,
- float *intensity_real_y,
- float *intensity_real_z,
- const int16_t enc_param_start_band,
- const int16_t num_frequency_bands,
- float *direction_vector_x,
- float *direction_vector_y,
- float *direction_vector_z
-);
-
-void computeDiffuseness(
- float *buffer_intensity[DIRAC_NUM_DIMS][DIRAC_NO_COL_AVG_DIFF],
- const float *buffer_energy,
- const int16_t num_freq_bands,
- float *diffuseness
-);
-
-void ivas_dirac_dec_get_response(
- const int16_t azimuth,
- const int16_t elevation,
- float *response,
- const int16_t ambisonics_order
-);
-
-
-
-ivas_error ivas_mc_paramupmix_enc_open_fx(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */
-);
-
-void ivas_mc_paramupmix_enc_close_fx(
- MC_PARAMUPMIX_ENC_HANDLE *hMCParamUpmix, /* i/o: MC Param-Upmix encoder handle */
- const int32_t input_Fs /* i : input sampling rate */
-);
-
-ivas_error ivas_mc_paramupmix_dec_open(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-void ivas_mc_paramupmix_dec_close(
- MC_PARAMUPMIX_DEC_HANDLE *hMCParamUpmix_out /* i/o: Parametric MC decoder handle */
-);
-
-void ivas_mc_paramupmix_dec_read_BS(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- Decoder_State *st, /* i/o: decoder state structure */
- MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, /* i/o: decoder MC Param-Upmix handle */
- int16_t *nb_bits /* o : number of bits written */
-);
-
-void ivas_mc_paramupmix_dec_digest_tc(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const uint8_t nCldfbSlots, /* i : number of CLFBS slots in the transport channels */
- const int16_t nSamplesForRendering /* i : number of samples provided */
-);
-
-void ivas_param_mc_set_coded_bands_fx(
- HANDLE_IVAS_PARAM_MC_METADATA hMetadataPMC /* i/o: handle for the Parametric MC parameter coding state */
-);
-
-/*! r: number of IVAS transport channels */
-
-ivas_error ivas_param_mc_enc_open(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */
-);
-
-ivas_error ivas_param_mc_enc_reconfig(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */
-);
-
-void ivas_param_mc_enc_close(
- PARAM_MC_ENC_HANDLE *hParamMC, /* i/o: Parametric MC encoder handle */
- const int32_t input_Fs /* i : input sampling rate */
-);
-
-void ivas_param_mc_enc(
- Encoder_Struct *st_ivas, /* i/o: IVAS Encoder handle */
- BSTR_ENC_HANDLE hMetaData, /* i/o: IVAS Metadata bitstream handle */
- float *data_f[], /* i/o: input/transport MC data */
- const int16_t input_frame /* i : input frame length */
-);
-
-ivas_error ivas_param_mc_dec_open(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-ivas_error ivas_param_mc_dec_reconfig(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-
-
-void ivas_param_mc_dec_digest_tc(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const uint8_t nCldfbSlots, /* i : number of CLFBS slots in the transport channels */
- float *transport_channels_f[] /* i : synthesized core-coder transport channels/DirAC output*/
-);
-
-void ivas_param_mc_dec_render(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const uint16_t nSamplesAsked, /* i : number of CLDFB slots requested */
- uint16_t *nSamplesRendered, /* o : number of CLDFB slots rendered */
- uint16_t *nSamplesAvailable, /* o : number of CLDFB slots still to render */
- float *output_f[] /* o : rendered time signal */
-);
-
-void ivas_param_mc_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- float *output_f[] /* i/o: synthesized core-coder transport channels/DirAC output */
-);
-
-/*! r: number of cldfb synthesis instances */
-int16_t param_mc_get_num_cldfb_syntheses(
- Decoder_Struct *st_ivas /* i : IVAS decoder structure */
-);
-
-UWord16 ivas_param_mc_get_configuration_index_fx(
- const MC_LS_SETUP mc_ls_setup, /* i : MC ls setup */
- const Word32 ivas_total_brate /* i : IVAS total bitrate */
-);
-
-ivas_error ivas_dirac_dec_output_synthesis_cov_open(
- DIRAC_OUTPUT_SYNTHESIS_PARAMS *h_dirac_output_synthesis_params, /* i/o: handle for the covariance synthesis parameters */
- DIRAC_OUTPUT_SYNTHESIS_COV_STATE *h_dirac_output_synthesis_state, /* i/o: handle for the covariance synthesis state */
- const int16_t max_band_decorr, /* i : uppermost frequency band where decorrelation is applied */
- const int16_t interp_length, /* i : length for interpolating the mixing matrices in time slots */
- const int16_t num_param_bands, /* i : number of parameter bands */
- const int16_t num_param_bands_residual, /* i : number of parameter bands with a residual mixing matrix (i.e. decorrelation */
- const int16_t nchan_in, /* i : number of input (transport) channels */
- const int16_t nchan_out, /* i : number of output channels */
- const float *proto_matrix /* i : the prototype (upmix) matrix (only used if mode == 1) */
-);
-
-void ivas_dirac_dec_output_synthesis_get_interpolator(
- DIRAC_OUTPUT_SYNTHESIS_PARAMS *h_dirac_output_synthesis_params, /* i/o: handle for the covariance synthesis parameters */
- const uint16_t interp_length /* i : interpolator length */
-);
-
-void ivas_dirac_dec_output_synthesis_cov_init(
- DIRAC_OUTPUT_SYNTHESIS_COV_STATE *h_dirac_output_synthesis_state, /* i/o: pointer to the state of the covariance synthesis */
- const int16_t nchan_in, /* i : number of input (tranport) channels */
- const int16_t nchan_out, /* i : number of output channels */
- const int16_t n_param_bands, /* i : number of total parameter bands */
- const int16_t n_param_bands_res /* i : number of parameter bands with a residual mixing matrix (i.e. decorrelation */
-);
-
-void ivas_dirac_dec_output_synthesis_cov_close(
- DIRAC_OUTPUT_SYNTHESIS_PARAMS *h_dirac_output_synthesis_params, /* i : handle for the covariance synthesis parameters */
- DIRAC_OUTPUT_SYNTHESIS_COV_STATE *h_dirac_output_synthesis_state /* i/o: handle for the covariance synthesis state */
-);
-
-
-void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot(
- float *Cldfb_RealBuffer_in, /* i : input channel filter bank samples (real part) */
- float *Cldfb_ImagBuffer_in, /* i : input channel filter bank samples (imaginary part) */
- float Cldfb_RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : output channel filter bank samples (real part) */
- float Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : output channel filter bank samples (imaginary part) */
- float *mixing_matrix[], /* i : parameter band wise mixing matrices (direct part) */
- float *mixing_matrix_res[], /* i : parameter band wise mixing matrices (residual part) */
- const uint16_t slot_idx_sfr, /* i : time slot index for the current slot within the current subframe */
- const uint16_t slot_idx_tot, /* i : time slot index for the current slot within the frame */
- const int16_t nX, /* i : number of input channels */
- const int16_t nY, /* i : number of output channels */
- PARAM_MC_DEC_HANDLE hParamMC /* i : handle to the Parametric MC decoder state */
-);
-
-
-void FdCngEncodeDiracMDCTStereoSID(
- CPE_ENC_HANDLE hCPE /* i/o: CPE encoder state structure */
-);
-
-void FdCngDecodeDiracMDCTStereoSID(
- CPE_DEC_HANDLE hCPE /* i/o: CPE decoder state structure */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * SPAR prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_spar_enc_open(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder handle */
- const int16_t spar_reconfig_flag /* i : SPAR reconfiguration flag */
-);
-
-ivas_error ivas_spar_enc(
- Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
- float *data_f[], /* i/o: input/transport audio channels */
- const int16_t input_frame, /* i : input frame length */
- int16_t *nb_bits_metadata, /* i : number of MD bits written */
- BSTR_ENC_HANDLE hMetaData /* o : MetaData handle */
-);
-
-ivas_error ivas_spar_dec_open(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const int16_t spar_reconfig_flag /* i : SPAR reconfiguration flag */
-);
-
-
-ivas_error ivas_spar_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder struct */
- int16_t *nb_bits_read /* o : number of MD bits read */
-);
-
-void ivas_spar_config(
- int32_t ivas_total_brate, /* i : codec total bitrate */
- const int16_t sba_order, /* i : Ambisonic (SBA) order */
- int16_t *nchan_transport, /* o : number of transport channels */
- int16_t *nSCE, /* o : number of SCEs */
- int16_t *nCPE, /* o : number of CPEs */
- int32_t *core_nominal_brate, /* o : core-coding nominal bitrate */
- const int16_t sid_format /* i : IVAS format indicator from SID frame */
-);
-
-ivas_error ivas_sba_linear_renderer(
- float *output_f[], /* i/o: synthesized core-coder transport channels/DirAC output */
- const int16_t output_frame, /* i : output frame length per channel */
- const int16_t nchan_in, /* i : number of input ambisonics channels */
- const int16_t nchan_ism, /* i : number of objects */
- const AUDIO_CONFIG output_config, /* i : output audio configuration */
- const IVAS_OUTPUT_SETUP output_setup /* i : output format setup */
-);
-
-void ivas_sba_mix_matrix_determiner(
- SPAR_DEC_HANDLE hSpar, /* i/o: SPAR decoder handle */
- float *output[], /* i/o: transport/output audio channels */
- const int16_t bfi, /* i : BFI flag */
- const int16_t nchan_remapped, /* i : num channels after remapping of TCs */
- const int16_t output_frame, /* i : output frame length */
- const int16_t num_md_sub_frames /* i : number of subframes in mixing matrix */
-);
-
-/* AGC */
-/*! r: AGC enable flag */
-
-ivas_error ivas_spar_agc_enc_open(
- ivas_agc_enc_state_t **hAgcEnc, /* i/o: AGC decoder handle */
- const int32_t input_Fs, /* i : input sampling rate */
- const int16_t nchan_inp /* i : number of input channels */
-);
-
-void ivas_spar_agc_enc_close(
- ivas_agc_enc_state_t **hAgcEnc /* i/o: AGC encoder handle */
-);
-
-void ivas_agc_enc_process(
- ivas_agc_enc_state_t *hAgcEnc, /* i/o: AGC encoder handle */
- BSTR_ENC_HANDLE hMetaData, /* i/o: MetaData handle */
- float **ppPcm_in, /* i : input audio channels */
- float **ppPcm_out, /* o : output audio channels */
- const int16_t n_channels, /* i : number of channels */
- const ENCODER_CONFIG_HANDLE hEncoderConfig /* i : configuration structure */
-);
-
-ivas_error ivas_spar_agc_dec_open(
- ivas_agc_dec_state_t **hAgcDec, /* i/o: AGC decoder handle */
- const int32_t output_Fs /* i : output sampling rate */
-);
-
-void ivas_spar_agc_dec_close(
- ivas_agc_dec_state_t **hAgcDec /* i/o: AGC decoder handle */
-);
-
-
-void ivas_agc_dec_process(
- ivas_agc_dec_state_t *hAgcDec, /* i/o: AGC decoder handle */
- float *pcm_in[], /* i : input audio channels */
- float *pcm_out[], /* o : output audio channels */
- const int16_t n_channels, /* i : number of channels */
- const int16_t output_Fs /* i : output sampling rate */
-);
-
-void ivas_agc_read_bits(
- ivas_agc_dec_state_t *hAgcDec, /* i/o: AGC decoder handle */
- Decoder_State *st0, /* i/o: decoder state structure - for bitstream handling*/
- const int16_t n_channels, /* i : number of channels */
- const int16_t AGC_flag /* i : AGC on/off flag */
-);
-
-void ivas_agc_initWindowFunc(
- float *pWinFunc,
- const int16_t length
-);
-
-void ivas_agc_calcGainParams(
- uint16_t *absEmin,
- uint16_t *betaE,
- uint16_t *maxAttExp,
- const int16_t numCoeffs
-);
-
-float ivas_get_mdct_scaling_gain(
- const int16_t dct_len_by_2
-);
-
-void ivas_get_twid_factors(
- const int16_t length,
- const float **pTwid_re,
- const float **pTwid_im
-);
-
-int16_t ivas_get_bw_idx_from_sample_rate(
- const int32_t sampling_rate /* i : sampling rate */
-);
-
-/*! r: config. table index */
-int16_t ivas_get_spar_table_idx(
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t sba_order, /* i : IVAS SBA order */
- const int16_t bwidth, /* i : audio bandwidth */
- int16_t *bitlen, /* o : number of bits */
- int16_t *ind /* o : indice */
-);
-
-/*! r: number of transport channels */
-int16_t ivas_get_sba_num_TCs(
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t sba_order /* i : IVAS SBA order */
-);
-
-
-void ivas_spar_bitrate_dist(
- int32_t core_brates_act[], /* o : bitrates per core-coder */
- const int16_t nAvailBits, /* i : number of available bits */
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t sba_order, /* i : Ambisonic (SBA) order */
- const int16_t bwidth /* i : audio bandwidth */
-);
-
-void ivas_mdct(
- const float *pIn,
- float *pOut,
- const int16_t length
-);
-
-void ivas_dct_windowing(
- const int16_t fade_len,
- const int16_t full_len,
- const int16_t dct_len,
- const int16_t zero_pad_len,
- const float *pWindow_coeffs,
- const int16_t frame_len,
- float *pOut_buf,
- float *pBuffer_prev,
- float *pTemp_lfe
-);
-
-void ivas_tda(
- const float *pIn,
- float *pOut,
- const int16_t length
-);
-
-void ivas_imdct(
- const float *pIn,
- float *pOut,
- const int16_t length
-);
-
-void ivas_itda(
- const float *re,
- float *pOut,
- const int16_t length
-);
-
-void ivas_spar_get_cldfb_gains(
- SPAR_DEC_HANDLE hSpar,
- HANDLE_CLDFB_FILTER_BANK cldfbAnaDec0,
- HANDLE_CLDFB_FILTER_BANK cldfbSynDec0,
- const DECODER_CONFIG_HANDLE hDecoderConfig
-);
-
-/*! r: 1 if prediction residual channel */
-
-void ivas_spar_dec_agc_pca(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- float *output[], /* i/o: input/output audio channels */
- const Word16 output_frame /* i : output frame length */
-);
-
-void ivas_spar_dec_set_render_map(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int16_t nCldfbTs /* i : number of CLDFB time slots */
-);
-
-void ivas_spar_dec_set_render_params(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const int16_t n_cldfb_slots /* i : number of cldfb slots in this frame */
-);
-
-void ivas_spar_dec_digest_tc(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const int16_t nchan_transport, /* i : number of transport channels */
- const int16_t nCldfbSlots, /* i : number of CLDFB slots */
- const int16_t nSamplesForRendering /* i : number of samples provided */
-);
-
-void ivas_sba_dec_digest_tc(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const int16_t nCldfbSlots, /* i : number of CLDFB slots */
- const int16_t nSamplesForRendering /* i : number of samples provided */
-);
-
-ivas_error ivas_sba_dec_render(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const uint16_t nSamplesAsked, /* i : number of CLDFB slots requested */
- uint16_t *nSamplesRendered, /* o : number of CLDFB slots rendered */
- uint16_t *nSamplesAvailable, /* o : number of CLDFB slots still to render */
- float *output_f[] /* o : rendered time signal */
-);
-
-void ivas_spar_dec_upmixer_sf(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- float *output[], /* o : output audio channels */
- const int16_t nchan_internal /* i : number of internal channels */
-);
-
-void ivas_spar_dec_upmixer(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- float *output[], /* i/o: input/output audio channels */
- const int16_t nchan_internal, /* i : number of internal channels */
- const int16_t output_frame /* i : output frame length */
-);
-
-/* MD module */
-
-void ivas_spar_md_enc_close(
- ivas_spar_md_enc_state_t **hMdEnc /* i/o: SPAR MD encoder handle */
-);
-
-void ivas_compute_spar_params(
- float *pppCov_mat_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH],
- float dm_fv_re[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS],
- const int16_t i_ts,
- float ***mixer_mat,
- const int16_t start_band,
- const int16_t end_band,
- const int16_t dtx_vad,
- const int16_t num_ch,
- const int16_t bands_bw,
- const int16_t active_w,
- const int16_t active_w_vlbr,
- ivas_spar_md_com_cfg *hSparCfg,
- ivas_spar_md_t *hSparMd,
- float *pWscale,
- const int16_t from_dirac,
- const int16_t dyn_active_w_flag
-);
-
-void ivas_create_fullr_dmx_mat(
- float pred_coeffs_re[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS],
- float dm_fv_re[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS],
- float ***mixer_mat,
- const int16_t in_chans,
- const int16_t start_band,
- const int16_t end_band,
- const int16_t active_w,
- ivas_spar_md_com_cfg *hMdCfg
-);
-
-void ivas_calc_c_p_coeffs(
- ivas_spar_md_t *pSparMd,
- float *pppCov_mat_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH],
- const int16_t i_ts,
- float ***mixer_mat,
- const int16_t num_ch,
- const int16_t num_dmx,
- const int16_t band_idx,
- const int16_t dtx_vad,
- const int16_t compute_p_flag,
- const int16_t dyn_active_w_flag
-);
-
-void ivas_get_spar_md_from_dirac(
- float azi_dirac[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES],
- float ele_dirac[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES],
- float diffuseness[IVAS_MAX_NUM_BANDS],
- const int16_t n_ts,
- float ***mixer_mat,
- ivas_spar_md_t *hSpar_md,
- ivas_spar_md_com_cfg *hSpar_md_cfg,
- const int16_t start_band,
- const int16_t end_band,
- const int16_t order,
- const int16_t dtx_vad,
- float Wscale_d[IVAS_MAX_NUM_BANDS],
- const uint8_t useLowerRes,
- const int16_t active_w_vlbr,
- const int16_t dyn_active_w_flag
-);
-
-/*! r: number of MD subframes */
-
-ivas_error ivas_spar_md_dec_matrix_open(
- ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */
- const int16_t num_channels, /* i : number of internal channels */
- const int16_t num_md_sub_frames
-);
-
-void ivas_spar_md_dec_matrix_close(
- ivas_spar_md_dec_state_t *hMdDecoder, /* i/o: SPAR MD decoder handle */
- const int16_t num_channels /* i : number of internal channels */
-);
-
-ivas_error ivas_spar_md_dec_open(
- ivas_spar_md_dec_state_t **hMdDec_out, /* i/o: SPAR MD decoder handle */
- const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : configuration structure */
- const int16_t num_channels, /* i : number of internal channels */
- const int16_t sba_order, /* i : SBA order */
- const int16_t sid_format, /* i : SID format */
- const int32_t last_active_ivas_total_brate /* i : IVAS last active bitrate */
-);
-
-void ivas_spar_md_dec_close(
- ivas_spar_md_dec_state_t **hMdDec /* i/o: SPAR MD decoder handle */
-);
-
-void ivas_spar_get_parameters(
- SPAR_DEC_HANDLE hSpar, /* i/o: SPAR decoder handle */
- const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : configuration structure */
- const int16_t ts, /* i : time slot index */
- const int16_t num_ch_out, /* i : number of channels out */
- const int16_t num_ch_in, /* i : number of channels in */
- const int16_t num_spar_bands, /* i : number of SPAR bands */
- float par_mat[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH][IVAS_MAX_NUM_BANDS] /* o : mixing matrix */
-);
-
-ivas_error ivas_spar_md_dec_init(
- ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */
- const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : configuration structure */
- const int16_t num_channels, /* i : number of internal channels */
- const int16_t sba_order /* i : SBA order */
-);
-
-void ivas_spar_md_dec_process(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- Decoder_State *st0, /* i/o: decoder state structure - for bitstream handling*/
- const int16_t num_bands_out, /* i : number of output bands */
- const int16_t sba_order /* i : SBA order */
-);
-
-void ivas_spar_to_dirac(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */
- const int16_t dtx_vad, /* i : DTX frame flag */
- const int16_t num_bands_out, /* i : number of output bands */
- const int16_t bw, /* i : band joining factor */
- const int16_t dyn_active_w_flag /* i : dynamic active W flag */
-);
-
-void ivas_spar_update_md_hist(
- ivas_spar_md_dec_state_t *hMdDec /* i/o: SPAR MD decoder handle */
-);
-
-int16_t ivas_spar_chk_zero_coefs(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */
-);
-
-void ivas_spar_smooth_md_dtx(
- ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */
- const int16_t num_bands_out, /* i : number of output bands */
- const int16_t num_md_sub_frames /* i : number of metadata subframes */
-);
-
-void ivas_spar_setup_md_smoothing(
- ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */
- const int16_t num_bands_out, /* i : number of output bands */
- const int16_t num_md_sub_frames /* i : number of metadata subframes */
-);
-
-void ivas_spar_dec_gen_umx_mat(
- ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */
- const int16_t nchan_transport, /* i : number of transport channels */
- const int16_t num_bands_out, /* i : number of output bands */
- const int16_t bfi, /* i : bad frame indicator */
- const int16_t num_md_sub_frames
-);
-
-
-
-
-
-/* Transient detector module */
-ivas_error ivas_transient_det_open_fx(
- ivas_trans_det_state_t **hTranDet, /* i/o: Transient detector handle */
- const Word32 sampling_rate /* i : sampling rate */
-);
-
-void ivas_transient_det_close_fx(
- ivas_trans_det_state_t **hTranDet /* i/o: Transient detector handle */
-);
-
-void ivas_transient_det_process(
- ivas_trans_det_state_t *hTranDet, /* i/o: SPAR TD handle */
- float *pIn_pcm, /* i : input audio channels */
- const int16_t frame_len, /* i : frame length in samples */
- int16_t transient_det[2] /* o : transient det outputs */
-);
-
-void ivas_td_decorr_get_ducking_gains(
- ivas_trans_det_state_t *hTranDet, /* i/o: Transient detector handle */
- float *pIn_pcm,
- float *pIn_duck_gains,
- float *pOut_duck_gains,
- const int16_t frame_len,
- const int16_t tdet_flag
-);
-
-#define IVAS_CMULT_FLOAT( in1_re, in1_im, in2_re, in2_im, out1_re, out1_im ) \
- out1_re = ( in1_re * in2_re ) - ( in1_im * in2_im ); \
- out1_im = ( in1_re * in2_im ) + ( in2_re * in1_im );
-
-#define IVAS_CALCULATE_ABS( re, im, out ) \
- out = sqrtf( ( re * re ) + ( im * im ) );
-
-#define IVAS_CALCULATE_RABS( re, out ) \
- out = sqrtf( re * re );
-
-#define IVAS_CALCULATE_SQ_ABS( re, im, out ) \
- out = (float) ( ( re * re ) + ( im * im ) );
-
-#define IVAS_RMULT_DOUBLE( in1_re, in2_re, out1_re ) \
- out1_re = ( in1_re * in2_re ); \
-
-#define IVAS_CALCULATE_SQ_ABS_N( re, out ) \
- out = (float) ( re * re );
-
-#define IVAS_RMULT_FLOAT( in1_re, in2_re, out1_re ) \
- out1_re = ( in1_re * in2_re );
-
-
-/* PCA */
-void ivas_pca_enc_init(
- PCA_ENC_STATE *hPCA /* i/o: PCA encoder structure */
-);
-
-void ivas_pca_read_bits(
- Decoder_State *st0, /* i/o: decoder state structure - for bitstream handling*/
- PCA_DEC_STATE *hPCA /* i/o: PCA encoder structure */
-);
-
-void ivas_pca_dec_init(
- PCA_DEC_STATE *hPCA /* i/o: PCA decoder structure */
-);
-
-void ivas_pca_dec(
- PCA_DEC_STATE *hPCA, /* i/o: PCA decoder structure */
- const int16_t n_samples, /* i : output frame length */
- const int16_t n_channels, /* i : number of channels */
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int32_t last_ivas_total_brate, /* i : last IVAS total bitrate */
- const int16_t bfi, /* i : bad frame indicator */
- float *pcm_out[] /* o : output audio channels */
-);
-
-void pca_dec_s3(
- const int32_t index,
- float *q
-);
-
-
-void ivas_huffman_encode_fx(
- ivas_huffman_cfg_t *huff_cfg,
- Word16 in,
- Word16 *hcode,
- Word16 *hlen
-);
-
-
-
-ivas_error ivas_huffman_decode(
- ivas_huffman_cfg_t *huff_cfg,
- Decoder_State *st0,
- int16_t *dec_out
-);
-
-void ivas_arith_decode_cmplx_cell_array(
- ivas_arith_t *pArith_re,
- ivas_arith_t *pArith_re_diff,
- Decoder_State *st0,
- ivas_cell_dim_t *pCell_dims,
- int16_t *pDo_diff, const int16_t nB,
- int16_t *pSymbol_re,
- int16_t *pSymbol_re_old
-);
-
-
-
-
-void ivas_ari_done_encoding_14bits(
- BSTR_ENC_HANDLE hBstr, Tastat *s
-);
-
-
-void ivas_wrap_arround(
- int16_t *pArr,
- const int16_t min_val,
- const int16_t max_val,
- const int16_t length
-);
-
-void ivas_get_cum_freq_model(
- const int16_t *pFreq_model,
- const int16_t length,
- int16_t *pCum_freq_model
-);
-
-int16_t ivas_map_num_pred_r_to_idx(
- const int16_t num_quant_points_pred_r,
- const int16_t active_w_flag
-);
-
-int16_t ivas_map_num_drct_r_to_idx(
- const int16_t num_quant_points_drct_r
-);
-
-int16_t ivas_map_num_decd_r_to_idx(
- const int16_t num_quant_points_decd_r
-);
-
-/* Quantization utilities */
-void ivas_quantise_real_values(
- const float *values,
- const int16_t q_levels,
- const float min_value,
- const float max_value,
- int16_t *index,
- float *quant,
- const int16_t dim
-);
-
-
-void ivas_spar_quant_dtx_init(
- ivas_spar_md_t *spar_md,
- float *min_max
-);
-
-void ivas_map_prior_coeffs_quant(
- ivas_spar_md_prev_t *pSpar_md_prior,
- ivas_spar_md_com_cfg *pSpar_md_cfg,
- const int16_t qsi,
- const int16_t nB
-);
-
-
-void ivas_clear_band_coeffs(
- ivas_band_coeffs_t *pband_coeffs,
- const uint16_t num_bands
-);
-
-void ivas_clear_band_coeff_idx(
- ivas_band_coeffs_ind_t *pband_coeff_idx,
- const uint16_t num_bands
-);
-
-
-/*----------------------------------------------------------------------------------*
- * MASA prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_masa_decode(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder struct */
- Decoder_State *st, /* i/o: decoder state structure */
- int16_t *nb_bits_read /* o : number of bits read */
-);
-
-void generate_gridEq(
- SPHERICAL_GRID_DATA *data /* o : data structure for grid */
-);
-
-ivas_error ivas_masa_enc_open_fx(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */
-);
-
-void ivas_masa_enc_close_fx(
- MASA_ENCODER_HANDLE *hMasa /* i/o: MASA metadata structure */
-);
-
-void ivas_masa_enc_reconfigure(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-
-ivas_error ivas_masa_dec_reconfigure(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- uint16_t *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */
- int16_t *data /* o : output synthesis signal */
-);
-
-ivas_error ivas_masa_encode(
- MASA_ENCODER_HANDLE hMasa, /* i/o: MASA encoder structure */
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */
- BSTR_ENC_HANDLE hMetaData, /* i/o: Metadata bitstream handle */
- int16_t *nb_bits_metadata, /* o : number of metadata bits written */
- const int16_t nchan_transport, /* i : number of MASA input/transport channels */
- const IVAS_FORMAT ivas_format, /* i : IVAS format */
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t Opt_DTX_ON, /* i : DTX on flag */
- const int16_t element_mode, /* i : element mode */
- const ISM_MODE ism_mode, /* i : ISM format mode */
- const int16_t nchan_ism, /* i : number of ISM channels */
- ISM_METADATA_HANDLE hIsmMetaData[MAX_NUM_OBJECTS], /* i : ISM metadata handle */
- const int16_t idx_separated_object, /* i : index of the separated object */
- OMASA_ENC_HANDLE hOMasa, /* i : OMASA encoder handle */
- const int16_t ism_imp, /* i : importance of separated object */
- const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */
-);
-
-void ivas_masa_estimate_energy(
- MASA_ENCODER_HANDLE hMasa, /* i/o: MASA encoder structure */
- float *data_f[], /* i : Input audio channels */
- const int16_t input_frame, /* i : frame length */
- const int16_t nchan_transport /* i : number of MASA input/transport channels */
-);
-
-
-void ivas_masa_set_elements(
- const int32_t ivas_total_brate, /* i : codec total bitrate */
- const int16_t mc_mode, /* i : MC format mode */
- const int16_t nchan_transport, /* i : number of MASA input/transport channels */
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */
- int16_t *element_mode, /* o : element mode */
- int16_t *nSCE, /* o : number of SCEs */
- int16_t *nCPE, /* o : number of CPEs */
- const int16_t ivas_format, /* i : IVAS format */
- const ISM_MODE ism_mode, /* i : ISM mode */
- const int32_t ism_total_brate /* i : initial ISM total bitrate */
-);
-
-/*! r: valid or not 1/0 */
-int16_t valid_ratio_index(
- int16_t index, /* i : index to be checked */
- const int16_t K, /* i : L1 norm to check against */
- const int16_t len /* i : vector length */
-);
-
-void reconstruct_ism_ratios(
- int16_t *ratio_ism_idx,
- const int16_t nchan_ism,
- const float step,
- float *q_energy_ratio_ism
-);
-
-void distribute_evenly_ism(
- int16_t *idx,
- const int16_t K,
- const int16_t nchan_ism
-);
-
-
-int16_t ivas_qmetadata_encode_extended_gr_length_fx(
- const uint16_t value,
- const uint16_t alphabet_size,
- const int16_t gr_param);
-
-void ivas_qmetadata_encode_extended_gr_fx(
- BSTR_ENC_HANDLE hMetaData, /* i/o: q_metadata handle */
- const uint16_t value, /* i : value to be encoded */
- const uint16_t alphabet_size, /* i : alphabet size */
- const int16_t gr_param); /* i : GR order */
-
-/*! r: CPE bitrate value */
-int32_t calculate_cpe_brate_MASA_ISM(
- const ISM_MODE ism_mode, /* i : ism mode */
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t nchan_ism /* i : number of objects */
-);
-
-void ivas_merge_masa_metadata(
- MASA_ENCODER_HANDLE hMasa, /* i/o: MASA enc handle. source for MASA metadata and combined metadata will be here */
- OMASA_SPATIAL_META_HANDLE hOMasaMeta /* i : ISM-object metadata to be merged with the MASA metadata */
-);
-
-
-/*!r : number of bits for ISM ratio index */
-int16_t bits_index_ism_ratio(
- const int16_t nchan_ism /* i : number of objects */
-);
-
-void calculate_nbits_meta(
- const int16_t nchan_ism,
- float q_energy_ratio_ism[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS],
- float masa_to_total_energy_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS],
- const int16_t numSf,
- const int16_t numCodingBands,
- int16_t* bits_ism,
- const int16_t idx_sep_obj,
- const int16_t ism_imp
-);
-
-/*! r: limitation flag */
-int16_t calculate_brate_limit_flag(
- const int16_t ism_imp[], /* i : ISM importance flags */
- const int16_t nchan_ism /* i : number of objects */
-);
-
-void ivas_masa_set_coding_config(
- MASA_CODEC_CONFIG* config, /* i/o: MASA coding config structure */
- int16_t* band_mapping, /* o : Band mapping used */
- const int32_t ivas_total_brate, /* i : codec total bitrate */
- const int16_t nchan_transport, /* i : number of transport channel (mono/stereo) */
- const uint8_t isMcMasa /* i : toggle for selecting McMASA specific config */
-);
-
-/*! r: Surround coherence significant flag */
-uint8_t ivas_masa_surrcoh_signicant(
- float surroundingCoherence[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : Surround coherence */
- float diffuse_to_total_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : Diffuse to total ratio */
- const int16_t nSubFrames, /* i : Number of sub frames */
- const int16_t nBands /* i : Number of frequency bands */
-);
-
-void masa_compensate_two_dir_energy_ratio_index(
- const int16_t ratio_index_1, /* i : Input ratio for direction 1 */
- const int16_t ratio_index_2, /* i : Input ratio for direction 2 */
- int16_t *ratio_index_mod1, /* o : Output modified ratio for direction 1 */
- int16_t *ratio_index_mod2, /* o : Output modified ratio for direction 2 */
- const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */
-);
-
-void ivas_set_qmetadata_maxbit_req_fx(
- IVAS_QMETADATA_HANDLE hQMetaData, /* o : qmetadata structure where the requirement value is set */
- const IVAS_FORMAT ivas_format /* i : IVAS format */
-);
-
-void masa_sample_rate_band_correction(
- MASA_CODEC_CONFIG *config, /* i/o: MASA codec config */
- int16_t *band_mapping, /* i/o: Band mapping used and modified */
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: QMetadata structure for modification */
- const uint8_t maxBand, /* i : max band */
- uint8_t is_encoder, /* i : signals if called at encoder */
- MASA_DECODER_EXT_OUT_META_HANDLE hExtOutMeta /* i/o: MASA decoder metadata ext out buffer */
-);
-
-void invdct4_transform(
- float *v, /* i : input vector */
- uint8_t *invdct_v /* o : transformed vector */
-);
-
-
-void ivas_spar_param_to_masa_param_mapping(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder struct */
- float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i : Input audio in CLDFB domain, real */
- float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i : Input audio in CLDFB domain, imag */
- const int16_t subframe /* i : Subframe to map */
-);
-
-/*---------------------------------------------------------------------------------*
- * Binaural FastConv Renderer Prototypes
-*-----------------------------------------------------------------------------------*/
-
-
-void ivas_binaural_hrtf_close(
- HRTFS_FASTCONV_HANDLE *hHrtfFastConv /* i/o: decoder binaural hrtf handle */
-);
-
-void ivas_binRenderer(
- BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: binaural renderer handle */
- COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined head and external orientation handle */
- const int16_t numTimeSlots, /* i : number of time slots to process */
- float Cldfb_RealBuffer_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals */
- float Cldfb_ImagBuffer_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals */
- float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : LS signals */
- float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX] /* i : LS signals */
-);
-
-void ivas_binaural_add_LFE(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- int16_t output_frame, /* i : length of input frame */
- float *input_f[], /* i : transport channels */
- float *output_f[] /* o : synthesized core-coder transport channels/DirAC output */
-);
-
-/*----------------------------------------------------------------------------------*
- * renderer prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_ism_renderer_open(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-void ivas_ism_renderer_close(
- ISM_RENDERER_HANDLE *hIsmRendererData /* i/o: ISM renderer handle */
-);
-
-void ivas_ism_render_sf(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *output_f[], /* i/o: core-coder transport channels/object output */
- const int16_t n_samples_to_render /* i : output frame length per channel */
-);
-
-
-void ivas_mc2sba(
- IVAS_OUTPUT_SETUP hIntSetup, /* i : Format of decoder output */
- float *in_buffer_td[], /* i : MC signals (on input) and the HOA3 (on output) */
- float *buffer_td[], /* o : MC signals (on input) and the HOA3 (on output) */
- const int16_t output_frame, /* i : output frame length per channel */
- const int16_t sba_order, /* i : SBA order */
- const float gain_lfe /* i : gain for LFE, 0=ignore LFE */
-);
-
-void ivas_param_mc_mc2sba_cldfb(
- IVAS_OUTPUT_SETUP hTransSetup, /* i : transported MC Format */
- float *hoa_encoder, /* i : HOA3 encoder for the transported MC format */
- const int16_t slot_idx, /* i : current slot in the subframe */
- float Cldfb_RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: Contains the MC signals (on input) and the HOA3 (on output) */
- float Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: Contains the MC signals (on input) and the HOA3 (on output) */
- const int16_t nBands, /* i : number of synth CLDFB bands */
- const float gain_lfe /* i : gain applied to LFE */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * Amplitude Panning VBAP prototypes
- *----------------------------------------------------------------------------------*/
-
-void panning_wrap_angles(
- const float azi_deg, /* i : azimuth in degrees for panning direction (positive left) */
- const float ele_deg, /* i : elevation in degrees for panning direction (positive up) */
- float *azi_wrapped, /* o : wrapped azimuth component */
- float *ele_wrapped /* o : wrapped elevation component */
-);
-
-/*----------------------------------------------------------------------------------*
- * LS Renderer prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_ls_setup_conversion_open(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-void ivas_ls_setup_conversion_close(
- LSSETUP_CONVERSION_HANDLE *hLsSetUpConversion /* i/o: LS converter handle */
-);
-
-
-void ivas_ls_setup_conversion(
- Decoder_Struct *st_ivas, /* i : IVAS decoder structure */
- const int16_t input_chans, /* i : number of input channels to the renderer */
- const int16_t output_frame, /* i : frame length */
- float *input[], /* i : LS input/output synthesis signal */
- float *output[] /* i/o: LS input/output synthesis signal */
-);
-
-void ivas_ls_setup_conversion_process_mdct(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *output[] /* i/o: output synthesis signal */
-);
-
-void ivas_ls_setup_conversion_process_mdct_param_mc(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *x[][NB_DIV] /* i/o: output synthesis signal */
-);
-
-void ivas_lssetupconversion_process_param_mc(
- Decoder_Struct *st_ivas, /* i/o: LS setup conversion renderer handle */
- const int16_t num_timeslots, /* i : number of time slots to process */
- float Cldfb_RealBuffer_InOut[MAX_CICP_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i/o: LS signals */
- float Cldfb_ImagBuffer_InOut[MAX_CICP_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i/o: LS signals */
- int16_t channel_active[MAX_CICP_CHANNELS] /* i : bitmap indicating which output channels are active */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * Custom loudspeaker setup prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_ls_custom_open(
- LSSETUP_CUSTOM_HANDLE *hLsSetupCustom /* o : Custom loudspeaker setup handle */
-);
-
-
-
-/*----------------------------------------------------------------------------------*
- * McMASA prototypes
- *----------------------------------------------------------------------------------*/
-
-
-ivas_error ivas_mcmasa_dec_reconfig(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */
-);
-
-void ivas_mcmasa_setNumTransportChannels(
- int16_t* nchan_transport, /* o : Pointer to number of transport channels to be set */
- int16_t* element_mode, /* o : Pointer to element mode to be set */
- const int32_t ivas_total_brate /* i : Total bitrate of IVAS */
-);
-
-void ivas_mcmasa_set_separate_channel_mode(
- uint8_t *separateChannelEnabled, /* o : Pointer to separate channel toggle */
- int16_t *separateChannelIndex, /* o : Pointer to separate channel index */
- const int32_t ivas_total_brate /* i : Total bitrate of IVAS */
-);
-
-void ivas_mcmasa_split_brate(
- const uint8_t separateChannelEnabled, /* i : Transport running in "separate channel" mode */
- const int32_t ivas_total_brate, /* i : Total bitrate available to be split */
- const int16_t nSCE, /* i : Number of SCEs in use (0 or 1) */
- const int16_t nCPE, /* i : Number of CPEs in use (0 or 1) */
- int32_t *brate_sce, /* o : Pointer to SCE element bitrate */
- int32_t *brate_cpe /* o : Pointer to CPE element bitrate */
-);
-
-
-void ivas_mcmasa_dmx_modify_fx(
- const Word16 n_samples, /* i : input frame length in samples */
- Word32 dmx_fx[][L_FRAME48k + NS2SA(48000, IVAS_FB_ENC_DELAY_NS)], /* i/o: downmix signal to be transformed into another format Qx*/
- Word16 dmx_Q[], /* i/o : Q of the intput signal which is being transformed*/
- const Word16 n_chnls_dmx_old, /* i : number of downmix channels in the old format Q0 */
- const Word16 n_chnls_dmx_new /* i : number of downmix channels in the target format Q0*/
-);
-
-ivas_error ivas_mono_dmx_renderer_open(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-
-void ivas_mono_dmx_renderer_close(
- MONO_DOWNMIX_RENDERER_HANDLE *hMonoDmxRenderer /* i/ i/o: Mono downmix structure */
-);
-
-void ivas_mono_downmix_render_passive(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *output_f[], /* i/o: synthesized core-coder transport channels/mono output */
- const int16_t output_frame /* i : output frame length */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * LFE encoder low pass filter prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_create_lfe_lpf_enc(
- ivas_filters_process_state_t **hLfeLpf, /* o : LFE LPF handle */
- const int32_t input_Fs /* i : input sampling rate */
-);
-
-void ivas_lfe_lpf_enc_close_fx(
- ivas_filters_process_state_t **hLfeLpf /* i/o: LFE LPF handle */
-);
-
-void ivas_lfe_lpf_enc_apply(
- ivas_filters_process_state_t *hLfeLpf, /* i/o: LFE LPF handle */
- float data_lfe_ch[], /* i/o: LFE signal */
- const int16_t input_frame /* i : input frame length per channel */
-);
-
-
-/*----------------------------------------------------------------------------------*
- * LFE Coding prototypes
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_create_lfe_enc_fx(
- LFE_ENC_HANDLE *hLFE, /* o : IVAS LFE encoder structure */
- const int32_t input_Fs /* i : input sampling rate */
-);
-
-void ivas_lfe_enc_close_fx(
- LFE_ENC_HANDLE *hLFE /* i/o: LFE encoder handle */
-);
-
-void ivas_lfe_enc(
- LFE_ENC_HANDLE hLFE, /* i/o: LFE encoder handle */
- float data_lfe_ch[], /* i : input LFE signal */
- const int16_t input_frame, /* i : input frame length per channel */
- BSTR_ENC_HANDLE hBstr /* i/o: bitstream handle */
-);
-
-void ivas_lfe_tdplc(
- LFE_DEC_HANDLE hLFE, /* i/o: LFE decoder handle */
- float *prevsynth, /* i : previous frame synthesis */
- float *ytda, /* o : output time-domain buffer */
- const int16_t output_frame /* i : output frame length */
-);
-void ivas_lfe_window_init(
- LFE_WINDOW_HANDLE hLFEWindow, /* i/o: LFE window handle */
- const int32_t sampling_rate, /* i : sampling rate */
- const int16_t frame_len /* i : frame length in samples */
-);
-
-void ivas_lfe_lpf_select_filt_coeff(
- const int32_t sampling_rate, /* i : sampling rate */
- const int16_t order, /* i : filter order */
- const float **ppFilt_coeff /* o : filter coefficients */
-);
-
-void ivas_filters_init(
- ivas_filters_process_state_t *filter_state, /* i/o: filter state handle */
- const float *filt_coeff, /* i : filter coefficients */
- const int16_t order /* i : filter order */
-);
-
-void ivas_filters_init_fx(
- ivas_filters_process_state_t *filter_state, /* i/o: filter state handle */
- const Word32 *filt_coeff_fx, /* i : filter coefficients Q31- *filt_coeff_e */
- const Word16 *filt_coeff_e, /* i : exponents of filter coefficients */
- const Word16 order ) ;
-
-void ivas_filter_process(
- ivas_filters_process_state_t *filter_state, /* i/o: filter state handle */
- float *pIn_Out, /* i : signal subject to filtering */
- const int16_t length /* i : filter order */
-);
-
-void ivas_filter_process_fx(
- ivas_filters_process_state_t *filter_state, /* i/o: filter state handle */
- Word32 *pIn_Out_fx, /* i/o: signal subject to filtering Q(q_factor) */
- const Word16 length, /* i : filter order */
- Word16 q_factor );
-
-/*----------------------------------------------------------------------------------*
- * OSBA prototypes
- *----------------------------------------------------------------------------------*/
-ivas_error ivas_osba_enc_reconfig(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-);
-ivas_error ivas_osba_data_open(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */
-);
-
-ivas_error ivas_osba_dirac_td_binaural_jbm(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const uint16_t nSamplesAsked, /* i : number of CLDFB slots requested */
- uint16_t *nSamplesRendered, /* o : number of CLDFB slots rendered */
- uint16_t *nSamplesAvailable, /* o : number of CLDFB slots still to render */
- float *output_f[] /* o : rendered time signal */
-);
-
-
-void ivas_osba_data_close(
- SBA_ISM_DATA_HANDLE *hSbaIsmData /* i/o: OSBA rendering handle */
-);
-
-
-/*----------------------------------------------------------------------------------*
-* OMASA prototypes
-*---------------------------------------------------------------------------------*/
-
-ivas_error ivas_omasa_enc_open(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */
-);
-
-void ivas_omasa_enc_close(
- OMASA_ENC_HANDLE *hOMasa /* i/o: encoder OMASA handle */
-);
-
-
-ivas_error ivas_omasa_dec_config(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- uint16_t *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */
- int16_t *data /* o : output synthesis signal */
-);
-
-
-
-
-void ivas_set_surplus_brate_enc(
- Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
-#ifdef DEBUG_MODE_INFO
- ,
- const int16_t *nb_bits_metadata /* i : number of metadata bits */
-#endif
-);
-
-void ivas_set_surplus_brate_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- int32_t *ism_total_brate /* i : ISM total bitrate */
-);
-
-
-void ivas_set_ism_importance_interformat(
- const int32_t ism_total_brate, /* i/o: ISms total bitrate */
- const int16_t nchan_transport, /* i : number of transported channels */
- ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */
- SCE_ENC_HANDLE hSCE[], /* i/o: SCE encoder handles */
- const float lp_noise_CPE, /* i : LP filtered total noise estimation */
- int16_t ism_imp[] /* o : ISM importance flags */
-);
-
-
-/*! r: adjusted bitrate */
-int32_t ivas_interformat_brate(
- const ISM_MODE ism_mode, /* i : ISM mode */
- const int16_t nchan_ism, /* i : number of ISM channels */
- const int32_t element_brate, /* i : element bitrate */
- const int16_t ism_imp, /* i : ISM importance flag */
- const int16_t limit_flag /* i : flag to limit the bitrate increase */
-);
-
-void ivas_combined_format_brate_sanity(
- const int32_t element_brate, /* i : element bitrate */
- const int16_t core, /* i : core */
- const int32_t total_brate, /* i : total bitrate */
- int32_t *core_brate, /* i/o: core bitrate */
- int16_t *inactive_coder_type_flag, /* o : inactive coder_type flag */
- int16_t *diff_nBits /* o : number of differential bits */
-);
-
-ISM_MODE ivas_omasa_ism_mode_select(
- const int32_t ivas_total_brate, /* i : IVAS total bitrate */
- const int16_t nchan_ism /* i : number of input ISM's */
-);
-
-void ivas_set_omasa_TC(
- const ISM_MODE ism_mode, /* i : ISM mode */
- const int16_t nchan_ism, /* i : number of input ISMs */
- int16_t *nSCE, /* o : number of SCEs */
- int16_t *nCPE /* o : number of CPEs */
-);
-
-void ivas_merge_masa_transports(
- float data_in_f1[][L_FRAME48k], /* i : Transport audio signals 1 */
- float *data_in_f2[], /* i : Transport audio signals 2 */
- float *data_out_f[], /* o : Merged transport audio signals */
- const int16_t input_frame, /* i : Input frame size */
- const int16_t num_transport_channels /* i : Number of transport audio signals */
-);
-
-
-ivas_error ivas_omasa_ism_metadata_dec(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const int32_t ism_total_brate, /* i : ISM total bitrate */
- int16_t *nchan_ism, /* o : number of ISM separated channels */
- int16_t *nchan_transport_ism, /* o : number of ISM TCs */
- const int16_t dirac_bs_md_write_idx, /* i : DirAC bitstream write index */
- int16_t nb_bits_metadata[] /* o : number of ISM metadata bits */
-);
-
-void ivas_omasa_preProcessStereoTransportsForMovedObjects(
- Decoder_Struct *st_ivas,
- float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX],
- float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX],
- const int16_t nBins,
- const int16_t subframe
-);
-
-ivas_error ivas_omasa_separate_object_renderer_open(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-void ivas_omasa_separate_object_renderer_close(
- Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
-);
-
-void ivas_omasa_separate_object_render_jbm(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- const uint16_t nSamplesRendered, /* i : number of samples rendered */
- float input_f[][L_FRAME48k], /* i : separated object signal */
- float *output_f[], /* o : rendered time signal */
- const int16_t subframes_rendered, /* i : number of subframes rendered */
- const int16_t slots_rendered /* i : number of CLDFB slots rendered */
-);
-
-void ivas_omasa_encode_masa_to_total(
- float masa_to_total_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS],
- BSTR_ENC_HANDLE hMetaData,
- const int16_t low_bitrate_mode,
- const int16_t nbands,
- const int16_t nblocks
-);
-
-void ivas_omasa_decode_masa_to_total(
- uint16_t *bit_stream,
- int16_t *index,
- float masa_to_total_energy_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS],
- const int16_t nbands,
- const int16_t nblocks
-);
-
-void ivas_omasa_modify_masa_energy_ratios(
- IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */
- float masa_to_total_energy_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_MAXIMUM_CODING_SUBBANDS]
-);
-
-
-/*----------------------------------------------------------------------------------*
- * TD Binaural Object renderer
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_td_binaural_renderer(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *output[], /* i/o: SCE channels / Binaural synthesis */
- const int16_t output_frame /* i : output frame length */
-);
-
-ivas_error ivas_td_binaural_renderer_sf(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- float *output[], /* i/o: SCE channels / Binaural synthesis */
- const int16_t n_samples_granularity /* i : granularity of the renderer/buffer */
-);
-
-/*----------------------------------------------------------------------------------*
- * Filter-bank (FB) Mixer
- *----------------------------------------------------------------------------------*/
-
-ivas_error ivas_fb_set_cfg(
- IVAS_FB_CFG **pFb_cfg_out, /* o : FB config. handle */
- const int16_t ivas_format, /* i : IVAS format */
- const int16_t num_in_chans, /* i : number of FB input channels */
- const int16_t num_out_chans, /* i : number of FB output channels */
- const int16_t active_w_mixing, /* i : active_w_mixing flag */
- const int32_t sampling_Fs, /* i : sampling rate */
- const int16_t nachan_dirac_ana /* i : number of DirAR analysis channels */
-);
-
-void ivas_fb_mixer_pcm_ingest(
- IVAS_FB_MIXER_HANDLE hFbMixer, /* i/o: FB mixer handle */
- float *pcm_in[], /* i : input audio channels */
- float **ppOut_pcm, /* o : output audio channels */
- const int16_t frame_length, /* i : frame length */
- const int16_t HOA_md_ind[IVAS_SPAR_MAX_CH]
-);
-
-void ivas_fb_mixer_update_prior_input(
- IVAS_FB_MIXER_HANDLE hFbMixer, /* i/o: FB mixer handle */
- float *pcm_in[], /* i : input audio channels */
- const int16_t length, /* i : length of time slot */
- const int16_t nchan_fb_in /* i : number of analysis channels */
-);
-
-void ivas_fb_mixer_get_windowed_fr(
- IVAS_FB_MIXER_HANDLE hFbMixer, /* i/o: FB mixer handle */
- float *pcm_in[], /* i : input audio channels */
- float *frame_f_real[], /* o : real freq domain values */
- float *frame_f_imag[], /* o : imag freq domain values */
- const int16_t length, /* i : number of new samples in time slot */
- const int16_t mdft_len, /* i : MDFT frame length */
- const int16_t nchan_fb_in /* i : number of analysis channels */
-);
-
-/*! r: number of spectral bands */
-
-/* clang-format on */
diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h
index 34794498717c02992d404ebc177c00f5da67e126..afbcff3890ec93eaf9e7e4302778070496721fb0 100644
--- a/lib_com/ivas_prot_fx.h
+++ b/lib_com/ivas_prot_fx.h
@@ -5990,5 +5990,820 @@ void modify_Rmat_q_fx(
Word16 q_new /* i : target q factor for rotation matrix */
);
#endif
+/*=============================================================================================*/
+/* clang-format off */
+
+/*----------------------------------------------------------------------------------*
+ * General IVAS prototypes
+ *----------------------------------------------------------------------------------*/
+
+/*! r: number of channels to be analysed */
+
+void copy_encoder_config_ivas_fx(
+ Encoder_Struct *st_ivas, /* i : IVAS encoder structure */
+ Encoder_State *st, /* o : encoder state structure */
+ const Word16 flag_all /* i : flag 1==update all, 0=partial update Q0*/
+);
+
+ivas_error create_mct_enc_fx(
+ Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
+);
+
+void destroy_cpe_enc(
+ CPE_ENC_HANDLE hCPE /* i/o: CPE encoder structure */
+);
+
+void ivas_mct_enc_close_fx(
+ MCT_ENC_HANDLE *hMCT /* i/o: MCT encoder structure */
+);
+
+ivas_error pre_proc_front_ivas_fx(
+ SCE_ENC_HANDLE hSCE, /* i/o: SCE encoder structure */
+ CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
+ const Word32 element_brate, /* i : SCE/CPE element bitrate Q0*/
+ const Word16 nb_bits_metadata, /* i : number of metadata bits Q0*/
+ const Word16 input_frame, /* i : frame length Q0*/
+ const Word16 n, /* i : channel number Q0*/
+ Word16 old_inp_12k8_fx[], /* o : buffer of old input signal Q_new-1*/
+ Word16 old_inp_16k_fx[], /* o : buffer of old input signal @16kHz Q_new-1*/
+ Word32 *ener_fx, /* o : residual energy from Levinson-Durbin epsP_fx_q*/
+ Word16 *relE_fx, /* o : frame relative energy Q8*/
+ Word16 A_fx[NB_SUBFR16k * ( M + 1 )], /* o : A(z) unquantized for the 4 subframes Q12*/
+ Word16 Aw_fx[NB_SUBFR16k * ( M + 1 )], /* o : weighted A(z) unquantized for subframes Q12*/
+ Word32 epsP_fx[M + 1], /* o : LP prediction errors epsP_fx_q*/
+ Word16 *epsP_fx_q,
+ Word16 lsp_new_fx[M], /* o : LSPs at the end of the frame Q15*/
+ Word16 lsp_mid_fx[M], /* o : LSPs in the middle of the frame Q15*/
+ Word16 *vad_hover_flag, /* o : VAD hangover flag Q0*/
+ Word16 *attack_flag, /* o : flag signaling attack Q0*/
+ Word32 realBuffer_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: real buffer Q(q_re_im_buf)*/
+ Word32 imagBuffer_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: imag buffer Q(q_re_im_buf)*/
+ Word16 *q_re_im_buf, /* i/o: Q-factor of real and imag buffer */
+ Word16 old_wsp_fx[], /* o : weighted input signal buffer q_old_wsp*/
+ Word16 *q_old_wsp,
+ Word16 pitch_fr_fx[NB_SUBFR], /* o : fractional pitch values Q6*/
+ Word16 voicing_fr_fx[NB_SUBFR], /* o : fractional pitch gains Q15*/
+ Word16 *loc_harm, /* o : harmonicity flag Q0*/
+ Word16 *cor_map_sum_fx, /* o : speech/music clasif. parameter Q8*/
+ Word16 *vad_flag_dtx, /* o : HE-SAD flag with additional DTX HO Q0*/
+ Word32 enerBuffer_fx[CLDFB_NO_CHANNELS_MAX], /* o : energy buffer enerBuffer_fx_exp*/
+ Word16 *enerBuffer_fx_exp, /* o : energy buffer */
+ Word16 fft_buff_fx[2 * L_FFT], /* o : FFT buffer fft_buff_fx_q*/
+ Word16 *fft_buff_fx_q, /* o : FFT buffer */
+ const Word16 tdm_A_PCh_fx[M + 1], /* i : unq. LP coeff. of primary channel Q12*/
+ const Word16 tdm_lsp_new_PCh_fx[M], /* i : unq. LSPs of primary channel Q15*/
+ const Word16 currFlatness_fx, /* i : flatness parameter Q7*/
+ const Word16 tdm_ratio_idx, /* i : Current Ratio_L index Q0*/
+ Word32 fr_bands_LR_fx[][2 * NB_BANDS], /* i : energy in frequency bands (fr_bands_LR_fx_q) fr_bands_LR_fx_q*/
+ Word16 fr_bands_LR_fx_q[CPE_CHANNELS],
+ const Word16 Etot_LR_fx[], /* i : total energy Left & Right channel Q8*/
+ Word32 lf_E_LR_fx[][2 * VOIC_BINS], /* i : per bin spectrum energy in lf, LR channels (lf_E_LR_fx_q)*/
+ Word16 lf_E_LR_fx_q,
+ const Word16 localVAD_HE_SAD_LR[], /* i : HE-SAD flag without hangover, LR channels Q0*/
+ Word32 band_energies_LR_fx[2 * NB_BANDS], /* o : energy in critical bands without minimum noise floor E_MIN (band_energies_LR_fx_q)*/
+ Word16 band_energies_LR_fx_q,
+ const Word16 flag_16k_smc, /* i : flag to indicate if the OL SMC is run at 16 kHz Q0*/
+ const Word16 front_vad_flag, /* i : front-VAD flag to overwrite VAD decision Q0*/
+ const Word16 force_front_vad, /* i : flag to force VAD decision Q0*/
+ const Word16 front_vad_dtx_flag, /* i : front-VAD DTX flag to overwrite VAD decision Q0*/
+ const IVAS_FORMAT ivas_format, /* i : IVAS format */
+ const Word16 MCT_flag, /* i : hMCT handle allocated (1) or not (0) Q0*/
+#ifdef NONBE_1211_DTX_BR_SWITCHING
+ const Word32 last_ivas_total_brate, /* i : last IVAS total bitrate Q0*/
+#endif
+ const Word32 ivas_total_brate, /* i : IVAS total bitrate - for setting the DTX Q0*/
+ Word16 *Q_new
+#ifdef DEBUG_MODE_INFO
+ ,
+ const Word16 ch_idx
+#endif
+);
+ivas_error pre_proc_ivas_fx(
+ Encoder_State *st, /* i/o: encoder state structure */
+ const Word16 last_element_mode, /* i : last element mode Q0*/
+ const Word32 element_brate, /* i : element bitrate Q0*/
+ const Word32 last_element_brate, /* i : last element bitrate Q0*/
+ const Word16 input_frame, /* i : frame length Q0*/
+ Word16 old_inp_12k8_fx[], /* i/o: buffer of old input signal Q_new-1 */
+ Word16 old_inp_16k_fx[], /* i/o: buffer of old input signal @ 16kHz Q_new-1 */
+ Word16 **inp_fx, /* o : ptr. to inp. signal in the current frame Q_new*/
+ Word32 *ener_fx, /* o : residual energy from Levinson-Durbin epsP_fx_q*/
+ Word16 A_fx[NB_SUBFR16k * ( M + 1 )], /* i/o: A(z) unquantized for the 4 subframes Q12*/
+ Word16 Aw_fx[NB_SUBFR16k * ( M + 1 )], /* i/o: weighted A(z) unquantized for subframes Q14*/
+ Word32 epsP_fx[M + 1], /* i : LP prediction errors epsP_fx_q*/
+ Word16 *epsP_fx_q, /* i : LP prediction errors */
+ Word16 lsp_new_fx[M], /* i/o: LSPs at the end of the frame Q15*/
+ Word16 lsp_mid_fx[M], /* i/o: LSPs in the middle of the frame Q15*/
+ Word16 *new_inp_resamp16k_fx, /* o : new input signal @16kHz, non pre-emphasised, used by the WB TBE/BWE Q_new-1*/
+ Word16 *Voicing_flag, /* o : voicing flag for HQ FEC Q0*/
+ Word16 old_wsp_fx[], /* i : weighted input signal buffer e_old_wsp*/
+ Word16 e_old_wsp,
+ const Word16 loc_harm, /* i : harmonicity flag Q0*/
+ const Word16 vad_flag_dtx, /* i : HE-SAD flag with additional DTX HO Q0*/
+ const Word16 MCT_flag, /* i : hMCT handle allocated (1) or not (0) Q0*/
+ const Word16 vad_hover_flag, /* i : VAD hangover flag Q0*/
+ const Word16 flag_16k_smc, /* i : flag to indicate if the OL SMC is run at 16 kHz Q0*/
+ Word32 enerBuffer_fx[CLDFB_NO_CHANNELS_MAX], /* e_enerBuffer */
+ Word16 e_enerBuffer,
+ Word16 fft_buff_fx[2 * L_FFT], /* Qx */
+ Word16 cor_map_sum_fx, /* Q8 */
+ Word16 *Q_new
+);
+/*! r: number of clipped samples */
+void ivas_initialize_handles_enc_fx(
+ Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
+);
+
+ivas_error ivas_init_encoder(
+ Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
+);
+
+void ivas_destroy_enc_fx(
+ Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
+);
+
+ivas_error ivas_initialize_MD_bstr_enc_fx(
+ BSTR_ENC_HANDLE *hBstr, /* o : encoder MD bitstream handle */
+ Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
+);
+
+void ivas_destroy_MD_bstr_enc_fx(
+ BSTR_ENC_HANDLE *hMetaData /* i/o: encoder MD bitstream handle */
+);
+
+ivas_error ivas_init_decoder_front(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
+);
+
+
+void ivas_mct_dec_close(
+ MCT_DEC_HANDLE *hMCT /* i/o: MCT decoder structure */
+);
+
+/*! r: number of channels to be synthesised */
+
+void copy_decoder_config(
+ Decoder_Struct *st_ivas, /* i : IVAS decoder structure */
+ Decoder_State *st /* o : decoder state structure */
+);
+
+void ivas_initialize_handles_dec(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
+);
+
+ivas_error ivas_core_enc_fx(
+ SCE_ENC_HANDLE hSCE, /* i/o: SCE encoder structure */
+ CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
+ MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */
+ const Word16 n_CoreChannels, /* i : number of core channels to be coded Q0*/
+ Word16 old_inp_12k8_fx[][L_INP_12k8], /* i : buffer of old input signal Q_new-1*/
+ Word16 old_inp_16k_fx[][L_INP], /* i : buffer of old input signal Q_new-1*/
+ Word16 Q_new[],
+ Word32 ener_fx[], /* i : residual energy from Levinson-Durbin epsP_fx_q*/
+ Word16 A_fx[][NB_SUBFR16k * ( M + 1 )], /* i : A(z) unquantized for the 4 subframes Q12*/
+ Word16 Aw_fx[][NB_SUBFR16k * ( M + 1 )], /* i : weighted A(z) unquantized for subframes Q12*/
+ Word32 epsP_fx[][M + 1], /* i : LP prediction errors epsP_fx_q*/
+ Word16 epsP_fx_q[], /* i : LP prediction errors */
+ Word16 lsp_new_fx[][M], /* i : LSPs at the end of the frame Q15*/
+ Word16 lsp_mid_fx[][M], /* i : LSPs in the middle of the frame Q15*/
+ const Word16 vad_hover_flag[], /* i : VAD hanglover flag Q0*/
+ Word16 attack_flag[], /* i : attack flag (GSC or TC) Q0*/
+ Word32 realBuffer_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: real buffer q_re_im_buf*/
+ Word32 imagBuffer_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: imag buffer q_re_im_buf*/
+ Word16 *q_re_im_buf,
+ Word16 old_wsp_fx[][L_WSP], /* i : weighted input signal buffer e_old_wsp*/
+ Word16 e_old_wsp[],
+ const Word16 loc_harm[], /* i : harmonicity flag Q0*/
+ const Word16 cor_map_sum_fx[], /* i : speech/music clasif. parameter Q8*/
+ const Word16 vad_flag_dtx[], /* i : HE-SAD flag with additional DTX HO Q0*/
+ Word32 enerBuffer_fx[][CLDFB_NO_CHANNELS_MAX], /* o : energy buffer enerBuffer_fx_exp*/
+ Word16 enerBuffer_fx_exp[], /* o : energy buffer */
+ Word16 fft_buff_fx[][2 * L_FFT], /* i : FFT buffer Qx*/
+ const Word16 tdm_SM_or_LRTD_Pri, /* i : channel combination scheme flag Q0*/
+ const Word16 ivas_format, /* i : IVAS format Q0*/
+ const Word16 flag_16k_smc /* i : flag to indicate if the OL SMC is run at 16 kHz Q0*/
+);
+
+void ivas_renderer_select(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
+);
+
+ivas_error ivas_mc_enc_config_fx(
+ Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
+);
+
+/*! r: flag indicating a valid bitrate */
+Word16 is_IVAS_bitrate_fx(
+ const Word32 ivas_total_brate /* i : IVAS total bitrate */
+);
+
+int16_t is_DTXrate(
+ const int32_t ivas_total_brate /* i : IVAS total bitrate */
+);
+
+
+/*----------------------------------------------------------------------------------*
+ * JBM prototypes
+ *----------------------------------------------------------------------------------*/
+
+ivas_error ivas_jbm_dec_set_discard_samples(
+ Decoder_Struct *st_ivas /* i/o: main IVAS decoder structre */
+);
+
+TC_BUFFER_MODE ivas_jbm_dec_get_tc_buffer_mode(
+ Decoder_Struct *st_ivas /* i : IVAS decoder handle */
+);
+
+void ivas_jbm_dec_tc_buffer_close(
+ DECODER_TC_BUFFER_HANDLE *phTcBuffer /* i/o: TC buffer handle */
+);
+
+void ivas_jbm_dec_td_renderers_adapt_subframes(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
+);
+
+ivas_error ivas_jbm_dec_metadata_open(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
+);
+
+void ivas_jbm_masa_sf_to_sf_map(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
+);
+
+
+/*----------------------------------------------------------------------------------*
+ * ISM prototypes
+ *----------------------------------------------------------------------------------*/
+
+void bitbudget_to_brate(
+ const Word16 x[], /* i : bitbudgets Q0 */
+ Word32 y[], /* o : bitrates Q0 */
+ const Word16 N /* i : number of entries to be converted */
+);
+
+void ivas_ism_reset_metadata(
+ ISM_METADATA_HANDLE hIsmMeta /* i/o: ISM metadata handles */
+);
+
+void ivas_ism_reset_metadata_enc(
+ ISM_METADATA_HANDLE hIsmMeta /* i/o: ISM metadata handle */
+);
+void ivas_ism_reset_metadata_API(
+ ISM_METADATA_HANDLE hIsmMeta /* i/o: ISM metadata handles */
+);
+
+/*! r: index of the winning codeword */
+Word16 ism_quant_meta_fx(
+ const Word32 val, /* i : scalar value to quantize Q22 */
+ Word32 *valQ, /* o : quantized value Q22 */
+ const Word32 borders_fx[], /* i : level borders Q22 */
+ const Word32 q_step_fx, /* i : quantization step Q22 */
+ const Word32 q_step_border_fx, /* i : quantization step at the border Q22 */
+ const Word16 cbsize /* i : codebook size */
+);
+
+ivas_error ivas_ism_metadata_enc_create_fx(
+ Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */
+ const Word16 n_ISms, /* i : number of objects */
+ Word32 element_brate_tmp[] /* o : element bitrate per object */
+);
+
+/*----------------------------------------------------------------------------------*
+ * Parametric ISM prototypes
+ *----------------------------------------------------------------------------------*/
+
+/*! r: ISM format mode */
+
+ivas_error ivas_param_ism_enc_open_fx(
+ Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
+);
+
+void ivas_param_ism_enc_close_fx(
+ PARAM_ISM_CONFIG_HANDLE *hParamIsm, /* i/o: ParamISM handle */
+ const Word32 input_Fs /* i : input sampling_rate */
+);
+
+void ivas_ism_metadata_close(
+ ISM_METADATA_HANDLE hIsmMetaData[], /* i/o : object metadata handles */
+ const Word16 first_idx /* i : index of first handle to deallocate */
+);
+
+
+ivas_error ivas_ism_enc_config(
+ Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
+);
+
+/*----------------------------------------------------------------------------------*
+ * ISM DTX prototypes
+ *----------------------------------------------------------------------------------*/
+
+ivas_error ivas_ism_dtx_open(
+ Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
+);
+
+void ivas_ism_metadata_sid_enc_fx(
+ ISM_DTX_HANDLE hISMDTX, /* i/o: ISM DTX handle */
+ const Word16 flag_noisy_speech, /* i : noisy speech flag */
+ const Word16 nchan_ism, /* i : number of objects */
+ const Word16 nchan_transport, /* i : number of transport channels */
+ const ISM_MODE ism_mode, /* i : ISM mode */
+ ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */
+ const Word16 sid_flag, /* i : indication of SID frame */
+ const Word16 md_diff_flag[], /* i : metadata differental flag */
+ BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */
+ Word16 nb_bits_metadata[] /* o : number of metadata bits */
+);
+
+
+
+void ivas_param_ism_compute_noisy_speech_flag_fx(
+ Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
+);
+
+/*----------------------------------------------------------------------------------*
+ * DFT Stereo prototypes
+ *----------------------------------------------------------------------------------*/
+
+void stereo_dft_dec_destroy(
+ STEREO_DFT_DEC_DATA_HANDLE *hStereoDft /* i/o: decoder DFT stereo handle */
+);
+
+/*----------------------------------------------------------------------------------*
+ * Range Coder prototypes
+ *----------------------------------------------------------------------------------*/
+
+/*! r: Read bit */
+UWord16 rc_uni_dec_read_bit(
+ RangeUniDecState *rc_st_dec /* i/o: RC state handle */
+);
+
+/*! r: Read bit */
+UWord16 rc_uni_dec_read_bit_prob_fast(
+ RangeUniDecState *rc_st_dec, /* i/o: RC state handle */
+ const Word16 freq0, /* i : Frequency for symbol 0 */
+ const UWord16 tot_shift /* i : Total frequency as a power of 2 */
+);
+
+/*! r: Read bits */
+UWord16 rc_uni_dec_read_bits(
+ RangeUniDecState *rc_st_dec, /* i/o: RC state handle */
+ const Word16 bits /* i : Number of bits */
+);
+
+
+/*----------------------------------------------------------------------------------*
+ * TD Stereo prototypes
+ *----------------------------------------------------------------------------------*/
+
+void tdm_bit_alloc(
+ const Word16 ivas_format, /* i : IVAS format */
+ const Word16 ism_mode, /* i : ISM mode in combined format */
+ const Word32 element_brate_wo_meta, /* i : element bitrate without metadata */
+ const Word16 tdm_lp_reuse_flag, /* i : LPC reusage flag */
+ Word32 *total_brate_pri, /* o : Allocated primary channel bitrate */
+ Word32 *total_brate_sec, /* o : Allocated secondary channel bitrate */
+ Word16 *tdm_low_rate_mode, /* o : secondary channel low rate mode flag */
+ const Word16 coder_type, /* i : secondary channel coder type */
+ const Word16 ener_ratio_idx, /* i : correlation ratio indexe */
+ const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */
+ const Word16 bwidth_pri, /* i : bandwidth of the primary channel */
+ const Word16 bwidth_sec, /* i : bandwidth of the secondary channel */
+ const Word16 flag_ACELP16k_pri, /* i : ACELP@16kHz core flag, primary chan. */
+ const Word16 tdm_LRTD_flag, /* i : LRTD stereo mode flag */
+ const Word16 coder_type0, /* i : coder type (temporary in the encoder, from bitstream in decoder) */
+ const Word16 tdm_inst_ratio_idx /* i : instantaneous correlation ratio index */
+);
+
+
+/*! r: value of the indice */
+uint16_t get_indice_st(
+ Decoder_State *st, /* i/o: decoder state structure */
+ const Word32 element_brate, /* i : element bitrate */
+ const Word16 pos, /* i : absolute position in the bitstream */
+ const Word16 nb_bits /* i : number of bits to quantize the indice */
+);
+
+/*----------------------------------------------------------------------------------*
+ * MDCT Stereo prototypes
+ *----------------------------------------------------------------------------------*/
+
+void stereo_mdct_core_enc_fx(
+ CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
+ Word16 new_samples[CPE_CHANNELS][L_INP], /* i : new samples Q0*/
+ Word16 old_wsp[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP Qx*/
+ Word16 pitch_buf_fx[CPE_CHANNELS][NB_SUBFR16k] /* o : floating pitch for each subframe Q6*/
+);
+
+Word16 write_stereo_to_bitstream_fx
+(
+ STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: Stereo MDCT encoder structure */
+ Encoder_State **sts, /* i/o: Encoder state structure */
+ Word16 ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask Q0*/
+ const Word16 mct_on, /* i : flag mct block (1) or stereo (0) Q0*/
+ BSTR_ENC_HANDLE hBstr /* i/o: bitstream handle */
+);
+
+/*----------------------------------------------------------------------------------*
+ * Stereo CNG prototypes
+ *----------------------------------------------------------------------------------*/
+void stereo_cng_dec_update(
+ CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
+ const Word32 ivas_total_brate /* i : IVAS total bitrate Q0*/
+);
+
+
+/*----------------------------------------------------------------------------------*
+ * Framework general prototypes
+ *----------------------------------------------------------------------------------*/
+
+void mvc2c(
+ const uint8_t x[], /* i : input vector */
+ uint8_t y[], /* o : output vector */
+ const int16_t n /* i : vector size */
+);
+
+void stereo_switching_dec(
+ CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */
+ const Word32 ivas_total_brate /* i : IVAS total bitrate Q0*/
+);
+
+
+/*! r: number of bits written */
+
+
+
+/*----------------------------------------------------------------------------------*
+ * MCT prototypes
+ *----------------------------------------------------------------------------------*/
+void ivas_mdct_core_whitening_enc_fx(
+ CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */
+ Word16 new_samples_fx[CPE_CHANNELS][L_INP], /* i : new samples */
+ Word16 old_wsp_fx[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP */
+ Word16 pitch_buf[CPE_CHANNELS][NB_SUBFR16k], /* o : floating pitch for each subframe */
+ Word32 *mdst_spectrum_long[CPE_CHANNELS], /* o : buffer for MDST spectrum */
+ Word16 tnsBits[CPE_CHANNELS][NB_DIV], /* o : buffer TNS bits */
+ Word32 *orig_spectrum_long[CPE_CHANNELS], /* o : origingal spectrum w/o whitening */
+ Word16 tnsSize[CPE_CHANNELS][NB_DIV], /* o : size of TNS */
+ Word16 p_param[CPE_CHANNELS][NB_DIV], /* o : pointer to parameter array */
+ BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */
+ const Word16 mct_on, /* i : flag mct block (1) or stereo (0) */
+ const Word16 nChannels, /* i : total number of coded channels */
+Word16 mdst_spectrum_e[CPE_CHANNELS][NB_DIV],
+Word16 orig_spectrum_e[CPE_CHANNELS][NB_DIV]
+);
+
+void splitAvailableBitsMCT_fx(
+ void **sts, /* i/o: encoder/decoder state structure */
+ const Word16 total_bits, /* i : total number of available bits */
+ const Word16 split_ratio[MCT_MAX_CHANNELS], /* i : ratio for splitting the bits Q0 */
+ const Word16 enc_dec, /* i : encoder or decoder flag */
+ const Word16 nchan /* i : number of channels */
+);
+
+void enc_prm_igf_mdct(
+ Encoder_State *st, /* i : Encoder state handle */
+ BSTR_ENC_HANDLE hBstr /* i/o: Bitstream handle */
+);
+
+/*----------------------------------------------------------------------------------*
+ * Q Metadata prototypes for DirAC and MASA
+ *----------------------------------------------------------------------------------*/
+/*! r: number of bits written */
+
+/*! r: number of bits read */
+Word16 ivas_qmetadata_dec_decode(
+ IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */
+ UWord16 *bitstream, /* i : bitstream */
+ Word16 *index, /* i/o: bitstream position */
+ const Word16 hodirac_flag /* i : flag to indicate HO-DirAC mode */
+);
+
+/*! r: number of bits read */
+Word16 ivas_qmetadata_dec_decode_hr_384_512(
+ IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: hQMetaData handle */
+ UWord16 *bitstream, /* i : bitstream */
+ Word16 *index, /* i/o: bitstream position */
+ const SPHERICAL_GRID_DATA *sph_grid16, /* i : spherical grid for deindexing */
+ const Word16 bits_sph_idx,
+ const Word16 bits_sp_coh,
+ const UWord8 ncoding_bands_config
+);
+
+/*! r: number of bits read */
+Word16 ivas_qmetadata_dec_sid_decode(
+ IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */
+ UWord16 *bitstream, /* i : bitstream */
+ Word16 *index, /* i/o: bitstream position */
+ const Word16 nchan_transport, /* i : number of transport channels */
+ Word16 *element_mode, /* o : element mode */
+ const Word16 ivas_format /* i : IVAS format */
+);
+
+
+UWord16 ivas_qmetadata_reorder_generic_fx(
+ const Word16 signed_value
+);
+
+void ivas_sba_set_cna_cng_flag(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
+);
+
+/*! r: number of ambisonics metadata channels */
+
+void ivas_sba_dirac_stereo_config(
+ STEREO_DFT_CONFIG_DATA_HANDLE hConfig /* o : DFT stereo configuration */
+);
+
+
+Word16 ivas_get_sba_dirac_stereo_flag(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
+);
+
+
+/*----------------------------------------------------------------------------------*
+ * DirAC prototypes
+ *----------------------------------------------------------------------------------*/
+
+
+ivas_error ivas_dirac_enc_reconfigure(
+ Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */
+);
+
+ivas_error ivas_mc_paramupmix_enc_open_fx(
+ Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */
+);
+
+void ivas_mc_paramupmix_enc_close_fx(
+ MC_PARAMUPMIX_ENC_HANDLE *hMCParamUpmix, /* i/o: MC Param-Upmix encoder handle */
+ const int32_t input_Fs /* i : input sampling rate */
+);
+
+ivas_error ivas_mc_paramupmix_dec_open(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
+);
+
+void ivas_mc_paramupmix_dec_close(
+ MC_PARAMUPMIX_DEC_HANDLE *hMCParamUpmix_out /* i/o: Parametric MC decoder handle */
+);
+
+void ivas_mc_paramupmix_dec_read_BS(
+ Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
+ Decoder_State *st, /* i/o: decoder state structure */
+ MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, /* i/o: decoder MC Param-Upmix handle */
+ Word16 *nb_bits /* o : number of bits written */
+);
+
+void ivas_mc_paramupmix_dec_digest_tc(
+ Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
+ const UWord8 nCldfbSlots, /* i : number of CLFBS slots in the transport channels */
+ const Word16 nSamplesForRendering /* i : number of samples provided */
+);
+
+void ivas_param_mc_set_coded_bands_fx(
+ HANDLE_IVAS_PARAM_MC_METADATA hMetadataPMC /* i/o: handle for the Parametric MC parameter coding state */
+);
+
+UWord16 ivas_param_mc_get_configuration_index_fx(
+ const MC_LS_SETUP mc_ls_setup, /* i : MC ls setup */
+ const Word32 ivas_total_brate /* i : IVAS total bitrate */
+);
+
+/*----------------------------------------------------------------------------------*
+ * SPAR prototypes
+ *----------------------------------------------------------------------------------*/
+
+/* MD module */
+
+/*! r: number of MD subframes */
+ivas_error ivas_spar_md_dec_open(
+ ivas_spar_md_dec_state_t **hMdDec_out, /* i/o: SPAR MD decoder handle */
+ const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : configuration structure */
+ const Word16 num_channels, /* i : number of internal channels */
+ const Word16 sba_order, /* i : SBA order */
+ const Word16 sid_format, /* i : SID format */
+ const Word32 last_active_ivas_total_brate /* i : IVAS last active bitrate */
+);
+
+void ivas_spar_md_dec_close(
+ ivas_spar_md_dec_state_t **hMdDec /* i/o: SPAR MD decoder handle */
+);
+
+ivas_error ivas_spar_md_dec_init(
+ ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */
+ const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : configuration structure */
+ const Word16 num_channels, /* i : number of internal channels */
+ const Word16 sba_order /* i : SBA order */
+);
+
+/* Transient detector module */
+ivas_error ivas_transient_det_open_fx(
+ ivas_trans_det_state_t **hTranDet, /* i/o: Transient detector handle */
+ const Word32 sampling_rate /* i : sampling rate */
+);
+
+void ivas_transient_det_close_fx(
+ ivas_trans_det_state_t **hTranDet /* i/o: Transient detector handle */
+);
+
+void ivas_huffman_encode_fx(
+ ivas_huffman_cfg_t *huff_cfg,
+ Word16 in,
+ Word16 *hcode,
+ Word16 *hlen
+);
+
+ivas_error ivas_huffman_decode(
+ ivas_huffman_cfg_t *huff_cfg,
+ Decoder_State *st0,
+ Word16 *dec_out
+);
+
+void ivas_arith_decode_cmplx_cell_array(
+ ivas_arith_t *pArith_re,
+ ivas_arith_t *pArith_re_diff,
+ Decoder_State *st0,
+ ivas_cell_dim_t *pCell_dims,
+ Word16 *pDo_diff, const Word16 nB,
+ Word16 *pSymbol_re,
+ Word16 *pSymbol_re_old
+);
+
+void ivas_map_prior_coeffs_quant(
+ ivas_spar_md_prev_t *pSpar_md_prior,
+ ivas_spar_md_com_cfg *pSpar_md_cfg,
+ const Word16 qsi,
+ const Word16 nB
+);
+
+void ivas_clear_band_coeff_idx(
+ ivas_band_coeffs_ind_t *pband_coeff_idx,
+ const UWord16 num_bands
+);
+
+
+/*----------------------------------------------------------------------------------*
+ * MASA prototypes
+ *----------------------------------------------------------------------------------*/
+ivas_error ivas_masa_enc_open_fx(
+ Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */
+);
+
+void ivas_masa_enc_close_fx(
+ MASA_ENCODER_HANDLE *hMasa /* i/o: MASA metadata structure */
+);
+
+int16_t ivas_qmetadata_encode_extended_gr_length_fx(
+ const UWord16 value,
+ const UWord16 alphabet_size,
+ const Word16 gr_param);
+
+void ivas_qmetadata_encode_extended_gr_fx(
+ BSTR_ENC_HANDLE hMetaData, /* i/o: q_metadata handle */
+ const UWord16 value, /* i : value to be encoded */
+ const UWord16 alphabet_size, /* i : alphabet size */
+ const Word16 gr_param); /* i : GR order */
+
+
+void ivas_set_qmetadata_maxbit_req_fx(
+ IVAS_QMETADATA_HANDLE hQMetaData, /* o : qmetadata structure where the requirement value is set */
+ const IVAS_FORMAT ivas_format /* i : IVAS format */
+);
+
+
+/*---------------------------------------------------------------------------------*
+ * Binaural FastConv Renderer Prototypes
+*-----------------------------------------------------------------------------------*/
+
+
+void ivas_binaural_hrtf_close(
+ HRTFS_FASTCONV_HANDLE *hHrtfFastConv /* i/o: decoder binaural hrtf handle */
+);
+
+/*----------------------------------------------------------------------------------*
+ * renderer prototypes
+ *----------------------------------------------------------------------------------*/
+
+void ivas_ism_renderer_close(
+ ISM_RENDERER_HANDLE *hIsmRendererData /* i/o: ISM renderer handle */
+);
+
+
+/*----------------------------------------------------------------------------------*
+ * Amplitude Panning VBAP prototypes
+ *----------------------------------------------------------------------------------*/
+
+void panning_wrap_angles(
+ const float azi_deg, /* i : azimuth in degrees for panning direction (positive left) */
+ const float ele_deg, /* i : elevation in degrees for panning direction (positive up) */
+ float *azi_wrapped, /* o : wrapped azimuth component */
+ float *ele_wrapped /* o : wrapped elevation component */
+);
+
+
+/*----------------------------------------------------------------------------------*
+ * McMASA prototypes
+ *----------------------------------------------------------------------------------*/
+
+
+ivas_error ivas_mcmasa_dec_reconfig(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */
+);
+
+void ivas_mcmasa_dmx_modify_fx(
+ const Word16 n_samples, /* i : input frame length in samples */
+ Word32 dmx_fx[][L_FRAME48k + NS2SA(48000, IVAS_FB_ENC_DELAY_NS)], /* i/o: downmix signal to be transformed into another format Qx*/
+ Word16 dmx_Q[], /* i/o : Q of the intput signal which is being transformed*/
+ const Word16 n_chnls_dmx_old, /* i : number of downmix channels in the old format Q0 */
+ const Word16 n_chnls_dmx_new /* i : number of downmix channels in the target format Q0*/
+);
+
+ivas_error ivas_mono_dmx_renderer_open(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
+);
+
+
+void ivas_mono_dmx_renderer_close(
+ MONO_DOWNMIX_RENDERER_HANDLE *hMonoDmxRenderer /* i/ i/o: Mono downmix structure */
+);
+
+
+/*----------------------------------------------------------------------------------*
+ * LFE encoder low pass filter prototypes
+ *----------------------------------------------------------------------------------*/
+
+void ivas_lfe_lpf_enc_close_fx(
+ ivas_filters_process_state_t **hLfeLpf /* i/o: LFE LPF handle */
+);
+
+
+/*----------------------------------------------------------------------------------*
+ * LFE Coding prototypes
+ *----------------------------------------------------------------------------------*/
+
+ivas_error ivas_create_lfe_enc_fx(
+ LFE_ENC_HANDLE *hLFE, /* o : IVAS LFE encoder structure */
+ const Word32 input_Fs /* i : input sampling rate */
+);
+
+void ivas_lfe_enc_close_fx(
+ LFE_ENC_HANDLE *hLFE /* i/o: LFE encoder handle */
+);
+
+void ivas_filters_init_fx(
+ ivas_filters_process_state_t *filter_state, /* i/o: filter state handle */
+ const Word32 *filt_coeff_fx, /* i : filter coefficients Q31- *filt_coeff_e */
+ const Word16 *filt_coeff_e, /* i : exponents of filter coefficients */
+ const Word16 order ) ;
+
+void ivas_filter_process_fx(
+ ivas_filters_process_state_t *filter_state, /* i/o: filter state handle */
+ Word32 *pIn_Out_fx, /* i/o: signal subject to filtering Q(q_factor) */
+ const Word16 length, /* i : filter order */
+ Word16 q_factor );
+
+/*----------------------------------------------------------------------------------*
+ * OSBA prototypes
+ *----------------------------------------------------------------------------------*/
+ivas_error ivas_osba_enc_reconfig(
+ Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
+);
+
+void ivas_set_surplus_brate_enc(
+ Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */
+#ifdef DEBUG_MODE_INFO
+ ,
+ const int16_t *nb_bits_metadata /* i : number of metadata bits */
+#endif
+);
+
+void ivas_set_surplus_brate_dec(
+ Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
+ int32_t *ism_total_brate /* i : ISM total bitrate */
+);
+
+ivas_error ivas_omasa_separate_object_renderer_open(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
+);
+
+void ivas_omasa_separate_object_renderer_close(
+ Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */
+);
+
+/*----------------------------------------------------------------------------------*
+ * Filter-bank (FB) Mixer
+ *----------------------------------------------------------------------------------*/
+
+ivas_error ivas_fb_set_cfg(
+ IVAS_FB_CFG **pFb_cfg_out, /* o : FB config. handle */
+ const Word16 ivas_format, /* i : IVAS format */
+ const Word16 num_in_chans, /* i : number of FB input channels */
+ const Word16 num_out_chans, /* i : number of FB output channels */
+ const Word16 active_w_mixing, /* i : active_w_mixing flag */
+ const Word32 sampling_Fs, /* i : sampling rate */
+ const Word16 nachan_dirac_ana /* i : number of DirAR analysis channels */
+);
+
+
+/*=============================================================================================*/
#endif
diff --git a/lib_com/ivas_qmetadata_com_fx.c b/lib_com/ivas_qmetadata_com_fx.c
index 79a585e8b121e286d4bde9ae24bed1c51660fd2c..c9ad840979d7af9f492d83747fb9abbfc4c8d99b 100644
--- a/lib_com/ivas_qmetadata_com_fx.c
+++ b/lib_com/ivas_qmetadata_com_fx.c
@@ -36,7 +36,6 @@
#include "options.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
-#include "ivas_prot.h"
#include "prot_fx.h"
#include "cnst.h"
#include "wmc_auto.h"
diff --git a/lib_com/ivas_qspherical_com_fx.c b/lib_com/ivas_qspherical_com_fx.c
index 5caa850cbbe9b7f96998ef990021fcf5c532bdff..6661026a8cde298b8d2f618156313e3cdef73a1f 100644
--- a/lib_com/ivas_qspherical_com_fx.c
+++ b/lib_com/ivas_qspherical_com_fx.c
@@ -36,7 +36,6 @@
#include
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
-#include "ivas_prot.h"
#include "prot_fx.h"
#include "cnst.h"
#include "wmc_auto.h"
diff --git a/lib_com/ivas_rom_com_fx.c b/lib_com/ivas_rom_com_fx.c
index 8ea2b91e411b204a3b8a6e239481c20f0e6cd7ee..a7a8bdcbfd6176743ab5f8571aa3cb82905bd5fc 100644
--- a/lib_com/ivas_rom_com_fx.c
+++ b/lib_com/ivas_rom_com_fx.c
@@ -1617,23 +1617,23 @@ const Word32 coherence_cb1_masa_fx[MASA_NO_CV_COH1 * MASA_MAXIMUM_CODING_SUBBAND
};
/* Multi-channel input and output setups */
-const int16_t ls_azimuth_CICP2_idx[2] = { 1, 2 };
-const int16_t ls_elevation_CICP2_idx[2] = { 0, 0 };
+const Word16 ls_azimuth_CICP2_idx[2] = { 1, 2 };
+const Word16 ls_elevation_CICP2_idx[2] = { 0, 0 };
-const int16_t ls_azimuth_CICP6_idx[5] = { 1, 2, 0, 7, 8 };
-const int16_t ls_elevation_CICP6_idx[5] = { 0, 0, 0, 0, 0 };
+const Word16 ls_azimuth_CICP6_idx[5] = { 1, 2, 0, 7, 8 };
+const Word16 ls_elevation_CICP6_idx[5] = { 0, 0, 0, 0, 0 };
-const int16_t ls_azimuth_CICP12_idx[7] = { 1, 2, 0, 7, 8, 9, 10 };
-const int16_t ls_elevation_CICP12_idx[7] = { 0, 0, 0, 0, 0, 0, 0 };
+const Word16 ls_azimuth_CICP12_idx[7] = { 1, 2, 0, 7, 8, 9, 10 };
+const Word16 ls_elevation_CICP12_idx[7] = { 0, 0, 0, 0, 0, 0, 0 };
-const int16_t ls_azimuth_CICP14_idx[7] = { 1, 2, 0, 7, 8, 1, 2 };
-const int16_t ls_elevation_CICP14_idx[7] = { 0, 0, 0, 0, 0, 3, 4 };
+const Word16 ls_azimuth_CICP14_idx[7] = { 1, 2, 0, 7, 8, 1, 2 };
+const Word16 ls_elevation_CICP14_idx[7] = { 0, 0, 0, 0, 0, 3, 4 };
-const int16_t ls_azimuth_CICP16_idx[9] = { 1, 2, 0, 7, 8, 1, 2, 7, 8 };
-const int16_t ls_elevation_CICP16_idx[9] = { 0, 0, 0, 0, 0, 3, 3, 3, 3 };
+const Word16 ls_azimuth_CICP16_idx[9] = { 1, 2, 0, 7, 8, 1, 2, 7, 8 };
+const Word16 ls_elevation_CICP16_idx[9] = { 0, 0, 0, 0, 0, 3, 3, 3, 3 };
-const int16_t ls_azimuth_CICP19_idx[11] = { 1, 2, 0, 9, 10, 5, 6, 1, 2, 9, 10 };
-const int16_t ls_elevation_CICP19_idx[11] = { 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3 };
+const Word16 ls_azimuth_CICP19_idx[11] = { 1, 2, 0, 9, 10, 5, 6, 1, 2, 9, 10 };
+const Word16 ls_elevation_CICP19_idx[11] = { 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3 };
const Word32 shoebox_sin_cos_tbl_fx[11][2] = { { 0, 1073741824 }, // 0
{ 536870912, 929887680 },
diff --git a/lib_com/ivas_rotation_com.c b/lib_com/ivas_rotation_com.c
index d33d3119da710d5a3d32081b2ae130db9081277c..6e31f96d5b13bed79fd99209745e40ee8752b95b 100644
--- a/lib_com/ivas_rotation_com.c
+++ b/lib_com/ivas_rotation_com.c
@@ -37,7 +37,6 @@
#include
#include "cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#ifdef DEBUGGING
#include "debug.h"
diff --git a/lib_com/ivas_sba_config_fx.c b/lib_com/ivas_sba_config_fx.c
index 38785956c36f90dd1d6435f7a443217eee8284e7..b3a0806d4af63519605efa1c7ff5da40ba095d2e 100644
--- a/lib_com/ivas_sba_config_fx.c
+++ b/lib_com/ivas_sba_config_fx.c
@@ -38,7 +38,6 @@
#include "ivas_cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_stat_com.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
diff --git a/lib_com/ivas_sns_com_fx.c b/lib_com/ivas_sns_com_fx.c
index f35de8eb0037c6c2cc6bb174c0492e7d6fe528e6..fa64b0092d6de30d78c2199930ea32e99629cb3a 100644
--- a/lib_com/ivas_sns_com_fx.c
+++ b/lib_com/ivas_sns_com_fx.c
@@ -34,7 +34,6 @@
#include "options.h"
#include "cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
#include
@@ -61,12 +60,11 @@ void sns_compute_scf_fx(
Word64 sum;
Word32 L_tmp;
const Word32 *pow_tilt;
+ Word16 q_shift, q_out, f_tmp;
+ Word16 bw, inv_bw, exp;
const UWord8 nBands = pPsychParams->nBands;
move16();
const UWord8 *bandLengths = pPsychParams->bandLengths;
- Word8 bw = 0;
- move16();
- Word16 q_shift;
const Word16 w_0 = 2730; // (1.0f / 12.0f) in Q15
move16();
@@ -88,91 +86,83 @@ void sns_compute_scf_fx(
IF( bandLengths == NULL )
{
- bw = (Word8) shr( L_frame, 6 );
+ bw = shr( L_frame, 6 );
move16();
+
+ exp = norm_s( bw );
+ inv_bw = div_s( ONE_IN_Q14, shl( bw, exp ) ); // Q:15+14-exp = 29-exp
+ inv_bw = shl( inv_bw, sub( exp, 14 ) ); // Q15
+
/* Energy per band */
k = 0;
move16();
FOR( i = 0; i < nBands; ++i )
{
- x_64[i] = 0;
+ sum = 0;
move64();
FOR( n = 0; n < bw; ( ++n, ++k ) )
{
- x_64[i] = W_add( x_64[i], W_deposit32_l( spectrum[k] ) ); // Q_in
- move64();
+ /* x[i] += spectrum[k];
+ inv_bw is for x[i] /= bw; */
+ sum = W_mac_32_16( sum, spectrum[k], inv_bw ); // Q_in+15+1
}
+ x_64[i] = sum; // Q_in+16
+ move64();
}
}
ELSE
{
/* Energy per band */
k = 0;
- move32();
+ move16();
FOR( i = 0; i < nBands; ++i )
{
- x_64[i] = 0;
+ exp = norm_s( bandLengths[i] );
+ inv_bw = div_s( ONE_IN_Q14, shl( bandLengths[i], exp ) ); // Q:15+14-exp
+ inv_bw = shl( inv_bw, sub( exp, 14 ) ); // Q15
+
+ sum = 0;
move64();
FOR( n = 0; n < bandLengths[i]; ( ++n, ++k ) )
{
- x_64[i] = W_add( x_64[i], W_deposit32_l( spectrum[k] ) ); // Q_in
- move64();
+ /* x[i] += spectrum[k];
+ inv_bw is for x[i] /= bandLengths[i]; */
+ sum = W_mac_32_16( sum, spectrum[k], inv_bw ); // Q_in+15+1
}
+ x_64[i] = sum; // Q_in+16
+ move64();
}
}
/* Move accumulated values to 32-bit */
- q_shift = 0;
- move16();
- IF( x_64[0] != 0 )
+ q_shift = W_norm_arr( x_64, nBands ); // W_norm_arr return 63 when all the values of the input buffer are zeroes
+ IF( EQ_16( q_shift, 63 ) )
{
- q_shift = W_norm( x_64[0] );
- }
- FOR( i = 1; i < nBands; ++i )
- {
- IF( x_64[i] != 0 )
- {
- q_shift = s_min( q_shift, W_norm( x_64[i] ) );
- }
- }
- FOR( i = 0; i < nBands; ++i )
- {
- x[i] = W_extract_l( W_shl( x_64[i], sub( q_shift, 32 ) ) ); // Q_in + (q_shift - 32)
- }
+ /* If all the values of x_64 are zeros, the scale factor (scf) values will be calculated as zeroes as per the below operations.
+ To avoid extra computations in such a case, set scf values as zeroes and return. */
- IF( bandLengths == NULL )
- {
- Word16 inv_bw;
- bw = (Word8) shr( L_frame, 6 );
- move16();
- inv_bw = div_l( ONE_IN_Q16 /*1 Q16*/, bw ); // Q15
- FOR( i = 0; i < nBands; ++i )
- {
- x[i] = Mpy_32_16_1( x[i], inv_bw ); // Q_in + (q_shift - 32)
- move32();
- }
+ set_zero_fx( scf, SNS_NPTS );
+
+ return;
}
- ELSE
+
+ FOR( i = 0; i < nBands; ++i )
{
- FOR( i = 0; i < nBands; ++i )
- {
- Word16 inv_bw = div_l( ONE_IN_Q16 /*1 Q16*/, bandLengths[i] ); // Q15
- x[i] = Mpy_32_16_1( x[i], inv_bw ); // Q_in + (q_shift - 32)
- move32();
- }
+ x[i] = W_extract_h( W_shl( x_64[i], q_shift ) ); // Q: Q_in+16+q_shift-32 = Q_in+q_shift-16
+ move32();
}
/* Smoothing */
- xs[0] = L_add( Mpy_32_16_1( x[0], 24576 /* 0.75 in Q15 */ ), Mpy_32_16_1( x[1], 8192 /* 0.25 in Q15 */ ) ); // Q_in + (q_shift - 32)
+ xs[0] = Madd_32_16( Mpy_32_16_1( x[0], 24576 /* 0.75 in Q15 */ ), x[1], 8192 /* 0.25 in Q15 */ ); // Q_in+q_shift-16
move32();
FOR( i = 1; i < FDNS_NPTS - 1; i++ )
{
- xs[i] = L_add( L_add( Mpy_32_16_1( x[i], 16384 /* 0.5 in Q15 */ ), Mpy_32_16_1( x[i - 1], 8192 /* 0.25 in Q15 */ ) ), Mpy_32_16_1( x[i + 1], 8192 /* 0.25 in Q15 */ ) ); // Q_in + (q_shift - 32)
+ xs[i] = Madd_32_16( Madd_32_16( Mpy_32_16_1( x[i], 16384 /* 0.5 in Q15 */ ), x[i - 1], 8192 /* 0.25 in Q15 */ ), x[i + 1], 8192 /* 0.25 in Q15 */ ); // Q_in+q_shift-16
move32();
}
- xs[FDNS_NPTS - 1] = L_add( Mpy_32_16_1( x[FDNS_NPTS - 1], 24576 /* 0.75 in Q15 */ ), Mpy_32_16_1( x[FDNS_NPTS - 2], 8192 /* 0.25 in Q15 */ ) ); // Q_in + (q_shift - 32)
+ xs[FDNS_NPTS - 1] = Madd_32_16( Mpy_32_16_1( x[FDNS_NPTS - 1], 24576 /* 0.75 in Q15 */ ), x[FDNS_NPTS - 2], 8192 /* 0.25 in Q15 */ ); // Q_in+q_shift-16
move32();
/* Pre-emphasis */
@@ -194,86 +184,83 @@ void sns_compute_scf_fx(
FOR( i = 0; i < FDNS_NPTS; i++ )
{
- xs[i] = Mpy_32_32( xs[i], pow_tilt[i] ); // Q_in + (q_shift - 32)
+ xs[i] = Mpy_32_32( xs[i], pow_tilt[i] ); // Q_in+q_shift-16+23-31 = Q_in+q_shift-24
move32();
}
/* Noise floor at -40dB */
sum = 0;
move64();
- FOR( Word16 ind = 0; ind < FDNS_NPTS; ind++ )
+ FOR( i = 0; i < FDNS_NPTS; i++ )
{
- sum = W_add( sum, W_deposit32_l( xs[ind] ) ); // Q_in + (q_shift - 32)
+ sum = W_mac_32_16( sum, xs[i], 1 ); // Q_in+q_shift-24+1
}
- mean = W_extract_l( W_shr( sum, 6 ) ); // Q_in + (q_shift - 32)
- nf = Mpy_32_32( mean, 214748 /* powf( 10.0f, -4.0f ) in Q31 */ ); // Q_in + (q_shift - 32)
- nf = L_max( nf, 0 /* powf( 2.0f, -32.0f ) in Q31 */ ); // Q_in + (q_shift - 32)
+ q_out = sub( add( Q_in, q_shift ), 24 );
+
+ /* mean = sum / FDNS_NPTS;
+ -Q6 is for division with FDNS_NPTS and -Q1 is to reduce Q by one */
+ mean = W_shl_sat_l( sum, -Q7 ); // q_out
+ nf = Mpy_32_32( mean, 214748 /* powf( 10.0f, -4.0f ) in Q31 */ ); // q_out
+ nf = L_max( nf, L_shl( 256, sub( q_out, 40 ) ) /* powf( 2.0f, -32.0f ) in Q40 */ ); // q_out
FOR( i = 0; i < FDNS_NPTS; i++ )
{
- if ( LT_32( xs[i], nf ) )
- {
- xs[i] = nf; // Q_in + (q_shift - 32)
- move32();
- }
+ xs[i] = L_max( xs[i], nf ); // q_out
+ move32();
}
/* Log-domain */
FOR( i = 0; i < FDNS_NPTS; i++ )
{
- Word16 e_tmp = norm_l( xs[i] );
- Word16 f_tmp = Log2_norm_lc( L_shl( xs[i], e_tmp ) ); /*Q16*/
- e_tmp = sub( sub( 34, e_tmp ), Q_in );
- /* Note: Mpy_32_16 is used temporarily for this computation, It needs to be replaced with appropriate BASOP. */
- xl[i] = Mpy_32_16( e_tmp, f_tmp, 16384 ); /* Q16 */
+ /* xl[i] = logf( xs[i] ) * scale_log;
+ scale_log = INV_LOG_2 * 0.5f; */
+
+ exp = norm_l( xs[i] );
+ f_tmp = Log2_norm_lc( L_shl( xs[i], exp ) ); // Q15
+ exp = sub( sub( 30, exp ), q_out );
+ L_tmp = L_mac( L_deposit_h( exp ), f_tmp, 1 ); // Q16
+ xl[i] = L_shr( L_tmp, 1 ); // Q16
move32();
}
/* Downsampling */
- L_tmp = L_deposit_l( 0 );
- L_tmp = Madd_32_16( L_tmp, xl[0], w_0 ); // Q16
- L_tmp = Madd_32_16( L_tmp, xl[0], w_1 ); // Q16
- L_tmp = Madd_32_16( L_tmp, xl[1], w_2 ); // Q16
- L_tmp = Madd_32_16( L_tmp, xl[2], w_3 ); // Q16
- L_tmp = Madd_32_16( L_tmp, xl[3], w_4 ); // Q16
- L_tmp = Madd_32_16( L_tmp, xl[4], w_5 ); // Q16
- xl4[0] = L_tmp; // Q16
- move32();
+ L_tmp = Madd_32_16( Mpy_32_16_1( xl[0], w_0 ), xl[0], w_1 ); // Q16
+ L_tmp = Madd_32_16( L_tmp, xl[1], w_2 ); // Q16
+ L_tmp = Madd_32_16( L_tmp, xl[2], w_3 ); // Q16
+ L_tmp = Madd_32_16( L_tmp, xl[3], w_4 ); // Q16
+ xl4[0] = Madd_32_16( L_tmp, xl[4], w_5 ); // Q16
+
FOR( n = 1; n < SNS_NPTS - 1; n++ )
{
- Word16 n4 = shl( n, 2 );
-
- L_tmp = L_deposit_l( 0 );
- L_tmp = Madd_32_16( L_tmp, xl[n4 - 1], w_0 ); // Q16
- L_tmp = Madd_32_16( L_tmp, xl[n4], w_1 ); // Q16
- L_tmp = Madd_32_16( L_tmp, xl[n4 + 1], w_2 ); // Q16
- L_tmp = Madd_32_16( L_tmp, xl[n4 + 2], w_3 ); // Q16
- L_tmp = Madd_32_16( L_tmp, xl[n4 + 3], w_4 ); // Q16
- L_tmp = Madd_32_16( L_tmp, xl[n4 + 4], w_5 ); // Q16
- xl4[n] = L_tmp; // Q16
+ L_tmp = Mpy_32_16_1( xl[4 * n - 1], w_0 ); // Q16
+ L_tmp = Madd_32_16( L_tmp, xl[4 * n], w_1 ); // Q16
+ L_tmp = Madd_32_16( L_tmp, xl[4 * n + 1], w_2 ); // Q16
+ L_tmp = Madd_32_16( L_tmp, xl[4 * n + 2], w_3 ); // Q16
+ L_tmp = Madd_32_16( L_tmp, xl[4 * n + 3], w_4 ); // Q16
+ xl4[n] = Madd_32_16( L_tmp, xl[4 * n + 4], w_5 ); // Q16
move32();
}
- L_tmp = L_deposit_l( 0 );
- L_tmp = Madd_32_16( L_tmp, xl[FDNS_NPTS - 5], w_0 ); // Q16
- L_tmp = Madd_32_16( L_tmp, xl[FDNS_NPTS - 4], w_1 ); // Q16
- L_tmp = Madd_32_16( L_tmp, xl[FDNS_NPTS - 3], w_2 ); // Q16
- L_tmp = Madd_32_16( L_tmp, xl[FDNS_NPTS - 2], w_3 ); // Q16
- L_tmp = Madd_32_16( L_tmp, xl[FDNS_NPTS - 1], w_4 ); // Q16
- L_tmp = Madd_32_16( L_tmp, xl[FDNS_NPTS - 1], w_5 ); // Q16
- xl4[SNS_NPTS - 1] = L_tmp; // Q16
+ L_tmp = Mpy_32_16_1( xl[FDNS_NPTS - 5], w_0 ); // Q16
+ L_tmp = Madd_32_16( L_tmp, xl[FDNS_NPTS - 4], w_1 ); // Q16
+ L_tmp = Madd_32_16( L_tmp, xl[FDNS_NPTS - 3], w_2 ); // Q16
+ L_tmp = Madd_32_16( L_tmp, xl[FDNS_NPTS - 2], w_3 ); // Q16
+ L_tmp = Madd_32_16( L_tmp, xl[FDNS_NPTS - 1], w_4 ); // Q16
+ xl4[SNS_NPTS - 1] = Madd_32_16( L_tmp, xl[FDNS_NPTS - 1], w_5 ); // Q16
move32();
/* Remove mean and scaling */
sum = 0;
move64();
- FOR( Word16 ind = 0; ind < SNS_NPTS; ind++ )
+ FOR( i = 0; i < SNS_NPTS; i++ )
{
- sum = W_add( sum, W_deposit32_l( xl4[ind] ) ); // Q16
+ sum = W_mac_32_16( sum, xl4[i], 1 ); // Q16+1
}
- mean = W_extract_l( W_shr( sum, 4 ) ); // Q16
+ /* mean = sum / SNS_NPTS;
+ -Q4 is for division with SNS_NPTS and -Q1 is to reduce Q by one */
+ mean = W_shl_sat_l( sum, -Q5 ); // Q16
FOR( i = 0; i < SNS_NPTS; i++ )
{
diff --git a/lib_com/ivas_spar_com_fx.c b/lib_com/ivas_spar_com_fx.c
index 6c80c189894f17f7dcdfa66aac5faacf74b05e84..929eaa2c5cd8b94aa689decdc59f27ce2110b67b 100644
--- a/lib_com/ivas_spar_com_fx.c
+++ b/lib_com/ivas_spar_com_fx.c
@@ -36,7 +36,6 @@
#include "basop_util.h"
#include "ivas_stat_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
#include "cnst.h"
@@ -3807,7 +3806,7 @@ void ivas_compute_spar_params_fx(
{
Word32 pred_coeffs_re[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS];
- Word16 b, i, ndm;
+ Word16 b, i, ndm, j;
Word16 q_pred_coeffs;
ivas_get_pred_coeffs_fx( cov_real, pred_coeffs_re, dm_fv_re, num_ch, start_band, end_band, active_w, active_w_vlbr, dtx_vad, from_dirac, dyn_active_w_flag, hSparMd->res_ind, &q_pred_coeffs, q_dm_fv_re );
@@ -3869,7 +3868,7 @@ void ivas_compute_spar_params_fx(
#ifdef MSAN_FIX
FOR( i = 0; i < ( num_ch - ndm ); i++ )
{
- FOR( Word16 j = 0; j < sub( ndm, 1 ); j++ )
+ FOR( j = 0; j < sub( ndm, 1 ); j++ )
{
hSparMd->band_coeffs[b + ( i_ts * IVAS_MAX_NUM_BANDS )].C_re_fx[i][j] = L_shr( hSparMd->band_coeffs[b + ( i_ts * IVAS_MAX_NUM_BANDS )].C_re_fx[i][j], sub( q_tmp, 22 ) ); // q22
move32();
@@ -3878,7 +3877,7 @@ void ivas_compute_spar_params_fx(
#else
for ( i = 0; i < IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS; i++ )
{
- for ( int j = 0; j < IVAS_SPAR_MAX_DMX_CHS - 1; j++ )
+ for ( j = 0; j < IVAS_SPAR_MAX_DMX_CHS - 1; j++ )
{
hSparMd->band_coeffs[b + i_ts * IVAS_MAX_NUM_BANDS].C_re_fx[i][j] = L_shr( hSparMd->band_coeffs[b + i_ts * IVAS_MAX_NUM_BANDS].C_re_fx[i][j], sub( q_tmp, 22 ) );
}
@@ -3891,7 +3890,7 @@ void ivas_compute_spar_params_fx(
q_tmp = hSparMd->band_coeffs[b + ( i_ts * IVAS_MAX_NUM_BANDS )].q_P_re_fx;
move16();
- FOR( Word16 j = 0; j < sub( IVAS_SPAR_MAX_CH, 1 ); j++ )
+ FOR( j = 0; j < sub( IVAS_SPAR_MAX_CH, 1 ); j++ )
{
hSparMd->band_coeffs[b + ( i_ts * IVAS_MAX_NUM_BANDS )].P_re_fx[j] = L_shr( hSparMd->band_coeffs[b + ( i_ts * IVAS_MAX_NUM_BANDS )].P_re_fx[j], sub( q_tmp, 22 ) ); // q22
move32();
diff --git a/lib_com/ivas_spar_com_quant_util_fx.c b/lib_com/ivas_spar_com_quant_util_fx.c
index 8292de5c101c0517ec8239feeac508dc06e78bbc..cfd03a3b3e68d51d66045229266e9f412a564231 100644
--- a/lib_com/ivas_spar_com_quant_util_fx.c
+++ b/lib_com/ivas_spar_com_quant_util_fx.c
@@ -34,7 +34,6 @@
#include "options.h"
#include "math.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include
#include "wmc_auto.h"
diff --git a/lib_com/ivas_stat_com.h b/lib_com/ivas_stat_com.h
index 249d1e96384ef5bcf140180c09ce1eedf067eb05..fb11d3934486f3c09af3e8e5482ec78c90f6bc7a 100644
--- a/lib_com/ivas_stat_com.h
+++ b/lib_com/ivas_stat_com.h
@@ -46,18 +46,18 @@
typedef struct
{
- int16_t last_angle1_idx; /* last frame index of coded azimuth/yaw */
- int16_t angle1_diff_cnt; /* FEC counter of consecutive differentially azimuth/yaw coded frames */
- int16_t last_angle2_idx; /* last frame index of coded elevation/pitch */
- int16_t angle2_diff_cnt; /* FEC counter of consecutive differentially elevation/pitch coded frames */
+ Word16 last_angle1_idx; /* last frame index of coded azimuth/yaw */
+ Word16 angle1_diff_cnt; /* FEC counter of consecutive differentially azimuth/yaw coded frames */
+ Word16 last_angle2_idx; /* last frame index of coded elevation/pitch */
+ Word16 angle2_diff_cnt; /* FEC counter of consecutive differentially elevation/pitch coded frames */
} ISM_METADATA_ANGLE, *ISM_METADATA_ANGLE_HANDLE;
/* ISM metadata handle (storage for one frame of read ISM metadata) */
typedef struct
{
- int16_t ism_metadata_flag; /* flag whether metadata are coded in particular frame of particular object */
- int16_t last_ism_metadata_flag; /* last frame ism_metadata_flag */
+ Word16 ism_metadata_flag; /* flag whether metadata are coded in particular frame of particular object */
+ Word16 last_ism_metadata_flag; /* last frame ism_metadata_flag */
Word32 azimuth_fx; /* azimuth value read from the input metadata file */ /* Q22 */
Word32 elevation_fx; /* elevation value read from the input metadata file */ /* Q22 */
@@ -65,25 +65,25 @@ typedef struct
Word32 yaw_fx; /* yaw value read from the input metadata file */ /* Q22 */
Word32 pitch_fx; /* pitch value read from the input metadata file */ /* Q22 */
- int16_t non_diegetic_flag; /* Non-diegetic (non-headtracked) object flag */
+ Word16 non_diegetic_flag; /* Non-diegetic (non-headtracked) object flag */
ISM_METADATA_ANGLE position_angle; /* Angle structs for azimuth and elevation */
ISM_METADATA_ANGLE orientation_angle; /* Angle structs for yaw and pitch */
- int16_t last_radius_idx; /* last frame index of coded radius */
- int16_t radius_diff_cnt; /* FEC counter of consecutive differentially radius coded frames */
+ Word16 last_radius_idx; /* last frame index of coded radius */
+ Word16 radius_diff_cnt; /* FEC counter of consecutive differentially radius coded frames */
Word32 last_azimuth_fx; /* MD smoothing in DTX- last Q azimuth value */ /* Q22 */
Word32 last_elevation_fx; /* MD smoothing in DTX - last Q elevation value */ /* Q22 */
Word32 last_true_azimuth_fx; /* MD smoothing in DTX- last true Q azimuth value */ /* Q22 */
Word32 last_true_elevation_fx; /* MD smoothing in DTX- last true Q elevation value */ /* Q22 */
- int16_t ism_md_fec_cnt_enc; /* counter of continuous frames where MD are not transmitted */
- int16_t ism_md_inc_diff_cnt; /* counter of continuous frames where MD are transmitted in inactive segments when MD significantly changes */
- Word16 last_true_radius_fx; /* last true Q radius value */
+ Word16 ism_md_fec_cnt_enc; /* counter of continuous frames where MD are not transmitted */
+ Word16 ism_md_inc_diff_cnt; /* counter of continuous frames where MD are transmitted in inactive segments when MD significantly changes */
+ Word16 last_true_radius_fx; /* last true Q radius value */
- int16_t ism_imp; /* ISM importance flag */
- int16_t ism_md_null_flag;
- int16_t ism_md_lowrate_flag;
+ Word16 ism_imp; /* ISM importance flag */
+ Word16 ism_md_null_flag;
+ Word16 ism_md_lowrate_flag;
Word32 q_azimuth_old_fx;
Word32 q_elevation_old_fx;
@@ -96,15 +96,15 @@ typedef struct
typedef struct stereo_dft_config_data_struct
{
- int16_t dmx_active;
- int16_t band_res;
- int16_t prm_res; /* Send prm every # DFT frames */
- int16_t res_pred_mode; /* mode : from 0 (off) to 1 (on) */
- int16_t res_cod_mode; /* mode : from 0 (off) to 3 */
- int16_t hybrid_itd_flag;
- int16_t ada_wb_res_cod_mode; /* res_cod_mode for adaptive wide band residual coding */
+ Word16 dmx_active;
+ Word16 band_res;
+ Word16 prm_res; /* Send prm every # DFT frames */
+ Word16 res_pred_mode; /* mode : from 0 (off) to 1 (on) */
+ Word16 res_cod_mode; /* mode : from 0 (off) to 3 */
+ Word16 hybrid_itd_flag;
+ Word16 ada_wb_res_cod_mode; /* res_cod_mode for adaptive wide band residual coding */
- int16_t force_mono_transmission;
+ Word16 force_mono_transmission;
} STEREO_DFT_CONFIG_DATA, *STEREO_DFT_CONFIG_DATA_HANDLE;
@@ -115,20 +115,20 @@ typedef struct stereo_dft_config_data_struct
typedef struct
{
- uint8_t const bandLengthsTCX20[SMDCT_MAX_STEREO_BANDS_TCX20]; /* Length of a band in number of bins. Range is 4..160 */
- const int16_t bdnCnt_TCX20[4]; /* uppermost band for FB,SWB,WB,NB */
- uint8_t const bandLengthsTCX10[SMDCT_MAX_STEREO_BANDS_TCX10]; /* Length of a band in number of bins. Range is 2..80, always divisible by 2 */
- const int16_t bndCnt_TCX10[4]; /* uppermost band for FB,SWB,WB,NB */
+ UWord8 const bandLengthsTCX20[SMDCT_MAX_STEREO_BANDS_TCX20]; /* Length of a band in number of bins. Range is 4..160 */
+ const Word16 bdnCnt_TCX20[4]; /* uppermost band for FB,SWB,WB,NB */
+ UWord8 const bandLengthsTCX10[SMDCT_MAX_STEREO_BANDS_TCX10]; /* Length of a band in number of bins. Range is 2..80, always divisible by 2 */
+ const Word16 bndCnt_TCX10[4]; /* uppermost band for FB,SWB,WB,NB */
} MDCTStereoBands_config;
/* MDCT stereo frequency band structure */
typedef struct stereo_mdct_dec_band_parameters_struct
{
- int16_t sfbOffset[MAX_SFB + 1]; /* stereo frequency band start offsets */
- int16_t sfbCnt; /* number of stereo frequency bands */
- int16_t nBandsStereoCore; /* number of stereo frequency bands in the core */
- int16_t sfbIgfStart; /*index for first IGF band*/
+ Word16 sfbOffset[MAX_SFB + 1]; /* stereo frequency band start offsets */
+ Word16 sfbCnt; /* number of stereo frequency bands */
+ Word16 nBandsStereoCore; /* number of stereo frequency bands in the core */
+ Word16 sfbIgfStart; /*index for first IGF band*/
} STEREO_MDCT_BAND_PARAMETERS;
@@ -139,9 +139,9 @@ typedef struct stereo_mdct_dec_band_parameters_struct
typedef struct
{
- int16_t config_index;
- int16_t encoding_active; /* internal state specifying if actual encoding is active or only length evaluation is active */
- int32_t bit_count_estimate; /* uses 22Q10 fixed-point representation */
+ Word16 config_index;
+ Word16 encoding_active; /* internal state specifying if actual encoding is active or only length evaluation is active */
+ Word32 bit_count_estimate; /* uses 22Q10 fixed-point representation */
void *ac_handle;
} ECSQ_instance;
@@ -153,9 +153,9 @@ typedef struct
typedef struct ivas_dirac_config_data_struct
{
- int16_t enc_param_start_band;
- int16_t dec_param_estim;
- int16_t nbands;
+ Word16 enc_param_start_band;
+ Word16 dec_param_estim;
+ Word16 nbands;
} DIRAC_CONFIG_DATA, *DIRAC_CONFIG_DATA_HANDLE;
@@ -180,9 +180,9 @@ typedef struct ivas_band_coeffs_t
typedef struct ivas_band_coeffs_ind_t
{
- int16_t pred_index_re[IVAS_SPAR_MAX_CH - 1];
- int16_t drct_index_re[IVAS_SPAR_MAX_C_COEFF];
- int16_t decd_index_re[IVAS_SPAR_MAX_CH - 1];
+ Word16 pred_index_re[IVAS_SPAR_MAX_CH - 1];
+ Word16 drct_index_re[IVAS_SPAR_MAX_C_COEFF];
+ Word16 decd_index_re[IVAS_SPAR_MAX_CH - 1];
} ivas_band_coeffs_ind_t;
@@ -192,7 +192,7 @@ typedef struct ivas_spar_md_t
ivas_band_coeffs_ind_t band_coeffs_idx[IVAS_MAX_NUM_BANDS];
Word16 num_bands;
Word32 min_max_fx[2]; /*q28*/
- int16_t dtx_vad;
+ Word16 dtx_vad;
Word32 en_ratio_slow_fx[IVAS_MAX_NUM_BANDS];
Word32 ref_pow_slow_fx[IVAS_MAX_NUM_BANDS];
Word16 res_ind;
@@ -210,7 +210,7 @@ typedef struct ivas_quant_coeffs_t
{
Word32 min_fx; /* Q28 */
Word32 max_fx; /* Q28 */
- int16_t q_levels[2];
+ Word16 q_levels[2];
} ivas_quant_coeffs_t;
typedef struct ivas_quant_strat_t
@@ -224,23 +224,23 @@ typedef struct ivas_quant_strat_t
typedef struct ivas_spar_md_com_cfg
{
- int16_t max_freq_per_chan[IVAS_SPAR_MAX_CH];
- int16_t num_dmx_chans_per_band[IVAS_MAX_NUM_BANDS];
- int16_t num_decorr_per_band[IVAS_MAX_NUM_BANDS];
- int16_t active_w;
- int16_t remix_unmix_order;
+ Word16 max_freq_per_chan[IVAS_SPAR_MAX_CH];
+ Word16 num_dmx_chans_per_band[IVAS_MAX_NUM_BANDS];
+ Word16 num_decorr_per_band[IVAS_MAX_NUM_BANDS];
+ Word16 active_w;
+ Word16 remix_unmix_order;
ivas_quant_strat_t quant_strat[MAX_QUANT_STRATS];
- int16_t quant_strat_bits;
- int16_t nchan_transport;
- int16_t num_quant_strats;
- int16_t prior_strat;
- int16_t tgt_bits_per_blk;
- int16_t max_bits_per_blk;
- int16_t prev_quant_idx;
- int16_t agc_bits_ch_idx;
- int16_t planarCP;
- int16_t num_umx_chs;
- int16_t max_md_bits_spar;
+ Word16 quant_strat_bits;
+ Word16 nchan_transport;
+ Word16 num_quant_strats;
+ Word16 prior_strat;
+ Word16 tgt_bits_per_blk;
+ Word16 max_bits_per_blk;
+ Word16 prev_quant_idx;
+ Word16 agc_bits_ch_idx;
+ Word16 planarCP;
+ Word16 num_umx_chs;
+ Word16 max_md_bits_spar;
} ivas_spar_md_com_cfg;
@@ -248,26 +248,26 @@ typedef struct ivas_spar_md_com_cfg
/* arithmetic coder structures */
typedef struct ivas_cell_dim_t
{
- int16_t dim1;
- int16_t dim2;
+ Word16 dim1;
+ Word16 dim2;
} ivas_cell_dim_t;
typedef struct ivas_freq_models_t
{
- int16_t freq_model[IVAS_NUM_PROB_MODELS][IVAS_MAX_QUANT_LEVELS];
- int16_t diff_freq_model[IVAS_NUM_PROB_MODELS][IVAS_MAX_QUANT_LEVELS];
- int16_t vals[IVAS_MAX_QUANT_LEVELS];
- int16_t diff_vals[IVAS_MAX_QUANT_LEVELS];
- int16_t num_models;
- int16_t diff_num_models;
+ Word16 freq_model[IVAS_NUM_PROB_MODELS][IVAS_MAX_QUANT_LEVELS];
+ Word16 diff_freq_model[IVAS_NUM_PROB_MODELS][IVAS_MAX_QUANT_LEVELS];
+ Word16 vals[IVAS_MAX_QUANT_LEVELS];
+ Word16 diff_vals[IVAS_MAX_QUANT_LEVELS];
+ Word16 num_models;
+ Word16 diff_num_models;
} ivas_freq_models_t;
typedef struct ivas_huff_models_t
{
- int16_t code_book[IVAS_MAX_QUANT_LEVELS][3];
- int16_t diff_code_book[IVAS_MAX_QUANT_LEVELS][3];
+ Word16 code_book[IVAS_MAX_QUANT_LEVELS][3];
+ Word16 diff_code_book[IVAS_MAX_QUANT_LEVELS][3];
} ivas_huff_models_t;
@@ -275,22 +275,22 @@ typedef struct ivas_huff_models_t
/* Entropy coder structures */
typedef struct ivas_huffman_cfg_t
{
- const int16_t *codebook;
- int16_t min_len;
- int16_t max_len;
- int16_t sym_len;
+ const Word16 *codebook;
+ Word16 min_len;
+ Word16 max_len;
+ Word16 sym_len;
} ivas_huffman_cfg_t;
typedef struct ivas_arith_t
{
- int16_t dyn_model_bits;
- const int16_t *pFreq_model;
- const int16_t *pAlt_freq_models[IVAS_NUM_PROB_MODELS];
- const int16_t *vals;
- int16_t cum_freq[IVAS_NUM_PROB_MODELS][IVAS_MAX_QUANT_LEVELS];
- int16_t range;
- int16_t num_models;
+ Word16 dyn_model_bits;
+ const Word16 *pFreq_model;
+ const Word16 *pAlt_freq_models[IVAS_NUM_PROB_MODELS];
+ const Word16 *vals;
+ Word16 cum_freq[IVAS_NUM_PROB_MODELS][IVAS_MAX_QUANT_LEVELS];
+ Word16 range;
+ Word16 num_models;
Word32 saved_dist_arr[IVAS_NUM_PROB_MODELS][IVAS_MAX_QUANT_LEVELS]; /* Q15 */
} ivas_arith_t;
@@ -338,18 +338,18 @@ typedef struct ivas_cov_smooth_state_t
Word32 *pPrior_cov_real_fx[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH];
Word16 *q_cov_real_per_band[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH];
Word16 *q_prior_cov_real_per_band[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH];
- int16_t prior_bank_idx;
+ Word16 prior_bank_idx;
Word32 *pSmoothing_factor_fx; /* Q31 */
- int16_t num_bins;
+ Word16 num_bins;
} ivas_cov_smooth_state_t;
typedef struct ivas_cov_smooth_cfg_t
{
Word32 max_update_rate_fx; /* Q31 */
- int16_t min_pool_size;
- int16_t max_bands;
- int16_t num_bins;
+ Word16 min_pool_size;
+ Word16 max_bands;
+ Word16 num_bins;
} ivas_cov_smooth_cfg_t;
@@ -357,20 +357,20 @@ typedef struct ivas_cov_smooth_cfg_t
/* SPAR bitrate constant table structure */
typedef struct ivas_spar_br_table_t
{
- int32_t ivas_total_brate;
- int16_t isPlanar;
- int16_t sba_order;
- int16_t bwidth;
- int16_t fpcs;
- int16_t nchan_transport;
+ Word32 ivas_total_brate;
+ Word16 isPlanar;
+ Word16 sba_order;
+ Word16 bwidth;
+ Word16 fpcs;
+ Word16 nchan_transport;
ivas_spar_pmx_strings_t dmx_str;
- int16_t active_w;
- int16_t tmode;
- int32_t core_brs[FOA_CHANNELS][3];
- int16_t q_lvls[MAX_QUANT_STRATS][NUM_MD_Q_COEFS_SET];
- int16_t td_ducking;
- int16_t agc_bits_ch_idx; /* 0-3, Indicates core-coder channel index from which AGC bits have been taken from*/
- int16_t usePlanarCoeff;
+ Word16 active_w;
+ Word16 tmode;
+ Word32 core_brs[FOA_CHANNELS][3];
+ Word16 q_lvls[MAX_QUANT_STRATS][NUM_MD_Q_COEFS_SET];
+ Word16 td_ducking;
+ Word16 agc_bits_ch_idx; /* 0-3, Indicates core-coder channel index from which AGC bits have been taken from*/
+ Word16 usePlanarCoeff;
} ivas_spar_br_table_t;
@@ -419,7 +419,7 @@ typedef struct ivas_masa_common_spatial_meta_struct
typedef struct ivas_omasa_meta_struct
{
- uint8_t num_dirs;
+ UWord8 num_dirs;
MASA_DIRECTIONAL_SPATIAL_META directional_meta[MASA_MAXIMUM_DIRECTIONS];
MASA_COMMON_SPATIAL_META common_meta;
@@ -435,16 +435,16 @@ typedef struct ivas_masa_metadata_frame_struct
typedef struct ivas_masa_config_struct
{
- uint16_t max_metadata_bits;
- int16_t block_grouping[5];
- int16_t band_grouping[MASA_FREQUENCY_BANDS + 1];
- uint8_t numCodingBands;
- uint8_t numTwoDirBands;
- uint8_t numberOfDirections;
- uint8_t joinedSubframes;
- uint8_t useCoherence;
- uint8_t coherencePresent;
- uint8_t mergeRatiosOverSubframes;
+ UWord16 max_metadata_bits;
+ Word16 block_grouping[5];
+ Word16 band_grouping[MASA_FREQUENCY_BANDS + 1];
+ UWord8 numCodingBands;
+ UWord8 numTwoDirBands;
+ UWord8 numberOfDirections;
+ UWord8 joinedSubframes;
+ UWord8 useCoherence;
+ UWord8 coherencePresent;
+ UWord8 mergeRatiosOverSubframes;
IVAS_FORMAT input_ivas_format;
} MASA_CODEC_CONFIG;
@@ -456,11 +456,11 @@ typedef struct ivas_masa_config_struct
typedef struct
{
- int16_t nbands;
- int16_t nblocks;
- int16_t start_band;
- uint8_t inactiveBands;
- int16_t search_effort;
+ Word16 nbands;
+ Word16 nblocks;
+ Word16 start_band;
+ UWord8 inactiveBands;
+ Word16 search_effort;
MC_LS_SETUP mc_ls_setup;
} IVAS_METADATA_CONFIG;
@@ -615,10 +615,10 @@ typedef struct ivas_parametric_mc_metadata_struct
typedef struct ivas_lfe_window
{
- int16_t dct_len;
- int16_t fade_len;
- int16_t zero_pad_len;
- int16_t full_len;
+ Word16 dct_len;
+ Word16 fade_len;
+ Word16 zero_pad_len;
+ Word16 full_len;
const Word32 *pWindow_coeffs_fx;
@@ -626,14 +626,14 @@ typedef struct ivas_lfe_window
typedef struct ivas_lfe_freq_models
{
- uint16_t entropy_coder_model_fine_sg1[65];
- uint16_t entropy_coder_model_fine_sg2[33];
- uint16_t entropy_coder_model_fine_sg3[9];
- uint16_t entropy_coder_model_fine_sg4[3];
- uint16_t entropy_coder_model_coarse_sg1[33];
- uint16_t entropy_coder_model_coarse_sg2[17];
- uint16_t entropy_coder_model_coarse_sg3[5];
- uint16_t entropy_coder_model_coarse_sg4;
+ UWord16 entropy_coder_model_fine_sg1[65];
+ UWord16 entropy_coder_model_fine_sg2[33];
+ UWord16 entropy_coder_model_fine_sg3[9];
+ UWord16 entropy_coder_model_fine_sg4[3];
+ UWord16 entropy_coder_model_coarse_sg1[33];
+ UWord16 entropy_coder_model_coarse_sg2[17];
+ UWord16 entropy_coder_model_coarse_sg3[5];
+ UWord16 entropy_coder_model_coarse_sg4;
} ivas_lfe_freq_models;
diff --git a/lib_com/ivas_stereo_dft_com_fx.c b/lib_com/ivas_stereo_dft_com_fx.c
index 80e64c0ccc4a54e4f984314164b89fb0b329b6d3..6d63bc6d1565160d0a3a3edb4f84b812077e882e 100644
--- a/lib_com/ivas_stereo_dft_com_fx.c
+++ b/lib_com/ivas_stereo_dft_com_fx.c
@@ -35,7 +35,6 @@
#include "options.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
-#include "ivas_prot.h"
#include "prot_fx.h"
#include "cnst.h"
#include "wmc_auto.h"
diff --git a/lib_com/ivas_stereo_eclvq_com_fx.c b/lib_com/ivas_stereo_eclvq_com_fx.c
index d0ffff39ce3b743b02529abcc2bef03b9c8d6234..958781473910ff0f164ad50b9eb076fd3e0796e3 100644
--- a/lib_com/ivas_stereo_eclvq_com_fx.c
+++ b/lib_com/ivas_stereo_eclvq_com_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_cnst.h"
#include
diff --git a/lib_com/ivas_stereo_ica_com_fx.c b/lib_com/ivas_stereo_ica_com_fx.c
index 9aa880842290c9e374ff0b58a8a0335102e6490d..8548797a4134d1805618080459a0f8ec38631269 100644
--- a/lib_com/ivas_stereo_ica_com_fx.c
+++ b/lib_com/ivas_stereo_ica_com_fx.c
@@ -37,7 +37,6 @@
#include "cnst.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "wmc_auto.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
diff --git a/lib_com/ivas_stereo_mdct_bands_com_fx.c b/lib_com/ivas_stereo_mdct_bands_com_fx.c
index c21abcf8ca8aeff3f5a3461c26bd4634de435371..43f2f16c7efc13d125717975cc63064027644d3d 100644
--- a/lib_com/ivas_stereo_mdct_bands_com_fx.c
+++ b/lib_com/ivas_stereo_mdct_bands_com_fx.c
@@ -35,7 +35,6 @@
#include "options.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
-#include "ivas_prot.h"
#include "rom_com.h"
#include "prot_fx.h"
#include "wmc_auto.h"
diff --git a/lib_com/ivas_stereo_mdct_stereo_com_fx.c b/lib_com/ivas_stereo_mdct_stereo_com_fx.c
index dd94358af22c0e0694f43dd8c0c4dde5272edbf0..0a773169d07313155482bed27f0613b1cccb7a40 100644
--- a/lib_com/ivas_stereo_mdct_stereo_com_fx.c
+++ b/lib_com/ivas_stereo_mdct_stereo_com_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "wmc_auto.h"
#include
#include "prot_fx.h"
diff --git a/lib_com/ivas_stereo_psychlpc_com_fx.c b/lib_com/ivas_stereo_psychlpc_com_fx.c
index cb3c39df2ae68c173550b31bd7e108e5532b83e8..df514089560c440dde31ff103bf87fd0b1ff740f 100644
--- a/lib_com/ivas_stereo_psychlpc_com_fx.c
+++ b/lib_com/ivas_stereo_psychlpc_com_fx.c
@@ -33,9 +33,7 @@
#include
#include "options.h"
#include "ivas_rom_com.h"
-#include "ivas_prot.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "wmc_auto.h"
#include
diff --git a/lib_com/ivas_stereo_td_bit_alloc_fx.c b/lib_com/ivas_stereo_td_bit_alloc_fx.c
index 9074473d730ae31df6e5ddbbe03dfd6f75f247a6..b54c1d3deb5ae86bf589fe0fd34d0e9359885734 100644
--- a/lib_com/ivas_stereo_td_bit_alloc_fx.c
+++ b/lib_com/ivas_stereo_td_bit_alloc_fx.c
@@ -35,7 +35,6 @@
#include "cnst.h"
#include "stat_enc.h"
#include "rom_com.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
diff --git a/lib_com/ivas_tools_fx.c b/lib_com/ivas_tools_fx.c
index e460637f77247ee40b3ce977e3744b63c9352e80..04d6f7bf50be3f68f9684774ee1d4c7da7412cdf 100644
--- a/lib_com/ivas_tools_fx.c
+++ b/lib_com/ivas_tools_fx.c
@@ -35,7 +35,6 @@
#include "options.h"
#include
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "wmc_auto.h"
#include "ivas_rom_com.h"
#include "ivas_prot_fx.h"
@@ -2970,7 +2969,7 @@ Word64 var_32_fx(
Word16 q /* q : q-factor for the array */
)
{
-
+ Word16 i;
Word64 mean, var;
mean = 0;
@@ -2978,14 +2977,14 @@ Word64 var_32_fx(
var = 0;
move64();
- FOR( int i = 0; i < len; i++ )
+ FOR( i = 0; i < len; i++ )
{
mean = W_add( mean, x[i] ); /*q*/
}
mean = mean / len; /* NOTE: No BASOP for 64 bit division q*/
- FOR( int i = 0; i < len; i++ )
+ FOR( i = 0; i < len; i++ )
{
var = W_add( var, Mpy_32_32( L_sub( x[i], W_extract_l( mean ) ), L_sub( x[i], W_extract_l( mean ) ) ) ); /*q + q - 31*/
}
diff --git a/lib_com/ivas_transient_det_fx.c b/lib_com/ivas_transient_det_fx.c
index 97025b46f7330ed8f861efeaa3c2815e2cd4bd30..3b9a8cfd7ebf1e22ec6513d4a5f5229e53c9d53d 100644
--- a/lib_com/ivas_transient_det_fx.c
+++ b/lib_com/ivas_transient_det_fx.c
@@ -36,7 +36,6 @@
#include "wmc_auto.h"
#include "prot_fx.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_stat_com.h"
diff --git a/lib_com/longarith.c b/lib_com/longarith.c
index 8946e41aacfbd8b52834f85e8910c07cbbb0f3ce..72a763de3dc933db4fae6d7de78b0893b436a2c9 100644
--- a/lib_com/longarith.c
+++ b/lib_com/longarith.c
@@ -52,27 +52,27 @@
*--------------------------------------------------------------------*/
void longadd(
- uint16_t a[], /* i/o: vector of the length lena */
- const uint16_t b[], /* i/o: vector of the length lenb */
- const int16_t lena, /* i/o: length of vector a[] */
- const int16_t lenb /* i/o: length of vector b[] */
+ UWord16 a[], /* i/o: vector of the length lena */
+ const UWord16 b[], /* i/o: vector of the length lenb */
+ const Word16 lena, /* i/o: length of vector a[] */
+ const Word16 lenb /* i/o: length of vector b[] */
)
{
- int16_t h;
- int32_t carry = 0;
+ Word16 h;
+ Word32 carry = 0;
assert( lena >= lenb );
for ( h = 0; h < lenb; h++ )
{
carry += ( (uint32_t) a[h] ) + ( (uint32_t) b[h] );
- a[h] = (uint16_t) carry;
+ a[h] = (UWord16) carry;
carry = carry >> 16;
}
for ( ; h < lena; h++ )
{
carry = ( (uint32_t) a[h] ) + carry;
- a[h] = (uint16_t) carry;
+ a[h] = (UWord16) carry;
carry = carry >> 16;
}
@@ -91,14 +91,14 @@ void longadd(
*--------------------------------------------------------------------*/
void longshiftright(
- uint16_t a[], /* i : vector of the length lena */
- const int16_t b, /* i : number of bit positions to shift right */
- uint16_t d[], /* o : vector of the length lend */
- int16_t lena, /* i : length of vector a[] */
- const int16_t lend /* i : length of vector d[] */
+ UWord16 a[], /* i : vector of the length lena */
+ const Word16 b, /* i : number of bit positions to shift right */
+ UWord16 d[], /* o : vector of the length lend */
+ Word16 lena, /* i : length of vector a[] */
+ const Word16 lend /* i : length of vector d[] */
)
{
- int16_t intb, fracb, fracb_u, k;
+ Word16 intb, fracb, fracb_u, k;
intb = b >> 4;
@@ -164,16 +164,16 @@ void longshr(
*--------------------------------------------------------------------*/
void longshiftleft(
- const uint16_t a[], /* i : vector of the length len */
- const int16_t b, /* i : number of bit positions to shift left */
- uint16_t d[], /* o : vector of the length len */
- const int16_t len /* i : length of vector a[] and d[] */
+ const UWord16 a[], /* i : vector of the length len */
+ const Word16 b, /* i : number of bit positions to shift left */
+ UWord16 d[], /* o : vector of the length len */
+ const Word16 len /* i : length of vector a[] and d[] */
)
{
- int16_t intb; /* integer part of b */
- int16_t fracb; /* shift left value for all upper words a[k] */
- int16_t fracb_l; /* shift right value for all lower words a[k-1] */
- int16_t k = len - 1;
+ Word16 intb; /* integer part of b */
+ Word16 fracb; /* shift left value for all upper words a[k] */
+ Word16 fracb_l; /* shift right value for all lower words a[k-1] */
+ Word16 k = len - 1;
intb = b >> 4;
fracb = b & 0xF;
diff --git a/lib_com/lsf_dec_bfi_fx.c b/lib_com/lsf_dec_bfi_fx.c
index 6292630af70ea7d15bd23afe34d9148ccc50db9d..33de5d9ac09d01ac656426a142cbec602cb610c9 100644
--- a/lib_com/lsf_dec_bfi_fx.c
+++ b/lib_com/lsf_dec_bfi_fx.c
@@ -36,7 +36,7 @@ void lsf_dec_bfi(
const Word16 Last_GSC_pit_band_idx,
const Word16 Opt_AMR_WB, /* i : IO flag */
const Word8 tcxonly,
- const short bwidth /* i: coded bandwidth */
+ const Word16 bwidth /* i: coded bandwidth */
)
{
Word16 i;
diff --git a/lib_com/mslvq_com.c b/lib_com/mslvq_com.c
index a15b116110d15462512689ca4a062eea6efa68ae..12234a4c055664712312c284ce500a2a019c119a 100644
--- a/lib_com/mslvq_com.c
+++ b/lib_com/mslvq_com.c
@@ -40,7 +40,6 @@
#include "rom_com.h"
#include "prot_fx.h"
#include "wmc_auto.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
/*-----------------------------------------------------------------*
@@ -75,10 +74,10 @@ static void make_offset_scale(
void create_offset(
UWord32 *offset_scale1,
UWord32 *offset_scale2,
- const int16_t mode,
- const int16_t prediction_flag )
+ const Word16 mode,
+ const Word16 prediction_flag )
{
- int16_t tmp, tmp1;
+ Word16 tmp, tmp1;
if ( prediction_flag == 0 )
{
diff --git a/lib_com/options.h b/lib_com/options.h
index 5ce425476a00280f05328911f5253fc9bb8ac378..7e5b833701026e12024d0d3f813817bd79d0c434 100755
--- a/lib_com/options.h
+++ b/lib_com/options.h
@@ -171,6 +171,7 @@
//#define OPT_STEREO_32KBPS_V1 /* Optimization made in stereo decoding path for 32kbps decoding */
#define DOT_PROD_CHOLESKY_64BIT /* FhG: Issue 1323, optimized 64 bit implementation of dot_product_cholesky() */
#define OPT_BASOP_ADD_v1 /* optimizations to avoid usage of BASOP_Util_Add_MantExp */
+#define FIX_ISSUE_1327 /* Ittiam: Fix for issue 1327: Glitch when stereo is switching from TD to FD*/
/* #################### Start BASOP porting switches ############################ */
diff --git a/lib_com/parameter_bitmaping_fx.c b/lib_com/parameter_bitmaping_fx.c
index 180275d8fa5a74888eac160af018d1e3936fa3a1..0846c618be15583797a4c64ccbae74c7a21fa224 100644
--- a/lib_com/parameter_bitmaping_fx.c
+++ b/lib_com/parameter_bitmaping_fx.c
@@ -58,15 +58,15 @@ static Word16 FixedWidthEncoding( Word16 value, Word16 index )
void GetParameters(
ParamsBitMap const *paramsBitMap,
- const int16_t nArrayLength,
+ const Word16 nArrayLength,
void const *pParameter,
- int16_t **pStream,
- int16_t *pnSize,
- int16_t *pnBits )
+ Word16 **pStream,
+ Word16 *pnSize,
+ Word16 *pnBits )
{
- int16_t index;
- int16_t iParam, nParams;
- int16_t value;
+ Word16 index;
+ Word16 iParam, nParams;
+ Word16 value;
void const *pSubStruct;
assert( ( paramsBitMap != NULL ) && ( nArrayLength > 0 ) && ( pParameter != NULL ) && ( pStream != NULL ) && ( pnSize != NULL ) && ( pnBits != NULL ) );
@@ -168,14 +168,14 @@ void GetParameters_fx(
void SetParameters(
ParamsBitMap const *paramsBitMap,
- const int16_t nArrayLength,
+ const Word16 nArrayLength,
void *pParameter,
- const int16_t **pStream,
- int16_t *pnSize )
+ const Word16 **pStream,
+ Word16 *pnSize )
{
- int16_t index;
- int16_t iParam, nParams;
- int16_t value;
+ Word16 index;
+ Word16 iParam, nParams;
+ Word16 value;
void *pSubStruct;
assert( ( paramsBitMap != NULL ) && ( nArrayLength > 0 ) && ( pParameter != NULL ) && ( pStream != NULL ) && ( pnSize != NULL ) );
diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h
index 310237884301f6da150acf585b15d366ac34c1e4..bb0ac1c90d133258980f685b4a2f285a92238892 100644
--- a/lib_com/prot_fx.h
+++ b/lib_com/prot_fx.h
@@ -72,10 +72,6 @@
#define max( x, y ) ( ( x ) > ( y ) ? ( x ) : ( y ) )
#endif
-#ifndef TRUNC
-#define TRUNC( x ) ( (int16_t) ( ( ( x ) >= 32767. ? 32767 : ( ( x ) <= -32768. ? -32768 : ( x ) ) ) + 0.5 ) )
-#endif
-
#define log_base_2( x ) ( (double) log( (double) ( x ) ) * 1.4426950408889634074f )
#define round_f( x ) ( ( ( x ) > 0 ) ? (int32_t) ( ( x ) + 0.5f ) : ( -(int32_t) ( ( -x ) + 0.5f ) ) )
@@ -1327,7 +1323,8 @@ UWord16 get_indice_1_fx( /* o : value of the indice */
);
void reset_indices_enc_fx(
- BSTR_ENC_HANDLE hBstr /* i/o: encoder state structure */
+ BSTR_ENC_HANDLE hBstr, /* i/o: encoder state structure */
+ const Word16 max_num_indices /* i : max number of indices */
);
void reset_indices_dec_fx(
@@ -1371,12 +1368,6 @@ Word16 BRATE2IDX16k_fx( Word32 brate );
Word32 BIT_ALLOC_IDX_fx( Word32 brate, Word16 ctype, Word16 sfrm, Word16 tc );
Word32 BIT_ALLOC_IDX_16KHZ_fx( Word32 brate, Word16 ctype, Word16 sfrm, Word16 tc );
-Word16 read_indices_fx( /* o : 1 = OK, 0 = something wrong */
- Decoder_State *st_fx, /* i/o: decoder state structure */
- FILE *file, /* i : bitstream file */
- Word16 rew_flag /* i : rewind flag (rewind file after reading) */
-);
-
Word16 read_indices_mime( /* o : 1 = reading OK, 0 = problem */
Decoder_State *st, /* i/o: decoder state structure */
FILE *file, /* i : bitstream file */
@@ -4705,6 +4696,7 @@ Word16 find_guarded_bits_fx( Word32 n );
Word16 L_norm_arr( const Word32 *arr, Word16 size );
Word16 norm_arr( Word16 *arr, Word16 size );
+Word16 W_norm_arr( Word64 *arr, Word16 size );
Word16 get_min_scalefactor( Word32 x, Word32 y );
@@ -9805,8 +9797,8 @@ ivas_error openCldfb_ivas_fx(
HANDLE_CLDFB_FILTER_BANK *h_cldfb, /* i/o: filter bank handle */
CLDFB_TYPE type, /* i : analysis or synthesis */
const Word32 sampling_rate, /* i : sampling rate */
- CLDFB_PROTOTYPE prototype /* i : CLDFB version (1.25ms/5ms delay) */
-);
+ CLDFB_PROTOTYPE prototype, /* i : CLDFB version (1.25ms/5ms delay) */
+ const Word16 enc_dec ); /* i : encoder/decoder flag */
Word32 rand_gauss_fx(
Word32 *x,
@@ -11100,7 +11092,7 @@ void init_coder_ace_plus_ivas_fx(
void core_coder_reconfig_ivas_fx(
Encoder_State *st,
- const int32_t last_total_brate );
+ const Word32 last_total_brate );
void core_coder_mode_switch_ivas_fx(
Encoder_State *st, /* i/o: encoder state structure */
@@ -11546,11 +11538,6 @@ uint16_t get_indice(
int16_t nb_bits /* i : number of bits that were used to quantize the indice */
);
-void reset_indices_enc(
- BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */
- const int16_t max_num_indices /* i : max number of indices */
-);
-
void reset_indices_dec(
Decoder_State *st /* i/o: decoder state structure */
);
@@ -11562,13 +11549,13 @@ Word16 rate2EVSmode_float(
/*! r: 1 = OK, 0 = something wrong */
-ivas_error read_indices(
+ivas_error read_indices_fx(
Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */
- uint16_t bit_stream[], /* i : bitstream buffer */
+ UWord16 bit_stream[], /* i : bitstream buffer */
UWord16 num_bits, /* i : number of bits in bitstream */
- int16_t *prev_ft_speech,
- int16_t *CNG,
- int16_t bfi /* i : bad frame indicator */
+ Word16 *prev_ft_speech,
+ Word16 *CNG,
+ Word16 bfi /* i : bad frame indicator */
);
@@ -11946,13 +11933,6 @@ ivas_error openCldfb_ivas(
CLDFB_PROTOTYPE prototype /* i : CLDFB version (1.25ms/5ms delay) */
);
-ivas_error openCldfb_ivas_enc(
- HANDLE_CLDFB_FILTER_BANK *h_cldfb, /* i/o: filter bank handle */
- CLDFB_TYPE type, /* i : analysis or synthesis */
- const Word32 sampling_rate, /* i : sampling rate */
- CLDFB_PROTOTYPE prototype /* i : CLDFB version (1.25ms/5ms delay) */
-);
-
void resampleCldfb_ivas(
HANDLE_CLDFB_FILTER_BANK hs, /* i/o: filter bank handle */
const Word32 newSamplerate /* i : new samplerate to operate */
@@ -11962,10 +11942,6 @@ ivas_error cldfb_save_memory_ivas(
HANDLE_CLDFB_FILTER_BANK hs /* i/o: filter bank handle */
);
-void deleteCldfb_ivas(
- HANDLE_CLDFB_FILTER_BANK *h_cldfb /* i/o: filter bank handle */
-);
-
/*! r: flag indicating a valid bitrate */
Word16 is_EVS_bitrate(
const Word32 ivas_total_brate, /* i : EVS total bitrate */
diff --git a/lib_com/rom_basop_util.c b/lib_com/rom_basop_util.c
index c3bfc6eeffc8ee1ce4bb05c6256255ed8659bdb8..eb79cc02648c67df6dbd075f3da2a9704142e2f8 100644
--- a/lib_com/rom_basop_util.c
+++ b/lib_com/rom_basop_util.c
@@ -1449,7 +1449,7 @@ void BASOP_getTables( const PWord16 **ptwiddle /*Q15*/, const PWord16 **sin_twid
ld2_length = sub( 16 - 1 - 1, norm_s( length ) );
/* Extract sort of "eigenvalue" (the 5 left most bits) of length. */
- SWITCH( (unsigned short) L_shl( length, sub( 15, ld2_length ) ) )
+ SWITCH( (UWord16) L_shl( length, sub( 15, ld2_length ) ) )
{
case 0xa000: /* 640 */
move16();
diff --git a/lib_com/rom_com.h b/lib_com/rom_com.h
index 274a33a18488656590d251aa30ca64854eba9a31..33661fb581a9db3b345637c5505c79c3b1c7d62d 100644
--- a/lib_com/rom_com.h
+++ b/lib_com/rom_com.h
@@ -66,7 +66,7 @@ typedef struct
Word16 filt_len; /* number of filter coeff. */
Word16 filt_len_fx; /* number of filter coeff. Q0 */
- uint16_t flags; /* flags from config. table */
+ UWord16 flags; /* flags from config. table */
UWord16 flags_fx; /* flags from config. table Q0 */
// UNS_Word16 flags_fx; /* flags from config. table Q0 */
diff --git a/lib_com/stat_com.h b/lib_com/stat_com.h
index 9edc28c035bf3900cd8021d9989b1ab00950b87a..c96dcc88479af40b7cff82494dd4069a4dde2ebf 100644
--- a/lib_com/stat_com.h
+++ b/lib_com/stat_com.h
@@ -74,7 +74,7 @@ typedef struct
typedef struct
{
Word16 lead_sign_ind;
- uint32_t index, size;
+ UWord32 index, size;
Word16 dim, k_val;
} PvqEntry;
@@ -313,7 +313,7 @@ typedef struct
{
Word32 low;
Word32 high;
- uint32_t value;
+ UWord32 value;
Word32 bits_to_follow;
} Tastat;
typedef struct
@@ -490,15 +490,6 @@ typedef Word16 ( *TEncodeValue )( Word16 value, Word16 index );
*/
typedef Word16 ( *TDecodeValue )( struct Decoder_State *st, Word16 index, Word16 *pValue );
-/** Linear prediction analysis/synthesis filter definition.
- * @param order filter order.
- * @param parCoeff filter (PARCOR) coefficients.
- * @param state state of the filter. Must be at least of 'order' size.
- * @param x the current input value.
- * @return the output of the filter.
- */
-typedef float ( *TLinearPredictionFilter_flt )( const int16_t order, const float parCoeff[], float *state, float x );
-
/** Structure that defines mapping between a parameter and a bitstream. */
typedef struct ParamBitMap
{
diff --git a/lib_com/swb_tbe_com.c b/lib_com/swb_tbe_com.c
index 1f112c9110f1ac20abd5a854fd8ab0f1777042b1..7905c7145b985c6cf56ef687f1c2d7600d03f363 100644
--- a/lib_com/swb_tbe_com.c
+++ b/lib_com/swb_tbe_com.c
@@ -41,7 +41,6 @@
#include "prot_fx.h"
#include "rom_com.h"
#include "wmc_auto.h"
-#include "ivas_prot.h"
#include
diff --git a/lib_dec/ACcontextMapping_dec_fx.c b/lib_dec/ACcontextMapping_dec_fx.c
index 34e74a06f9ae9d5f1838d46efb8007cec71a00d8..22e9fff0114f1f5c0d3b5057744a446f95a0a0bb 100644
--- a/lib_dec/ACcontextMapping_dec_fx.c
+++ b/lib_dec/ACcontextMapping_dec_fx.c
@@ -12,7 +12,6 @@
#include "prot_fx.h"
#include "ivas_prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
/*-------------------------------------------------------------------*
* ACcontextMapping_decode2_no_mem_s17_LC()
diff --git a/lib_dec/FEC_clas_estim_fx.c b/lib_dec/FEC_clas_estim_fx.c
index 9b58084e36ef1cb0d935be70990bb95aa18d485a..e56a77be12f49bf6522a1b129d91eaa0edbe4bb9 100644
--- a/lib_dec/FEC_clas_estim_fx.c
+++ b/lib_dec/FEC_clas_estim_fx.c
@@ -82,7 +82,7 @@ void FEC_clas_estim_fx(
Word16 bfi,
/* i : bad frame indicator */ /*B*/
Word32 last_core_brate, /* i : bitrate of previous frame */
- const int16_t FEC_mode /* i : ACELP FEC mode */
+ const Word16 FEC_mode /* i : ACELP FEC mode */
)
{
Word16 i, j, pos;
diff --git a/lib_dec/acelp_core_dec_ivas_fx.c b/lib_dec/acelp_core_dec_ivas_fx.c
index 11379a62d3b1d91adf5129d78e72c21be5a48375..7826546236b7c3baffb643a9adb11e38181509d0 100644
--- a/lib_dec/acelp_core_dec_ivas_fx.c
+++ b/lib_dec/acelp_core_dec_ivas_fx.c
@@ -41,7 +41,6 @@
#include "rom_com.h"
#include "prot_fx.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_dec/acelp_core_switch_dec_fx.c b/lib_dec/acelp_core_switch_dec_fx.c
index fc8aba043d80645168b7ea39c9718b5c41bebbbe..b2cc593b3d8f632ccaf1b29930f9abff5622399c 100644
--- a/lib_dec/acelp_core_switch_dec_fx.c
+++ b/lib_dec/acelp_core_switch_dec_fx.c
@@ -847,7 +847,6 @@ ivas_error acelp_core_switch_dec_bfi_ivas_fx(
move16();
Copy_Scale_sig_16_32_DEPREC( synth_out, synth32, L_FRAME48k, 5 ); /*11-5-1*/
- // cldfbSynthesis_ivas_fx(realBuffer, imagBuffer, synth_out, (int16_t)(st_fx->output_Fs * 0.01f), st_fx->cldfbSyn);
cldfbSynthesis_ivas_fx( realBuffer, imagBuffer, synth32, extract_l( Mpy_32_16_1( st_fx->output_Fs, 328 ) ), st_fx->cldfbSyn );
Scale_sig32( st_fx->cldfbSyn->cldfb_state_fx, st_fx->cldfbSyn->cldfb_state_length, -1 ); // Q_cldfb_state-1
st_fx->cldfbSyn->Q_cldfb_state = sub( st_fx->cldfbSyn->Q_cldfb_state, 1 );
diff --git a/lib_dec/core_switching_dec_fx.c b/lib_dec/core_switching_dec_fx.c
index 17b3f9fbce087c9e1e928e102fcea636877ceaa8..0f361e658628093c61be18cd92a839371e0d868b 100644
--- a/lib_dec/core_switching_dec_fx.c
+++ b/lib_dec/core_switching_dec_fx.c
@@ -1290,7 +1290,7 @@ ivas_error core_switching_post_dec_ivas_fx(
FD_BWE_DEC_HANDLE hBWE_FD;
HQ_DEC_HANDLE hHQ_core;
ivas_error error;
- int16_t offset;
+ Word16 offset;
L_tmp = 0;
move32();
diff --git a/lib_dec/dec_tcx_fx.c b/lib_dec/dec_tcx_fx.c
index 00f372154d0b6ad725b3e2c6078d16fa6b9d9e33..d1ed7ad8c90fcdc38719cf2e07f0c5ba0fad4cef 100644
--- a/lib_dec/dec_tcx_fx.c
+++ b/lib_dec/dec_tcx_fx.c
@@ -10,7 +10,6 @@
#include "stl.h"
#include "options.h"
#include "math.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
@@ -3807,7 +3806,7 @@ void decoder_tcx_invQ_fx(
FOR( i = 0; i < noiseFillingSize; ++i )
{
tmp32 = L_shr( x[i], sub( 31, *x_e ) );
- *nf_seed = add_o( *nf_seed, shl( i_mult( (Word16) L_abs( tmp32 ), i ), 1 ), &Overflow ); // abs( tmp32 ) * i * 2
+ *nf_seed = add_o( *nf_seed, extract_l( L_shl( i_mult( (Word16) L_abs( tmp32 ), i ), 1 ) ), &Overflow ); // abs( tmp32 ) * i * 2
move16();
}
}
diff --git a/lib_dec/dec_uv_fx.c b/lib_dec/dec_uv_fx.c
index f39deaf166605b817b9c2a736722dc8ea1c72559..bbec94d94f903d1116d84751f4a0c9e43223c012 100644
--- a/lib_dec/dec_uv_fx.c
+++ b/lib_dec/dec_uv_fx.c
@@ -110,17 +110,17 @@ void decod_unvoiced_fx(
*-------------------------------------------------------------------*/
void decod_unvoiced_ivas_fx(
- Decoder_State *st_fx, /* i/o: decoder static memory */
- const Word16 *Aq_fx, /* Q12 i : LP filter coefficient */
- const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */
- const int16_t uc_two_stage_flag, /* i : flag indicating two-stage UC */
- const Word16 coder_type, /* Q0 i : coding type */
- Word16 *tmp_noise_fx, /* Q0 o : long term temporary noise energy */
- Word16 *pitch_buf_fx, /* Q6 o : floating pitch values for each subframe*/
- Word16 *voice_factors_fx, /* Q15 o : voicing factors */
- Word16 *exc_fx, /* Q_X o : adapt. excitation exc */
- Word16 *exc2_fx, /* Q_X o : adapt. excitation/total exc */
- Word16 *bwe_exc_fx, /* Q_X i/o: excitation for SWB TBE */
+ Decoder_State *st_fx, /* i/o: decoder static memory */
+ const Word16 *Aq_fx, /* Q12 i : LP filter coefficient */
+ const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */
+ const Word16 uc_two_stage_flag, /* i : flag indicating two-stage UC */
+ const Word16 coder_type, /* Q0 i : coding type */
+ Word16 *tmp_noise_fx, /* Q0 o : long term temporary noise energy */
+ Word16 *pitch_buf_fx, /* Q6 o : floating pitch values for each subframe*/
+ Word16 *voice_factors_fx, /* Q15 o : voicing factors */
+ Word16 *exc_fx, /* Q_X o : adapt. excitation exc */
+ Word16 *exc2_fx, /* Q_X o : adapt. excitation/total exc */
+ Word16 *bwe_exc_fx, /* Q_X i/o: excitation for SWB TBE */
Word16 *gain_buf )
{
Word16 gain_pit_fx; /* Quantized pitch gain */
diff --git a/lib_dec/er_dec_acelp_fx.c b/lib_dec/er_dec_acelp_fx.c
index 7c3ecaa0a96c3bec1e70c9ddfea1a4d8891862dd..e30553d388e32c0a53b2b903aa763b120af22ab0 100644
--- a/lib_dec/er_dec_acelp_fx.c
+++ b/lib_dec/er_dec_acelp_fx.c
@@ -446,7 +446,7 @@ void con_acelp_fx(
ELSE
{
/* No harmonic part */
- assert( (int) ( sizeof( buf ) / sizeof( buf[0] ) ) - M - L_EXC_MEM_DEC >= st->L_frame + st->L_frame / 2 );
+ assert( (Word32) ( sizeof( buf ) / sizeof( buf[0] ) ) - M - L_EXC_MEM_DEC >= st->L_frame + st->L_frame / 2 );
set16_fx( &exc[0], 0, add( st->L_frame, shr( st->L_frame, 1 ) ) );
FOR( i = 0; i < st->nb_subfr; i++ )
diff --git a/lib_dec/er_dec_tcx_fx.c b/lib_dec/er_dec_tcx_fx.c
index 8c10e5f810542410d079e27227e72046a05c7921..5cc06dabf285301cae74d550d27f09128f1954d1 100644
--- a/lib_dec/er_dec_tcx_fx.c
+++ b/lib_dec/er_dec_tcx_fx.c
@@ -1168,7 +1168,7 @@ void con_tcx_ivas_fx(
/* apply pre-emphasis to the signal */
mem = synth[( -( ( ( L_frame / 2 ) + hTcxDec->pit_max_TCX ) + M + M ) - 1 )]; /*Q0*/
move16();
- Q_exc = E_UTIL_f_preemph3_ivas_fx( &( synth[-add( add( shr( L_frame, 1 ), hTcxDec->pit_max_TCX ), 2 * M )] ), st->preemph_fac, add( add( shr( L_frame, 1 ), hTcxDec->pit_max_TCX ), shl( M, 1 ) ), &mem, 1 );
+ Q_exc = E_UTIL_f_preemph3_ivas_fx( &( synth[-( ( ( L_frame / 2 ) + hTcxDec->pit_max_TCX ) + 2 * M )] ), st->preemph_fac, add( add( shr( L_frame, 1 ), hTcxDec->pit_max_TCX ), shl( M, 1 ) ), &mem, 1 );
st->Mode2_lp_gainc = L_deposit_l( 0 );
st->Mode2_lp_gainp = get_gain2( synth - shl( L_subfr, 1 ), synth - add( shl( L_subfr, 1 ), Tc ), shl( L_subfr, 1 ) );
diff --git a/lib_dec/igf_dec_fx.c b/lib_dec/igf_dec_fx.c
index 907a4a350538d3c7ba7c5e5cd46bc451df007856..c1b0ce93ab4157604fb5bcec23e3bd22ae2fc463 100644
--- a/lib_dec/igf_dec_fx.c
+++ b/lib_dec/igf_dec_fx.c
@@ -9,7 +9,6 @@
#include "options.h"
#include "stl.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "cnst.h"
#include "stat_dec.h"
@@ -2932,14 +2931,14 @@ static void IGF_getWhiteSpectralData_ivas(
{
ak = 0;
move32();
- move16();
FOR( j = i - level; j < stop; j++ )
{
tmp_16 = extract_h( L_shl( in[j], s_l ) ); // e: in_e - s_l
ak = L_mac( ak, tmp_16, tmp_16 ); // e: 2 * (in_e - s_l)
}
- ak = Mult_32_16( ak, quo );
+ ak = L_deposit_h( BASOP_Util_Divide3216_Scale( ak, sub( stop, sub( i, level ) ), &tmp_e ) );
+ ak_e = add( tmp_e, sub( shl( sub( in_e, s_l ), 1 ), 15 ) ); // tmp_e + 2 * (in_e - s_l) - 15
n = sub( 30, add( norm_l( ak ), sub( 31, ak_e ) ) );
n = shr( n, 1 );
diff --git a/lib_dec/init_dec_fx.c b/lib_dec/init_dec_fx.c
index 3865cd61c5cd79904d82f4f4cac7708ad6c6e0a3..bd8a2cbd3095c210f6ffa49344a60f66b826c58c 100644
--- a/lib_dec/init_dec_fx.c
+++ b/lib_dec/init_dec_fx.c
@@ -1447,13 +1447,13 @@ ivas_error init_decoder_ivas_fx(
IF( ( idchan == 0 && NE_16( st_fx->element_mode, IVAS_CPE_MDCT ) ) || EQ_16( st_fx->element_mode, IVAS_CPE_TD ) )
{
/* open analysis for max. SR 48kHz */
- IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
/* open analysis BPF for max. SR 16kHz */
- IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -1465,7 +1465,7 @@ ivas_error init_decoder_ivas_fx(
}
/* open synthesis for output SR */
- IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbSyn, CLDFB_SYNTHESIS, st_fx->output_Fs, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbSyn, CLDFB_SYNTHESIS, st_fx->output_Fs, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
diff --git a/lib_dec/ivas_agc_dec_fx.c b/lib_dec/ivas_agc_dec_fx.c
index e73d89158436a2a12bf93f0dad35cf4195458fff..a196a1abdd8a157e472fdcf21913f8367fd42e63 100644
--- a/lib_dec/ivas_agc_dec_fx.c
+++ b/lib_dec/ivas_agc_dec_fx.c
@@ -35,7 +35,6 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "rom_com.h"
#include "wmc_auto.h"
diff --git a/lib_dec/ivas_binRenderer_internal_fx.c b/lib_dec/ivas_binRenderer_internal_fx.c
index fa7db459377a402d759c0d5e239142bbc76a9ddb..ca63053ba9befe4669d10c600d508c6a8e80651f 100644
--- a/lib_dec/ivas_binRenderer_internal_fx.c
+++ b/lib_dec/ivas_binRenderer_internal_fx.c
@@ -34,8 +34,7 @@
#include "options.h"
#include
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "cnst.h"
#include "ivas_cnst.h"
#include "ivas_rom_rend.h"
@@ -1838,7 +1837,7 @@ void ivas_binaural_add_LFE_fx(
Word32 *output_fx[] /* o : synthesized core-coder transport channels/DirAC output Q11*/
)
{
- Word16 render_lfe, idx_lfe, gain_fx;
+ Word16 render_lfe, idx_lfe, gain_fx, idx;
Word32 lfe_tc[L_FRAME48k];
IF( st_ivas->hBinRenderer != NULL )
@@ -1878,7 +1877,7 @@ void ivas_binaural_add_LFE_fx(
{
v_multc_fixed_16( input_fx[st_ivas->hIntSetup.index_lfe[idx_lfe]], gain_fx, lfe_tc, output_frame ); // q_input_fx - 1
/* copy LFE to left and right channels */
- FOR( int idx = 0; idx < output_frame; idx++ )
+ FOR( idx = 0; idx < output_frame; idx++ )
{
lfe_tc[idx] = L_shl_sat( lfe_tc[idx], 1 ); // saturating to keep same q
move32();
diff --git a/lib_dec/ivas_core_dec_fx.c b/lib_dec/ivas_core_dec_fx.c
index 5bb4736e9b534b3baf30eb66a01ea3bf26dcae1b..7b4e5f267f708713deb5f978ae2764fb9592097d 100644
--- a/lib_dec/ivas_core_dec_fx.c
+++ b/lib_dec/ivas_core_dec_fx.c
@@ -37,7 +37,6 @@
#include "cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
diff --git a/lib_dec/ivas_corecoder_dec_reconfig_fx.c b/lib_dec/ivas_corecoder_dec_reconfig_fx.c
index 697f9d7154ba31dd49d74dc60ba3deaa39366d1a..8333f146f594a61de657bee9e9b066119b14e694 100644
--- a/lib_dec/ivas_corecoder_dec_reconfig_fx.c
+++ b/lib_dec/ivas_corecoder_dec_reconfig_fx.c
@@ -32,7 +32,6 @@
#include "options.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "prot_fx.h"
#include
@@ -603,7 +602,7 @@ ivas_error ivas_cldfb_dec_reconfig_fx(
/* create additional CLDFB synthesis instances */
FOR( i = numCldfbAnalyses_old; i < numCldfbAnalyses; i++ )
{
- IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -623,7 +622,7 @@ ivas_error ivas_cldfb_dec_reconfig_fx(
/* create additional CLDFB synthesis instances */
FOR( i = numCldfbSyntheses_old; i < numCldfbSyntheses; i++ )
{
- IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
diff --git a/lib_dec/ivas_cpe_dec_fx.c b/lib_dec/ivas_cpe_dec_fx.c
index 9bf53f1de04643c3e6da7c41c4c8c14bd3edee57..9e934cc888f116b241496c89510ac9ef449123d1 100644
--- a/lib_dec/ivas_cpe_dec_fx.c
+++ b/lib_dec/ivas_cpe_dec_fx.c
@@ -37,7 +37,6 @@
#include "ivas_cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
@@ -353,10 +352,6 @@ ivas_error ivas_cpe_dec_fx(
{
sts[0]->total_brate = hCPE->element_brate; /* Only mono downmix was transmitted in this case */
move32();
-#ifdef MSAN_FIX
- hCPE->hStereoDft->frame_sid_nodata = 0;
- move16();
-#endif
}
ELSE
{
diff --git a/lib_dec/ivas_decision_matrix_dec_fx.c b/lib_dec/ivas_decision_matrix_dec_fx.c
index f7fd5e8e253b706595d3a1a793cd1f7618f241d9..717bb3b93512bdd8818088c6a585e9a2376d71b6 100644
--- a/lib_dec/ivas_decision_matrix_dec_fx.c
+++ b/lib_dec/ivas_decision_matrix_dec_fx.c
@@ -34,7 +34,6 @@
#include "options.h"
#include "stat_dec.h"
#include "rom_com.h"
-#include "ivas_prot.h"
#include "prot_fx.h"
#include "ivas_cnst.h"
#include "wmc_auto.h"
diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c
index 43f804824227cbc31809de2cb2f7447d501343ca..70271c725da18c44befb55a5fd57a5276ad46b43 100644
--- a/lib_dec/ivas_dirac_dec_fx.c
+++ b/lib_dec/ivas_dirac_dec_fx.c
@@ -36,8 +36,7 @@
#include
#include "cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
#include "ivas_rom_dec.h"
@@ -2272,18 +2271,20 @@ void ivas_dirac_dec_render_sf_fx(
Word32 Cldfb_RealBuffer_Temp_fx[2][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
Word32 Cldfb_ImagBuffer_Temp_fx[2][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
Word16 cldfb_buf_q;
- Word16 offset, buff_len;
+ Word16 offset = 0, buff_len = 0;
+ move16();
+ move16();
Word16 q_cldfb, q_temp_cldfb = 0;
move16();
Word16 proto_length = 0;
move16();
- Word16 q_proto_direct_buffer[CLDFB_SLOTS_PER_SUBFRAME];
- Word16 q_proto_diffuse_buffer[CLDFB_SLOTS_PER_SUBFRAME];
+ Word16 q_proto_direct_buffer[CLDFB_SLOTS_PER_SUBFRAME + 1];
+ Word16 q_proto_diffuse_buffer[CLDFB_SLOTS_PER_SUBFRAME + 1];
Word16 size, size_ho;
DIRAC_DEC_STACK_MEM DirAC_mem;
Word32 *p_onset_filter_fx = NULL;
- uint16_t coherence_flag;
+ UWord16 coherence_flag;
SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom;
Word16 scale = 0;
move16();
@@ -2326,8 +2327,8 @@ void ivas_dirac_dec_render_sf_fx(
}
q_cldfb = Q11;
move16();
- set16_fx( q_proto_direct_buffer, hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f_q, CLDFB_SLOTS_PER_SUBFRAME );
- set16_fx( q_proto_diffuse_buffer, hDirACRend->h_output_synthesis_psd_state.proto_diffuse_buffer_f_q, CLDFB_SLOTS_PER_SUBFRAME );
+ set16_fx( q_proto_direct_buffer, hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f_q, CLDFB_SLOTS_PER_SUBFRAME + 1 );
+ set16_fx( q_proto_diffuse_buffer, hDirACRend->h_output_synthesis_psd_state.proto_diffuse_buffer_f_q, CLDFB_SLOTS_PER_SUBFRAME + 1 );
set_zero_fx( surCohRatio_fx, CLDFB_NO_CHANNELS_MAX );
IF( EQ_16( hDirACRend->synthesisConf, DIRAC_SYNTHESIS_MONO ) )
@@ -3320,22 +3321,21 @@ void ivas_dirac_dec_render_sf_fx(
}
}
- minimum_s( q_proto_direct_buffer, hSpatParamRendCom->subframe_nbslots[subframe_idx], &hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f_q );
+ minimum_s( q_proto_direct_buffer, add( hSpatParamRendCom->subframe_nbslots[subframe_idx], 1 ), &hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f_q );
IF( EQ_16( hDirACRend->synthesisConf, DIRAC_SYNTHESIS_GAIN_SHD ) )
{
- minimum_s( q_proto_diffuse_buffer, hSpatParamRendCom->subframe_nbslots[subframe_idx], &hDirACRend->h_output_synthesis_psd_state.proto_diffuse_buffer_f_q );
+ minimum_s( q_proto_diffuse_buffer, add( hSpatParamRendCom->subframe_nbslots[subframe_idx], 1 ), &hDirACRend->h_output_synthesis_psd_state.proto_diffuse_buffer_f_q );
}
FOR( slot_idx = 0; slot_idx < hSpatParamRendCom->subframe_nbslots[subframe_idx]; slot_idx++ )
{
IF( EQ_16( hDirACRend->synthesisConf, DIRAC_SYNTHESIS_GAIN_SHD ) )
{
- offset = i_mult( i_mult( slot_idx, 2 ), i_mult( hSpatParamRendCom->num_freq_bands, nchan_transport ) );
- buff_len = i_mult( 2, i_mult( nchan_transport, hSpatParamRendCom->num_freq_bands ) );
- scale_sig32( hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f_fx + offset, buff_len, sub( hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f_q, q_proto_direct_buffer[slot_idx] ) ); // proto_direct_buffer_f_q
-
offset = i_mult( i_mult( slot_idx, 2 ), i_mult( hSpatParamRendCom->num_freq_bands, hDirACRend->num_outputs_diff ) );
buff_len = i_mult( 2, i_mult( hDirACRend->num_outputs_diff, hSpatParamRendCom->num_freq_bands ) );
scale_sig32( hDirACRend->h_output_synthesis_psd_state.proto_diffuse_buffer_f_fx + offset, buff_len, sub( hDirACRend->h_output_synthesis_psd_state.proto_diffuse_buffer_f_q, q_proto_diffuse_buffer[slot_idx] ) ); // proto_diffuse_buffer_f_q
+ offset = i_mult( i_mult( slot_idx, 2 ), i_mult( hSpatParamRendCom->num_freq_bands, nchan_transport ) );
+ buff_len = i_mult( 2, i_mult( nchan_transport, hSpatParamRendCom->num_freq_bands ) );
+ scale_sig32( hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f_fx + offset, buff_len, sub( hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f_q, q_proto_direct_buffer[slot_idx] ) ); // proto_direct_buffer_f_q
}
ELSE IF( EQ_16( hDirACRend->synthesisConf, DIRAC_SYNTHESIS_MONO ) )
{
@@ -3375,10 +3375,18 @@ void ivas_dirac_dec_render_sf_fx(
BREAK;
}
}
- q_proto_direct_buffer[slot_idx] = hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f_q;
- move16();
}
-
+ test();
+ IF( EQ_16( slot_idx, hSpatParamRendCom->subframe_nbslots[subframe_idx] ) && sub( hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f_len, add( offset, buff_len ) ) > 0 )
+ {
+ scale_sig32( hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f_fx + add( offset, buff_len ), sub( hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f_len, add( offset, buff_len ) ), sub( hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f_q, q_proto_direct_buffer[slot_idx] ) ); // proto_direct_buffer_f_q
+ offset = i_mult( i_mult( sub( slot_idx, 1 ), 2 ), i_mult( hSpatParamRendCom->num_freq_bands, hDirACRend->num_outputs_diff ) );
+ buff_len = i_mult( 2, i_mult( hDirACRend->num_outputs_diff, hSpatParamRendCom->num_freq_bands ) );
+ IF( EQ_16( hDirACRend->synthesisConf, DIRAC_SYNTHESIS_GAIN_SHD ) && sub( hDirACRend->h_output_synthesis_psd_state.proto_diffuse_buffer_f_len, add( offset, buff_len ) ) > 0 )
+ {
+ scale_sig32( hDirACRend->h_output_synthesis_psd_state.proto_diffuse_buffer_f_fx + add( offset, buff_len ), sub( hDirACRend->h_output_synthesis_psd_state.proto_diffuse_buffer_f_len, add( offset, buff_len ) ), sub( hDirACRend->h_output_synthesis_psd_state.proto_diffuse_buffer_f_q, q_proto_diffuse_buffer[slot_idx] ) ); // proto_direct_buffer_f_q
+ }
+ }
ivas_dirac_dec_output_synthesis_get_interpolator_fx( &hDirACRend->h_output_synthesis_psd_params, hSpatParamRendCom->subframe_nbslots[subframe_idx] );
size = i_mult( hDirACRend->num_outputs_dir, hSpatParamRendCom->num_freq_bands );
diff --git a/lib_dec/ivas_dirac_output_synthesis_cov_fx.c b/lib_dec/ivas_dirac_output_synthesis_cov_fx.c
index e03913f8ab73138dc9701de680eb2151c2ef5610..b247fd6531c63eec9e3d7291599349bc28feed98 100644
--- a/lib_dec/ivas_dirac_output_synthesis_cov_fx.c
+++ b/lib_dec/ivas_dirac_output_synthesis_cov_fx.c
@@ -41,7 +41,6 @@
#include "rom_enc.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_stat_dec.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
diff --git a/lib_dec/ivas_entropy_decoder_fx.c b/lib_dec/ivas_entropy_decoder_fx.c
index e637a6a93d7bfe0b06b91b85fe0b5dfc9436b2d6..f8bf3c0910563b96492446ff76aa581507552b77 100644
--- a/lib_dec/ivas_entropy_decoder_fx.c
+++ b/lib_dec/ivas_entropy_decoder_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
#include
diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c
index c55da7699570a7cfe1bf04621c096cdf2d366885..cef1e45e90c3543a8c2dc0f49359959eb5b6c919 100644
--- a/lib_dec/ivas_init_dec.c
+++ b/lib_dec/ivas_init_dec.c
@@ -35,8 +35,7 @@
#include
#include "options.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
#include "ivas_stat_enc.h"
@@ -149,7 +148,7 @@ static ivas_error ivas_dec_reconfig_split_rend(
FOR( ch = 0; ch < num_ch; ch++ )
{
- IF( ( error = openCldfb_ivas_fx( &( hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] ), CLDFB_ANALYSIS, st_ivas->hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK )
+ IF( ( error = openCldfb_ivas_fx( &( hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] ), CLDFB_ANALYSIS, st_ivas->hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK )
{
return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not open CLDFB handles\n" ) );
}
@@ -157,7 +156,7 @@ static ivas_error ivas_dec_reconfig_split_rend(
FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
{
- if ( ( error = openCldfb_ivas_fx( &( hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] ), CLDFB_SYNTHESIS, st_ivas->hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK )
+ if ( ( error = openCldfb_ivas_fx( &( hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] ), CLDFB_SYNTHESIS, st_ivas->hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK )
{
return error;
}
@@ -2521,7 +2520,7 @@ ivas_error ivas_init_decoder_fx(
FOR( i = 0; i < numCldfbAnalyses; i++ )
{
- IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -2533,7 +2532,7 @@ ivas_error ivas_init_decoder_fx(
FOR( i = 0; i < numCldfbSyntheses; i++ )
{
- IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
diff --git a/lib_dec/ivas_ism_dec_fx.c b/lib_dec/ivas_ism_dec_fx.c
index ea974eb5e0d4d41bdbd4d02f58e6a446d86278d2..18c6953f282aaab2cb794776bdea986e0c5aafe9 100644
--- a/lib_dec/ivas_ism_dec_fx.c
+++ b/lib_dec/ivas_ism_dec_fx.c
@@ -33,9 +33,8 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_dec/ivas_ism_dtx_dec_fx.c b/lib_dec/ivas_ism_dtx_dec_fx.c
index cbf088597f8d35a44d6640f19e134ff8136d2ba8..0f023a7efd080f499328b709895092c92b8c95fc 100644
--- a/lib_dec/ivas_ism_dtx_dec_fx.c
+++ b/lib_dec/ivas_ism_dtx_dec_fx.c
@@ -33,7 +33,6 @@
#include
#include
#include "options.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "prot_fx.h"
#include "wmc_auto.h"
diff --git a/lib_dec/ivas_ism_metadata_dec_fx.c b/lib_dec/ivas_ism_metadata_dec_fx.c
index a6f5e47b6acb39a2975b54e05f123d383fa40618..3288903ab8f43b3b9cb00c03a44abb6b904cfbcc 100644
--- a/lib_dec/ivas_ism_metadata_dec_fx.c
+++ b/lib_dec/ivas_ism_metadata_dec_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_rom_com.h"
#include "ivas_rom_com_fx.h"
diff --git a/lib_dec/ivas_ism_param_dec_fx.c b/lib_dec/ivas_ism_param_dec_fx.c
index a7aa8619372c2a72abc661491cb11c13cc189ec8..9ef1c192cb09c5ce14212e137f68b91d3459d91f 100644
--- a/lib_dec/ivas_ism_param_dec_fx.c
+++ b/lib_dec/ivas_ism_param_dec_fx.c
@@ -34,8 +34,7 @@
#include
#include
#include "options.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "prot_fx.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
@@ -1441,9 +1440,9 @@ void ivas_ism_param_dec_tc_gain_ajust_fx(
static void ivas_ism_param_dec_render_sf_fx(
Decoder_Struct *st_ivas,
IVAS_OUTPUT_SETUP hSetup,
- const int16_t nchan_transport,
- const int16_t nchan_out,
- const int16_t nchan_out_woLFE,
+ const Word16 nchan_transport,
+ const Word16 nchan_out,
+ const Word16 nchan_out_woLFE,
Word32 *output_f_fx[], /*Q_output*/
Word16 Q_output[] )
{
diff --git a/lib_dec/ivas_ism_renderer_fx.c b/lib_dec/ivas_ism_renderer_fx.c
index a19ba70ec3414eb83a9b25be539aa8e652759408..2535eb6ee7e6349606f9e415bdbdbfc1c6bb668f 100644
--- a/lib_dec/ivas_ism_renderer_fx.c
+++ b/lib_dec/ivas_ism_renderer_fx.c
@@ -34,9 +34,8 @@
#include "options.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_stat_com.h"
#include "ivas_rom_com.h"
#include "rom_com.h"
diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c
index 3504ef945d574715ea1bfd9e03cee3e2a52ae793..c3bcb8ec14f73b978dda05717a03fe73d5eaaf27 100644
--- a/lib_dec/ivas_jbm_dec_fx.c
+++ b/lib_dec/ivas_jbm_dec_fx.c
@@ -36,9 +36,8 @@
#include "ivas_cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_rom_com.h"
#include
#include "wmc_auto.h"
@@ -83,7 +82,7 @@ ivas_error ivas_jbm_dec_tc_fx(
Word32 *data_fx /*Q11*/
)
{
- Word16 n, output_frame, nchan_out, i;
+ Word16 n, output_frame, nchan_out, i, ii;
Decoder_State *st; /* used for bitstream handling */
Word32 *p_output_fx[MAX_TRANSPORT_CHANNELS]; /* buffer for output synthesis */
Word16 nchan_remapped;
@@ -512,14 +511,14 @@ ivas_error ivas_jbm_dec_tc_fx(
hSCE->q_save_synth_fx = hCPE->hStereoDft->q_dft;
move16();
}
- FOR( Word16 ii = 0; ii < CPE_CHANNELS; ii++ )
+ FOR( ii = 0; ii < CPE_CHANNELS; ii++ )
{
scale_sig32( hCPE->output_mem_fx[ii], NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, STEREO_DFT32MS_OVL_NS ), sub( hCPE->hStereoDft->q_dft, Q11 ) ); // q_dft
hCPE->q_output_mem_fx[ii] = hCPE->hStereoDft->q_dft;
move16();
}
#ifdef MSAN_FIX
- FOR( Word16 ii = 0; ii < CPE_CHANNELS; ii++ )
+ FOR( ii = 0; ii < CPE_CHANNELS; ii++ )
{
Scale_sig32( &hCPE->prev_synth_fx[ii][0], NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, IVAS_DEC_DELAY_NS - STEREO_DFT32MS_OVL_NS ), sub( hCPE->q_prev_synth_fx, Q11 ) ); // q_prev_synth_fx
}
@@ -534,7 +533,7 @@ ivas_error ivas_jbm_dec_tc_fx(
Scale_sig32( p_output_fx[i], L_FRAME48k, negate( s ) );
}
#ifdef MSAN_FIX
- FOR( int ii = 0; ii < CPE_CHANNELS; ii++ )
+ FOR( ii = 0; ii < CPE_CHANNELS; ii++ )
{
Scale_sig32( &hCPE->prev_synth_fx[ii][0], NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, IVAS_DEC_DELAY_NS - STEREO_DFT32MS_OVL_NS ), sub( Q11, hCPE->q_prev_synth_fx ) ); // Q11
}
@@ -614,7 +613,7 @@ ivas_error ivas_jbm_dec_tc_fx(
st_ivas->hSpar->hMdDec->Q_mixer_mat = 30;
move16();
- FOR( Word16 ii = 0; ii < CPE_CHANNELS; ii++ )
+ FOR( ii = 0; ii < CPE_CHANNELS; ii++ )
{
scale_sig32( hCPE->output_mem_fx[ii], NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, STEREO_DFT32MS_OVL_NS ), sub( Q11, hCPE->hStereoDft->q_dft ) ); // Q11
hCPE->q_output_mem_fx[ii] = Q11;
@@ -999,7 +998,7 @@ ivas_error ivas_jbm_dec_tc_fx(
hSCE->q_save_synth_fx = hCPE->hStereoDft->q_dft;
move16();
}
- FOR( Word16 ii = 0; ii < CPE_CHANNELS; ii++ )
+ FOR( ii = 0; ii < CPE_CHANNELS; ii++ )
{
scale_sig32( hCPE->output_mem_fx[ii], NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, STEREO_DFT32MS_OVL_NS ), sub( hCPE->hStereoDft->q_dft, Q11 ) ); // q_dft
hCPE->q_output_mem_fx[ii] = hCPE->hStereoDft->q_dft;
@@ -1045,7 +1044,7 @@ ivas_error ivas_jbm_dec_tc_fx(
move16();
}
- FOR( Word16 ii = 0; ii < CPE_CHANNELS; ii++ )
+ FOR( ii = 0; ii < CPE_CHANNELS; ii++ )
{
scale_sig32( hCPE->output_mem_fx[ii], NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, STEREO_DFT32MS_OVL_NS ), sub( Q11, hCPE->hStereoDft->q_dft ) ); // Q11
hCPE->q_output_mem_fx[ii] = Q11;
@@ -1464,7 +1463,7 @@ ivas_error ivas_jbm_dec_tc_fx(
hSCE->q_save_synth_fx = hCPE->hStereoDft->q_dft;
move16();
}
- FOR( Word16 ii = 0; ii < CPE_CHANNELS; ii++ )
+ FOR( ii = 0; ii < CPE_CHANNELS; ii++ )
{
scale_sig32( hCPE->output_mem_fx[ii], NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, STEREO_DFT32MS_OVL_NS ), sub( hCPE->hStereoDft->q_dft, hCPE->q_output_mem_fx[ii] ) ); // q_dft
hCPE->q_output_mem_fx[ii] = hCPE->hStereoDft->q_dft;
@@ -1509,7 +1508,7 @@ ivas_error ivas_jbm_dec_tc_fx(
}
IF( st_ivas->hSpar != NULL )
{
- FOR( Word16 ii = 0; ii < CPE_CHANNELS; ii++ )
+ FOR( ii = 0; ii < CPE_CHANNELS; ii++ )
{
scale_sig32( hCPE->output_mem_fx[ii], NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, STEREO_DFT32MS_OVL_NS ), sub( Q11, hCPE->hStereoDft->q_dft ) ); // Q11
hCPE->q_output_mem_fx[ii] = Q11;
@@ -1798,7 +1797,7 @@ void ivas_jbm_dec_feed_tc_to_renderer_fx(
}
ELSE IF( EQ_16( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) )
{
- ivas_mc_paramupmix_dec_digest_tc( st_ivas, (uint8_t) n_render_timeslots, st_ivas->hTcBuffer->n_samples_available );
+ ivas_mc_paramupmix_dec_digest_tc( st_ivas, (UWord8) n_render_timeslots, st_ivas->hTcBuffer->n_samples_available );
}
ELSE IF( EQ_16( st_ivas->mc_mode, MC_MODE_PARAMMC ) )
{
@@ -1893,7 +1892,7 @@ ivas_error ivas_jbm_dec_render_fx(
ivas_error error;
Word32 *p_output_fx[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS];
Word32 *p_tc_fx[MAX_TRANSPORT_CHANNELS + MAX_NUM_OBJECTS];
- Word16 subframe_len, gd_bits, exp, nchan_in, i, j;
+ Word16 subframe_len, gd_bits, exp, nchan_in, i, j, ch;
const Word16 output_q_factor = Q11;
move16();
SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom;
@@ -2538,7 +2537,7 @@ ivas_error ivas_jbm_dec_render_fx(
move16();
}
/* CLDFB synthesis */
- FOR( Word16 ch = 0; ch < nchan_out_cldfb; ch++ )
+ FOR( ch = 0; ch < nchan_out_cldfb; ch++ )
{
IF( st_ivas->cldfbSynDec[ch] )
{
@@ -2566,7 +2565,7 @@ ivas_error ivas_jbm_dec_render_fx(
ivas_param_mc_dec_render_fx( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output_fx, channel_active_fx );
- FOR( int ch = 0; ch < nchan_out_cldfb; ch++ )
+ FOR( ch = 0; ch < nchan_out_cldfb; ch++ )
{
IF( st_ivas->cldfbSynDec[ch] )
{
diff --git a/lib_dec/ivas_lfe_dec_fx.c b/lib_dec/ivas_lfe_dec_fx.c
index e68c0142df2b4dae3c1863e09750b09b16d0b715..672d3fbe67ca2a80b1518e99a30d2e3bca85c9a4 100644
--- a/lib_dec/ivas_lfe_dec_fx.c
+++ b/lib_dec/ivas_lfe_dec_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_rom_com.h"
#include "rom_com.h"
diff --git a/lib_dec/ivas_lfe_plc_fx.c b/lib_dec/ivas_lfe_plc_fx.c
index 018f99fe74f80bba1a0d006fa4690e2ee2fe19e3..d98603d2a567052962051810bce287bbb9e3cedb 100644
--- a/lib_dec/ivas_lfe_plc_fx.c
+++ b/lib_dec/ivas_lfe_plc_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include
#include "wmc_auto.h"
@@ -388,7 +387,7 @@ static Word16 lfeplc_lev_dur_fx(
s = W_extract_h( W_shl( s_fx, exp1 ) );
s_q_fx = sub( add( s_q_fx, exp1 ), 32 );
- rc_fx[i - 1] = L_shr( BASOP_Util_Divide3232_Scale_cadence( -s, err_fx, &temp_q2 ), 1 );
+ rc_fx[i - 1] = L_shr( BASOP_Util_Divide3232_Scale_cadence( L_negate( s ), err_fx, &temp_q2 ), 1 );
move32();
rc_q_fx[i - 1] = sub( add( sub( s_q_fx, err_q_fx ), sub( 31, temp_q2 ) ), 1 );
move16();
diff --git a/lib_dec/ivas_ls_custom_dec_fx.c b/lib_dec/ivas_ls_custom_dec_fx.c
index 45f59d82f5ab45887e78c84c9474596a869ec081..5ad390f9a66786ed847e1f78cc278c1fa165826c 100644
--- a/lib_dec/ivas_ls_custom_dec_fx.c
+++ b/lib_dec/ivas_ls_custom_dec_fx.c
@@ -31,7 +31,6 @@
*******************************************************************************************************/
#include
#include "options.h"
-#include "ivas_prot.h"
#include "prot_fx.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_dec/ivas_masa_dec_fx.c b/lib_dec/ivas_masa_dec_fx.c
index 19ce363b20890875ed06b4fa9b8fc9c5e74f14f0..23653c53b91395bc70c561e636fd1506971bb40a 100644
--- a/lib_dec/ivas_masa_dec_fx.c
+++ b/lib_dec/ivas_masa_dec_fx.c
@@ -35,8 +35,7 @@
#include
#include "options.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
#include "ivas_stat_dec.h"
diff --git a/lib_dec/ivas_mc_param_dec_fx.c b/lib_dec/ivas_mc_param_dec_fx.c
index f407baf2ed2ca9899a26a9739f88c3ab370f6f4a..a065a0b029d6b04ca7f77d89308fb1d79ff09f6f 100644
--- a/lib_dec/ivas_mc_param_dec_fx.c
+++ b/lib_dec/ivas_mc_param_dec_fx.c
@@ -37,8 +37,7 @@
#include "rom_enc.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
#include "ivas_rom_dec.h"
@@ -107,7 +106,7 @@ static ivas_error param_mc_get_diff_proto_info_fx( const Word32 *proto_mtx, cons
static void param_mc_update_mixing_matrices_fx( PARAM_MC_DEC_HANDLE hParamMC, Word32 *mixing_matrix[], Word16 *mixing_matrix_fx, Word32 *mixing_matrix_res[], Word16 *mixing_matrix_res_exp, const UWord16 nX, const UWord16 nY );
-static void param_mc_protoSignalComputation_fx( Word32 *RealBuffer_fx, Word32 *ImagBuffer_fx, Word32 *proto_frame_f_fx, const PARAM_MC_DIFF_PROTO_INFO *diff_proto_info, const int16_t num_freq_bands /*, Word16 RealBuffer_fx_e, Word16 ImagBuffer_fx_e, Word16 *common_e*/ );
+static void param_mc_protoSignalComputation_fx( Word32 *RealBuffer_fx, Word32 *ImagBuffer_fx, Word32 *proto_frame_f_fx, const PARAM_MC_DIFF_PROTO_INFO *diff_proto_info, const Word16 num_freq_bands /*, Word16 RealBuffer_fx_e, Word16 ImagBuffer_fx_e, Word16 *common_e*/ );
/*-------------------------------------------------------------------------
* ivas_param_mc_dec_open()
@@ -1509,8 +1508,8 @@ void ivas_param_mc_dec_read_BS_fx(
*------------------------------------------------------------------------*/
void ivas_param_mc_dec_digest_tc_fx(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
- const uint8_t nCldfbSlots, /* i : number of CLFBS slots in the transport channels */
+ Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
+ const UWord8 nCldfbSlots, /* i : number of CLFBS slots in the transport channels */
Word32 *transport_channels_f_fx[],
Word16 transport_f_e )
{
@@ -1657,7 +1656,7 @@ void ivas_param_mc_dec_digest_tc_fx(
test();
IF( is_next_band && skip_next_band )
{
- continue;
+ CONTINUE;
}
IF( is_next_band )
{
@@ -1698,7 +1697,7 @@ void ivas_param_mc_dec_digest_tc_fx(
test();
IF( is_next_band && skip_next_band )
{
- continue;
+ CONTINUE;
}
/* Cx for transport channels */
IF( is_next_band )
@@ -1795,7 +1794,7 @@ void ivas_param_mc_dec_digest_tc_fx(
test();
IF( is_next_band && skip_next_band )
{
- continue;
+ CONTINUE;
}
IF( NE_32( hParamMC->synthesis_conf, PARAM_MC_SYNTH_MONO_STEREO ) )
@@ -2426,7 +2425,7 @@ static void param_mc_protoSignalComputation_fx(
Word32 *ImagBuffer_fx, /* i : CLDFB samples of the transport channels (imaginary part) */
Word32 *proto_frame_f_fx, /* o : interleaved complex prototype CLDFB samples */
const PARAM_MC_DIFF_PROTO_INFO *diff_proto_info, /* i : prototype generation information */
- const int16_t num_freq_bands /* i : number of frequency bands for the prototypes */
+ const Word16 num_freq_bands /* i : number of frequency bands for the prototypes */
)
{
Word16 band;
@@ -2745,7 +2744,7 @@ static void ivas_param_mc_get_mixing_matrices_fx(
Word16 nY_band;
Word16 num_lfe_bands;
Word16 brange[2];
- uint16_t i;
+ UWord16 i;
Word16 ch_idx1, ch_idx2, lfe_idx1, lfe_idx2;
Word16 remove_lfe;
Word16 lfe_indices[PARAM_MC_LOCAL_SZ_LFE_MAP];
diff --git a/lib_dec/ivas_mc_paramupmix_dec_fx.c b/lib_dec/ivas_mc_paramupmix_dec_fx.c
index 353582b945641b132dc9c550303c72d4e97d23cc..3b7bfd3e2864e04ebd9e8a9170733e07fd1a27fa 100644
--- a/lib_dec/ivas_mc_paramupmix_dec_fx.c
+++ b/lib_dec/ivas_mc_paramupmix_dec_fx.c
@@ -36,8 +36,7 @@
#include "cnst.h"
#include "prot_fx.h"
#include "ivas_prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_cnst.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
diff --git a/lib_dec/ivas_mcmasa_dec_fx.c b/lib_dec/ivas_mcmasa_dec_fx.c
index c2228b610172eab88f9a4e51106e976b3010fc6e..d12b190c640728b55825a1a5a4b948591e481b70 100644
--- a/lib_dec/ivas_mcmasa_dec_fx.c
+++ b/lib_dec/ivas_mcmasa_dec_fx.c
@@ -33,8 +33,7 @@
#include "options.h"
#include
#include "ivas_cnst.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "prot_fx.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_dec/ivas_mct_core_dec_fx.c b/lib_dec/ivas_mct_core_dec_fx.c
index be457da471440ba698e8fc64ada90e5ac9902156..b42eb534b34af52b78b359306728ea7fd919f4a3 100644
--- a/lib_dec/ivas_mct_core_dec_fx.c
+++ b/lib_dec/ivas_mct_core_dec_fx.c
@@ -39,7 +39,6 @@
#include "cnst.h"
#include "basop_proto_func.h"
#include "stat_com.h"
-#include "ivas_prot.h"
#include "ivas_stat_dec.h"
#include "ivas_stat_com.h"
#include "ivas_prot_fx.h"
@@ -89,9 +88,9 @@ void ivas_mct_side_bits_fx(
FOR( ch = 0; ch < nChannels; ch++ )
{
st = sts[ch];
- if ( EQ_32( st->mct_chan_mode, MCT_CHAN_MODE_IGNORE ) )
+ IF( EQ_32( st->mct_chan_mode, MCT_CHAN_MODE_IGNORE ) )
{
- continue;
+ CONTINUE;
}
mdct_read_IGF_bits_fx( st, st0 );
@@ -232,7 +231,7 @@ void ivas_mct_core_dec(
{
IF( EQ_32( sts[ch]->mct_chan_mode, MCT_CHAN_MODE_IGNORE ) )
{
- continue;
+ CONTINUE;
}
i = add( i, 1 );
}
@@ -259,15 +258,15 @@ void ivas_mct_core_dec(
{
st = sts[ch];
- if ( EQ_32( sts[ch]->mct_chan_mode, MCT_CHAN_MODE_IGNORE ) ) /*indicates LFE */
+ IF( EQ_32( sts[ch]->mct_chan_mode, MCT_CHAN_MODE_IGNORE ) ) /*indicates LFE */
{
- continue;
+ CONTINUE;
}
test();
- if ( bfi && EQ_16( st->core, ACELP_CORE ) ) /*no igf processing needed*/
+ IF( bfi && EQ_16( st->core, ACELP_CORE ) ) /*no igf processing needed*/
{
- continue;
+ CONTINUE;
}
IF( EQ_16( st->core, TCX_10_CORE ) )
diff --git a/lib_dec/ivas_mct_dec_fx.c b/lib_dec/ivas_mct_dec_fx.c
index 955fa6db0c7b19bf47aa754fe998060a234805e5..31fbdadd86663c61f0529cbb1cfed7716bd5288d 100644
--- a/lib_dec/ivas_mct_dec_fx.c
+++ b/lib_dec/ivas_mct_dec_fx.c
@@ -38,8 +38,7 @@
#include "ivas_cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_dec/ivas_mct_dec_mct_fx_fx.c b/lib_dec/ivas_mct_dec_mct_fx_fx.c
index 69f60172409dd590e7d861576fd5dfd03a38b94d..c275820fbcf25cb352d72c029c7965843fa29090 100644
--- a/lib_dec/ivas_mct_dec_mct_fx_fx.c
+++ b/lib_dec/ivas_mct_dec_mct_fx_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "prot_fx.h"
#include "wmc_auto.h"
#include
diff --git a/lib_dec/ivas_mdct_core_dec_fx.c b/lib_dec/ivas_mdct_core_dec_fx.c
index 7f079277a5fb8b76e53ad8975ccdda0cab84849b..151ba7d1eafa6fc83452492bcae937152ed6127e 100644
--- a/lib_dec/ivas_mdct_core_dec_fx.c
+++ b/lib_dec/ivas_mdct_core_dec_fx.c
@@ -40,7 +40,6 @@
#include "cnst.h"
#include "basop_proto_func.h"
#include "stat_com.h"
-#include "ivas_prot.h"
#include "ivas_stat_dec.h"
#include "ivas_stat_com.h"
#include
@@ -1282,11 +1281,6 @@ void ivas_mdct_core_reconstruct_fx(
ELSE /*ACELP core for ACELP-PLC */
{
assert( EQ_16( st->bfi, 1 ) );
-
- Scale_sig( synth_buf_fx, add( add( st->hTcxDec->old_synth_len, L_FRAME_PLUS ), M ), sub( -2, q_syn ) ); // Q0
- Scale_sig( synth_bufFB_fx, add( add( st->hTcxDec->old_synth_lenFB, L_FRAME_PLUS ), M ), sub( -2, q_syn ) ); // Q0
- q_syn = -2;
- move16();
/* PLC: [TCX: TD PLC] */
IF( MCT_flag != 0 )
{
@@ -1316,11 +1310,11 @@ void ivas_mdct_core_reconstruct_fx(
IF( ( EQ_16( st->nbLostCmpt, 1 ) ) || ( st->hTcxDec->tcxConceal_recalc_exc != 0 ) )
{
- Scale_sig( synthFB_fx - add( add( shr( st->hTcxDec->L_frameTCX, 1 ), st->hTcxDec->pit_max_TCX ), 2 * M ), add( add( shr( st->hTcxDec->L_frameTCX, 1 ), st->hTcxDec->pit_max_TCX ), 2 * M ), sub( q_syn, sub( st->Q_exc, 1 ) ) ); // 2 * q_syn - (st->Q_exc - 1)
+ Scale_sig( synthFB_fx - add( add( shr( st->hTcxDec->L_frameTCX, 1 ), st->hTcxDec->pit_max_TCX ), 2 * M ), sub( add( add( shr( st->hTcxDec->L_frameTCX, 1 ), st->hTcxDec->pit_max_TCX ), 2 * M ), 1 ), sub( q_syn, sub( st->Q_exc, 1 ) ) ); // 2 * q_syn - (st->Q_exc - 1)
}
ELSE
{
- Scale_sig( synthFB_fx - st->hTcxDec->L_frameTCX, st->hTcxDec->L_frameTCX, sub( q_syn, sub( st->Q_exc, 1 ) ) ); // 2 * q_syn - (st->Q_exc - 1)
+ Scale_sig( synthFB_fx - st->hTcxDec->L_frameTCX, sub( st->hTcxDec->L_frameTCX, 1 ), sub( q_syn, sub( st->Q_exc, 1 ) ) ); // 2 * q_syn - (st->Q_exc - 1)
}
lerp( synthFB_fx, synth_fx, st->L_frame, st->hTcxDec->L_frameTCX );
@@ -1555,7 +1549,7 @@ void ivas_mdct_core_tns_ns_fx(
}
/* nothing to do for missing LFE */
- continue;
+ CONTINUE;
}
FOR( k = 0; k < nSubframes[ch]; k++ )
diff --git a/lib_dec/ivas_mono_dmx_renderer_fx.c b/lib_dec/ivas_mono_dmx_renderer_fx.c
index bb5dead226be1db979fd337510acdc410ee4ea1c..2eb8d84dfe6a1d93e468243d1a11353fed12e82e 100644
--- a/lib_dec/ivas_mono_dmx_renderer_fx.c
+++ b/lib_dec/ivas_mono_dmx_renderer_fx.c
@@ -35,7 +35,6 @@
#include
#include "cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
diff --git a/lib_dec/ivas_objectRenderer_internal_fx.c b/lib_dec/ivas_objectRenderer_internal_fx.c
index f1f60d9634b0177e29d744affb8b5318725728e5..9a836574ab7c1cacdb3466dc65b70e99c31869e9 100644
--- a/lib_dec/ivas_objectRenderer_internal_fx.c
+++ b/lib_dec/ivas_objectRenderer_internal_fx.c
@@ -33,8 +33,7 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include
#include "ivas_rom_com.h"
#include "wmc_auto.h"
diff --git a/lib_dec/ivas_omasa_dec_fx.c b/lib_dec/ivas_omasa_dec_fx.c
index f473dc2818738d21eec2c1cab46de3cf78d22165..2393ea51d096ff0da5db9e567d1307f426a1afb0 100644
--- a/lib_dec/ivas_omasa_dec_fx.c
+++ b/lib_dec/ivas_omasa_dec_fx.c
@@ -33,10 +33,9 @@
#include "options.h"
#include
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_dec/ivas_osba_dec_fx.c b/lib_dec/ivas_osba_dec_fx.c
index 9c111e7a20ea851e2df1b0efb0d0fad5a6eb39e9..f2d096caf30f958830e0f4cefecea8efda91fcdb 100644
--- a/lib_dec/ivas_osba_dec_fx.c
+++ b/lib_dec/ivas_osba_dec_fx.c
@@ -33,9 +33,8 @@
#include "options.h"
#include
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_dec/ivas_out_setup_conversion_fx.c b/lib_dec/ivas_out_setup_conversion_fx.c
index 4811911fd2778a35d71973288e2785d28eb5b80b..c7bf0655d9ea765be0f1310a09229b8f553203a0 100644
--- a/lib_dec/ivas_out_setup_conversion_fx.c
+++ b/lib_dec/ivas_out_setup_conversion_fx.c
@@ -35,8 +35,7 @@
#include
#include
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_rom_com.h"
#include "ivas_rom_rend.h"
#include "wmc_auto.h"
diff --git a/lib_dec/ivas_output_config_fx.c b/lib_dec/ivas_output_config_fx.c
index b8691bd3d819b6461c37f8b83aa8936feb2a19ca..c98a9514e805c562381b02b911cabe68665652c4 100644
--- a/lib_dec/ivas_output_config_fx.c
+++ b/lib_dec/ivas_output_config_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_stat_dec.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_dec/ivas_pca_dec_fx.c b/lib_dec/ivas_pca_dec_fx.c
index 08ac1779994247043cd6e90e71517ed8d674476f..98611ab7cbcf9af52799eb55c91a6353ee726624 100644
--- a/lib_dec/ivas_pca_dec_fx.c
+++ b/lib_dec/ivas_pca_dec_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include
#include "ivas_cnst.h"
#include "wmc_auto.h"
diff --git a/lib_dec/ivas_post_proc_fx.c b/lib_dec/ivas_post_proc_fx.c
index 397f26bbce038c9571439bbbd6aba094bb3e8bd8..9357394a5741ee2b152504f8db29d408374c4801 100644
--- a/lib_dec/ivas_post_proc_fx.c
+++ b/lib_dec/ivas_post_proc_fx.c
@@ -36,7 +36,6 @@
#include "cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_cnst.h"
#include "wmc_auto.h"
diff --git a/lib_dec/ivas_qmetadata_dec_fx.c b/lib_dec/ivas_qmetadata_dec_fx.c
index 81768af442f305c5ff5ec025929f5ffe84d75c26..c78c51c52aae3a7351ac604da7fea2a00521c962 100644
--- a/lib_dec/ivas_qmetadata_dec_fx.c
+++ b/lib_dec/ivas_qmetadata_dec_fx.c
@@ -35,7 +35,6 @@
#include "options.h"
#include
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "ivas_rom_dec.h"
#include "wmc_auto.h"
diff --git a/lib_dec/ivas_qspherical_dec_fx.c b/lib_dec/ivas_qspherical_dec_fx.c
index d34b5402a4ce84081152aa721c94d1f3be39fd7a..f6ac39a99f081d7fc2a3d63802bb9983abe5bc7c 100644
--- a/lib_dec/ivas_qspherical_dec_fx.c
+++ b/lib_dec/ivas_qspherical_dec_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "ivas_stat_dec.h"
#include "wmc_auto.h"
diff --git a/lib_dec/ivas_range_uni_dec_fx.c b/lib_dec/ivas_range_uni_dec_fx.c
index e629111ced3c993f1a140148136f843b44220768..9a49680e874a2d665b7ba37e3e0c2c47334cc18a 100644
--- a/lib_dec/ivas_range_uni_dec_fx.c
+++ b/lib_dec/ivas_range_uni_dec_fx.c
@@ -31,7 +31,6 @@
*******************************************************************************************************/
#include
-#include "ivas_prot.h"
#include "ivas_cnst.h"
#include "ivas_stat_dec.h"
#include "cnst.h"
diff --git a/lib_dec/ivas_rom_dec.c b/lib_dec/ivas_rom_dec.c
index 812d9957f450b6bc14e88f7470f90a15a5dcbd07..6f75230c9510b987af703f417b2b20e655e107f7 100644
--- a/lib_dec/ivas_rom_dec.c
+++ b/lib_dec/ivas_rom_dec.c
@@ -100,7 +100,7 @@ const Word32 dft_ap_gains_fx[5][3] =
{ 644245094, -644245120, 1073741824 }
};
-const int16_t dft_ap_delays[3][3] =
+const Word16 dft_ap_delays[3][3] =
{
{ 2, 47, 61},
{29, 41, 73},
@@ -196,7 +196,7 @@ const Word16 dft_win_8k_fx[70] =
* stereo CNA tables
*------------------------------------------------------------------------*/
-const int16_t cna_init_bands[CNA_INIT_NBANDS + 1] =
+const Word16 cna_init_bands[CNA_INIT_NBANDS + 1] =
{
1, 4, 14, 33, 67, 171, 320
};
@@ -235,7 +235,7 @@ const Word16 min_smooth_gains2_fx[SBA_DIRAC_STEREO_NUM_BANDS] =
/* all the "probability" tables for the actual AC are in the reversed cumulative counts table format;
for example, given the counts table [c0 | c1 | c2 | c3] with c0 + c1 + c2 + c3 = 2 ^ 14, the reversed cumulative
counts table is [2 ^ 14 | 2 ^ 14 - c0 | 2 ^ 14 - c0 - c1 | 2 ^ 14 - c0 - c1 - c2 | 2 ^ 14 - c0 - c1 - c2 - c3] */
-const uint16_t cum_freq_ECSQ_tab_param[ECSQ_CONFIG_COUNT][1 + ECSQ_PARAM_COUNT] =
+const UWord16 cum_freq_ECSQ_tab_param[ECSQ_CONFIG_COUNT][1 + ECSQ_PARAM_COUNT] =
{
{0,1024,2048,3072,4096,5120,6144,7168,8192,9216,10240,11264,12288,13312,14336,15360,16384 },
{0,9294,16019,16213,16311,16346,16363,16371,16375,16377,16378,16379,16380,16381,16382,16383,16384 },
@@ -246,7 +246,7 @@ const uint16_t cum_freq_ECSQ_tab_param[ECSQ_CONFIG_COUNT][1 + ECSQ_PARAM_COUNT]
{0,5836,14448,15610,16267,16343,16374,16375,16376,16377,16378,16379,16380,16381,16382,16383,16384 }
};
-const uint16_t sym_freq_ECSQ_tab_param[ECSQ_CONFIG_COUNT][ECSQ_PARAM_COUNT] =
+const UWord16 sym_freq_ECSQ_tab_param[ECSQ_CONFIG_COUNT][ECSQ_PARAM_COUNT] =
{
{1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024 },
{9294,6725,194,98,35,17,8,4,2,1,1,1,1,1,1,1 },
@@ -257,7 +257,7 @@ const uint16_t sym_freq_ECSQ_tab_param[ECSQ_CONFIG_COUNT][ECSQ_PARAM_COUNT] =
{5836,8612,1162,657,76,31,1,1,1,1,1,1,1,1,1,1 }
};
-const uint16_t cum_freq_ECSQ_tab_vals[ECSQ_PARAM_COUNT - 1][1 + ECSQ_TAB_VALS_SIZE] =
+const UWord16 cum_freq_ECSQ_tab_vals[ECSQ_PARAM_COUNT - 1][1 + ECSQ_TAB_VALS_SIZE] =
{
{0,6445,12725,15035,15885,16198,16313,16355,16370,16376,16378,16379,16380,16381,16382,16383,16384 },
{0,3624,8645,11690,13537,14657,15336,15748,15998,16150,16242,16298,16332,16352,16364,16372,16384 },
@@ -276,7 +276,7 @@ const uint16_t cum_freq_ECSQ_tab_vals[ECSQ_PARAM_COUNT - 1][1 + ECSQ_TAB_VALS_SI
{0,3623,6446,8644,10356,11689,12727,13536,14166,14657,15039,15337,15569,15749,15890,15999,16384 },
};
-const uint16_t sym_freq_ECSQ_tab_vals[ECSQ_PARAM_COUNT - 1][ECSQ_TAB_VALS_SIZE] =
+const UWord16 sym_freq_ECSQ_tab_vals[ECSQ_PARAM_COUNT - 1][ECSQ_TAB_VALS_SIZE] =
{
{6445,6280,2310,850,313,115,42,15,6,2,1,1,1,1,1,1 },
{3624,5021,3045,1847,1120,679,412,250,152,92,56,34,20,12,8,12 },
@@ -295,59 +295,59 @@ const uint16_t sym_freq_ECSQ_tab_vals[ECSQ_PARAM_COUNT - 1][ECSQ_TAB_VALS_SIZE]
{3623,2823,2198,1712,1333,1038,809,630,491,382,298,232,180,141,109,385 },
};
-const uint16_t cum_freq_ECSQ_tab_abs_1bit[1 + 2] =
+const UWord16 cum_freq_ECSQ_tab_abs_1bit[1 + 2] =
{
0, 5462, 16384
};
/* table for uniform coding of absolute values in {0, +-1, +-2, +-3} */
-const uint16_t cum_freq_ECSQ_tab_abs_2bit[1 + 4] =
+const UWord16 cum_freq_ECSQ_tab_abs_2bit[1 + 4] =
{
0, 2338, 7020, 11702, 16384
};
/* table for uniform coding of absolute values in {0, +-1, ..., +-7} */
-const uint16_t cum_freq_ECSQ_tab_abs_3bit[1 + 8] =
+const UWord16 cum_freq_ECSQ_tab_abs_3bit[1 + 8] =
{
0, 1096, 3280, 5464, 7648, 9832, 12016, 14200, 16384
};
/* table for uniform coding of absolute values in {0, +-1, ..., +-15} */
-const uint16_t cum_freq_ECSQ_tab_abs_4bit[1 + 16] =
+const UWord16 cum_freq_ECSQ_tab_abs_4bit[1 + 16] =
{
0, 514, 1572, 2630, 3688, 4746, 5804, 6862, 7920, 8978, 10036, 11094, 12152, 13210, 14268, 15326, 16384
};
-const uint16_t sym_freq_ECSQ_tab_abs_1bit[2] =
+const UWord16 sym_freq_ECSQ_tab_abs_1bit[2] =
{
5462, 10922
};
/* table for uniform coding of absolute values in {0, +-1, +-2, +-3} */
-const uint16_t sym_freq_ECSQ_tab_abs_2bit[4] =
+const UWord16 sym_freq_ECSQ_tab_abs_2bit[4] =
{
2338, 4682, 4682, 4682
};
/* table for uniform coding of absolute values in {0, +-1, ..., +-7} */
-const uint16_t sym_freq_ECSQ_tab_abs_3bit[8] =
+const UWord16 sym_freq_ECSQ_tab_abs_3bit[8] =
{
1096, 2184, 2184, 2184, 2184, 2184, 2184, 2184
};
/* table for uniform coding of absolute values in {0, +-1, ..., +-15} */
-const uint16_t sym_freq_ECSQ_tab_abs_4bit[16] =
+const UWord16 sym_freq_ECSQ_tab_abs_4bit[16] =
{
514, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058
};
/* array of tables for uniform coding of absolute values */
-const uint16_t * const cum_freq_ECSQ_tab_abs_lsbs[1 + 4] =
+const UWord16 * const cum_freq_ECSQ_tab_abs_lsbs[1 + 4] =
{
NULL, cum_freq_ECSQ_tab_abs_1bit, cum_freq_ECSQ_tab_abs_2bit, cum_freq_ECSQ_tab_abs_3bit, cum_freq_ECSQ_tab_abs_4bit
};
-const uint16_t * const sym_freq_ECSQ_tab_abs_lsbs[1 + 4] =
+const UWord16 * const sym_freq_ECSQ_tab_abs_lsbs[1 + 4] =
{
NULL, sym_freq_ECSQ_tab_abs_1bit, sym_freq_ECSQ_tab_abs_2bit, sym_freq_ECSQ_tab_abs_3bit, sym_freq_ECSQ_tab_abs_4bit
};
@@ -391,7 +391,7 @@ const Word32 dmxmtx_table_fx[BINAURAL_CHANNELS][11] =
*-----------------------------------------------------------------------*/
/* Alpha Fine Huffman table df0 */
-static const int16_t huff_nodes_first_band_alpha[32][2] =
+static const Word16 huff_nodes_first_band_alpha[32][2] =
{
{ -17, 1 },
{ 3, 2 },
@@ -428,7 +428,7 @@ static const int16_t huff_nodes_first_band_alpha[32][2] =
};
/* Alpha Fine Huffman table df */
-static const int16_t huff_nodes_alpha_1D_DF[64][2] =
+static const Word16 huff_nodes_alpha_1D_DF[64][2] =
{
{ -33, 1 },
{ 3, 2 },
@@ -497,7 +497,7 @@ static const int16_t huff_nodes_alpha_1D_DF[64][2] =
};
/* Alpha Fine Huffman table dt */
-static const int16_t huff_nodes_alpha_1D_DT[64][2] =
+static const Word16 huff_nodes_alpha_1D_DT[64][2] =
{
{ -33, 1 },
{ -34, 2 },
@@ -566,19 +566,19 @@ static const int16_t huff_nodes_alpha_1D_DT[64][2] =
};
/* Beta Fine Huffman table df0 */
-static const int16_t huff_nodes_first_band_beta[8][2] =
+static const Word16 huff_nodes_first_band_beta[8][2] =
{
{ -1, 1 }, { -2, 2 }, { -3, 3 }, { -4, 4 }, { -5, 5 }, { -6, 6 }, { -7, 7 }, { -8, -9 }
};
/* Beta Fine Huffman table df */
-static const int16_t huff_nodes_beta_1D_DF[16][2] =
+static const Word16 huff_nodes_beta_1D_DF[16][2] =
{
{ -9, 1 }, { -10, 2 }, { -8, 3 }, { -11, 4 }, { -7, 5 }, { 7, 6 }, { -6, -12 }, { 9, 8 }, { -5, -13 }, { 11, 10 }, { -4, -14 }, { -15, 12 }, { -3, 13 }, { -16, 14 }, { -2, 15 }, { -1, -17 }
};
/* Beta Fine Huffman table dt */
-static const int16_t huff_nodes_beta_1D_DT[16][2] =
+static const Word16 huff_nodes_beta_1D_DT[16][2] =
{
{ -9, 1 }, { -10, 2 }, { -8, 3 }, { -11, 4 }, { -7, 5 }, { 7, 6 }, { -6, -12 }, { -13, 8 }, { -5, 9 }, { -14, 10 }, { -4, 11 }, { -15, 12 }, { -3, 13 }, { -16, 14 }, { -2, 15 }, { -1, -17 }
};
diff --git a/lib_dec/ivas_rom_dec.h b/lib_dec/ivas_rom_dec.h
index 11752380def460b241ebd09af98298a0a29c2465..84c1a94a07d72577dc9dcafdef45974da14bc540 100644
--- a/lib_dec/ivas_rom_dec.h
+++ b/lib_dec/ivas_rom_dec.h
@@ -53,7 +53,7 @@ extern const Word16 dft_alpha_s2_b2_fx[STEREO_DFT_BAND_MAX];
extern const Word32 dft_bpf_weights_fx[];
extern const Word32 dft_ap_gains_fx[5][3];
-extern const int16_t dft_ap_delays[3][3];
+extern const Word16 dft_ap_delays[3][3];
extern const Word16 dft_win232ms_8k_fx[75];
extern const Word16 dft_win232ms_12k8_fx[120];
extern const Word16 dft_win232ms_16k_fx[150];
@@ -62,7 +62,7 @@ extern const Word16 dft_win232ms_48k_fx[450];
extern const Word16 dft_res_pred_weights_fx[][STEREO_DFT_BAND_MAX];
extern const Word16 dft_win_8k_fx[70];
-extern const int16_t cna_init_bands[CNA_INIT_NBANDS + 1];
+extern const Word16 cna_init_bands[CNA_INIT_NBANDS + 1];
extern const Word16 min_smooth_gains1_fx[SBA_DIRAC_STEREO_NUM_BANDS];
@@ -74,12 +74,12 @@ extern const Word16 max_smooth_gains2_fx[SBA_DIRAC_STEREO_NUM_BANDS];
* ECLVQ Stereo ROM tables
*----------------------------------------------------------------------------------*/
-extern const uint16_t cum_freq_ECSQ_tab_param[ECSQ_CONFIG_COUNT][1 + ECSQ_PARAM_COUNT];
-extern const uint16_t sym_freq_ECSQ_tab_param[ECSQ_CONFIG_COUNT][ECSQ_PARAM_COUNT];
-extern const uint16_t cum_freq_ECSQ_tab_vals[ECSQ_PARAM_COUNT - 1][1 + ECSQ_TAB_VALS_SIZE];
-extern const uint16_t sym_freq_ECSQ_tab_vals[ECSQ_PARAM_COUNT - 1][ECSQ_TAB_VALS_SIZE];
-extern const uint16_t *const cum_freq_ECSQ_tab_abs_lsbs[1 + 4];
-extern const uint16_t *const sym_freq_ECSQ_tab_abs_lsbs[1 + 4];
+extern const UWord16 cum_freq_ECSQ_tab_param[ECSQ_CONFIG_COUNT][1 + ECSQ_PARAM_COUNT];
+extern const UWord16 sym_freq_ECSQ_tab_param[ECSQ_CONFIG_COUNT][ECSQ_PARAM_COUNT];
+extern const UWord16 cum_freq_ECSQ_tab_vals[ECSQ_PARAM_COUNT - 1][1 + ECSQ_TAB_VALS_SIZE];
+extern const UWord16 sym_freq_ECSQ_tab_vals[ECSQ_PARAM_COUNT - 1][ECSQ_TAB_VALS_SIZE];
+extern const UWord16 *const cum_freq_ECSQ_tab_abs_lsbs[1 + 4];
+extern const UWord16 *const sym_freq_ECSQ_tab_abs_lsbs[1 + 4];
/*----------------------------------------------------------------------------------*
diff --git a/lib_dec/ivas_sba_dec_fx.c b/lib_dec/ivas_sba_dec_fx.c
index 233b897b260d3cecb8d7d4d996b2e2ec16b250a4..2d96ce81ac502883998637832a96744ff270be1c 100644
--- a/lib_dec/ivas_sba_dec_fx.c
+++ b/lib_dec/ivas_sba_dec_fx.c
@@ -36,8 +36,7 @@
#include "cnst.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
#include "ivas_rom_dec.h"
diff --git a/lib_dec/ivas_sba_dirac_stereo_dec_fx.c b/lib_dec/ivas_sba_dirac_stereo_dec_fx.c
index 21c9a115b872f290862504e08b7cb06e39c76368..892751057e4b82ace13ceefa493e74810b398411 100644
--- a/lib_dec/ivas_sba_dirac_stereo_dec_fx.c
+++ b/lib_dec/ivas_sba_dirac_stereo_dec_fx.c
@@ -35,7 +35,6 @@
#include "cnst.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
diff --git a/lib_dec/ivas_sba_rendering_internal_fx.c b/lib_dec/ivas_sba_rendering_internal_fx.c
index a42c6738999656b7aeb116bd43bd79151b032046..bbe63e965c4dd80be1cedec78bd8365bdd4b3a92 100644
--- a/lib_dec/ivas_sba_rendering_internal_fx.c
+++ b/lib_dec/ivas_sba_rendering_internal_fx.c
@@ -33,8 +33,7 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_stat_dec.h"
#include "ivas_cnst.h"
#include
@@ -320,7 +319,7 @@ Word16 ivas_sba_remapTCs_fx(
Copy32( sba_data_fx[2], sba_data_fx[3], output_frame ); /*Q11*/
}
}
- IF( GT_16( st_ivas->nchan_transport, 3 ) )
+ IF( GE_16( st_ivas->nchan_transport, 3 ) )
{
Word16 i = 0;
move16();
diff --git a/lib_dec/ivas_sce_dec_fx.c b/lib_dec/ivas_sce_dec_fx.c
index 89581565c7f2c64272fb55423df6f83b391f0dcd..12549f49df29761496430c1f1416ec92f1023225 100644
--- a/lib_dec/ivas_sce_dec_fx.c
+++ b/lib_dec/ivas_sce_dec_fx.c
@@ -37,7 +37,6 @@
#include "ivas_cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
@@ -439,7 +438,7 @@ ivas_error create_sce_dec(
IF( EQ_16( (Word16) st_ivas->ivas_format, SBA_FORMAT ) && ( EQ_16( (Word16) st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) || ( EQ_16( (Word16) st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_MONO ) && EQ_16( st_ivas->nchan_transport, 1 ) ) ) )
{
- IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbSynHB, CLDFB_SYNTHESIS, st->output_Fs, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbSynHB, CLDFB_SYNTHESIS, st->output_Fs, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
diff --git a/lib_dec/ivas_sns_dec_fx.c b/lib_dec/ivas_sns_dec_fx.c
index 1702561810172cedc36bf9336cabcd2e1514e3ae..3bc6d337e9d57924af5fffa7957ceac12ecb2d4d 100644
--- a/lib_dec/ivas_sns_dec_fx.c
+++ b/lib_dec/ivas_sns_dec_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
#include "ivas_cnst.h"
@@ -373,7 +372,7 @@ void dequantize_sns_fx(
IF( zero_side_flag[k] )
{
set32_fx( snsQ_fx, 0, M );
- continue;
+ CONTINUE;
}
nStages = SNS_MSVQ_NSTAGES_SIDE;
diff --git a/lib_dec/ivas_spar_decoder_fx.c b/lib_dec/ivas_spar_decoder_fx.c
index 15a91cb7775269e9b536beac4ce7fa8d1729926e..172251104e9e07d286f144c2d185d8c3bef64da1 100644
--- a/lib_dec/ivas_spar_decoder_fx.c
+++ b/lib_dec/ivas_spar_decoder_fx.c
@@ -37,8 +37,7 @@
#include "ivas_stat_dec.h"
#include "prot_fx.h"
#include "string.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
#include "ivas_rom_dec.h"
diff --git a/lib_dec/ivas_spar_md_dec_fx.c b/lib_dec/ivas_spar_md_dec_fx.c
index d1efbbd2c6e2caa80971355f297794a3759dd961..7f487a75c272279cbc0ab168f8116743069db676 100644
--- a/lib_dec/ivas_spar_md_dec_fx.c
+++ b/lib_dec/ivas_spar_md_dec_fx.c
@@ -34,7 +34,6 @@
#include "options.h"
#include "math.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include
#include "wmc_auto.h"
@@ -49,11 +48,11 @@
#define IVAS_DEFAULT_DTX_CNG_RAMP ( 8 )
/* PLC constants */
-static const int16_t ivas_spar_dec_plc_num_frames_keep = 9;
-// static const int16_t ivas_spar_dec_plc_num_frames_fade_out = 9;
-static const int16_t ivas_spar_dec_plc_per_frame_ramp_down_gain_dB = 3;
-static const int16_t ivas_spar_dec_plc_max_num_frames_ramp_down = 33;
-static const int16_t ivas_spar_dec_plc_spatial_target[IVAS_SPAR_MAX_CH] = { 1, 0, 0, 0, 0, 0, 0, 0 };
+static const Word16 ivas_spar_dec_plc_num_frames_keep = 9;
+// static const Word16 ivas_spar_dec_plc_num_frames_fade_out = 9;
+static const Word16 ivas_spar_dec_plc_per_frame_ramp_down_gain_dB = 3;
+static const Word16 ivas_spar_dec_plc_max_num_frames_ramp_down = 33;
+static const Word16 ivas_spar_dec_plc_spatial_target[IVAS_SPAR_MAX_CH] = { 1, 0, 0, 0, 0, 0, 0, 0 };
/*------------------------------------------------------------------------------------------*
diff --git a/lib_dec/ivas_stat_dec.h b/lib_dec/ivas_stat_dec.h
index b7712d9dc263d35c884118e017f6faf269f3dcad..f893c4b31e4edf1b9a8c9c0b84f06541f5f1f555 100644
--- a/lib_dec/ivas_stat_dec.h
+++ b/lib_dec/ivas_stat_dec.h
@@ -50,14 +50,14 @@
/* State of the range decoder */
typedef struct
{
- uint32_t rc_low;
- uint32_t rc_range;
+ UWord32 rc_low;
+ UWord32 rc_range;
- uint16_t *bit_buffer;
- int16_t bit_count;
- int16_t max_allowable_bit_count;
+ UWord16 *bit_buffer;
+ Word16 bit_count;
+ Word16 max_allowable_bit_count;
- int16_t bit_error_detected;
+ Word16 bit_error_detected;
} RangeUniDecState;
@@ -79,11 +79,11 @@ typedef struct stereo_dft_dec_data_struct
STEREO_DFT_CONFIG_DATA_HANDLE hConfig;
/*Sizes*/
- int16_t N; /* Size of DFT hop size */
- int16_t NFFT; /* Size of DFT */
+ Word16 N; /* Size of DFT hop size */
+ Word16 NFFT; /* Size of DFT */
/*FFT*/
- int16_t dft_trigo_step;
+ Word16 dft_trigo_step;
const Word16 *dft_trigo_fx; /* Q15 */
const Word16 *dft_trigo_12k8_fx; /* Q15 */
@@ -91,13 +91,13 @@ typedef struct stereo_dft_dec_data_struct
const Word16 *dft_trigo_8k_fx; /* Q15 */
- int16_t dft32ms_ovl; /* Overlap size */
+ Word16 dft32ms_ovl; /* Overlap size */
const Word16 *win32ms_fx; /* DFT window */ /* Q15 */
const Word16 *win32ms_12k8_fx; /* DFT window */ /* Q15 */
const Word16 *win32ms_16k_fx; /* DFT window */ /* Q15 */
const Word16 *win32ms_8k_fx; /* DFT window */ /* Q15 */
- int16_t dft32ms_ovl2; /* Overlap2 size */
+ Word16 dft32ms_ovl2; /* Overlap2 size */
const Word16 *win232ms_fx; /* DFT window */ /* Q15 */
const Word16 *win232ms_12k8_fx; /* DFT window */ /* Q15 */
const Word16 *win232ms_16k_fx; /* DFT window */ /* Q15 */
@@ -106,31 +106,31 @@ typedef struct stereo_dft_dec_data_struct
/*Bands*/
- int16_t band_res[STEREO_DFT_DEC_DFT_NB];
- int16_t band_limits[STEREO_DFT_BAND_MAX + 1];
- int16_t nbands;
+ Word16 band_res[STEREO_DFT_DEC_DFT_NB];
+ Word16 band_limits[STEREO_DFT_BAND_MAX + 1];
+ Word16 nbands;
/*Configuration*/
- int16_t prm_res[STEREO_DFT_DEC_DFT_NB];
+ Word16 prm_res[STEREO_DFT_DEC_DFT_NB];
/*Stereo parameters*/
Word32 side_gain_fx[STEREO_DFT_DEC_DFT_NB * STEREO_DFT_BAND_MAX]; /* Q31 */
- int16_t side_gain_flag_1;
- int16_t side_gain_flag_2;
- int16_t side_gain_index_previous[STEREO_DFT_BAND_MAX];
- int16_t side_gain_index[STEREO_DFT_BAND_MAX];
+ Word16 side_gain_flag_1;
+ Word16 side_gain_flag_2;
+ Word16 side_gain_index_previous[STEREO_DFT_BAND_MAX];
+ Word16 side_gain_index[STEREO_DFT_BAND_MAX];
Word32 gipd_fx[STEREO_DFT_DEC_DFT_NB]; /* Q27 */
- int16_t no_ipd_flag; /* flag to indicate when no IPD gets used */
+ Word16 no_ipd_flag; /* flag to indicate when no IPD gets used */
- int16_t itd_xfade_counter;
- int32_t last_active_element_brate;
- int16_t ipd_xfade_counter;
+ Word16 itd_xfade_counter;
+ Word32 last_active_element_brate;
+ Word16 ipd_xfade_counter;
/*residual prediction*/
- int16_t res_pred_mode[STEREO_DFT_DEC_DFT_NB]; /* residual prediction mode: 0(off), 1(stereo filling only), 2(enhanced stereo filling) */
- Word32 itd_fx[STEREO_DFT_DEC_DFT_NB]; /* Q15 */
+ Word16 res_pred_mode[STEREO_DFT_DEC_DFT_NB]; /* residual prediction mode: 0(off), 1(stereo filling only), 2(enhanced stereo filling) */
+ Word32 itd_fx[STEREO_DFT_DEC_DFT_NB]; /* Q15 */
Word32 itd_xfade_step_fx; /* Q15 */
Word32 itd_xfade_target_fx; /* Q15 */
@@ -140,19 +140,19 @@ typedef struct stereo_dft_dec_data_struct
Word32 ipd_xfade_step_fx; /* Q27 */
Word32 ipd_xfade_prev_fx; /* Q27 */
Word32 res_pred_gain_fx[STEREO_DFT_DEC_DFT_NB * STEREO_DFT_BAND_MAX]; /* prediction gain for the residual HFs */ /* Q31 */
- int16_t res_pred_band_min; /* Band min for prediction of residual */
- int16_t past_DMX_pos;
- int16_t res_pred_flag_0;
- int16_t res_pred_flag_1;
- int16_t res_pred_index_previous[STEREO_DFT_BAND_MAX];
+ Word16 res_pred_band_min; /* Band min for prediction of residual */
+ Word16 past_DMX_pos;
+ Word16 res_pred_flag_0;
+ Word16 res_pred_flag_1;
+ Word16 res_pred_index_previous[STEREO_DFT_BAND_MAX];
- int16_t reverb_flag;
- int16_t nbands_respred;
+ Word16 reverb_flag;
+ Word16 nbands_respred;
/*residual coding*/
- int16_t res_cod_mode[STEREO_DFT_DEC_DFT_NB]; /* mode from 0 (off) to 3 */
- int16_t res_cod_band_max; /* Band max for coding of residual */
- int16_t res_cod_line_max;
+ Word16 res_cod_mode[STEREO_DFT_DEC_DFT_NB]; /* mode from 0 (off) to 3 */
+ Word16 res_cod_band_max; /* Band max for coding of residual */
+ Word16 res_cod_line_max;
Word32 DFT_past_DMX_fx[STEREO_DFT_PAST_MAX][STEREO_DFT32MS_N_32k]; /* Past DMX for residual prediction */ /* Q(q_DFT_past_DMX_fx) */
Word32 past_res_pred_gain_fx[STEREO_DFT_PAST_MAX][STEREO_DFT_BAND_MAX]; /* Q31 */
Word32 res_gains_ind_fx[2][2 * STEREO_DFT_BAND_MAX]; /* Q26 */
@@ -172,9 +172,9 @@ typedef struct stereo_dft_dec_data_struct
BPF_DEC_HANDLE hBpf;
TCX_LTP_DEC_HANDLE hTcxLtpDec;
- int16_t trans;
- int16_t attackPresent;
- int16_t wasTransient;
+ Word16 trans;
+ Word16 attackPresent;
+ Word16 wasTransient;
basic_allpass_t ap1, ap2, ap3;
@@ -189,9 +189,9 @@ typedef struct stereo_dft_dec_data_struct
Word32 ap_fade_mem_fx[STEREO_DFT_ALLPASS_FADELEN_16k]; /* Q(q_ap_fade_mem_fx) */
Word16 q_ap_fade_mem_fx;
- int16_t ap_wasTransient;
- int16_t core_hist[STEREO_DFT_CORE_HIST_MAX];
- int16_t hb_stefi_delay;
+ Word16 ap_wasTransient;
+ Word16 core_hist[STEREO_DFT_CORE_HIST_MAX];
+ Word16 hb_stefi_delay;
Word32 smooth_dmx_nrg_fx[STEREO_DFT_BAND_MAX]; /* Q(q_smoothed_nrg) */
Word32 smooth_res_nrg_fx[STEREO_DFT_BAND_MAX]; /* Q(q_smoothed_nrg) */
Word32 td_gain_fx[STEREO_DFT_CORE_HIST_MAX]; /* Q(q_td_gain) */
@@ -207,16 +207,16 @@ typedef struct stereo_dft_dec_data_struct
/* stereo DTX */
Word16 g_state_fx[STEREO_DFT_BAND_MAX]; /* Q15 */
- int16_t frame_sid_nodata;
- int16_t frame_nodata;
- int16_t frame_sid;
+ Word16 frame_sid_nodata;
+ Word16 frame_nodata;
+ Word16 frame_sid;
Word16 scale_fx; /* Q15 */
/* PLC on residual signal */
- int16_t time_offs;
- int16_t sg_mem_corrupt;
- int16_t recovery_flg;
+ Word16 time_offs;
+ Word16 sg_mem_corrupt;
+ Word16 recovery_flg;
/* PLC on residual signal */
Word32 sg_mean_fx; /* Q31 */
@@ -229,7 +229,7 @@ typedef struct stereo_dft_dec_data_struct
Word16 q_hb_nrg_subr;
Word16 q_res_mem;
- int16_t first_frame;
+ Word16 first_frame;
Word32 mixer_mat_smooth_fx[2][4][2 * IVAS_MAX_NUM_BANDS]; /* Q31 */
Word32 g_L_prev_fx; /* Q31 */
Word32 g_R_prev_fx; /* Q31 */
@@ -258,26 +258,26 @@ typedef struct stereo_dec_cng
{
Word16 cm_fx[STEREO_DFT_BAND_MAX]; /* cm */ /* Q15 */
Word16 coh_fx[STEREO_DFT_BAND_MAX + 1]; /* coherence */ /* Q15 */
- int16_t first_SID; /* first SID indicator */
- int16_t first_SID_after_TD; /* first SID after TD-stereo indicator */
- int16_t prev_sid_nodata; /* previous frame SID/FRAME_NO_DATA indicator */
- int16_t last_tdm_idx; /* last tdm index */
+ Word16 first_SID; /* first SID indicator */
+ Word16 first_SID_after_TD; /* first SID after TD-stereo indicator */
+ Word16 prev_sid_nodata; /* previous frame SID/FRAME_NO_DATA indicator */
+ Word16 last_tdm_idx; /* last tdm index */
Word32 c_LR_LT_fx; /* left right cross correlation */ /* Q31 */
- int16_t active_frame_counter; /* counter for active frames */
- int16_t xfade_frame_counter; /* xfade counter */
- int16_t xfade_length; /* number of frames to perform xfade */
- int16_t nr_dft_frames; /* dft frame counter */
- int16_t nr_corr_frames; /* correlation frame counter */
- int16_t nr_sid_frames; /* SID frame counter */
- int16_t last_act_element_mode; /* Element mode of last active frame */
+ Word16 active_frame_counter; /* counter for active frames */
+ Word16 xfade_frame_counter; /* xfade counter */
+ Word16 xfade_length; /* number of frames to perform xfade */
+ Word16 nr_dft_frames; /* dft frame counter */
+ Word16 nr_corr_frames; /* correlation frame counter */
+ Word16 nr_sid_frames; /* SID frame counter */
+ Word16 last_act_element_mode; /* Element mode of last active frame */
Word16 olapBufferSynth22_fx[FFTLEN]; /* overlap buffer for secondary channel CNA */
Word32 olapBufferSynth22_32fx[FFTLEN]; /* overlap buffer for secondary channel CNA */
- int16_t flag_cna_fade; /* flag enabling CNA fade out */
+ Word16 flag_cna_fade; /* flag enabling CNA fade out */
Word16 maskingNoiseS_fx[L_FRAME16k]; /* masking noise (CNA) for secondary channel */
- int16_t enableSecCNA; /* flag enabling secondary channel CNA */
+ Word16 enableSecCNA; /* flag enabling secondary channel CNA */
Word16 c_PS_LT_fx; /* long term cross-correlation between primary and secondary channel */ // Assumed Q15 for initialization. Can be modified later if reqd.
- const int16_t *frameSize; /* Frame size in samples */
- const int16_t *fftlen; /* FFT length used for the decomposition */
+ const Word16 *frameSize; /* Frame size in samples */
+ const Word16 *fftlen; /* FFT length used for the decomposition */
} STEREO_CNG_DEC, *STEREO_CNG_DEC_HANDLE;
@@ -288,18 +288,18 @@ typedef struct stereo_dec_cng
typedef struct stereo_td_dec_data_structure
{
- int16_t tdm_last_ratio_idx; /* last TDM ratio index */
- int16_t tdm_last_SM_flag; /* last channel combination scheme flag */
- int16_t tdm_prev_last_SM_flag; /* channel combination scheme flag before last frame */
- int16_t tdm_SM_flag; /* current channel combination scheme flag */
- int16_t tdm_use_IAWB_Ave_lpc; /* Flag to indicate the usage of mean inactive LP coefficients */
-
- int16_t tdm_lp_reuse_flag; /* Flag that indicate if it is possible to reuse the LP coefficient from the primary channel or not */
- int16_t tdm_low_rate_mode; /* secondary channel low rate mode flag */
+ Word16 tdm_last_ratio_idx; /* last TDM ratio index */
+ Word16 tdm_last_SM_flag; /* last channel combination scheme flag */
+ Word16 tdm_prev_last_SM_flag; /* channel combination scheme flag before last frame */
+ Word16 tdm_SM_flag; /* current channel combination scheme flag */
+ Word16 tdm_use_IAWB_Ave_lpc; /* Flag to indicate the usage of mean inactive LP coefficients */
+
+ Word16 tdm_lp_reuse_flag; /* Flag that indicate if it is possible to reuse the LP coefficient from the primary channel or not */
+ Word16 tdm_low_rate_mode; /* secondary channel low rate mode flag */
Word16 tdm_Pri_pitch_buf_fx[NB_SUBFR];
- int16_t tdm_Pitch_reuse_flag;
- int16_t tdm_LRTD_flag;
- int16_t flag_skip_DMX; /* flag that indicates whether the TD downmixing is skipped */
+ Word16 tdm_Pitch_reuse_flag;
+ Word16 tdm_LRTD_flag;
+ Word16 flag_skip_DMX; /* flag that indicates whether the TD downmixing is skipped */
Word32 TCX_old_syn_Overl_fx[L_FRAME16k / 2]; /* past ovrl buffer for possible switching from TD stereo ACELP to MDCT stereo TCX frame */ /* Q11 */
Word16 prevSP_ratio_fx; /* previous SP ratio */
@@ -321,24 +321,24 @@ typedef struct stereo_mdct_dec_data_structure
STEREO_MDCT_BAND_PARAMETERS stbParamsTCX20afterACELP; /* stereo frequency band parameters for transition frame */
/* only intraframe */
- int16_t mdct_stereo_mode[2]; /* mdct stereo mode: LR, MS, band-wise MS */
- int16_t global_ild[2]; /* Quantized ILD for the whole spectrum */
- int16_t split_ratio; /* Ratio of bitrate (1 to 7), split_ratio = 8 * 1st chn bitrate / (1st + 2nd chn bitrate) */
+ Word16 mdct_stereo_mode[2]; /* mdct stereo mode: LR, MS, band-wise MS */
+ Word16 global_ild[2]; /* Quantized ILD for the whole spectrum */
+ Word16 split_ratio; /* Ratio of bitrate (1 to 7), split_ratio = 8 * 1st chn bitrate / (1st + 2nd chn bitrate) */
- int16_t IGFStereoMode[2]; /* MDCT stereo mode for IGF */
+ Word16 IGFStereoMode[2]; /* MDCT stereo mode for IGF */
- int16_t use_itd;
- int16_t itd_mode; /*0/1*/
- Word32 itd_fx; /* Q15 */
+ Word16 use_itd;
+ Word16 itd_mode; /*0/1*/
+ Word32 itd_fx; /* Q15 */
- int16_t reverse_dmx;
+ Word16 reverse_dmx;
Word32 smooth_ratio_fx; /* Q26 */
- int16_t prev_ms_mask[NB_DIV][MAX_SFB];
+ Word16 prev_ms_mask[NB_DIV][MAX_SFB];
Word16 lastCoh_fx; /* Q14 */
- int16_t noise_seeds_channels[CPE_CHANNELS];
- int16_t noise_seed_common;
- int16_t isSBAStereoMode;
+ Word16 noise_seeds_channels[CPE_CHANNELS];
+ Word16 noise_seed_common;
+ Word16 isSBAStereoMode;
} STEREO_MDCT_DEC_DATA, *STEREO_MDCT_DEC_DATA_HANDLE;
@@ -349,18 +349,18 @@ typedef struct stereo_mdct_dec_data_structure
typedef struct stereo_tca_dec_data_structure
{
- int16_t refChanIndx; /* reference channel index in current frame */
- int16_t prevRefChanIndx; /* reference channel index in previous frame */
- int16_t indx_ica_NCShift; /* ICA target channel inter-channel corrstats */
- int16_t indx_ica_gD; /* ICA target gain */
+ Word16 refChanIndx; /* reference channel index in current frame */
+ Word16 prevRefChanIndx; /* reference channel index in previous frame */
+ Word16 indx_ica_NCShift; /* ICA target channel inter-channel corrstats */
+ Word16 indx_ica_gD; /* ICA target gain */
Word32 targetGain_fx; /* gain norm applied on target (or right) channel in current frame */ // Q29
Word32 prevTargetGain_fx; /* gain norm applied on target (or right) channel in previous frame */ // Q29
- int16_t corrLagStats; /* corr lag stats in current frame */
- int16_t prevCorrLagStats; /* corr lag stats in previous frame */
+ Word16 corrLagStats; /* corr lag stats in current frame */
+ Word16 prevCorrLagStats; /* corr lag stats in previous frame */
- int16_t interp_dec_prevNCShift; /* NC Shift in previous frame */
- int16_t interp_dec_switch_to_zero_diff; /* switch flag for interpolation */
+ Word16 interp_dec_prevNCShift; /* NC Shift in previous frame */
+ Word16 interp_dec_switch_to_zero_diff; /* switch flag for interpolation */
Word32 memChanL_fx[L_DEC_MEM_LEN_ICA]; /* left channel input to correct at the cross-over for Fixed */
@@ -429,10 +429,10 @@ typedef struct stereo_icbwe_dec_data_structure
typedef struct
{
- int16_t dtx_flag;
- int16_t sce_id_dtx;
+ Word16 dtx_flag;
+ Word16 sce_id_dtx;
- int16_t ism_dtx_hangover_cnt; /* hangover counter for ISM DTX decoder */
+ Word16 ism_dtx_hangover_cnt; /* hangover counter for ISM DTX decoder */
} ISM_DTX_DATA_DEC;
@@ -479,9 +479,9 @@ typedef struct ivas_dirac_dec_data_structure
{
DIRAC_CONFIG_DATA_HANDLE hConfig;
- int16_t band_grouping[IVAS_MAX_NUM_BANDS + 1];
- int16_t dithering_seed;
- int16_t spar_to_dirac_write_idx;
+ Word16 band_grouping[IVAS_MAX_NUM_BANDS + 1];
+ Word16 dithering_seed;
+ Word16 spar_to_dirac_write_idx;
IVAS_FB_MIXER_HANDLE hFbMdft;
@@ -522,10 +522,10 @@ typedef struct dirac_output_synthesis_cov_state_structure
typedef struct ivas_param_mc_diff_proto_info_structure
{
- int16_t num_protos_diff;
- int16_t *proto_index_diff;
- int16_t *num_source_chan_diff;
- int16_t **source_chan_idx;
+ Word16 num_protos_diff;
+ Word16 *proto_index_diff;
+ Word16 *num_source_chan_diff;
+ Word16 **source_chan_idx;
Word32 **proto_fac_fx;
} PARAM_MC_DIFF_PROTO_INFO;
@@ -533,42 +533,42 @@ typedef struct ivas_param_mc_diff_proto_info_structure
typedef struct ivas_param_mc_dec_data_structure
{
- int16_t slot_size;
+ Word16 slot_size;
Word32 *Cldfb_RealBuffer_tc_fx; // Q12
Word16 Cldfb_RealBuffer_tc_e;
Word32 *Cldfb_ImagBuffer_tc_fx; // Q12
Word16 Cldfb_ImagBuffer_tc_e;
Word16 sz;
- int16_t subframe_nbslots[MAX_JBM_SUBFRAMES_5MS];
- int16_t nb_subframes;
- int16_t subframes_rendered;
- int16_t slots_rendered;
- int16_t num_slots;
- int16_t num_freq_bands;
- int16_t num_param_bands_synth;
+ Word16 subframe_nbslots[MAX_JBM_SUBFRAMES_5MS];
+ Word16 nb_subframes;
+ Word16 subframes_rendered;
+ Word16 slots_rendered;
+ Word16 num_slots;
+ Word16 num_freq_bands;
+ Word16 num_param_bands_synth;
- int16_t band_grouping[PARAM_MC_MAX_PARAMETER_BANDS + 1];
+ Word16 band_grouping[PARAM_MC_MAX_PARAMETER_BANDS + 1];
/*Decoder parameters */
/*Prototypes*/
- int16_t num_outputs_diff;
+ Word16 num_outputs_diff;
PARAM_MC_DIFF_PROTO_INFO *diff_proto_info;
PARAM_MC_SYNTHESIS_CONF synthesis_conf;
/*Options*/
/* Decorrelator options */
- int16_t max_band_decorr;
+ Word16 max_band_decorr;
/*Decoder states=memories*/
Word32 *proto_frame_f_fx; /* Q11 */
Word32 *proto_frame_dec_f_fx; /* Q11 */
DIRAC_OUTPUT_SYNTHESIS_COV_STATE h_output_synthesis_cov_state;
DIRAC_OUTPUT_SYNTHESIS_PARAMS h_output_synthesis_params;
- int16_t max_band_energy_compensation;
+ Word16 max_band_energy_compensation;
HANDLE_IVAS_PARAM_MC_METADATA hMetadataPMC;
Word16 *icc_q_fx; /* ICC parameters*/ /* Q15 */
Word16 *icld_q_fx; /* Q8 */
- int16_t max_param_band_abs_cov;
+ Word16 max_param_band_abs_cov;
Word16 q_proto_frame_f;
Word32 *ls_conv_dmx_matrix_fx; /* Q30 */
Word32 *proto_matrix_int_fx;
@@ -589,12 +589,12 @@ typedef struct ivas_param_mc_dec_data_structure
typedef struct ivas_mc_paramupmix_dec_data_structure
{
- int16_t num_freq_bands;
+ Word16 num_freq_bands;
ivas_td_decorr_state_t *hTdDecorr[MC_PARAMUPMIX_COMBINATIONS];
- int32_t alpha_quant[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS];
- int32_t beta_quant[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS];
- int16_t first_frame;
- int16_t free_param_interpolator;
+ Word32 alpha_quant[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS];
+ Word32 beta_quant[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS];
+ Word16 first_frame;
+ Word16 free_param_interpolator;
Word32 alphas_fx[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS]; // Q28
@@ -628,30 +628,30 @@ typedef struct ivas_spar_md_dec_state_t
ivas_spar_dec_matrices_t spar_coeffs;
ivas_spar_dec_matrices_t spar_coeffs_prev;
ivas_spar_dec_matrices_t spar_coeffs_tar;
- int16_t dtx_md_smoothing_cntr;
- int16_t valid_bands[IVAS_MAX_NUM_BANDS];
- int16_t base_band_age[IVAS_MAX_NUM_BANDS];
- int16_t spar_plc_num_lost_frames;
- int16_t num_decorr;
- int16_t td_decorr_flag;
- int16_t spar_plc_enable_fadeout_flag;
+ Word16 dtx_md_smoothing_cntr;
+ Word16 valid_bands[IVAS_MAX_NUM_BANDS];
+ Word16 base_band_age[IVAS_MAX_NUM_BANDS];
+ Word16 spar_plc_num_lost_frames;
+ Word16 num_decorr;
+ Word16 td_decorr_flag;
+ Word16 spar_plc_enable_fadeout_flag;
Word32 ***mixer_mat_fx; /* Q(Q_mixer_mat) */
Word32 mixer_mat_prev_fx[MAX_PARAM_SPATIAL_SUBFRAMES + 1][IVAS_MAX_FB_MIXER_OUT_CH][IVAS_MAX_SPAR_FB_MIXER_IN_CH][IVAS_MAX_NUM_BANDS]; /* Q(Q_mixer_mat) */
Word16 Q_mixer_mat;
ivas_spar_md_com_cfg spar_md_cfg;
ivas_arith_coeffs_t arith_coeffs;
ivas_huff_coeffs_t huff_coeffs;
- int16_t table_idx;
- int16_t dtx_vad;
- int16_t spar_hoa_md_flag;
- int16_t spar_hoa_dirac2spar_md_flag;
- int16_t HOA_md_ind[IVAS_SPAR_MAX_CH];
+ Word16 table_idx;
+ Word16 dtx_vad;
+ Word16 spar_hoa_md_flag;
+ Word16 spar_hoa_dirac2spar_md_flag;
+ Word16 HOA_md_ind[IVAS_SPAR_MAX_CH];
Word32 smooth_buf_fx[IVAS_MAX_NUM_BANDS][2 * SBA_DIRAC_NRG_SMOOTH_LONG + 1]; /* Q0 */
Word16 smooth_fac_fx[IVAS_MAX_NUM_BANDS]; /* Q15 */
Word32 mixer_mat_prev2_fx[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH][IVAS_MAX_NUM_BANDS]; /* Q(Q_mixer_mat) */
- int16_t first_valid_frame;
+ Word16 first_valid_frame;
ivas_band_coeffs_t *band_coeffs_prev;
- int16_t base_band_coeffs_age[IVAS_MAX_NUM_BANDS];
+ Word16 base_band_coeffs_age[IVAS_MAX_NUM_BANDS];
} ivas_spar_md_dec_state_t;
@@ -677,11 +677,11 @@ typedef struct
{
Word16 prev_ql_fx[IVAS_PCA_INTERP];
Word16 prev_qr_fx[IVAS_PCA_INTERP];
- int16_t prev_pca_bypass;
+ Word16 prev_pca_bypass;
Word16 mem_eigVec_interp_fx[IVAS_PCA_LEN_INTERP_EIG_DEC];
/* parser output: */
- int16_t pca_bypass;
- int32_t index[2];
+ Word16 pca_bypass;
+ Word32 index[2];
} PCA_DEC_STATE;
@@ -691,20 +691,20 @@ typedef struct ivas_spar_dec_lib_t
ivas_td_decorr_state_t *hTdDecorr;
ivas_spar_md_dec_state_t *hMdDec;
IVAS_FB_MIXER_HANDLE hFbMixer;
- int16_t AGC_flag;
+ Word16 AGC_flag;
ivas_agc_dec_state_t *hAgcDec;
PCA_DEC_STATE *hPCA;
- int16_t dirac_to_spar_md_bands[DIRAC_MAX_NBANDS];
- int16_t enc_param_start_band;
- int32_t core_nominal_brate; /* Nominal bitrate for core coding */
- int16_t i_subframe;
-
- int16_t subframe_nbslots[MAX_JBM_SUBFRAMES_5MS];
- int16_t render_to_md_map[MAX_JBM_CLDFB_TIMESLOTS];
- int16_t nb_subframes;
- int16_t subframes_rendered;
- int16_t slots_rendered;
- int16_t num_slots;
+ Word16 dirac_to_spar_md_bands[DIRAC_MAX_NBANDS];
+ Word16 enc_param_start_band;
+ Word32 core_nominal_brate; /* Nominal bitrate for core coding */
+ Word16 i_subframe;
+
+ Word16 subframe_nbslots[MAX_JBM_SUBFRAMES_5MS];
+ Word16 render_to_md_map[MAX_JBM_CLDFB_TIMESLOTS];
+ Word16 nb_subframes;
+ Word16 subframes_rendered;
+ Word16 slots_rendered;
+ Word16 num_slots;
} SPAR_DEC_DATA, *SPAR_DEC_HANDLE;
@@ -713,8 +713,8 @@ typedef struct ivas_spar_dec_lib_t
typedef struct ivas_osba_data
{
Word32 **delayBuffer_fx;
- int16_t delayBuffer_size;
- int16_t delayBuffer_nchan;
+ Word16 delayBuffer_size;
+ Word16 delayBuffer_nchan;
} SBA_ISM_DATA, *SBA_ISM_DATA_HANDLE;
@@ -725,9 +725,9 @@ typedef struct ivas_osba_data
typedef struct sce_dec_data_structure
{
- int16_t sce_id; /* SCE # identifier */
- int32_t element_brate; /* SCE total bitrate in bps */
- int32_t last_element_brate; /* SCE last total bitrate in bps */
+ Word16 sce_id; /* SCE # identifier */
+ Word32 element_brate; /* SCE total bitrate in bps */
+ Word32 last_element_brate; /* SCE last total bitrate in bps */
/* core coder handle */
DEC_CORE_HANDLE hCoreCoder[1];
@@ -748,15 +748,15 @@ typedef struct sce_dec_data_structure
typedef struct cpe_dec_data_structure
{
- int16_t cpe_id; /* CPE # identifier */
- int32_t element_brate; /* CPE element total bitrate in bps */
- int32_t last_element_brate; /* last CPE element total bitrate in bps */
+ Word16 cpe_id; /* CPE # identifier */
+ Word32 element_brate; /* CPE element total bitrate in bps */
+ Word32 last_element_brate; /* last CPE element total bitrate in bps */
- int16_t element_mode; /* element mode, in CPE it can be IVAS_CPE_DFT, IVAS_CPE_TD or IVAS_CPE_MDCT */
- int16_t last_element_mode; /* last element mode */
+ Word16 element_mode; /* element mode, in CPE it can be IVAS_CPE_DFT, IVAS_CPE_TD or IVAS_CPE_MDCT */
+ Word16 last_element_mode; /* last element mode */
- int16_t stereo_switching_counter;
- int16_t NbFrameMod;
+ Word16 stereo_switching_counter;
+ Word16 NbFrameMod;
/* core coder handle */
DEC_CORE_HANDLE hCoreCoder[CPE_CHANNELS];
@@ -769,7 +769,7 @@ typedef struct cpe_dec_data_structure
STEREO_ICBWE_DEC_HANDLE hStereoICBWE; /* Stereo inter-channel BWE data handle */
STEREO_CNG_DEC_HANDLE hStereoCng; /* Stereo CNG data structure */
- int16_t nchan_out; /* number of output channels (1: mono dmx, 2: default stereo) */
+ Word16 nchan_out; /* number of output channels (1: mono dmx, 2: default stereo) */
/* DFT stereo I/O channel buffer memories that need to be updated for TD->DFT stereo switching */
@@ -793,7 +793,7 @@ typedef struct cpe_dec_data_structure
/* buffers used for fading between MDCT and DFT Stereo */
- int32_t brate_surplus; /* bitrate surplus for bitrate adaptation in combined format coding */
+ Word32 brate_surplus; /* bitrate surplus for bitrate adaptation in combined format coding */
} CPE_DEC_DATA, *CPE_DEC_HANDLE;
@@ -804,8 +804,8 @@ typedef struct cpe_dec_data_structure
typedef struct mct_dec_block_data_struct
{
- int16_t ch1, ch2;
- int16_t mask[2][MAX_SFB];
+ Word16 ch1, ch2;
+ Word16 mask[2][MAX_SFB];
STEREO_MDCT_DEC_DATA_HANDLE hStereoMdct; /* MDCT stereo data handle */
} MCT_DEC_BLOCK_DATA, *MCT_DEC_BLOCK_DATA_HANDLE;
@@ -813,14 +813,14 @@ typedef struct mct_dec_block_data_struct
typedef struct mct_dec_data_structure
{
- int16_t nchan_out_woLFE; /* number of active channels within multi-channel configuration */
- int16_t currBlockDataCnt;
- int16_t bitsChannelPairIndex; /* bits needed to code channel pair index, depends on number of active channels */
+ Word16 nchan_out_woLFE; /* number of active channels within multi-channel configuration */
+ Word16 currBlockDataCnt;
+ Word16 bitsChannelPairIndex; /* bits needed to code channel pair index, depends on number of active channels */
MCT_DEC_BLOCK_DATA_HANDLE hBlockData[MCT_MAX_BLOCKS];
- int16_t chBitRatios[MCT_MAX_CHANNELS];
- int16_t lowE_ch[MCT_MAX_CHANNELS]; /* note: pointer to local parameter */
- uint16_t mc_global_ild[MCT_MAX_CHANNELS]; /* note: pointer to local parameter */
+ Word16 chBitRatios[MCT_MAX_CHANNELS];
+ Word16 lowE_ch[MCT_MAX_CHANNELS]; /* note: pointer to local parameter */
+ UWord16 mc_global_ild[MCT_MAX_CHANNELS]; /* note: pointer to local parameter */
} MCT_DEC_DATA, *MCT_DEC_HANDLE;
@@ -868,12 +868,12 @@ typedef struct ivas_binaural_rendering_struct
IVAS_OUTPUT_SETUP_HANDLE hInputSetup; /* pointer to input spatial format for binaural renderer*/
EFAP_HANDLE hEFAPdata; /* EFAP structure*/
Word32 *hoa_dec_mtx; /* pointer to HOA decoder mtx */ /*Q29*/
- int8_t rotInCldfb; /* Flag to enable rotation within bin Renderer in CLDFB*/
- int16_t max_band; /* band upto which rendering is performed */
- int16_t conv_band; /* band upto which convolution in cldfb domain is performed */
- int16_t timeSlots; /* number of time slots of binaural renderer */
- int16_t nInChannels; /* number input channels */
- int8_t render_lfe; /* Flag to render LFE in binaural rendering*/
+ Word8 rotInCldfb; /* Flag to enable rotation within bin Renderer in CLDFB*/
+ Word16 max_band; /* band upto which rendering is performed */
+ Word16 conv_band; /* band upto which convolution in cldfb domain is performed */
+ Word16 timeSlots; /* number of time slots of binaural renderer */
+ Word16 nInChannels; /* number input channels */
+ Word8 render_lfe; /* Flag to render LFE in binaural rendering*/
IVAS_FORMAT ivas_format; /* format; corresponds to st_ivas->ivas_format, unless the signal gets transormed to a different domain for rendering */
/* Convolution module structure */
@@ -927,18 +927,18 @@ typedef struct ivas_masa_decoder_ext_out_meta_struct
{
MASA_DECRIPTIVE_META descriptiveMeta;
- uint16_t directionIndex[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS];
- uint8_t directToTotalRatio[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS];
- uint8_t spreadCoherence[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS];
+ UWord16 directionIndex[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS];
+ UWord8 directToTotalRatio[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS];
+ UWord8 spreadCoherence[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS];
- uint8_t surroundCoherence[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS];
- uint8_t diffuseToTotalRatio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS];
+ UWord8 surroundCoherence[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS];
+ UWord8 diffuseToTotalRatio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS];
} MASA_DECODER_EXT_OUT_META;
typedef struct ivas_masa_decoder_data_struct
{
- int16_t band_mapping[MASA_FREQUENCY_BANDS + 1];
+ Word16 band_mapping[MASA_FREQUENCY_BANDS + 1];
SPHERICAL_GRID_DATA *sph_grid16;
MASA_DECODER_EXT_OUT_META *extOutMeta;
@@ -957,32 +957,32 @@ typedef struct ivas_masa_decoder_struct
/* Data structure for MASA_ISM rendering */
typedef struct ivas_masa_ism_data_structure
{
- int16_t azimuth_ism[MAX_NUM_OBJECTS][MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR];
- int16_t elevation_ism[MAX_NUM_OBJECTS][MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR];
+ Word16 azimuth_ism[MAX_NUM_OBJECTS][MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR];
+ Word16 elevation_ism[MAX_NUM_OBJECTS][MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR];
Word32 energy_ratio_ism_fx[MAX_NUM_OBJECTS][MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR][CLDFB_NO_CHANNELS_MAX]; /* Q30 */
Word32 masa_to_total_energy_ratio_fx[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; /* Q30 */
- int16_t azimuth_ism_edited[MAX_NUM_OBJECTS];
- int16_t elevation_ism_edited[MAX_NUM_OBJECTS];
- uint8_t ism_is_edited[MAX_NUM_OBJECTS];
+ Word16 azimuth_ism_edited[MAX_NUM_OBJECTS];
+ Word16 elevation_ism_edited[MAX_NUM_OBJECTS];
+ UWord8 ism_is_edited[MAX_NUM_OBJECTS];
- int16_t idx_separated_ism;
- int16_t azimuth_separated_ism[MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR];
- int16_t elevation_separated_ism[MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR];
+ Word16 idx_separated_ism;
+ Word16 azimuth_separated_ism[MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR];
+ Word16 elevation_separated_ism[MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR];
Word32 q_azimuth_old_fx[MAX_NUM_OBJECTS]; /* Q22 */
Word32 q_elevation_old_fx[MAX_NUM_OBJECTS]; /* Q22 */
Word16 ismPreprocMatrix_fx[2][2][CLDFB_NO_CHANNELS_MAX]; /* Q15 */
- uint8_t objectsMoved;
+ UWord8 objectsMoved;
Word32 eneMoveIIR_fx[2][CLDFB_NO_CHANNELS_MAX]; /*Q-22*/
Word32 enePreserveIIR_fx[2][CLDFB_NO_CHANNELS_MAX]; /*Q-22*/
Word32 preprocEneTarget_fx[CLDFB_NO_CHANNELS_MAX]; /*Q-19*/
Word32 preprocEneRealized_fx[CLDFB_NO_CHANNELS_MAX]; /*Q-19*/
Word32 **delayBuffer_fx; /* Q11 */
- int16_t delayBuffer_size;
- int16_t delayBuffer_nchan;
+ Word16 delayBuffer_size;
+ Word16 delayBuffer_nchan;
} MASA_ISM_DATA, *MASA_ISM_DATA_HANDLE;
@@ -1000,41 +1000,41 @@ typedef struct decoder_tc_buffer_structure
Word16 no_channels; /*Stores no of channels in tc_fx with values*/
#endif
Word16 q_tc_fx;
- TC_BUFFER_MODE tc_buffer_mode; /* mode of the buffer (no buffering, render buffering, out buffering) */
- int16_t nchan_transport_jbm; /* number of TCs after TC decoding */
- int16_t nchan_transport_internal; /* total number of TC buffer channels, can include e.g. TD decorr data */
- int16_t nchan_buffer_full; /* number of channels to be fully buffered */
- int16_t n_samples_available; /* samples still available for rendering in the current frame */
- int16_t n_samples_buffered; /* full number of samples in the buffer (including spill to next frame) */
- int16_t n_samples_rendered; /* samples already rendered in the current frame */
- int16_t n_samples_granularity; /* render granularity */
- int16_t n_samples_flushed;
- int16_t subframe_nbslots[MAX_JBM_SUBFRAMES_5MS];
- int16_t nb_subframes;
- int16_t subframes_rendered;
- int16_t slots_rendered;
- int16_t num_slots;
- int16_t n_samples_discard; /* number of samples to discard from the beginning of the output */
+ TC_BUFFER_MODE tc_buffer_mode; /* mode of the buffer (no buffering, render buffering, out buffering) */
+ Word16 nchan_transport_jbm; /* number of TCs after TC decoding */
+ Word16 nchan_transport_internal; /* total number of TC buffer channels, can include e.g. TD decorr data */
+ Word16 nchan_buffer_full; /* number of channels to be fully buffered */
+ Word16 n_samples_available; /* samples still available for rendering in the current frame */
+ Word16 n_samples_buffered; /* full number of samples in the buffer (including spill to next frame) */
+ Word16 n_samples_rendered; /* samples already rendered in the current frame */
+ Word16 n_samples_granularity; /* render granularity */
+ Word16 n_samples_flushed;
+ Word16 subframe_nbslots[MAX_JBM_SUBFRAMES_5MS];
+ Word16 nb_subframes;
+ Word16 subframes_rendered;
+ Word16 slots_rendered;
+ Word16 num_slots;
+ Word16 n_samples_discard; /* number of samples to discard from the beginning of the output */
} DECODER_TC_BUFFER, *DECODER_TC_BUFFER_HANDLE;
typedef struct jbm_metadata_structure
{
- int16_t sf_write_idx;
- int16_t sf_md_buffer_length;
+ Word16 sf_write_idx;
+ Word16 sf_md_buffer_length;
- uint16_t directionIndexBuffer[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES * MASA_JBM_RINGBUFFER_FRAMES][MASA_FREQUENCY_BANDS];
- uint8_t directToTotalRatioBuffer[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES * MASA_JBM_RINGBUFFER_FRAMES][MASA_FREQUENCY_BANDS];
- uint8_t spreadCoherenceBuffer[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES * MASA_JBM_RINGBUFFER_FRAMES][MASA_FREQUENCY_BANDS];
- uint8_t surroundCoherenceBuffer[MAX_PARAM_SPATIAL_SUBFRAMES * MASA_JBM_RINGBUFFER_FRAMES][MASA_FREQUENCY_BANDS];
- uint8_t diffuseToTotalRatioBuffer[MAX_PARAM_SPATIAL_SUBFRAMES * MASA_JBM_RINGBUFFER_FRAMES][MASA_FREQUENCY_BANDS];
- uint8_t numberOfDirections[MAX_PARAM_SPATIAL_SUBFRAMES * MASA_JBM_RINGBUFFER_FRAMES]; /* Descriptive metadata, value is 0 or 1 */
+ UWord16 directionIndexBuffer[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES * MASA_JBM_RINGBUFFER_FRAMES][MASA_FREQUENCY_BANDS];
+ UWord8 directToTotalRatioBuffer[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES * MASA_JBM_RINGBUFFER_FRAMES][MASA_FREQUENCY_BANDS];
+ UWord8 spreadCoherenceBuffer[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES * MASA_JBM_RINGBUFFER_FRAMES][MASA_FREQUENCY_BANDS];
+ UWord8 surroundCoherenceBuffer[MAX_PARAM_SPATIAL_SUBFRAMES * MASA_JBM_RINGBUFFER_FRAMES][MASA_FREQUENCY_BANDS];
+ UWord8 diffuseToTotalRatioBuffer[MAX_PARAM_SPATIAL_SUBFRAMES * MASA_JBM_RINGBUFFER_FRAMES][MASA_FREQUENCY_BANDS];
+ UWord8 numberOfDirections[MAX_PARAM_SPATIAL_SUBFRAMES * MASA_JBM_RINGBUFFER_FRAMES]; /* Descriptive metadata, value is 0 or 1 */
- int16_t slot_read_idx;
- int16_t slot_write_idx;
- int16_t slot_md_buffer_length;
+ Word16 slot_read_idx;
+ Word16 slot_write_idx;
+ Word16 slot_md_buffer_length;
- int16_t sf_to_slot_map[MAX_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME * MASA_JBM_RINGBUFFER_FRAMES];
+ Word16 sf_to_slot_map[MAX_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME * MASA_JBM_RINGBUFFER_FRAMES];
} JBM_METADATA, *JBM_METADATA_HANDLE;
@@ -1045,25 +1045,25 @@ typedef struct jbm_metadata_structure
typedef struct decoder_config_structure
{
- int32_t ivas_total_brate; /* IVAS total bitrate in bps */
- int32_t last_ivas_total_brate; /* last IVAS total bitrate in bps */
- int32_t output_Fs; /* output signal sampling frequency in Hz */
- int16_t nchan_out; /* number of output audio channels */
+ Word32 ivas_total_brate; /* IVAS total bitrate in bps */
+ Word32 last_ivas_total_brate; /* last IVAS total bitrate in bps */
+ Word32 output_Fs; /* output signal sampling frequency in Hz */
+ Word16 nchan_out; /* number of output audio channels */
AUDIO_CONFIG output_config; /* output audio configuration */
- int16_t Opt_LsCustom; /* indicates whether loudspeaker custom setup is used */
- int16_t Opt_HRTF_binary; /* indicates whether HRTF binary file is used */
- int16_t Opt_Headrotation; /* indicates whether head-rotation is used */
- int16_t Opt_RendConfigCustom; /* indicates whether Renderer configuration custom setup is used */
+ Word16 Opt_LsCustom; /* indicates whether loudspeaker custom setup is used */
+ Word16 Opt_HRTF_binary; /* indicates whether HRTF binary file is used */
+ Word16 Opt_Headrotation; /* indicates whether head-rotation is used */
+ Word16 Opt_RendConfigCustom; /* indicates whether Renderer configuration custom setup is used */
IVAS_HEAD_ORIENT_TRK_T orientation_tracking; /* indicates orientation tracking type */
- int16_t Opt_non_diegetic_pan; /* indicates diegetic or not */
+ Word16 Opt_non_diegetic_pan; /* indicates diegetic or not */
Word16 non_diegetic_pan_gain_fx; /* non diegetic panning gain*/ /* Q15 */
- int16_t Opt_AMR_WB; /* flag indicating AMR-WB IO mode */
- int16_t Opt_ExternalOrientation; /* indiates whether external orientations are used */
- int16_t Opt_dpid_on; /* indicates whether Directivity pattern option is used */
- int16_t Opt_aeid_on; /* indicates whether Acoustic environment option is used */
- int16_t Opt_tsm; /* indicates whether time scaling modification is activated */
+ Word16 Opt_AMR_WB; /* flag indicating AMR-WB IO mode */
+ Word16 Opt_ExternalOrientation; /* indiates whether external orientations are used */
+ Word16 Opt_dpid_on; /* indicates whether Directivity pattern option is used */
+ Word16 Opt_aeid_on; /* indicates whether Acoustic environment option is used */
+ Word16 Opt_tsm; /* indicates whether time scaling modification is activated */
IVAS_RENDER_FRAMESIZE render_framesize;
- int16_t Opt_delay_comp; /* flag indicating delay compensation active */
+ Word16 Opt_delay_comp; /* flag indicating delay compensation active */
#ifdef SPLIT_REND_WITH_HEAD_ROT
int16_t Opt_Limiter;
#endif
@@ -1084,8 +1084,8 @@ typedef struct Decoder_Struct
IVAS_FORMAT ivas_format; /* IVAS format */
IVAS_FORMAT last_ivas_format; /* last frame IVAS format */
- int16_t sid_format; /* IVAS format indicator from SID frame */
- int16_t nchan_transport; /* number of transport channels */
+ Word16 sid_format; /* IVAS format indicator from SID frame */
+ Word16 nchan_transport; /* number of transport channels */
IVAS_OUTPUT_SETUP hOutSetup; /* output setup structure */
AUDIO_CONFIG intern_config; /* internal audio configuration */
IVAS_OUTPUT_SETUP hIntSetup; /* internal setup structure */
@@ -1093,24 +1093,24 @@ typedef struct Decoder_Struct
AUDIO_CONFIG transport_config; /* transport audio configuration */
IVAS_OUTPUT_SETUP hTransSetup; /* transport setup structure */
- int16_t element_mode_init; /* element mode used at initialization */
- int16_t codec_mode; /* Mode 1 or 2 */
- int16_t ini_frame; /* initialization frames counter */
- int16_t ini_active_frame; /* initialization active frames counter */
+ Word16 element_mode_init; /* element mode used at initialization */
+ Word16 codec_mode; /* Mode 1 or 2 */
+ Word16 ini_frame; /* initialization frames counter */
+ Word16 ini_active_frame; /* initialization active frames counter */
- int16_t bfi; /* FEC - bad frame indicator */
- int16_t BER_detect; /* BER detect flag */
- int16_t num_bits; /* BER detect flag */
+ Word16 bfi; /* FEC - bad frame indicator */
+ Word16 BER_detect; /* BER detect flag */
+ Word16 num_bits; /* BER detect flag */
- uint16_t *bit_stream; /* Pointer to bitstream buffer */
- int16_t writeFECoffset; /* parameter for debugging JBM stuff */
+ UWord16 *bit_stream; /* Pointer to bitstream buffer */
+ Word16 writeFECoffset; /* parameter for debugging JBM stuff */
IVAS_LIMITER_HANDLE hLimiter; /* Limiter handle */
/* core-decoder modules */
- int16_t nSCE; /* number of total SCEs */
- int16_t nCPE; /* number of total CPEs */
- int16_t nCPE_old; /* number of total CPEs available in the last frame before bitrate switching */
+ Word16 nSCE; /* number of total SCEs */
+ Word16 nCPE; /* number of total CPEs */
+ Word16 nCPE_old; /* number of total CPEs available in the last frame before bitrate switching */
SCE_DEC_HANDLE hSCE[MAX_SCE]; /* SCE handles */
CPE_DEC_HANDLE hCPE[MCT_MAX_BLOCKS]; /* CPE handles */
@@ -1129,12 +1129,12 @@ typedef struct Decoder_Struct
LFE_DEC_HANDLE hLFE; /* LFE handle */
ISM_MODE ism_mode; /* ISM format mode */
- int16_t nchan_ism; /* number of ISM channels */
+ Word16 nchan_ism; /* number of ISM channels */
MC_MODE mc_mode; /* MC format mode */
- int16_t sba_order; /* Ambisonic (SBA) order */
- int16_t sba_planar; /* Ambisonic (SBA) planar flag */
- int16_t sba_analysis_order; /* Ambisonic (SBA) order used for analysis and coding */
- int16_t sba_dirac_stereo_flag; /* flag indicating stereo output for SBA DirAC modes with 1 TC */
+ Word16 sba_order; /* Ambisonic (SBA) order */
+ Word16 sba_planar; /* Ambisonic (SBA) planar flag */
+ Word16 sba_analysis_order; /* Ambisonic (SBA) order used for analysis and coding */
+ Word16 sba_dirac_stereo_flag; /* flag indicating stereo output for SBA DirAC modes with 1 TC */
/* rendering modules */
RENDERER_TYPE renderer_type; /* renderer type */
@@ -1161,7 +1161,7 @@ typedef struct Decoder_Struct
Word32 *hoa_dec_mtx; /* Pointer to decoder matrix for SBA */
HEAD_TRACK_DATA_HANDLE hHeadTrackData; /* Head tracking data structure */
RENDER_CONFIG_DATA *hRenderConfig; /* Renderer config pointer */
- int32_t binaural_latency_ns; /* Binauralization latency in ns */
+ Word32 binaural_latency_ns; /* Binauralization latency in ns */
EXTERNAL_ORIENTATION_HANDLE hExtOrientationData; /* External orientation data structure */
COMBINED_ORIENTATION_HANDLE hCombinedOrientationData; /* Combined external and head orientation data structure */
DIRAC_REND_HANDLE hDirACRend; /* DirAC renderer handle */
@@ -1169,7 +1169,7 @@ typedef struct Decoder_Struct
MASA_ISM_DATA_HANDLE hMasaIsmData; /* OMASA rendering handle */
SBA_ISM_DATA_HANDLE hSbaIsmData; /* OSBA rendering handle */
- int16_t flag_omasa_brate;
+ Word16 flag_omasa_brate;
#ifdef SPLIT_REND_WITH_HEAD_ROT
ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE hSplitBinRend; /* ISAR split binaural rendering handle */
@@ -1180,9 +1180,9 @@ typedef struct Decoder_Struct
DECODER_TC_BUFFER_HANDLE hTcBuffer; /* JBM structure */
JBM_METADATA_HANDLE hJbmMetadata; /* Structure for metadata buffering in JBM */
- int32_t last_active_ivas_total_brate;
- int16_t ism_extmeta_active; /* Extended metadata active in decoder */
- int16_t ism_extmeta_cnt; /* Change frame counter for extended metadata */
+ Word32 last_active_ivas_total_brate;
+ Word16 ism_extmeta_active; /* Extended metadata active in decoder */
+ Word16 ism_extmeta_cnt; /* Change frame counter for extended metadata */
Word32 **mem_hp20_out_fx;
Word32 *p_output_fx[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS]; /* Word32-output audio buffers */
Word16 p_out_len;/*Stores the total no of channels for which memory is allocated to p_output_fx*/
diff --git a/lib_dec/ivas_stereo_adapt_GR_dec_fx.c b/lib_dec/ivas_stereo_adapt_GR_dec_fx.c
index 8446af47d29a991d5f4b8a8c0a6a777fac572d34..2bade4786e8c8fde9f33e95ff0cbdeaaedc95ffb 100644
--- a/lib_dec/ivas_stereo_adapt_GR_dec_fx.c
+++ b/lib_dec/ivas_stereo_adapt_GR_dec_fx.c
@@ -34,7 +34,6 @@
#include "options.h"
#include "prot_fx.h"
#include "wmc_auto.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "rom_dec.h"
#include "ivas_prot_fx.h"
diff --git a/lib_dec/ivas_stereo_cng_dec.c b/lib_dec/ivas_stereo_cng_dec.c
index 4d50ba3508a31475b8e22806485244136461c5ef..223860db0f18067279a25906c3832a1673cdbac2 100644
--- a/lib_dec/ivas_stereo_cng_dec.c
+++ b/lib_dec/ivas_stereo_cng_dec.c
@@ -35,7 +35,6 @@
#include
#include "cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
diff --git a/lib_dec/ivas_stereo_dft_dec.c b/lib_dec/ivas_stereo_dft_dec.c
index 166ac72e57d4b4cef7d523005e1080ff744c7e47..f0fd1978b2e03862de5a38a572aff48efa0c3002 100644
--- a/lib_dec/ivas_stereo_dft_dec.c
+++ b/lib_dec/ivas_stereo_dft_dec.c
@@ -38,7 +38,6 @@
#include "rom_com.h"
#include "rom_dec.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
#include "ivas_rom_com_fx.h"
diff --git a/lib_dec/ivas_stereo_dft_dec_dmx_fx.c b/lib_dec/ivas_stereo_dft_dec_dmx_fx.c
index 0781d49a679fc881a89f96bf325e49cd7d78d2de..e82005965b6a452c7d327e89d07b42b082048c7b 100644
--- a/lib_dec/ivas_stereo_dft_dec_dmx_fx.c
+++ b/lib_dec/ivas_stereo_dft_dec_dmx_fx.c
@@ -36,7 +36,6 @@
#include
#include "cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
#include "ivas_rom_dec.h"
diff --git a/lib_dec/ivas_stereo_dft_dec_fx.c b/lib_dec/ivas_stereo_dft_dec_fx.c
index 8dcc7ada9fe358052eabf1f4f004b6d3ca846d23..3d9e58ad1adda592d13fac5b3dc29d89aaa45fab 100644
--- a/lib_dec/ivas_stereo_dft_dec_fx.c
+++ b/lib_dec/ivas_stereo_dft_dec_fx.c
@@ -38,7 +38,6 @@
#include "rom_com.h"
#include "rom_dec.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
@@ -259,7 +258,8 @@ void stereo_dft_dec_reset_fx(
move16();
hStereoDft->ipd_xfade_prev_fx = 0;
move32();
-
+ hStereoDft->frame_sid_nodata = 0;
+ move16();
#ifdef MSAN_FIX
FOR( b = 0; b < 2 * IVAS_MAX_NUM_BANDS; b++ )
{
@@ -1368,23 +1368,23 @@ void stereo_dft_dec_res_fx(
/*Inverse MDCT*/
TCX_MDCT_Inverse( res_buf, q_res, win, STEREO_DFT_OVL_8k, L_FRAME8k - STEREO_DFT_OVL_8k, STEREO_DFT_OVL_8k, IVAS_CPE_DFT );
+ scale_sig( win, L_FRAME8k + STEREO_DFT_OVL_8k, -1 );
+
+ Word16 q_shift = sub( hCPE->hStereoDft->q_res_cod_mem_fx, Q16 );
IF( !prev_bfi )
{
/*OLA*/
/*overlapping parts*/
- Word16 q_shift = sub( hCPE->hStereoDft->q_res_cod_mem_fx, Q16 );
+
FOR( i = 0; i < STEREO_DFT_OVL_8k; i++ )
{
- win[i] = extract_h( L_add( hCPE->hStereoDft->res_cod_mem_fx[i], L_shl( L_mult( win[i], hCPE->hStereoDft->win_8k_fx[i] ), q_shift ) ) ); /* q_res_cod_mem_fx */
+ win[i] = extract_h( L_add( L_shr( hCPE->hStereoDft->res_cod_mem_fx[i], 1 ), L_shl( L_mult( win[i], hCPE->hStereoDft->win_8k_fx[i] ), q_shift ) ) ); /* q_res_cod_mem_fx -17 (q_shift -1)*/
move16();
- hCPE->hStereoDft->res_cod_mem_fx[i] = L_mult( win[L_FRAME8k + i], hCPE->hStereoDft->win_8k_fx[STEREO_DFT_OVL_8k - 1 - i] ); /* q_res_cod_mem_fx */
+ hCPE->hStereoDft->res_cod_mem_fx[i] = L_shl( L_mult( win[L_FRAME8k + i], hCPE->hStereoDft->win_8k_fx[STEREO_DFT_OVL_8k - 1 - i] ), 1 ); /* -1 +15 +1 +1 */
move32();
}
- IF( q_shift != 0 )
- {
- v_shr_16( &win[STEREO_DFT_OVL_8k], negate( q_shift ), &win[STEREO_DFT_OVL_8k], L_FRAME8k );
- }
- hCPE->hStereoDft->q_res_cod_mem_fx = Q16;
+
+
move16();
}
ELSE
@@ -1396,23 +1396,30 @@ void stereo_dft_dec_res_fx(
move16();
FOR( i = 0; i < STEREO_DFT_OVL_8k; i++ )
{
- win[i] = extract_h( Madd_32_16( Mpy_32_16_1( hCPE->hStereoDft->res_cod_mem_fx[i], sub( MAX_16, mult( fac, fac ) ) ),
- L_mult( hCPE->hStereoDft->win_8k_fx[i], win[i] ),
- sub( MAX_16, mult( sub( MAX_16, fac ), sub( MAX_16, fac ) ) ) ) ); /* Q0 */
+ win[i] = extract_h( Madd_32_16( Mpy_32_16_1( L_shr( hCPE->hStereoDft->res_cod_mem_fx[i], 1 ), sub( MAX_16, mult( fac, fac ) ) ),
+ L_shl( L_mult( hCPE->hStereoDft->win_8k_fx[i], win[i] ), q_shift ),
+ sub( MAX_16, mult( sub( MAX_16, fac ), sub( MAX_16, fac ) ) ) ) ); /* Q(q_shift -1) */
move16();
- hCPE->hStereoDft->res_cod_mem_fx[i] = L_mult( win[L_FRAME8k + i], hCPE->hStereoDft->win_8k_fx[STEREO_DFT_OVL_8k - 1 - i] ); /* Q16 */
+ hCPE->hStereoDft->res_cod_mem_fx[i] = L_shl( L_mult( win[L_FRAME8k + i], hCPE->hStereoDft->win_8k_fx[STEREO_DFT_OVL_8k - 1 - i] ), 1 ); /* Q16 */
move32();
fac = add( fac, step );
}
}
- Copy( win, out_16, L_FRAME8k ); /* Q0 */
+ IF( q_shift != 0 )
+ {
+ v_shr_16( &win[STEREO_DFT_OVL_8k], negate( q_shift ), &win[STEREO_DFT_OVL_8k], L_FRAME8k );
+ }
+
+ hCPE->hStereoDft->q_res_cod_mem_fx = Q16;
+
+ Copy( win, out_16, L_FRAME8k ); /* Q(q_shift -1 ) */
IF( hCPE->hCoreCoder[0]->core == ACELP_CORE )
{
/* bass post-filter */
bass_psfilter_fx( hCPE->hStereoDft->hBpf, hCPE->hCoreCoder[0]->Opt_AMR_WB, out_16, L_FRAME8k, hCPE->hCoreCoder[0]->old_pitch_buf_16_fx + ( L_FRAME8k / STEREO_DFT_L_SUBFR_8k ), hCPE->hCoreCoder[0]->bpf_off,
- hCPE->hCoreCoder[0]->stab_fac_fx, &hCPE->hStereoDft->stab_fac_smooth_res_fx, hCPE->hCoreCoder[0]->last_coder_type, 0, bpf_error_signal_8k_16 );
+ hCPE->hCoreCoder[0]->stab_fac_fx, &hCPE->hStereoDft->stab_fac_smooth_res_fx, hCPE->hCoreCoder[0]->last_coder_type, sub( q_shift, 1 ), bpf_error_signal_8k_16 );
Copy_Scale_sig_16_32_DEPREC( bpf_error_signal_8k_16, bpf_error_signal_8k, L_FRAME8k, Q15 ); /* Q15 */
res_bpf_flag = res_bpf_adapt_ivas_fx( hCPE->hStereoDft, bpf_error_signal_8k, res_buf, q_res );
@@ -1430,7 +1437,7 @@ void stereo_dft_dec_res_fx(
}
}
#ifdef FIX_ISSUE_1237
- Copy_Scale_sig_16_32_no_sat( out_16, output, L_FRAME8k, 15 ); /* Q15 */
+ Copy_Scale_sig_16_32_no_sat( out_16, output, L_FRAME8k, sub( 15, sub( q_shift, 1 ) ) ); /* Q15 */
#else
Copy_Scale_sig_16_32_DEPREC( out_16, output, L_FRAME8k, 16 ); /* Q16 */
#endif
@@ -1445,7 +1452,7 @@ void stereo_dft_dec_res_fx(
hCPE->hStereoDft->hBpf->pst_mem_deemp_err_fx = 0;
move16();
#ifdef FIX_ISSUE_1237
- Copy_Scale_sig_16_32_no_sat( out_16, output, L_FRAME8k, 15 ); /* Q15 */
+ Copy_Scale_sig_16_32_no_sat( out_16, output, L_FRAME8k, sub( 15, sub( q_shift, 1 ) ) ); /* Q15 */
#else
Copy_Scale_sig_16_32_DEPREC( out_16, output, L_FRAME8k, 16 ); /* Q16 */
#endif
@@ -1454,7 +1461,7 @@ void stereo_dft_dec_res_fx(
{
/* This step is needed to ensure output is properly populated with scaled values in all cases*/
#ifdef FIX_ISSUE_1237
- Copy_Scale_sig_16_32_no_sat( out_16, output, L_FRAME8k, 15 ); /* Q15 */
+ Copy_Scale_sig_16_32_no_sat( out_16, output, L_FRAME8k, sub( 15, sub( q_shift, 1 ) ) ); /* Q15 */
#else
Copy_Scale_sig_16_32_DEPREC( out_16, output, L_FRAME8k, 16 ); /* Q16 */
#endif
diff --git a/lib_dec/ivas_stereo_dft_plc_fx.c b/lib_dec/ivas_stereo_dft_plc_fx.c
index d3415a8eb6cb987b7bf3f1ff8a0c4f5a98ddc625..90d9c58235bda9d978657307b0547a9e1c8abda4 100644
--- a/lib_dec/ivas_stereo_dft_plc_fx.c
+++ b/lib_dec/ivas_stereo_dft_plc_fx.c
@@ -35,7 +35,6 @@
#include "cnst.h"
#include "prot_fx.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "math.h"
#include "wmc_auto.h"
diff --git a/lib_dec/ivas_stereo_eclvq_dec_fx.c b/lib_dec/ivas_stereo_eclvq_dec_fx.c
index 693df8c77c430cdcf5e6e29ac61a4cc627a1887b..dfa411145fc3ce2930203029047d821a1d37e45d 100644
--- a/lib_dec/ivas_stereo_eclvq_dec_fx.c
+++ b/lib_dec/ivas_stereo_eclvq_dec_fx.c
@@ -32,7 +32,6 @@
#include
#include "options.h"
-#include "ivas_prot.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
#include "ivas_rom_dec.h"
diff --git a/lib_dec/ivas_stereo_esf_dec_fx.c b/lib_dec/ivas_stereo_esf_dec_fx.c
index 80603f6c0f6e53b3acb19e5b2b80a75ec711401b..d4219f1e60464e7dbaf87c7effb4c814e18bc0ae 100644
--- a/lib_dec/ivas_stereo_esf_dec_fx.c
+++ b/lib_dec/ivas_stereo_esf_dec_fx.c
@@ -32,7 +32,6 @@
#include
#include "options.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_stat_dec.h"
#include "ivas_cnst.h"
diff --git a/lib_dec/ivas_stereo_ica_dec_fx.c b/lib_dec/ivas_stereo_ica_dec_fx.c
index b49ab53995a87adedca6677c9d331c9a05ce2f29..694aad0b4a921922562c30f727dfa570e52d3dc2 100644
--- a/lib_dec/ivas_stereo_ica_dec_fx.c
+++ b/lib_dec/ivas_stereo_ica_dec_fx.c
@@ -37,7 +37,6 @@
#include "cnst.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "wmc_auto.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
diff --git a/lib_dec/ivas_stereo_icbwe_dec_fx.c b/lib_dec/ivas_stereo_icbwe_dec_fx.c
index 22a8c4a900d6795e88996d08a1821f5c49d2375e..3b32072f300c229e5c36211909bff0bb84024d22 100644
--- a/lib_dec/ivas_stereo_icbwe_dec_fx.c
+++ b/lib_dec/ivas_stereo_icbwe_dec_fx.c
@@ -37,7 +37,6 @@
#include "cnst.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "wmc_auto.h"
#include "rom_com.h"
diff --git a/lib_dec/ivas_stereo_mdct_core_dec_fx.c b/lib_dec/ivas_stereo_mdct_core_dec_fx.c
index 04781a9cb9c426afba7c4897659d22294d958917..a6b350d3301a38c47499587c69b988d1fa1b3abf 100644
--- a/lib_dec/ivas_stereo_mdct_core_dec_fx.c
+++ b/lib_dec/ivas_stereo_mdct_core_dec_fx.c
@@ -37,7 +37,6 @@
#include "prot_fx.h"
#include "cnst.h"
#include "stat_com.h"
-#include "ivas_prot.h"
#include "ivas_stat_dec.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_dec/ivas_stereo_mdct_stereo_dec_fx.c b/lib_dec/ivas_stereo_mdct_stereo_dec_fx.c
index 69083a078be3d4e91ba75bfb642bf426bcc73753..5b1378a894fead3f6efabcef3e7746132dccad56 100644
--- a/lib_dec/ivas_stereo_mdct_stereo_dec_fx.c
+++ b/lib_dec/ivas_stereo_mdct_stereo_dec_fx.c
@@ -35,7 +35,6 @@
#include
#include "options.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "prot_fx.h"
#include "rom_com.h"
#include "wmc_auto.h"
@@ -602,7 +601,7 @@ ivas_error initMdctStereoDtxData_fx(
IF( st->cldfbAna == NULL )
{
/* open analysis for max. sampling rate 48kHz */
- IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -611,7 +610,7 @@ ivas_error initMdctStereoDtxData_fx(
IF( st->cldfbBPF == NULL )
{
/* open analysis BPF for max. internal sampling rate 16kHz */
- IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
diff --git a/lib_dec/ivas_stereo_switching_dec_fx.c b/lib_dec/ivas_stereo_switching_dec_fx.c
index 2dd2a30c37c684a39a9b83b680c498ca7f84d476..c70e606ac7c54298dc672c03b3e7b91dedadc02b 100644
--- a/lib_dec/ivas_stereo_switching_dec_fx.c
+++ b/lib_dec/ivas_stereo_switching_dec_fx.c
@@ -35,7 +35,6 @@
#include "cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_rom_com.h"
#include "assert.h"
@@ -206,7 +205,7 @@ static ivas_error allocate_CoreCoder_fx(
IF( st->cldfbAna == NULL )
{
/* open analysis for max. sampling rate 48kHz */
- IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -215,7 +214,7 @@ static ivas_error allocate_CoreCoder_fx(
IF( st->cldfbBPF == NULL )
{
/* open analysis BPF for max. internal sampling rate 16kHz */
- IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -753,7 +752,7 @@ ivas_error stereo_memory_dec_fx(
IF( st->cldfbAna == NULL )
{
- IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -762,7 +761,7 @@ ivas_error stereo_memory_dec_fx(
IF( st->cldfbBPF == NULL )
{
/* open analysis BPF for max. internal sampling rate 16kHz */
- IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -1101,7 +1100,7 @@ ivas_error stereo_memory_dec_fx(
{
IF( hCPE->hCoreCoder[i]->cldfbSyn == NULL ) /* could be NULL when we had the MCT LFE channel */
{
- IF( NE_32( ( error = openCldfb_ivas_fx( &hCPE->hCoreCoder[i]->cldfbSyn, CLDFB_SYNTHESIS, hCPE->hCoreCoder[i]->output_Fs, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &hCPE->hCoreCoder[i]->cldfbSyn, CLDFB_SYNTHESIS, hCPE->hCoreCoder[i]->output_Fs, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -2078,7 +2077,7 @@ void stereo_td2dft_update_fx(
)
{
Word16 ovl, ovl_TCX, dft32ms_ovl, hq_delay_comp;
- Word16 ns, nsLB;
+ Word16 ns, nsLB, i;
Word16 old_out_len, old_outLB_len;
Decoder_State **sts;
@@ -2181,9 +2180,9 @@ void stereo_td2dft_update_fx(
v_add_fx( sts[0]->hHQ_core->old_outLB_fx + nsLB, sts[1]->hHQ_core->old_outLB_fx + nsLB, hCPE->old_outLB_mdct_fx, old_outLB_len );
L_lerp_fx_q11( hCPE->old_outLB_mdct_fx, hCPE->old_outLB_mdct_fx, STEREO_MDCT2DFT_FADE_LEN_48k, old_outLB_len );
#ifndef MSAN_FIX
- for ( int i = 0; i < STEREO_MDCT2DFT_FADE_LEN_48k; i++ )
+ for ( i = 0; i < STEREO_MDCT2DFT_FADE_LEN_48k; i++ )
#else
- FOR( Word32 i = 0; i < old_outLB_len; i++ )
+ FOR( i = 0; i < old_outLB_len; i++ )
#endif
{
hCPE->old_outLB_mdct_fx[i] = L_shr( hCPE->old_outLB_mdct_fx[i], 1 ); /* Q11 */
@@ -2193,7 +2192,7 @@ void stereo_td2dft_update_fx(
#ifndef MSAN_FIX
for ( int i = 0; i < STEREO_MDCT2DFT_FADE_LEN_48k; i++ )
#else
- FOR( Word32 i = 0; i < old_out_len; i++ )
+ FOR( i = 0; i < old_out_len; i++ )
#endif
{
hCPE->old_out_mdct_fx[i] = L_shr( hCPE->old_out_mdct_fx[i], 1 ); /* q_old_out_mdct */
diff --git a/lib_dec/ivas_stereo_td_dec_fx.c b/lib_dec/ivas_stereo_td_dec_fx.c
index 8ab7da0355c4a237b0f41257571b7a4573e3f94b..023c9a2e5e3a1fc4dd97ded44e0ac846508e84ed 100644
--- a/lib_dec/ivas_stereo_td_dec_fx.c
+++ b/lib_dec/ivas_stereo_td_dec_fx.c
@@ -36,7 +36,6 @@
#include "cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "ivas_cnst.h"
#include "wmc_auto.h"
@@ -338,45 +337,6 @@ void tdm_configure_dec_fx(
return;
}
-/*-------------------------------------------------------------------*
- * Function tdm_downmix_plain()
- *
- * downmix Left+Right to Primary+Secondary channel
- *-------------------------------------------------------------------*/
-
-void tdm_upmix_plain(
- float Left[], /* o : left channel */
- float Right[], /* o : right channel */
- const float PCh_2_L[], /* i : primary channel */
- const float SCh_2_R[], /* i : secondary channel */
- const float LR_ratio, /* i : mixing ratio */
- const float inv_den_LR_ratio, /* i : inverse mixing ration */
- const int16_t start_index, /* i : start index */
- const int16_t end_index, /* i : end index */
- const int16_t plus_minus_flag /* i : plus/minus flag */
-)
-{
- int16_t i;
-
- if ( plus_minus_flag == 1 )
- {
- for ( i = start_index; i < end_index; i++ )
- {
- Left[i] = ( LR_ratio * ( PCh_2_L[i] - SCh_2_R[i] ) + SCh_2_R[i] ) * inv_den_LR_ratio;
- Right[i] = ( -LR_ratio * ( PCh_2_L[i] + SCh_2_R[i] ) + PCh_2_L[i] ) * inv_den_LR_ratio;
- }
- }
- else
- {
- for ( i = start_index; i < end_index; i++ )
- {
- Left[i] = ( LR_ratio * ( PCh_2_L[i] + SCh_2_R[i] ) - SCh_2_R[i] ) * inv_den_LR_ratio;
- Right[i] = ( LR_ratio * ( PCh_2_L[i] - SCh_2_R[i] ) - PCh_2_L[i] ) * inv_den_LR_ratio;
- }
- }
-
- return;
-}
void tdm_upmix_plain_fx(
Word32 Left_fx[], /* o : left channel Qx*/
Word32 Right_fx[], /* o : right channel Qx*/
diff --git a/lib_dec/ivas_svd_dec_fx.c b/lib_dec/ivas_svd_dec_fx.c
index bb73fe7f02d501b2fe88b45dfd34b31e950a40a4..1467687d8b49a576e6b28bbc4ac58a7ccdd2065d 100644
--- a/lib_dec/ivas_svd_dec_fx.c
+++ b/lib_dec/ivas_svd_dec_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_stat_dec.h"
#include "ivas_cnst.h"
#include
@@ -306,7 +305,6 @@ Word16 svd_fx(
Word16 iCh, jCh;
Word16 lengthSingularValues;
Word16 errorMessage, condition;
- // int16_t max_length = ((nChannelsL > nChannelsC) ? nChannelsL : nChannelsC);
Word32 secDiag_fx[MAX_OUTPUT_CHANNELS];
#ifndef FIX_1010_OPT_SEC_SINGLE_RESCALE
Word16 secDiag_fx_e = 0;
diff --git a/lib_dec/ivas_tcx_core_dec_fx.c b/lib_dec/ivas_tcx_core_dec_fx.c
index c908e4dc3f3eaecc2ee926f888d5b399b8888799..07eba9e6420b1fb940e78273467317b8d61ae136 100644
--- a/lib_dec/ivas_tcx_core_dec_fx.c
+++ b/lib_dec/ivas_tcx_core_dec_fx.c
@@ -40,7 +40,6 @@
#include "wmc_auto.h"
#include "basop_proto_func.h"
#include "stat_com.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
/*-------------------------------------------------------------*
diff --git a/lib_dec/ivas_td_low_rate_dec_fx.c b/lib_dec/ivas_td_low_rate_dec_fx.c
index 63819b05619f23fa244bad37563f0fa3334b3118..98c1a6a79dd6fcd080752f1b40a09f483c7cf8da 100644
--- a/lib_dec/ivas_td_low_rate_dec_fx.c
+++ b/lib_dec/ivas_td_low_rate_dec_fx.c
@@ -38,7 +38,6 @@
#include "ivas_rom_com.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
void tdm_low_rate_dec_fx(
diff --git a/lib_dec/jbm_jb4sb.h b/lib_dec/jbm_jb4sb.h
index 939fad2cb042b0af13a76b9813945befbfc2af57..5b5ff16c5f2a19c2e06b74cf8bd1e456feeb8545 100644
--- a/lib_dec/jbm_jb4sb.h
+++ b/lib_dec/jbm_jb4sb.h
@@ -67,7 +67,7 @@ struct JB4_DATAUNIT
Word16 qBit;
/** the binary encoded access unit */
- uint8_t *data;
+ UWord8 *data;
/** the size of the binary encoded access unit [bits] */
UWord16 dataSize;
diff --git a/lib_dec/jbm_pcmdsp_apa.c b/lib_dec/jbm_pcmdsp_apa.c
index ac6a28b86c99079fe16cf201a5fd06af33610ab5..fc793dff01c72047684bc8a5db1fe53ab98f5644 100644
--- a/lib_dec/jbm_pcmdsp_apa.c
+++ b/lib_dec/jbm_pcmdsp_apa.c
@@ -900,7 +900,7 @@ UWord8 apa_exec_ivas_fx(
UWord32 statsResetThreshold, statsResetShift;
Word16 Q_a_out;
- Q_a_out = add( getScaleFactor32_copy( a_in, L_mult0( ps->num_channels, APA_BUF_PER_CHANNEL ) ), Q11 - Q16 );
+ Q_a_out = add( getScaleFactor32_copy( a_in, L_mult0( ps->num_channels, APA_BUF_PER_CHANNEL ) ), Q11 - Q16 - Q1 );
statsResetThreshold = 1637;
move32();
statsResetShift = 2;
diff --git a/lib_dec/jbm_pcmdsp_apa.h b/lib_dec/jbm_pcmdsp_apa.h
index 1fe7481df8bcaf5d220fde8a0dd0a6ea262b9816..7955d0ea6e1b86aa6be7d6dcab90b331ef7c463f 100644
--- a/lib_dec/jbm_pcmdsp_apa.h
+++ b/lib_dec/jbm_pcmdsp_apa.h
@@ -92,7 +92,7 @@ typedef struct apa_state_t *PCMDSP_APA_HANDLE;
/*! Allocates memory for state struct and initializes elements.
* @return 0 on success, 1 on failure */
ivas_error apa_init( apa_state_t **s,
- const int32_t num_channels );
+ const Word32 num_channels );
/*! Sets state variables to initial value. */
void apa_reset( apa_state_t *s );
@@ -106,7 +106,7 @@ void apa_reset( apa_state_t *s );
* @param[in] output_Fs sample rate [Hz]
* @param[in] num_channels number of channels
* @return 0 on success, 1 on failure */
-bool apa_set_rate( apa_state_t *ps, const int32_t output_Fs );
+bool apa_set_rate( apa_state_t *ps, const Word32 output_Fs );
/*! Set scaling.
* The scale is given in % and will be valid until changed again.
@@ -120,7 +120,7 @@ bool apa_set_renderer_residual_samples( apa_state_t *ps, UWord16 l_r_buf );
bool apa_set_evs_compat_mode( apa_state_t *ps, bool mode );
-uint8_t apa_reconfigure( apa_state_t *ps, uint16_t num_channels, uint16_t l_ts );
+UWord8 apa_reconfigure( apa_state_t *ps, UWord16 num_channels, UWord16 l_ts );
bool apa_set_complexity_options( apa_state_t *s, UWord16 wss, UWord16 css );
@@ -129,5 +129,5 @@ bool apa_set_quality( apa_state_t *s, Word32 quality, UWord16 qualityred, UWord1
bool apa_exit( apa_state_t **s );
UWord8 apa_exec_ivas_fx( apa_state_t *s, const Word32 a_in[], UWord16 l_in, UWord16 maxScaling, Word32 a_out[], UWord16 *l_out );
-uint8_t apa_exec_fx( apa_state_t *s, const Word16 a_in[], UWord16 l_in, UWord16 maxScaling, Word16 a_out[], UWord16 *l_out );
+UWord8 apa_exec_fx( apa_state_t *s, const Word16 a_in[], UWord16 l_in, UWord16 maxScaling, Word16 a_out[], UWord16 *l_out );
#endif /* JBM_PCMDSP_APA_H */
diff --git a/lib_dec/jbm_pcmdsp_window.h b/lib_dec/jbm_pcmdsp_window.h
index 3551380de6a391b59e7d7a16ef1b67c1ca11ce48..1d193433e7b90f55d7a22902932a7bdaf19f17c2 100644
--- a/lib_dec/jbm_pcmdsp_window.h
+++ b/lib_dec/jbm_pcmdsp_window.h
@@ -52,7 +52,7 @@
* <------>
* n
*/
-void hannWindow( uint16_t n, float *w );
+void hannWindow( UWord16 n, float *w );
/** Overlap/Add of two signal with a given window. */
/** @param[in] fadeOut signal to fade out
diff --git a/lib_dec/lib_dec_fx.c b/lib_dec/lib_dec_fx.c
index 80eff327c788ab880e5718b174139d5d6bba6e2c..561384c87e3c2fd7e408cefecfa6dfd9e57a7e46 100644
--- a/lib_dec/lib_dec_fx.c
+++ b/lib_dec/lib_dec_fx.c
@@ -35,8 +35,7 @@
#include
#include
#include "ivas_cnst.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "prot_fx.h"
#include "isar_prot.h"
#include "lib_isar_pre_rend.h"
@@ -1045,7 +1044,7 @@ ivas_error IVAS_DEC_FeedFrame_Serial(
}
}
- IF( NE_32( ( error = read_indices( hIvasDec->st_ivas, serial, num_bits, &hIvasDec->prev_ft_speech, &hIvasDec->CNG, bfi ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = read_indices_fx( hIvasDec->st_ivas, serial, num_bits, &hIvasDec->prev_ft_speech, &hIvasDec->CNG, bfi ) ), IVAS_ERR_OK ) )
{
return error;
}
diff --git a/lib_dec/lsf_dec_fx.c b/lib_dec/lsf_dec_fx.c
index d263e6dd34ef5e958474f8be275b98e7582de6bc..21e8705f3aa64d7b7efcb4a8b7b929fbfe49a626 100644
--- a/lib_dec/lsf_dec_fx.c
+++ b/lib_dec/lsf_dec_fx.c
@@ -7,7 +7,6 @@
#include "cnst.h" /* Common constants */
#include "rom_com.h" /* Static table prototypes */
#include "prot_fx.h" /* Function prototypes */
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
/*-------------------------------------------------------------------*
* Local functions
diff --git a/lib_enc/ACcontextMapping_enc_fx.c b/lib_enc/ACcontextMapping_enc_fx.c
index 44439540f0ba0b7aee817f8c86c81008613d8f5d..c52fddf97ee55b28084b7e44ba010a1edf76d3d4 100644
--- a/lib_enc/ACcontextMapping_enc_fx.c
+++ b/lib_enc/ACcontextMapping_enc_fx.c
@@ -13,7 +13,6 @@
#include "ivas_rom_com.h"
#include "ivas_rom_enc.h"
#include "prot_fx_enc.h"
-#include "ivas_prot.h" /* Range coder header file */
#define MAKE_NUMBER_QX( number, QX ) ( ( number ) << ( QX ) ) /* evaulated at compile time */
#define MAKE_VARIABLE_QX( variable, QX ) W_shl( W_deposit32_l( L_deposit_l( ( variable ) ) ), ( QX ) ) /* evaluated at run time */
diff --git a/lib_enc/acelp_core_enc_fx.c b/lib_enc/acelp_core_enc_fx.c
index 0f58bcdad0a4fe0798740eeb61e440aa307d0812..7820061089f45aa3855e68c6f776f249a735f7a5 100644
--- a/lib_enc/acelp_core_enc_fx.c
+++ b/lib_enc/acelp_core_enc_fx.c
@@ -13,7 +13,6 @@
#include "rom_com_fx.h" /* Static table prototypes */
#include "prot_fx_enc.h" /* Function prototypes */
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
/*-------------------------------------------------------------------*
diff --git a/lib_enc/acelp_core_switch_enc_fx.c b/lib_enc/acelp_core_switch_enc_fx.c
index 90768aca13d512978efe7e20f566a7f5954d58b8..d88e1523ed825acceb35a351a58e66b63f4906ce 100644
--- a/lib_enc/acelp_core_switch_enc_fx.c
+++ b/lib_enc/acelp_core_switch_enc_fx.c
@@ -160,18 +160,6 @@ void acelp_core_switch_enc_fx(
/*----------------------------------------------------------------*
* bit-stream: modify the layer of sub frame CELP
*----------------------------------------------------------------*/
-#ifdef IVAS_CODE_BITSTREAM
- i = find_indice( hBstr, TAG_ACELP_SUBFR_LOOP_START, &value, &nb_bits );
-#ifdef DEBUGGING
- assert( i >= 0 && "Internal error in ACELP core switching - unable to find ACELP subframe indices!" );
-#endif
- while ( hBstr->ind_list[i].id == TAG_ACELP_SUBFR_LOOP_START )
- {
- push_indice( hBstr, IND_CORE_SWITCHING_CELP_SUBFRAME, hBstr->ind_list[i].value, hBstr->ind_list[i].nb_bits );
- i++;
- }
- delete_indice( hBstr, TAG_ACELP_SUBFR_LOOP_START );
-#else
FOR( i = 0; i < 20; i++ )
{
hBstr->ind_list[IND_CORE_SWITCHING_CELP_SUBFRAME + i].value = hBstr->ind_list[TAG_ACELP_SUBFR_LOOP_START + i].value; /* Q0 */
@@ -181,7 +169,6 @@ void acelp_core_switch_enc_fx(
hBstr->ind_list[TAG_ACELP_SUBFR_LOOP_START + i].nb_bits = -1; /* Q0 */
move16();
}
-#endif
/*----------------------------------------------------------------*
* BWE encoding
*----------------------------------------------------------------*/
diff --git a/lib_enc/amr_wb_enc_fx.c b/lib_enc/amr_wb_enc_fx.c
index 5a3aec3f43a5285fbb80f6ad2f3c87ed954dc59c..976826949541973f351346dd0a2ef79abe39f42b 100644
--- a/lib_enc/amr_wb_enc_fx.c
+++ b/lib_enc/amr_wb_enc_fx.c
@@ -612,7 +612,7 @@ void amr_wb_enc_init_fx(
AMRWB_IO_ENC_HANDLE hAmrwb_IO /* i/o: AMR-WB IO encoder handle */
)
{
- int16_t i;
+ Word16 i;
/* HF (6-7kHz) BWE */
hAmrwb_IO->seed2_enc = RANDOM_INITSEED;
diff --git a/lib_enc/avq_cod_fx.c b/lib_enc/avq_cod_fx.c
index 93a0146f32fa21e94ab10f37f779061b373dc32c..962b715cd7a1068638db2451a6547556ac1c0eb8 100644
--- a/lib_enc/avq_cod_fx.c
+++ b/lib_enc/avq_cod_fx.c
@@ -519,7 +519,7 @@ void AVQ_encmux_fx(
bit_tmp = add( unusedbitsFlag, unused_bits_idx );
/*nq_est = (int16_t)ceil(0.2f * (bits - 5 * (unusedbitsFlag + unused_bits_idx)));*/
nq_est = mult( 6554, sub( bits, add( shl( bit_tmp, 2 ), bit_tmp ) ) );
- assert( (int16_t) ceil( 0.2f * ( bits - 5 * ( unusedbitsFlag + unused_bits_idx ) ) ) == nq_est );
+ assert( (Word16) ceil( 0.2f * ( bits - 5 * ( unusedbitsFlag + unused_bits_idx ) ) ) == nq_est );
if ( EQ_16( nq_est, 1 ) )
{
@@ -946,7 +946,7 @@ void AVQ_encmux_ivas_fx(
bit_tmp = add( unusedbitsFlag, unused_bits_idx );
/*nq_est = (int16_t)ceil(0.2f * (bits - 5 * (unusedbitsFlag + unused_bits_idx)));*/
nq_est = mult( 6554 /*.2 in Q15*/, sub( bits, add( shl( bit_tmp, 2 ), bit_tmp ) ) );
- assert( (int16_t) ceil( 0.2f * ( bits - 5 * ( unusedbitsFlag + unused_bits_idx ) ) ) == nq_est );
+ assert( (Word16) ceil( 0.2f * ( bits - 5 * ( unusedbitsFlag + unused_bits_idx ) ) ) == nq_est );
if ( EQ_16( nq_est, 1 ) )
{
@@ -1085,8 +1085,8 @@ static void wrte_cv(
Word16 *nbits /* i/o: bits */
)
{
- int16_t pos, j;
- int16_t bits, nq4;
+ Word16 pos, j;
+ Word16 bits, nq4;
bits = *nbits;
move16();
@@ -1145,8 +1145,8 @@ static void wrte_cv_ivas_fx(
Word16 *nbits /* i/o: bits */
)
{
- int16_t pos, j;
- int16_t bits, nq4;
+ Word16 pos, j;
+ Word16 bits, nq4;
bits = *nbits;
move16();
diff --git a/lib_enc/cod4t64_fast.c b/lib_enc/cod4t64_fast.c
index a901690e3f11774aa8edc3af6c180b86cb945877..0e4c02744823c9718cfae159a01f6aaf362ff25a 100644
--- a/lib_enc/cod4t64_fast.c
+++ b/lib_enc/cod4t64_fast.c
@@ -35,7 +35,6 @@
#include
#include "cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "rom_com.h"
#include "wmc_auto.h"
diff --git a/lib_enc/cod_tcx_fx.c b/lib_enc/cod_tcx_fx.c
index c54e8ccf4c9f27b0623e805befcd7af8ce72e4b6..e6fc25e367957fef69abbe7dc45e9035bd516f31 100644
--- a/lib_enc/cod_tcx_fx.c
+++ b/lib_enc/cod_tcx_fx.c
@@ -16,7 +16,6 @@
#include "prot_fx_enc.h"
#ifdef IVAS_FLOAT_FIXED_CONVERSIONS
#include
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_rom_com_fx.h"
#endif
@@ -5402,7 +5401,7 @@ void TNSAnalysisStereo_fx(
st = sts[ch];
IF( EQ_16( st->mct_chan_mode, MCT_CHAN_MODE_IGNORE ) )
{
- continue;
+ CONTINUE;
}
hTcxEnc = st->hTcxEnc;
diff --git a/lib_enc/core_enc_init_fx.c b/lib_enc/core_enc_init_fx.c
index a2995245d14972fb2795cff193f21d190312b48f..1c60f2ecd1ab475bd2a0ab3732b951edc5e1cc1b 100644
--- a/lib_enc/core_enc_init_fx.c
+++ b/lib_enc/core_enc_init_fx.c
@@ -30,8 +30,8 @@ static void init_sig_buffers_fx( Encoder_State *st, const Word16 L_frame_old, co
static void init_tcx_ivas_fx( Encoder_State *st, const Word16 L_frame_old, const Word32 total_brate, const Word32 last_total_brate, const Word16 MCT_flag );
static void init_core_sig_ana_ivas_fx( Encoder_State *st );
static void init_modes_ivas_fx( Encoder_State *st, const Word32 last_total_brate );
-static void init_sig_buffers_ivas_fx( Encoder_State *st, const Word16 L_frame_old, const Word16 L_subfr, const int32_t last_total_brate );
-static void init_acelp_ivas_fx( Encoder_State *st, Word16 L_frame_old, Word16 shift, const int32_t last_total_brate );
+static void init_sig_buffers_ivas_fx( Encoder_State *st, const Word16 L_frame_old, const Word16 L_subfr, const Word32 last_total_brate );
+static void init_acelp_ivas_fx( Encoder_State *st, Word16 L_frame_old, Word16 shift, const Word32 last_total_brate );
/*-----------------------------------------------------------------------*
* init_coder_ace_plus_fx()
@@ -1324,7 +1324,7 @@ static void init_tcx_ivas_fx(
* Initialization of signal buffers
*-----------------------------------------------------------------------*/
/*copy of evs function since it was static */
-static void init_sig_buffers_ivas_fx( Encoder_State *st, const Word16 L_frame_old, const Word16 L_subfr, const int32_t last_total_brate )
+static void init_sig_buffers_ivas_fx( Encoder_State *st, const Word16 L_frame_old, const Word16 L_subfr, const Word32 last_total_brate )
{
LPD_state_HANDLE hLPDmem = st->hLPDmem;
@@ -1542,7 +1542,7 @@ static void init_core_sig_ana_ivas_fx( Encoder_State *st )
*
*
*-----------------------------------------------------------------------*/
-static void init_acelp_ivas_fx( Encoder_State *st, Word16 L_frame_old, Word16 shift, const int32_t last_total_brate )
+static void init_acelp_ivas_fx( Encoder_State *st, Word16 L_frame_old, Word16 shift, const Word32 last_total_brate )
{
Word16 mem_syn_r_size_old;
Word16 mem_syn_r_size_new;
diff --git a/lib_enc/core_enc_reconf_fx.c b/lib_enc/core_enc_reconf_fx.c
index 3637dd53f58bcd95fa3d9a360595cfaa155b480b..1ba496b0e4f3eca516d5a3b7d53b44b9a84b1500 100644
--- a/lib_enc/core_enc_reconf_fx.c
+++ b/lib_enc/core_enc_reconf_fx.c
@@ -344,7 +344,7 @@ void core_coder_reconfig_fx(
void core_coder_reconfig_ivas_fx(
Encoder_State *st,
- const int32_t last_total_brate )
+ const Word32 last_total_brate )
{
Word16 i, bwidth, index;
TCX_ENC_HANDLE hTcxEnc = st->hTcxEnc;
diff --git a/lib_enc/dtx_fx.c b/lib_enc/dtx_fx.c
index 6e4d2a0436255103b032bd53723727a0e787f0cb..154b43c124b83fe0394d7662fdad731a8d288d5c 100644
--- a/lib_enc/dtx_fx.c
+++ b/lib_enc/dtx_fx.c
@@ -349,7 +349,7 @@ void dtx_ivas_fx(
IF( NE_16( st_fx->element_mode, IVAS_CPE_MDCT ) && st_fx->hBstr != NULL )
{
- reset_indices_enc( st_fx->hBstr, st_fx->hBstr->nb_ind_tot );
+ reset_indices_enc_fx( st_fx->hBstr, st_fx->hBstr->nb_ind_tot );
}
}
#ifdef NONBE_1211_DTX_BR_SWITCHING
@@ -863,11 +863,7 @@ void dtx_fx(
/* reset the bitstream (IVAS format signalling was already written) */
IF( NE_16( st_fx->element_mode, IVAS_CPE_MDCT ) && st_fx->hBstr != NULL )
{
-#ifndef IVAS_CODE_BITSTREAM
- reset_indices_enc_fx( st_fx->hBstr );
-#else
- reset_indices_enc( st_fx->hBstr, st_fx->hBstr->nb_ind_tot );
-#endif
+ reset_indices_enc_fx( st_fx->hBstr, MAX_NUM_INDICES );
}
}
diff --git a/lib_enc/enc_acelp_fx.c b/lib_enc/enc_acelp_fx.c
index 7dd342318b37a54d1208764c72b0d19dfe36d390..a509a7cd74346749a88061b9a841e5bbad9ac4cc 100644
--- a/lib_enc/enc_acelp_fx.c
+++ b/lib_enc/enc_acelp_fx.c
@@ -1761,7 +1761,7 @@ void E_ACELP_4t_fx(
const Word16 last_L_frame, /*Q0*/
const Word32 total_brate, /*Q0*/
const Word16 i_subfr, /*Q0*/
- const int16_t cmpl_flag /*Q0*/ )
+ const Word16 cmpl_flag /*Q0*/ )
{
PulseConfig config;
Word16 ind[NPMAXPT * 4];
@@ -1824,7 +1824,7 @@ void E_ACELP_4t_ivas_fx(
const Word16 last_L_frame, /*Q0*/
const Word32 total_brate, /*Q0*/
const Word16 i_subfr, /*Q0*/
- const int16_t cmpl_flag, /*Q0*/
+ const Word16 cmpl_flag, /*Q0*/
Word16 element_mode /*Q0*/ )
{
PulseConfig config;
diff --git a/lib_enc/enc_ppp_fx.c b/lib_enc/enc_ppp_fx.c
index f1a87d2d296ec128e7aa823519ec942206c2f42e..c2aeaa7ca3d4ec2d9aad3c65eb64e7cac8177e6c 100644
--- a/lib_enc/enc_ppp_fx.c
+++ b/lib_enc/enc_ppp_fx.c
@@ -189,11 +189,7 @@ ivas_error encod_ppp_fx(
/* We write signalling indices again only in case of bump_up */
/* delete previous indices */
-#ifndef IVAS_CODE_BITSTREAM
- reset_indices_enc_fx( hBstr );
-#else
- reset_indices_enc_fx( hBstr, hBstr->nb_ind_tot );
-#endif
+ reset_indices_enc_fx( hBstr, MAX_NUM_INDICES );
/* signalling matrix (writing of signalling bits) */
signalling_enc_fx( st_fx );
@@ -377,11 +373,7 @@ ivas_error encod_ppp_ivas_fx(
/* We write signalling indices again only in case of bump_up */
/* delete previous indices */
-#ifndef IVAS_CODE_BITSTREAM
- reset_indices_enc_fx( hBstr );
-#else
- reset_indices_enc_fx( hBstr, hBstr->nb_ind_tot );
-#endif
+ reset_indices_enc_fx( hBstr, MAX_NUM_INDICES );
/* signalling matrix (writing of signalling bits) */
signalling_enc_fx( st_fx );
diff --git a/lib_enc/eval_pit_contr_fx.c b/lib_enc/eval_pit_contr_fx.c
index 75e82409efd3c96d5db2d4a95dafa35e61a043ca..d5f832f8ca3b50f161972cbc058cd6ca10479459 100644
--- a/lib_enc/eval_pit_contr_fx.c
+++ b/lib_enc/eval_pit_contr_fx.c
@@ -381,19 +381,14 @@ Word16 Pit_exc_contribution_len_fx( /* o : bin where pit
/* pitch contribution useless - delete all previously written indices belonging to pitch contribution */
FOR( i = TAG_ACELP_SUBFR_LOOP_START; i < TAG_ACELP_SUBFR_LOOP_END; i++ )
{
-#ifndef IVAS_CODE_BITSTREAM
IF( hBstr->ind_list[i].nb_bits != -1 )
{
hBstr->nb_bits_tot = sub( hBstr->nb_bits_tot, hBstr->ind_list[i].nb_bits ); /* Q0 */
hBstr->ind_list[i].nb_bits = -1;
move16();
}
-#else
- delete_indice( hBstr, i );
-#endif
}
-#ifndef IVAS_CODE_BITSTREAM
IF( hBstr->ind_list[IND_ES_PRED].nb_bits != -1 )
{
hBstr->nb_bits_tot = sub( hBstr->nb_bits_tot, hBstr->ind_list[IND_ES_PRED].nb_bits ); /* Q0 */
@@ -401,9 +396,6 @@ Word16 Pit_exc_contribution_len_fx( /* o : bin where pit
hBstr->ind_list[IND_ES_PRED].nb_bits = -1;
move16();
}
-#else
- delete_indice( hBstr, i );
-#endif
}
IF( LT_32( st_fx->core_brate, CFREQ_BITRATE ) )
{
diff --git a/lib_enc/ext_sig_ana_fx.c b/lib_enc/ext_sig_ana_fx.c
index 9e6318591709539a105fcd5c0d12fb8a38408c8a..f546c3ef8f6c2edb7eddad5358700447e8efc613 100644
--- a/lib_enc/ext_sig_ana_fx.c
+++ b/lib_enc/ext_sig_ana_fx.c
@@ -1165,18 +1165,30 @@ void core_signal_analysis_high_bitrate_ivas_fx(
IF( EQ_16( st->element_mode, IVAS_CPE_MDCT ) )
{
+ Word16 q_mdstWin, scale;
L_subframe = idiv1616( L_frameTCX, nSubframes ); /* Q0 */
test();
IF( EQ_16( transform_type[frameno], TCX_20 ) && NE_16( st->hTcxCfg->tcx_last_overlap_mode, TRANSITION_OVERLAP ) )
{
wtda_ext_fx( hTcxEnc->new_speech_TCX, mdstWin, overlap_mode[frameno], overlap_mode[frameno + 1], L_frameTCX, 3 );
- Scale_sig( mdstWin, L_frameTCX, 1 );
+ scale = sub( norm_arr( mdstWin, L_frameTCX ), 1 );
+ scale = s_min( 1, scale ); // restricting the Q to zero or less
+ scale_sig( mdstWin, L_frameTCX, scale );
+ q_mdstWin = add( -1, scale );
+ move16();
}
ELSE
{
+ Word16 sig_len;
/* Windowing for the MDST */
WindowSignal( st->hTcxCfg, st->hTcxCfg->tcx_offsetFB, overlap_mode[frameno] == ALDO_WINDOW ? FULL_OVERLAP : overlap_mode[frameno], overlap_mode[frameno + 1] == ALDO_WINDOW ? FULL_OVERLAP : overlap_mode[frameno + 1], &left_overlap, &right_overlap, &hTcxEnc->speech_TCX[frameno * tcx10SizeFB], &L_subframe, mdstWin, 0, 1 );
+ sig_len = add( L_subframe, shr( add( left_overlap, right_overlap ), 1 ) );
+ scale = sub( norm_arr( mdstWin, sig_len ), 1 );
+ scale = s_min( 0, scale ); // restricting the Q to zero or less
+ scale_sig( mdstWin, sig_len, scale );
+ q_mdstWin = scale;
+ move16();
}
IF( EQ_16( transform_type[frameno], TCX_5 ) )
@@ -1184,7 +1196,7 @@ void core_signal_analysis_high_bitrate_ivas_fx(
/* Outer left folding */
FOR( i = 0; i < left_overlap / 2; i++ )
{
- mdstWin[left_overlap / 2 + i] = add_sat( mdstWin[left_overlap / 2 + i], mdstWin[left_overlap / 2 - 1 - i] ); // Q0
+ mdstWin[left_overlap / 2 + i] = add( mdstWin[left_overlap / 2 + i], mdstWin[left_overlap / 2 - 1 - i] ); // q_mdstWin
}
test();
@@ -1197,16 +1209,16 @@ void core_signal_analysis_high_bitrate_ivas_fx(
{
L_tmp = L_mult( hTcxEnc->speech_TCX[-1 - i], st->hTcxCfg->tcx_aldo_window_1_FB[left_overlap / 2 + minWindowLen - i] ); // (Q0, Q15) -> Q16
L_tmp = Mpy_32_16_1( L_tmp, st->hTcxCfg->tcx_mdct_window_minimumFB[minWindowLen - i].v.im ); // (Q16, Q15) -> Q16
- L_tmp = L_shl( L_tmp, sub( 0, Q16 ) ); // Q0
- mdstWin[left_overlap + i] = add_sat( mdstWin[left_overlap + i], extract_l( L_tmp ) ); // Q0
+ L_tmp = L_shl( L_tmp, sub( q_mdstWin, Q16 ) ); // q_mdstWin
+ mdstWin[left_overlap + i] = add( mdstWin[left_overlap + i], extract_l( L_tmp ) ); // q_mdstWin
move32();
}
FOR( i = tmp - 1; i >= 0; i-- ) /* outer left folding of shortened long ALDO slope */
{
L_tmp = L_mult( hTcxEnc->speech_TCX[-1 - i], st->hTcxCfg->tcx_aldo_window_1_FB[left_overlap / 2 + minWindowLen - i] ); // (Q0, Q15) -> Q16
L_tmp = Mpy_32_16_1( L_tmp, st->hTcxCfg->tcx_mdct_window_minimumFB[i].v.re ); // (Q16, Q15) -> Q16
- L_tmp = L_shl( L_tmp, sub( 0, Q16 ) ); // Q0
- mdstWin[left_overlap + i] = add_sat( mdstWin[left_overlap + i], extract_l( L_tmp ) ); // Q0
+ L_tmp = L_shl( L_tmp, sub( q_mdstWin, Q16 ) ); // q_mdstWin
+ mdstWin[left_overlap + i] = add( mdstWin[left_overlap + i], extract_l( L_tmp ) ); // q_mdstWin
move32();
}
}
@@ -1214,7 +1226,7 @@ void core_signal_analysis_high_bitrate_ivas_fx(
/* Outer right folding */
FOR( i = 0; i < right_overlap / 2; i++ )
{
- mdstWin[L_subframe + left_overlap / 2 - 1 - i] = sub_sat( mdstWin[L_subframe + left_overlap / 2 - 1 - i], mdstWin[L_subframe + left_overlap / 2 + i] ); // Q0
+ mdstWin[L_subframe + left_overlap / 2 - 1 - i] = sub( mdstWin[L_subframe + left_overlap / 2 - 1 - i], mdstWin[L_subframe + left_overlap / 2 + i] ); // q_mdstWin
move16();
}
@@ -1229,7 +1241,7 @@ void core_signal_analysis_high_bitrate_ivas_fx(
assert( st->mct_chan_mode != MCT_CHAN_MODE_LFE );
WindowSignal( st->hTcxCfg, folding_offset, i == 0 ? RECTANGULAR_OVERLAP : MIN_OVERLAP, i == 1 ? RECTANGULAR_OVERLAP : MIN_OVERLAP, &left_overlap, &right_overlap, mdstWin + i * tcx5SizeFB, &L_subframe, tcx5Win, 0, 1 );
- spectrum_e[frameno] = 16;
+ spectrum_e[frameno] = sub( 16, q_mdstWin );
move16();
TCX_MDST( tcx5Win, spectrum[frameno] + i * tcx5SizeFB, &spectrum_e[frameno], left_overlap, L_subframe - ( left_overlap + right_overlap ) / 2, right_overlap, st->element_mode );
/* high-band gain control in case of BWS */
@@ -1250,14 +1262,14 @@ void core_signal_analysis_high_bitrate_ivas_fx(
}
ELSE /* transform_type[frameno] != TCX_5 */
{
- spectrum_e[frameno] = 16;
+ spectrum_e[frameno] = sub( 16, q_mdstWin );
test();
IF( EQ_16( transform_type[frameno], TCX_20 ) && NE_16( st->hTcxCfg->tcx_last_overlap_mode, TRANSITION_OVERLAP ) )
{
Word16 Q;
Copy_Scale_sig_16_32_no_sat( mdstWin, L_tmpbuf, N_MAX + L_MDCT_OVLP_MAX, 16 );
- Q = 16;
+ Q = add( q_mdstWin, 16 );
move16();
edst_fx( L_tmpbuf, spectrum[frameno], L_subframe, &Q );
spectrum_e[frameno] = 31 - Q;
@@ -1284,16 +1296,16 @@ void core_signal_analysis_high_bitrate_ivas_fx(
{
L_tmp = L_mult( hTcxEnc->speech_TCX[-1 - i], st->hTcxCfg->tcx_aldo_window_1_FB[left_overlap / 2 + minWindowLen - i] ); // (Q0, Q15) -> Q16
L_tmp = Mpy_32_16_1( L_tmp, st->hTcxCfg->tcx_mdct_window_minimumFB[minWindowLen - i].v.im ); // (Q16, Q15) -> Q16
- L_tmp = L_shl( L_tmp, sub( 0, Q16 ) ); // Q0
- mdstWin[left_overlap + i] = add_sat( mdstWin[left_overlap + i], extract_l( L_tmp ) ); // Q0
+ L_tmp = L_shl( L_tmp, sub( q_mdstWin, Q16 ) ); // q_mdstWin
+ mdstWin[left_overlap + i] = add( mdstWin[left_overlap + i], extract_l( L_tmp ) ); // q_mdstWin
move32();
}
FOR( i = tmp - 1; i >= 0; i-- ) /* outer left folding of shortened long ALDO slope */
{
L_tmp = L_mult( hTcxEnc->speech_TCX[-1 - i], st->hTcxCfg->tcx_aldo_window_1_FB[left_overlap / 2 + minWindowLen - i] ); // (Q0, Q15) -> Q16
L_tmp = Mpy_32_16_1( L_tmp, st->hTcxCfg->tcx_mdct_window_minimumFB[i].v.re ); // (Q16, Q15) -> Q16
- L_tmp = L_shl( L_tmp, sub( 0, Q16 ) ); // Q0
- mdstWin[left_overlap + i] = add_sat( mdstWin[left_overlap + i], extract_l( L_tmp ) ); // Q0
+ L_tmp = L_shl( L_tmp, sub( q_mdstWin, Q16 ) ); // q_mdstWin
+ mdstWin[left_overlap + i] = add( mdstWin[left_overlap + i], extract_l( L_tmp ) ); // q_mdstWin
move32();
}
}
diff --git a/lib_enc/fd_cng_enc_fx.c b/lib_enc/fd_cng_enc_fx.c
index 2db8b956b233b8244864ed33ceea996f0995e935..757a6951821590eaf1aa615ddaadbb8d7e6928c5 100644
--- a/lib_enc/fd_cng_enc_fx.c
+++ b/lib_enc/fd_cng_enc_fx.c
@@ -2695,9 +2695,9 @@ void stereoFdCngCoherence_fx(
ELSE IF( LE_32( sts[0]->core_brate, SID_2k40 ) && LE_32( sts[1]->core_brate, SID_2k40 ) )
{
/* case: no VAD for both channels -> INACTIVE FRAME */
- reset_indices_enc( sts[0]->hBstr, sts[0]->hBstr->nb_ind_tot );
+ reset_indices_enc_fx( sts[0]->hBstr, sts[0]->hBstr->nb_ind_tot );
- reset_indices_enc( sts[1]->hBstr, sts[1]->hBstr->nb_ind_tot );
+ reset_indices_enc_fx( sts[1]->hBstr, sts[1]->hBstr->nb_ind_tot );
/* synchronize SID sending for variable SID rate */
IF( EQ_32( sts[0]->core_brate, sts[1]->core_brate ) )
diff --git a/lib_enc/igf_enc.c b/lib_enc/igf_enc.c
index f6adb0f3118b68374966b1eac0f304fceb823b4e..fc7c32fdbd7119867a844145f82b2c742ab98662 100644
--- a/lib_enc/igf_enc.c
+++ b/lib_enc/igf_enc.c
@@ -39,7 +39,6 @@
#include "options.h"
#include
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "cnst.h"
#include "stat_enc.h"
#include "wmc_auto.h"
diff --git a/lib_enc/init_enc_fx.c b/lib_enc/init_enc_fx.c
index 615ca1b337b58a664b25fbcc2d8ff0da120e7bb8..ebfd9c4a26ea5c93a35999c9c361dceb418f6a25 100644
--- a/lib_enc/init_enc_fx.c
+++ b/lib_enc/init_enc_fx.c
@@ -136,18 +136,6 @@ ivas_error init_encoder_fx(
{
return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Bitstream structure\n" ) );
}
-#ifdef IVAS_CODE_BITSTREAM
-
- /* set pointer to the buffer of indices */
- st->hBstr->ind_list = st_ivas->ind_list;
- st->hBstr->ivas_ind_list_zero = &st_ivas->ind_list;
- st->hBstr->ivas_max_num_indices = &st_ivas->ivas_max_num_indices;
- st->hBstr->nb_ind_tot = 0;
- move16();
- st->hBstr->nb_bits_tot = 0;
- move16();
- st->hBstr->st_ivas = st_ivas;
-#endif
}
ELSE
{
@@ -910,9 +898,6 @@ ivas_error init_encoder_fx(
NS2SA_FX2( st_fx->input_Fs, DELAY_FIR_RESAMPL_NS ),
&st_fx->transientDetection );
- // reset_indices_enc_fx( st_fx->hBstr);
-
-
st_fx->Q_syn2 = 0;
move16();
st_fx->Q_syn = 0;
@@ -1695,7 +1680,7 @@ ivas_error init_encoder_ivas_fx(
test();
IF( ( NE_16( st->element_mode, IVAS_CPE_MDCT ) && idchan == 0 ) || ( EQ_16( st->element_mode, IVAS_CPE_MDCT ) && st->Opt_DTX_ON ) )
{
- IF( ( error = openCldfb_ivas_enc( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS ) ) != IVAS_ERR_OK )
+ IF( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS, ENC ) ) != IVAS_ERR_OK )
{
return error;
}
@@ -1809,7 +1794,7 @@ ivas_error init_encoder_ivas_fx(
return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for TD BWE\n" ) );
}
- IF( ( error = openCldfb_ivas_enc( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS ) ) != IVAS_ERR_OK )
+ IF( ( error = openCldfb_ivas_fx( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS, ENC ) ) != IVAS_ERR_OK )
{
return error;
}
diff --git a/lib_enc/ivas_agc_enc_fx.c b/lib_enc/ivas_agc_enc_fx.c
index 104eeb998a306c053942b26d40bdd4680b1c8095..d74e10bdaf25ea124ae9326ad807ac835e6e6e97 100644
--- a/lib_enc/ivas_agc_enc_fx.c
+++ b/lib_enc/ivas_agc_enc_fx.c
@@ -35,7 +35,6 @@
#include
#include
#include "options.h"
-#include "ivas_prot.h"
#include "prot_fx.h"
#include "rom_com.h"
#include "wmc_auto.h"
diff --git a/lib_enc/ivas_core_enc_fx.c b/lib_enc/ivas_core_enc_fx.c
index 5f318e959039a489043412e18fc5a7d27ada6a09..cacbcabd36f4c3d36cc52d6c3bcd4ddf9c6daab4 100644
--- a/lib_enc/ivas_core_enc_fx.c
+++ b/lib_enc/ivas_core_enc_fx.c
@@ -36,7 +36,6 @@
#include "rom_com.h"
#include "prot_fx.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "wmc_auto.h"
#include
#include "prot_fx_enc.h"
@@ -310,7 +309,7 @@ ivas_error ivas_core_enc_fx(
st->hBstr->nb_ind_tot = add( st->hBstr->nb_ind_tot, hStereoTD->tdm_hBstr_tmp.nb_ind_tot ); /* Q0 */
st->hBstr->nb_bits_tot = add( st->hBstr->nb_bits_tot, hStereoTD->tdm_hBstr_tmp.nb_bits_tot ); /* Q0 */
- reset_indices_enc( &hStereoTD->tdm_hBstr_tmp, MAX_IND_TDM_TMP );
+ reset_indices_enc_fx( &hStereoTD->tdm_hBstr_tmp, MAX_IND_TDM_TMP );
}
/*---------------------------------------------------------------------*
diff --git a/lib_enc/ivas_core_pre_proc_front_fx.c b/lib_enc/ivas_core_pre_proc_front_fx.c
index 46de4e232d7f29302e92de393eb316ecea0c7471..42920a46a17d78e32195459a41e82ee68554cc75 100644
--- a/lib_enc/ivas_core_pre_proc_front_fx.c
+++ b/lib_enc/ivas_core_pre_proc_front_fx.c
@@ -38,7 +38,6 @@
#include "rom_com.h"
#include "prot_fx.h"
#include "prot_fx_enc.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "wmc_auto.h"
#include
diff --git a/lib_enc/ivas_core_pre_proc_fx.c b/lib_enc/ivas_core_pre_proc_fx.c
index 73403a848175ab672a8eb401c798abc2afb54dec..8d00e608c083a3d89eada175ce3256e9fd6cf4e2 100644
--- a/lib_enc/ivas_core_pre_proc_fx.c
+++ b/lib_enc/ivas_core_pre_proc_fx.c
@@ -34,7 +34,6 @@
#include "options.h"
#include "cnst.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "rom_enc.h"
#include "rom_com.h"
#include "prot_fx.h"
diff --git a/lib_enc/ivas_corecoder_enc_reconfig_fx.c b/lib_enc/ivas_corecoder_enc_reconfig_fx.c
index 32e3e710734c8db41ec05e37cefc591bbc3e4cf5..a1f2196fb0af3dfb3311509761c86508740f644a 100644
--- a/lib_enc/ivas_corecoder_enc_reconfig_fx.c
+++ b/lib_enc/ivas_corecoder_enc_reconfig_fx.c
@@ -35,7 +35,6 @@
#include "ivas_cnst.h"
#include "prot_fx.h"
#include "prot_fx_enc.h"
-#include "ivas_prot.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
#include "math.h"
@@ -406,7 +405,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
/* only reset indices if it is not the first index list, this already contains the IVAS format bits */
IF( sce_id > 0 || EQ_16( hEncoderConfig->ivas_format, MASA_ISM_FORMAT ) )
{
- reset_indices_enc( st_ivas->hSCE[sce_id]->hCoreCoder[0]->hBstr, st_ivas->hSCE[sce_id]->hCoreCoder[0]->hBstr->nb_ind_tot );
+ reset_indices_enc_fx( st_ivas->hSCE[sce_id]->hCoreCoder[0]->hBstr, st_ivas->hSCE[sce_id]->hCoreCoder[0]->hBstr->nb_ind_tot );
}
}
@@ -450,7 +449,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
( EQ_16( st_ivas->mc_mode, MC_MODE_MCMASA ) && st_ivas->nSCE > 0 ) ||
( EQ_16( hEncoderConfig->ivas_format, MASA_ISM_FORMAT ) && st_ivas->nSCE > 0 ) )
{
- reset_indices_enc( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->hBstr, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->hBstr->nb_ind_tot );
+ reset_indices_enc_fx( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->hBstr, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->hBstr->nb_ind_tot );
}
}
}
@@ -488,7 +487,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
test();
IF( add( i_mult( cpe_id, CPE_CHANNELS ), n ) > 0 || ( EQ_16( st_ivas->mc_mode, MC_MODE_MCMASA ) && st_ivas->nSCE > 0 ) )
{
- reset_indices_enc( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->hBstr, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->hBstr->nb_ind_tot );
+ reset_indices_enc_fx( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->hBstr, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->hBstr->nb_ind_tot );
}
IF( hEncoderConfig->Opt_DTX_ON )
@@ -668,7 +667,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx(
}
}
- reset_indices_enc( st_ivas->hCPE[st_ivas->nCPE - 1]->hMetaData, st_ivas->hCPE[st_ivas->nCPE - 1]->hMetaData->nb_ind_tot );
+ reset_indices_enc_fx( st_ivas->hCPE[st_ivas->nCPE - 1]->hMetaData, st_ivas->hCPE[st_ivas->nCPE - 1]->hMetaData->nb_ind_tot );
FOR( cpe_id = 0; cpe_id < st_ivas->nCPE - 1; cpe_id++ )
{
diff --git a/lib_enc/ivas_cpe_enc_fx.c b/lib_enc/ivas_cpe_enc_fx.c
index a9d62a2b0672ed25152ef3c592dfd1f75775f295..1152736f6ca121133fbe8e86f0584f9a015cba23 100644
--- a/lib_enc/ivas_cpe_enc_fx.c
+++ b/lib_enc/ivas_cpe_enc_fx.c
@@ -37,7 +37,6 @@
#include "ivas_cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "prot_fx_enc.h"
#include "ivas_rom_com.h"
#ifdef DEBUGGING
diff --git a/lib_enc/ivas_decision_matrix_enc_fx.c b/lib_enc/ivas_decision_matrix_enc_fx.c
index 1158f72fab84bcffb7c2b6488e3b3103f41c7d44..bd63553bd70f502ee2ad342de594d6ade28caf07 100644
--- a/lib_enc/ivas_decision_matrix_enc_fx.c
+++ b/lib_enc/ivas_decision_matrix_enc_fx.c
@@ -36,7 +36,6 @@
#include "ivas_cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h" /* Function prototypes */
diff --git a/lib_enc/ivas_dirac_enc_fx.c b/lib_enc/ivas_dirac_enc_fx.c
index 7bfa9f2682c242d53b53e3201a82aab605204696..ac0ce95566a5adf5c1bd12f7cd54b605a27b6055 100644
--- a/lib_enc/ivas_dirac_enc_fx.c
+++ b/lib_enc/ivas_dirac_enc_fx.c
@@ -36,7 +36,6 @@
#include
#include "cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
diff --git a/lib_enc/ivas_enc_cov_handler_fx.c b/lib_enc/ivas_enc_cov_handler_fx.c
index 576bbb2c67938ff04074130dd06d1d878b781717..c05d59b9086289658e59e23ebab2248e3d9118f0 100644
--- a/lib_enc/ivas_enc_cov_handler_fx.c
+++ b/lib_enc/ivas_enc_cov_handler_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_enc/ivas_enc_fx.c b/lib_enc/ivas_enc_fx.c
index 0a2d976e156540a16bd7a3a08d553dee8b529845..e8e1bc59e5913762d56f4b6d28accf33176cb34e 100644
--- a/lib_enc/ivas_enc_fx.c
+++ b/lib_enc/ivas_enc_fx.c
@@ -37,7 +37,6 @@
#include "ivas_cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#ifdef DEBUGGING
#include "debug.h"
diff --git a/lib_enc/ivas_entropy_coder_fx.c b/lib_enc/ivas_entropy_coder_fx.c
index a95f2884c7d3d698551ba745e96aeab284293479..3c8cf92e2f2ef39cf45042599aa58217fad99328 100644
--- a/lib_enc/ivas_entropy_coder_fx.c
+++ b/lib_enc/ivas_entropy_coder_fx.c
@@ -35,7 +35,6 @@
#include "options.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "math.h"
#include "wmc_auto.h"
diff --git a/lib_enc/ivas_front_vad_fx.c b/lib_enc/ivas_front_vad_fx.c
index f1aeb5398ed0174f11a4dac67df2f0fde704d407..8b76b37a44dc1d3a1ddf0fa7b98ece00ddc1172c 100644
--- a/lib_enc/ivas_front_vad_fx.c
+++ b/lib_enc/ivas_front_vad_fx.c
@@ -37,7 +37,6 @@
#include "rom_enc.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "prot_fx_enc.h"
#include
#include "wmc_auto.h"
@@ -433,30 +432,6 @@ ivas_error front_vad_create_fx(
return IVAS_ERR_OK;
}
-/*-----------------------------------------------------------------------------------------*
- * Function front_vad_destroy()
- *
- * Deallocate Standalone front-VAD module
- *-----------------------------------------------------------------------------------------*/
-
-void front_vad_destroy(
- FRONT_VAD_ENC_HANDLE *hFrontVad /* i/o: front-VAD handle */
-)
-{
- IF( *hFrontVad != NULL )
- {
- free( ( *hFrontVad )->hNoiseEst );
- ( *hFrontVad )->hNoiseEst = NULL;
-
- free( ( *hFrontVad )->hVAD );
- ( *hFrontVad )->hVAD = NULL;
-
- free( *hFrontVad );
- *hFrontVad = NULL;
- }
-
- return;
-}
void front_vad_destroy_fx(
FRONT_VAD_ENC_HANDLE *hFrontVad /* i/o: front-VAD handle */
)
diff --git a/lib_enc/ivas_init_enc_fx.c b/lib_enc/ivas_init_enc_fx.c
index c65c853566f22c3743f2580972321adb5496df49..57858b03ebb2b017899ab8a57e690e0b0be2cc36 100644
--- a/lib_enc/ivas_init_enc_fx.c
+++ b/lib_enc/ivas_init_enc_fx.c
@@ -35,7 +35,6 @@
#include "options.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_stat_enc.h"
#include "ivas_rom_com.h"
@@ -2152,7 +2151,7 @@ ivas_error ivas_initialize_MD_bstr_enc_fx(
hMetaData->ivas_max_num_indices = &st_ivas->ivas_max_num_indices_metadata; /* Q0 */
hMetaData->st_ivas = st_ivas;
- reset_indices_enc( hMetaData, st_ivas->ivas_max_num_indices_metadata );
+ reset_indices_enc_fx( hMetaData, st_ivas->ivas_max_num_indices_metadata );
*hMetaData_out = hMetaData;
diff --git a/lib_enc/ivas_ism_dtx_enc_fx.c b/lib_enc/ivas_ism_dtx_enc_fx.c
index 64b8991d6fe0ad2263957824914c70e8cd92da18..6aba283beac75621190c5b7832817fbe98af8c04 100644
--- a/lib_enc/ivas_ism_dtx_enc_fx.c
+++ b/lib_enc/ivas_ism_dtx_enc_fx.c
@@ -35,7 +35,6 @@
#include "options.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
#include "prot_fx_enc.h"
@@ -192,7 +191,7 @@ Word16 ivas_ism_dtx_enc_fx(
IF( dtx_flag )
{
/* reset the bitstream (IVAS format signaling was already written) */
- reset_indices_enc( hSCE[0]->hCoreCoder[0]->hBstr, hSCE[0]->hCoreCoder[0]->hBstr->nb_ind_tot );
+ reset_indices_enc_fx( hSCE[0]->hCoreCoder[0]->hBstr, hSCE[0]->hCoreCoder[0]->hBstr->nb_ind_tot );
}
/*------------------------------------------------------------------*
@@ -445,9 +444,9 @@ void ivas_ism_coh_estim_dtx_enc_fx(
Word16 sce_id, i;
Word32 acorr_ene_fx[MAX_NUM_OBJECTS], xcorr_ene_fx;
Word16 acorr_ene_e[MAX_NUM_OBJECTS], xcorr_ene_e;
- Word16 norm_inp;
- Word16 tot_exp;
- Word32 scaled_inp;
+ Word16 norm_inp, norm_inp0;
+ Word16 tot_exp, tot_exp2;
+ Word32 scaled_inp, scaled_inp0;
set16_fx( acorr_ene_e, 0, MAX_NUM_OBJECTS );
IF( EQ_16( nchan_transport, 1 ) )
@@ -477,7 +476,7 @@ void ivas_ism_coh_estim_dtx_enc_fx(
{
hISMDTX->coh_fx[sce_id] = 32767; /* 1 in Q15 */
move16();
- continue;
+ CONTINUE;
}
st = hSCE[sce_id]->hCoreCoder[0];
@@ -493,10 +492,13 @@ void ivas_ism_coh_estim_dtx_enc_fx(
{
norm_inp = norm_l( st->input32_fx[i] );
scaled_inp = L_shl( st->input32_fx[i], norm_inp );
- tot_exp = shl( sub( 20, norm_inp ), 1 );
+ tot_exp = shl( sub( sub( 31, st->q_inp32 ), norm_inp ), 1 );
acorr_ene_fx[sce_id] = BASOP_Util_Add_Mant32Exp( acorr_ene_fx[sce_id], acorr_ene_e[sce_id], Mult_32_32( scaled_inp, scaled_inp ), tot_exp, &acorr_ene_e[sce_id] ); /* exp(acorr_ene_e) */
move32();
- xcorr_ene_fx = BASOP_Util_Add_Mant32Exp( xcorr_ene_fx, xcorr_ene_e, Mult_32_32( scaled_inp, scaled_inp ), tot_exp, &xcorr_ene_e ); /* exp(xcorr_ene_e) */
+ norm_inp0 = norm_l( st_id0->input32_fx[i] );
+ scaled_inp0 = L_shl( st_id0->input32_fx[i], norm_inp0 );
+ tot_exp2 = add( sub( sub( 31, st_id0->q_inp32 ), norm_inp0 ), sub( sub( 31, st->q_inp32 ), norm_inp ) );
+ xcorr_ene_fx = BASOP_Util_Add_Mant32Exp( xcorr_ene_fx, xcorr_ene_e, Mult_32_32( scaled_inp, scaled_inp0 ), tot_exp2, &xcorr_ene_e ); /* exp(xcorr_ene_e) */
}
Word16 coh_e;
Word16 temp_e = acorr_ene_e[hISMDTX->sce_id_dtx] + acorr_ene_e[sce_id];
diff --git a/lib_enc/ivas_ism_enc_fx.c b/lib_enc/ivas_ism_enc_fx.c
index 22bf88df8595d1cc041f4593b5faca1d39f3b41a..1b648cc98a530eea4f7b8a8db1b089d6044e3e34 100644
--- a/lib_enc/ivas_ism_enc_fx.c
+++ b/lib_enc/ivas_ism_enc_fx.c
@@ -34,7 +34,6 @@
#include "options.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_stat_enc.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_enc/ivas_ism_metadata_enc_fx.c b/lib_enc/ivas_ism_metadata_enc_fx.c
index a36ee78e25aacfacab74e1a8398b7c1d0e9c7316..8e6e0c93f773a621f921c1fb37a68bed252f81f3 100644
--- a/lib_enc/ivas_ism_metadata_enc_fx.c
+++ b/lib_enc/ivas_ism_metadata_enc_fx.c
@@ -35,7 +35,6 @@
#include
#include "options.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_rom_com.h"
#include "prot_fx.h"
@@ -216,7 +215,7 @@ ivas_error ivas_ism_metadata_enc_fx(
move16();
Word32 valQ_fx;
ISM_METADATA_HANDLE hIsmMetaData;
- int32_t element_brate[MAX_NUM_OBJECTS], total_brate[MAX_NUM_OBJECTS];
+ Word32 element_brate[MAX_NUM_OBJECTS], total_brate[MAX_NUM_OBJECTS];
Word16 ism_metadata_flag_global;
Word16 non_diegetic_flag_global;
Word16 ism_imp[MAX_NUM_OBJECTS];
@@ -874,7 +873,7 @@ ivas_error ivas_ism_metadata_enc_fx(
/* write metadata only in active frames */
IF( GT_32( hSCE[0]->hCoreCoder[0]->core_brate, SID_2k40 ) )
{
- reset_indices_enc( hSCE[ch]->hMetaData, hSCE[ch]->hMetaData->nb_ind_tot );
+ reset_indices_enc_fx( hSCE[ch]->hMetaData, hSCE[ch]->hMetaData->nb_ind_tot );
}
}
diff --git a/lib_enc/ivas_ism_param_enc_fx.c b/lib_enc/ivas_ism_param_enc_fx.c
index e6b23fcfc1f305e98ada4c3c52a4a6da5f73b1f8..cda8cffd674b477b98ea0d5bc665a92cd1198792 100644
--- a/lib_enc/ivas_ism_param_enc_fx.c
+++ b/lib_enc/ivas_ism_param_enc_fx.c
@@ -34,7 +34,6 @@
#include
#include
#include "options.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "prot_fx.h"
#include "cnst.h"
diff --git a/lib_enc/ivas_lfe_enc_fx.c b/lib_enc/ivas_lfe_enc_fx.c
index 11056b535004350ee845723bf0347bc1c559e414..96959c9dd46fe0d60f391fcbb4c5da5f0e2d3f50 100644
--- a/lib_enc/ivas_lfe_enc_fx.c
+++ b/lib_enc/ivas_lfe_enc_fx.c
@@ -34,7 +34,6 @@
#include "options.h"
#include "math.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
diff --git a/lib_enc/ivas_masa_enc_fx.c b/lib_enc/ivas_masa_enc_fx.c
index 21c23c34a7dffce21d7ce11c5848571664f80faa..da1f836df340575c1183fad83627f59919608aae 100644
--- a/lib_enc/ivas_masa_enc_fx.c
+++ b/lib_enc/ivas_masa_enc_fx.c
@@ -34,7 +34,6 @@
#include
#include "options.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "ivas_stat_enc.h"
#include "wmc_auto.h"
@@ -153,7 +152,7 @@ ivas_error ivas_masa_enc_open_fx(
FOR( i = 0; i < hMasa->data.num_Cldfb_instances; i++ )
{
- IF( NE_32( ( error = openCldfb_ivas_enc( &( hMasa->data.cldfbAnaEnc[i] ), CLDFB_ANALYSIS, hEncoderConfig->input_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &( hMasa->data.cldfbAnaEnc[i] ), CLDFB_ANALYSIS, hEncoderConfig->input_Fs, CLDFB_PROTOTYPE_5_00MS, ENC ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -261,7 +260,7 @@ void ivas_masa_enc_close_fx(
FOR( i = 0; i < ( *hMasa )->data.num_Cldfb_instances; i++ )
{
- deleteCldfb_ivas( &( ( *hMasa )->data.cldfbAnaEnc[i] ) );
+ deleteCldfb_ivas_fx( &( ( *hMasa )->data.cldfbAnaEnc[i] ) );
}
IF( ( *hMasa )->data.hOmasaData != NULL )
diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c
index 2797fa5e426a03f179e48731f671eb0757f763f9..17fefec7e780e2ed1ed4ae6b23bbc0d0dc06e6c9 100644
--- a/lib_enc/ivas_mc_param_enc_fx.c
+++ b/lib_enc/ivas_mc_param_enc_fx.c
@@ -38,7 +38,6 @@
#include "ivas_rom_enc.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
diff --git a/lib_enc/ivas_mc_paramupmix_enc_fx.c b/lib_enc/ivas_mc_paramupmix_enc_fx.c
index abd09cbbdec42c96e46bd5cba50eea7998f2031f..fd5cb6217312681796dd7e0a35c92230fb7efc2f 100644
--- a/lib_enc/ivas_mc_paramupmix_enc_fx.c
+++ b/lib_enc/ivas_mc_paramupmix_enc_fx.c
@@ -37,7 +37,6 @@
#include "rom_enc.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "basop_util.h"
#include "ivas_rom_com_fx.h"
diff --git a/lib_enc/ivas_mcmasa_enc_fx.c b/lib_enc/ivas_mcmasa_enc_fx.c
index bb6ef0d01c028b3175e417fe60d02198bfa462b5..22f21dceb020c4852d8d97ed129dbd7a9b48d25b 100644
--- a/lib_enc/ivas_mcmasa_enc_fx.c
+++ b/lib_enc/ivas_mcmasa_enc_fx.c
@@ -35,7 +35,6 @@
#include
#include
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "options.h"
#include "prot_fx.h"
@@ -574,7 +573,7 @@ ivas_error ivas_mcmasa_enc_reconfig_fx(
void ivas_mcmasa_enc_close_fx(
MCMASA_ENC_HANDLE *hMcMasa, /* i/o: encoder McMASA handle */
- const int32_t input_Fs /* i : input sampling rate */
+ const Word32 input_Fs /* i : input sampling rate */
)
{
Word16 i, j;
diff --git a/lib_enc/ivas_mct_core_enc_fx.c b/lib_enc/ivas_mct_core_enc_fx.c
index 439c227aee1c02d77f09a859b16b35817025c29f..71515571d02cb289ea4d7438f1370decbcff0162 100644
--- a/lib_enc/ivas_mct_core_enc_fx.c
+++ b/lib_enc/ivas_mct_core_enc_fx.c
@@ -35,7 +35,6 @@
#include "options.h"
#include "cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "rom_com.h"
#include "wmc_auto.h"
#include "prot_fx_enc.h"
diff --git a/lib_enc/ivas_mct_enc_fx.c b/lib_enc/ivas_mct_enc_fx.c
index 55da30e73f9b96fda498a07f38e42540a66a1774..56f5e44db890533036f9f12cb5adae4d75c8d495 100644
--- a/lib_enc/ivas_mct_enc_fx.c
+++ b/lib_enc/ivas_mct_enc_fx.c
@@ -37,7 +37,6 @@
#include "cnst.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
#include "prot_fx_enc.h"
@@ -421,7 +420,7 @@ ivas_error ivas_mct_enc_fx(
}
/* joint MCT encoding */
- ivas_mct_core_enc_fx( ivas_format, hMCT, st_ivas->hCPE, hMCT->nchan_out_woLFE, ivas_total_brate, switch_bw, ( ivas_format == MC_FORMAT && ( st_ivas->mc_mode == MC_MODE_MCT || st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) ) ? (int16_t) st_ivas->hLFE->lfe_bits : 0, st_ivas->hEncoderConfig->sba_order );
+ ivas_mct_core_enc_fx( ivas_format, hMCT, st_ivas->hCPE, hMCT->nchan_out_woLFE, ivas_total_brate, switch_bw, ( ivas_format == MC_FORMAT && ( st_ivas->mc_mode == MC_MODE_MCT || st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) ) ? (Word16) st_ivas->hLFE->lfe_bits : 0, st_ivas->hEncoderConfig->sba_order );
FOR( cpe_id = 0; cpe_id < nCPE; cpe_id++ )
{
diff --git a/lib_enc/ivas_mct_enc_mct_fx.c b/lib_enc/ivas_mct_enc_mct_fx.c
index 88d773b530a6666c79c5f1f59511af922a0507b0..a8ba9a3202c2f5ad298c482148b2292a7b95ca8b 100644
--- a/lib_enc/ivas_mct_enc_mct_fx.c
+++ b/lib_enc/ivas_mct_enc_mct_fx.c
@@ -34,7 +34,6 @@
#include "options.h"
#include
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "prot_fx.h"
#include "prot_fx_enc.h"
diff --git a/lib_enc/ivas_mdct_core_enc_fx.c b/lib_enc/ivas_mdct_core_enc_fx.c
index 403d379fa21eee4fcb25b01fc9498fd239979415..9f674473ecec6f4e2b009791b04c1debadaf6f7b 100644
--- a/lib_enc/ivas_mdct_core_enc_fx.c
+++ b/lib_enc/ivas_mdct_core_enc_fx.c
@@ -37,7 +37,6 @@
#include
#include "cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
@@ -705,8 +704,8 @@ static void applyStereoPreProcessingCplx(
}
ELSE
{
- dmxR2_fx = L_sub( Mpy_32_32( valR1_fx, factIn_fx ), Mpy_32_32( valR2_fx, factDe_fx ) ); // Q = q_com + Q22 - 31
- dmxI2_fx = L_sub( Mpy_32_32( valI1_fx, factIn_fx ), Mpy_32_32( valI2_fx, factDe_fx ) ); // Q = q_com + Q22 - 31
+ dmxR2_fx = L_sub( Mpy_32_32( valR2_fx, factDe_fx ), Mpy_32_32( valR1_fx, factIn_fx ) ); // Q = q_com + Q22 - 31
+ dmxI2_fx = L_sub( Mpy_32_32( valI2_fx, factDe_fx ), Mpy_32_32( valI1_fx, factIn_fx ) ); // Q = q_com + Q22 - 31
}
}
ELSE
@@ -799,7 +798,7 @@ static void applyStereoPreProcessingCplx(
*
* encoder-side complex-valued stereo pre-processing (crosstalk)
*---------------------------------------------------------------*/
-static uint16_t enc_ste_pre_mdct(
+static UWord16 enc_ste_pre_mdct(
Word32 *sigR0_fx, /* i/o: MDCT samples of the 1st (left) channel q_com*/
Word32 *sigR1_fx, /* i/o: MDCT samples of the 2nd (right) channel q_com*/
Word32 *sigI0_fx, /* i/o: MDST samples of the 1st (left) channel q_com*/
@@ -1557,27 +1556,30 @@ void ivas_mdct_core_whitening_enc_fx(
}
IF( EQ_16( hTcxEnc0->transform_type[n], TCX_5 ) )
{
- Word16 length;
+ Word16 length, len_sbfr;
const Word16 tcx5SizeFB = sts[1]->hTcxCfg->tcx5SizeFB;
move16();
/* length = max(nSampCore / (2 * NB_DIV), L_subframeTCX / (2 * NB_DIV), NB_DIV = 2 */
length = shr( s_max( nSampCore, L_subframeTCX ), 2 );
+ len_sbfr = shr( hTcxEnc0->L_frameTCX, shift );
+ assert( hTcxEnc0->L_frameTCX == hTcxEnc1->L_frameTCX );
exp_max = s_max( hTcxEnc0->spectrum_e[n], hTcxEnc1->spectrum_e[n] );
exp_max = s_max( exp_max, mdst_spectrum_e[0][n] );
exp_max = s_max( exp_max, mdst_spectrum_e[1][n] );
// calculate the headroom available
- exp_com = s_min( L_norm_arr( hTcxEnc1->spectrum_fx[n], length ), L_norm_arr( hTcxEnc0->spectrum_fx[n], length ) );
- exp_com = s_min( exp_com, L_norm_arr( mdst_spectrum_fx[0][n], length ) );
- exp_com = s_min( exp_com, L_norm_arr( mdst_spectrum_fx[1][n], length ) );
+ exp_com = s_min( L_norm_arr( hTcxEnc1->spectrum_fx[n], len_sbfr ), L_norm_arr( hTcxEnc0->spectrum_fx[n], len_sbfr ) );
+ exp_com = s_min( exp_com, L_norm_arr( mdst_spectrum_fx[0][n], len_sbfr ) );
+ exp_com = s_min( exp_com, L_norm_arr( mdst_spectrum_fx[1][n], len_sbfr ) );
q_com = sub( s_min( Q31, add( sub( Q31, exp_max ), exp_com ) ), 6 ); // 6 guarded bits
+ q_com = s_max( q_com, 9 ); // Keep the Q-factor at least 9 to avoid precision loss inside enc_ste_pre_mdct.
exp_com = sub( Q31, q_com );
- Scale_sig32( hTcxEnc0->spectrum_fx[n], shr( hTcxEnc0->L_frameTCX, shift ) /* hTcxEnc0->L_frameTCX/nSubframes */, sub( hTcxEnc0->spectrum_e[n], exp_com ) ); // hTcxEnc0->spectrum_e
- Scale_sig32( hTcxEnc1->spectrum_fx[n], shr( hTcxEnc1->L_frameTCX, shift ) /* hTcxEnc1->L_frameTCX/nSubframes */, sub( hTcxEnc1->spectrum_e[n], exp_com ) ); // hTcxEnc1->spectrum_e
- Scale_sig32( mdst_spectrum_fx[0][n], shr( hTcxEnc0->L_frameTCX, shift ) /* hTcxEnc0->L_frameTCX/nSubframes */, sub( mdst_spectrum_e[0][n], exp_com ) ); // mdst_spectrum_e
- Scale_sig32( mdst_spectrum_fx[1][n], shr( hTcxEnc1->L_frameTCX, shift ) /* hTcxEnc1->L_frameTCX/nSubframes */, sub( mdst_spectrum_e[1][n], exp_com ) ); // mdst_spectrum_e
+ scale_sig32( hTcxEnc0->spectrum_fx[n], len_sbfr /* hTcxEnc0->L_frameTCX/nSubframes */, sub( hTcxEnc0->spectrum_e[n], exp_com ) ); // hTcxEnc0->spectrum_e
+ scale_sig32( hTcxEnc1->spectrum_fx[n], len_sbfr /* hTcxEnc1->L_frameTCX/nSubframes */, sub( hTcxEnc1->spectrum_e[n], exp_com ) ); // hTcxEnc1->spectrum_e
+ scale_sig32( mdst_spectrum_fx[0][n], len_sbfr /* hTcxEnc0->L_frameTCX/nSubframes */, sub( mdst_spectrum_e[0][n], exp_com ) ); // mdst_spectrum_e
+ scale_sig32( mdst_spectrum_fx[1][n], len_sbfr /* hTcxEnc1->L_frameTCX/nSubframes */, sub( mdst_spectrum_e[1][n], exp_com ) ); // mdst_spectrum_e
Word16 q_com_orig = q_com;
move16();
@@ -1601,17 +1603,18 @@ void ivas_mdct_core_whitening_enc_fx(
exp_max = sub( Q31, q_com );
move16();
- exp_com = s_min( L_norm_arr( hTcxEnc1->spectrum_fx[n], shr( hTcxEnc1->L_frameTCX, shift ) /* hTcxEnc1->L_frameTCX/nSubframes */ ), L_norm_arr( hTcxEnc0->spectrum_fx[n], shr( hTcxEnc0->L_frameTCX, shift ) /* hTcxEnc0->L_frameTCX/nSubframes */ ) );
- exp_com = s_min( exp_com, L_norm_arr( mdst_spectrum_fx[0][n], shr( hTcxEnc0->L_frameTCX, shift ) /* hTcxEnc0->L_frameTCX/nSubframes */ ) );
- exp_com = s_min( exp_com, L_norm_arr( mdst_spectrum_fx[1][n], shr( hTcxEnc1->L_frameTCX, shift ) /* hTcxEnc1->L_frameTCX/nSubframes */ ) );
+ exp_com = s_min( L_norm_arr( hTcxEnc1->spectrum_fx[n], len_sbfr /* hTcxEnc1->L_frameTCX/nSubframes */ ), L_norm_arr( hTcxEnc0->spectrum_fx[n], len_sbfr /* hTcxEnc0->L_frameTCX/nSubframes */ ) );
+ exp_com = s_min( exp_com, L_norm_arr( mdst_spectrum_fx[0][n], len_sbfr /* hTcxEnc0->L_frameTCX/nSubframes */ ) );
+ exp_com = s_min( exp_com, L_norm_arr( mdst_spectrum_fx[1][n], len_sbfr /* hTcxEnc1->L_frameTCX/nSubframes */ ) );
q_com = sub( s_min( Q31, add( q_com, exp_com ) ), 6 );
+ q_com = s_max( q_com, 9 ); // Keep the Q-factor at least 9 to avoid precision loss inside enc_ste_pre_mdct.
exp_com = sub( Q31, q_com );
- Scale_sig32( hTcxEnc0->spectrum_fx[n], shr( hTcxEnc0->L_frameTCX, shift ) /* hTcxEnc0->L_frameTCX/nSubframes */, sub( exp_max, exp_com ) ); // exp_max
- Scale_sig32( hTcxEnc1->spectrum_fx[n], shr( hTcxEnc1->L_frameTCX, shift ) /* hTcxEnc1->L_frameTCX/nSubframes */, sub( exp_max, exp_com ) ); // exp_max
- Scale_sig32( mdst_spectrum_fx[0][n], shr( hTcxEnc0->L_frameTCX, shift ) /* hTcxEnc0->L_frameTCX/nSubframes */, sub( exp_max, exp_com ) ); // exp_max
- Scale_sig32( mdst_spectrum_fx[1][n], shr( hTcxEnc1->L_frameTCX, shift ) /* hTcxEnc1->L_frameTCX/nSubframes */, sub( exp_max, exp_com ) ); // exp_max
+ scale_sig32( hTcxEnc0->spectrum_fx[n], len_sbfr /* hTcxEnc0->L_frameTCX/nSubframes */, sub( exp_max, exp_com ) ); // exp_max
+ scale_sig32( hTcxEnc1->spectrum_fx[n], len_sbfr /* hTcxEnc1->L_frameTCX/nSubframes */, sub( exp_max, exp_com ) ); // exp_max
+ scale_sig32( mdst_spectrum_fx[0][n], len_sbfr /* hTcxEnc0->L_frameTCX/nSubframes */, sub( exp_max, exp_com ) ); // exp_max
+ scale_sig32( mdst_spectrum_fx[1][n], len_sbfr /* hTcxEnc1->L_frameTCX/nSubframes */, sub( exp_max, exp_com ) ); // exp_max
q_com_orig = q_com;
move16();
@@ -1923,7 +1926,6 @@ void ivas_mdct_core_whitening_enc_fx(
tcx_subframe_coded_lines = shr( tcx_subframe_coded_lines, shift ); /*tcx_subframe_coded_lines / nSubframes*/
Word16 q_pow = 62, q_pow_tmp = sub( 63, shl( mdst_spectrum_e[0][0], 1 ) ); // add( shl( sub( Q31, mdst_spectrum_e[0][0] ), 1 ), 1 );
move16();
-
FOR( n = 0; n < nSubframes; n++ )
{
IF( st->hTcxEnc->fUseTns[n] )
@@ -1932,34 +1934,19 @@ void ivas_mdct_core_whitening_enc_fx(
{
powerSpec_fx64[i] = W_mult_32_32( st->hTcxEnc->spectrum_fx[n][i], st->hTcxEnc->spectrum_fx[n][i] );
move64();
- IF( powerSpec_fx64[i] == 0 )
- {
- q_pow = s_min( q_pow, 62 );
- }
- ELSE
-
- {
- q_pow = s_min( q_pow, W_norm( powerSpec_fx64[i] ) );
- }
}
+ q_pow = W_norm_arr( powerSpec_fx64, L_subframeTCX );
}
ELSE
{
FOR( i = 0; i < L_subframeTCX; i++ )
{
- powerSpec_fx64[i] = W_add( W_mult_32_32( mdst_spectrum_fx[ch][n][i], mdst_spectrum_fx[ch][n][i] ), W_mult_32_32( st->hTcxEnc->spectrum_fx[n][i], st->hTcxEnc->spectrum_fx[n][i] ) );
+ powerSpec_fx64[i] = W_mac_32_32( W_mult_32_32( mdst_spectrum_fx[ch][n][i], mdst_spectrum_fx[ch][n][i] ), st->hTcxEnc->spectrum_fx[n][i], st->hTcxEnc->spectrum_fx[n][i] );
move64();
- IF( powerSpec_fx64[i] == 0 )
- {
- q_pow = s_min( q_pow, 62 );
- }
- ELSE
-
- {
- q_pow = s_min( q_pow, W_norm( powerSpec_fx64[i] ) );
- }
}
+ q_pow = W_norm_arr( powerSpec_fx64, L_subframeTCX );
}
+
FOR( i = 0; i < L_subframeTCX; i++ )
{
powerSpec_fx64[i] = W_shl( powerSpec_fx64[i], q_pow );
@@ -2560,7 +2547,7 @@ void ivas_mdct_quant_coder_fx(
{
ignore_chan[ch] = 1;
move16();
- continue;
+ CONTINUE;
}
IF( EQ_16( st->hTcxEnc->tcxMode, TCX_20 ) )
@@ -2632,7 +2619,7 @@ void ivas_mdct_quant_coder_fx(
IF( EQ_16( st->mct_chan_mode, MCT_CHAN_MODE_IGNORE ) )
{
- continue;
+ CONTINUE;
}
FOR( n = 0; n < nSubframes; n++ )
@@ -2663,7 +2650,7 @@ void ivas_mdct_quant_coder_fx(
IF( EQ_16( st->mct_chan_mode, MCT_CHAN_MODE_IGNORE ) )
{
- continue;
+ CONTINUE;
}
FOR( n = 0; n < nSubframes; n++ )
@@ -2747,9 +2734,9 @@ void ivas_mdct_quant_coder_fx(
* Generate Bitstream
*---------------------------------------------------------------*/
- if ( EQ_16( st->mct_chan_mode, MCT_CHAN_MODE_IGNORE ) )
+ IF( EQ_16( st->mct_chan_mode, MCT_CHAN_MODE_IGNORE ) )
{
- continue;
+ CONTINUE;
}
nbits_start = st->hBstr->nb_bits_tot;
move16();
diff --git a/lib_enc/ivas_omasa_enc_fx.c b/lib_enc/ivas_omasa_enc_fx.c
index 7c8b78ffb52a8f3a84caacd20be09ca832a5bb6a..d31e6d53d63eb92bba1ec19c146fcbd29a9b12c3 100644
--- a/lib_enc/ivas_omasa_enc_fx.c
+++ b/lib_enc/ivas_omasa_enc_fx.c
@@ -35,7 +35,6 @@
#include
#include
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "prot_fx.h"
#include "ivas_rom_com.h"
@@ -125,7 +124,7 @@ ivas_error ivas_omasa_enc_open_fx(
move16();
FOR( i = 0; i < hOMasa->num_Cldfb_instances; i++ )
{
- IF( ( error = openCldfb_ivas_enc( &( hOMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, st_ivas->hEncoderConfig->input_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK )
+ IF( ( error = openCldfb_ivas_fx( &( hOMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, st_ivas->hEncoderConfig->input_Fs, CLDFB_PROTOTYPE_5_00MS, ENC ) ) != IVAS_ERR_OK )
{
return error;
}
@@ -228,7 +227,7 @@ void ivas_omasa_enc_close_fx(
FOR( i = 0; i < ( *hOMasa )->num_Cldfb_instances; i++ )
{
- deleteCldfb_ivas( &( ( *hOMasa )->cldfbAnaEnc[i] ) );
+ deleteCldfb_ivas_fx( &( ( *hOMasa )->cldfbAnaEnc[i] ) );
}
FOR( i = 0; i < DIRAC_NUM_DIMS; i++ )
@@ -337,11 +336,11 @@ ivas_error ivas_omasa_enc_config_fx(
/* re-write IVAS format signalling - actual 'ism_mode' was not known before */
IF( st_ivas->nSCE > 0 )
{
- reset_indices_enc( st_ivas->hSCE[0]->hCoreCoder[0]->hBstr, st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->nb_bits_tot );
+ reset_indices_enc_fx( st_ivas->hSCE[0]->hCoreCoder[0]->hBstr, st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->nb_bits_tot );
}
ELSE
{
- reset_indices_enc( st_ivas->hCPE[0]->hCoreCoder[0]->hBstr, st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->nb_bits_tot );
+ reset_indices_enc_fx( st_ivas->hCPE[0]->hCoreCoder[0]->hBstr, st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->nb_bits_tot );
}
ivas_write_format_fx( st_ivas );
diff --git a/lib_enc/ivas_osba_enc_fx.c b/lib_enc/ivas_osba_enc_fx.c
index 1229624de3af04df266518090e5710adc9096ed0..2a6944c502fd97256ec50250b6c774159c9694fc 100644
--- a/lib_enc/ivas_osba_enc_fx.c
+++ b/lib_enc/ivas_osba_enc_fx.c
@@ -35,7 +35,6 @@
#include
#include
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "prot_fx.h"
#include "ivas_rom_com.h"
#include "ivas_rom_enc.h"
diff --git a/lib_enc/ivas_pca_enc_fx.c b/lib_enc/ivas_pca_enc_fx.c
index 410d5dd52b459f8a552d52e02da448ce7a6f9f0c..2cb347a026794ad3e32d70cad242c81d02731e86 100644
--- a/lib_enc/ivas_pca_enc_fx.c
+++ b/lib_enc/ivas_pca_enc_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_cnst.h"
#include
#include
diff --git a/lib_enc/ivas_qmetadata_enc_fx.c b/lib_enc/ivas_qmetadata_enc_fx.c
index 3416ab27999f301d9fb6e48cc224f51427fc7d18..7de54c482bf7a2a7b8d8f5153206d76a7c15d822 100644
--- a/lib_enc/ivas_qmetadata_enc_fx.c
+++ b/lib_enc/ivas_qmetadata_enc_fx.c
@@ -36,7 +36,6 @@
#include
#include "ivas_cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_rom_com.h"
#include "ivas_stat_enc.h"
@@ -160,7 +159,7 @@ static Word16 encode_coherence_indexesDCT1_fx(
BSTR_ENC_HANDLE hMetaData /* i : metadata handle */
);
-static UWord64 create_combined_index_fx( uint16_t *idx_dct, const Word16 len, const Word16 *no_cb_vec );
+static UWord64 create_combined_index_fx( UWord16 *idx_dct, const Word16 len, const Word16 *no_cb_vec );
static Word16 encode_surround_coherence_fx(
IVAS_QMETADATA *hQMetaData, /* i : quantized metadata */
@@ -184,7 +183,7 @@ static void ivas_diffuseness_huff_ec_prepare_fx(
UWord16 *avr_idx,
Word16 *diffuseness_bits_huff );
-static Word16 coherence_coding_length( const uint16_t *idx_sur_coh_shift, const UWord8 idx_shift_len, const Word16 coding_subbands, const Word16 *no_cv, uint16_t *mr_idx, Word16 *no_cv_shift, Word16 *p_min_idx, Word16 *GR_ord, Word16 *nbits_fr, Word16 *nbits_fr1 );
+static Word16 coherence_coding_length( const UWord16 *idx_sur_coh_shift, const UWord8 idx_shift_len, const Word16 coding_subbands, const Word16 *no_cv, UWord16 *mr_idx, Word16 *no_cv_shift, Word16 *p_min_idx, Word16 *GR_ord, Word16 *nbits_fr, Word16 *nbits_fr1 );
static Word16 write_2dir_info( BSTR_ENC_HANDLE hMetaData, UWord8 *twoDirBands, const Word16 n, const Word16 k );
@@ -1210,7 +1209,7 @@ void reset_metadata_spatial_fx(
ELSE
{
/*Reset metadata*/
- reset_indices_enc( hMetaData, hMetaData->nb_ind_tot );
+ reset_indices_enc_fx( hMetaData, hMetaData->nb_ind_tot );
}
*total_brate = element_brate;
@@ -2326,7 +2325,7 @@ static Word16 ivas_qmetadata_entropy_encode_dir_fx(
move16();
UWord16 dist_elevation_indexes_best[MAX_PARAM_SPATIAL_SUBFRAMES * MASA_MAXIMUM_CODING_SUBBANDS];
Word16 gr_param_azimuth_best, avg_azimuth_index_best;
- uint16_t dist_azimuth_indexes_best[MAX_PARAM_SPATIAL_SUBFRAMES * MASA_MAXIMUM_CODING_SUBBANDS];
+ UWord16 dist_azimuth_indexes_best[MAX_PARAM_SPATIAL_SUBFRAMES * MASA_MAXIMUM_CODING_SUBBANDS];
UWord16 idx, dist_count;
Word16 direction_bits_ec;
diff --git a/lib_enc/ivas_qspherical_enc_fx.c b/lib_enc/ivas_qspherical_enc_fx.c
index a6f40c8f02945086b225b19dc9568ab73ec93fd1..2e7a289f9d38d51dbe634700f0ff7dd66ee23b17 100644
--- a/lib_enc/ivas_qspherical_enc_fx.c
+++ b/lib_enc/ivas_qspherical_enc_fx.c
@@ -35,7 +35,6 @@
#include "options.h"
#include
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "ivas_stat_enc.h"
#include "wmc_auto.h"
diff --git a/lib_enc/ivas_range_uni_enc_fx.c b/lib_enc/ivas_range_uni_enc_fx.c
index cf32c644d31892fef226a4fe2c594eddf9522720..6c322a3d953bfa19abc3df4d0196203117d76867 100644
--- a/lib_enc/ivas_range_uni_enc_fx.c
+++ b/lib_enc/ivas_range_uni_enc_fx.c
@@ -31,7 +31,6 @@
*******************************************************************************************************/
#include
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_cnst.h"
#include "ivas_stat_enc.h"
diff --git a/lib_enc/ivas_sba_enc_fx.c b/lib_enc/ivas_sba_enc_fx.c
index 8fdca5815e73de8afa4f755b3dd5ebff23572c5a..e630a70d954f4e5764dba5b446df8b125884a346 100644
--- a/lib_enc/ivas_sba_enc_fx.c
+++ b/lib_enc/ivas_sba_enc_fx.c
@@ -39,7 +39,6 @@
#include "rom_com.h"
#include "prot_fx.h"
#include "ivas_prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_enc/ivas_sce_enc_fx.c b/lib_enc/ivas_sce_enc_fx.c
index 8c2c945d6936560679a3ad226a2db83e01da74da..35b65e4c1604f4cf2a0763aefc69553aec6bb6a4 100644
--- a/lib_enc/ivas_sce_enc_fx.c
+++ b/lib_enc/ivas_sce_enc_fx.c
@@ -38,7 +38,6 @@
#include "rom_com.h"
#include "prot_fx.h"
#include "prot_fx_enc.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#ifdef DEBUGGING
#include "debug.h"
@@ -609,7 +608,7 @@ ivas_error create_evs_sce_enc_fx(
}
st_fx->hBstr->ind_list = ind_list;
// st_fx->hBstr->ind_list_fx = st->hBstr->ind_list;
- reset_indices_enc_fx( st_fx->hBstr );
+ reset_indices_enc_fx( st_fx->hBstr, MAX_NUM_INDICES );
hSCE->hCoreCoder[0] = st_fx;
st_ivas->hSCE[sce_id] = hSCE;
diff --git a/lib_enc/ivas_sns_enc_fx.c b/lib_enc/ivas_sns_enc_fx.c
index e6038186e3289b60d1faf8faf5c72064a6f62c96..dfd207c3e4d30c8841684d661401349efb8553a1 100644
--- a/lib_enc/ivas_sns_enc_fx.c
+++ b/lib_enc/ivas_sns_enc_fx.c
@@ -36,7 +36,6 @@
#include
#include "cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
@@ -60,7 +59,7 @@ static Word16 sns_1st_cod_fx(
Word32 *snsq_fx /* o : quantized sns Q16 */
)
{
- Word16 index;
+ Word16 index, i;
const Word16 split_len = M / 2;
move16();
const Word16 *means;
@@ -85,7 +84,7 @@ static Word16 sns_1st_cod_fx(
Word16 exp_snsq_buffer[M] = { 0 }, exp_snsq = 0;
move16();
move16();
- FOR( Word16 i = 0; i < M; ++i )
+ FOR( i = 0; i < M; ++i )
{
Word32 tmp = L_mult( means[i], means_fix ); // Q16
exp_snsq_buffer[i] = 0;
@@ -93,11 +92,11 @@ static Word16 sns_1st_cod_fx(
snsq_fx[i] = BASOP_Util_Add_Mant32Exp( sns_fx[i], exp_sns, L_negate( tmp ), 15, &exp_snsq_buffer[i] );
move32();
}
- FOR( int i = 0; i < M; i++ )
+ FOR( i = 0; i < M; i++ )
{
exp_snsq = s_max( exp_snsq_buffer[i], exp_snsq );
}
- FOR( int i = 0; i < M; i++ )
+ FOR( i = 0; i < M; i++ )
{
snsq_fx[i] = L_shr( snsq_fx[i], exp_snsq - exp_snsq_buffer[i] );
move32();
@@ -121,7 +120,7 @@ static Word16 sns_1st_cod_fx(
dist_min_fx = MAXVAL_WORD32;
Word16 exp_dist_min = 31;
index_split = 0;
- FOR( Word16 i = 0; i < 32; ++i )
+ FOR( i = 0; i < 32; ++i )
{
Word32 dist_fx = 0;
move32();
@@ -681,7 +680,7 @@ Word16 quantize_sns_fx(
IF( zero_side_flag[k] )
{
set32_fx( snsQ_fx, 0, M );
- continue;
+ CONTINUE;
}
nStages = SNS_MSVQ_NSTAGES_SIDE;
diff --git a/lib_enc/ivas_spar_encoder_fx.c b/lib_enc/ivas_spar_encoder_fx.c
index 674a805497d2f3b4b6e74c811e5d07001d2eb9d1..3b380f2ebacda088f27ceaa010823af2bd6199b3 100644
--- a/lib_enc/ivas_spar_encoder_fx.c
+++ b/lib_enc/ivas_spar_encoder_fx.c
@@ -33,7 +33,6 @@
#include
#include
#include "options.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "prot_fx.h"
#include "ivas_rom_com.h"
diff --git a/lib_enc/ivas_spar_md_enc_fx.c b/lib_enc/ivas_spar_md_enc_fx.c
index 925f4e7029f9dd19a775d6dc1af2afe5fc5bf416..9c4fcc937163e672569f913223ec1cce692b2a20 100644
--- a/lib_enc/ivas_spar_md_enc_fx.c
+++ b/lib_enc/ivas_spar_md_enc_fx.c
@@ -34,7 +34,6 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "math.h"
#include "ivas_rom_com.h"
@@ -850,7 +849,7 @@ ivas_error ivas_spar_md_enc_process_fx(
move16();
IF( NE_16( strat, NO_STRAT ) )
{
- reset_indices_enc( &hMetaData_tmp, md_indices_allocated );
+ reset_indices_enc_fx( &hMetaData_tmp, md_indices_allocated );
ivas_write_spar_md_bitstream_fx( hMdEnc, num_bands, bands_bw, &hMetaData_tmp, hEncoderConfig->ivas_total_brate, strat, qsi );
@@ -1665,7 +1664,7 @@ static void ivas_write_parameter_bitstream_dtx_fx(
Word16 *num_dec,
const Word16 num_bands )
{
- int16_t i, j;
+ Word16 i, j;
Word32 val;
Word16 idx;
Word32 pr_min_max[2];
diff --git a/lib_enc/ivas_stereo_adapt_GR_enc_fx.c b/lib_enc/ivas_stereo_adapt_GR_enc_fx.c
index 70c2165f82720b5b5abf44411c5fa3aeeb62fde6..8e79b228875469ea0b56b50d505f7e59771346eb 100644
--- a/lib_enc/ivas_stereo_adapt_GR_enc_fx.c
+++ b/lib_enc/ivas_stereo_adapt_GR_enc_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include "cnst.h"
-#include "ivas_prot.h"
#include "prot_fx.h"
#include "stat_enc.h"
#include "wmc_auto.h"
diff --git a/lib_enc/ivas_stereo_classifier_fx.c b/lib_enc/ivas_stereo_classifier_fx.c
index bfe683d6bea5788dd984d947cb3bf4530882217d..3e148a5aeb36fbfe22286463f8f5aa5b1643a9f4 100644
--- a/lib_enc/ivas_stereo_classifier_fx.c
+++ b/lib_enc/ivas_stereo_classifier_fx.c
@@ -39,7 +39,6 @@
#include "cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "ivas_rom_enc.h"
#include "ivas_cnst.h"
diff --git a/lib_enc/ivas_stereo_cng_enc_fx.c b/lib_enc/ivas_stereo_cng_enc_fx.c
index 255b6e9384f0baf8d63aa88042032d0cc70ca1c9..aa7c2d0aa6d1211a5724d95e60d69deaacbfac59 100644
--- a/lib_enc/ivas_stereo_cng_enc_fx.c
+++ b/lib_enc/ivas_stereo_cng_enc_fx.c
@@ -37,7 +37,6 @@
#include "rom_enc.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
diff --git a/lib_enc/ivas_stereo_dft_enc_fx.c b/lib_enc/ivas_stereo_dft_enc_fx.c
index 3f7237ce5bf10a17b17167968e5eda7f905d6855..3eb6c0e8232af7ddfc96be1a8625e2dddf501b2b 100644
--- a/lib_enc/ivas_stereo_dft_enc_fx.c
+++ b/lib_enc/ivas_stereo_dft_enc_fx.c
@@ -38,7 +38,6 @@
#include "rom_enc.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
@@ -3302,8 +3301,8 @@ static void stereo_dft_enc_compute_prm_fx(
Word32 *dot_prod_nrg_ratio_fx, // Q(31-dot_prod_nrg_ratio_fx_e[])
Word16 *dot_prod_nrg_ratio_fx_e )
{
- int16_t b, i;
- int16_t b2;
+ Word16 b, i;
+ Word16 b2;
Word32 *pDFT_L, *pDFT_R;
// Word16 DFT_L_e, DFT_R_e;
Word32 sum_nrg_L, sum_nrg_R;
@@ -3352,7 +3351,7 @@ static void stereo_dft_enc_compute_prm_fx(
Word16 sum_past_dot_prod_abs_e, sum_past_dot_prod_abs2_e = 0;
Word32 sum_past_nrg_dmx;
Word16 sum_past_nrg_dmx_e;
- int16_t pos;
+ Word16 pos;
Word32 pIpd[STEREO_DFT_BAND_MAX]; // Q13
Word32 ipd_smooth[STEREO_DFT_BAND_MAX]; // Q13
Word32 ipd_mean_change; // Q13
diff --git a/lib_enc/ivas_stereo_dft_enc_itd_fx.c b/lib_enc/ivas_stereo_dft_enc_itd_fx.c
index 862102d3b6e5257c3c1ab785775243dabd26b3aa..8a887de89f027b6906f8fddd25843e59e21cfdbc 100644
--- a/lib_enc/ivas_stereo_dft_enc_itd_fx.c
+++ b/lib_enc/ivas_stereo_dft_enc_itd_fx.c
@@ -38,7 +38,6 @@
#include "rom_enc.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
diff --git a/lib_enc/ivas_stereo_dft_td_itd_fx.c b/lib_enc/ivas_stereo_dft_td_itd_fx.c
index 58e66a01a57d0cbbe7738eb7b164312055af33eb..df4fe3edd15fe29ac3813dec4130beccfd7487cd 100644
--- a/lib_enc/ivas_stereo_dft_td_itd_fx.c
+++ b/lib_enc/ivas_stereo_dft_td_itd_fx.c
@@ -37,7 +37,6 @@
#include "cnst.h"
#include "prot_fx.h"
#include "rom_com.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "ivas_stat_enc.h"
#include "ivas_cnst.h"
diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c
index c3cb6871948d7544c1dc15967eed49333e827016..ae8a8203e815b5597d27cb4d6ffeb44070301274 100644
--- a/lib_enc/ivas_stereo_dmx_evs_fx.c
+++ b/lib_enc/ivas_stereo_dmx_evs_fx.c
@@ -37,7 +37,6 @@
#include "ivas_cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_rom_com.h"
#include "ivas_rom_com_fx.h"
diff --git a/lib_enc/ivas_stereo_eclvq_enc_fx.c b/lib_enc/ivas_stereo_eclvq_enc_fx.c
index f4962c8025520ec13c695d39a7cb0197d4592b06..3abc07811450ec80c6e98e508eef739e2d647f27 100644
--- a/lib_enc/ivas_stereo_eclvq_enc_fx.c
+++ b/lib_enc/ivas_stereo_eclvq_enc_fx.c
@@ -33,7 +33,6 @@
#include
#include "options.h"
#include
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
diff --git a/lib_enc/ivas_stereo_ica_enc_fx.c b/lib_enc/ivas_stereo_ica_enc_fx.c
index 78c324cce76e370c77b616e7d6a85fd0637d858d..0577987067b0619181a31f741ac782884febb4a2 100644
--- a/lib_enc/ivas_stereo_ica_enc_fx.c
+++ b/lib_enc/ivas_stereo_ica_enc_fx.c
@@ -37,7 +37,6 @@
#include "cnst.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "wmc_auto.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
diff --git a/lib_enc/ivas_stereo_icbwe_enc_fx.c b/lib_enc/ivas_stereo_icbwe_enc_fx.c
index 78891c5f78beeabe884ead49f26572271d1a9c90..bc84ba419072bd70dd77f4726678c80f6c4a4591 100644
--- a/lib_enc/ivas_stereo_icbwe_enc_fx.c
+++ b/lib_enc/ivas_stereo_icbwe_enc_fx.c
@@ -36,7 +36,6 @@
#include "cnst.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "wmc_auto.h"
#include "rom_com.h"
#include "ivas_rom_com.h"
diff --git a/lib_enc/ivas_stereo_mdct_core_enc_fx.c b/lib_enc/ivas_stereo_mdct_core_enc_fx.c
index 28b0e41b98f629143e8fb2b556cb5c086f74a38d..b6857854222703856361681d216a5cddf98fe512 100644
--- a/lib_enc/ivas_stereo_mdct_core_enc_fx.c
+++ b/lib_enc/ivas_stereo_mdct_core_enc_fx.c
@@ -36,7 +36,6 @@
#include
#include "cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "rom_com.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_enc/ivas_stereo_mdct_igf_enc_fx.c b/lib_enc/ivas_stereo_mdct_igf_enc_fx.c
index 57bb18e8044ff48220d430fd1d66404c4715807a..851df60d532327c819ce1f4d60abca6127ce0de8 100644
--- a/lib_enc/ivas_stereo_mdct_igf_enc_fx.c
+++ b/lib_enc/ivas_stereo_mdct_igf_enc_fx.c
@@ -38,7 +38,6 @@
#include "cnst.h"
#include "stat_enc.h"
#include "ivas_stat_enc.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "wmc_auto.h"
diff --git a/lib_enc/ivas_stereo_mdct_stereo_enc_fx.c b/lib_enc/ivas_stereo_mdct_stereo_enc_fx.c
index b1213a75000bf8cbcc12aeaee505d7aba4110f97..a61b2b0106170638a85e848080f6176e5ce661d5 100644
--- a/lib_enc/ivas_stereo_mdct_stereo_enc_fx.c
+++ b/lib_enc/ivas_stereo_mdct_stereo_enc_fx.c
@@ -35,7 +35,6 @@
#include "options.h"
#include
#include "ivas_cnst.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "prot_fx.h"
#include "prot_fx_enc.h"
diff --git a/lib_enc/ivas_stereo_switching_enc_fx.c b/lib_enc/ivas_stereo_switching_enc_fx.c
index 6513a3fa7210de895fdfe3232b4b0bad3c6b03b2..0a526561ae7317a3a06d15ea472636f2f3ad12fd 100644
--- a/lib_enc/ivas_stereo_switching_enc_fx.c
+++ b/lib_enc/ivas_stereo_switching_enc_fx.c
@@ -35,7 +35,6 @@
#include "cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_rom_com_fx.h"
#include "ivas_rom_com.h"
#include "assert.h"
@@ -367,8 +366,8 @@ ivas_error stereo_memory_enc_fx(
IF( EQ_16( hCPE->last_element_mode, IVAS_CPE_MDCT ) && ( EQ_16( hCPE->element_mode, IVAS_CPE_DFT ) || EQ_16( hCPE->element_mode, IVAS_CPE_TD ) ) )
{
/* Deallocate MDCT CNG structures */
- deleteCldfb_ivas( &hCPE->hCoreCoder[0]->cldfbAnaEnc );
- deleteCldfb_ivas( &hCPE->hCoreCoder[1]->cldfbAnaEnc );
+ deleteCldfb_ivas_fx( &hCPE->hCoreCoder[0]->cldfbAnaEnc );
+ deleteCldfb_ivas_fx( &hCPE->hCoreCoder[1]->cldfbAnaEnc );
IF( EQ_16( hCPE->element_mode, IVAS_CPE_DFT ) )
{
@@ -418,7 +417,7 @@ ivas_error stereo_memory_enc_fx(
/* allocate CLDFB for primary channel */
IF( st->cldfbAnaEnc == NULL )
{
- IF( NE_32( ( error = openCldfb_ivas_enc( &st->cldfbAnaEnc, CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_1_25MS, ENC ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -434,7 +433,7 @@ ivas_error stereo_memory_enc_fx(
IF( st->cldfbSynTd == NULL )
{
- IF( NE_32( ( error = openCldfb_ivas_enc( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS, ENC ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -588,7 +587,7 @@ ivas_error stereo_memory_enc_fx(
FOR( i = 0; i < CPE_CHANNELS; i++ )
{
st = hCPE->hCoreCoder[i];
- IF( NE_32( ( error = openCldfb_ivas_enc( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS, ENC ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -680,6 +679,10 @@ void stereo_switching_enc_fx(
FOR( n = 0; n < CPE_CHANNELS; n++ )
{
Copy( sts[n]->input_fx + input_frame - dft_ovl, hCPE->input_mem_fx[n], dft_ovl ); /* sts[n]->q_inp */
+#ifdef FIX_ISSUE_1327
+ hCPE->q_input_mem[n] = sts[n]->q_inp;
+ move16();
+#endif
}
}
diff --git a/lib_enc/ivas_stereo_td_analysis_fx.c b/lib_enc/ivas_stereo_td_analysis_fx.c
index efae1e80d00fbeee9b61b38053a1a78efe651659..44c08efa8a4fc05b01735b8127d84623b0ef3711 100644
--- a/lib_enc/ivas_stereo_td_analysis_fx.c
+++ b/lib_enc/ivas_stereo_td_analysis_fx.c
@@ -36,7 +36,6 @@
#include "cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "ivas_cnst.h"
#include "rom_enc.h"
diff --git a/lib_enc/ivas_stereo_td_enc_fx.c b/lib_enc/ivas_stereo_td_enc_fx.c
index f8d6002763dbde1ca078c4f5b375100320b1b74b..3780688276320dd2c4ac9d81bb6e849389e9fa6f 100644
--- a/lib_enc/ivas_stereo_td_enc_fx.c
+++ b/lib_enc/ivas_stereo_td_enc_fx.c
@@ -36,7 +36,6 @@
#include "cnst.h"
#include "rom_com.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
#ifdef DEBUGGING
@@ -196,7 +195,7 @@ void stereo_td_init_enc_fx(
move32();
hStereoTD->tdm_hBstr_tmp.ivas_max_num_indices = &hStereoTD->max_ind_tdm_tmp;
hStereoTD->tdm_hBstr_tmp.st_ivas = NULL;
- reset_indices_enc( &hStereoTD->tdm_hBstr_tmp, MAX_IND_TDM_TMP );
+ reset_indices_enc_fx( &hStereoTD->tdm_hBstr_tmp, MAX_IND_TDM_TMP );
return;
}
@@ -264,7 +263,7 @@ ivas_error stereo_set_tdm_fx(
/* deallocate CLDFB ana for secondary channel */
IF( st->cldfbAnaEnc != NULL )
{
- deleteCldfb_ivas( &st->cldfbAnaEnc );
+ deleteCldfb_ivas_fx( &st->cldfbAnaEnc );
}
/* deallocate BWEs for secondary channel */
@@ -276,7 +275,7 @@ ivas_error stereo_set_tdm_fx(
st->hBWE_TD = NULL;
}
- deleteCldfb_ivas( &st->cldfbSynTd );
+ deleteCldfb_ivas_fx( &st->cldfbSynTd );
IF( st->hBWE_FD != NULL )
{
@@ -310,7 +309,7 @@ ivas_error stereo_set_tdm_fx(
/* allocate CLDFB ana for secondary channel */
IF( st->cldfbAnaEnc == NULL )
{
- IF( NE_32( ( error = openCldfb_ivas_enc( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS, ENC ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -323,7 +322,7 @@ ivas_error stereo_set_tdm_fx(
{
return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for TD BWE\n" ) );
}
- IF( NE_32( ( error = openCldfb_ivas_enc( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS, ENC ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -1006,9 +1005,8 @@ void stereo_tdm_prep_dwnmx_fx(
const Word16 input_q /* i : frame lenght */
)
{
-#define USER_ENER
Word32 mener;
- int16_t i, sw_pos, enr_len;
+ Word16 i, sw_pos, enr_len;
Encoder_State **sts;
Word16 mener_e;
sts = hCPE->hCoreCoder;
diff --git a/lib_enc/ivas_tcx_core_enc_fx.c b/lib_enc/ivas_tcx_core_enc_fx.c
index 28044b45d8f92e7a36ea1d7f76a74516745a9d9f..1e66c148868960ae61e8dbcdbfe15f84b7cff136 100644
--- a/lib_enc/ivas_tcx_core_enc_fx.c
+++ b/lib_enc/ivas_tcx_core_enc_fx.c
@@ -39,7 +39,6 @@
#include "rom_com.h"
#include "basop_proto_func.h"
#include "wmc_auto.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "prot_fx_enc.h"
#include "rom_com_fx.h"
diff --git a/lib_enc/ivas_td_low_rate_enc_fx.c b/lib_enc/ivas_td_low_rate_enc_fx.c
index 34215025f5f0c64ff9dc2ac4a266f8527435fafe..2daa9ed5035a5747a51d0cdd486d20fa0a1d7527 100644
--- a/lib_enc/ivas_td_low_rate_enc_fx.c
+++ b/lib_enc/ivas_td_low_rate_enc_fx.c
@@ -39,7 +39,6 @@
#include "ivas_cnst.h"
#include "prot_fx.h"
#include "prot_fx_enc.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "wmc_auto.h"
diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc.c
index 8c60707a568fc31a4504bd19fd4e74d684e7477e..9c15a329c4fe37f917ea2c2facf30f0601dbf6ac 100644
--- a/lib_enc/lib_enc.c
+++ b/lib_enc/lib_enc.c
@@ -39,7 +39,6 @@
#include "debug.h"
#endif
#include "lib_enc.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "prot_fx.h"
#include "prot_fx_enc.h"
@@ -59,8 +58,8 @@ struct IVAS_ENC
bool cmd_stereo;
#endif
bool switchingActive; /* flag for configuration changes during encoding - currently only used with mono */
- int16_t Opt_RF_ON_loc;
- int16_t rf_fec_offset_loc;
+ Word16 Opt_RF_ON_loc;
+ Word16 rf_fec_offset_loc;
bool ismMetadataProvided[MAX_NUM_OBJECTS];
bool maxBandwidthUser; /* Was a specific max bandwith selected by the user? */
IVAS_ENC_BANDWIDTH newBandwidthApi; /* maximum encoded bandwidth, as set on API level */
@@ -77,14 +76,14 @@ static ivas_error setChannelAwareConfig_fx( IVAS_ENC_HANDLE hIvasEnc, const IVAS
static ivas_error sanitizeBandwidth_fx( const IVAS_ENC_HANDLE hIvasEnc );
static ivas_error sanitizeBitrateISM_fx( const ENCODER_CONFIG_HANDLE hEncoderConfig, const bool extMetadataApi );
static Word16 getInputBufferSize_fx( const Encoder_Struct *st_ivas );
-static ivas_error configureEncoder( IVAS_ENC_HANDLE hIvasEnc, const int32_t inputFs, const int32_t initBitrate, const IVAS_ENC_BANDWIDTH initBandwidth, const IVAS_ENC_DTX_CONFIG dtxConfig, const IVAS_ENC_CHANNEL_AWARE_CONFIG caConfig );
-static ivas_error setBitrate( IVAS_ENC_HANDLE hIvasEnc, const int32_t totalBitrate );
+static ivas_error configureEncoder( IVAS_ENC_HANDLE hIvasEnc, const Word32 inputFs, const Word32 initBitrate, const IVAS_ENC_BANDWIDTH initBandwidth, const IVAS_ENC_DTX_CONFIG dtxConfig, const IVAS_ENC_CHANNEL_AWARE_CONFIG caConfig );
+static ivas_error setBitrate( IVAS_ENC_HANDLE hIvasEnc, const Word32 totalBitrate );
static ivas_error doCommonConfigureChecks( IVAS_ENC_HANDLE hIvasEnc );
static ivas_error doCommonSetterChecks( IVAS_ENC_HANDLE hIvasEnc );
static void init_encoder_config( ENCODER_CONFIG_HANDLE hEncoderConfig );
static void resetIsmMetadataProvidedFlags( IVAS_ENC_HANDLE hIvasEnc );
-static ivas_error bandwidthApiToInternal( const IVAS_ENC_BANDWIDTH maxBandwidth, int16_t *internalMaxBandwidth );
-static ivas_error fecIndicatorApiToInternal( const IVAS_ENC_FEC_INDICATOR fecIndicator, int16_t *fecIndicatorInternal );
+static ivas_error bandwidthApiToInternal( const IVAS_ENC_BANDWIDTH maxBandwidth, Word16 *internalMaxBandwidth );
+static ivas_error fecIndicatorApiToInternal( const IVAS_ENC_FEC_INDICATOR fecIndicator, Word16 *fecIndicatorInternal );
#ifdef DEBUGGING
static ivas_error forcedModeApiToInternal( IVAS_ENC_FORCED_MODE forcedMode, int16_t *forcedModeInternal );
#endif
@@ -276,8 +275,8 @@ void IVAS_ENC_Close(
ivas_error IVAS_ENC_ConfigureForMono(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const int32_t inputFs, /* i : input sampling frequency */
- const int32_t bitrate, /* i : requested bitrate of the output bitstream */
+ const Word32 inputFs, /* i : input sampling frequency */
+ const Word32 bitrate, /* i : requested bitrate of the output bitstream */
const bool max_bwidth_user, /* i : shows if bandwidth limitation was set by the user (true) or if default bandwidth was used (false) */
const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */
const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */
@@ -296,7 +295,7 @@ ivas_error IVAS_ENC_ConfigureForMono(
}
hIvasEnc->st_ivas->hEncoderConfig->ivas_format = MONO_FORMAT;
- hIvasEnc->st_ivas->hEncoderConfig->is_binaural = (int16_t) is_binaural;
+ hIvasEnc->st_ivas->hEncoderConfig->is_binaural = (Word16) is_binaural;
if ( downmixFromStereo )
{
@@ -318,8 +317,8 @@ ivas_error IVAS_ENC_ConfigureForMono(
ivas_error IVAS_ENC_ConfigureForStereo(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const int32_t inputFs, /* i : input sampling frequency */
- const int32_t bitrate, /* i : requested bitrate of the output bitstream */
+ const Word32 inputFs, /* i : input sampling frequency */
+ const Word32 bitrate, /* i : requested bitrate of the output bitstream */
const bool max_bwidth_user, /* i : shows if bandwidth limitation was set by the user (true) or if default bandwidth was used (false) */
const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */
const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */
@@ -344,7 +343,7 @@ ivas_error IVAS_ENC_ConfigureForStereo(
hEncoderConfig = st_ivas->hEncoderConfig;
hEncoderConfig->nchan_inp = 2;
hEncoderConfig->ivas_format = STEREO_FORMAT;
- hEncoderConfig->is_binaural = (int16_t) is_binaural;
+ hEncoderConfig->is_binaural = (Word16) is_binaural;
#ifdef DEBUGGING
switch ( stereoMode )
@@ -458,12 +457,12 @@ ivas_error IVAS_ENC_ConfigureForMASAObjects(
ivas_error IVAS_ENC_ConfigureForObjects(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const int32_t inputFs, /* i : input sampling frequency */
- const int32_t bitrate, /* i : requested bitrate of the output bitstream */
+ const Word32 inputFs, /* i : input sampling frequency */
+ const Word32 bitrate, /* i : requested bitrate of the output bitstream */
const bool max_bwidth_user, /* i : shows if bandwidth limitation was set by the user (true) or if default bandwidth was used (false) */
const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */
const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */
- const uint16_t numObjects, /* i : number of objects to be encoded */
+ const UWord16 numObjects, /* i : number of objects to be encoded */
const bool ism_extended_metadata /* i : Extended metadata used (true/false), where extended metadata includes radius and orientation */
)
{
@@ -503,7 +502,7 @@ ivas_error IVAS_ENC_ConfigureForObjects(
ivas_error IVAS_ENC_FeedObjectMetadata(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const uint16_t ismIndex, /* i : object index */
+ const UWord16 ismIndex, /* i : object index */
const IVAS_ISM_METADATA metadata /* i : object metadata handle for current frame */
)
{
@@ -551,8 +550,8 @@ ivas_error IVAS_ENC_FeedObjectMetadata(
ivas_error IVAS_ENC_ConfigureForAmbisonics(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const int32_t inputFs, /* i : input sampling frequency */
- const int32_t bitrate, /* i : requested bitrate of the output bitstream */
+ const Word32 inputFs, /* i : input sampling frequency */
+ const Word32 bitrate, /* i : requested bitrate of the output bitstream */
const bool max_bwidth_user, /* i : shows if bandwidth limitation was set by the user (true) or if default bandwidth was used (false) */
const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */
const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */
@@ -580,7 +579,7 @@ ivas_error IVAS_ENC_ConfigureForAmbisonics(
hEncoderConfig->nchan_inp = ivas_sba_get_nchan_fx( hEncoderConfig->sba_order, 0 ); /*planar input arg. deliberately set to zero since input always in ACN/SN3D*/
- hEncoderConfig->Opt_PCA_ON = (int16_t) Opt_PCA_ON;
+ hEncoderConfig->Opt_PCA_ON = (Word16) Opt_PCA_ON;
hIvasEnc->maxBandwidthUser = max_bwidth_user;
@@ -780,8 +779,8 @@ ivas_error IVAS_ENC_FeedMasaMetadata(
ivas_error IVAS_ENC_ConfigureForMultichannel(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const int32_t inputFs, /* i : input sampling frequency */
- const int32_t bitrate, /* i : requested bitrate of the output bitstream */
+ const Word32 inputFs, /* i : input sampling frequency */
+ const Word32 bitrate, /* i : requested bitrate of the output bitstream */
const bool max_bwidth_user, /* i : shows if bandwidth limitation was set by the user (true) or if default bandwidth was used (false) */
const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */
const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */
@@ -841,8 +840,8 @@ ivas_error IVAS_ENC_ConfigureForMultichannel(
static ivas_error configureEncoder(
IVAS_ENC_HANDLE hIvasEnc,
- const int32_t inputFs,
- const int32_t initBitrate,
+ const Word32 inputFs,
+ const Word32 initBitrate,
const IVAS_ENC_BANDWIDTH initBandwidth,
const IVAS_ENC_DTX_CONFIG dtxConfig,
const IVAS_ENC_CHANNEL_AWARE_CONFIG caConfig )
@@ -850,7 +849,7 @@ static ivas_error configureEncoder(
Encoder_Struct *st_ivas;
ENCODER_CONFIG_HANDLE hEncoderConfig;
ivas_error error;
- int32_t cpe_brate;
+ Word32 cpe_brate;
error = IVAS_ERR_OK;
@@ -1481,7 +1480,7 @@ static Word16 getInputBufferSize_fx(
*---------------------------------------------------------------------*/
ivas_error IVAS_ENC_GetNumInChannels(
const IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- int16_t *numInChannels /* o : total number of samples expected in the input buffer for current encoder configuration */
+ Word16 *numInChannels /* o : total number of samples expected in the input buffer for current encoder configuration */
)
{
if ( hIvasEnc == NULL || numInChannels == NULL )
@@ -1829,8 +1828,8 @@ ivas_error IVAS_ENC_SetBandwidth(
*---------------------------------------------------------------------*/
ivas_error IVAS_ENC_SetBitrate(
- IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const int32_t totalBitrate /* i : requested bitrate of the output bitstream */
+ IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
+ const Word32 totalBitrate /* i : requested bitrate of the output bitstream */
)
{
ivas_error error;
@@ -2008,11 +2007,11 @@ const char *IVAS_ENC_GetErrorMessage(
static ivas_error printConfigInfo_enc(
IVAS_ENC_HANDLE hIvasEnc,
- const int16_t channelAwareModeEnabled )
+ const Word16 channelAwareModeEnabled )
{
Encoder_Struct *st_ivas;
ENCODER_CONFIG_HANDLE hEncoderConfig;
- int16_t newBandwidthApi;
+ Word16 newBandwidthApi;
ivas_error error;
st_ivas = hIvasEnc->st_ivas;
@@ -2242,7 +2241,7 @@ static ivas_error printConfigInfo_enc(
static ivas_error setBitrate(
IVAS_ENC_HANDLE hIvasEnc,
- const int32_t totalBitrate )
+ const Word32 totalBitrate )
{
Encoder_Struct *st_ivas;
ENCODER_CONFIG_HANDLE hEncoderConfig;
@@ -2758,8 +2757,8 @@ static ivas_error forcedModeApiToInternal(
*---------------------------------------------------------------------*/
ivas_error IVAS_ENC_PrintConfig(
- const IVAS_ENC_HANDLE hIvasEnc, /* i : IVAS encoder handle */
- const int16_t channelAwareModeEnabled /* i : channel-aware mode enabled flag */
+ const IVAS_ENC_HANDLE hIvasEnc, /* i : IVAS encoder handle */
+ const Word16 channelAwareModeEnabled /* i : channel-aware mode enabled flag */
)
{
return printConfigInfo_enc( hIvasEnc, channelAwareModeEnabled );
diff --git a/lib_enc/lib_enc.h b/lib_enc/lib_enc.h
index 4911711d7e9592a0291f573209b87b0791d78a98..ab6c39c23c4da9b2ca62da54e672eaf5dbc61607 100644
--- a/lib_enc/lib_enc.h
+++ b/lib_enc/lib_enc.h
@@ -68,7 +68,7 @@ typedef struct _IVAS_ENC_DTX_CONFIG
{
bool enabled;
bool variable_SID_rate;
- int16_t SID_interval;
+ Word16 SID_interval;
} IVAS_ENC_DTX_CONFIG;
typedef enum _IVAS_ENC_SBA_ORDER
@@ -169,8 +169,8 @@ ivas_error IVAS_ENC_Open_fx(
/*! r: error code */
ivas_error IVAS_ENC_ConfigureForMono(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const int32_t inputFs, /* i : input sampling frequency */
- const int32_t bitrate, /* i : requested bitrate of the output bitstream */
+ const Word32 inputFs, /* i : input sampling frequency */
+ const Word32 bitrate, /* i : requested bitrate of the output bitstream */
const bool max_bwidth_user, /* i : shows if bandwidth limitation was set by the user (true) or if default bandwidth was used (false) */
const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */
const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */
@@ -182,8 +182,8 @@ ivas_error IVAS_ENC_ConfigureForMono(
/*! r: error code */
ivas_error IVAS_ENC_ConfigureForStereo(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const int32_t inputFs, /* i : input sampling frequency */
- const int32_t bitrate, /* i : requested bitrate of the output bitstream */
+ const Word32 inputFs, /* i : input sampling frequency */
+ const Word32 bitrate, /* i : requested bitrate of the output bitstream */
const bool max_bwidth_user, /* i : shows if bandwidth limitation was set by the user (true) or if default bandwidth was used (false) */
const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */
const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */
@@ -197,34 +197,34 @@ ivas_error IVAS_ENC_ConfigureForStereo(
/*! r: error code */
ivas_error IVAS_ENC_ConfigureForObjects(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const int32_t inputFs, /* i : input sampling frequency */
- const int32_t bitrate, /* i : requested bitrate of the output bitstream */
+ const Word32 inputFs, /* i : input sampling frequency */
+ const Word32 bitrate, /* i : requested bitrate of the output bitstream */
const bool max_bwidth_user, /* i : shows if bandwidth limitation was set by the user (true) or if default bandwidth was used (false) */
const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */
const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */
- const uint16_t numObjects, /* i : number of objects to be encoded */
+ const UWord16 numObjects, /* i : number of objects to be encoded */
const bool ism_extended_metadata /* i : Extended metadata used (true/false), where extended metadata includes radius and orientation */
);
/*! r: encoder error code */
ivas_error IVAS_ENC_ConfigureForMASAObjects(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const int32_t inputFs, /* i : input sampling frequency */
- const int32_t bitrate, /* i : requested bitrate of the ouput bitstream */
+ const Word32 inputFs, /* i : input sampling frequency */
+ const Word32 bitrate, /* i : requested bitrate of the ouput bitstream */
const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */
const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */
- const uint16_t numObjects, /* i : number of objects to be encoded */
- const int16_t masaVariant /* i : index specifying the number of MASA transport channels */
+ const UWord16 numObjects, /* i : number of objects to be encoded */
+ const Word16 masaVariant /* i : index specifying the number of MASA transport channels */
);
/*! r: encoder error code */
ivas_error IVAS_ENC_ConfigureForSBAObjects(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const int32_t inputFs, /* i : input sampling frequency */
- const int32_t bitrate, /* i : requested bitrate of the ouput bitstream */
+ const Word32 inputFs, /* i : input sampling frequency */
+ const Word32 bitrate, /* i : requested bitrate of the ouput bitstream */
const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */
const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */
- const uint16_t numObjects, /* i : number of objects to be encoded */
+ const UWord16 numObjects, /* i : number of objects to be encoded */
const IVAS_ENC_SBA_ORDER order, /* i : order of the Ambisonics input */
const bool isPlanar, /* i : if true, input is treated as planar Ambisonics */
const bool Opt_PCA_ON /* i : PCA option flag */
@@ -233,8 +233,8 @@ ivas_error IVAS_ENC_ConfigureForSBAObjects(
/*! r: error code */
ivas_error IVAS_ENC_ConfigureForAmbisonics(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const int32_t inputFs, /* i : input sampling frequency */
- const int32_t bitrate, /* i : requested bitrate of the output bitstream */
+ const Word32 inputFs, /* i : input sampling frequency */
+ const Word32 bitrate, /* i : requested bitrate of the output bitstream */
const bool max_bwidth_user, /* i : shows if bandwidth limitation was set by the user (true) or if default bandwidth was used (false) */
const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */
const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */
@@ -245,8 +245,8 @@ ivas_error IVAS_ENC_ConfigureForAmbisonics(
ivas_error IVAS_ENC_ConfigureForAmbisonics_fx(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const int32_t inputFs, /* i : input sampling frequency */
- const int32_t bitrate, /* i : requested bitrate of the output bitstream */
+ const Word32 inputFs, /* i : input sampling frequency */
+ const Word32 bitrate, /* i : requested bitrate of the output bitstream */
const bool max_bwidth_user, /* i : shows if bandwidth limitation was set by the user (true) or if default bandwidth was used (false) */
const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */
const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */
@@ -257,8 +257,8 @@ ivas_error IVAS_ENC_ConfigureForAmbisonics_fx(
/*! r: error code */
ivas_error IVAS_ENC_ConfigureForMasa(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const int32_t inputFs, /* i : input sampling frequency */
- const int32_t bitrate, /* i : requested bitrate of the output bitstream */
+ const Word32 inputFs, /* i : input sampling frequency */
+ const Word32 bitrate, /* i : requested bitrate of the output bitstream */
const bool max_bwidth_user, /* i : shows if bandwidth limitation was set by the user (true) or if default bandwidth was used (false) */
const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */
const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */
@@ -268,8 +268,8 @@ ivas_error IVAS_ENC_ConfigureForMasa(
/*! r: encoder error code */
ivas_error IVAS_ENC_ConfigureForMultichannel(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const int32_t inputFs, /* i : input sampling frequency */
- const int32_t bitrate, /* i : requested bitrate of the output bitstream */
+ const Word32 inputFs, /* i : input sampling frequency */
+ const Word32 bitrate, /* i : requested bitrate of the output bitstream */
const bool max_bwidth_user, /* i : shows if bandwidth limitation was set by the user (true) or if default bandwidth was used (false) */
const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */
const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */
@@ -285,7 +285,7 @@ void IVAS_ENC_Close(
/*! r: error code */
ivas_error IVAS_ENC_FeedObjectMetadata(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const uint16_t ismIndex, /* i : object index */
+ const UWord16 ismIndex, /* i : object index */
const IVAS_ISM_METADATA metadata /* i : object metadata handle for current frame */
);
@@ -307,10 +307,10 @@ ivas_error IVAS_ENC_EncodeFrameToSerial(
/*! r: error code */
ivas_error IVAS_ENC_EncodeFrameToCompact(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- int16_t *inputBuffer, /* i : PCM input */
- const int16_t inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() */
- uint8_t *outputBitStream, /* o : pointer to compact output bitstream. The array must already be allocated. */
- uint16_t *numOutBits /* o : number of bits written to output bitstream */
+ Word16 *inputBuffer, /* i : PCM input */
+ const Word16 inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() */
+ UWord8 *outputBitStream, /* o : pointer to compact output bitstream. The array must already be allocated. */
+ UWord16 *numOutBits /* o : number of bits written to output bitstream */
);
/* Setter functions - apply changes to encoder configuration */
@@ -324,7 +324,7 @@ ivas_error IVAS_ENC_SetBandwidth(
/*! r: error code */
ivas_error IVAS_ENC_SetBitrate(
IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- const int32_t totalBitrate /* i : requested bitrate of the output bitstream */
+ const Word32 totalBitrate /* i : requested bitrate of the output bitstream */
);
/*! r: error code */
@@ -355,13 +355,13 @@ ivas_error IVAS_ENC_GetDelay(
/*! r: encoder error code */
ivas_error IVAS_ENC_GetNumInChannels(
const IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- int16_t *numInChannels /* o : total number of samples expected in the input buffer for current encoder configuration */
+ Word16 *numInChannels /* o : total number of samples expected in the input buffer for current encoder configuration */
);
/*! r: encoder error code */
ivas_error IVAS_ENC_GetInputBufferSize(
const IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */
- int16_t *inputBufferSize /* o : total number of samples expected in the input buffer for current encoder configuration */
+ Word16 *inputBufferSize /* o : total number of samples expected in the input buffer for current encoder configuration */
);
/* Utility functions */
@@ -388,7 +388,7 @@ const char *IVAS_ENC_GetErrorMessage(
ivas_error IVAS_ENC_PrintConfig(
const IVAS_ENC_HANDLE hIvasEnc, /* i : IVAS encoder handle */
- const int16_t channelAwareModeEnabled /* i : channel-aware mode enabled flag */
+ const Word16 channelAwareModeEnabled /* i : channel-aware mode enabled flag */
);
void IVAS_ENC_PrintDisclaimer(
diff --git a/lib_enc/lp_exc_e_fx.c b/lib_enc/lp_exc_e_fx.c
index 0887698f78c49dc6579835076bfe83d5af9a5aac..01005f6419fac1fdfb8a1c1dad6f30bdb96f60e1 100644
--- a/lib_enc/lp_exc_e_fx.c
+++ b/lib_enc/lp_exc_e_fx.c
@@ -53,7 +53,8 @@ Word16 lp_filt_exc_enc_fx(
Word16 wtmp, wtmp1;
Word32 Ltmp;
- Word16 use_prev_sf_pit_gain = 0;
+ Word16 use_prev_sf_pit_gain = 0; // Q0
+ move16();
gain1 = 0;
move16();
@@ -66,7 +67,8 @@ Word16 lp_filt_exc_enc_fx(
test();
IF( EQ_16( codec_mode, MODE2 ) && EQ_16( coder_type, 100 ) )
{
- use_prev_sf_pit_gain = 1;
+ use_prev_sf_pit_gain = 1; // Q0
+ move16();
}
exp_ener = 0;
move16();
@@ -75,7 +77,7 @@ Word16 lp_filt_exc_enc_fx(
test();
IF( EQ_16( *lp_flag, FULL_BAND ) || EQ_16( *lp_flag, NORMAL_OPERATION ) )
{
- wtmp = adpt_enr_fx( codec_mode, &exc[i_subfr], h1, y1, L_subfr, &gain1, g_corr, clip_gain, xn, xn2, &exp_ener, use_prev_sf_pit_gain );
+ wtmp = adpt_enr_fx( codec_mode, &exc[i_subfr], h1, y1, L_subfr, &gain1, g_corr, clip_gain, xn, xn2, &exp_ener, use_prev_sf_pit_gain ); // exp_ener
move16();
}
@@ -89,7 +91,7 @@ Word16 lp_filt_exc_enc_fx(
wtmp1 = 0;
move16();
test();
- IF( ( EQ_16( *lp_flag, LOW_PASS ) ) || ( EQ_16( *lp_flag, NORMAL_OPERATION ) ) )
+ IF( ( ( *lp_flag == LOW_PASS ) ) || ( EQ_16( *lp_flag, NORMAL_OPERATION ) ) )
{
test();
IF( EQ_16( codec_mode, MODE2 ) && EQ_16( L_frame, L_FRAME16k ) )
@@ -100,6 +102,7 @@ Word16 lp_filt_exc_enc_fx(
Ltmp = L_mac( Ltmp, 19005, exc[i + i_subfr] );
Ltmp = L_mac( Ltmp, 6881, exc[i + 1 + i_subfr] );
exc_tmp[i] = round_fx( Ltmp );
+ move16();
}
}
ELSE
@@ -110,20 +113,21 @@ Word16 lp_filt_exc_enc_fx(
Ltmp = L_mac( Ltmp, 20972, exc[i + i_subfr] );
Ltmp = L_mac( Ltmp, 5898, exc[i + 1 + i_subfr] );
exc_tmp[i] = round_fx( Ltmp );
+ move16();
}
}
- wtmp1 = adpt_enr_fx( codec_mode, exc_tmp, h1, y1_tmp, L_subfr, &gain2, g_corr2, clip_gain, xn, xn2_tmp, &exp_ener1, use_prev_sf_pit_gain );
+ wtmp1 = adpt_enr_fx( codec_mode, exc_tmp, h1, y1_tmp, L_subfr, &gain2, g_corr2, clip_gain, xn, xn2_tmp, &exp_ener1, use_prev_sf_pit_gain ); // exp_ener1
}
if ( LT_16( exp_ener, exp_ener1 ) )
{
- wtmp = shr( wtmp, 1 );
+ wtmp = shr( wtmp, 1 ); // exp_ener + 1
}
if ( GT_16( exp_ener, exp_ener1 ) )
{
- wtmp1 = shr( wtmp1, 1 );
+ wtmp1 = shr( wtmp1, 1 ); // exp_ener1 + 1
}
/*-----------------------------------------------------------------*
@@ -132,18 +136,18 @@ Word16 lp_filt_exc_enc_fx(
test();
test();
- IF( ( ( LT_16( wtmp1, wtmp ) ) && ( EQ_16( *lp_flag, NORMAL_OPERATION ) ) ) || ( EQ_16( *lp_flag, LOW_PASS ) ) )
+ IF( ( ( LT_16( wtmp1, wtmp ) ) && ( EQ_16( *lp_flag, NORMAL_OPERATION ) ) ) || ( ( *lp_flag == LOW_PASS ) ) )
{
/* use the LP filter for pitch excitation prediction */
select = LOW_PASS;
move16();
- Copy( exc_tmp, &exc[i_subfr], L_subfr );
- Copy( y1_tmp, y1, L_subfr );
- Copy( xn2_tmp, xn2, L_subfr );
+ Copy( exc_tmp, &exc[i_subfr], L_subfr ); // Q_new
+ Copy( y1_tmp, y1, L_subfr ); // Q_new-1+shift
+ Copy( xn2_tmp, xn2, L_subfr ); // Q_new-1+shift
IF( use_prev_sf_pit_gain == 0 )
{
- *gain_pit = gain2;
+ *gain_pit = gain2; // Q14
move16();
g_corr[0] = g_corr2[0];
move16();
@@ -162,7 +166,7 @@ Word16 lp_filt_exc_enc_fx(
move16();
IF( use_prev_sf_pit_gain == 0 )
{
- *gain_pit = gain1;
+ *gain_pit = gain1; // Q14
move16();
}
}
@@ -193,7 +197,8 @@ Word16 lp_filt_exc_enc_ivas_fx(
Word16 wtmp, wtmp1;
Word32 Ltmp;
- Word16 use_prev_sf_pit_gain = 0;
+ Word16 use_prev_sf_pit_gain = 0; // Q0
+ move16();
gain1 = 0;
move16();
@@ -206,7 +211,8 @@ Word16 lp_filt_exc_enc_ivas_fx(
test();
IF( EQ_16( codec_mode, MODE2 ) && EQ_16( coder_type, 100 ) )
{
- use_prev_sf_pit_gain = 1;
+ use_prev_sf_pit_gain = 1; // Q0
+ move16();
}
exp_ener = 0;
move16();
@@ -215,13 +221,13 @@ Word16 lp_filt_exc_enc_ivas_fx(
test();
IF( EQ_16( *lp_flag, FULL_BAND ) || EQ_16( *lp_flag, NORMAL_OPERATION ) )
{
- IF( use_prev_sf_pit_gain == 1 )
+ IF( EQ_16( use_prev_sf_pit_gain, 1 ) )
{
- wtmp = adpt_enr_fx( codec_mode, &exc[i_subfr], h1, y1, L_subfr, gain_pit, g_corr, clip_gain, xn, xn2, &exp_ener, use_prev_sf_pit_gain );
+ wtmp = adpt_enr_fx( codec_mode, &exc[i_subfr], h1, y1, L_subfr, gain_pit, g_corr, clip_gain, xn, xn2, &exp_ener, use_prev_sf_pit_gain ); // exp_ener
}
- else
+ ELSE
{
- wtmp = adpt_enr_fx( codec_mode, &exc[i_subfr], h1, y1, L_subfr, &gain1, g_corr, clip_gain, xn, xn2, &exp_ener, use_prev_sf_pit_gain );
+ wtmp = adpt_enr_fx( codec_mode, &exc[i_subfr], h1, y1, L_subfr, &gain1, g_corr, clip_gain, xn, xn2, &exp_ener, use_prev_sf_pit_gain ); // exp_ener
}
}
@@ -235,7 +241,7 @@ Word16 lp_filt_exc_enc_ivas_fx(
wtmp1 = 0;
move16();
test();
- IF( ( EQ_16( *lp_flag, LOW_PASS ) ) || ( EQ_16( *lp_flag, NORMAL_OPERATION ) ) )
+ IF( ( ( *lp_flag == LOW_PASS ) ) || ( EQ_16( *lp_flag, NORMAL_OPERATION ) ) )
{
test();
IF( EQ_16( codec_mode, MODE2 ) && EQ_16( L_frame, L_FRAME16k ) )
@@ -246,6 +252,7 @@ Word16 lp_filt_exc_enc_ivas_fx(
Ltmp = L_mac( Ltmp, 19005, exc[i + i_subfr] );
Ltmp = L_mac( Ltmp, 6881, exc[i + 1 + i_subfr] );
exc_tmp[i] = round_fx( Ltmp );
+ move16();
}
}
ELSE
@@ -256,15 +263,16 @@ Word16 lp_filt_exc_enc_ivas_fx(
Ltmp = L_mac( Ltmp, 20972, exc[i + i_subfr] );
Ltmp = L_mac( Ltmp, 5898, exc[i + 1 + i_subfr] );
exc_tmp[i] = round_fx( Ltmp );
+ move16();
}
}
- IF( use_prev_sf_pit_gain == 1 )
+ IF( EQ_16( use_prev_sf_pit_gain, 1 ) )
{
- wtmp1 = adpt_enr_fx( codec_mode, exc_tmp, h1, y1_tmp, L_subfr, gain_pit, g_corr2, clip_gain, xn, xn2_tmp, &exp_ener1, use_prev_sf_pit_gain );
+ wtmp1 = adpt_enr_fx( codec_mode, exc_tmp, h1, y1_tmp, L_subfr, gain_pit, g_corr2, clip_gain, xn, xn2_tmp, &exp_ener1, use_prev_sf_pit_gain ); // exp_ener1
}
ELSE
{
- wtmp1 = adpt_enr_fx( codec_mode, exc_tmp, h1, y1_tmp, L_subfr, &gain2, g_corr2, clip_gain, xn, xn2_tmp, &exp_ener1, use_prev_sf_pit_gain );
+ wtmp1 = adpt_enr_fx( codec_mode, exc_tmp, h1, y1_tmp, L_subfr, &gain2, g_corr2, clip_gain, xn, xn2_tmp, &exp_ener1, use_prev_sf_pit_gain ); // exp_ener1
}
}
@@ -284,18 +292,18 @@ Word16 lp_filt_exc_enc_ivas_fx(
test();
test();
- IF( ( ( LT_16( wtmp1, wtmp ) ) && ( EQ_16( *lp_flag, NORMAL_OPERATION ) ) ) || ( EQ_16( *lp_flag, LOW_PASS ) ) )
+ IF( ( ( LT_16( wtmp1, wtmp ) ) && ( EQ_16( *lp_flag, NORMAL_OPERATION ) ) ) || ( ( *lp_flag == LOW_PASS ) ) )
{
/* use the LP filter for pitch excitation prediction */
select = LOW_PASS;
move16();
- Copy( exc_tmp, &exc[i_subfr], L_subfr );
- Copy( y1_tmp, y1, L_subfr );
- Copy( xn2_tmp, xn2, L_subfr );
+ Copy( exc_tmp, &exc[i_subfr], L_subfr ); // Q_new
+ Copy( y1_tmp, y1, L_subfr ); // Q_new-1+shift
+ Copy( xn2_tmp, xn2, L_subfr ); // Q_new-1+shift
IF( use_prev_sf_pit_gain == 0 )
{
- *gain_pit = gain2;
+ *gain_pit = gain2; // Q14
move16();
g_corr[0] = g_corr2[0];
move16();
@@ -314,7 +322,7 @@ Word16 lp_filt_exc_enc_ivas_fx(
move16();
IF( use_prev_sf_pit_gain == 0 )
{
- *gain_pit = gain1;
+ *gain_pit = gain1; // Q14
move16();
}
}
@@ -367,9 +375,9 @@ static Word16 adpt_enr_fx( /* o : adaptive excitation
{
FOR( i = 0; i < L_subfr; i++ )
{
- exc_tmp[i] = mult( exc[i], 8192 );
+ exc_tmp[i] = mult( exc[i], 8192 /*0.25.Q15*/ ); // Q_new
move16();
- xn_tmp[i] = mult( xn[i], 8192 );
+ xn_tmp[i] = mult( xn[i], 8192 /*0.25.Q15*/ ); // Q_new
move16();
}
Overflow = 0;
@@ -383,14 +391,14 @@ static Word16 adpt_enr_fx( /* o : adaptive excitation
test();
if ( EQ_16( clip_gain, 1 ) && GT_16( *gain, 15565 ) ) /* constant in Q14 */
{
- *gain = 15565;
+ *gain = 15565; // 0.95.Q14
move16();
}
test();
- if ( EQ_16( clip_gain, 2 ) && GT_16( *gain, 10650 ) )
+ IF( EQ_16( clip_gain, 2 ) && GT_16( *gain, 10650 ) ) // 0.65.Q14
{
- *gain = 10650;
+ *gain = 10650; // 0.65.Q14
move16();
}
}
@@ -403,14 +411,14 @@ static Word16 adpt_enr_fx( /* o : adaptive excitation
/* could possibly happen in GSC */
Ltmp = Calc_Energy_Autoscaled( xn2, 0, L_subfr, exp_ener );
i = norm_l( Ltmp );
- ener = extract_h( L_shl( Ltmp, i ) );
+ ener = extract_h( L_shl( Ltmp, i ) ); // exp_ener
i = sub( 31, i );
*exp_ener = sub( i, *exp_ener );
move16();
}
ELSE
{
- ener = extract_h( Dot_product12( xn2, xn2, L_SUBFR, exp_ener ) );
+ ener = extract_h( Dot_product12( xn2, xn2, L_SUBFR, exp_ener ) ); // Q15
}
return ener;
@@ -424,9 +432,9 @@ static Word16 adpt_enr_fx( /* o : adaptive excitation
*-------------------------------------------------------------------*/
Word16 corr_xy1_fx( /* o : pitch gain (0..GAIN_PIT_MAX) */
- const Word16 xn_1[], /* i : target signal */
- const Word16 y1_1[], /* i : filtered adaptive codebook excitation */
- Word16 g_corr[], /* o : correlations and -2 */
+ const Word16 xn_1[], /* i : target signal Q_new*/
+ const Word16 y1_1[], /* i : filtered adaptive codebook excitation 12 bits*/
+ Word16 g_corr[], /* o : correlations and -2 mant/exp*/
const Word16 L_subfr, /* i : vector length */
const Word16 norm_flag /* i : flag for constraining pitch contribution */
,
@@ -446,7 +454,7 @@ Word16 corr_xy1_fx( /* o : pitch gain (0..GAIN_PIT_MAX)
*----------------------------------------------------------------*/
/* Compute scalar product */
- Copy( xn_1, xn, L_subfr );
+ Copy( xn_1, xn, L_subfr ); // Q_new
Copy( y1_1, y1, L_subfr );
Overflow = 0;
move16();
@@ -457,9 +465,9 @@ Word16 corr_xy1_fx( /* o : pitch gain (0..GAIN_PIT_MAX)
{
FOR( i = 0; i < L_subfr; i++ )
{
- xn[i] = mult_r( xn_1[i], 4096 );
+ xn[i] = mult_r( xn_1[i], 4096 /*0.125.Q15*/ ); // Q-new
move16();
- y1[i] = mult_r( y1_1[i], 4096 );
+ y1[i] = mult_r( y1_1[i], 4096 /*0.125.Q15*/ );
move16();
}
@@ -484,7 +492,7 @@ Word16 corr_xy1_fx( /* o : pitch gain (0..GAIN_PIT_MAX)
}
ELSE
{
- yy = extract_h( Ltmp1 );
+ yy = extract_h( Ltmp1 ); // exp_yy
/* Ltmp1 = L_shr(Ltmp1, sub(30, exp_yy));*/
/* Compute scalar product */
@@ -499,7 +507,7 @@ Word16 corr_xy1_fx( /* o : pitch gain (0..GAIN_PIT_MAX)
g_corr[1] = exp_yy;
move16();
/* -2.0*temp1 + 0.01 is done in Gain_enc_2 function*/
- g_corr[2] = xy;
+ g_corr[2] = xy; // exp_xy
move16();
g_corr[3] = exp_xy;
move16();
@@ -510,8 +518,8 @@ Word16 corr_xy1_fx( /* o : pitch gain (0..GAIN_PIT_MAX)
IF( xy >= 0 && NE_16( s_or( yy, xy ), 16384 ) )
{
/* compute gain = xy/yy */
- xy = shr( xy, 1 ); /* be sure that xy < yy */
- gain = div_s( xy, yy );
+ xy = shr( xy, 1 ); /* be sure that xy < yy */
+ gain = div_s( xy, yy ); // Q15
i = sub( exp_xy, exp_yy );
gain = shl_o( gain, i, &Overflow ); /* saturation can occur here */
*Overflow_out |= Overflow;
@@ -536,7 +544,7 @@ Word16 corr_xy1_fx( /* o : pitch gain (0..GAIN_PIT_MAX)
/* gain_p_snr = sqrt(/) */
tmp = BASOP_Util_Divide1616_Scale( xx, yy, &exp_div );
exp_xx = add( sub( exp_xx, exp_yy ), exp_div );
- tmp = Sqrt16( tmp, &exp_xx );
+ tmp = Sqrt16( tmp, &exp_xx ); // exp_xx
/* Note: shl works as shl or shr. */
exp_xx = sub( exp_xx, 1 );
@@ -544,8 +552,8 @@ Word16 corr_xy1_fx( /* o : pitch gain (0..GAIN_PIT_MAX)
gain_p_snr = round_fx_sat( L_shl_sat( Mpy_32_16_1( 1717986944l /*ACELP_GAINS_CONST Q31*/, tmp ), exp_xx ) );
BASOP_SATURATE_WARNING_ON_EVS
- gain = s_min( gain, gain_p_snr );
+ gain = s_min( gain, gain_p_snr ); // Q14
}
- return gain;
+ return gain; // Q14
}
diff --git a/lib_enc/lsf_enc_fx.c b/lib_enc/lsf_enc_fx.c
index a61b2ebffc61557dfbbcee4136619a126f1540ee..6761dfb8296d21226261d62f774f892ba973f889 100644
--- a/lib_enc/lsf_enc_fx.c
+++ b/lib_enc/lsf_enc_fx.c
@@ -31,9 +31,9 @@ static Word32 vq_lvq_lsf_enc( Word16 pred_flag, Word16 mode, Word16 u[], Word16
static Word32 vq_lvq_lsf_enc_ivas_fx( Word16 pred_flag, Word16 mode, Word16 u[], Word16 *levels, Word16 stages, Word16 w[], Word16 Idx[], const Word16 *lsf, const Word16 *pred, Word16 *resq, Word16 *lsfq );
-static void lsf_mid_enc_fx( BSTR_ENC_HANDLE hBstr, int16_t nb_bits, const Word16 int_fs, const Word16 qlsp0[], const Word16 qlsp1[], Word16 lsp[], const Word16 coder_type, const Word16 bwidth, Word32 Bin_Ener_old[], Word32 Bin_Ener[], Word16 Q_ener, Word16 ppp_mode, Word16 nelp_mode );
+static void lsf_mid_enc_fx( BSTR_ENC_HANDLE hBstr, Word16 nb_bits, const Word16 int_fs, const Word16 qlsp0[], const Word16 qlsp1[], Word16 lsp[], const Word16 coder_type, const Word16 bwidth, Word32 Bin_Ener_old[], Word32 Bin_Ener[], Word16 Q_ener, Word16 ppp_mode, Word16 nelp_mode );
-static void lsf_mid_enc_ivas_fx( BSTR_ENC_HANDLE hBstr, int16_t nb_bits, const Word32 int_fs, const Word16 qlsp0[], const Word16 qlsp1[], Word16 lsp[], const Word16 coder_type, const Word16 bwidth, Word32 Bin_Ener_old[], Word16 Q_ener, Word16 ppp_mode, Word16 nelp_mode );
+static void lsf_mid_enc_ivas_fx( BSTR_ENC_HANDLE hBstr, Word16 nb_bits, const Word32 int_fs, const Word16 qlsp0[], const Word16 qlsp1[], Word16 lsp[], const Word16 coder_type, const Word16 bwidth, Word32 Bin_Ener_old[], Word16 Q_ener, Word16 ppp_mode, Word16 nelp_mode );
/*===========================================================================*/
/* FUNCTION : lsf_enc_fx() */
@@ -74,8 +74,10 @@ void lsf_enc_fx(
const Word16 Q_new )
{
Word16 nBits = 0;
+ move16();
Word16 int_fs;
Word16 force_sf = 0;
+ move16();
Word16 fec_lsf[M], stab, i;
Word32 L_tmp;
Word16 coder_type, ppp_mode, nelp_mode;
@@ -189,7 +191,7 @@ void lsf_enc_fx(
lsf2lsp_fx( lsf_new, lsp_new, M, int_fs );
test();
- IF( EQ_16( st_fx->last_core, HQ_CORE ) && EQ_16( st_fx->core, ACELP_CORE ) )
+ IF( EQ_16( st_fx->last_core, HQ_CORE ) && ( st_fx->core == ACELP_CORE ) )
{
/* don't use old LSF values if this is the first ACELP frame after HQ frames */
Copy( lsf_new, st_fx->lsf_old_fx, M );
@@ -216,7 +218,7 @@ void lsf_enc_fx(
FEC_lsf_estim_enc_fx( st_fx, fec_lsf );
/* in case of FEC in decoder - calculate LSF stability */
- stab = lsf_stab_fx( lsf_new, fec_lsf, 0, st_fx->L_frame );
+ stab = lsf_stab_fx( lsf_new, fec_lsf, 0, st_fx->L_frame ); // Q15
test();
test();
@@ -255,8 +257,8 @@ void lsf_enc_fx(
if ( st_fx->rate_switching_reset )
{
/*extrapolation in case of unstable LSF convert*/
- Copy( lsp_new, st_fx->lsp_old_fx, M );
- Copy( lsf_new, st_fx->lsf_old_fx, M );
+ Copy( lsp_new, st_fx->lsp_old_fx, M ); // Q15
+ Copy( lsf_new, st_fx->lsf_old_fx, M ); // Q15
}
/* Mid-frame LSF encoding */
lsf_mid_enc_fx( st_fx->hBstr, st_fx->acelp_cfg.mid_lsf_bits, int_fs, st_fx->lsp_old_fx, lsp_new, lsp_mid, coder_type, st_fx->bwidth, st_fx->Bin_E_old_fx, st_fx->Bin_E_fx, Q_new + QSCALE - 2, ppp_mode, nelp_mode );
@@ -265,7 +267,7 @@ void lsf_enc_fx(
IF( EQ_16( st_fx->last_core, HQ_CORE ) && EQ_16( st_fx->core, ACELP_CORE ) )
{
/* don't use old LSP/LSF values if this is the first ACELP frame after HQ frames */
- Copy( lsp_mid, st_fx->lsp_old_fx, M );
+ Copy( lsp_mid, st_fx->lsp_old_fx, M ); // Q15
lsp2lsf_fx( lsp_mid, st_fx->lsf_old_fx, M, int_fs );
}
@@ -299,10 +301,10 @@ void lsf_enc_fx(
void lsf_enc_ivas_fx(
Encoder_State *st, /* i/o: state structure */
- Word16 *lsf_new, /* o : quantized LSF vector */
- Word16 *lsp_new, /* i/o: LSP vector to quantize/quantized */
- Word16 *lsp_mid, /* i/o : mid-frame LSP vector */
- Word16 *Aq, /* o : quantized A(z) for 4 subframes */
+ Word16 *lsf_new, /* o : quantized LSF vector Q(x2.56)*/
+ Word16 *lsp_new, /* i/o: LSP vector to quantize/quantized Q15*/
+ Word16 *lsp_mid, /* i/o : mid-frame LSP vector Q15*/
+ Word16 *Aq, /* o : quantized A(z) for 4 subframes Q12*/
const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag */
const Word16 GSC_IVAS_mode, /* i : GSC IVAS mode */
const Word16 tdm_lsfQ_PCh[M], /* i : Q LSFs for primary channel */
@@ -462,15 +464,15 @@ void lsf_enc_ivas_fx(
IF( NE_16( st->last_L_frame, st->L_frame ) )
{
/* FEC - in case of core switching, use old LSFs */
- Copy( st->lsf_old_fx, st->lsfoldbfi1_fx, M );
- Copy( st->lsf_old_fx, st->lsfoldbfi0_fx, M );
- Copy( st->lsf_old_fx, st->lsf_adaptive_mean_fx, M );
+ Copy( st->lsf_old_fx, st->lsfoldbfi1_fx, M ); // Q15
+ Copy( st->lsf_old_fx, st->lsfoldbfi0_fx, M ); // Q15
+ Copy( st->lsf_old_fx, st->lsf_adaptive_mean_fx, M ); // Q15
}
FEC_lsf_estim_enc_fx( st, fec_lsf );
/* in case of FEC in decoder - calculate LSF stability */
- stab = lsf_stab_ivas_fx( lsf_new, fec_lsf, 0, st->L_frame );
+ stab = lsf_stab_ivas_fx( lsf_new, fec_lsf, 0, st->L_frame ); // Q15
test();
test();
@@ -509,8 +511,8 @@ void lsf_enc_ivas_fx(
IF( st->rate_switching_reset )
{
/*extrapolation in case of unstable LSF convert*/
- Copy( lsp_new, st->lsp_old_fx, M );
- Copy( lsf_new, st->lsf_old_fx, M );
+ Copy( lsp_new, st->lsp_old_fx, M ); // Q15
+ Copy( lsf_new, st->lsf_old_fx, M ); // Q15
}
/* Mid-frame LSF encoding */
lsf_mid_enc_ivas_fx( st->hBstr, st->acelp_cfg.mid_lsf_bits, st->sr_core, st->lsp_old_fx, lsp_new, lsp_mid, coder_type, st->bwidth, st->Bin_E_old_fx, Q_new + QSCALE - 2, ppp_mode, nelp_mode );
@@ -529,9 +531,9 @@ void lsf_enc_ivas_fx(
{
IF( EQ_16( st->active_cnt, 1 ) )
{
- Copy( lsp_mid, st->lsp_old_fx, M );
+ Copy( lsp_mid, st->lsp_old_fx, M ); // Q15
lsp2lsf_fx( lsp_mid, st->lsf_old_fx, M, st->sr_core );
- Copy( lsp_new, lsp_mid, M );
+ Copy( lsp_new, lsp_mid, M ); // Q15
}
/* LSP interpolation and conversion of LSPs to A(z) - two-subframe mode */
@@ -546,7 +548,7 @@ void lsf_enc_ivas_fx(
*------------------------------------------------------------------*/
IF( NE_32( st->core_brate, SID_2k40 ) )
{
- st->stab_fac_fx = lsf_stab_ivas_fx( lsf_new, st->lsf_old_fx, 0, st->L_frame );
+ st->stab_fac_fx = lsf_stab_ivas_fx( lsf_new, st->lsf_old_fx, 0, st->L_frame ); // Q15
}
return;
}
@@ -847,8 +849,8 @@ static Word16 qlsf_Mode_Select_fx(
/*========================================================================*/
void lsf_end_enc_fx(
Encoder_State *st, /* i/o: encoder state structure */
- const Word16 *lsf, /* i : LSF in the frequency domain (0..6400) */
- Word16 *qlsf, /* o : quantized LSF */
+ const Word16 *lsf, /* i : LSF in the frequency domain (0..6400) x2.56*/
+ Word16 *qlsf, /* o : quantized LSF x2.56*/
const Word16 nBits_in, /* i : number of bits to spend on ISF quantization */
const Word16 coder_type_org, /* i : coding type */
Word16 Q_ener, /* i : Q valuen for Bin_Ener */
@@ -1008,7 +1010,7 @@ void lsf_end_enc_fx(
IF( ( ( GT_16( st->pstreaklen, ( STREAKLEN + 3 ) ) ) && ( EQ_16( coder_type, VOICED ) ) ) || ( ( GT_16( st->pstreaklen, ( STREAKLEN ) ) ) && ( NE_16( coder_type, VOICED ) ) ) )
{
/* update the adaptive scaling factor to become smaller with increasing number of concecutive predictive frames. */
- st->streaklimit_fx = mult( st->streaklimit_fx, STREAKMULT_FX );
+ st->streaklimit_fx = mult( st->streaklimit_fx, STREAKMULT_FX ); // Q15
move16();
}
@@ -1211,7 +1213,7 @@ void lsf_end_enc_fx(
{
lpc_param[i] = TCQIdx0[i];
move16();
- bits_param_lpc[i] = BC_TCVQ_BIT_ALLOC_40B[i];
+ bits_param_lpc[i] = BC_TCVQ_BIT_ALLOC_40B[i]; // Q0
move16();
}
}
@@ -1352,8 +1354,8 @@ void lsf_end_enc_fx(
void lsf_end_enc_ivas_fx(
Encoder_State *st, /* i/o: encoder state structure */
- const Word16 *lsf, /* i : LSF in the frequency domain (0..6400) */
- Word16 *qlsf, /* o : quantized LSF */
+ const Word16 *lsf, /* i : LSF in the frequency domain (0..6400) x2.56*/
+ Word16 *qlsf, /* o : quantized LSF x2.56*/
const Word16 nBits_in, /* i : number of bits to spend on ISF quantization */
const Word16 coder_type_org, /* i : coding type */
Word16 Q_ener, /* i : Q valuen for Bin_Ener */
@@ -1944,10 +1946,10 @@ void lsf_end_enc_ivas_fx(
static void first_VQstages(
const Word16 *const *cb,
- Word16 u[], /* i : vector to be encoded (prediction and mean removed) */
+ Word16 u[], /* i : vector to be encoded (prediction and mean removed) x2.56*/
Word16 *levels, /* i : number of levels in each stage */
Word16 stagesVQ, /* i : number of stages */
- Word16 w[], /* i : weights */
+ Word16 w[], /* i : weights Q8*/
Word16 N, /* i : vector dimension */
Word16 max_inner, /* i : maximum number of swaps in inner loop */
Word16 indices_VQstage[] )
@@ -2338,10 +2340,10 @@ static void first_VQstages_ivas_fx(
static Word32 vq_lvq_lsf_enc(
Word16 pred_flag,
Word16 mode,
- Word16 u[],
+ Word16 u[], // x2.56
Word16 *levels,
Word16 stages,
- Word16 w[],
+ Word16 w[], // Q8
Word16 Idx[],
const Word16 *lsf,
const Word16 *pred,
@@ -2370,13 +2372,13 @@ static Word32 vq_lvq_lsf_enc(
{
cb = &Quantizers_fx[CB_lsf[mode]];
move16();
- mode_glb = add( offset_lvq_modes_SN_fx[mode], offset_in_lvq_mode_SN_fx[mode][sub( levels[stagesVQ], min_lat_bits_SN_fx[mode] )] );
+ mode_glb = add( offset_lvq_modes_SN_fx[mode], offset_in_lvq_mode_SN_fx[mode][( levels[stagesVQ] - min_lat_bits_SN_fx[mode] )] ); // Q0
}
ELSE /* predictive */
{
cb = &Quantizers_p_fx[CB_p_lsf[mode]];
move16();
- mode_glb = add( offset_lvq_modes_pred_fx[mode], offset_in_lvq_mode_pred_fx[mode][sub( levels[stagesVQ], min_lat_bits_pred_fx[mode] )] );
+ mode_glb = add( offset_lvq_modes_pred_fx[mode], offset_in_lvq_mode_pred_fx[mode][( levels[stagesVQ] - min_lat_bits_pred_fx[mode] )] ); // Q0
}
IF( stagesVQ > 0 )
{
@@ -2421,7 +2423,7 @@ static Word32 vq_lvq_lsf_enc(
{
L_tmp = L_mac( L_tmp, mult( diff[j], shl_o( w[j], 1, &Overflow ) ), diff[j] ); /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */
}
- e[i] = L_tmp;
+ e[i] = L_tmp; /*(2.56+Q5+ Q10 -Q15) + 2.56+ Q5 + Q1 = 2.56 + 2.56 + Q6 */
move32();
}
@@ -2447,10 +2449,10 @@ static Word32 vq_lvq_lsf_enc(
static Word32 vq_lvq_lsf_enc_ivas_fx(
Word16 pred_flag,
Word16 mode,
- Word16 u[],
+ Word16 u[], // x2.56
Word16 *levels,
Word16 stages,
- Word16 w[],
+ Word16 w[], // Q8
Word16 Idx[],
const Word16 *lsf,
const Word16 *pred,
@@ -2478,7 +2480,7 @@ static Word32 vq_lvq_lsf_enc_ivas_fx(
IF( LT_16( mode, 6 ) )
{
move16();
- mode_glb = add( offset_lvq_modes_SN[mode], offset_in_lvq_mode_SN[mode][sub( levels[stagesVQ], min_lat_bits_SN[mode] )] );
+ mode_glb = add( offset_lvq_modes_SN[mode], offset_in_lvq_mode_SN[mode][( levels[stagesVQ] - min_lat_bits_SN[mode] )] );
}
ELSE
{
@@ -2492,7 +2494,7 @@ static Word32 vq_lvq_lsf_enc_ivas_fx(
IF( LT_16( mode, 6 ) || EQ_16( mode, 12 ) )
{
move16();
- mode_glb = add( offset_lvq_modes_pred[mode], offset_in_lvq_mode_pred[mode][sub( levels[stagesVQ], min_lat_bits_pred_fx[mode] )] );
+ mode_glb = add( offset_lvq_modes_pred[mode], offset_in_lvq_mode_pred[mode][( levels[stagesVQ] - min_lat_bits_pred_fx[mode] )] );
}
ELSE
{
@@ -2572,7 +2574,7 @@ static void BcTcvq_1st_fx(
Word16 c[][16],
Word32 cDist_fx[][16], /*2.56*2.56*Q(-5 - 2)*/
Word16 Q_fx[][16][2],
- Word16 W_fx[][2] /*Q10*/
+ Word16 W_fx[][2] /*Q8*/
)
{
Word16 state, prev_state;
@@ -2633,7 +2635,7 @@ static void BcTcvq_2nd_fx(
Word16 c[][16],
Word32 cDist_fx[][16], /*2.56*2.56*Q(-5 - 2) */
Word16 Q_fx[][16][2], /*x2.56*/
- Word16 W_fx[][2], /*Q10*/
+ Word16 W_fx[][2], /*Q8*/
const Word16 itc_fx[][2][2] /*Q15*/
)
{
@@ -2921,12 +2923,12 @@ static Word32 BcTcvq_FixSearch_fx(
Q_fx[stage][*prev_state][1] = add( CB_fx[stage4][bestCode][1], pred_fx[1] );
move16();
- minDist_fx = L_shr( minDist_fx, 2 );
+ minDist_fx = L_shr( minDist_fx, 2 ); /*2.56*2.56*Q(-5 - 2)*/
return minDist_fx;
}
static Word16 optimalPath_fx(
- Word32 cDist_fx[][16],
- Word32 blockDist_fx[],
+ Word32 cDist_fx[][16], /*2.56*2.56*Q(-5 - 2)*/
+ Word32 blockDist_fx[], /*2.56*2.56*Q(-5 - 2)*/
Word16 blockCodeword[][4],
Word16 bestCodeword[],
Word16 codeWord[][16],
@@ -2985,10 +2987,11 @@ static Word16 optimalPath_fx(
static void quantEnc_fx(
Word16 *y_fx,
Word16 c[],
- const Word16 CB_SUB1_fx[][128][2],
- const Word16 CB_SUB2_fx[][64][2],
- const Word16 CB_SUB3_fx[][32][2],
- const Word16 itc_fx[][2][2] )
+ const Word16 CB_SUB1_fx[][128][2], /*x2.56*/
+ const Word16 CB_SUB2_fx[][64][2], /*x2.56*/
+ const Word16 CB_SUB3_fx[][32][2], /*x2.56*/
+ const Word16 itc_fx[][2][2] // Q15
+)
{
Word16 i, j;
Word16 stage;
@@ -3103,9 +3106,9 @@ static void buildCode_fx(
}
static void BcTcvq_fx(
Word16 snFlag,
- const Word16 *x_fx,
- Word16 *y_fx,
- const Word16 *weight_fx,
+ const Word16 *x_fx, // x2.65
+ Word16 *y_fx, // x2.65
+ const Word16 *weight_fx, // Q8
Word16 *ind )
{
Word16 X_fx[N_STAGE_VQ][N_DIM], W_fx[N_STAGE_VQ][N_DIM];
@@ -3162,9 +3165,9 @@ static void BcTcvq_fx(
{
FOR( j = 0; j < N_DIM; j++ )
{
- X_fx[i][j] = x_fx[( N_DIM * i ) + j];
+ X_fx[i][j] = x_fx[( N_DIM * i ) + j]; // x2.65
move16();
- W_fx[i][j] = weight_fx[( N_DIM * i ) + j];
+ W_fx[i][j] = weight_fx[( N_DIM * i ) + j]; // x2.56
move16();
}
}
@@ -3259,10 +3262,10 @@ static void BcTcvq_fx(
}
static Word16 SVQ_2d_fx(
- Word16 *x_fx,
- Word16 *y_fx,
- const Word16 *W_fx,
- const Word16 CB_fx[][8],
+ Word16 *x_fx, // x2.65
+ Word16 *y_fx, // x2.65
+ const Word16 *W_fx, // Q8
+ const Word16 CB_fx[][8], // x2.65
Word16 Size )
{
Word16 i, j;
@@ -3280,7 +3283,7 @@ static Word16 SVQ_2d_fx(
{
temp16_fx = sub( x_fx[j], CB_fx[i][j] );
distortion_fx = L_add( distortion_fx,
- L_shr( Mult_32_16( L_mult( temp16_fx, temp16_fx ), W_fx[j] ), 1 ) );
+ L_shr( Mult_32_16( L_mult( temp16_fx, temp16_fx ), W_fx[j] ), 1 ) ); // (2*x2.65 + Q1 + Q8) - Q15 - Q1
}
IF( LT_32( distortion_fx, temp_fx ) )
@@ -3403,9 +3406,9 @@ Word32 qlsf_ARSN_tcvq_Enc_16k_fx(
}
static void FFT_Mid_Interpol_16k_fx(
- Word32 Bin_Ener_old[], /* i/o: Old 2nd FFT Bin energy (128) */
- Word32 Bin_Ener[], /* i : Current 2nd FFT Bin energy (128) */
- Word32 Bin_Ener_mid[] /* o : LP weighting filter (numerator) */
+ Word32 Bin_Ener_old[], /* i/o: Old 2nd FFT Bin energy (128) Q_ener*/
+ Word32 Bin_Ener[], /* i : Current 2nd FFT Bin energy (128) Q_ener*/
+ Word32 Bin_Ener_mid[] /* o : LP weighting filter (numerator) Q_ener*/
)
{
Word16 i;
@@ -3642,12 +3645,12 @@ static void lsf_mid_enc_ivas_fx(
BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */
Word16 nb_bits, /* i : number of bits */
const Word32 int_fs, /* i : internal (ACELP) sampling frequency*/
- const Word16 qlsp0[], /* i : quantized LSPs from frame beginning*/
- const Word16 qlsp1[], /* i : quantized LSPs from frame end */
- Word16 lsp[], /* i/o: mid-frame LSP */
+ const Word16 qlsp0[], /* i : quantized LSPs from frame beginning Q15*/
+ const Word16 qlsp1[], /* i : quantized LSPs from frame end Q15*/
+ Word16 lsp[], /* i/o: mid-frame LSP Q15*/
const Word16 coder_type, /* i : coding type */
const Word16 bwidth, /* i : input signal bandwidth */
- Word32 Bin_Ener[], /* i : per bin log energy spectrum */
+ Word32 Bin_Ener[], /* i : per bin log energy spectrum Q_ener*/
Word16 Q_ener, /* i : Q value of Bin_ener */
Word16 ppp_mode,
Word16 nelp_mode )
@@ -3681,19 +3684,19 @@ static void lsf_mid_enc_ivas_fx(
{
case 5:
{
- ratio = tbl_mid_voi_wb_5b_fx;
+ ratio = tbl_mid_voi_wb_5b_fx; // Q13
move16();
BREAK;
}
case 4:
{
- ratio = tbl_mid_voi_wb_4b_fx;
+ ratio = tbl_mid_voi_wb_4b_fx; // Q13
move16();
BREAK;
}
case 1:
{
- ratio = tbl_mid_voi_wb_1b_fx;
+ ratio = tbl_mid_voi_wb_1b_fx; // Q13
move16();
BREAK;
}
@@ -3701,7 +3704,7 @@ static void lsf_mid_enc_ivas_fx(
}
ELSE IF( EQ_16( coder_type, UNVOICED ) )
{
- ratio = tbl_mid_unv_wb_5b_fx;
+ ratio = tbl_mid_unv_wb_5b_fx; // Q13
}
ELSE
{
@@ -3710,19 +3713,19 @@ static void lsf_mid_enc_ivas_fx(
{
case 5:
{
- ratio = tbl_mid_gen_wb_5b_fx;
+ ratio = tbl_mid_gen_wb_5b_fx; // Q13
move16();
BREAK;
}
case 4:
{
- ratio = tbl_mid_gen_wb_4b_fx;
+ ratio = tbl_mid_gen_wb_4b_fx; // Q13
move16();
BREAK;
}
case 2:
{
- ratio = tbl_mid_gen_wb_2b_fx;
+ ratio = tbl_mid_gen_wb_2b_fx; // Q13
move16();
BREAK;
}
@@ -3734,7 +3737,7 @@ static void lsf_mid_enc_ivas_fx(
}
ELSE IF( EQ_16( ppp_mode, 1 ) )
{
- ratio = tbl_mid_voi_wb_1b_fx;
+ ratio = tbl_mid_voi_wb_1b_fx; // Q13
move16();
nb_bits = 1;
move16();
@@ -3743,7 +3746,7 @@ static void lsf_mid_enc_ivas_fx(
}
ELSE IF( EQ_16( nelp_mode, 1 ) )
{
- ratio = tbl_mid_unv_wb_4b_fx;
+ ratio = tbl_mid_unv_wb_4b_fx; // Q13
move16();
nb_bits = 4;
move16();
@@ -3765,7 +3768,7 @@ static void lsf_mid_enc_ivas_fx(
FOR( j = 0; j < M; j++ )
{
/* qlsf[j] = (1.0f - ratio[k*M+j]) * qlsf0[j] + ratio[k*M+j] * qlsf1[j]; */
- L_tmp = L_mult( sub( 0x2000, ratio[k1 + j] ), qlsf0[j] );
+ L_tmp = L_mult( sub( 0x2000 /*1.Q13*/, ratio[k1 + j] ), qlsf0[j] );
L_tmp = L_mac( L_tmp, ratio[k1 + j], qlsf1[j] );
qlsf[j] = round_fx( L_shl( L_tmp, 2 ) );
@@ -3802,7 +3805,7 @@ static void lsf_mid_enc_ivas_fx(
FOR( j = 0; j < M; j++ )
{
/* qlsf[j] = (1.0f - ratio[idx*M+j]) * qlsf0[j] + ratio[idx*M+j] * qlsf1[j]; */
- L_tmp = L_mult( sub( 0x2000, ratio[idx * M + j] ), qlsf0[j] );
+ L_tmp = L_mult( sub( 0x2000 /*1.Q13*/, ratio[idx * M + j] ), qlsf0[j] );
L_tmp = L_mac( L_tmp, ratio[idx * M + j], qlsf1[j] );
qlsf[j] = round_fx( L_shl( L_tmp, 2 ) );
diff --git a/lib_enc/lsf_msvq_ma_enc.c b/lib_enc/lsf_msvq_ma_enc.c
index 7f58a9501d1606ba0c74241aafcc7921ac80c56c..60375ddcce113a6c5ac6236fdbd3afd55aec93e9 100644
--- a/lib_enc/lsf_msvq_ma_enc.c
+++ b/lib_enc/lsf_msvq_ma_enc.c
@@ -37,7 +37,6 @@
#include
#include "options.h"
#include "cnst.h"
-#include "ivas_prot.h"
#include "prot_fx.h"
#include "rom_com.h"
#include "rom_enc.h"
@@ -93,7 +92,7 @@ Word16 msvq_stage1_dct_search_fx(
Word32 *dist1_ptr_fx, /* o : resulting stage 1 MSEs in DCT-N domain */
Word16 *dist1_ptr_e )
{
- Word32 dct_target_fx[FDCNG_VQ_DCT_MAXTRUNC];
+ Word32 dct_target_fx[FDCNG_VQ_DCT_MAXTRUNC]; // Q20
Word32 u_mr_fx[FDCNG_VQ_MAX_LEN];
Word16 dist1_ptr_e_buf[2 * LSFMBEST_MAX];
Word64 mse_trunc_segm_fx[FDCNG_VQ_DCT_NSEGM];
@@ -127,7 +126,7 @@ Word16 msvq_stage1_dct_search_fx(
tmp_e = s_max( 12, u_e );
FOR( i = 0; i < n_ana; i++ )
{
- u_mr_fx[i] = L_sub( L_shl( u_fx[i], sub( u_e, tmp_e ) ), L_shl( midQ_truncQ_fx[i], sub( Q31 - Q10, tmp_e ) ) );
+ u_mr_fx[i] = L_sub( L_shl( u_fx[i], sub( u_e, tmp_e ) ), L_shl( midQ_truncQ_fx[i], sub( Q31 - Q10, tmp_e ) ) ); // tmp_e
move32();
}
@@ -136,9 +135,9 @@ Word16 msvq_stage1_dct_search_fx(
/* init search state ptr's at the top */
set32_fx( dist1_ptr_fx, MAX_32, maxC_st1 );
set16_fx( dist1_ptr_e_buf, 32, maxC_st1 );
- st1_mse_pair_fx = &( dist1_ptr_fx[0] ); /* req. ptr post upd +=2 */
- st1_mse_pair_e = &( dist1_ptr_e_buf[0] ); /* req. ptr post upd +=2 */
- st1_idx_pair = &( indices_st1_local[0] ); /* req. ptr post upd +=2 */
+ st1_mse_pair_fx = &( dist1_ptr_fx[0] ); /* req. ptr post upd +=2 */ // st1_mse_pair_e
+ st1_mse_pair_e = &( dist1_ptr_e_buf[0] ); /* req. ptr post upd +=2 */
+ st1_idx_pair = &( indices_st1_local[0] ); /* req. ptr post upd +=2 */
set64_fx( mse_trunc_segm_fx, 0, n_segm );
// set16_fx( mse_trunc_segm_e, u_e, FDCNG_VQ_DCT_NSEGM );
@@ -152,7 +151,7 @@ Word16 msvq_stage1_dct_search_fx(
FOR( i = 0; i < trunc_dct_cols_per_segment[segm]; i++ )
{
- mse_trunc_segm_fx[segm] = W_mac_32_32( mse_trunc_segm_fx[segm], dct_target_fx[cols_per_segment[segm] + i], dct_target_fx[cols_per_segment[segm] + i] );
+ mse_trunc_segm_fx[segm] = W_mac_32_32( mse_trunc_segm_fx[segm], dct_target_fx[cols_per_segment[segm] + i], dct_target_fx[cols_per_segment[segm] + i] ); // Q41
move64();
}
@@ -163,7 +162,7 @@ Word16 msvq_stage1_dct_search_fx(
/* unweighted segmented search DCT domain loop */
j_full = add( j, cum_entries_per_segment[segm] ); /* or simply use j_full++ */
- mse_fx = mse_trunc_segm_fx[segm]; /* init mse with with common mse truncation part, in BASOP a move32() */
+ mse_fx = mse_trunc_segm_fx[segm]; /* init mse with with common mse truncation part, in BASOP a move32() */ // Q41
move64();
dct_col_shift_tab = col_syn_shift[segm]; /* ptr init */
@@ -176,10 +175,10 @@ Word16 msvq_stage1_dct_search_fx(
SHIFT( 1 );
ADD( 1 ); /* in BASOP: s_and(for W8->W16), shl(), sub()*/
#undef WMC_TOOL_SKIP
- mse_fx = W_mac_32_32( mse_fx, tmp_fx, tmp_fx ); /* L_mac or L_mac0() square Word16 -> Word32*/
+ mse_fx = W_mac_32_32( mse_fx, tmp_fx, tmp_fx ); /* L_mac or L_mac0() square Word16 -> Word32*/ // Q41
}
Word16 L_tmp = W_norm( mse_fx );
- st1_mse_ptr_fx[j_full] = W_extract_h( W_lshl( mse_fx, L_tmp ) ); /* save MSE in shared dynamic RAM, move32() in BASOP */
+ st1_mse_ptr_fx[j_full] = W_extract_h( W_lshl( mse_fx, L_tmp ) ); /* save MSE in shared dynamic RAM, move32() in BASOP */ // st1_mse_ptr_e
move32();
st1_mse_ptr_e[j_full] = sub( shl( tmp_e, 1 ), L_tmp );
move16();
@@ -362,11 +361,11 @@ Word16 msvq_stage1_dct_search_fx(
/*! r: (updated p_max) */
Word16 msvq_stage1_dct_recalc_candidates_fdcng_wb_fx(
- const Word32 *st1_syn_vec_ptr_fx, /* i : IDCT24 synthesis vectors */
+ const Word32 *st1_syn_vec_ptr_fx, /* i : IDCT24 synthesis vectors st1_syn_vec_e*/
const Word16 st1_syn_vec_e, /* i : exp for IDCT24 synthesis vectors */
- const Word32 *u_fx, /* i : target signal */
+ const Word32 *u_fx, /* i : target signal u_e*/
const Word16 u_e, /* i : exp for target signal */
- const int16_t maxC_st1, /* i : number of candidates in stage1 */
+ const Word16 maxC_st1, /* i : number of candidates in stage1 */
Word32 *dist_ptr_fx, /* i/o: updated MSE vector for stage1 */
Word16 *dist_ptr_e /* i/o: exp for updated MSE vector for stage1 */
)
@@ -390,7 +389,7 @@ Word16 msvq_stage1_dct_recalc_candidates_fdcng_wb_fx(
/* for stage#1 use "u" instead of the shortened resid[0], to access the extended/extrapolated input target */
FOR( i = 0; i < FDCNG_VQ_MAX_LEN - FDCNG_VQ_MAX_LEN_WB; i++ )
{
- high_diff_fx[i] = L_sub( L_shr( p2_fx[i], sub( tmp_e, st1_syn_vec_e ) ), L_shr( u_fx[FDCNG_VQ_MAX_LEN_WB + i], sub( tmp_e, u_e ) ) );
+ high_diff_fx[i] = L_sub( L_shr( p2_fx[i], sub( tmp_e, st1_syn_vec_e ) ), L_shr( u_fx[FDCNG_VQ_MAX_LEN_WB + i], sub( tmp_e, u_e ) ) ); // tmp_e
move32();
}
acc = 0;
@@ -457,7 +456,7 @@ void msvq_enc_ivas_fx(
Word16 j;
const Word16 *cbp, *cb_stage;
Word32 resid_buf_fx[2 * LSFMBEST_MAX * M_MAX], *resid_fx[2];
- Word32 *pTmp, *p1, *p2;
+ Word32 *pTmp, *p1, *p2; // pTmp_e
Word16 pTmp_e;
Word16 *indices[2], m, s, c, c2, p_max, i;
Word16 idx_buf[2 * LSFMBEST_MAX * MAX_VQ_STAGES_USED], parents[LSFMBEST_MAX];
diff --git a/lib_enc/lsf_msvq_ma_enc_fx.c b/lib_enc/lsf_msvq_ma_enc_fx.c
index b81cc18e8486f5abdacdad2104ae288f8a0e08a4..aa2255c68b1dbb7687dfb4be495a015286717a76 100644
--- a/lib_enc/lsf_msvq_ma_enc_fx.c
+++ b/lib_enc/lsf_msvq_ma_enc_fx.c
@@ -36,10 +36,10 @@
val2 = shr( ( cbp )[2], 4 ); \
val3 = add( add( shr( lshl( ( cbp )[2], 12 ), 4 ), lshr( lshl( ( cbp )[1], 12 ), 8 ) ), s_and( ( cbp )[0], 0xF ) );
/*--------------------------------------------------------------------------*
- * depack_mul_values()
+ * depack_mul_values_fx()
*
*--------------------------------------------------------------------------*/
-static Word32 depack_mul_values( Word16 *Tmp, const Word16 *w, const Word16 *cbp, const Word16 N )
+static Word32 depack_mul_values_fx( Word16 *Tmp, const Word16 *w, const Word16 *cbp, const Word16 N )
{
Word16 i, val0, val1, val2, val3;
Word32 en;
@@ -69,7 +69,7 @@ static Word32 depack_mul_values( Word16 *Tmp, const Word16 *w, const Word16 *cbp
* depack_sub_values()
*
*--------------------------------------------------------------------------*/
-static void depack_sub_values( Word16 *pTmp, const Word16 *p1, const Word16 *cbp, const Word16 N )
+static void depack_sub_values_fx( Word16 *pTmp, const Word16 *p1, const Word16 *cbp, const Word16 N )
{
Word16 j, val0, val1, val2, val3;
@@ -93,7 +93,7 @@ static void depack_sub_values( Word16 *pTmp, const Word16 *p1, const Word16 *cbp
*
* Unroll of inner search loop for maxC == 8
*--------------------------------------------------------------------------*/
-static Word16 msvq_enc_find_p_max_8( Word32 dist[] )
+static Word16 msvq_enc_find_p_max_8_fx( Word32 dist[] )
{
Word16 p_max;
@@ -144,7 +144,7 @@ static Word16 msvq_enc_find_p_max_8( Word32 dist[] )
*
* Unroll of inner search loop for maxC == 6
*--------------------------------------------------------------------------*/
-static Word16 msvq_enc_find_p_max_6( Word32 dist[] )
+static Word16 msvq_enc_find_p_max_6_fx( Word32 dist[] )
{
Word16 p_max;
@@ -194,7 +194,7 @@ void msvq_enc_fx(
const Word16 maxC, /* i : Tree search size (number of candidates kept from */
/* one stage to the next == M-best) */
const Word16 stages, /* i : Number of stages */
- const Word16 w[], /* i : Weights */
+ const Word16 w[], /* i : Weights Q8*/
const Word16 N, /* i : Vector dimension */
const Word16 maxN, /* i : Codebook dimension */
Word16 Idx[] /* o : Indices */
@@ -231,11 +231,11 @@ void msvq_enc_fx(
set16_fx( parents, 0, maxC );
- func_ptr = msvq_enc_find_p_max_6;
+ func_ptr = msvq_enc_find_p_max_6_fx;
move16();
if ( EQ_16( maxC, 8 ) )
{
- func_ptr = msvq_enc_find_p_max_8;
+ func_ptr = msvq_enc_find_p_max_8_fx;
move16();
}
@@ -326,7 +326,7 @@ void msvq_enc_fx(
FOR( j = 0; j < levels[s]; j++ )
{
/* Compute weighted codebook element and its energy */
- en = depack_mul_values( Tmp + start, w + start, cbp, n );
+ en = depack_mul_values_fx( Tmp + start, w + start, cbp, n );
cbp += N34; /* pointer is incremented */
@@ -378,7 +378,7 @@ void msvq_enc_fx(
move16();
Copy( p1, pTmp, start );
- depack_sub_values( pTmp + start, p1 + start, &cb[s][p2i * N34], n );
+ depack_sub_values_fx( pTmp + start, p1 + start, &cb[s][p2i * N34], n );
Copy( p1 + start + n, pTmp + start + n, sub( N, add( start, n ) ) );
pTmp += N;
@@ -407,12 +407,12 @@ void msvq_enc_fx(
*--------------------------------------------------------------------------*/
void midlsf_enc_fx(
- const Word16 qlsf0[], /* i: quantized lsf coefficients (3Q12) */
- const Word16 qlsf1[], /* i: quantized lsf coefficients (3Q12) */
- const Word16 lsf[], /* i: lsf coefficients (3Q12) */
- Word16 *idx, /* o: codebook index */
- const Word16 lpcorder, /* i: order of the lpc */
- const Word32 *Bin_Ener_128_fx,
+ const Word16 qlsf0[], /* i: quantized lsf coefficients (3Q12) */
+ const Word16 qlsf1[], /* i: quantized lsf coefficients (3Q12) */
+ const Word16 lsf[], /* i: lsf coefficients (3Q12) */
+ Word16 *idx, /* o: codebook index */
+ const Word16 lpcorder, /* i: order of the lpc */
+ const Word32 *Bin_Ener_128_fx, // Q_ener
const Word16 Q_ener,
const Word8 narrowBand,
const Word32 sr_core,
@@ -502,8 +502,8 @@ void midlsf_enc_fx(
* Returns: number of indices
*--------------------------------------------------------------------------*/
Word16 Q_lsf_tcxlpc_fx(
- /* const */ Word16 lsf[], /* i : original lsf */
- Word16 lsf_q[], /* o : quantized lsf */
+ /* const */ Word16 lsf[], /* i : original lsf 14Q1 * 1.28 */
+ Word16 lsf_q[], /* o : quantized lsf (14Q1*1.28)*/
Word16 lsp_q_ind[], /* o : quantized lsp (w/o MA prediction) */
Word16 indices[], /* o : VQ indices */
const Word16 lpcorder, /* i : LPC order */
@@ -511,7 +511,7 @@ Word16 Q_lsf_tcxlpc_fx(
const Word16 cdk, /* i : codebook selector */
const Word16 mem_MA[], /* i : MA memory */
const Word16 coder_type,
- const Word32 *Bin_Ener,
+ const Word32 *Bin_Ener, // Q_ener
const Word16 Q_ener )
{
Word16 weights[M + 1];
@@ -578,7 +578,7 @@ Word16 Q_lsf_tcxlpc_fx(
FOR( i = 0; i < lpcorder; ++i )
{
- lsf_q_ind[i] = lsf_q[i];
+ lsf_q_ind[i] = lsf_q[i]; /*(14Q1*1.28)*/
move16();
}
@@ -891,7 +891,7 @@ Word16 enc_lsf_tcxlpc_ivas_fx(
Word16 lsf_msvq_ma_encprm_fx(
BSTR_ENC_HANDLE hBstr,
- Word16 *param_lpc,
+ Word16 *param_lpc, // Q0
Word16 core,
Word16 acelp_mode,
Word16 acelp_midLpc,
@@ -916,7 +916,7 @@ Word16 lsf_msvq_ma_encprm_fx(
IF( NE_16( acelp_mode, VOICED ) )
{
test();
- IF( EQ_16( core, ACELP_CORE ) && acelp_midLpc )
+ IF( ( core == ACELP_CORE ) && acelp_midLpc )
{
push_next_indice_fx( hBstr, *param_lpc, bits_midlpc );
@@ -928,7 +928,7 @@ Word16 lsf_msvq_ma_encprm_fx(
}
Word16 lsf_msvq_ma_encprm_ivas_fx(
BSTR_ENC_HANDLE hBstr,
- const Word16 *param_lpc,
+ const Word16 *param_lpc, // Q0
const Word16 core,
const Word16 acelp_mode,
const Word16 acelp_midLpc,
@@ -953,7 +953,7 @@ Word16 lsf_msvq_ma_encprm_ivas_fx(
IF( NE_16( acelp_mode, VOICED ) )
{
test();
- IF( EQ_16( core, ACELP_CORE ) && acelp_midLpc )
+ IF( ( core == ACELP_CORE ) && acelp_midLpc )
{
push_next_indice( hBstr, *param_lpc, bits_midlpc );
@@ -971,7 +971,7 @@ Word16 lsf_msvq_ma_encprm_ivas_fx(
*--------------------------------------------------------------------------*/
Word16 lsf_bctcvq_encprm_fx(
BSTR_ENC_HANDLE hBstr,
- Word16 *param_lpc,
+ Word16 *param_lpc, // Q0
Word16 *bits_param_lpc,
Word16 no_indices )
{
@@ -990,7 +990,7 @@ Word16 lsf_bctcvq_encprm_fx(
}
Word16 lsf_bctcvq_encprm_ivas_fx(
BSTR_ENC_HANDLE hBstr,
- const Word16 *param_lpc,
+ const Word16 *param_lpc, // Q0
const Word16 *bits_param_lpc,
const Word16 no_indices )
{
diff --git a/lib_enc/ltd_stable_fx.c b/lib_enc/ltd_stable_fx.c
index a6e3ae1cc0909cffc40469b308b5d13e95580573..036fe2a7e82b382fd7e8a48723a567799aa62e39 100644
--- a/lib_enc/ltd_stable_fx.c
+++ b/lib_enc/ltd_stable_fx.c
@@ -21,7 +21,7 @@
void ltd_stable_fx(
VAD_CLDFB_HANDLE hVAD_CLDFB, /* i/o: CLDFB VAD state */
Word16 *ltd_stable_rate, /* o : time-domain stable rate*/
- const Word32 frame_energy, /* i : current frame energy*/
+ const Word32 frame_energy, /* i : current frame energy Q_frames_power*/
const Word16 frameloop, /* i : amount of frames*/
const Word16 Q_frames_power /* i : the Scaling of frames_power*/
)
@@ -57,7 +57,7 @@ void ltd_stable_fx(
move16();
Q_apow = 0;
move16();
- frames_power_32 = hVAD_CLDFB->frames_power_32;
+ frames_power_32 = hVAD_CLDFB->frames_power_32; // Q_frames_power_last_32
Q_frames_power_last_32 = hVAD_CLDFB->Q_frames_power_32;
move16();
leadingzero_midamp = 31;
@@ -76,7 +76,7 @@ void ltd_stable_fx(
IF( GE_16( Q_frames_power32, 40 ) )
{
zerop001 = L_shr( CNT0P001, 1 );
- frame_energy_Sqr32 = L_shr( frame_energy_Sqr32, sub( Q_frames_power32, 39 ) );
+ frame_energy_Sqr32 = L_shr( frame_energy_Sqr32, sub( Q_frames_power32, 39 ) ); // Q_frames_power32
Q_frames_power32 = 39;
move16();
}
@@ -86,14 +86,14 @@ void ltd_stable_fx(
frame_energy_Sqr32 = L_shr( frame_energy_Sqr32, 1 );
zerop001 = L_shr( CNT0P001, sub( 40, Q_frames_power32 ) );
}
- frames_power_32[0] = L_add( frame_energy_Sqr32, zerop001 );
+ frames_power_32[0] = L_add( frame_energy_Sqr32, zerop001 ); // Q_frames_power32
move32();
IF( LT_16( frameloop, 3 ) )
{
FOR( i = 1; i < 40; i++ )
{
- frames_power_32[i] = frames_power_32[0];
+ frames_power_32[i] = frames_power_32[0]; // Q_frames_power32
move32();
}
}
@@ -104,7 +104,7 @@ void ltd_stable_fx(
move32();
FOR( i = 1; i < 40; i++ )
{
- maxVal = L_max( maxVal, frames_power_32[i] );
+ maxVal = L_max( maxVal, frames_power_32[i] ); // Q_frames_power32
}
leadingzero = 31;
move16();
@@ -119,7 +119,7 @@ void ltd_stable_fx(
scale1 = sub( scale1, leadingzero );
FOR( i = 1; i < 40; i++ )
{
- frames_power_32[i] = L_shr( frames_power_32[i], scale1 );
+ frames_power_32[i] = L_shr( frames_power_32[i], scale1 ); // Q_frames_power32
move32();
}
}
@@ -140,7 +140,7 @@ void ltd_stable_fx(
FOR( i = 0; i < 20; i++ )
{
- mid_frame_ampadd32[i] = L_add( L_shr( frames_power_32[2 * i], 1 ), L_shr( frames_power_32[2 * i + 1], 1 ) );
+ mid_frame_ampadd32[i] = L_add( L_shr( frames_power_32[2 * i], 1 ), L_shr( frames_power_32[2 * i + 1], 1 ) ); // Q_frames_power32
move32();
}
@@ -148,16 +148,18 @@ void ltd_stable_fx(
move32();
FOR( i = 0; i < 20; i++ )
{
- maxVal = L_max( maxVal, mid_frame_ampadd32[i] );
+ maxVal = L_max( maxVal, mid_frame_ampadd32[i] ); // Q_frames_power32
}
leadingzero_midamp = 31;
move16();
if ( maxVal )
+ {
leadingzero_midamp = norm_l( maxVal );
+ }
FOR( i = 0; i < 20; i++ )
{
- mid_frame_amp32[i] = L_shl( mid_frame_ampadd32[i], leadingzero_midamp );
+ mid_frame_amp32[i] = L_shl( mid_frame_ampadd32[i], leadingzero_midamp ); // Q_frames_power32 + leadingzero_midamp
move32();
}
@@ -165,19 +167,19 @@ void ltd_stable_fx(
move32();
FOR( i = 0; i < 20; i++ )
{
- seg_amp32 = L_add( seg_amp32, L_shr( mid_frame_amp32[i], 5 ) );
+ seg_amp32 = L_add( seg_amp32, L_shr( mid_frame_amp32[i], 5 ) ); // Q_frames_power32 + leadingzero_midamp - 5
}
- seg_amp32 = MUL_F( seg_amp32, 0x0666 );
+ seg_amp32 = MUL_F( seg_amp32, 0x0666 /*(1/20).Q15*/ );
dif32 = 0;
move32();
apow32 = 0;
move32();
- seg_amp32tmp = L_shl( seg_amp32, 5 );
+ seg_amp32tmp = L_shl( seg_amp32, 5 ); // Q_frames_power32 + leadingzero_midamp
FOR( i = 0; i < 20; i++ )
{
- tmp32[i] = L_sub( mid_frame_amp32[i], seg_amp32tmp );
+ tmp32[i] = L_sub( mid_frame_amp32[i], seg_amp32tmp ); // Q_frames_power32 + leadingzero_midamp
move32();
}
@@ -185,22 +187,24 @@ void ltd_stable_fx(
move32();
FOR( i = 0; i < 20; i++ )
{
- maxVal = L_max( maxVal, L_abs( tmp32[i] ) );
+ maxVal = L_max( maxVal, L_abs( tmp32[i] ) ); // Q_frames_power32 + leadingzero_midamp - 5
}
leadingzero_tmp32 = 31;
move16();
if ( maxVal )
+ {
leadingzero_tmp32 = norm_l( maxVal );
+ }
FOR( i = 0; i < 20; i++ )
{
- tmp16[i] = extract_h( L_shl( tmp32[i], leadingzero_tmp32 ) );
+ tmp16[i] = extract_h( L_shl( tmp32[i], leadingzero_tmp32 ) ); //// Q_frames_power32 + leadingzero_midamp + leadingzero_tmp32 - 16
}
FOR( i = 0; i < 20; i++ )
{
- tmp_mul = L_mult_sat( tmp16[i], tmp16[i] );
- tmp_mul = L_shr( tmp_mul, 5 );
+ tmp_mul = L_mult_sat( tmp16[i], tmp16[i] ); // 2 * (Q_frames_power32 + leadingzero_midamp + leadingzero_tmp32 - 16) + 1
+ tmp_mul = L_shr( tmp_mul, 5 ); // 2 * (Q_frames_power32 + leadingzero_midamp + leadingzero_tmp32 - 16) - 4
dif32 = L_add( dif32, tmp_mul );
tmp = extract_h( mid_frame_amp32[i] );
@@ -244,7 +248,9 @@ void ltd_stable_fx(
leadingzero_midamp = 31;
move16();
if ( maxVal )
+ {
leadingzero_midamp = norm_l( maxVal );
+ }
FOR( i = 0; i < 14; i++ )
{
@@ -256,15 +262,15 @@ void ltd_stable_fx(
move32();
FOR( i = 0; i < 14; i++ )
{
- seg_amp32 = L_add( seg_amp32, L_shr( mid_frame_amp32[i], 4 ) );
+ seg_amp32 = L_add( seg_amp32, L_shr( mid_frame_amp32[i], 4 ) ); // Q_frames_power32 - 4
}
- seg_amp32 = MUL_F( seg_amp32, 0x0924 );
+ seg_amp32 = MUL_F( seg_amp32, 0x0924 /*(1/14).Q15*/ );
dif32 = 0;
move32();
apow32 = 0;
move32();
- seg_amp32tmp = L_shl( seg_amp32, 4 );
+ seg_amp32tmp = L_shl( seg_amp32, 4 ); // Q_frames_power32
FOR( i = 0; i < 14; i++ )
{
tmp32[i] = L_sub( mid_frame_amp32[i], seg_amp32tmp );
@@ -280,7 +286,9 @@ void ltd_stable_fx(
leadingzero_tmp32 = 31;
move16();
if ( maxVal )
+ {
leadingzero_tmp32 = norm_l( maxVal );
+ }
FOR( i = 0; i < 14; i++ )
{
@@ -367,8 +375,10 @@ void ltd_stable_fx(
}
leadingzero_midamp = 31;
move16();
- if ( maxVal )
+ IF( maxVal )
+ {
leadingzero_midamp = norm_l( maxVal );
+ }
FOR( i = 0; i < 8; i++ )
{
@@ -382,7 +392,7 @@ void ltd_stable_fx(
{
seg_amp32 = L_add( seg_amp32, L_shr( mid_frame_amp32[i], 3 ) );
}
- seg_amp32 = MUL_F( seg_amp32, 0x1000 );
+ seg_amp32 = MUL_F( seg_amp32, 0x1000 /*(1/8).Q15*/ );
dif32 = 0;
move32();
@@ -403,9 +413,10 @@ void ltd_stable_fx(
}
leadingzero_tmp32 = 31;
move16();
- if ( maxVal )
+ IF( maxVal )
+ {
leadingzero_tmp32 = norm_l( maxVal );
-
+ }
FOR( i = 0; i < 8; i++ )
{
tmp32[i] = L_shl( tmp32[i], leadingzero_tmp32 );
@@ -482,7 +493,7 @@ void ltd_stable_fx(
ltd_stable_rate[2] = shr( ltd_stable_rate[2], ltd_stable_rate_Qtmp );
move16();
- ltd_stable_rate[3] = add( mult( ltd_stable_rate[3], 0x7333 ), mult( ltd_stable_rate[2], 0x0ccc ) );
+ ltd_stable_rate[3] = add( mult( ltd_stable_rate[3], 0x7333 /*0.9.Q15*/ ), mult( ltd_stable_rate[2], 0x0ccc /*0.1.Q15*/ ) );
move16();
FOR( i = 55; i > 0; i-- )
diff --git a/lib_enc/mdct_classifier_fx.c b/lib_enc/mdct_classifier_fx.c
index eec85c2548c86153f0b0859e2c000fdcd3acdb8a..a4e19e0400c7da71ab98c14c25a732eecc3a692f 100644
--- a/lib_enc/mdct_classifier_fx.c
+++ b/lib_enc/mdct_classifier_fx.c
@@ -46,7 +46,7 @@
* Square magnitude of fft spectrum
*----------------------------------------------------------------------------*/
static void dft_mag_square_fx(
- const Word16 x[], /* i : Input vector: re[0], re[1], ..., re[n/2], im[n/2 - 1], im[n/2 - 2], ..., im[1] */
+ const Word16 x[], /* i : Input vector: re[0], re[1], ..., re[n/2], im[n/2 - 1], im[n/2 - 2], ..., im[1] Qx*/
Word32 magSq[], /* o : Magnitude square spectrum */
const Word16 n /* i : Input vector length */
)
@@ -57,7 +57,7 @@ static void dft_mag_square_fx(
/* Magnitude square at 0. */
pMagSq = &magSq[0];
- pRe = &x[0];
+ pRe = &x[0]; // Qx
*pMagSq++ = L_mult0( *pRe, *pRe );
pRe++;
move32();
@@ -70,13 +70,13 @@ static void dft_mag_square_fx(
{
acc = L_mult0( *pRe, *pRe );
pRe++;
- *pMagSq++ = L_mac0( acc, *pIm, *pIm );
+ *pMagSq++ = L_mac0( acc, *pIm, *pIm ); // 2*Qx
pIm--;
move32();
}
/* The magnitude square at N/2 */
- *pMagSq = L_mult0( *pRe, *pRe );
+ *pMagSq = L_mult0( *pRe, *pRe ); // 2*Qx
move32();
return;
}
@@ -89,7 +89,7 @@ static void dft_mag_square_fx(
Word16 mdct_classifier_fx( /* o: MDCT A/B decision */
const Word16 *fft_buff, /* i: re[0], re[1], ..., re[n/2], im[n/2 - 1], im[n/2 - 2], ..., im[1] */
Encoder_State *st_fx, /* i/o: Encoder state variable */
- Word32 *cldfbBuf_Ener,
+ Word32 *cldfbBuf_Ener, // enerBuffer_exp
Word16 enerBuffer_exp,
const Word32 brate /* i : current brate, IVAS: nominal bitrate, EVS: st->total_brate */
)
@@ -260,7 +260,7 @@ Word16 mdct_classifier_fx( /* o: MDCT A/B decision
{
IF( max_i > 0 )
{
- IF( GT_16( np, 0 ) )
+ IF( ( np > 0 ) )
{
d_acc = sub( add( d_acc, max_i ), pos_last );
}
@@ -277,7 +277,7 @@ Word16 mdct_classifier_fx( /* o: MDCT A/B decision
IF( pe != 0 )
{
expo = norm_l( pe );
- man = L_shl( pe, expo );
+ man = L_shl( pe, expo ); // expo
Mpy_32_32_ss( man, man, &man, &lsb32 ); /* pe square */
expo = shl( expo, 1 ); /* Multiply by 2 due to squaring. */
floating_point_add( &p_energy_man, &p_energy_exp, man, expo );
@@ -309,35 +309,35 @@ Word16 mdct_classifier_fx( /* o: MDCT A/B decision
/* gain11 = 8*(gain1 - cldfbBuf_Ener[0]/8)/7; */
acc = L_shr( cldfbBuf_Ener[0], 3 );
acc = L_sub( gain1, acc );
- acc = Mult_32_16( acc, 4681 );
+ acc = Mult_32_16( acc, 4681 /*(1/7).Q15*/ );
gain11 = L_shl( acc, 3 );
gain4 = L_deposit_l( 0 );
FOR( k = 0; k < 12; k++ )
{
- gain4 = L_add( gain4, Mult_32_16( cldfbBuf_Ener[k + 12], 2731 ) );
+ gain4 = L_add( gain4, Mult_32_16( cldfbBuf_Ener[k + 12], 2731 /*(1/12).Q15*/ ) );
}
peak_H1 = L_add( cldfbBuf_Ener[25], 0 );
- Mpy_32_16_ss( cldfbBuf_Ener[25], 6554, &avrg_H1, &lsb16 );
+ Mpy_32_16_ss( cldfbBuf_Ener[25], 6554 /*0.4.Q15*/, &avrg_H1, &lsb16 );
FOR( k = 1; k < 5; k++ )
{
IF( GT_32( cldfbBuf_Ener[k + 25], peak_H1 ) )
{
peak_H1 = L_add( cldfbBuf_Ener[k + 25], 0 );
}
- avrg_H1 = L_add( avrg_H1, Mult_32_16( cldfbBuf_Ener[k + 25], 6554 ) );
+ avrg_H1 = L_add( avrg_H1, Mult_32_16( cldfbBuf_Ener[k + 25], 6554 /*0.4.Q15*/ ) );
}
peak_H2 = L_add( cldfbBuf_Ener[20], 0 );
- Mpy_32_16_ss( cldfbBuf_Ener[20], 6554, &avrg_H2, &lsb16 );
+ Mpy_32_16_ss( cldfbBuf_Ener[20], 6554 /*0.4.Q15*/, &avrg_H2, &lsb16 );
FOR( k = 1; k < 5; k++ )
{
IF( GT_32( cldfbBuf_Ener[k + 20], peak_H2 ) )
{
peak_H2 = L_add( cldfbBuf_Ener[k + 20], 0 );
}
- avrg_H2 = L_add( avrg_H2, Mult_32_16( cldfbBuf_Ener[k + 20], 6554 ) );
+ avrg_H2 = L_add( avrg_H2, Mult_32_16( cldfbBuf_Ener[k + 20], 6554 /*0.4.Q15*/ ) );
}
// End
peak_l = L_deposit_l( 0 );
@@ -400,7 +400,7 @@ Word16 mdct_classifier_fx( /* o: MDCT A/B decision
condition4 = 0;
move16();
- L_tmp = Mult_32_16( peak_h, 12603 );
+ L_tmp = Mult_32_16( peak_h, 12603 /*1/2.56.Q15*/ );
IF( GT_32( peak_l, L_tmp ) )
{
exp = norm_l( peak_l );
@@ -418,7 +418,7 @@ Word16 mdct_classifier_fx( /* o: MDCT A/B decision
exp1 = norm_l( avrg_l );
}
- L_tmp1 = Mult_32_16( peak_l, 12603 );
+ L_tmp1 = Mult_32_16( peak_l, 12603 /*1/2.56.Q15*/ );
IF( GT_32( peak_h, L_tmp1 ) )
{
exp2 = norm_l( peak_h );
@@ -438,7 +438,7 @@ Word16 mdct_classifier_fx( /* o: MDCT A/B decision
move16();
}
- L_tmp = Mult_32_16( peak_h, 12800 );
+ L_tmp = Mult_32_16( peak_h, 12800 /*(1/2.56).Q15*/ );
IF( GT_32( peak_l, L_tmp ) )
{
exp = norm_l( peak_l );
@@ -448,7 +448,7 @@ Word16 mdct_classifier_fx( /* o: MDCT A/B decision
exp = norm_l( L_tmp );
}
- L_tmp1 = Mult_32_16( peak_l, 6400 );
+ L_tmp1 = Mult_32_16( peak_l, 6400 /*(1/5.12).Q15*/ );
IF( GT_32( peak_h, L_tmp1 ) )
{
exp2 = norm_l( peak_h );
@@ -476,7 +476,7 @@ Word16 mdct_classifier_fx( /* o: MDCT A/B decision
test();
test();
test();
- IF( ( GT_32( gain4, Mult_32_16( gain11, 26214 ) ) && GT_32( Mult_32_32( L_shl( peak_l, exp ), L_shl( avrg_h, exp1 ) ), Mult_32_32( L_shl( Mult_32_16( peak_h, 12800 ), exp ), L_shl( avrg_l, exp1 ) ) ) && LT_32( Mult_32_32( L_shl( Mult_32_16( peak_l, 6400 ), exp2 ), L_shl( avrg_h, exp1 ) ), Mult_32_32( L_shl( peak_h, exp2 ), L_shl( avrg_l, exp1 ) ) ) ) || ( GT_32( gain4, Mult_32_16( gain11, 9830 ) ) && LT_32( Mult_32_16( peak_h, 21845 ), avrg_h ) && LT_32( Mult_32_16( peak_H2, 21845 ), avrg_H2 ) ) || ( LT_32( Mult_32_32( L_shl( peak_l, exp ), L_shl( avrg_h, exp1 ) ), Mult_32_32( L_shl( Mult_32_16( peak_h, 12800 ), exp ), L_shl( avrg_l, exp1 ) ) ) && GT_32( Mult_32_16( peak_h, 21845 ), avrg_h ) ) || ( GT_32( Mult_32_32( L_shl( Mult_32_16( peak_l, 12800 ), exp3 ), L_shl( avrg_h, exp1 ) ), Mult_32_32( L_shl( peak_h, exp3 ), L_shl( avrg_l, exp1 ) ) ) > 0 && LT_32( Mult_32_16( peak_h, 21845 ), avrg_h ) ) )
+ IF( ( GT_32( gain4, Mult_32_16( gain11, 26214 /*0.8.Q15*/ ) ) && GT_32( Mult_32_32( L_shl( peak_l, exp ), L_shl( avrg_h, exp1 ) ), Mult_32_32( L_shl( Mult_32_16( peak_h, 12800 /*(1/2.56).Q15*/ ), exp ), L_shl( avrg_l, exp1 ) ) ) && LT_32( Mult_32_32( L_shl( Mult_32_16( peak_l, 6400 /*(1/5.12).Q15*/ ), exp2 ), L_shl( avrg_h, exp1 ) ), Mult_32_32( L_shl( peak_h, exp2 ), L_shl( avrg_l, exp1 ) ) ) ) || ( GT_32( gain4, Mult_32_16( gain11, 9830 /*0.3.Q15*/ ) ) && LT_32( Mult_32_16( peak_h, 21845 /*(1/1.5).Q15*/ ), avrg_h ) && LT_32( Mult_32_16( peak_H2, 21845 /*(1/1.5).Q15*/ ), avrg_H2 ) ) || ( LT_32( Mult_32_32( L_shl( peak_l, exp ), L_shl( avrg_h, exp1 ) ), Mult_32_32( L_shl( Mult_32_16( peak_h, 12800 /*(1/2.56).Q15*/ ), exp ), L_shl( avrg_l, exp1 ) ) ) && GT_32( Mult_32_16( peak_h, 21845 /*(1/1.5).Q15*/ ), avrg_h ) ) || ( GT_32( Mult_32_32( L_shl( Mult_32_16( peak_l, 12800 /*(1/2.56).Q15*/ ), exp3 ), L_shl( avrg_h, exp1 ) ), Mult_32_32( L_shl( peak_h, exp3 ), L_shl( avrg_l, exp1 ) ) ) > 0 && LT_32( Mult_32_16( peak_h, 21845 /*(1/1.5).Q15*/ ), avrg_h ) ) )
{
condition4 = 1;
move16();
@@ -498,21 +498,21 @@ Word16 mdct_classifier_fx( /* o: MDCT A/B decision
}
/* Smooth decision from instantaneous decision*/
- acc = L_mult( hTcxEnc->clas_sec_old_fx, MDCT_CLASSIFER_SMOOTH_FILT_COEFF ); /* st_fx->clas_sec_old_fx in Q13 */
- clas_sec = mac_r( acc, c, 0x7fff - MDCT_CLASSIFER_SMOOTH_FILT_COEFF ); /* clas_sec and c are in Q13 */
+ acc = L_mult( hTcxEnc->clas_sec_old_fx, MDCT_CLASSIFER_SMOOTH_FILT_COEFF ); /* st_fx->clas_sec_old_fx in Q13 */
+ clas_sec = mac_r( acc, c, 0x7fff /*1.Q15*/ - MDCT_CLASSIFER_SMOOTH_FILT_COEFF ); /* clas_sec and c are in Q13 */
/* Do thresholding with hysteresis */
IF( GT_16( st_fx->last_enerBuffer_exp, enerBuffer_exp ) )
{
- gain1_tmp = L_shr( gain1, sub( st_fx->last_enerBuffer_exp, enerBuffer_exp ) );
+ gain1_tmp = L_shr( gain1, sub( st_fx->last_enerBuffer_exp, enerBuffer_exp ) ); // st_fx->last_enerBuffer_exp
move32();
- gain2_tmp = L_shr( gain2, sub( st_fx->last_enerBuffer_exp, enerBuffer_exp ) );
+ gain2_tmp = L_shr( gain2, sub( st_fx->last_enerBuffer_exp, enerBuffer_exp ) ); // st_fx->last_enerBuffer_exp
move32();
}
ELSE
{
- hTcxEnc->last_gain1 = L_shr( hTcxEnc->last_gain1, sub( enerBuffer_exp, st_fx->last_enerBuffer_exp ) );
+ hTcxEnc->last_gain1 = L_shr( hTcxEnc->last_gain1, sub( enerBuffer_exp, st_fx->last_enerBuffer_exp ) ); // enerBuffer_exp
move32();
- hTcxEnc->last_gain2 = L_shr( hTcxEnc->last_gain2, sub( enerBuffer_exp, st_fx->last_enerBuffer_exp ) );
+ hTcxEnc->last_gain2 = L_shr( hTcxEnc->last_gain2, sub( enerBuffer_exp, st_fx->last_enerBuffer_exp ) ); // enerBuffer_exp
move32();
gain1_tmp = gain1;
move32();
@@ -582,10 +582,11 @@ Word16 mdct_classifier_fx( /* o: MDCT A/B decision
return clas_final; /* Q0 */
}
+
Word16 mdct_classifier_ivas_fx(
Encoder_State *st, /* i/o: Encoder state variable */
const Word16 *fft_buff, /* i : FFT spectrum from fft_rel */
- const Word32 enerBuffer[], /* i : energy buffer */
+ const Word32 enerBuffer[], /* i : energy buffer enerBuffer_exp*/
Word16 enerBuffer_exp,
const Word32 brate /* i : current brate, IVAS: nominal bitrate, EVS: st->total_brate */
)
@@ -772,7 +773,7 @@ Word16 mdct_classifier_ivas_fx(
IF( pe != 0 )
{
expo = norm_l( pe );
- man = L_shl( pe, expo );
+ man = L_shl( pe, expo ); // expo
Mpy_32_32_ss( man, man, &man, &lsb32 ); /* pe square */
expo = shl( expo, 1 ); /* Multiply by 2 due to squaring. */
floating_point_add( &p_energy_man, &p_energy_exp, man, expo );
@@ -795,32 +796,32 @@ Word16 mdct_classifier_ivas_fx(
{
IF( EQ_16( gain2_start, GAIN2_START_SWB ) )
{
- gain1 = L_add( gain1, L_shr( enerBuffer[i], 3 ) );
- gain2 = L_add( gain2, L_shr( enerBuffer[gain2_start + i], 3 ) );
- gain3 = L_add( gain3, L_shr( enerBuffer[gain3_start + i], 3 ) );
+ gain1 = L_add( gain1, L_shr( enerBuffer[i], 3 ) ); // enerBuffer_exp - 3
+ gain2 = L_add( gain2, L_shr( enerBuffer[gain2_start + i], 3 ) ); // enerBuffer_exp - 3
+ gain3 = L_add( gain3, L_shr( enerBuffer[gain3_start + i], 3 ) ); // enerBuffer_exp - 3
}
ELSE
{
- gain1 = L_add( gain1, Mult_32_16( enerBuffer[i], 5461 ) );
- gain2 = L_add( gain2, Mult_32_16( enerBuffer[gain2_start + i], 5461 ) );
- gain3 = L_add( gain3, Mult_32_16( enerBuffer[gain3_start + i], 5461 ) );
+ gain1 = L_add( gain1, Mult_32_16( enerBuffer[i], 5461 ) ); // enerBuffer_exp
+ gain2 = L_add( gain2, Mult_32_16( enerBuffer[gain2_start + i], 5461 /*0.16.Q15*/ ) ); // enerBuffer_exp
+ gain3 = L_add( gain3, Mult_32_16( enerBuffer[gain3_start + i], 5461 /*0.16.Q15*/ ) ); // enerBuffer_exp
}
}
IF( EQ_16( gain2_start, GAIN2_START_SWB ) )
{
- acc = L_shr( enerBuffer[0], 3 );
- acc = L_sub( gain1, acc );
- acc = Mult_32_16( acc, 4681 );
- gain11 = L_shl( acc, 3 );
+ acc = L_shr( enerBuffer[0], 3 ); // enerBuffer_exp - 3
+ acc = L_sub( gain1, acc ); // enerBuffer_exp - 3
+ acc = Mult_32_16( acc, 4681 /*(1/7).Q15*/ ); // enerBuffer_exp - 3
+ gain11 = L_shl( acc, 3 ); // enerBuffer_exp
gain4 = L_deposit_l( 0 );
}
ELSE
{
- acc = Mult_32_16( enerBuffer[0], 5461 );
- acc = L_sub( gain1, acc );
- acc = Mult_32_16( acc, 6553 );
+ acc = Mult_32_16( enerBuffer[0], 5461 /*0.16.Q15*/ ); // enerBuffer_exp
+ acc = L_sub( gain1, acc ); // enerBuffer_exp
+ acc = Mult_32_16( acc, 6553 /*0.4.Q15*/ ); // enerBuffer_exp
gain11 = (Word32) W_mult_32_16( acc, 6 );
gain4 = L_deposit_l( 0 );
}
@@ -830,28 +831,28 @@ Word16 mdct_classifier_ivas_fx(
{
IF( EQ_16( gain4_start, GAIN4_START_SWB ) )
{
- gain4 = L_add( gain4, Mult_32_16( enerBuffer[gain4_start + i], 2731 ) );
+ gain4 = L_add( gain4, Mult_32_16( enerBuffer[gain4_start + i], 2731 /*(1/12).Q15*/ ) );
}
ELSE
{
- gain4 = L_add( gain4, Mult_32_16( enerBuffer[gain4_start + i], 3641 ) );
+ gain4 = L_add( gain4, Mult_32_16( enerBuffer[gain4_start + i], 3641 /*(1/9).Q1.15*/ ) );
}
}
- peak_H1 = enerBuffer[H1_start];
+ peak_H1 = enerBuffer[H1_start]; // enerBuffer_exp
move32();
- avrg_H1 = enerBuffer[H1_start];
+ avrg_H1 = enerBuffer[H1_start]; // enerBuffer_exp
move32();
FOR( i = 1; i < H_length; i++ )
{
IF( GT_32( enerBuffer[H1_start + i], peak_H1 ) )
{
- peak_H1 = enerBuffer[H1_start + i];
+ peak_H1 = enerBuffer[H1_start + i]; // enerBuffer_exp
move32();
}
- avrg_H1 = L_add( avrg_H1, enerBuffer[H1_start + i] );
+ avrg_H1 = L_add( avrg_H1, enerBuffer[H1_start + i] ); // enerBuffer_exp
}
peak_H2 = enerBuffer[H2_start];
@@ -969,7 +970,7 @@ Word16 mdct_classifier_ivas_fx(
move16();
}
- L_tmp = Mult_32_16( peak_h, 12800 );
+ L_tmp = Mult_32_16( peak_h, 12800 /*(1/2.56).Q15*/ );
IF( GT_32( peak_l, L_tmp ) )
{
exp = norm_l( peak_l );
@@ -979,7 +980,7 @@ Word16 mdct_classifier_ivas_fx(
exp = norm_l( L_tmp );
}
- L_tmp1 = Mult_32_16( peak_l, 6400 );
+ L_tmp1 = Mult_32_16( peak_l, 6400 /*(1/5.12).Q15*/ );
IF( GT_32( peak_h, L_tmp1 ) )
{
exp2 = norm_l( peak_h );
@@ -1007,8 +1008,8 @@ Word16 mdct_classifier_ivas_fx(
test();
test();
test();
- IF( ( GT_32( gain4, Mult_32_16( gain11, 26214 ) ) && GT_32( Mult_32_32( L_shl( peak_l, exp ), L_shl( avrg_h, exp1 ) ), Mult_32_32( L_shl( Mult_32_16( peak_h, 12800 ), exp ), L_shl( avrg_l, exp1 ) ) ) && LT_32( Mult_32_32( L_shl( Mult_32_16( peak_l, 6400 ), exp2 ), L_shl( avrg_h, exp1 ) ), Mult_32_32( L_shl( peak_h, exp2 ), L_shl( avrg_l, exp1 ) ) ) ) || ( GT_32( gain4, Mult_32_16( gain11, 9830 ) ) && LT_32( Mult_32_16( peak_h, 21845 ), avrg_h ) && LT_32( Mult_32_16( peak_H2, 21845 ), avrg_H2 ) ) ||
- ( LT_32( Mult_32_32( L_shl( peak_l, exp ), L_shl( avrg_h, exp1 ) ), Mult_32_32( L_shl( Mult_32_16( peak_h, 12800 ), exp ), L_shl( avrg_l, exp1 ) ) ) && GT_32( Mult_32_16( peak_h, 21845 ), avrg_h ) ) || ( GT_32( Mult_32_32( L_shl( Mult_32_16( peak_l, 12800 ), exp3 ), L_shl( avrg_h, exp1 ) ), Mult_32_32( L_shl( peak_h, exp3 ), L_shl( avrg_l, exp1 ) ) ) > 0 && LT_32( Mult_32_16( peak_h, 21845 ), avrg_h ) ) )
+ IF( ( GT_32( gain4, Mult_32_16( gain11, 26214 /*0.8.Q15*/ ) ) && GT_32( Mult_32_32( L_shl( peak_l, exp ), L_shl( avrg_h, exp1 ) ), Mult_32_32( L_shl( Mult_32_16( peak_h, 12800 /*(1/2.56).Q15*/ ), exp ), L_shl( avrg_l, exp1 ) ) ) && LT_32( Mult_32_32( L_shl( Mult_32_16( peak_l, 6400 /*(1/5.12).Q15*/ ), exp2 ), L_shl( avrg_h, exp1 ) ), Mult_32_32( L_shl( peak_h, exp2 ), L_shl( avrg_l, exp1 ) ) ) ) || ( GT_32( gain4, Mult_32_16( gain11, 9830 /*0.3.Q15*/ ) ) && LT_32( Mult_32_16( peak_h, 21845 /*(1/1.5).Q15*/ ), avrg_h ) && LT_32( Mult_32_16( peak_H2, 21845 /*(1/1.5).Q15*/ ), avrg_H2 ) ) ||
+ ( LT_32( Mult_32_32( L_shl( peak_l, exp ), L_shl( avrg_h, exp1 ) ), Mult_32_32( L_shl( Mult_32_16( peak_h, 12800 /*(1/2.56).Q15*/ ), exp ), L_shl( avrg_l, exp1 ) ) ) && GT_32( Mult_32_16( peak_h, 21845 /*(1/1.5).Q15*/ ), avrg_h ) ) || ( GT_32( Mult_32_32( L_shl( Mult_32_16( peak_l, 12800 /*(1/2.56).Q15*/ ), exp3 ), L_shl( avrg_h, exp1 ) ), Mult_32_32( L_shl( peak_h, exp3 ), L_shl( avrg_l, exp1 ) ) ) > 0 && LT_32( Mult_32_16( peak_h, 21845 /*(1/1.5).Q15*/ ), avrg_h ) ) )
{
condition4 = 1;
move16();
diff --git a/lib_enc/mdct_selector_fx.c b/lib_enc/mdct_selector_fx.c
index 52c30f7ef6be8666370f19d2f3d0cfeb545a2f25..c4cc7d0db8bcca97c26af11090363cbb12dfc166 100644
--- a/lib_enc/mdct_selector_fx.c
+++ b/lib_enc/mdct_selector_fx.c
@@ -62,14 +62,14 @@ static Word16 get_sparseness( /* Returns sparseness measur
FOR( i = 1; i < n - 1; ++i )
{
- if ( GT_16( Bin_E[i], s_max( s_max( Bin_E[i - 1], Bin_E[i + 1] ), thr ) ) )
+ IF( GT_16( Bin_E[i], s_max( s_max( Bin_E[i - 1], Bin_E[i + 1] ), thr ) ) )
{
num_max = add( num_max, 1 );
}
}
n = shr( sub( n, 2 ), 1 );
- return div_s( sub( n, num_max ), n );
+ return div_s( sub( n, num_max ), n ); // Q15
}
/*--------------------------------------------------------------------------*
* get_mean_ener()
@@ -78,7 +78,7 @@ static Word16 get_sparseness( /* Returns sparseness measur
*--------------------------------------------------------------------------*/
static Word16 get_mean_ener( /* Returns mean energy in dB (Q8) */
- const Word32 enerBuffer[], /* i : CLDFB buffers */
+ const Word32 enerBuffer[], /* i : CLDFB buffers enerBuffer_exp*/
Word16 enerBuffer_exp, /* i : exponent of enerBuffer */
Word16 n /* i : number of bins */
)
@@ -87,8 +87,10 @@ static Word16 get_mean_ener( /* Returns mean energy i
Word16 i, shift, frac_nrg, exp_nrg;
shift = sub( 14, norm_s( n ) );
- if ( LT_16( shl( 1, shift ), n ) )
+ IF( LT_16( shl( 1, shift ), n ) )
+ {
shift = add( shift, 1 );
+ }
L_tmp = L_deposit_l( 0 );
FOR( i = 0; i < n; ++i )
@@ -104,7 +106,7 @@ static Word16 get_mean_ener( /* Returns mean energy i
exp_nrg = sub( add( exp_nrg, shift ), sub( 31, enerBuffer_exp ) );
L_tmp = Mpy_32_16( exp_nrg, frac_nrg, 9864 ); /* log10(2) in Q15 */
- return round_fx( L_shl( L_tmp, 8 ) );
+ return round_fx( L_shl( L_tmp, 8 ) ); // Q8
}
/*--------------------------------------------------------------------------*
* MDCT_selector_fx()
@@ -117,7 +119,7 @@ void MDCT_selector_fx(
Word16 sp_floor, /* i : Noise floor estimate Q7 */
const Word16 Etot, /* i : Total energy Q8 */
const Word16 cor_map_sum, /* i : harmonicity factor Q8 */
- const Word32 enerBuffer[], /* i : CLDFB buffers */
+ const Word32 enerBuffer[], /* i : CLDFB buffers enerBuffer_exp*/
const Word16 enerBuffer_exp /* i : exponent of enerBuffer */
)
{
@@ -135,7 +137,7 @@ void MDCT_selector_fx(
sp_floor = shl( sp_floor, 1 ); /* convert to Q8 */
- IF( EQ_16( st->bwidth, NB ) )
+ IF( ( st->bwidth == NB ) )
{
lob_cldfb = 3200 / 400;
move16();
@@ -188,7 +190,7 @@ void MDCT_selector_fx(
frame_voicing = add( shr( st->voicing_fx[0], 1 ), shr( st->voicing_fx[1], 1 ) );
/* Spectral sparseness */
- sparseness = get_sparseness( st->lgBin_E_fx, lob_fft, sub( Etot, MDCT_SW_SIG_PEAK_THR ) );
+ sparseness = get_sparseness( st->lgBin_E_fx, lob_fft, sub( Etot, MDCT_SW_SIG_PEAK_THR ) ); // Q15
/* Hi band energy */
hi_ener = get_mean_ener( &enerBuffer[lob_cldfb], enerBuffer_exp, sub( hib_cldfb, lob_cldfb ) );
@@ -255,23 +257,23 @@ void MDCT_selector_fx(
IF( EQ_16( st->mdct_sw_enable, MODE1 ) )
{
- sig_lo_level_thr = MDCT_SW_1_SIG_LO_LEVEL_THR;
+ sig_lo_level_thr = MDCT_SW_1_SIG_LO_LEVEL_THR; // Q8
move16();
- sig_hi_level_thr = MDCT_SW_1_SIG_HI_LEVEL_THR;
+ sig_hi_level_thr = MDCT_SW_1_SIG_HI_LEVEL_THR; // Q8
move16();
- cor_thr = MDCT_SW_1_COR_THR;
+ cor_thr = MDCT_SW_1_COR_THR; // Q8
move16();
- cor_thr2 = MDCT_SW_1_COR_THR2;
+ cor_thr2 = MDCT_SW_1_COR_THR2; // Q8
move16();
- voicing_thr = MDCT_SW_1_VOICING_THR;
+ voicing_thr = MDCT_SW_1_VOICING_THR; // Q15
move16();
- voicing_thr2 = MDCT_SW_1_VOICING_THR2;
+ voicing_thr2 = MDCT_SW_1_VOICING_THR2; // Q15
move16();
- sparseness_thr = MDCT_SW_1_SPARSENESS_THR;
+ sparseness_thr = MDCT_SW_1_SPARSENESS_THR; // Q15
move16();
- sparseness_thr2 = MDCT_SW_1_SPARSENESS_THR2;
+ sparseness_thr2 = MDCT_SW_1_SPARSENESS_THR2; // Q15
move16();
- hi_ener_lo_thr = MDCT_SW_1_HI_ENER_LO_THR;
+ hi_ener_lo_thr = MDCT_SW_1_HI_ENER_LO_THR; // Q8
move16();
}
ELSE /* st->mdct_sw_enable == MODE2 */
diff --git a/lib_enc/mslvq_enc_fx.c b/lib_enc/mslvq_enc_fx.c
index 771ef480bb39019fd1be7681dfa863aea142f657..af5a82b69edc9c96987d221c032b1aa30450ca50 100644
--- a/lib_enc/mslvq_enc_fx.c
+++ b/lib_enc/mslvq_enc_fx.c
@@ -58,19 +58,19 @@ Word32 mslvq_fx(
IF( pred_flag == 0 )
{
- p_sigma = sigma_MSLVQ_fx[mode];
+ p_sigma = sigma_MSLVQ_fx[mode]; // Qlog2(2.56)
/* inverse sigma is precomputed to save complexity */
- p_inv_sigma = inv_sigma_MSLVQ_fx[mode];
- p_scales = scales_fx[mode_glb];
- p_no_lead = no_lead_fx[mode_glb];
+ p_inv_sigma = inv_sigma_MSLVQ_fx[mode]; // Q15
+ p_scales = scales_fx[mode_glb]; // Q11
+ p_no_lead = no_lead_fx[mode_glb]; // Q0
}
ELSE
{
- p_sigma = sigma_p_fx[mode];
+ p_sigma = sigma_p_fx[mode]; // Qlog2(2.56)
/* inverse sigma is precomputed to save complexity */
- p_inv_sigma = inv_sigma_p_fx[mode];
- p_scales = scales_p_fx[mode_glb];
- p_no_lead = no_lead_p_fx[mode_glb];
+ p_inv_sigma = inv_sigma_p_fx[mode]; // Q15
+ p_scales = scales_p_fx[mode_glb]; // Q11
+ p_no_lead = no_lead_p_fx[mode_glb]; // Q0
}
/* first subvector */
@@ -184,15 +184,15 @@ Word32 mslvq_cng_fx(
mode_glb = add( START_CNG, idx_cv );
move16();
- p_sigma = sigma_MSLVQ_fx[mode];
+ p_sigma = sigma_MSLVQ_fx[mode]; // x2.56
move16();
- p_inv_sigma = inv_sigma_MSLVQ_fx[mode];
+ p_inv_sigma = inv_sigma_MSLVQ_fx[mode]; // Q15
move16();
- p_scales = scales_fx[mode_glb];
+ p_scales = scales_fx[mode_glb]; // Q11
move16();
- p_no_lead = no_lead_fx[mode_glb];
+ p_no_lead = no_lead_fx[mode_glb]; // Q0
move16();
- p_no_scales = &no_scales[shl( mode_glb, 1 )];
+ p_no_scales = &no_scales[( mode_glb << 1 )];
move16();
/* check if LSF component permutation is needed or not */
@@ -247,11 +247,11 @@ Word32 mslvq_cng_ivas_fx(
mode_glb = add( START_CNG, idx_cv );
move16();
- p_sigma = sigma_MSLVQ_fx[mode];
+ p_sigma = sigma_MSLVQ_fx[mode]; // x2.56
move16();
- p_inv_sigma = inv_sigma_MSLVQ_fx[mode];
+ p_inv_sigma = inv_sigma_MSLVQ_fx[mode]; // Q15
move16();
- p_scales = scales_fx[mode_glb];
+ p_scales = scales_fx[mode_glb]; // Q11
move16();
no_scales[0] = 0;
@@ -773,7 +773,7 @@ static void sort_desc_ind_fx(
move16();
}
sorted = 0;
- FOR( k = sub( len, 1 ); k > 0; k-- )
+ FOR( k = ( len - 1 ); k > 0; k-- )
{
IF( sorted )
{
@@ -837,7 +837,7 @@ void index_lvq_fx(
/* for first subvector */
IF( GT_16( idx_scale[0], -1 ) )
{
- index1 = L_add( encode_comb_fx( quant, idx_lead[0] ), L_add( table_no_cv_fx[idx_lead[0]], p_offset_scale1[i_mult2( mode, len_offset ) + idx_scale[0]] ) );
+ index1 = L_add( encode_comb_fx( quant, idx_lead[0] ), L_add( table_no_cv_fx[idx_lead[0]], p_offset_scale1[( mode * len_offset ) + idx_scale[0]] ) );
}
/* for second subvector */
@@ -845,7 +845,7 @@ void index_lvq_fx(
IF( GT_16( idx_scale[1], -1 ) )
{
- index2 = L_add( encode_comb_fx( &quant[LATTICE_DIM], idx_lead[1] ), L_add( table_no_cv_fx[idx_lead[1]], p_offset_scale2[i_mult2( mode, len_offset ) + idx_scale[1]] ) );
+ index2 = L_add( encode_comb_fx( &quant[LATTICE_DIM], idx_lead[1] ), L_add( table_no_cv_fx[idx_lead[1]], p_offset_scale2[( mode * len_offset ) + idx_scale[1]] ) );
}
idx64 = W_mult0_32_32( index1, p_offset_scale2[mode * len_offset + p_no_scales[mode * 2 + 1]] );
index2_64 = W_deposit32_l( index2 );
@@ -854,9 +854,9 @@ void index_lvq_fx(
/* convert to 3 short */
index[0] = ( ( idx64 ) & ( 0x7fff ) );
move16();
- index[1] = ( idx64 >> 15 ) & ( 0x7fff );
+ index[1] = ( W_shr( idx64, 15 ) ) & ( 0x7fff );
move16();
- index[2] = ( idx64 >> 30 ) & ( 0x7fff );
+ index[2] = ( W_shr( idx64, 30 ) ) & ( 0x7fff );
move16();
return;
}
@@ -900,9 +900,9 @@ void index_lvq_ivas_fx(
/* convert to 3 short */
index[0] = ( ( idx64 ) & ( 0x7fff ) );
move16();
- index[1] = ( idx64 >> 15 ) & ( 0x7fff );
+ index[1] = ( W_shr( idx64, 15 ) ) & ( 0x7fff );
move16();
- index[2] = ( idx64 >> 30 ) & ( 0x7fff );
+ index[2] = ( W_shr( idx64, 30 ) ) & ( 0x7fff );
move16();
return;
@@ -1059,7 +1059,7 @@ static Word16 encode_sign_pc1_fx( /* o : index of signs
IF( cv[i] < 0 )
{
idx_sign = add( idx_sign, ( shl( 1, cnt ) ) );
- cnt++;
+ cnt = add( cnt, 1 );
}
if ( cv[i] > 0 )
@@ -1091,7 +1091,7 @@ static void take_out_val_fx(
FOR( i = 0; i < len; i++ )
{
- IF( NE_16( v[i], val ) )
+ if ( NE_16( v[i], val ) )
{
v_out[cnt++] = v[i];
move16();
@@ -1125,7 +1125,7 @@ Word16 c2idx_fx( /* o: index */
move16();
FOR( i = 1; i <= p[0]; i++ )
{
- skip = add( skip, C_VQ[sub( n, i )][sub( k, 1 )] );
+ skip = add( skip, C_VQ[( n - i )][( k - 1 )] ); // Q0
}
p0 = p[0];
diff --git a/lib_enc/multi_harm_fx.c b/lib_enc/multi_harm_fx.c
index 78ef81c601612b81aad7208f971033e2c8321a00..1bae597b6892428a06b6c83e1b0de38121329432 100644
--- a/lib_enc/multi_harm_fx.c
+++ b/lib_enc/multi_harm_fx.c
@@ -53,7 +53,7 @@ Word16 multi_harm_fx( /* o : frame multi-harmonicity
/* length of the useful part of the spectrum (up to 6.4kHz) */
L = L_FFT / 2;
move16();
- if ( EQ_16( bwidth, NB ) )
+ if ( ( bwidth == NB ) )
{
/* length of the useful part of the spectrum (up to 3.6kHz) */
L = 76;
@@ -170,14 +170,14 @@ Word16 multi_harm_fx( /* o : frame multi-harmonicity
mean_dyn = round_fx( L_acc ); /*Q7*/
test();
- IF( LT_16( mean_dyn, 1229 ) /*9.6f*/ && *cor_strong_limit != 0 )
+ IF( LT_16( mean_dyn, 1229 ) /*9.6f.Q7*/ && *cor_strong_limit != 0 )
{
*cor_strong_limit = 0;
move16();
*st_last_sw_dyn = mean_dyn;
move16();
}
- ELSE IF( GT_16( sub( mean_dyn, *st_last_sw_dyn ), 576 ) /*4.5f*/ )
+ ELSE IF( GT_16( sub( mean_dyn, *st_last_sw_dyn ), 576 ) /*4.5f.Q7*/ )
{
*cor_strong_limit = 1;
move16();
@@ -290,7 +290,7 @@ Word16 multi_harm_fx( /* o : frame multi-harmonicity
cor_strong = 0;
move16();
- pt1 = cor_map_LT;
+ pt1 = cor_map_LT; // Q15
move16();
pt2 = cor_map;
move16();
@@ -306,7 +306,7 @@ Word16 multi_harm_fx( /* o : frame multi-harmonicity
/* cor_map_LT_sum += *pt1 */
Lcor_map_LT_sum = L_add( Lcor_map_LT_sum, *pt1 ); /* cor_map_LT_sum in Q15; max value is 128) */
- if ( GT_16( *pt1, 31130 ) /*0.95f*/ )
+ if ( GT_16( *pt1, 31130 ) /*0.95f.Q15*/ )
{
cor_strong = 1;
move16();
@@ -316,7 +316,7 @@ Word16 multi_harm_fx( /* o : frame multi-harmonicity
pt2++;
}
- IF( EQ_16( bwidth, NB ) )
+ IF( ( bwidth == NB ) )
{
/* cor_map_LT_sum *= 1.53f; */
/* tmp2 *= 1.53f; */
@@ -396,7 +396,7 @@ Word16 multi_harm_ivas_fx( /* o : frame multi-harmoni
/* length of the useful part of the spectrum (up to 6.4kHz) */
L = L_FFT / 2;
move16();
- if ( EQ_16( bwidth, NB ) )
+ if ( ( bwidth == NB ) )
{
/* length of the useful part of the spectrum (up to 3.6kHz) */
L = 76;
@@ -654,7 +654,7 @@ Word16 multi_harm_ivas_fx( /* o : frame multi-harmoni
}
tmp2 = extract_l( L_shr_sat( tmp2_32, 7 ) ); // q15-> q8
- IF( EQ_16( bwidth, NB ) )
+ IF( ( bwidth == NB ) )
{
/* cor_map_LT_sum *= 1.53f; */
/* tmp2 *= 1.53f; */
diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h
index 02f8344d14eb406d01bf54815df9b9c020e3b6df..10d020ee3928e6c84324b352e5722b7e5c71f2c3 100644
--- a/lib_enc/prot_fx_enc.h
+++ b/lib_enc/prot_fx_enc.h
@@ -143,7 +143,7 @@ void bw_detect_fx(
const Word32 *enerBuffer, /* i : CLDFB Energy Q31 */
const Word16 *cldfbBuf_Ener_Exp, /* i : CLDFB Energy Exponent */
const IVAS_FORMAT ivas_format, /* i : IVAS format */
- const int16_t mct_on /* i : flag MCT mode */
+ const Word16 mct_on /* i : flag MCT mode */
);
void core_switching_post_enc_fx( /*done */
@@ -627,7 +627,7 @@ void swb_bwe_enc_fx(
void swb_bwe_enc_ivas_fx(
Encoder_State *st_fx, /* i/o: encoder state structure */
- const int16_t last_element_mode, /* i : last element mode */
+ const Word16 last_element_mode, /* i : last element mode */
Word16 *old_input_12k8_fx, /* i : input signal @12.8kHz for SWB BWE */
Word16 *old_input_16k_fx, /* i : input signal @16kHz for SWB BWE */
const Word16 *old_syn_12k8_16k_fx, /* i : ACELP core synthesis at 12.8kHz or 16kHz */
@@ -1585,7 +1585,7 @@ void E_ACELP_4t_ivas_fx(
const Word16 last_L_frame,
const Word32 total_brate,
const Word16 i_subfr,
- const int16_t cmpl_flag,
+ const Word16 cmpl_flag,
Word16 element_mode );
void E_ACELP_innovative_codebook_fx(
@@ -3077,15 +3077,15 @@ void IGFEncApplyMono_ivas_fx( Encoder_State *st, /* i : Encoder state
#ifdef MSAN_FIX
Word16 powerSpectrum_len, /* i: length of pPowerSpectrum_fx*/
#endif
- const int16_t igfGridIdx, /* i : IGF grid index */
- Word32 *pMDCTSpectrum_fx, /* i/o: MDCT spectrum */
- Word16 e_mdct, /* i : exponent of pMDCTspectrum */
- Word32 *pPowerSpectrum_fx, /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */
- Word16 *e_ps, /* i : exponent of pPowerSpectrum */
- const int16_t isTCX20, /* i : flag indicating if the input is TCX20 or TCX10/2xTCX5 */
- const int8_t isTNSActive, /* i : flag indicating if the TNS is active */
- const int16_t sp_aud_decision0, /* i : first stage switching decision */
- const int16_t vad_hover_flag /* i : VAD hangover flag */
+ const Word16 igfGridIdx, /* i : IGF grid index */
+ Word32 *pMDCTSpectrum_fx, /* i/o: MDCT spectrum */
+ Word16 e_mdct, /* i : exponent of pMDCTspectrum */
+ Word32 *pPowerSpectrum_fx, /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */
+ Word16 *e_ps, /* i : exponent of pPowerSpectrum */
+ const Word16 isTCX20, /* i : flag indicating if the input is TCX20 or TCX10/2xTCX5 */
+ const Word8 isTNSActive, /* i : flag indicating if the TNS is active */
+ const Word16 sp_aud_decision0, /* i : first stage switching decision */
+ const Word16 vad_hover_flag /* i : VAD hangover flag */
);
void IGFEncConcatenateBitstream_ivas_fx( const IGF_ENC_INSTANCE_HANDLE hIGFEnc, /* i : instance handle of IGF Encoder */
diff --git a/lib_enc/speech_music_classif_fx.c b/lib_enc/speech_music_classif_fx.c
index 353de8ec9ead89592fab3828ccffb18425f0c6af..e04f5172b54a7022360d2afada7514b3e9e49624 100644
--- a/lib_enc/speech_music_classif_fx.c
+++ b/lib_enc/speech_music_classif_fx.c
@@ -17,7 +17,6 @@
#include "debug.h"
#endif
#include
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h
index ad572d2ba030b3b840e21ce9e99dee1bf96c2678..41c6b04680eefa6ea2e268e92280e90b4179450d 100644
--- a/lib_enc/stat_enc.h
+++ b/lib_enc/stat_enc.h
@@ -51,9 +51,9 @@
typedef struct
{
- int16_t id; /* id of the indice */
- uint16_t value; /* value of the quantized indice */
- int16_t nb_bits; /* number of bits used for the quantization of the indice */
+ Word16 id; /* id of the indice */
+ UWord16 value; /* value of the quantized indice */
+ Word16 nb_bits; /* number of bits used for the quantization of the indice */
} Indice, *INDICE_HANDLE;
typedef struct
@@ -84,12 +84,12 @@ typedef struct
typedef struct bitstream_enc_data_structure
{
- int16_t nb_ind_tot; /* total number of indices already written */
- int16_t nb_bits_tot; /* total number of bits already written */
- Indice *ind_list; /* list of indices */
- int16_t *ivas_max_num_indices; /* maximum total number of indices in the list */
- Indice **ivas_ind_list_zero; /* beginning of the buffer of indices */
- void *st_ivas; /* IVAS encoder structure */
+ Word16 nb_ind_tot; /* total number of indices already written */
+ Word16 nb_bits_tot; /* total number of bits already written */
+ Indice *ind_list; /* list of indices */
+ Word16 *ivas_max_num_indices; /* maximum total number of indices in the list */
+ Indice **ivas_ind_list_zero; /* beginning of the buffer of indices */
+ void *st_ivas; /* IVAS encoder structure */
// Word16 nb_bits_tot_fx; /* total number of bits already written */
// Indice *ind_list_fx; /* list of indices */
Word16 next_ind_fx; /* pointer to the next empty slot in the list of indices */
@@ -128,9 +128,9 @@ typedef struct signal_buffers_enc_data_structure
/* Delay buffer: Used to buffer input samples and to define the subblock size of a transient detector. */
typedef struct
{
- int16_t nSubblockSize; /* Subblock size of a transient detector that uses this delay buffer. */
+ Word16 nSubblockSize; /* Subblock size of a transient detector that uses this delay buffer. */
Word16 buffer[L_FRAME48k / NSUBBLOCKS];
- int16_t nDelay; /* Size of the delay buffer in use. Maximum delay from all users of this buffer. */
+ Word16 nDelay; /* Size of the delay buffer in use. Maximum delay from all users of this buffer. */
} DelayBuffer;
@@ -141,8 +141,8 @@ typedef struct
Word32 subblockNrg[NSUBBLOCKS + MAX_TD_DELAY]; // IVAS Q(-1)
Word32 accSubblockNrg[NSUBBLOCKS + MAX_TD_DELAY + 1]; // IVAS Q(-1)
Word16 subblockNrgChange[NSUBBLOCKS + MAX_TD_DELAY]; /* EVS: Q7(15 - SUBBLOCK_NRG_CHANGE_E) */ /* IVAS: Q3 */
- int16_t nDelay; /* Size of the delay buffer in use, as number of subblocks. Maximum delay from all users of this buffer. */
- int16_t nPartialDelay; /* Delay of the input (modulo pDelayBuffer->nSubblockSize), nPartialDelay <= pDelayBuffer->nDelay. */
+ Word16 nDelay; /* Size of the delay buffer in use, as number of subblocks. Maximum delay from all users of this buffer. */
+ Word16 nPartialDelay; /* Delay of the input (modulo pDelayBuffer->nSubblockSize), nPartialDelay <= pDelayBuffer->nDelay. */
/* Decay factor for the recursive accumulation */
Word16 facAccSubblockNrg;
@@ -152,27 +152,25 @@ typedef struct
Word16 firState2;
Word16 q_firState;
- uint16_t ramp_up_flag; /* bit map flags to indicate a ramp up in beginning of TCX frame */
+ UWord16 ramp_up_flag; /* bit map flags to indicate a ramp up in beginning of TCX frame */
} SubblockEnergies;
/* Attack detection function. */
-typedef void ( *TCheckSubblocksForAttack )( const float *pSubblockNrg, const float *pAccSubblockNrg, int16_t nSubblocks, int16_t nPastSubblocks, float attackRatioThreshold, int16_t *pbIsAttackPresent, int16_t *pAttackIndex );
typedef void ( *TCheckSubblocksForAttack_fx )( Word32 const *pSubblockNrg, Word32 const *pAccSubblockNrg, Word16 nSubblocks, Word16 nPastSubblocks, Word16 attackRatioThreshold, Word16 *pbIsAttackPresent, Word16 *pAttackIndex );
/* Transient detector. */
typedef struct TransientDetector
{
SubblockEnergies *pSubblockEnergies; /* Subblock energies used in this transient detector. */
- int16_t nDelay; /* Delay of the transient detector in number of subblocks, nDelay <= pSubblockEnergies->nDelay. */
- int16_t nSubblocksToCheck; /* Number of subblocks to check for transients. */
- TCheckSubblocksForAttack CheckSubblocksForAttack; /* Function for checking a presence of an attack. */
+ Word16 nDelay; /* Delay of the transient detector in number of subblocks, nDelay <= pSubblockEnergies->nDelay. */
+ Word16 nSubblocksToCheck; /* Number of subblocks to check for transients. */
TCheckSubblocksForAttack_fx CheckSubblocksForAttack_fx; /* Function for checking a presence of an attack. */
Word16 attackRatioThreshold; /* Attack ratio threshold Q11 */
- int16_t bIsAttackPresent; /* True when an attack was detected. */
- int16_t prev_bIsAttackPresent; /* True if an attack was detected in the previous frame. */
- int16_t attackIndex; /* The index of an attack. */
+ Word16 bIsAttackPresent; /* True when an attack was detected. */
+ Word16 prev_bIsAttackPresent; /* True if an attack was detected in the previous frame. */
+ Word16 attackIndex; /* The index of an attack. */
} TransientDetector;
/* Transient detection: Holds all transient detectors and buffers used by them. */
@@ -191,25 +189,25 @@ typedef struct TransientDetection_structure
typedef struct vad_structure
{
- int16_t nb_active_frames;
- int16_t hangover_cnt;
- int16_t nb_active_frames_he;
- int16_t hangover_cnt_he;
- int32_t vad_flag_reg_H;
- int32_t vad_flag_reg_L;
- int32_t vad_prim_reg;
-
- int16_t vad_flag_cnt_50;
- int16_t vad_prim_cnt_16;
-
- int16_t hangover_cnt_dtx;
- int16_t hangover_cnt_music;
+ Word16 nb_active_frames;
+ Word16 hangover_cnt;
+ Word16 nb_active_frames_he;
+ Word16 hangover_cnt_he;
+ Word32 vad_flag_reg_H;
+ Word32 vad_flag_reg_L;
+ Word32 vad_prim_reg;
+
+ Word16 vad_flag_cnt_50;
+ Word16 vad_prim_cnt_16;
+
+ Word16 hangover_cnt_dtx;
+ Word16 hangover_cnt_music;
Word16 bcg_flux_fx; // Q4
- int16_t soft_hangover;
- int16_t voiced_burst;
- int16_t bcg_flux_init;
- int16_t nb_active_frames_he1;
- int16_t hangover_cnt_he1;
+ Word16 soft_hangover;
+ Word16 voiced_burst;
+ Word16 bcg_flux_init;
+ Word16 nb_active_frames_he1;
+ Word16 hangover_cnt_he1;
Word16 prim_act_quick_fx; /*Q15 */ /* Noise estimator - primary activity quick */
Word16 prim_act_slow_fx; /*Q15 */ /* Noise estimator - primary activity slow */
Word16 prim_act_fx; /*Q15 */ /* Noise estimator - primary activity slow rise quick fall */
@@ -217,22 +215,22 @@ typedef struct vad_structure
Word16 prim_act_slow_he_fx; /*Q15 */ /* Noise estimator - primary activity slow */
Word16 prim_act_he_fx; /*Q15 */ /* Q15 Noise estimator - primary activity slow rise quick fall */
- int16_t spectral_tilt_reset;
- int16_t consec_inactive;
+ Word16 spectral_tilt_reset;
+ Word16 consec_inactive;
Word16 ra_deltasum_fx;
- int16_t trigger_SID;
+ Word16 trigger_SID;
Word16 snr_sum_vad_fx; /*Q15 */
Word16 running_avg_fx; /*Q15 */
Word32 L_snr_sum_vad_fx; /*Q4*/
- int16_t hangover_terminate_flag; /* CNG and DTX - flag indicating whether to early terminate DTX hangover */
- int16_t vad_flag; /* VAD flag */
+ Word16 hangover_terminate_flag; /* CNG and DTX - flag indicating whether to early terminate DTX hangover */
+ Word16 vad_flag; /* VAD flag */
} VAD_DATA, *VAD_HANDLE;
typedef struct cldfb_vad_structure
{
- int16_t bw_index; /* index of band width */
+ Word16 bw_index; /* index of band width */
/* feature */
Word16 sp_center[SP_CENTER_NUM]; /* spectral center*/
@@ -248,8 +246,8 @@ typedef struct cldfb_vad_structure
Word32 t_bg_energy; /* time background energy of several frames*/
Word16 scale_t_bg_energy; /* the Scaling of t_bg_energy*/
T_VAD_EXP t_bg_energy_sum; /* number of time background energy*/
- int16_t tbg_energy_count; /* sum of time background energy of several frames*/
- int16_t bg_update_count; /* time of background update*/
+ Word16 tbg_energy_count; /* sum of time background energy of several frames*/
+ Word16 bg_update_count; /* time of background update*/
Word32 frame_energy_smooth; /* smoothed energy of several frames*/
Word16 frame_energy_smooth_scale; /* the Scaling of frame_energy_smooth*/
@@ -268,14 +266,14 @@ typedef struct cldfb_vad_structure
Word16 fg_energy_scale; /* the Scaling of fg_energy*/
Word32 bg_energy; /* background energy sum */
Word16 bg_energy_scale; /* the Scaling of bg_energy*/
- int16_t fg_energy_count; /* number of the foreground energy frame */
- int16_t bg_energy_count; /* number of the background energy frame */
+ Word16 fg_energy_count; /* number of the foreground energy frame */
+ Word16 bg_energy_count; /* number of the background energy frame */
Word32 fg_energy_est_start; /* flag by that indicate whether if estimate energy*/
- int16_t speech_flag; /* residual number of hangover 1 */
- int16_t continuous_noise_num; /* time of continuous noise frames*/
- int16_t continuous_speech_num; /* time of continuous speech frames*/
- int16_t continuous_speech_num2; /* time 2 of continuous speech frames*/
- int16_t frameloop; /* number of frame*/
+ Word16 speech_flag; /* residual number of hangover 1 */
+ Word16 continuous_noise_num; /* time of continuous noise frames*/
+ Word16 continuous_speech_num; /* time of continuous speech frames*/
+ Word16 continuous_speech_num2; /* time 2 of continuous speech frames*/
+ Word16 frameloop; /* number of frame*/
Word16 tonality_rate3; /* tonality rate*/
Word16 music_background_rate; /* music background rate*/
Word32 lt_noise_sp_center_diff_sum; /* different sum of long time noise sp_center*/
@@ -283,10 +281,10 @@ typedef struct cldfb_vad_structure
Word16 lt_noise_sp_center0; /* long time noise sp_center0*/
Word16 lt_noise_sp_center3; /* long time noise sp_center3*/
Word32 lt_bg_highf_eng; /* average of long time high frequency energy*/
- int16_t update_num_with_snr; /* the number of the background update with SNR*/
- int16_t update_count;
- int16_t warm_hang_num; /* the number of hangover for warm up*/
- int16_t vad_flag_for_bk_update;
+ Word16 update_num_with_snr; /* the number of the background update with SNR*/
+ Word16 update_count;
+ Word16 warm_hang_num; /* the number of hangover for warm up*/
+ Word16 vad_flag_for_bk_update;
} T_CldfbVadState, *VAD_CLDFB_HANDLE;
@@ -326,7 +324,7 @@ typedef struct td_cng_enc_structure
Word16 cng_buf_cnt; /* CNG and DTX - Counter of buffered CNG parameters */
Word16 cng_exc2_buf[HO_HIST_SIZE * L_FFT]; /* CNG and DTX - exc2 buffer for storing */
Word16 cng_Qexc_buf[HO_HIST_SIZE]; /* CNG and DTX - Q_exc buffer for storing */
- int32_t cng_brate_buf[HO_HIST_SIZE]; /* CNG and DTX - buffer for storing last_active_brate */
+ Word32 cng_brate_buf[HO_HIST_SIZE]; /* CNG and DTX - buffer for storing last_active_brate */
Word16 CNG_att_fx; /* CNG and DTX - attenuation factor for CNG, in dB Q7 */
Word16 ho_16k_lsp[HO_HIST_SIZE]; /* CNG and DTX - 16k LSPs flags */
Word16 act_cnt2; /* CNG and DTX - counter of active frames for CNG_mode switching */
@@ -432,23 +430,23 @@ typedef struct dtx_enc_structure
typedef struct igfscfenc_public_data_struct
{
- int16_t ptrBitIndex;
- int16_t bitCount;
- int16_t prev[64]; /* no more than 64 SCFs for the IGF energy envelope of one block */
- int16_t prevSave[64];
- int16_t scfCountLongBlock[IGF_NOF_GRIDS];
- int16_t t;
- int16_t Tsave;
- int16_t contex_saved;
- const uint16_t *cf_se00;
- const uint16_t *cf_se01;
- int16_t cf_off_se01;
- const uint16_t *cf_se02;
- const int16_t *cf_off_se02;
- const uint16_t *cf_se10;
- int16_t cf_off_se10;
- const uint16_t *cf_se11;
- const int16_t *cf_off_se11;
+ Word16 ptrBitIndex;
+ Word16 bitCount;
+ Word16 prev[64]; /* no more than 64 SCFs for the IGF energy envelope of one block */
+ Word16 prevSave[64];
+ Word16 scfCountLongBlock[IGF_NOF_GRIDS];
+ Word16 t;
+ Word16 Tsave;
+ Word16 contex_saved;
+ const UWord16 *cf_se00;
+ const UWord16 *cf_se01;
+ Word16 cf_off_se01;
+ const UWord16 *cf_se02;
+ const Word16 *cf_off_se02;
+ const UWord16 *cf_se10;
+ Word16 cf_off_se10;
+ const UWord16 *cf_se11;
+ const Word16 *cf_off_se11;
Tastat acState;
TastatEnc acState_fx;
@@ -749,21 +747,21 @@ typedef struct acelp_cbkcorr_structure
typedef struct gsc_enc_structure
{
- int16_t seed_tcx; /* AC mode (GSC) - seed for noise fill */
- int16_t cor_strong_limit; /* AC mode (GSC) - Indicator about high spectral correlation per band */
- int16_t mem_last_pit_band; /* AC mode (GSC) - memory of the last band where pitch contribution was significant */
+ Word16 seed_tcx; /* AC mode (GSC) - seed for noise fill */
+ Word16 cor_strong_limit; /* AC mode (GSC) - Indicator about high spectral correlation per band */
+ Word16 mem_last_pit_band; /* AC mode (GSC) - memory of the last band where pitch contribution was significant */
Word16 mem_w0_tmp_fx;
Word16 mem_syn_tmp_fx[M];
Word16 mid_dyn_fx; /* AC mode (GSC) - signal dynamic Q7 */
- int16_t noise_lev; /* AC mode (GSC) - noise level */
- int16_t past_dyn_dec; /* AC mode (GSC) - Past noise level decision */
+ Word16 noise_lev; /* AC mode (GSC) - noise level */
+ Word16 past_dyn_dec; /* AC mode (GSC) - Past noise level decision */
Word32 Last_frame_ener_fx; /* AC mode (GSC) - Last frame energy */
- int16_t pit_exc_hangover; /* AC mode (GSC) - Hangover for the time contribution switching */
+ Word16 pit_exc_hangover; /* AC mode (GSC) - Hangover for the time contribution switching */
Word16 last_exc_dct_in_fx[L_FRAME16k]; /* AC mode (GSC) - previous exciation */
Word16 Q_last_exc_dct_in;
- Word16 last_ener_fx; /* AC mode (GSC) - previous energy Q0 */
- int16_t last_bitallocation_band[6]; /* AC mode (GSC) - previous bit allocation of each band */
- Word16 lt_gpitch_fx; /* Q15 */
+ Word16 last_ener_fx; /* AC mode (GSC) - previous energy Q0 */
+ Word16 last_bitallocation_band[6]; /* AC mode (GSC) - previous bit allocation of each band */
+ Word16 lt_gpitch_fx; /* Q15 */
} GSC_ENC_DATA, *GSC_ENC_HANDLE;
@@ -804,14 +802,14 @@ typedef struct hq_enc_structure
/* PVQ range coder state */
typedef struct pvq_enc_structure
{
- uint32_t rc_low;
- uint32_t rc_range;
- int16_t rc_cache;
- int16_t rc_carry;
- int16_t rc_carry_count;
- int16_t rc_num_bits;
- int16_t rc_tot_bits;
- int16_t rc_offset;
+ UWord32 rc_low;
+ UWord32 rc_range;
+ Word16 rc_cache;
+ Word16 rc_carry;
+ Word16 rc_carry_count;
+ Word16 rc_num_bits;
+ Word16 rc_tot_bits;
+ Word16 rc_offset;
} PVQ_ENC_DATA, *PVQ_ENC_HANDLE;
@@ -838,33 +836,33 @@ typedef struct sc_vbr_enc_structure
Word16 nelp_lp_fit_mem[NELP_LP_ORDER * 2]; /* Q(prev_Q_new) */
Word32 bp1_filt_mem_nb_fx[14]; /* Q(qprevGain_fx) */
- int16_t nelp_enc_seed;
+ Word16 nelp_enc_seed;
Word16 nelp_gain_mem_fx; /* Q0 */
- int16_t last_nelp_mode;
- int16_t nelp_mode;
+ Word16 last_nelp_mode;
+ Word16 nelp_mode;
Word16 qprevIn_fx;
Word16 qprevGain_fx;
/* PPP variables */
- int16_t pppcountE;
- int16_t bump_up;
- int16_t last_ppp_mode;
- int16_t last_last_ppp_mode;
- int16_t ppp_mode;
+ Word16 pppcountE;
+ Word16 bump_up;
+ Word16 last_ppp_mode;
+ Word16 last_last_ppp_mode;
+ Word16 ppp_mode;
Word16 prev_ppp_gain_pit_fx; /* Q14 */
Word16 prev_tilt_code_fx; /* Q15 */
/* voiced encoder variables */
- int16_t firstTime_voicedenc;
+ Word16 firstTime_voicedenc;
/* DTFS variables */
Word16 dtfs_enc_a_fx[MAXLAG_WI]; /* Q(dtfs_enc_Q) */
Word16 dtfs_enc_b_fx[MAXLAG_WI]; /* Q(dtfs_enc_Q) */
- int16_t dtfs_enc_lag;
- int16_t dtfs_enc_nH;
- int16_t dtfs_enc_nH_4kHz;
+ Word16 dtfs_enc_lag;
+ Word16 dtfs_enc_nH;
+ Word16 dtfs_enc_nH_4kHz;
Word16 dtfs_enc_upper_cut_off_freq_of_interest_fx; /* Q0 */
Word16 dtfs_enc_upper_cut_off_freq_fx; /* Q0 */
Word16 dtfs_enc_Q;
@@ -876,23 +874,23 @@ typedef struct sc_vbr_enc_structure
Word16 lasterbE_fx[NUM_ERB_WB]; /* Previous Amplitude spectrum (ERB) Q13 */
Word16 Q_prev_cw_en_fx;
- int16_t mode_QQF;
- int16_t rate_control;
+ Word16 mode_QQF;
+ Word16 rate_control;
Word16 SNR_THLD_fx; /* Q8 */
- int16_t Q_to_F;
- int16_t pattern_m;
- int16_t patterncount;
- int16_t Last_Resort;
- int16_t numactive; /* keep the count of the frames inside current 600 frame block */
+ Word16 Q_to_F;
+ Word16 pattern_m;
+ Word16 patterncount;
+ Word16 Last_Resort;
+ Word16 numactive; /* keep the count of the frames inside current 600 frame block */
Word32 sum_of_rates_fx; /*Q=13 sum of the rates of past 600 active frames*/
Word32 global_avr_rate_fx; /*Q=13 global rate upto current time. recorded a (rate in kbps) *6000*/
- int16_t global_frame_cnt; /* 600 active frame block count. Used to update the global rate */
- int16_t set_ppp_generic;
- int16_t avoid_HQ_VBR_NB;
+ Word16 global_frame_cnt; /* 600 active frame block count. Used to update the global rate */
+ Word16 set_ppp_generic;
+ Word16 avoid_HQ_VBR_NB;
- int16_t vbr_generic_ho;
- int16_t Local_VAD;
- int16_t last_7k2_coder_type;
+ Word16 vbr_generic_ho;
+ Word16 Local_VAD;
+ Word16 last_7k2_coder_type;
} SC_VBR_ENC_DATA, *SC_VBR_ENC_HANDLE;
@@ -910,7 +908,7 @@ typedef struct amrwb_io_enc_structure
Word16 mem_hp400_enc_fx[6];
Word16 mem_hf_enc_fx[L_FIR - 1];
Word16 mem_syn_hf_enc_fx[M];
- int16_t seed2_enc;
+ Word16 seed2_enc;
} AMRWB_IO_ENC_DATA, *AMRWB_IO_ENC_HANDLE;
@@ -944,7 +942,7 @@ typedef struct td_bwe_enc_structure
Word16 state_syn_shbexc_fx[L_SHB_LAHEAD]; /* Q(prev_Q_bwe_exc - 16) */
Word16 state_lpc_syn_fx[LPC_SHB_ORDER]; /* Q(prev_Q_bwe_exc - 16) */
Word16 old_bwe_exc_fx[PIT16k_MAX * 2]; /*Q_exc*/
- int16_t bwe_seed[2];
+ Word16 bwe_seed[2];
Word32 bwe_non_lin_prev_scale_fx; /* Q30 */
Word16 old_bwe_exc_extended_fx[NL_BUFF_OFFSET]; /* Q(prev_Q_bwe_exc - 16) */
Word16 syn_overlap_fx[L_SHB_LAHEAD]; /* overlap buffer used to Adjust SHB Frame Gain */
@@ -964,7 +962,7 @@ typedef struct td_bwe_enc_structure
Word16 shb_inv_filt_mem_fx[LPC_SHB_ORDER]; /* Q(Q_shb_spch) */
Word16 lsp_shb_spacing_fx[3]; /* Q15 */
Word16 prev_swb_GainShape_fx; /* Q15 */
- int16_t prev_frGainAtten;
+ Word16 prev_frGainAtten;
Word16 prev_wb_GainShape; /* Q15 */
Word16 swb_lsp_prev_interp_fx[LPC_SHB_ORDER]; /* Q15 */
@@ -973,25 +971,25 @@ typedef struct td_bwe_enc_structure
Word16 fb_tbe_demph_fx;
Word16 tilt_mem_fx; /* Q12 */
- int16_t prev_coder_type;
+ Word16 prev_coder_type;
Word16 prev_lsf_diff_fx[LPC_SHB_ORDER - 2]; /* Q15 */
Word16 prev_tilt_para_fx; /* Q10 */
Word16 cur_sub_Aq_fx[M + 1]; /* Q12 */
/* quantized data */
- int16_t lsf_idx[NUM_Q_LSF];
- int16_t m_idx;
- int16_t grid_idx;
- int16_t idxSubGains;
- int16_t idxFrameGain;
- int16_t idx_shb_fr_gain;
- int16_t idx_res_gs[NB_SUBFR16k];
- int16_t idx_mixFac;
-
- int16_t lsf_WB;
- int16_t gFrame_WB;
-
- int16_t idxGain;
+ Word16 lsf_idx[NUM_Q_LSF];
+ Word16 m_idx;
+ Word16 grid_idx;
+ Word16 idxSubGains;
+ Word16 idxFrameGain;
+ Word16 idx_shb_fr_gain;
+ Word16 idx_res_gs[NB_SUBFR16k];
+ Word16 idx_mixFac;
+
+ Word16 lsf_WB;
+ Word16 gFrame_WB;
+
+ Word16 idxGain;
Word16 dec_2_over_3_mem_fx[L_FILT_2OVER3];
Word16 dec_2_over_3_mem_lp_fx[6];
@@ -1041,9 +1039,9 @@ typedef struct fd_bwe_enc_structure
typedef struct rf_enc_structure
{
- int16_t rf_frame_type;
- int16_t rf_targetbits_buff[MAX_RF_FEC_OFFSET];
- int16_t rf_indx_frametype[MAX_RF_FEC_OFFSET];
+ Word16 rf_frame_type;
+ Word16 rf_targetbits_buff[MAX_RF_FEC_OFFSET];
+ Word16 rf_indx_frametype[MAX_RF_FEC_OFFSET];
ACELP_config acelp_cfg_rf; /* configuration for RF frame */
@@ -1054,31 +1052,31 @@ typedef struct rf_enc_structure
struct dispMem_fx rf_dm_fx;
Word32 rf_gc_threshold;
- int16_t rf_target_bits;
+ Word16 rf_target_bits;
Word16 rf_tilt_buf[NB_SUBFR16k];
- int16_t rf_indx_lsf[MAX_RF_FEC_OFFSET][3];
- int16_t rf_indx_pitch[MAX_RF_FEC_OFFSET][NB_SUBFR16k];
- int16_t rf_indx_fcb[MAX_RF_FEC_OFFSET][NB_SUBFR16k];
- int16_t rf_indx_gain[MAX_RF_FEC_OFFSET][NB_SUBFR16k];
- int16_t rf_indx_EsPred[MAX_RF_FEC_OFFSET];
- int16_t rf_indx_ltfMode[MAX_RF_FEC_OFFSET][NB_SUBFR16k];
+ Word16 rf_indx_lsf[MAX_RF_FEC_OFFSET][3];
+ Word16 rf_indx_pitch[MAX_RF_FEC_OFFSET][NB_SUBFR16k];
+ Word16 rf_indx_fcb[MAX_RF_FEC_OFFSET][NB_SUBFR16k];
+ Word16 rf_indx_gain[MAX_RF_FEC_OFFSET][NB_SUBFR16k];
+ Word16 rf_indx_EsPred[MAX_RF_FEC_OFFSET];
+ Word16 rf_indx_ltfMode[MAX_RF_FEC_OFFSET][NB_SUBFR16k];
- int16_t rf_indx_nelp_fid[MAX_RF_FEC_OFFSET];
- int16_t rf_indx_nelp_iG1[MAX_RF_FEC_OFFSET];
- int16_t rf_indx_nelp_iG2[MAX_RF_FEC_OFFSET][2];
+ Word16 rf_indx_nelp_fid[MAX_RF_FEC_OFFSET];
+ Word16 rf_indx_nelp_iG1[MAX_RF_FEC_OFFSET];
+ Word16 rf_indx_nelp_iG2[MAX_RF_FEC_OFFSET][2];
- int16_t rf_indx_tbeGainFr[MAX_RF_FEC_OFFSET];
+ Word16 rf_indx_tbeGainFr[MAX_RF_FEC_OFFSET];
- int16_t rf_tcxltp_pitch_int_past;
- int16_t rf_last_tns_active;
- int16_t rf_second_last_tns_active;
- int16_t rf_second_last_core;
- int16_t rf_clas[MAX_RF_FEC_OFFSET];
- int16_t rf_gain_tcx[MAX_RF_FEC_OFFSET];
- int16_t rf_tcxltp_param[MAX_RF_FEC_OFFSET];
+ Word16 rf_tcxltp_pitch_int_past;
+ Word16 rf_last_tns_active;
+ Word16 rf_second_last_tns_active;
+ Word16 rf_second_last_core;
+ Word16 rf_clas[MAX_RF_FEC_OFFSET];
+ Word16 rf_gain_tcx[MAX_RF_FEC_OFFSET];
+ Word16 rf_tcxltp_param[MAX_RF_FEC_OFFSET];
- int16_t RF_bwe_gainFr_ind;
+ Word16 RF_bwe_gainFr_ind;
} RF_ENC_DATA, *RF_ENC_HANDLE;
@@ -1088,17 +1086,17 @@ typedef struct rf_enc_structure
typedef struct plc_enc_evs_structure
{
- int16_t nBits; /* number of bits */
+ Word16 nBits; /* number of bits */
Word16 Q_new;
Word16 Q_exp;
- int16_t enableGplc;
- int16_t T0_4th;
- int16_t T0;
- int16_t calcOnlylsf;
- int16_t pit_min;
- int16_t pit_max;
+ Word16 enableGplc;
+ Word16 T0_4th;
+ Word16 T0;
+ Word16 calcOnlylsf;
+ Word16 pit_min;
+ Word16 pit_max;
Word16 mem_MA_14Q1[M];
Word16 mem_AR[M];
@@ -1131,8 +1129,8 @@ typedef struct tec_enc_structure
Word16 loTempEnv[CLDFB_NO_COL_MAX]; /* Q7 */
Word16 loTempEnv_ns[CLDFB_NO_COL_MAX]; /* Q7 */
Word16 hiTempEnv[CLDFB_NO_COL_MAX + DELAY_TEMP_ENV_BUFF_TEC + EXT_DELAY_HI_TEMP_ENV]; /* Q7 */
- int16_t tranFlag;
- int16_t corrFlag;
+ Word16 tranFlag;
+ Word16 corrFlag;
} TEC_ENC_DATA, *TEC_ENC_HANDLE;
@@ -1143,63 +1141,63 @@ typedef struct tec_enc_structure
typedef struct tcx_enc_structure
{
- int16_t L_frameTCX;
+ Word16 L_frameTCX;
- int16_t tcxMode; /* Chosen TCX mode for this frame */
- int16_t transform_type[2]; /* TCX20/10/5 mode in each subframe */
+ Word16 tcxMode; /* Chosen TCX mode for this frame */
+ Word16 transform_type[2]; /* TCX20/10/5 mode in each subframe */
/* Core Signal Analysis Outputs */
Word16 noiseTiltFactor; /* compensation for LPC tilt in noise filling Q15 */
- int16_t noiseLevelMemory_cnt; /* counter of consecutive low TCX noise levels */
+ Word16 noiseLevelMemory_cnt; /* counter of consecutive low TCX noise levels */
Word16 ltpGainMemory_fx[N_LTP_GAIN_MEMS]; /* for smoothing noiseTransWidth Q15 */
STnsData tnsData[2];
- // int16_t fUseTns[2];
+ // Word16 fUseTns[2];
Word8 fUseTns[2];
- int16_t bTnsOnWhithenedSpectra[2];
+ Word16 bTnsOnWhithenedSpectra[2];
- // int16_t memQuantZeros[L_FRAME_PLUS]; /* Quantization deadzone flags */
+ // Word16 memQuantZeros[L_FRAME_PLUS]; /* Quantization deadzone flags */
Word8 memQuantZeros[L_FRAME_PLUS]; /* Quantization deadzone flags */
Word16 *speech_TCX;
Word16 *new_speech_TCX;
// Word16 q_speech_TCX;
- int16_t tcxltp;
- int16_t tcxltp_pitch_int;
- int16_t tcxltp_pitch_fr;
+ Word16 tcxltp;
+ Word16 tcxltp_pitch_int;
+ Word16 tcxltp_pitch_fr;
Word16 tcxltp_gain; /* Q15 */
- int16_t tcxltp_pitch_int_past;
- int16_t tcxltp_pitch_fr_past;
+ Word16 tcxltp_pitch_int_past;
+ Word16 tcxltp_pitch_fr_past;
Word16 tcxltp_gain_past; /* Q15 */
Word16 tcxltp_norm_corr_past; /* Q15 */
Word16 tcxltp_norm_corr_mem; /* Q15 */
Word16 kernel_switch_corr_past; /* Q15 */
- uint16_t kernel_type[2]; /* transform kernel type in each subframe (MDCT or MDST) */
- uint16_t kernel_symmetry_past; /* last TDA symmetry (0 for MDCT, 1 for MDST type) */
- uint16_t enc_ste_pre_corr_past;
+ UWord16 kernel_type[2]; /* transform kernel type in each subframe (MDCT or MDST) */
+ UWord16 kernel_symmetry_past; /* last TDA symmetry (0 for MDCT, 1 for MDST type) */
+ UWord16 enc_ste_pre_corr_past;
Word32 tfm_mem_fx; /* state of IIR filtered temporal flatness measure Q31 */
Word16 buf_speech_ltp[L_PAST_MAX_32k + L_FRAME32k + L_NEXT_MAX_32k];
Word16 exp_buf_speech_ltp;
Word16 *speech_ltp;
Word16 *new_speech_ltp;
- int16_t tcxltp_filt_idx;
- int16_t tcxltp_bits;
- int16_t tcxltp_param[LTPSIZE];
- int16_t tcxltp_on_mem;
+ Word16 tcxltp_filt_idx;
+ Word16 tcxltp_bits;
+ Word16 tcxltp_param[LTPSIZE];
+ Word16 tcxltp_on_mem;
Word16 measuredBwRatio; /* measured bw; used for TCX noise-filling. 1Q14 */
- int16_t nmStartLine; /* Starting line for the noise measurement */
+ Word16 nmStartLine; /* Starting line for the noise measurement */
- int16_t tcx_lpc_shaped_ari;
+ Word16 tcx_lpc_shaped_ari;
Word16 old_out_fx[L_FRAME32k]; /* buffer for OLA; at the encoder, the maximum length is L_FRAME32k (corresponds to maximum internal L_frame length) */
Word16 Q_old_out;
/* MDCT switching */
Word16 prev_hi_ener; /* Q8 */
- int16_t prev_hi_sparse;
+ Word16 prev_hi_sparse;
Word16 clas_sec_old_fx; /* Q13 */
- int16_t clas_final_old;
+ Word16 clas_final_old;
Word32 last_gain1; /* Q(31 - st->last_enerBuffer_exp) */
Word32 last_gain2; /* Q(31 - st->last_enerBuffer_exp) */
@@ -1209,7 +1207,7 @@ typedef struct tcx_enc_structure
Word16 q_Txnq;
Word16 tcx_target_bits_fac; /* Q14 */
- int16_t tns_ms_flag[2];
+ Word16 tns_ms_flag[2];
Word32 *spectrum_fx[2]; /* MDCT output for a short block */
Word16 spectrum_e[2];
Word32 spectrum_long_fx[N_MAX]; /* MDCT output for a long block. Points to spectrum */
@@ -1241,9 +1239,9 @@ typedef struct enc_core_structure
Word16 idchan; /* channel ID (audio channel number) */
Word16 id_element; /* element ID */
- int16_t element_mode; /* element mode */
+ Word16 element_mode; /* element mode */
Word16 last_element_mode; /* element mode */
- int32_t element_brate; /* element bitrate */
+ Word32 element_brate; /* element bitrate */
Word16 extl_orig; /* extension layer */
Word32 extl_brate_orig; /* extension layer bitrate */
Word16 codec_mode; /* Mode1 or Mode2 */
@@ -1257,40 +1255,40 @@ typedef struct enc_core_structure
BSTR_ENC_HANDLE hBstr; /* encoder bitstream handle */
Word16 last_enerBuffer_exp;
- int16_t bitstreamformat; /* Bitstream format flag (G.192/MIME) */
- Word16 next_bit_pos_fx; /* position of the next bit to be written in the bitstream */
-
- int32_t input_Fs; /* input signal sampling frequency in Hz */
- int32_t total_brate; /* total bitrate in kbps of the codec */
- int32_t last_total_brate; /* last frame's total bitrate in kbps of the codec */
- int32_t last_total_brate_cng; /* last inactive frame's total bitrate in kbps of the codec */
- int16_t core; /* core (ACELP_CORE, TCX_20_CORE, TCX_10_CORE, HQ_CORE, AMR_WB_CORE) */
- int16_t last_core; /* previous frame core */
- int16_t coder_type; /* core coder type */
- int16_t flag_ACELP16k; /* flag indicating use of ACELP core at 16kHz internal sampling rate */
- int32_t core_brate; /* core bitrate */
- int32_t last_core_brate; /* previous frame core bitrate */
- int16_t extl; /* extension layer */
- int16_t last_extl; /* previous extension layer */
- int32_t extl_brate; /* extension layer bitrate */
- int16_t input_bwidth; /* input signal bandwidth */
- int16_t bwidth; /* encoded bandwidth NB, WB, SWB or FB */
- int16_t max_bwidth; /* maximum encoded bandwidth */
- int16_t last_input_bwidth; /* input signal bandwidth in the previous frame */
- int16_t last_bwidth; /* coded bandwidth in the previous frame */
- int16_t last_bwidth_cng; /* coded bandwidth in the previous inactive frame */
- int16_t bwidth_sw_cnt; /* bandwidth switching counter */
- int16_t L_frame; /* ACELP core internal frame length */
- int16_t Opt_AMR_WB; /* flag indicating AMR-WB IO mode */
- int16_t Opt_DTX_ON; /* flag indicating DTX operation */
- int16_t cng_type; /* flag indicating LP or CLDFB based SID/CNG */
- int16_t cng_sba_flag; /* flag indicating CNG/SID for SBA 2TC */
- int16_t Opt_SC_VBR; /* flag indicating SC-VBR mode */
- int16_t last_Opt_SC_VBR; /* flag indicating prev frame's SC-VBR mode */
- int16_t low_rate_mode; /* low-rate mode flag */
- int16_t inactive_coder_type_flag; /* inactive coder type flag (0 = AVQ / 1 = GSC) */
+ Word16 bitstreamformat; /* Bitstream format flag (G.192/MIME) */
+ Word16 next_bit_pos_fx; /* position of the next bit to be written in the bitstream */
+
+ Word32 input_Fs; /* input signal sampling frequency in Hz */
+ Word32 total_brate; /* total bitrate in kbps of the codec */
+ Word32 last_total_brate; /* last frame's total bitrate in kbps of the codec */
+ Word32 last_total_brate_cng; /* last inactive frame's total bitrate in kbps of the codec */
+ Word16 core; /* core (ACELP_CORE, TCX_20_CORE, TCX_10_CORE, HQ_CORE, AMR_WB_CORE) */
+ Word16 last_core; /* previous frame core */
+ Word16 coder_type; /* core coder type */
+ Word16 flag_ACELP16k; /* flag indicating use of ACELP core at 16kHz internal sampling rate */
+ Word32 core_brate; /* core bitrate */
+ Word32 last_core_brate; /* previous frame core bitrate */
+ Word16 extl; /* extension layer */
+ Word16 last_extl; /* previous extension layer */
+ Word32 extl_brate; /* extension layer bitrate */
+ Word16 input_bwidth; /* input signal bandwidth */
+ Word16 bwidth; /* encoded bandwidth NB, WB, SWB or FB */
+ Word16 max_bwidth; /* maximum encoded bandwidth */
+ Word16 last_input_bwidth; /* input signal bandwidth in the previous frame */
+ Word16 last_bwidth; /* coded bandwidth in the previous frame */
+ Word16 last_bwidth_cng; /* coded bandwidth in the previous inactive frame */
+ Word16 bwidth_sw_cnt; /* bandwidth switching counter */
+ Word16 L_frame; /* ACELP core internal frame length */
+ Word16 Opt_AMR_WB; /* flag indicating AMR-WB IO mode */
+ Word16 Opt_DTX_ON; /* flag indicating DTX operation */
+ Word16 cng_type; /* flag indicating LP or CLDFB based SID/CNG */
+ Word16 cng_sba_flag; /* flag indicating CNG/SID for SBA 2TC */
+ Word16 Opt_SC_VBR; /* flag indicating SC-VBR mode */
+ Word16 last_Opt_SC_VBR; /* flag indicating prev frame's SC-VBR mode */
+ Word16 low_rate_mode; /* low-rate mode flag */
+ Word16 inactive_coder_type_flag; /* inactive coder type flag (0 = AVQ / 1 = GSC) */
#ifdef DEBUGGING
- int16_t force; /* flag indicating specific signal type (0 = speech, 1 = music, -1 = N/A) */
+ Word16 force; /* flag indicating specific signal type (0 = speech, 1 = music, -1 = N/A) */
#ifdef DEBUG_FORCE_DIR
char *force_dir; /* directory containing external binary files for modes/parameters enforcement (empty string indicates no enforcement) */
#endif
@@ -1328,13 +1326,13 @@ typedef struct enc_core_structure
* ACELP core parameters
*----------------------------------------------------------------------------------*/
- int16_t clas; /* current frame clas */
- int16_t last_clas; /* previous frame signal classification */
+ Word16 clas; /* current frame clas */
+ Word16 last_clas; /* previous frame signal classification */
Word16 prev_fmerit; /* previous signal classification score Q15 */
Word16 fmerit_dt; /* signal classification score difference Q15 */
- int16_t Nb_ACELP_frames;
+ Word16 Nb_ACELP_frames;
- int16_t pitch[3]; /* open-loop pitch values @12.8 kHz for three half-frames */
+ Word16 pitch[3]; /* open-loop pitch values @12.8 kHz for three half-frames */
// Word16 pitch_fx[3];
Word16 voicing_fx[3]; /* open-loop normalized correlation values for three half-frames Q15 */
@@ -1348,7 +1346,7 @@ typedef struct enc_core_structure
Word16 lsf_old_fx[M]; /* old LSF vector at the end of the frame Qlog2(2.56) */
Word16 lsp_old16k_fx[M]; /* old LSP vector at the end of the frame @16kHz Q15 */
Word16 lspold_enc_fx[M]; /* old LSP vector at the end of the frame @16kHz Q15 */
- int16_t pstreaklen; /* LSF quantizer */
+ Word16 pstreaklen; /* LSF quantizer */
Word16 streaklimit_fx; /* LSF quantizer Q15 */
Word16 stab_fac_fx; /* LSF stability factor Q15 */
Word16 clip_var_fx[6]; /* pitch gain clipping memory [2.56x,Q14,Q8,Q0,Q14,Q14] */
@@ -1375,42 +1373,42 @@ typedef struct enc_core_structure
Word16 mem_deemph_fx; /* deemphasis filter memory */
Word32 mem_hp20_in_fx[5]; /* HP filter memory for AMR-WB IO */
Word16 mCb1_fx; /* LSF quantizer - counter of stationary frames after a transition frame */
- int16_t GSC_noisy_speech; /* AC mode (GSC) - flag to indicate GSC on SWB noisy speech */
- int16_t GSC_IVAS_mode;
+ Word16 GSC_noisy_speech; /* AC mode (GSC) - flag to indicate GSC on SWB noisy speech */
+ Word16 GSC_IVAS_mode;
GSC_ENC_HANDLE hGSCEnc;
- int16_t Last_pulse_pos; /* FEC - last position of the first glottal pulse in the frame */
+ Word16 Last_pulse_pos; /* FEC - last position of the first glottal pulse in the frame */
Word16 lsfoldbfi0_fx[M]; /* FEC - LSF vector of the previous frame Qlog2(2.56) */
Word16 lsfoldbfi1_fx[M]; /* FEC - LSF vector of the past previous frame Qlog2(2.56) */
Word16 lsf_adaptive_mean_fx[M]; /* FEC - adaptive mean LSF vector for FEC Qlog2(2.56) */
- int16_t next_force_safety_net; /* FEC - flag to force safety net in next frame */
+ Word16 next_force_safety_net; /* FEC - flag to force safety net in next frame */
// Word16 next_force_safety_net_fx; /* FEC - flag to force safety net in next frame */
- int16_t uv_count; /* Stationary noise UV modification - unvoiced counter */
- int16_t act_count; /* Stationary noise UV modification - activation counter */
+ Word16 uv_count; /* Stationary noise UV modification - unvoiced counter */
+ Word16 act_count; /* Stationary noise UV modification - activation counter */
Word32 ge_sm_fx; /* Stationary noise UV modification - smoothed excitation gain Q(GE_SHIFT) */
Word16 lspold_s_fx[M]; /* Stationary noise UV modification - old LSP vector Q15 */
- int16_t noimix_seed; /* Stationary noise UV modification - mixture seed */
+ Word16 noimix_seed; /* Stationary noise UV modification - mixture seed */
Word16 min_alpha_fx; /* Stationary noise UV modification - minimum alpha Q15 */
Word16 exc_pe_fx; /* Stationary noise UV modification - memory of the preemphasis filter */
- int16_t coder_type_raw; /* raw coder_type (before UNVOICED is lost) */
- int16_t last_coder_type_raw; /* raw last_coder_type (coming from the sigal classification) */
- int16_t last_coder_type; /* previous coding type */
+ Word16 coder_type_raw; /* raw coder_type (before UNVOICED is lost) */
+ Word16 last_coder_type_raw; /* raw last_coder_type (coming from the sigal classification) */
+ Word16 last_coder_type; /* previous coding type */
Word16 old_thres_fx; /* normalized correlation weighting in open-loop pitch Q14 */
Word16 old_corr_fx; /* normalized correlation in previous frame (mean value) Q15 */
- int16_t old_pitch; /* previous pitch for open-loop pitch search */
- int16_t delta_pit; /* open-loop pitch extrapolation correction */
+ Word16 old_pitch; /* previous pitch for open-loop pitch search */
+ Word16 delta_pit; /* open-loop pitch extrapolation correction */
Word32 ee_old_fx; /* previous frame low/high frequency energy ratio Q6 */
- int16_t min_band; /* minimum critical band of useful bandwidth */
- int16_t max_band; /* maximum critical band of useful bandwidth */
- int16_t tc_cnt; /* TC frame counter */
- int16_t audio_frame_cnt; /* Counter of relative presence of audio frames */
+ Word16 min_band; /* minimum critical band of useful bandwidth */
+ Word16 max_band; /* maximum critical band of useful bandwidth */
+ Word16 tc_cnt; /* TC frame counter */
+ Word16 audio_frame_cnt; /* Counter of relative presence of audio frames */
Word32 old_dE1_fx; /* Maximum energy increase in previous frame Q13 */
- int16_t old_ind_deltaMax; /* Index of the sub-subframe of maximum energy in previous frame */
+ Word16 old_ind_deltaMax; /* Index of the sub-subframe of maximum energy in previous frame */
Word32 old_enr_ssf_fx[2 * NB_SSF]; /* Maxima of energies per sub-subframes of previous frame */
- int16_t spike_hyst; /* Hysteresis to prevent UC after sharp energy spike */
- int16_t last_harm_flag_acelp; /* harmonicity flag for ACELP @32kbps rate */
+ Word16 spike_hyst; /* Hysteresis to prevent UC after sharp energy spike */
+ Word16 last_harm_flag_acelp; /* harmonicity flag for ACELP @32kbps rate */
Word16 old_Aq_12_8_fx[M + 1]; /* Q12 old Aq[] for core switching */
Word16 old_Es_pred_fx; /* old Es_pred for core switching Q8 */
Word16 music_hysteresis_fx; /* Counter of frames after AUDIO coding mode to prevent UC */
@@ -1433,7 +1431,7 @@ typedef struct enc_core_structure
Word16 voicing0_sm_fx;
Word16 voicing_sm_fx;
Word16 LF_EnergyRatio_sm_fx;
- int16_t predecision_flag;
+ Word16 predecision_flag;
Word32 diff_sm_fx; /* Q7 */
Word32 energy_sm_fx; /* Q7 */
@@ -1492,9 +1490,9 @@ typedef struct enc_core_structure
Word16 lgBin_E_fx[L_FFT / 2]; /* Q8 per bin energy of two frames */
- int16_t sp_aud_decision0; /* 1st stage speech/music decision flag */
- int16_t sp_aud_decision1; /* 1st stage speech/music classification flag */
- int16_t sp_aud_decision2; /* 2nd stage speech/music classification flag */
+ Word16 sp_aud_decision0; /* 1st stage speech/music decision flag */
+ Word16 sp_aud_decision1; /* 1st stage speech/music classification flag */
+ Word16 sp_aud_decision2; /* 2nd stage speech/music classification flag */
/*----------------------------------------------------------------------------------*
* VAD/DTX/CNG
@@ -1505,9 +1503,9 @@ typedef struct enc_core_structure
VAD_CLDFB_HANDLE hVAD_CLDFB;
T_CldfbVadState vad_st;
- int16_t vad_flag; /* i : VAD flag */
- int16_t sharpFlag;
- int16_t localVAD; /* i : local VAD flag */
+ Word16 vad_flag; /* i : VAD flag */
+ Word16 sharpFlag;
+ Word16 localVAD; /* i : local VAD flag */
Word32 bckr_tilt_lt; /* Q16 */
Word16 lp_speech_fx; /* Q8 */
@@ -1517,7 +1515,7 @@ typedef struct enc_core_structure
Word16 voicing_old_fx;
Word16 var_SID_rate_flag_fx; /* CNG and DTX - flag for variable SID rate */
Word16 interval_SID_fx;
- int16_t active_cnt; /* counter of active frames */
+ Word16 active_cnt; /* counter of active frames */
TD_CNG_ENC_HANDLE hTdCngEnc;
@@ -1544,10 +1542,10 @@ typedef struct enc_core_structure
*----------------------------------------------------------------------------------*/
HANDLE_FD_CNG_ENC hFdCngEnc;
- int16_t fd_cng_reset_flag;
+ Word16 fd_cng_reset_flag;
Word16 last_totalNoise_fx; /* Q8 */
Word16 totalNoise_increase_hist_fx[TOTALNOISE_HIST_SIZE]; /* Q8 */
- int16_t totalNoise_increase_len;
+ Word16 totalNoise_increase_len;
/*----------------------------------------------------------------------------------*
* SC-VBR parameters
@@ -1564,7 +1562,7 @@ typedef struct enc_core_structure
Word16 old_hpfilt_out_fx;
Word32 EnergyLT_fx; /* Q(EnergyLT_fx_exp) */
Word32 Energy_Old_fx;
- int16_t TransientHangOver;
+ Word16 TransientHangOver;
HQ_ENC_HANDLE hHQ_core; /* HQ core encoder handle */
@@ -1588,21 +1586,21 @@ typedef struct enc_core_structure
Word16 lt_mean_NB_fx; /* Q11 */
Word16 lt_mean_WB_fx; /* Q11 */
Word16 lt_mean_SWB_fx; /* Q11 */
- int16_t count_WB;
- int16_t count_SWB;
- int16_t count_FB;
+ Word16 count_WB;
+ Word16 count_SWB;
+ Word16 count_FB;
/*----------------------------------------------------------------------------------*
* Channel-aware mode
*----------------------------------------------------------------------------------*/
- int16_t rf_mode; /* flag to signal the RF mode */
- int16_t rf_mode_last;
- int16_t last_rf_mode_cng;
- int16_t Opt_RF_ON;
- int16_t rf_fec_offset;
- int16_t rf_target_bits_write;
- int16_t rf_fec_indicator;
+ Word16 rf_mode; /* flag to signal the RF mode */
+ Word16 rf_mode_last;
+ Word16 last_rf_mode_cng;
+ Word16 Opt_RF_ON;
+ Word16 rf_fec_offset;
+ Word16 rf_target_bits_write;
+ Word16 rf_fec_indicator;
RF_ENC_HANDLE hRF; /* RF encoder handle */
@@ -1650,17 +1648,17 @@ typedef struct enc_core_structure
Word16 *wspeech_enc; // exp_buf_wspeech_enc
Word16 *synth;
- int16_t enableTcxLpc; /* global toggle for the TCX LPC quantizer */
- int16_t envWeighted; /* are is{p,f}_old_q[] weighted or not? */
+ Word16 enableTcxLpc; /* global toggle for the TCX LPC quantizer */
+ Word16 envWeighted; /* are is{p,f}_old_q[] weighted or not? */
- int16_t acelpEnabled; /* Flag indicating if ACELP can be used */
- int16_t tcx10Enabled; /* Flag indicating if TCX 10 can be used */
- int16_t tcx20Enabled; /* Flag indicating if TCX 20 can be used */
+ Word16 acelpEnabled; /* Flag indicating if ACELP can be used */
+ Word16 tcx10Enabled; /* Flag indicating if TCX 10 can be used */
+ Word16 tcx20Enabled; /* Flag indicating if TCX 20 can be used */
Word16 mem_wsp_enc; /* wsp vector memory */
- int16_t nb_bits_header_ace; /* number of bits for the header */
- int16_t nb_bits_header_tcx; /* number of bits for the header */
+ Word16 nb_bits_header_ace; /* number of bits for the header */
+ Word16 nb_bits_header_tcx; /* number of bits for the header */
Word16 preemph_fac; /*Preemphasis factor Q15*/
Word16 gamma; /* Q15 */
@@ -1669,7 +1667,7 @@ typedef struct enc_core_structure
TRAN_DET_HANDLE hTranDet;
TransientDetection transientDetection;
Word16 transient_info[3];
- int16_t acelpFramesCount;
+ Word16 acelpFramesCount;
Word16 prevTempFlatness_fx; /* exponent is AVG_FLAT_E Q7 in EVS */ /* Q4 in IVAS */
// float currEnergyLookAhead;
@@ -1684,34 +1682,34 @@ typedef struct enc_core_structure
Word16 parcorr[2];
Word16 parcorr_mid[2];
- int16_t lpcQuantization;
+ Word16 lpcQuantization;
Word16 numlpc;
- int16_t encoderLookahead_enc;
- int16_t encoderPastSamples_enc;
- int16_t encoderLookahead_FB;
+ Word16 encoderLookahead_enc;
+ Word16 encoderPastSamples_enc;
+ Word16 encoderLookahead_FB;
/* pitch_ol for adaptive lag window */
- int16_t old_pitch_la; /* past open loop pitch lag from look-ahead before very short stable pitch detection */
+ Word16 old_pitch_la; /* past open loop pitch lag from look-ahead before very short stable pitch detection */
Word16 old_voicing_la; /* past open loop pitch gain from look-ahead */
Word32 band_energies[2 * NB_BANDS]; /* energy in critical bands without minimum noise floor MODE2_E_MIN */
Word16 band_energies_exp; /* exponent for energy in critical bands without minimum noise floor MODE2_E_MIN */
- int16_t acelp_autocorr; /* Optimize acelp in 0 covariance or 1 correlation domain */
+ Word16 acelp_autocorr; /* Optimize acelp in 0 covariance or 1 correlation domain */
- int16_t pit_min;
- int16_t pit_fr1;
- int16_t pit_fr1b;
- int16_t pit_fr2;
- int16_t pit_max;
- int16_t pit_res_max;
+ Word16 pit_min;
+ Word16 pit_fr1;
+ Word16 pit_fr1b;
+ Word16 pit_fr2;
+ Word16 pit_max;
+ Word16 pit_res_max;
/* for FAC */
- int16_t L_frame_past;
+ Word16 L_frame_past;
/*Adaptive BPF*/
- int16_t bpf_gain_param;
+ Word16 bpf_gain_param;
Word32 mem_bpf_fx1[2 * L_FILT16k];
Word32 mem_error_bpf_fx[2 * L_FILT16k];
Word16 bpf_T[NB_SUBFR16k];
@@ -1726,24 +1724,24 @@ typedef struct enc_core_structure
Word16 noise_shift_old;
} mem_bpf_fx;
- int16_t glr;
- int16_t glr_idx[2];
+ Word16 glr;
+ Word16 glr_idx[2];
Word32 mean_gc[2]; /* Q15 */
Word16 prev_lsf4_mean; /* Qlog2(2.56) */
- int16_t glr_reset;
- int32_t last_sr_core;
+ Word16 glr_reset;
+ Word32 last_sr_core;
Word16 last_stab_fac; /* Q15 */
Word32 gain_code[NB_SUBFR16k];
/*for rate switching*/
- int16_t rate_switching_reset; /*Rate switching flag requiring a reset of memories at least partially */
- int16_t rate_switching_reset_16kHz;
+ Word16 rate_switching_reset; /*Rate switching flag requiring a reset of memories at least partially */
+ Word16 rate_switching_reset_16kHz;
- int16_t enablePlcWaveadjust;
- int16_t Tonal_SideInfo;
+ Word16 enablePlcWaveadjust;
+ Word16 Tonal_SideInfo;
- int16_t seed_acelp;
+ Word16 seed_acelp;
PLC_ENC_EVS_HANDLE hPlcExt;
@@ -1752,23 +1750,23 @@ typedef struct enc_core_structure
*----------------------------------------------------------------------------------*/
IGF_ENC_INSTANCE_HANDLE hIGFEnc; /* IGF encoder handle */
- int16_t igf;
+ Word16 igf;
/*----------------------------------------------------------------------------------*
* TEC
*----------------------------------------------------------------------------------*/
- int16_t tec_tfa;
+ Word16 tec_tfa;
TEC_ENC_HANDLE hTECEnc; /* TEC encoder handle */
- int16_t tec_flag;
- int16_t tfa_flag;
+ Word16 tec_flag;
+ Word16 tfa_flag;
Word32 tfa_enr[N_TEC_TFA_SUBFR];
/*---------------------------------------------------------------*
* IVAS parameters
*---------------------------------------------------------------*/
- int16_t tdm_LRTD_flag; /* LRTD stereo mode flag */
+ Word16 tdm_LRTD_flag; /* LRTD stereo mode flag */
Word16 cna_dirac_flag; /* CNA in DirAC flag */
/* stereo switching memories */
@@ -1813,24 +1811,24 @@ typedef struct enc_core_structure
Word16 prev_lpc_wb_fx[LPC_SHB_ORDER_WB];
Word16 prev_lsp_wb_temp_fx[LPC_SHB_ORDER_WB];
- int16_t sba_br_sw_while_no_data; /* Indicator for SBA bitrate switch while in FRAME_NO_DATA mode */
+ Word16 sba_br_sw_while_no_data; /* Indicator for SBA bitrate switch while in FRAME_NO_DATA mode */
} Encoder_State, *ENC_CORE_HANDLE;
typedef struct GainItemStr
{
- int16_t gainIndex;
+ Word16 gainIndex;
} GainItem;
typedef struct context_rc_mem_struct
{
- int16_t nbits_old;
- int16_t ctx;
+ Word16 nbits_old;
+ Word16 ctx;
Word64 bit_estimate_fx; /* Q23 */
- int16_t rateFlag;
- int16_t lastnz;
- int16_t nt_half;
+ Word16 rateFlag;
+ Word16 lastnz;
+ Word16 nt_half;
} RC_CONTEXT_MEM, *HANDLE_RC_CONTEXT_MEM;
diff --git a/lib_enc/swb_bwe_enc_fx.c b/lib_enc/swb_bwe_enc_fx.c
index 2ca0b6d74464539289879c354a593a1a69ea8621..44f415dc72a3a19a7ab46eefd21661bec8f5ce8b 100644
--- a/lib_enc/swb_bwe_enc_fx.c
+++ b/lib_enc/swb_bwe_enc_fx.c
@@ -282,7 +282,7 @@ void wb_bwe_enc_ivas_fx(
*-------------------------------------------------------------------*/
void swb_bwe_enc_ivas_fx(
Encoder_State *st_fx, /* i/o: encoder state structure */
- const int16_t last_element_mode, /* i : last element mode */
+ const Word16 last_element_mode, /* i : last element mode */
Word16 *old_input_12k8_fx, /* i : input signal @12.8kHz for SWB BWE */
Word16 *old_input_16k_fx, /* i : input signal @16kHz for SWB BWE */
const Word16 *old_syn_12k8_16k_fx, /* i : ACELP core synthesis at 12.8kHz or 16kHz */
@@ -586,7 +586,7 @@ void swb_bwe_enc_ivas_fx(
IF( EQ_16( st_fx->L_frame, L_FRAME16k ) )
{
SWB_BWE_encoding_ivas_fx( st_fx, old_input_fx, old_input_lp_fx, new_input_hp_fx, old_syn_12k8_16k_fx, yorig_32,
- SWB_fenv_fx, tilt_nb_fx, 80, Q_slb_speech, Q_shb, new_input_fx_exp, Q_synth );
+ SWB_fenv_fx, tilt_nb_fx, 80, Q_slb_speech, Q_shb, new_input_fx_exp, new_input_fx_exp );
}
ELSE
{
@@ -3456,11 +3456,12 @@ static Word16 SWB_BWE_encoding_ivas_fx(
global_gain_fx = L_shr( global_gain_fx, 1 ); /*2*Q_shb */
- Copy_Scale_sig32_16( yos_fx, yos_fx_16, inner_frame, 0 );
- mode = FD_BWE_class_fx( yos_fx_16, global_gain_fx, tilt_nb_fx, sub( Q_synth, Q16 ), Q_shb, st_fx );
+ scale = s_min( L_norm_arr( yos_fx, inner_frame ), sub( Q27, Q_synth ) /* To accomodate 10 in Q_synth*/ );
+ Copy_Scale_sig32_16( yos_fx, yos_fx_16, inner_frame, scale );
+ mode = FD_BWE_class_fx( yos_fx_16, global_gain_fx, tilt_nb_fx, sub( add( Q_synth, scale ), Q16 ), Q_shb, st_fx );
push_indice( hBstr, IND_SWB_CLASS, mode, 2 );
- energy_control_ivas_fx( st_fx, ACELP_CORE, mode, -1, yos_fx_16, st_offset, energy_factor_fx, sub( Q_synth_lf, Q16 ) );
+ energy_control_ivas_fx( st_fx, ACELP_CORE, mode, -1, yos_fx_16, st_offset, energy_factor_fx, sub( add( Q_synth_lf, scale ), Q16 ) );
FOR( n_band = 0; n_band < SWB_FENV; n_band++ )
{
diff --git a/lib_enc/swb_pre_proc_fx.c b/lib_enc/swb_pre_proc_fx.c
index 3bad5fa7f9c3acf87b42ae6490fa49928adc7424..5c96a2f297d8eefba4346fa564f850c13f5b0b9a 100644
--- a/lib_enc/swb_pre_proc_fx.c
+++ b/lib_enc/swb_pre_proc_fx.c
@@ -10,7 +10,6 @@
#include "rom_com.h"
#include "stl.h"
#include "prot_fx.h" /* Function prototypes */
-#include "ivas_prot.h" /* Function prototypes */
#include "ivas_prot_fx.h" /* Function prototypes */
#include "prot_fx_enc.h" /* Function prototypes */
#include "basop_util.h"
@@ -1390,7 +1389,7 @@ void swb_pre_proc_ivas_fx(
}
/* Dirty downsampling to match Nyquist to upper frequency limit of target */
- lerp( st->input_fx, new_swb_speech, L_resamp, (int16_t) Mpy_32_32( input_Fs, one_by_50_Q31 ) );
+ lerp( st->input_fx, new_swb_speech, L_resamp, extract_l( Mpy_32_32( input_Fs, one_by_50_Q31 ) ) );
/* flip the spectrum */
Copy( new_swb_speech, spchTmp, L_resamp );
diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c
index 61ca9b10168fdd7161394559c0817a35d76b259a..ba8ee5aa8741d9cd5a64d4d2ecccc3113ca32ef7 100644
--- a/lib_enc/swb_tbe_enc_fx.c
+++ b/lib_enc/swb_tbe_enc_fx.c
@@ -10,7 +10,6 @@
#include "rom_com.h"
#include "prot_fx.h" /* Function prototypes */
#include "prot_fx_enc.h" /* Function prototypes */
-#include "ivas_prot.h" /* Function prototypes */
#include "stl.h"
#include "ivas_prot_fx.h"
diff --git a/lib_enc/tcx_utils_enc_fx.c b/lib_enc/tcx_utils_enc_fx.c
index 2a6f040ac485f24aaf0307d539fa41ee21eb3840..ce7f0e6a6e446c94e058f7d9f2336cda1d28a8a7 100644
--- a/lib_enc/tcx_utils_enc_fx.c
+++ b/lib_enc/tcx_utils_enc_fx.c
@@ -48,14 +48,12 @@ void ComputeSpectrumNoiseMeasure_fx( const Word32 *powerSpec,
Word8 *noiseFlags,
Word16 lowpassLine )
{
- Word16 i, lastTone;
+ Word16 i, lastTone, j;
Word32 s, c;
Word16 tmp16;
Word32 tmp1, tmp2 = 0; /* initialization only to avoid compiler warning, not counted */
move32();
- int j;
-
IF( resetMemory != 0 )
{
FOR( i = 0; i < lowpassLine; i++ )
@@ -81,7 +79,7 @@ void ComputeSpectrumNoiseMeasure_fx( const Word32 *powerSpec,
i = sub( startLine, 1 );
s = 0;
move32();
- for ( j = -7; j < 8; j++ )
+ FOR( j = -7; j < 8; j++ )
{
s = L_add( s, L_shr( powerSpec[i + j], 4 ) );
}
@@ -3736,7 +3734,6 @@ void ProcessIGF_fx(
}
}
- // IVAS_CODE_BITSTREAM
bsStart = hBstr->next_ind_fx;
move16();
@@ -3751,21 +3748,11 @@ void ProcessIGF_fx(
IGFEncWriteBitstream_fx( hInstance, st->hBstr, &hInstance->infoTotalBitsPerFrameWritten, igfGridIdx, isIndepFlag );
}
-#ifndef IVAS_CODE_BITSTREAM
bsBits = sub( hBstr->next_ind_fx, bsStart );
IF( !isTCX20 )
{
IGFEncConcatenateBitstream_fx( hInstance, bsBits, &hBstr->next_ind_fx, &hBstr->nb_bits_tot, hBstr->ind_list );
}
-#else
- PMT( "New bit stream implementation to be checked" )
- bsBits = sub( hBstr->next_ind_fx, bsStart );
- IF( !isTCX20 )
- {
- IGFEncConcatenateBitstream_fx( hInstance, bsBits, &hBstr->next_ind_fx, &hBstr->nb_bits_tot_fx, hBstr->ind_list_fx );
- }
-
-#endif
}
void attenuateNbSpectrum_fx( Word16 L_frame, Word32 *spectrum )
diff --git a/lib_enc/transient_detection_fx.c b/lib_enc/transient_detection_fx.c
index 82d24ceba3641cc2f94e8f21c4142bd53f75b6f7..3c88ca2244c8da1e362e90c87c6c80c8b4b5eb2e 100644
--- a/lib_enc/transient_detection_fx.c
+++ b/lib_enc/transient_detection_fx.c
@@ -1288,7 +1288,7 @@ static void UpdateDelayBuffer( Word16 const *input, Word16 nSamplesAvailable, De
move16();
nDelay = pDelayBuffer->nDelay;
- assert( ( nDelay >= 0 ) && ( nDelay <= (int) sizeof( pDelayBuffer->buffer ) / (int) sizeof( pDelayBuffer->buffer[0] ) ) );
+ assert( ( nDelay >= 0 ) && ( nDelay <= (Word32) sizeof( pDelayBuffer->buffer ) / (Word32) sizeof( pDelayBuffer->buffer[0] ) ) );
assert( nSamplesAvailable <= NSUBBLOCKS * pDelayBuffer->nSubblockSize );
/* If this is not the last frame */
IF( EQ_16( nSamplesAvailable, imult1616( NSUBBLOCKS, pDelayBuffer->nSubblockSize ) ) )
@@ -1307,7 +1307,7 @@ static void UpdateSubblockEnergies( Word16 const *input, Word16 nSamplesAvailabl
Word16 i;
- assert( ( pSubblockEnergies->nDelay >= 0 ) && ( pSubblockEnergies->nDelay + NSUBBLOCKS <= (int) sizeof( pSubblockEnergies->subblockNrg ) / (int) sizeof( pSubblockEnergies->subblockNrg[0] ) ) );
+ assert( ( pSubblockEnergies->nDelay >= 0 ) && ( pSubblockEnergies->nDelay + NSUBBLOCKS <= (Word32) sizeof( pSubblockEnergies->subblockNrg ) / (Word32) sizeof( pSubblockEnergies->subblockNrg[0] ) ) );
assert( pSubblockEnergies->nPartialDelay <= pSubblockEnergies->pDelayBuffer->nDelay );
/* At least one block delay is required when subblock energy change is required */
assert( pSubblockEnergies->nDelay >= 1 );
@@ -1332,7 +1332,7 @@ static void UpdateSubblockEnergies_ivas_fx( Word16 const *input, Word16 nSamples
Word16 i;
- assert( ( pSubblockEnergies->nDelay >= 0 ) && ( pSubblockEnergies->nDelay + NSUBBLOCKS <= (int) sizeof( pSubblockEnergies->subblockNrg ) / (int) sizeof( pSubblockEnergies->subblockNrg[0] ) ) );
+ assert( ( pSubblockEnergies->nDelay >= 0 ) && ( pSubblockEnergies->nDelay + NSUBBLOCKS <= (Word32) sizeof( pSubblockEnergies->subblockNrg ) / (Word32) sizeof( pSubblockEnergies->subblockNrg[0] ) ) );
assert( pSubblockEnergies->nPartialDelay <= pSubblockEnergies->pDelayBuffer->nDelay );
/* At least one block delay is required when subblock energy change is required */
assert( pSubblockEnergies->nDelay >= 1 );
diff --git a/lib_isar/isar_lc3plus_dec.c b/lib_isar/isar_lc3plus_dec.c
index 17143ec3b41f23940fce911b475d76bf22ebb1df..fd1adb157297496d5ee95e28015732691cbcbd51 100644
--- a/lib_isar/isar_lc3plus_dec.c
+++ b/lib_isar/isar_lc3plus_dec.c
@@ -33,7 +33,7 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
+#include "ivas_prot_fx.h"
#include "isar_lc3plus_dec.h"
#include "isar_lc3plus_common.h"
#include "lc3.h"
diff --git a/lib_isar/isar_prot.h b/lib_isar/isar_prot.h
index 82fbe631dabf4912b3869ef148ca9ffe1639db49..90a9d2763af145b16d1fc659f0f5fd1921c66b55 100644
--- a/lib_isar/isar_prot.h
+++ b/lib_isar/isar_prot.h
@@ -445,6 +445,29 @@ void ivas_calculate_abs_fx( Word32 re_fx, Word16 exp_re, Word32 im_fx, Word16 ex
void ivas_calculate_rabs_fx( Word32 re_fx, Word16 exp_re, Word32 *out_fx, Word16 *exp_out );
+#define IVAS_CMULT_FLOAT( in1_re, in1_im, in2_re, in2_im, out1_re, out1_im ) \
+ out1_re = ( in1_re * in2_re ) - ( in1_im * in2_im ); \
+ out1_im = ( in1_re * in2_im ) + ( in2_re * in1_im );
+
+#define IVAS_CALCULATE_ABS( re, im, out ) \
+ out = sqrtf( ( re * re ) + ( im * im ) );
+
+#define IVAS_CALCULATE_RABS( re, out ) \
+ out = sqrtf( re * re );
+
+#define IVAS_CALCULATE_SQ_ABS( re, im, out ) \
+ out = (float) ( ( re * re ) + ( im * im ) );
+
+#define IVAS_RMULT_DOUBLE( in1_re, in2_re, out1_re ) \
+ out1_re = ( in1_re * in2_re );
+
+#define IVAS_CALCULATE_SQ_ABS_N( re, out ) \
+ out = (float) ( re * re );
+
+#define IVAS_RMULT_FLOAT( in1_re, in2_re, out1_re ) \
+ out1_re = ( in1_re * in2_re );
+
+
/* clang-format on */
#endif /* IVAS_PROT_REND_H */
diff --git a/lib_isar/isar_splitRend_lcld_dec.c b/lib_isar/isar_splitRend_lcld_dec.c
index d96e5b3ec2f461ad1d401f05fcd13389275580b3..ddf9515b9d59e71dc4c762e748a0cf1c9572a42c 100644
--- a/lib_isar/isar_splitRend_lcld_dec.c
+++ b/lib_isar/isar_splitRend_lcld_dec.c
@@ -34,7 +34,7 @@
#include "options.h"
#ifdef SPLIT_REND_WITH_HEAD_ROT
#include "isar_prot.h"
-#include "ivas_prot.h"
+#include "ivas_prot_fx.h"
#include "prot_fx.h"
#include "prot_fx.h"
//#include "control.h"
diff --git a/lib_isar/isar_splitRend_lcld_enc.c b/lib_isar/isar_splitRend_lcld_enc.c
index 15ed27dfd20bb4cb58e5f6ea775faa7cf215a15d..6804e97a408d1d52d0b65a80b8262c220b9a07b5 100644
--- a/lib_isar/isar_splitRend_lcld_enc.c
+++ b/lib_isar/isar_splitRend_lcld_enc.c
@@ -34,7 +34,7 @@
#include "options.h"
#ifdef SPLIT_REND_WITH_HEAD_ROT
#include "isar_prot.h"
-#include "ivas_prot.h"
+#include "ivas_prot_fx.h"
#ifdef DEBUGGING
#include "debug.h"
#endif
diff --git a/lib_isar/isar_splitRendererPLC.c b/lib_isar/isar_splitRendererPLC.c
index c5f5300afd41a46db24722f8e89fbf9a70688086..e3a0ce0e8b4bff86eafd047de36493b2893a57bb 100644
--- a/lib_isar/isar_splitRendererPLC.c
+++ b/lib_isar/isar_splitRendererPLC.c
@@ -34,7 +34,7 @@
#include "options.h"
#ifdef SPLIT_REND_WITH_HEAD_ROT
#include
-#include "ivas_prot.h"
+#include "ivas_prot_fx.h"
#include "prot_fx.h"
#include "isar_cnst.h"
#include "isar_prot.h"
diff --git a/lib_isar/isar_splitRendererPost.c b/lib_isar/isar_splitRendererPost.c
index f8cf7c571351df02ece9ad5b3fd98637abad2234..ac04868328d22f9d0c84fb5b4edc0616ae2d287b 100644
--- a/lib_isar/isar_splitRendererPost.c
+++ b/lib_isar/isar_splitRendererPost.c
@@ -37,7 +37,6 @@
#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG
#include
#endif
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "prot_fx.h"
#include "isar_rom_post_rend.h"
@@ -87,11 +86,11 @@ ivas_error isar_splitBinPostRendOpen(
FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
{
- IF( ( error = openCldfb_ivas_fx( &( hBinRend->cldfbSyn[ch] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK )
+ IF( ( error = openCldfb_ivas_fx( &( hBinRend->cldfbSyn[ch] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK )
{
return error;
}
- IF( ( error = openCldfb_ivas_fx( &( hBinRend->cldfbAna[ch] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK )
+ IF( ( error = openCldfb_ivas_fx( &( hBinRend->cldfbAna[ch] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK )
{
return error;
}
@@ -102,7 +101,7 @@ ivas_error isar_splitBinPostRendOpen(
{
for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
{
- if ( ( error = openCldfb( &( hBinRend->cldfbSynReconsBinDec[i][ch] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK )
+ if ( ( error = openCldfb( &( hBinRend->cldfbSynReconsBinDec[i][ch] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK )
{
return error;
}
diff --git a/lib_isar/isar_splitRendererPre.c b/lib_isar/isar_splitRendererPre.c
index 74484eb62f96ae0fde8b56bc87c22e1ef76079eb..0d2515e35b1f24d9d670a93017fcc03183db961a 100644
--- a/lib_isar/isar_splitRendererPre.c
+++ b/lib_isar/isar_splitRendererPre.c
@@ -37,7 +37,6 @@
#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG
#include
#endif
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "prot_fx.h"
#include "lib_isar_pre_rend.h"
diff --git a/lib_isar/isar_splitRenderer_utils.c b/lib_isar/isar_splitRenderer_utils.c
index 0c4238ac6e7bac8f0f57199345e22a337a745d59..7f21a40c7cdafc2f51b4c7cf8e7f4d0f1305d57c 100644
--- a/lib_isar/isar_splitRenderer_utils.c
+++ b/lib_isar/isar_splitRenderer_utils.c
@@ -34,7 +34,7 @@
#include "options.h"
#ifdef SPLIT_REND_WITH_HEAD_ROT
#include
-#include "ivas_prot.h"
+#include "ivas_prot_fx.h"
#include "prot_fx.h"
#include "cnst.h"
#include "isar_cnst.h"
diff --git a/lib_isar/lib_isar_post_rend.c b/lib_isar/lib_isar_post_rend.c
index 57317269ae05ea2e70d533e69534515b07228246..4e302cfa922187029188e490573ba6505e962da2 100644
--- a/lib_isar/lib_isar_post_rend.c
+++ b/lib_isar/lib_isar_post_rend.c
@@ -36,7 +36,6 @@
#include "isar_stat.h"
#include "isar_prot.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
#include "prot_fx.h"
#ifndef SPLIT_REND_WITH_HEAD_ROT
@@ -48,7 +47,7 @@ int32_t ISAR_POST_REND_void_func( void )
#else
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include
#include
#include "wmc_auto.h"
diff --git a/lib_isar/lib_isar_pre_rend.c b/lib_isar/lib_isar_pre_rend.c
index 367e0be5b5495c406873b95ce452ff09bf6063d6..49e52ad97f14bb5509d797d18e019f664d89eee4 100644
--- a/lib_isar/lib_isar_pre_rend.c
+++ b/lib_isar/lib_isar_pre_rend.c
@@ -34,7 +34,7 @@
#include
#include "options.h"
#include
-#include "ivas_prot.h"
+#include "ivas_prot_fx.h"
#include "prot_fx.h"
#include "prot_fx.h"
#include "isar_cnst.h"
@@ -159,7 +159,7 @@ ivas_error ISAR_PRE_REND_open(
{
if ( ( error = openCldfb_ivas_fx( &( hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] ),
CLDFB_ANALYSIS,
- OutSampleRate, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK )
+ OutSampleRate, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK )
{
return error;
}
@@ -167,7 +167,7 @@ ivas_error ISAR_PRE_REND_open(
FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
{
- IF( ( error = openCldfb_ivas_fx( &( hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] ), CLDFB_SYNTHESIS, OutSampleRate, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK )
+ IF( ( error = openCldfb_ivas_fx( &( hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] ), CLDFB_SYNTHESIS, OutSampleRate, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK )
{
return error;
}
diff --git a/lib_rend/ivas_allrad_dec_fx.c b/lib_rend/ivas_allrad_dec_fx.c
index 008e27d6c94201ddd9a4f3df0a9aa9d91b2ce475..5023bee34db1aafdbf965096cbbc3722f62ec191 100644
--- a/lib_rend/ivas_allrad_dec_fx.c
+++ b/lib_rend/ivas_allrad_dec_fx.c
@@ -36,8 +36,7 @@
#include
#include
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_rom_rend.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_rend/ivas_crend_fx.c b/lib_rend/ivas_crend_fx.c
index 5be6cc08198011d23143be44ae96869d8dbd1096..8daeb7cf4730927f6261064ce58835af2b67319b 100644
--- a/lib_rend/ivas_crend_fx.c
+++ b/lib_rend/ivas_crend_fx.c
@@ -34,8 +34,7 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_cnst.h"
#include "ivas_rom_rend.h"
#include "ivas_rom_binaural_crend_head.h"
diff --git a/lib_rend/ivas_dirac_ana_fx.c b/lib_rend/ivas_dirac_ana_fx.c
index 9cc764afb05e3167bf306a30800a2c5d82a5e74b..8124c4967cdeac890fdaf3c55d94f20489afe838 100644
--- a/lib_rend/ivas_dirac_ana_fx.c
+++ b/lib_rend/ivas_dirac_ana_fx.c
@@ -33,8 +33,7 @@
#include "options.h"
#include
#include "ivas_cnst.h"
-#include "ivas_prot_rend.h"
-#include "ivas_prot.h"
+#include "ivas_prot_rend_fx.h"
#include "prot_fx.h"
#include "ivas_stat_rend.h"
#include "ivas_rom_com.h"
@@ -108,7 +107,7 @@ ivas_error ivas_dirac_ana_open_fx(
move16();
FOR( i = 0; i < hDirAC->num_Cldfb_instances; i++ )
{
- IF( NE_32( ( error = openCldfb_ivas_fx( &( hDirAC->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &( hDirAC->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c
index dbbe5fe85956ed7dac62fb434b509ae7bf6198a4..b224564f3bad4430481149ae5c789ec66a6a7fe5 100644
--- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c
+++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c
@@ -35,8 +35,7 @@
#include
#include
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_cnst.h"
#include "ivas_rom_binauralRenderer.h"
#include "ivas_rom_binaural_crend_head.h"
@@ -83,8 +82,8 @@ Word16 slot_fx[4] = { 32767, 16384, 10922, 8192 };
typedef struct hrtfGainCache
{
- int16_t azi;
- int16_t ele;
+ Word16 azi;
+ Word16 ele;
Word32 shVec_fx[HRTF_SH_CHANNELS];
@@ -92,13 +91,13 @@ typedef struct hrtfGainCache
typedef struct parambin_rend_config_data
{
- int16_t separateCenterChannelRendering;
+ Word16 separateCenterChannelRendering;
IVAS_FORMAT ivas_format;
MC_MODE mc_mode;
- int32_t ivas_total_brate;
- int16_t nchan_transport;
+ Word32 ivas_total_brate;
+ Word16 nchan_transport;
Word32 qualityBasedSmFactor_fx; /* Q31 */
- int16_t processReverb;
+ Word16 processReverb;
ISM_MODE ism_mode;
} PARAMBIN_REND_CONFIG, *PARAMBIN_REND_CONFIG_HANDLE;
@@ -119,7 +118,7 @@ static void ivas_dirac_dec_binaural_formulate_target_covariance_matrices_fx( DIR
static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matrices_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, PARAMBIN_REND_CONFIG_HANDLE hConfig, Word32 inRe_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q*/, Word32 inIm_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q*/, Word32 Rmat_fx[3][3] /*Q30*/, const Word16 subframe, const Word16 isHeadtracked, const MASA_ISM_DATA_HANDLE hMasaIsmData, Word16 q );
#endif
-static void ivas_dirac_dec_binaural_determine_processing_matrices_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, PARAMBIN_REND_CONFIG_HANDLE hConfig, const int16_t max_band_decorr, Word32 Rmat[3][3] /*Q30*/, const Word16 subframe, const Word16 isHeadtracked, const Word16 nchanSeparateChannels, const MASA_ISM_DATA_HANDLE hMasaIsmData );
+static void ivas_dirac_dec_binaural_determine_processing_matrices_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, PARAMBIN_REND_CONFIG_HANDLE hConfig, const Word16 max_band_decorr, Word32 Rmat[3][3] /*Q30*/, const Word16 subframe, const Word16 isHeadtracked, const Word16 nchanSeparateChannels, const MASA_ISM_DATA_HANDLE hMasaIsmData );
#ifdef SPLIT_REND_WITH_HEAD_ROT
static void ivas_dirac_dec_binaural_process_output_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, HANDLE_CLDFB_FILTER_BANK cldfbSynDec[MAX_OUTPUT_CHANNELS], Word32 *output_fx[] /*q_out*/, Word16 *q_out, Word32 inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, Word32 inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, const Word16 q_inp, const Word16 max_band_decorr, const Word16 numInChannels, const Word16 processReverb, const Word16 subframe, const Word16 q_mat, Word32 outRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 outIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 reverbRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 reverbIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 decorrRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 decorrIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word16 *Q_inp_mix, const Word8 recompute );
@@ -153,8 +152,8 @@ static void matrixTransp2Mul_fx(
Word32 Bim[BINAURAL_CHANNELS][BINAURAL_CHANNELS] /*q_B*/,
Word16 *q_B,
#ifdef FIX_1072_SPEEDUP_matrixTransp2Mul_fx
- int Ascale,
- int Bscale,
+ Word32 Ascale,
+ Word32 Bscale,
#endif
Word32 outRe[BINAURAL_CHANNELS][BINAURAL_CHANNELS] /*q_out*/,
Word32 outIm[BINAURAL_CHANNELS][BINAURAL_CHANNELS] /*q_out*/,
@@ -4914,8 +4913,8 @@ static void matrixTransp2Mul_fx(
Word32 Bim_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], /*q_B*/
Word16 *q_B,
#ifdef FIX_1072_SPEEDUP_matrixTransp2Mul_fx
- int Ascale,
- int Bscale,
+ Word32 Ascale,
+ Word32 Bscale,
#endif
Word32 outRe_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], /*q_out*/
Word32 outIm_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], /*q_out*/
diff --git a/lib_rend/ivas_dirac_decorr_dec_fx.c b/lib_rend/ivas_dirac_decorr_dec_fx.c
index 32803f6c3d0457e8eabb32ba7797ed79abf048d4..1ffe0da7424b728fc644a9f70c40b1d3a50eb587 100644
--- a/lib_rend/ivas_dirac_decorr_dec_fx.c
+++ b/lib_rend/ivas_dirac_decorr_dec_fx.c
@@ -36,8 +36,7 @@
#include
#include "cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_cnst.h"
#include "ivas_rom_rend.h"
#include "wmc_auto.h"
@@ -67,7 +66,7 @@
*------------------------------------------------------------------------*/
static void get_lattice_coeffs_fx( const Word16 band_index, const Word16 channel_index, Word16 *lattice_coeffs );
-static void lattice2allpass_fx( const int16_t filter_length, const Word16 *lattice_coeffs_fx, Word16 *filter_coeffs_num_real_fx, Word16 *filter_coeffs_den_real_fx );
+static void lattice2allpass_fx( const Word16 filter_length, const Word16 *lattice_coeffs_fx, Word16 *filter_coeffs_num_real_fx, Word16 *filter_coeffs_den_real_fx );
/*-------------------------------------------------------------------------
* ivas_dirac_dec_decorr_open()
@@ -1280,7 +1279,7 @@ static void get_lattice_coeffs_fx(
/* convert lattice filter coeffs to all pass transfer function coeffs */
static void lattice2allpass_fx(
- const int16_t filter_length, // Q0
+ const Word16 filter_length, // Q0
const Word16 *lattice_coeffs_fx, // Q15
Word16 *filter_coeffs_num_real_fx, // Q12
Word16 *filter_coeffs_den_real_fx ) // Q12
diff --git a/lib_rend/ivas_dirac_onsets_dec_fx.c b/lib_rend/ivas_dirac_onsets_dec_fx.c
index 4eae9c28650c2905c447e6a01d5525dd52625466..80adebfdd18661e0160e31f6c753bfd60cd6930a 100644
--- a/lib_rend/ivas_dirac_onsets_dec_fx.c
+++ b/lib_rend/ivas_dirac_onsets_dec_fx.c
@@ -35,8 +35,7 @@
#include "options.h"
#include "cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
#include "ivas_rom_dec.h"
diff --git a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c
index 29eac3635f2dd1e322ec799b8a32a7179caeb82d..6cf11887e247d3145595ff8c24455f75a7cf10f9 100644
--- a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c
+++ b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c
@@ -36,8 +36,7 @@
#include
#include "cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_stat_dec.h"
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
diff --git a/lib_rend/ivas_dirac_rend_fx.c b/lib_rend/ivas_dirac_rend_fx.c
index cc8e4d8bd4027dc89f36094cb873c73bb4833388..031a398559667c2aa3cf1bc56a6390463e556889 100644
--- a/lib_rend/ivas_dirac_rend_fx.c
+++ b/lib_rend/ivas_dirac_rend_fx.c
@@ -36,8 +36,7 @@
#include
#include "cnst.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_cnst.h"
#include "ivas_rom_rend.h"
#include "wmc_auto.h"
@@ -872,6 +871,8 @@ ivas_error ivas_dirac_alloc_mem_fx(
}
hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f_len = imult1616( imult1616( 2 * MAX_PARAM_SPATIAL_SUBFRAMES, num_protos_dir ), num_freq_bands );
move16();
+ hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f_q = Q31;
+ move16();
IF( hDirACRend->proto_signal_decorr_on )
{
@@ -1692,7 +1693,7 @@ void protoSignalComputation2_fx(
Word32 min_sum_total_ratio_fx, min_sum_total_ratio_db_fx;
Word32 sum_total_ratio_fx[MASA_SUM_FREQ_RANGE_BINS];
Word16 q_sum_total_ratio;
- Word32 a_fx, b_fx;
+ Word32 a_fx, b_fx, a2_fx, b2_fx;
Word16 interpolatorSpaced_fx, interpolatorDmx_fx;
Word32 tempSpaced_fx, tempDmx_fx;
Word16 q_shift, min_q_shift, exp, q_temp, temp_q_shift, q_temp2;
@@ -1700,6 +1701,7 @@ void protoSignalComputation2_fx(
Word64 W_tmp1, W_tmp2;
Word64 reference_power_64fx[CLDFB_NO_CHANNELS_MAX];
Word16 q_reference_power_64fx;
+ Word16 head_room, q_Left_Right_power;
/* Calculate maximum possible shift for the buffers RealBuffer_fx and ImagBuffer_fx */
min_q_shift = Q31;
move16();
@@ -1866,8 +1868,10 @@ void protoSignalComputation2_fx(
a_fx = 21474836; /*0.01 in Q31*/ /* Temporal smoothing coefficient */
move32();
b_fx = L_sub( ONE_IN_Q31, a_fx ); /* Temporal smoothing coefficient q31*/
- // a2_fx = 214748365; /*0.1 in Q31*/ /* Temporal smoothing coefficient */
- // b2_fx = L_sub( ONE_IN_Q31, a2_fx ); /* Temporal smoothing coefficient */
+ move32();
+ a2_fx = 214748365; /*0.1 in Q31*/ /* Temporal smoothing coefficient */
+ move32();
+ b2_fx = L_sub( ONE_IN_Q31, a2_fx ); /* Temporal smoothing coefficient */
IF( stereo_type_detect->interpolator > 0 )
{
@@ -1890,6 +1894,23 @@ void protoSignalComputation2_fx(
q_temp = sub( add( add( q_cldfb, min_q_shift ), add( q_cldfb, min_q_shift ) ), 31 );
q_temp2 = sub( add( add( q_cldfb, temp_q_shift ), add( q_cldfb, temp_q_shift ) ), 31 );
+ head_room = 63;
+ move16();
+ FOR( l = 0; l < num_freq_bands; l++ )
+ {
+ re1 = L_shl( RealBuffer_fx[0][0][l], min_q_shift ); // q_cldfb+min_q_shift
+ im1 = L_shl( ImagBuffer_fx[0][0][l], min_q_shift ); // q_cldfb+min_q_shift
+ re2 = L_shl( RealBuffer_fx[1][0][l], min_q_shift ); // q_cldfb+min_q_shift
+ im2 = L_shl( ImagBuffer_fx[1][0][l], min_q_shift ); // q_cldfb+min_q_shift
+
+ W_tmp1 = W_add( W_mult0_32_32( re1, re1 ), W_mult0_32_32( im1, im1 ) );
+ W_tmp2 = W_add( W_mult0_32_32( re2, re2 ), W_mult0_32_32( im2, im2 ) );
+
+ head_room = s_min( head_room, W_norm( W_add( W_tmp1, W_tmp2 ) ) );
+ }
+ head_room = sub( head_room, find_guarded_bits_fx( num_freq_bands ) );
+ q_Left_Right_power = add( shl( add( q_cldfb, min_q_shift ), 1 ), sub( head_room, 32 ) );
+
FOR( l = 0; l < num_freq_bands; l++ )
{
re1 = L_shl( RealBuffer_fx[0][0][l], min_q_shift ); // q_cldfb+min_q_shift
@@ -1904,26 +1925,26 @@ void protoSignalComputation2_fx(
/* Compute reference power */
// Left_power_fx = Madd_32_32( Mpy_32_32( re1, re1 ), im1, im1 );
W_tmp1 = W_add( W_mult0_32_32( re1, re1 ), W_mult0_32_32( im1, im1 ) ); // 2*(q_cldfb+min_q_shift)
- Left_power_fx = W_extract_l( W_shr( W_tmp1, 31 ) );
+ Left_power_fx = W_extract_h( W_shl( W_tmp1, head_room ) ); // q_Left_Right_power
// Right_power_fx = Madd_32_32( Mpy_32_32( re2, re2 ), im2, im2 );
W_tmp2 = W_add( W_mult0_32_32( re2, re2 ), W_mult0_32_32( im2, im2 ) ); // 2*(q_cldfb+min_q_shift)
- Right_power_fx = W_extract_l( W_shr( W_tmp2, 31 ) );
+ Right_power_fx = W_extract_h( W_shl( W_tmp2, head_room ) ); // q_Left_Right_power
// reference_power_fx[l] = L_add( Left_power_fx, Right_power_fx );
reference_power_64fx[l] = W_add( W_tmp1, W_tmp2 ); // 2*(q_cldfb+min_q_shift)
move64();
- left_bb_power_fx = L_add( left_bb_power_fx, Left_power_fx ); // 2*(q_cldfb+min_q_shift) -31
- right_bb_power_fx = L_add( right_bb_power_fx, Right_power_fx ); // 2*(q_cldfb+min_q_shift) -31
+ left_bb_power_fx = L_add( left_bb_power_fx, Left_power_fx ); // q_Left_Right_power
+ right_bb_power_fx = L_add( right_bb_power_fx, Right_power_fx ); // q_Left_Right_power
// total_bb_power_fx = L_add( total_bb_power_fx, reference_power_fx[l] );
- total_bb_power_fx = L_add( total_bb_power_fx, W_extract_l( W_shr( reference_power_64fx[l], 31 ) ) ); // 2*(q_cldfb+min_q_shift) -31
+ total_bb_power_fx = L_add( total_bb_power_fx, W_extract_h( W_shl( reference_power_64fx[l], head_room ) ) ); // q_Left_Right_power
IF( GT_16( l, MASA_HI_FREQ_START_BIN ) )
{
- left_hi_power_fx = L_add( left_hi_power_fx, Left_power_fx ); // 2*(q_cldfb+min_q_shift) -31
- right_hi_power_fx = L_add( right_hi_power_fx, Right_power_fx ); // 2*(q_cldfb+min_q_shift) -31
+ left_hi_power_fx = L_add( left_hi_power_fx, Left_power_fx ); // q_Left_Right_power
+ right_hi_power_fx = L_add( right_hi_power_fx, Right_power_fx ); // q_Left_Right_power
// total_hi_power_fx = L_add( total_hi_power_fx, reference_power_fx[l] );
- total_hi_power_fx = L_add( total_hi_power_fx, W_extract_l( W_shr( reference_power_64fx[l], 31 ) ) ); // 2*(q_cldfb+min_q_shift) -31
+ total_hi_power_fx = L_add( total_hi_power_fx, W_extract_h( W_shl( reference_power_64fx[l], head_room ) ) ); // q_Left_Right_power
}
IF( LT_16( l, s_min( num_freq_bands, MASA_SUM_FREQ_RANGE_BINS ) ) )
@@ -1960,12 +1981,17 @@ void protoSignalComputation2_fx(
test();
IF( ( stereo_type_detect->sum_power_fx[l] == 0 ) && ( stereo_type_detect->total_power_fx[l] == 0 ) )
{
- sum_total_ratio_fx[l] = MAX_16; // q15
+ sum_total_ratio_fx[l] = MAX_32; // q15
+ move32();
+ }
+ ELSE IF( stereo_type_detect->total_power_fx[l] == 0 )
+ {
+ sum_total_ratio_fx[l] = MAX_32; // q15
move32();
}
ELSE
{
- sum_total_ratio_fx[l] = BASOP_Util_Divide3232_Scale( stereo_type_detect->sum_power_fx[l], L_add( stereo_type_detect->total_power_fx[l], EPSILON_FX ), &exp ); // 15-(exp+s_min( stereo_type_detect->q_total_power, q_temp )-s_min( stereo_type_detect->q_sum_power, q_temp2 ))
+ sum_total_ratio_fx[l] = BASOP_Util_Divide3232_Scale( stereo_type_detect->sum_power_fx[l], stereo_type_detect->total_power_fx[l], &exp ); // 15-(exp+s_min( stereo_type_detect->q_total_power, q_temp )-s_min( stereo_type_detect->q_sum_power, q_temp2 ))
move32();
q_sum_total_ratio = add( sub( 15, exp ), sub( s_min( stereo_type_detect->q_sum_power, q_temp2 ), s_min( stereo_type_detect->q_total_power, q_temp ) ) );
sum_total_ratio_fx[l] = L_shl( sum_total_ratio_fx[l], sub( Q15, q_sum_total_ratio ) ); // q15
@@ -2237,45 +2263,45 @@ void protoSignalComputation2_fx(
}
}
- temp = Mpy_32_32( a_fx, left_bb_power_fx ); // 2*(q_cldfb+min_q_shift) -31
- IF( LT_16( q_temp, stereo_type_detect->q_left_bb_power ) )
+ temp = Mpy_32_32( a_fx, left_bb_power_fx ); // q_Left_Right_power
+ IF( LT_16( q_Left_Right_power, stereo_type_detect->q_left_bb_power ) )
{
- stereo_type_detect->left_bb_power_fx = L_add( temp, L_shr( Mpy_32_32( b_fx, stereo_type_detect->left_bb_power_fx ), sub( stereo_type_detect->q_left_bb_power, q_temp ) ) ); // q_temp
+ stereo_type_detect->left_bb_power_fx = L_add( temp, L_shr( Mpy_32_32( b_fx, stereo_type_detect->left_bb_power_fx ), sub( stereo_type_detect->q_left_bb_power, q_Left_Right_power ) ) ); // q_Left_Right_power
move32();
- stereo_type_detect->q_left_bb_power = q_temp;
+ stereo_type_detect->q_left_bb_power = q_Left_Right_power;
move16();
}
ELSE
{
- stereo_type_detect->left_bb_power_fx = L_add( L_shr( temp, sub( q_temp, stereo_type_detect->q_left_bb_power ) ), Mpy_32_32( b_fx, stereo_type_detect->left_bb_power_fx ) ); // stereo_type_detect->q_left_bb_power
+ stereo_type_detect->left_bb_power_fx = Madd_32_32( L_shr( temp, sub( q_Left_Right_power, stereo_type_detect->q_left_bb_power ) ), b_fx, stereo_type_detect->left_bb_power_fx ); // stereo_type_detect->q_left_bb_power
move32();
}
- temp = Mpy_32_32( a_fx, right_bb_power_fx ); // 2*(q_cldfb+min_q_shift) -31
- IF( LT_16( q_temp, stereo_type_detect->q_right_bb_power ) )
+ temp = Mpy_32_32( a_fx, right_bb_power_fx ); // q_Left_Right_power
+ IF( LT_16( q_Left_Right_power, stereo_type_detect->q_right_bb_power ) )
{
- stereo_type_detect->right_bb_power_fx = L_add( temp, L_shr( Mpy_32_32( b_fx, stereo_type_detect->right_bb_power_fx ), sub( stereo_type_detect->q_right_bb_power, q_temp ) ) ); // q_temp
+ stereo_type_detect->right_bb_power_fx = L_add( temp, L_shr( Mpy_32_32( b_fx, stereo_type_detect->right_bb_power_fx ), sub( stereo_type_detect->q_right_bb_power, q_Left_Right_power ) ) ); // q_Left_Right_power
move32();
- stereo_type_detect->q_right_bb_power = q_temp;
+ stereo_type_detect->q_right_bb_power = q_Left_Right_power;
move16();
}
ELSE
{
- stereo_type_detect->right_bb_power_fx = L_add( L_shr( temp, sub( q_temp, stereo_type_detect->q_right_bb_power ) ), Mpy_32_32( b_fx, stereo_type_detect->right_bb_power_fx ) ); // stereo_type_detect->q_right_bb_power
+ stereo_type_detect->right_bb_power_fx = Madd_32_32( L_shr( temp, sub( q_Left_Right_power, stereo_type_detect->q_right_bb_power ) ), b_fx, stereo_type_detect->right_bb_power_fx ); // stereo_type_detect->q_right_bb_power
move32();
}
- temp = Mpy_32_32( a_fx, total_bb_power_fx ); // 2*(q_cldfb+min_q_shift) -31
- IF( LT_16( q_temp, stereo_type_detect->q_total_bb_power ) )
+ temp = Mpy_32_32( a_fx, total_bb_power_fx ); // q_Left_Right_power
+ IF( LT_16( q_Left_Right_power, stereo_type_detect->q_total_bb_power ) )
{
- stereo_type_detect->total_bb_power_fx = L_add( temp, L_shr( Mpy_32_32( b_fx, stereo_type_detect->total_bb_power_fx ), sub( stereo_type_detect->q_total_bb_power, q_temp ) ) ); // q_temp
+ stereo_type_detect->total_bb_power_fx = L_add( temp, L_shr( Mpy_32_32( b_fx, stereo_type_detect->total_bb_power_fx ), sub( stereo_type_detect->q_total_bb_power, q_Left_Right_power ) ) ); // q_Left_Right_power
move32();
- stereo_type_detect->q_total_bb_power = q_temp;
+ stereo_type_detect->q_total_bb_power = q_Left_Right_power;
move16();
}
ELSE
{
- stereo_type_detect->total_bb_power_fx = L_add( L_shr( temp, sub( q_temp, stereo_type_detect->q_total_bb_power ) ), Mpy_32_32( b_fx, stereo_type_detect->total_bb_power_fx ) ); // stereo_type_detect->q_total_bb_power
+ stereo_type_detect->total_bb_power_fx = Madd_32_32( L_shr( temp, sub( q_Left_Right_power, stereo_type_detect->q_total_bb_power ) ), b_fx, stereo_type_detect->total_bb_power_fx ); // stereo_type_detect->q_total_bb_power
move32();
}
@@ -2293,8 +2319,7 @@ void protoSignalComputation2_fx(
q_lr_bb_power = stereo_type_detect->q_right_bb_power;
move16();
}
- q_lr_bb_power = sub( q_lr_bb_power, 1 ); /* = (lr_bb_power_fx * 2) */
-
+ q_lr_bb_power = sub( q_lr_bb_power, 1 ); /* = (lr_bb_power_fx * 2) */
temp = BASOP_Util_Divide3232_Scale_cadence( lr_bb_power_fx, L_add( stereo_type_detect->total_bb_power_fx, EPSILON_FX ), &exp ); // Q(31-(exp+stereo_type_detect->q_total_bb_power-q_lr_bb_power))
exp = sub( 31, add( sub( 31, exp ), sub( q_lr_bb_power, stereo_type_detect->q_total_bb_power ) ) );
temp = BASOP_Util_Log2( temp ); // q25
@@ -2305,15 +2330,15 @@ void protoSignalComputation2_fx(
// 20480 = 10 in Q11
lr_total_bb_ratio_fx = Mpy_32_16_1( temp, 20480 ); // Q21
- stereo_type_detect->left_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, left_hi_power_fx ), sub( 31, q_temp ), Mpy_32_32( b_fx, stereo_type_detect->left_hi_power_fx ), sub( 31, stereo_type_detect->q_left_hi_power ), &stereo_type_detect->q_left_hi_power );
+ stereo_type_detect->left_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a2_fx, left_hi_power_fx ), sub( 31, q_temp ), Mpy_32_32( b2_fx, stereo_type_detect->left_hi_power_fx ), sub( 31, stereo_type_detect->q_left_hi_power ), &stereo_type_detect->q_left_hi_power );
move32();
stereo_type_detect->q_left_hi_power = sub( 31, stereo_type_detect->q_left_hi_power );
move16();
- stereo_type_detect->right_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, right_hi_power_fx ), sub( 31, q_temp ), Mpy_32_32( b_fx, stereo_type_detect->right_hi_power_fx ), sub( 31, stereo_type_detect->q_right_hi_power ), &stereo_type_detect->q_right_hi_power );
+ stereo_type_detect->right_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a2_fx, right_hi_power_fx ), sub( 31, q_temp ), Mpy_32_32( b2_fx, stereo_type_detect->right_hi_power_fx ), sub( 31, stereo_type_detect->q_right_hi_power ), &stereo_type_detect->q_right_hi_power );
move32();
stereo_type_detect->q_right_hi_power = sub( 31, stereo_type_detect->q_right_hi_power );
move16();
- stereo_type_detect->total_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, total_hi_power_fx ), sub( 31, q_temp ), Mpy_32_32( b_fx, stereo_type_detect->total_hi_power_fx ), sub( 31, stereo_type_detect->q_total_hi_power ), &stereo_type_detect->q_total_hi_power );
+ stereo_type_detect->total_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a2_fx, total_hi_power_fx ), sub( 31, q_temp ), Mpy_32_32( b2_fx, stereo_type_detect->total_hi_power_fx ), sub( 31, stereo_type_detect->q_total_hi_power ), &stereo_type_detect->q_total_hi_power );
move32();
stereo_type_detect->q_total_hi_power = sub( 31, stereo_type_detect->q_total_hi_power );
move16();
@@ -2330,8 +2355,7 @@ void protoSignalComputation2_fx(
move32();
q_lr_hi_power = stereo_type_detect->q_right_hi_power;
}
- q_lr_hi_power = sub( q_lr_hi_power, 1 ); /* = (q_lr_hi_power * 2) */
-
+ q_lr_hi_power = sub( q_lr_hi_power, 1 ); /* = (q_lr_hi_power * 2) */
temp = BASOP_Util_Divide3232_Scale_cadence( lr_hi_power_fx, L_add( stereo_type_detect->total_hi_power_fx, EPSILON_FX ), &exp ); // Q=31-(exp+ stereo_type_detect->q_total_hi_power-q_lr_hi_power)
exp = sub( 31, add( sub( 31, exp ), sub( q_lr_hi_power, stereo_type_detect->q_total_hi_power ) ) );
temp = BASOP_Util_Log2( temp ); // q25
diff --git a/lib_rend/ivas_efap_fx.c b/lib_rend/ivas_efap_fx.c
index 52ca3e6f9a663b1be8ee98b5746088259e1f7886..543decbddee50bf407465f629883234eb976979b 100644
--- a/lib_rend/ivas_efap_fx.c
+++ b/lib_rend/ivas_efap_fx.c
@@ -36,8 +36,7 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_stat_dec.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_rend/ivas_hrtf_fx.c b/lib_rend/ivas_hrtf_fx.c
index 5d53d2ae3e41f9647e537dc7d13dbe5586a5481d..93f9fbd83ad15a678ebf73f29f0f0e2d4f617709 100644
--- a/lib_rend/ivas_hrtf_fx.c
+++ b/lib_rend/ivas_hrtf_fx.c
@@ -33,10 +33,9 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_error.h"
#include "wmc_auto.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
/*-----------------------------------------------------------------------*
diff --git a/lib_rend/ivas_masa_merge_fx.c b/lib_rend/ivas_masa_merge_fx.c
index 8b7e6575d97363d5ddcf98c316cf3125facbbed8..fd20a9fabb262fe00e70c28aa6319e405ec7707b 100644
--- a/lib_rend/ivas_masa_merge_fx.c
+++ b/lib_rend/ivas_masa_merge_fx.c
@@ -33,8 +33,7 @@
#include
#include "options.h"
#include "lib_rend.h"
-#include "ivas_prot_rend.h"
-#include "ivas_prot.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
#include "wmc_auto.h"
@@ -500,7 +499,7 @@ ivas_error masaPrerendOpen_fx(
move16();
FOR( i = 0; i < hMasaPrerend->num_Cldfb_instances; i++ )
{
- IF( ( error = openCldfb_ivas_fx( &( hMasaPrerend->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK )
+ IF( ( error = openCldfb_ivas_fx( &( hMasaPrerend->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK )
{
return error;
}
diff --git a/lib_rend/ivas_mcmasa_ana_fx.c b/lib_rend/ivas_mcmasa_ana_fx.c
index 25fddaa8068d50d0d016da34782cdeea614856a8..f3b4d175551867a1866ac1c6bdd7601e0fcdea4f 100644
--- a/lib_rend/ivas_mcmasa_ana_fx.c
+++ b/lib_rend/ivas_mcmasa_ana_fx.c
@@ -35,8 +35,7 @@
#include
#include "ivas_cnst.h"
#include "options.h"
-#include "ivas_prot_rend.h"
-#include "ivas_prot.h"
+#include "ivas_prot_rend_fx.h"
#include "prot_fx.h"
#include "ivas_stat_rend.h"
#include "ivas_rom_com.h"
@@ -225,7 +224,7 @@ ivas_error ivas_mcmasa_ana_open(
move16();
FOR( i = 0; i < hMcMasa->num_Cldfb_instances; i++ )
{
- IF( NE_32( ( error = openCldfb_ivas_fx( &( hMcMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &( hMcMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
diff --git a/lib_rend/ivas_objectRenderer_fx.c b/lib_rend/ivas_objectRenderer_fx.c
index 93fe67436a9fdb880f8416899cef6b17d2b30b77..1b5bc0d1b5e5644d47cd293d00556fb30dbe3cc0 100644
--- a/lib_rend/ivas_objectRenderer_fx.c
+++ b/lib_rend/ivas_objectRenderer_fx.c
@@ -34,8 +34,7 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include
#include "ivas_rom_com.h"
#include "wmc_auto.h"
diff --git a/lib_rend/ivas_objectRenderer_hrFilt_fx.c b/lib_rend/ivas_objectRenderer_hrFilt_fx.c
index a7f46b2a4187bc7f9abcf71aa6e0f2cbf2855ca5..01e35efe1711b619d8dd6dfc821e79639d355904 100644
--- a/lib_rend/ivas_objectRenderer_hrFilt_fx.c
+++ b/lib_rend/ivas_objectRenderer_hrFilt_fx.c
@@ -35,7 +35,7 @@
#include "options.h"
#include "prot_fx.h"
#include
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_rom_rend.h"
#include "ivas_cnst.h"
#include "wmc_auto.h"
diff --git a/lib_rend/ivas_objectRenderer_mix_fx.c b/lib_rend/ivas_objectRenderer_mix_fx.c
index 7ee6c828b1ab9dbaf8ee6ba7d85fa61ea19648cc..0e61282d474afcbfe1fafe00f76aced101e92bb7 100644
--- a/lib_rend/ivas_objectRenderer_mix_fx.c
+++ b/lib_rend/ivas_objectRenderer_mix_fx.c
@@ -33,7 +33,7 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_rom_TdBinauralRenderer.h"
#include "ivas_error.h"
#include "wmc_auto.h"
diff --git a/lib_rend/ivas_objectRenderer_sfx_fx.c b/lib_rend/ivas_objectRenderer_sfx_fx.c
index 971e2c2d17bc76424f088d4471a4668fbbd63bac..210706d5be5ff42adb52c59029465e96f58dfdcf 100644
--- a/lib_rend/ivas_objectRenderer_sfx_fx.c
+++ b/lib_rend/ivas_objectRenderer_sfx_fx.c
@@ -33,7 +33,7 @@
#include
#include "options.h"
#include
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_rom_rend.h"
#include "prot_fx.h"
#include "wmc_auto.h"
diff --git a/lib_rend/ivas_objectRenderer_sources_fx.c b/lib_rend/ivas_objectRenderer_sources_fx.c
index 307d38351b9a1971b68e0bb6efa68550b895686d..5787ded3f45254dc9ffa2bd706c747e51a257c52 100644
--- a/lib_rend/ivas_objectRenderer_sources_fx.c
+++ b/lib_rend/ivas_objectRenderer_sources_fx.c
@@ -34,7 +34,7 @@
#include "options.h"
#include
#include "prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_rend/ivas_objectRenderer_vec_fx.c b/lib_rend/ivas_objectRenderer_vec_fx.c
index 4d259a68e0b09cee8b819cafebd183ed5bcaf6cf..0d8c11aabc2d1f7bbbca125f01563c194a940636 100644
--- a/lib_rend/ivas_objectRenderer_vec_fx.c
+++ b/lib_rend/ivas_objectRenderer_vec_fx.c
@@ -34,7 +34,7 @@
#include "options.h"
#include
#include "prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
@@ -87,28 +87,6 @@ Word32 TDREND_SPATIAL_VecNorm_fx(
return tmp;
}
-
-/*-------------------------------------------------------------------*
- * TDREND_SPATIAL_VecNormalize()
- *
- * Normalize vector to unit norm
- *-------------------------------------------------------------------*/
-
-void TDREND_SPATIAL_VecNormalize(
- const float *Vec_p, /* i : Input vector */
- float *VecNorm_p /* o : Output vector */
-)
-{
- float scaler;
-
- scaler = inv_sqrt( Vec_p[0] * Vec_p[0] + Vec_p[1] * Vec_p[1] + Vec_p[2] * Vec_p[2] );
- VecNorm_p[0] = scaler * Vec_p[0];
- VecNorm_p[1] = scaler * Vec_p[1];
- VecNorm_p[2] = scaler * Vec_p[2];
-
- return;
-}
-
void TDREND_SPATIAL_VecNormalize_fx(
const Word32 *Vec_p_fx, /* i : Input vector q */
Word16 q, /* i : Input vector Q-factor */
@@ -172,25 +150,6 @@ void TDREND_SPATIAL_VecMapToNewCoordSystem_fx(
return;
}
-void TDREND_SPATIAL_VecMapToNewCoordSystem(
- const float *Vec_p, /* i : Input vector */
- const float *TranslVec_p, /* i : Translation vector */
- const float *DirVec_p, /* i : Direction vector */
- const float *UpVec_p, /* i : Up vector */
- const float *RightVec_p, /* i : Right vector */
- float *MappedVec_p, /* o : Transformed vector */
- float *LisRelPosAbs /* o : Transformed vector ignoring orientation */
-)
-{
- v_sub( Vec_p, TranslVec_p, LisRelPosAbs, 3 );
- /* Evalute the relative Vec in the coordinates of the Orientation vectors, */
- /* which form an orthonormal basis */
- MappedVec_p[0] = dotp( LisRelPosAbs, DirVec_p, 3 );
- MappedVec_p[1] = dotp( LisRelPosAbs, RightVec_p, 3 );
- MappedVec_p[2] = dotp( LisRelPosAbs, UpVec_p, 3 );
- return;
-}
-
/*-------------------------------------------------------------------*
* TDREND_SPATIAL_EvalOrthonormOrient()
*
diff --git a/lib_rend/ivas_omasa_ana_fx.c b/lib_rend/ivas_omasa_ana_fx.c
index d7387ecd475b4e7a10519a0665acb15cd2cd0dbe..ba632c6ba13d6c9cb6cfda1d137ad77445dcd078 100644
--- a/lib_rend/ivas_omasa_ana_fx.c
+++ b/lib_rend/ivas_omasa_ana_fx.c
@@ -34,8 +34,7 @@
#include
#include
#include "ivas_cnst.h"
-#include "ivas_prot_rend.h"
-#include "ivas_prot.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_prot_fx.h"
#include "prot_fx.h"
#include "ivas_stat_rend.h"
@@ -134,7 +133,7 @@ ivas_error ivas_omasa_ana_open(
hOMasa->num_Cldfb_instances = numAnalysisChannels;
FOR( i = 0; i < hOMasa->num_Cldfb_instances; i++ )
{
- IF( NE_32( ( error = openCldfb_ivas_fx( &( hOMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &( hOMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
diff --git a/lib_rend/ivas_orient_trk_fx.c b/lib_rend/ivas_orient_trk_fx.c
index 897edbe960f49bb7e989a95c2aa34224a024ea2b..34dd661d61e909725df830a1e913950ca86bbf6b 100644
--- a/lib_rend/ivas_orient_trk_fx.c
+++ b/lib_rend/ivas_orient_trk_fx.c
@@ -33,9 +33,8 @@
#include "common_api_types.h"
#include
#include "options.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_cnst.h"
#include
#include
diff --git a/lib_rend/ivas_output_init.c b/lib_rend/ivas_output_init.c
index 3f6091e9a007de7a9507d503a62be0c2b7292164..c5271d06564129ee4b24bdeaa8d933ebb7d65729 100644
--- a/lib_rend/ivas_output_init.c
+++ b/lib_rend/ivas_output_init.c
@@ -34,10 +34,9 @@
#include "options.h"
#include "ivas_cnst.h"
#include "prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_rom_com.h"
#include "ivas_rom_com_fx.h"
-#include "ivas_prot.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
/*-------------------------------------------------------------------------*
diff --git a/lib_rend/ivas_output_init_fx.c b/lib_rend/ivas_output_init_fx.c
index bbe6ae4b594080faa9e97bc52ca25475134beb26..8beb5a0ecfd10a2b42e5a935127c62d97da94e05 100644
--- a/lib_rend/ivas_output_init_fx.c
+++ b/lib_rend/ivas_output_init_fx.c
@@ -1,7 +1,6 @@
#include "ivas_prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#ifdef FIX_DISCLAIMER
#include
#endif
diff --git a/lib_rend/ivas_prot_rend.h b/lib_rend/ivas_prot_rend_fx.h
similarity index 72%
rename from lib_rend/ivas_prot_rend.h
rename to lib_rend/ivas_prot_rend_fx.h
index 1e8f7030ac08b6b64dadf1b2d6a5b6947740d0aa..e44e81d05cc062c17cf19e3f16a851f9934eac44 100644
--- a/lib_rend/ivas_prot_rend.h
+++ b/lib_rend/ivas_prot_rend_fx.h
@@ -89,14 +89,35 @@ ivas_error get_channel_config(
#endif
+/*----------------------------------------------------------------------------------*
+ * Limiter prototypes
+ *----------------------------------------------------------------------------------*/
+
+void ivas_limiter_dec_fx(
+ IVAS_LIMITER_HANDLE hLimiter, /* i/o: limiter struct handle */
+ Word32 *output[MAX_OUTPUT_CHANNELS], /* i/o: input/output buffer */
+ const Word16 num_channels, /* i : number of channels to be processed */
+ const Word16 output_frame, /* i : number of samples per channel in the buffer */
+ const Word16 BER_detect, /* i : BER detect flag */
+ Word16 q_factor /* i : Q factor of the output samples */
+);
+
+void limiter_process_fx(
+ IVAS_LIMITER_HANDLE hLimiter, /* i/o: limiter struct handle */
+ const Word16 output_frame, /* i : number of samples to be processed per channel in the I/O buffer */
+ const Word32 threshold, /* i : signal amplitude above which limiting starts to be applied */
+ const Word16 BER_detect, /* i : BER detect flag */
+ Word16 *strong_saturation_cnt, /* i/o: counter of strong saturations (can be NULL) */
+ Word16 q_factor /* i : Q factor of output samples */
+);
/*----------------------------------------------------------------------------------*
* TD decorr. function prototypes
*----------------------------------------------------------------------------------*/
ivas_error ivas_td_decorr_dec_open_fx(
ivas_td_decorr_state_t **hTdDecorr, /* i/o: TD decorrelator handle */
- const int32_t output_Fs, /* i : output sampling rate */
- const int16_t nchan_internal, /* i : number of internal channels */
- const int16_t ducking_flag /* i : ducking flag */
+ const Word32 output_Fs, /* i : output sampling rate */
+ const Word16 nchan_internal, /* i : number of internal channels */
+ const Word16 ducking_flag /* i : ducking flag */
);
void ivas_td_decorr_dec_close(
ivas_td_decorr_state_t **hTdDecorr /* i/o: TD decorrelator handle */
@@ -133,9 +154,6 @@ ivas_error efap_init_data_fx(
const Word16 num_speaker_nodes, /* i : number of speaker nodes in the set */
const Word16 efap_mode /* i : indicates whether EFAP or EFIP is used */
);
-void efap_free_data(
- EFAP_HANDLE *hEFAPdata /* i/o: EFAP handle to be freed */
-);
void efap_determine_gains_fx(
EFAP_HANDLE hEFAPdata, /* i : EFAP structure */
@@ -178,14 +196,7 @@ void ivas_sba_prototype_renderer_fx(
Word32 inRe_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i : Input audio in CLDFB domain, real */
Word32 inIm_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i : Input audio in CLDFB domain, imag */
Word16 q_cldfb[6][CLDFB_SLOTS_PER_SUBFRAME],
- const int16_t subframe /* i : Subframe to render */
-);
-
-void ivas_sba_prototype_renderer(
- Decoder_Struct *st_ivas, /* i/o: IVAS decoder struct */
- float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i : Input audio in CLDFB domain, real */
- float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i : Input audio in CLDFB domain, imag */
- const int16_t subframe /* i : Subframe to render */
+ const Word16 subframe /* i : Subframe to render */
);
ivas_error ivas_sba_get_hoa_dec_matrix_fx(
@@ -198,11 +209,7 @@ void ivas_dirac_dec_binaural_sba_gain_fx(
const Word16 nchan_remapped, /* i : num channels after remapping of TCs */
const Word16 output_frame /* i : output frame length */
);
-void ivas_dirac_dec_binaural_sba_gain(
- float *output[], /* i/o: synthesized core-coder transport channels/DirAC output */
- const int16_t nchan_remapped, /* i : num channels after remapping of TCs */
- const int16_t output_frame /* i : output frame length */
-);
+
void ivas_dirac_dec_binaural_render_fx(
Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */
const UWord16 nSamplesAsked, /* i : number of CLDFB slots requested */
@@ -236,11 +243,6 @@ ivas_error ivas_dirac_dec_binaural_copy_hrtfs_fx(
HRTFS_PARAMBIN_HANDLE *hHrtfParambin /* i/o: HRTF structure for rendering */
);
-ivas_error ivas_dirac_dec_binaural_copy_hrtfs(
- HRTFS_PARAMBIN_HANDLE *hHrtfParambin /* i/o: HRTF structure for rendering */
-);
-
-
ivas_error ivas_dirac_alloc_mem_fx(
DIRAC_REND_HANDLE hDirACRend,
const RENDERER_TYPE renderer_type,
@@ -248,20 +250,6 @@ ivas_error ivas_dirac_alloc_mem_fx(
DIRAC_DEC_STACK_MEM_HANDLE hDirAC_mem,
const Word16 hodirac_flag);
-void ivas_dirac_free_mem(
- DIRAC_DEC_STACK_MEM_HANDLE hDirAC_mem
-);
-
-void initDiffuseResponses(
- float *diffuse_response_function,
- const int16_t num_channels,
- const AUDIO_CONFIG output_config,
- const IVAS_OUTPUT_SETUP hOutSetup,
- const int16_t ambisonics_order,
- const IVAS_FORMAT ivas_format,
- int16_t *num_ele_spk_no_diffuse_rendering,
- const AUDIO_CONFIG transport_config
-);
void ivas_dirac_free_mem_fx(
DIRAC_DEC_STACK_MEM_HANDLE hDirAC_mem
);
@@ -303,18 +291,6 @@ void protoSignalComputation_shd_fx(
Word32 *p_Rmat_fx, /* Q30 */
Word16 q_cldfb
);
-void protoSignalComputation_shd(
- float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],
- float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],
- float *proto_direct_buffer_f,
- float *proto_diffuse_buffer_f,
- float *reference_power,
- const int16_t slot_index,
- const int16_t num_inputs,
- const int16_t num_outputs_diff,
- const int16_t num_freq_bands,
- float *p_Rmat
-);
void protoSignalComputation1_fx(
Word32 RealBuffer_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /*q_cldfb*/
@@ -332,17 +308,6 @@ void protoSignalComputation1_fx(
const Word16 num_freq_bands,
Word16 q_cldfb
);
-void protoSignalComputation1(
- float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],
- float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],
- float *proto_frame_f,
- float *proto_direct_buffer_f,
- float *reference_power,
- float *proto_power_smooth,
- const int16_t slot_index,
- const int16_t num_outputs_diff,
- const int16_t num_freq_bands
-);
void protoSignalComputation2_fx(
Word32 RealBuffer_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /*q_cldfb*/
@@ -361,18 +326,6 @@ void protoSignalComputation2_fx(
MASA_STEREO_TYPE_DETECT *stereo_type_detect,
Word16 q_cldfb
);
-void protoSignalComputation2(
- float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],
- float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],
- float *proto_frame_f,
- float *proto_direct_buffer_f,
- float *reference_power,
- float *proto_power_smooth,
- const int16_t isloudspeaker,
- const int16_t slot_index,
- const int16_t num_freq_bands,
- MASA_STEREO_TYPE_DETECT *stereo_type_detect
-);
void protoSignalComputation4_fx(
Word32 RealBuffer_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /*q_cldfb*/
@@ -394,11 +347,6 @@ void protoSignalComputation4_fx(
Word16 q_cldfb
);
-void ivas_dirac_dec_compute_diffuse_proto(
- DIRAC_REND_HANDLE hDirACRend,
- const int16_t num_freq_bands,
- const int16_t slot_idx
-);
void ivas_dirac_dec_compute_diffuse_proto_fx(
DIRAC_REND_HANDLE hDirACRend,
const Word16 num_freq_bands,
@@ -415,10 +363,6 @@ void computeDirectionAngles_fx(
Word16 *elevation
);
-void ivas_masa_init_stereotype_detection(
- MASA_STEREO_TYPE_DETECT *stereo_type_detect
-);
-
void ivas_masa_init_stereotype_detection_fx(
MASA_STEREO_TYPE_DETECT *stereo_type_detect
);
@@ -426,9 +370,6 @@ void ivas_masa_init_stereotype_detection_fx(
void ivas_masa_stereotype_detection_fx(
MASA_STEREO_TYPE_DETECT *stereo_type_detect
);
-void ivas_masa_stereotype_detection(
- MASA_STEREO_TYPE_DETECT *stereo_type_detect
-);
void ivas_lfe_synth_with_cldfb_fx(
MCMASA_LFE_SYNTH_DATA_HANDLE hMasaLfeSynth,
@@ -449,21 +390,6 @@ void rotateAziEle_DirAC_fx(
const Word16 band2, /* i : bands to work on (upper bound) */
const Word32 *p_Rmat_fx /* i : pointer to real-space rotation matrix q30*/
);
-void rotateAziEle_DirAC(
- int16_t *azi,
- int16_t *ele,
- const int16_t band1,
- const int16_t band2,
- const float *p_Rmat
-);
-
-ivas_error ivas_dirac_dec_onset_detection_open(
- const int16_t num_channels,
- const int16_t num_freq_bands,
- const int16_t max_band_decorr,
- DIRAC_ONSET_DETECTION_PARAMS *ph_dirac_onset_detection_params,
- DIRAC_ONSET_DETECTION_STATE *ph_dirac_onset_detection_state
-);
ivas_error ivas_dirac_dec_onset_detection_open_fx(
const Word16 num_protos_diff, //Q0
@@ -484,14 +410,6 @@ ivas_error ivas_dirac_dec_decorr_open_fx(
const Word32 output_Fs /* i : output sampling rate */
);
-void ivas_dirac_dec_onset_detection_process(
- const float *input_power_f,
- float *onset_filter,
- const int16_t num_protos_diff,
- DIRAC_ONSET_DETECTION_PARAMS h_dirac_onset_detection_params,
- DIRAC_ONSET_DETECTION_STATE h_dirac_onset_detection_state
-);
-
void ivas_dirac_dec_onset_detection_process_fx(
const Word32 *input_power_f, /* Q(0) */
Word32 *onset_filter, /* Q(0) */
@@ -500,33 +418,6 @@ void ivas_dirac_dec_onset_detection_process_fx(
DIRAC_ONSET_DETECTION_STATE h_dirac_onset_detection_state
);
-ivas_error ivas_dirac_dec_decorr_open(
- DIRAC_DECORR_PARAMS **ph_freq_domain_decorr_ap_params,
- DIRAC_DECORR_STATE **ph_freq_domain_decorr_ap_state,
- const int16_t num_freq_bands,
- int16_t num_outputs_diff,
- const int16_t num_protos_diff,
- const DIRAC_SYNTHESIS_CONFIG synthesisConf,
- float *frequency_axis,
- const int16_t nchan_transport, /* i : number of transport channels */
- const int32_t output_Fs /* i : output sampling rate */
-);
-
-void ivas_dirac_dec_decorr_process(
- const int16_t num_freq_bands,
- int16_t num_channels,
- const int16_t num_protos_diff,
- const DIRAC_SYNTHESIS_CONFIG synthesisConf,
- const int16_t nchan_transport, /* i : number of transport channels */
- const float *input_frame_f,
- const int16_t num_protos_dir,
- const int16_t *proto_index_dir,
- float *frame_dec_f,
- float *onset_filter,
- HANDLE_DIRAC_DECORR_PARAMS h_freq_domain_decorr_ap_params,
- HANDLE_DIRAC_DECORR_STATE h_freq_domain_decorr_ap_state
-);
-
void ivas_dirac_dec_decorr_process_fx(
const Word16 num_freq_bands,
Word16 num_channels,
@@ -544,32 +435,11 @@ void ivas_dirac_dec_decorr_process_fx(
HANDLE_DIRAC_DECORR_STATE h_freq_domain_decorr_ap_state
);
-void ivas_dirac_dec_decorr_close(
- HANDLE_DIRAC_DECORR_PARAMS *ph_dirac_decorr_params,
- HANDLE_DIRAC_DECORR_STATE *ph_dirac_decorr_state
-);
void ivas_dirac_dec_decorr_close_fx(
HANDLE_DIRAC_DECORR_PARAMS *ph_dirac_decorr_params,
HANDLE_DIRAC_DECORR_STATE *ph_dirac_decorr_state
);
-
-ivas_error ivas_dirac_dec_output_synthesis_open(
- SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */
- DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */
- const RENDERER_TYPE renderer_type, /* i : renderer type */
- const int16_t nchan_transport, /* i : number of transport channels */
- const int32_t output_Fs, /* i : output sampling rate */
- const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */
-);
-
-void ivas_dirac_dec_output_synthesis_init(
- SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */
- DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */
- const int16_t nchan_out_woLFE, /* i : number of output audio channels without LFE */
- const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */
-);
-
ivas_error ivas_dirac_dec_output_synthesis_open_fx(
SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */
DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */
@@ -589,9 +459,7 @@ void ivas_dirac_dec_output_synthesis_init_fx(
void ivas_dirac_dec_output_synthesis_close_fx(
DIRAC_REND_HANDLE hDirACRend /* i/o: DirAC handle */
);
-void ivas_dirac_dec_output_synthesis_close(
- DIRAC_REND_HANDLE hDirACRend /* i/o: DirAC handle */
-);
+
void ivas_dirac_dec_output_synthesis_process_slot_fx(
const Word32 *reference_power, /* i : Estimated power */
const Word16 q_reference_power, /* i : Estimated power */
@@ -610,23 +478,6 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx(
const Word16 md_idx,
const Word16 hodirac_flag, /* i : flag to indicate HO-DirAC mode */
const Word16 dec_param_estim);
-void ivas_dirac_dec_output_synthesis_process_slot(
- const float *reference_power, /* i : Estimated power */
- const float *onset, /* i : onset filter */
- const int16_t *azimuth,
- const int16_t *elevation,
- const float *diffuseness,
- SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */
- DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */
- const int16_t sh_rot_max_order,
- const float *p_Rmat, /* i : rotation matrix */
- const VBAP_HANDLE hVBAPdata, /* i : VBAP structure */
- const IVAS_OUTPUT_SETUP hOutSetup, /* i : output setup structure */
- const int16_t nchan_transport, /* i : number of transport channels */
- const int16_t ind_slot, /* i : index of the slot to be added to the input covariance */
- const int16_t hodirac_flag, /* i : flag to indicate HO-DirAC mode */
- const int16_t dec_param_estim /* i : flag to indicate parameter estimation mode */
-);
void ivas_dirac_dec_output_synthesis_process_subframe_gain_shd_fx(
Word32 RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],/* i : LS signals */
@@ -643,19 +494,6 @@ void ivas_dirac_dec_output_synthesis_process_subframe_gain_shd_fx(
Word16 *q_cy_auto_diff_smooth_prev
);
-void ivas_dirac_dec_output_synthesis_process_subframe_gain_shd(
- float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],/* i : LS signals */
- float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],/* i : LS signals */
- SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */
- DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */
- const int16_t nchan_transport, /* i : number of transport channels */
- const int16_t nbslots, /* i : number of slots to process */
- const float *onset_filter,
- float *diffuseness,
- const int16_t hodirac_flag, /* i : flag to indicate HO-DirAC mode */
- const int16_t dec_param_estim /* i : flag to indicate parameter estimation mode */
-);
-
void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx(
Word32 RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],/* i : LS signals */
Word32 ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],/* i : LS signals */
@@ -670,25 +508,6 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx(
Word16 *q_Cldfb
);
-void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls(
- float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],/* i : LS signals */
- float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],/* i : LS signals */
- SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */
- DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */
- const int16_t nbslots, /* i : number of slots to process */
- float *diffuseness_vector, /* i : diffuseness (needed for direction smoothing)*/
- float *reference_power_smooth,
- float qualityBasedSmFactor,
- const int16_t enc_param_start_band
-);
-
-void compute_hoa_encoder_mtx(
- const float *azimuth,
- const float *elevation,
- float *response,
- const int16_t num_responses,
- const int16_t ambisonics_order );
-
void compute_hoa_encoder_mtx_fx(
const Word32 *azimuth, /*q22*/
const Word32 *elevation, /*q22*/
@@ -713,21 +532,6 @@ void ivas_dirac_dec_compute_power_factors_fx(
Word32 *diffuse_power_factor
);
-void ivas_dirac_dec_compute_directional_responses(
- SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */
- DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */
- const VBAP_HANDLE hVBAPdata, /* i : VBAP structure */
- const int16_t *masa_band_mapping, /* i : Band mapping for MASA, NULL assumes not using MASA in any form */
- MASA_ISM_DATA_HANDLE hMasaIsm, /* i : MASA_ISM data structure */
- const int16_t *azimuth,
- const int16_t *elevation,
- const int16_t md_idx,
- const float *surCohRatio,
- const int16_t shd_rot_max_order, /* i : split-order rotation method */
- const float *p_Rmat, /* i : rotation matrix */
- const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */
-);
-
void ivas_dirac_dec_compute_directional_responses_fx(
SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */
DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */
@@ -744,36 +548,6 @@ void ivas_dirac_dec_compute_directional_responses_fx(
const Word16 hodirac_flag /* i : flag to indicate HO-DirAC mode */
);
-void ivas_dirac_dec_get_frequency_axis(
- float *frequency_axis, /* o : array of center frequencies of a real filter bank */
- const int32_t output_Fs, /* i : sampling frequency */
- const int16_t num_freq_bands /* i : number of frequency bands */
-);
-
-ivas_error ivas_spat_hSpatParamRendCom_config(
- SPAT_PARAM_REND_COMMON_DATA_HANDLE *hSpatParamRendCom_out,
- const DIRAC_CONFIG_FLAG flag_config_inp, /* i/ : Flag determining if we open or reconfigure the DirAC decoder */
- const int16_t dec_param_estim_flag,
- const IVAS_FORMAT ivas_format,
- const MC_MODE mc_mode,
- const int32_t output_Fs,
- const int16_t hodirac_flag,
- const int16_t masa_ext_rend_flag
-);
-
-void ivas_spat_hSpatParamRendCom_close(
- SPAT_PARAM_REND_COMMON_DATA_HANDLE *hSpatParamRendCom_out
-);
-
-void ivas_dirac_rend_close(
- DIRAC_REND_HANDLE *hDirACRend_out
-);
-
-ivas_error ivas_dirac_allocate_parameters(
- SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common data for spatial parametric rendering */
- const int16_t params_flag /* i : set of parameters flag */
-);
-
void ivas_dirac_rend_close_fx(
DIRAC_REND_HANDLE *hDirACRend_out
);
@@ -795,18 +569,14 @@ ivas_error ivas_spat_hSpatParamRendCom_config_fx(
ivas_error ivas_dirac_allocate_parameters_fx(
SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common data for spatial parametric rendering */
- const int16_t params_flag /* i : set of parameters flag */
+ const Word16 params_flag /* i : set of parameters flag */
);
void ivas_dirac_deallocate_parameters_fx(
SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common data for spatial parametric rendering */
- const int16_t params_flag /* i : set of parameters flag */
+ const Word16 params_flag /* i : set of parameters flag */
);
-void ivas_dirac_deallocate_parameters(
- SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common data for spatial parametric rendering */
- const int16_t params_flag /* i : set of parameters flag */
-);
void ivas_masa_ext_dirac_render_fx(
MASA_EXT_REND_HANDLE hMasaExtRend, /* i/o: MASA renderer structure */
Word32 *output_f[], /* i/o: input/output signals in time domain q11*/
@@ -824,11 +594,6 @@ void ivas_HRTF_binary_close_fx(
TDREND_HRFILT_FiltSet_t **hHrtfTD /* i/o: TD renderer HRTF handle */
);
-ivas_error ivas_HRTF_fastconv_binary_open(
- HRTFS_FASTCONV **hHrtfFastConv /* i/o: FASTCONV HRTF structure */
-);
-
-
ivas_error ivas_HRTF_fastconv_binary_open_fx(
HRTFS_FASTCONV **hHrtfFastConv /* i/o: FASTCONV HRTF structure */
);
@@ -872,33 +637,6 @@ ivas_error ivas_td_binaural_renderer_unwrap_fx(
const Word16 num_subframes /* i : number of subframes to render */
);
-ivas_error ivas_td_binaural_renderer_unwrap(
- const REVERB_HANDLE hReverb, /* i : Reverberator handle */
- const AUDIO_CONFIG transport_config, /* i : Transport configuration */
- BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD binaural object renderer handle */
- const int16_t num_src, /* i : number of sources to render */
- const int16_t lfe_idx, /* i : LFE channel index */
- const IVAS_FORMAT ivas_format, /* i : IVAS format */
- ISM_METADATA_HANDLE *hIsmMetaData, /* i : ISM metadata handle */
- COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i/o: combined orientaton data handle */
- const int16_t ism_md_subframe_update,
- float *output[], /* i/o: SCE channels / Binaural synthesis */
- const int16_t output_frame, /* i : output frame length */
- const int16_t num_subframes /* i : number of subframes to render */
-);
-
-ivas_error ivas_td_binaural_renderer_ext(
- const TDREND_WRAPPER *pTDRend, /* i : TD Renderer wrapper structure */
- const AUDIO_CONFIG inConfig, /* i : Input audio configuration */
- const LSSETUP_CUSTOM_STRUCT *customLsInput, /* i : Input custom loudspeaker layout */
- const COMBINED_ORIENTATION_HANDLE *hCombinedOrientationData,/* i : Combined head and external orientations */
- const IVAS_ISM_METADATA *currentPos, /* i : Object position */
- const REVERB_HANDLE hReverb, /* i : Reverberator handle */
- const int16_t ism_md_subframe_update_ext, /* i : Metadata Delay in subframes to sync with audio delay */
- const int32_t output_Fs, /* i : output sampling rate */
- const int16_t output_frame, /* i : output frame length */
- float output[][L_FRAME48k] /* i/o: SCE channels / Binaural synthesis */
-);
ivas_error ivas_td_binaural_renderer_ext_fx(
const TDREND_WRAPPER *pTDRend, /* i : TD Renderer wrapper structure */
const AUDIO_CONFIG inConfig, /* i : Input audio configuration */
@@ -926,24 +664,12 @@ ivas_error ivas_td_binaural_open_unwrap_fx(
Word16 *SrcInd
);
-ivas_error ivas_td_binaural_open_unwrap(
- TDREND_HRFILT_FiltSet_t **hHrtfTD, /* i/o: HR filter model (from file or NULL) */
- const int32_t output_Fs, /* i : Output sampling rate */
- const int16_t nchan_transport, /* i : Number of channels */
- const IVAS_FORMAT ivas_format, /* i : IVAS format (ISM/MC) */
- const AUDIO_CONFIG transport_config, /* i : Transport configuration */
- const float *directivity, /* i : Directivity pattern (used for ISM) */
- const IVAS_OUTPUT_SETUP hTransSetup, /* i : Loudspeaker layout */
- BINAURAL_TD_OBJECT_RENDERER_HANDLE *hBinRendererTd, /* o : TD renderer handle */
- int32_t *binaural_latency_ns /* i : Binauralization delay */
-);
-
ivas_error ivas_td_binaural_open_ext_fx(
TDREND_WRAPPER *pTDRend,
const AUDIO_CONFIG inConfig,
RENDER_CONFIG_DATA *hRendCfg, /* i : Renderer configuration */
LSSETUP_CUSTOM_STRUCT *customLsInput,
- const int32_t output_Fs,
+ const Word32 output_Fs,
Word16 *SrcInd,
Word16 *num_src
);
@@ -952,17 +678,6 @@ void ivas_td_binaural_close_fx(
BINAURAL_TD_OBJECT_RENDERER_HANDLE *hBinRendererTd /* i/o: TD binaural object renderer handle */
);
-void ivas_td_binaural_close(
- BINAURAL_TD_OBJECT_RENDERER_HANDLE *hBinRendererTd /* i/o: TD binaural object renderer handle */
-);
-
-ivas_error TDREND_GetMix(
- BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */
- float *output[], /* i/o: ISM object synth/rendered output in 0,1 */
- const int16_t subframe_length, /* i/o: subframe length */
- const int16_t subframe_idx, /* i : Subframe index to 5 ms subframe */
- const int16_t ism_md_subframe_update /* i : Number of subframes to delay metadata to sync with audio */
-);
ivas_error TDREND_GetMix_fx(
BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */
Word32 *output[], /* i/o: ISM object synth / rendered output in 0,1 */
@@ -971,13 +686,6 @@ ivas_error TDREND_GetMix_fx(
const Word16 ism_md_subframe_update /* i : Number of subframes to delay ism metadata to sync with audio */
);
-
-ivas_error TDREND_Update_object_positions(
- BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD Renderer handle */
- const int16_t num_src, /* i : number of sources to render */
- const IVAS_FORMAT in_format, /* i : Format of input sources */
- const ISM_METADATA_HANDLE *hIsmMetaData /* i : Input metadata for ISM objects */
-);
void BSplineModelEvalDealloc_fx(
ModelParams_t *model, /* i : Model parameters */
ModelEval_t *modelEval /* i : Model evaluation structure */
@@ -1019,16 +727,7 @@ ivas_error TDREND_MIX_SRC_SetPos_fx(
const Word16 SrcInd, /* i : Source index */
const Word32 *Vec_p /* i : Position vector */
);
-ivas_error TDREND_MIX_SRC_SetPos(
- BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */
- const int16_t SrcInd, /* i : Source index */
- const float *Vec_p /* i : Position vector */
-);
-ivas_error TDREND_MIX_SRC_SetDir(
- BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */
- const int16_t SrcInd, /* i : Source index */
- const float *Vec_p /* i : Direction vector */
-);
+
ivas_error TDREND_MIX_SRC_SetDir_fx(
BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */
const Word16 SrcInd, /* i : Source index */
@@ -1078,19 +777,8 @@ void TDREND_SRC_Init_fx(
TDREND_SRC_t *Src_p, /* i/o: Source to initialize */
const TDREND_PosType_t PosType /* i : Position type specifier */
);
-void TDREND_SRC_Init(
- TDREND_SRC_t *Src_p, /* i/o: Source to initialize */
- const TDREND_PosType_t PosType /* i : Position type specifier */
-);
/* ----- Object renderer - vec ----- */
-
-void TDREND_SPATIAL_VecInit(
- float *Pos_p, /* o : Output vector */
- const float PosX, /* i : X value */
- const float PosY, /* i : Y value */
- const float PosZ /* i : Z value */
-);
void TDREND_SPATIAL_VecInit_fx(
Word32 *Pos_p, /* o : Output vector */
const Word32 PosX, /* i : X value */
@@ -1106,21 +794,6 @@ void TDREND_SPATIAL_VecNormalize_fx(
Word32 *VecNorm_p_fx /* o : Normalised output vector Q30 */
);
-void TDREND_SPATIAL_VecNormalize(
- const float *Vec_p, /* i : Input vector */
- float *VecNorm_p /* o : Output vector */
-);
-
-void TDREND_SPATIAL_VecMapToNewCoordSystem(
- const float *Vec_p, /* i : Input vector */
- const float *TranslVec_p, /* i : Translation vector */
- const float *DirVec_p, /* i : Direction vector */
- const float *UpVec_p, /* i : Up vector */
- const float *RightVec_p, /* i : Right vector */
- float *MappedVec_p, /* o : Transformed vector */
- float *LisRelPosAbs /* o : Transformed vector ignoring orientation */
-);
-
Word16 TDREND_SPATIAL_EvalOrthonormOrient_fx(
Word32 *FrontVecON_p_fx, /* i/o: Normalized front vector Q30 */
Word32 *UpVecON_p_fx, /* i/o: Normalized up vector Q30 */
@@ -1129,14 +802,6 @@ Word16 TDREND_SPATIAL_EvalOrthonormOrient_fx(
const Word32 *UpVec_p_fx, /* i : Input up vector orient_q */
const Word16 orient_q /* i : Input up Q-factor */
);
-/*! r: Flag if the orientation has been updated */
-int16_t TDREND_SPATIAL_EvalOrthonormOrient(
- float *FrontVecON_p, /* o : Normalized front vector */
- float *UpVecON_p, /* o : Normalized up vector */
- float *RightVecON_p, /* o : Normalized right vector */
- const float *FrontVec_p, /* i : Input front vector */
- const float *UpVec_p /* i : Input up vector */
-);
/* ----- Object renderer - mix ----- */
@@ -1145,11 +810,6 @@ ivas_error TDREND_MIX_AddSrc_fx(
Word16 *SrcInd, /* o : Source index */
const TDREND_PosType_t PosType /* i : Position type (absolute/relative) */
);
-ivas_error TDREND_MIX_AddSrc(
- BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */
- int16_t *SrcInd, /* o : Source index */
- const TDREND_PosType_t PosType /* i : Position type (absolute/relative) */
-);
ivas_error TDREND_MIX_SetDistAttenModel(
BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */
@@ -1160,35 +820,15 @@ void TDREND_MIX_Dealloc_fx(
BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd /* i/o: TD renderer handle */
);
-void TDREND_MIX_Dealloc(
- BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd /* i/o: TD renderer handle */
-);
-
ivas_error TDREND_MIX_Init_fx(
BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */
TDREND_HRFILT_FiltSet_t **hHrtfTD, /* i/o: HRTF data (initialized in case of NULL) */
const TDREND_MixSpatSpec_t *MixSpatSpec_p, /* i : Mixer spatial specification */
const Word32 output_Fs /* i : Output sampling rate */
);
-ivas_error TDREND_MIX_Init(
- BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */
- TDREND_HRFILT_FiltSet_t **hHrtfTD, /* i/o: HRTF data (initialized in case of NULL) */
- const TDREND_MixSpatSpec_t *MixSpatSpec_p, /* i : Mixer spatial specification */
- const int32_t output_Fs /* i : Output sampling rate */
-);
/* ----- Object renderer - sfx ----- */
-void TDREND_Apply_ITD(
- float *input, /* i : Input SCE subframe to be time adjusted */
- float *out_left, /* o : Output left channels with ITD applied */
- float *out_right, /* o : Output right channels with ITD applied */
- int16_t *previtd, /* i/o: Previous ITD value */
- const int16_t itd, /* i : Current subframe ITD value */
- float *mem_itd, /* i/o: ITD buffer memory */
- const int16_t length /* i : Subframe length */
-);
-
void TDREND_Apply_ITD_fx(
Word32 *input_fx, /* i : Input subframe to be time adjusted Qx */
Word32 *out_left_fx, /* o : Output left channel with ITD applied Qx */
@@ -1305,10 +945,10 @@ ivas_error ivas_binaural_reverb_open_fastconv_fx(
ivas_error ivas_binaural_reverb_open_parambin(
REVERB_STRUCT_HANDLE *hReverbPr, /* i/o: binaural reverb handle */
- const int16_t numBins, /* i : number of CLDFB bins Q0 */
- const int16_t numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame Q0 */
+ const Word16 numBins, /* i : number of CLDFB bins Q0 */
+ const Word16 numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame Q0 */
IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */
- const int32_t sampling_rate, /* i : sampling rate Q0 */
+ const Word32 sampling_rate, /* i : sampling rate Q0 */
const HRTFS_PARAMBIN_HANDLE hHrtfParambin /* i : Parametric binauralizer HRTF handle */
);
@@ -1319,16 +959,6 @@ void ivas_binaural_reverb_close(
REVERB_STRUCT_HANDLE *hReverb /* i/o: binaural reverb handle */
);
-void ivas_binaural_reverb_processSubframe(
- REVERB_STRUCT_HANDLE hReverb, /* i/o: binaural reverb handle */
- const int16_t numInChannels, /* i : num input channels to be processed*/
- const int16_t numSlots, /* i : number of slots to be processed */
- float inReal[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i : input CLDFB data real */
- float inImag[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i : input CLDFB data imag */
- float outReal[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* o : output CLDFB data real */
- float outImag[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /* o : output CLDFB data imag */
-);
-
void ivas_binaural_reverb_processSubframe_fx(
REVERB_STRUCT_HANDLE hReverb, /* i/o: binaural reverb handle */
const Word16 numInChannels, /* i : num inputs to be processed */
@@ -1359,14 +989,7 @@ ivas_error ivas_reverb_process_fx(
Word32 *pcm_out[], /* o : the PCM audio with reverb applied */
const Word16 i_ts /* i : (Q0) subframe index */
);
-ivas_error ivas_reverb_process(
- const REVERB_HANDLE hReverb, /* i : Reverberator handle */
- const AUDIO_CONFIG input_audio_config, /* i : reverb. input audio configuration */
- const int16_t mix_signals, /* i : add reverb to output signal */
- float *pcm_in[], /* i : the PCM audio to apply reverb on */
- float *pcm_out[], /* o : the PCM audio with reverb applied */
- const int16_t i_ts /* i : subframe index */
-);
+
void ivas_rev_delay_line_init(
ivas_rev_delay_line_t *pDelay, /* o : the delay line to initialize */
Word32 *memory_buffer, /* i : the memory buffer to use for the delay line Q11 */
@@ -1396,7 +1019,7 @@ void ivas_rev_delay_line_feed_sample_blk_fx(
);
void ivas_reverb_iir_filt_init(
ivas_rev_iir_filter_t *iirFilter, /* o : IIR filter */
- const uint16_t maxTaps /* i : maximum number of filter taps */
+ const UWord16 maxTaps /* i : maximum number of filter taps */
);
@@ -1455,17 +1078,6 @@ void ivas_reverb_fft_filter_CrossMix_fx(
const Word16 fft_size
);
-void ivas_reverb_fft_filter_CrossMix(
- float *buffer0,
- float *buffer1,
- const int16_t fft_size
-);
-
-void ivas_reverb_fft_filter_ConvertFFTWF_2_FFTR(
- rv_fftwf_type_complex *spectrum,
- float *fft_real,
- const int16_t fft_size
-);
void ivas_reverb_fft_filter_ConvertFFTWF_2_FFTR_fx(
rv_fftwf_type_complex_fx *spectrum, // i: Qx
Word32 *fft_real, // o: Qx
@@ -1609,24 +1221,21 @@ void ivas_headTrack_close_fx(
float rad2deg(
float radians
);
-Word32 rad2deg_fx(
- Word32 radians
+void Euler2Quat_fx(
+ const Word32 yaw, /* i : yaw (x) Q22 */
+ const Word32 pitch, /* i : pitch (y) Q22 */
+ const Word32 roll, /* i : roll (z) Q22 */
+ IVAS_QUATERNION *quat /* o : quaternion describing the rotation */
);
-void QuatToRotMat(
- const IVAS_QUATERNION quat, /* i : quaternion describing the rotation */
- float Rmat[3][3] /* o : real-space rotation matrix for this rotation */
+Word32 deg2rad_fx(
+ Word32 degrees
);
-
-void rotateAziEle(
- float azi_in, /* i : output elevation */
- float ele_in, /* i : input elevation */
- int16_t *azi, /* o : rotated azimuth */
- int16_t *ele, /* o : rotated elevation */
- float Rmat[3][3], /* i : real-space rotation matrix */
- const int16_t isPlanar /* i : is roation planar and elevation meaningless? */
+Word32 rad2deg_fx(
+ Word32 radians
);
+
void rotateAziEle_fx(
Word16 azi_in, /* i : output elevation */
Word16 ele_in, /* i : input elevation */
@@ -1700,21 +1309,21 @@ void rotateFrame_sd_cldfb_fixed(
Word32 Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: unrotated HOA3 signal buffer in cldfb domain imag part */
const IVAS_OUTPUT_SETUP_HANDLE hOutputSetup, /* i : output format setup number of channels */
const EFAP_HANDLE hEFAPdata, /* i : EFAP structure */
- const int16_t numTimeSlots, /* i : number of time slots to process */
- const int16_t nb_band /* i : number of CLDFB bands to process */
+ const Word16 numTimeSlots, /* i : number of time slots to process */
+ const Word16 nb_band /* i : number of CLDFB bands to process */
);
ivas_error ivas_external_orientation_open(
EXTERNAL_ORIENTATION_HANDLE *hExtOrientationData, /* o : external orientation handle */
- const int16_t num_subframes /* i : number of subframes */
+ const Word16 num_subframes /* i : number of subframes */
);
void ivas_external_orientation_close_fx(
EXTERNAL_ORIENTATION_HANDLE *hExtOrientationData /* i/o: external orientation handle */
);
ivas_error ivas_combined_orientation_open(
COMBINED_ORIENTATION_HANDLE *hCombinedOrientationData, /* o : combined orientation handle */
- const int32_t fs, /* i : sampling rate */
- const int16_t num_subframes /* i : number of subframes */
+ const Word32 fs, /* i : sampling rate */
+ const Word16 num_subframes /* i : number of subframes */
);
void ivas_combined_orientation_close_fx(
COMBINED_ORIENTATION_HANDLE *hCombinedOrientationData /* i/o: combined orientation handle */
@@ -1774,34 +1383,6 @@ void QuaternionSlerp_fx(
* Orientation tracking
*----------------------------------------------------------------------------------*/
-ivas_error ivas_orient_trk_Init(
- ivas_orient_trk_state_t *pOTR /* i/o: orientation tracker handle */
-);
-
-ivas_error ivas_orient_trk_SetTrackingType(
- ivas_orient_trk_state_t *pOTR, /* i/o: orientation tracker handle */
- const IVAS_HEAD_ORIENT_TRK_T orientation_tracking /* i : orientation tracking type */
-);
-
-ivas_error ivas_orient_trk_SetReferenceRotation(
- ivas_orient_trk_state_t *pOTR, /* i/o: orientatoin trakcer handle */
- const IVAS_QUATERNION refRot /* i : reference rotation */
-);
-
-
-ivas_error ivas_orient_trk_GetTrackedRotation(
- ivas_orient_trk_state_t *pOTR, /* i/o: orientation tracker handle */
- IVAS_QUATERNION *pRotation /* i/o: processed rotation */
-);
-
-ivas_error ivas_orient_trk_Process(
- ivas_orient_trk_state_t *pOTR, /* i/o: orientation tracker handle */
- IVAS_QUATERNION absRot, /* i : absolute head rotation */
- float updateRate, /* i : rotation update rate [Hz] */
- IVAS_QUATERNION *pTrkRot /* o : tracked rotation */
-);
-
-
ivas_error ivas_orient_trk_Init_fx(
ivas_orient_trk_state_t *pOTR /* i/o: orientation tracker handle */
);
@@ -1846,7 +1427,7 @@ ivas_error ivas_orient_trk_Process_fx(
ivas_error ivas_mcmasa_ana_open(
MCMASA_ANA_HANDLE *hMcMasaPtr, /* i/o: McMASA data handle pointer */
const AUDIO_CONFIG inConfig, /* i : Input config */
- int32_t input_Fs /* i : Sampling frequency */
+ Word32 input_Fs /* i : Sampling frequency */
);
void ivas_mcmasa_ana_fx(
MCMASA_ANA_HANDLE hMcMasa, /* i/o: McMASA encoder handle */
@@ -1867,14 +1448,6 @@ ivas_error ivas_omasa_ana_open(
UWord16 total_num_objects /* i : Number of objects */
);
-void ivas_omasa_ana(
- OMASA_ANA_HANDLE hOMasa, /* i/o: OMASA analysis handle */
- float data_in_f[][L_FRAME48k], /* i/o: Input / transport audio signals */
- const int16_t input_frame, /* i : Input frame size */
- const int16_t nchan_transport, /* i : Number of transport channels */
- const int16_t nchan_ism /* i : Number of objects for parameter analysis*/
-);
-
void ivas_omasa_ana_fx(
OMASA_ANA_HANDLE hOMasa, /* i/o: OMASA analysis handle */
Word32 data_in_f_fx[][L_FRAME48k], /* i/o: Input / transport audio signals */
@@ -1894,13 +1467,7 @@ void computeIntensityVector_ana_fx(
const Word16 num_frequency_bands, /* i : Number of frequency bands */
Word32 intensity_real[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS] /* o : Intensity vector 2 * Qx -31 */
);
-void computeIntensityVector_ana(
- const int16_t *band_grouping, /* i : Band grouping for estimation */
- float Cldfb_RealBuffer[FOA_CHANNELS][CLDFB_NO_CHANNELS_MAX], /* i : Real part of input signal */
- float Cldfb_ImagBuffer[FOA_CHANNELS][CLDFB_NO_CHANNELS_MAX], /* i : Imag part of input signal */
- const int16_t num_frequency_bands, /* i : Number of frequency bands */
- float intensity_real[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS] /* o : Intensity vector */
-);
+
void computeReferencePower_ana_fx(
const Word16 *band_grouping, /* i : Band grouping for estimation */
Word32 Cldfb_RealBuffer[FOA_CHANNELS][CLDFB_NO_CHANNELS_MAX], /* i : Real part of input signal input_q */
@@ -1908,13 +1475,6 @@ void computeReferencePower_ana_fx(
Word32 *reference_power, /* o : Estimated power */
const Word16 num_freq_bands /* i : Number of frequency bands 2 * input_q - 31 */
);
-void computeReferencePower_ana(
- const int16_t *band_grouping, /* i : Band grouping for estimation */
- float Cldfb_RealBuffer[FOA_CHANNELS][CLDFB_NO_CHANNELS_MAX], /* i : Real part of input signal */
- float Cldfb_ImagBuffer[FOA_CHANNELS][CLDFB_NO_CHANNELS_MAX], /* i : Imag part of input signal */
- float *reference_power, /* o : Estimated power */
- const int16_t num_freq_bands /* i : Number of frequency bands */
-);
void ivas_create_masa_out_meta_fx(
MASA_DECODER_EXT_OUT_META_HANDLE extOutMeta, /* i/o: MASA metadata handle */
@@ -1930,17 +1490,6 @@ void ivas_create_masa_out_meta_fx(
Word16 surroundingCoherence_q
);
-void ivas_create_masa_out_meta(
- MASA_DECODER_EXT_OUT_META_HANDLE extOutMeta, /* i/o: MASA metadata handle */
- SPHERICAL_GRID_DATA *Sph_Grid16, /* i : Spherical grid */
- const int16_t nchan_transport, /* i : Number of transport channels */
- float elevation_m_values[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : Estimated elevation */
- float azimuth_m_values[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : Estimated azimuth */
- float energyRatio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : Estimated direct-to-total ratio */
- float spreadCoherence[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : Estimated spread coherence */
- float surroundingCoherence[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS] /* i : Estimated surround coherence */
-);
-
ivas_error ivas_dirac_ana_open_fx(
DIRAC_ANA_HANDLE *hDirACPtr, /* i/o: DIRAC data handle pointer */
Word32 input_Fs
@@ -1969,11 +1518,6 @@ void ivas_prerend_merge_masa_metadata_fx(
Word16 *inEne2_e /* i : TF-energy of input 2 Exponent */
);
-void copy_masa_descriptive_meta(
- MASA_DECRIPTIVE_META *outMeta, /* o : metadata to be written */
- MASA_DECRIPTIVE_META *inMeta /* i : input metadata */
-);
-
ivas_error masaPrerendOpen_fx(
MASA_PREREND_HANDLE *hMasaPrerendPtr, /* o : handle to the opened prerenderer */
Word16 numTransports, /* i : number of transport channels */
diff --git a/lib_rend/ivas_reflections_fx.c b/lib_rend/ivas_reflections_fx.c
index 8a2d0993512bbe0c63b74185b6c9147cea71dc0b..3b394af519eeb49fbd8174382446c4e4afcc675d 100644
--- a/lib_rend/ivas_reflections_fx.c
+++ b/lib_rend/ivas_reflections_fx.c
@@ -36,11 +36,9 @@
#include "prot_fx.h"
#include "rom_dec.h"
#include "lib_rend.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_stat_rend.h"
#include "ivas_cnst.h"
-#include "ivas_prot.h"
-#include "ivas_prot_fx.h"
#include "ivas_rom_com.h"
#include "wmc_auto.h"
#include "debug.h"
diff --git a/lib_rend/ivas_render_config_fx.c b/lib_rend/ivas_render_config_fx.c
index d6ca4b875262f9a3dbf2c6948f4e3662ee22fc3f..0ce576cb3416b17527a80e46d2df14a1b18ffe39 100644
--- a/lib_rend/ivas_render_config_fx.c
+++ b/lib_rend/ivas_render_config_fx.c
@@ -33,7 +33,7 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_rom_rend.h"
#include "ivas_rom_TdBinauralRenderer.h"
#include "wmc_auto.h"
diff --git a/lib_rend/ivas_reverb_delay_line_fx.c b/lib_rend/ivas_reverb_delay_line_fx.c
index 44550803a8941112edd9ce133deb3f9a54c23850..d2a6a0c44e2c825c0e31dfb09dca6aeb337d502c 100644
--- a/lib_rend/ivas_reverb_delay_line_fx.c
+++ b/lib_rend/ivas_reverb_delay_line_fx.c
@@ -32,8 +32,7 @@
#include
#include "options.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "prot_fx.h"
#include "wmc_auto.h"
#include "debug.h"
diff --git a/lib_rend/ivas_reverb_fft_filter_fx.c b/lib_rend/ivas_reverb_fft_filter_fx.c
index 2d0722cebcef8ecc09d560e93e33b19e8dbca976..bbe077f8bacdb8d40e1e1cba411dc34bf727a88f 100644
--- a/lib_rend/ivas_reverb_fft_filter_fx.c
+++ b/lib_rend/ivas_reverb_fft_filter_fx.c
@@ -33,7 +33,7 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include
#include "wmc_auto.h"
#include "debug.h"
diff --git a/lib_rend/ivas_reverb_filter_design_fx.c b/lib_rend/ivas_reverb_filter_design_fx.c
index 45e492fc8ec7bcf284bd369c93420b6adcdb0914..62c97f88f4b4c78c399967ee85854c694ac44929 100644
--- a/lib_rend/ivas_reverb_filter_design_fx.c
+++ b/lib_rend/ivas_reverb_filter_design_fx.c
@@ -33,7 +33,7 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include
#include
#include
diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c
index 6b41815c487e50a8dbd97f3e7b8cd8ee80d26a76..870f8795dd4ab6fd0d1a45dbf17205e15df3fda5 100644
--- a/lib_rend/ivas_reverb_fx.c
+++ b/lib_rend/ivas_reverb_fx.c
@@ -33,7 +33,7 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_cnst.h"
#include "math.h"
#include "ivas_rom_rend.h"
@@ -165,13 +165,13 @@ static ivas_error calc_jot_t60_coeffs_fx( Word16 *pH_dB_fx, Word16 pH_dB_exp, co
*
*------------------------------------------------------------------------*/
-static uint16_t binRend_rand(
+static UWord16 binRend_rand(
REVERB_STRUCT_HANDLE hReverb /* i/o: binaural reverb handle */
)
{
hReverb->binRend_RandNext = hReverb->binRend_RandNext * 1103515245 + 12345;
- return (uint16_t) ( hReverb->binRend_RandNext / 65536 ) % 32768;
+ return (UWord16) ( hReverb->binRend_RandNext / 65536 ) % 32768;
}
@@ -886,9 +886,9 @@ static ivas_error calc_jot_t60_coeffs_fx(
Word32 L_tmp;
Word16 f0_fx, tmp_fx, lf_target_gain_dB_fx, hf_target_gain_dB_fx, mid_crossing_gain_dB_fx;
Word16 lin_gain_lf_fx, lin_gain_hf_fx, shift, expl, exph;
- int16_t f_idx, e = pH_dB_exp;
+ Word16 f_idx, e = pH_dB_exp;
move16();
- uint16_t n_points_lf, n_points_hf;
+ UWord16 n_points_lf, n_points_hf;
lf_target_gain_dB_fx = 0;
move16();
@@ -1471,7 +1471,7 @@ ivas_error ivas_reverb_open_fx(
{
ivas_error error;
REVERB_HANDLE pState = NULL;
- Word16 bin_idx, subframe_len, output_frame, predelay_bf_len, loop_idx;
+ Word16 bin_idx, subframe_len, output_frame, predelay_bf_len, loop_idx, i;
ivas_reverb_params_t params;
Word32 pColor_target_l_fx[RV_LENGTH_NR_FC];
Word32 pColor_target_r_fx[RV_LENGTH_NR_FC];
@@ -1559,7 +1559,7 @@ ivas_error ivas_reverb_open_fx(
set_reverb_acoustic_data_fx( ¶ms, input_audio_config, hHrtf, &hRenderConfig->roomAcoustics, subframe_len, nr_fc_input, nr_fc_fft_filter );
Scale_sig32( params.pFc_fx, nr_fc_fft_filter, -2 );
- FOR( Word16 i = 0; i < nr_fc_fft_filter; i++ )
+ FOR( i = 0; i < nr_fc_fft_filter; i++ )
{
params.pRt60_fx[i] = L_abs( params.pRt60_fx[i] );
move32();
@@ -1601,7 +1601,7 @@ ivas_error ivas_reverb_open_fx(
Word32 *pT60_filter_coeff = (Word32 *) malloc( ( lenT60_filter_coeff ) * sizeof( Word32 * ) );
- FOR( Word16 i = 0; i < nr_fc_fft_filter; i++ )
+ FOR( i = 0; i < nr_fc_fft_filter; i++ )
{
params.pDsr_fx[i] = L_shl( params.pDsr_fx[i], params.pDsr_e[i] );
move32();
@@ -1610,7 +1610,7 @@ ivas_error ivas_reverb_open_fx(
pHrtf_avg_pwr_response_r_const[i] = L_shl( params.pHrtf_avg_pwr_response_r_const_fx[i], 5 ); /*Q23+5*/
move32();
}
- FOR( Word16 i = 0; i < lenT60_filter_coeff; i++ )
+ FOR( i = 0; i < lenT60_filter_coeff; i++ )
{
pT60_filter_coeff[i] = L_shl_sat( params.pT60_filter_coeff_fx[i], 17 );
move32();
@@ -1648,20 +1648,20 @@ ivas_error ivas_reverb_open_fx(
{
/* Computing correlation filters on the basis of target IA coherence */
#ifdef MSAN_FIX
- FOR( int i = 0; i < shl( sub( nr_fc_fft_filter, 1 ), 1 ); i++ )
+ FOR( i = 0; i < shl( sub( nr_fc_fft_filter, 1 ), 1 ); i++ )
{
pTime_window_fx[i] = L_shr( pTime_window_fx[i], 1 ); /*Scaling signal down to 30*/
move32();
}
#else
- FOR( int i = 0; i < RV_FILTER_MAX_FFT_SIZE; i++ )
+ FOR( i = 0; i < RV_FILTER_MAX_FFT_SIZE; i++ )
{
pTime_window_fx[i] = L_shr( pTime_window_fx[i], 1 ); /*Scaling signal down to 30*/
}
#endif // MSAN_FIX
Word32 *pHrtf_inter_aural_coherence_const = (Word32 *) malloc( nr_fc_fft_filter * sizeof( Word32 ) );
- FOR( Word16 i = 0; i < nr_fc_fft_filter; i++ )
+ FOR( i = 0; i < nr_fc_fft_filter; i++ )
{
pHrtf_inter_aural_coherence_const[i] = L_shl( params.pHrtf_inter_aural_coherence_const_fx[i], 3 ); /*Scaling up to Q30*/
move32();
@@ -1670,14 +1670,14 @@ ivas_error ivas_reverb_open_fx(
free( pHrtf_inter_aural_coherence_const );
- FOR( Word16 i = 0; i < nr_fc_fft_filter; i++ )
+ FOR( i = 0; i < nr_fc_fft_filter; i++ )
{
pFft_wf_filter_ch0_fx[i][0] = L_shl( pFft_wf_filter_ch0_fx[i][0], sub( 31, q_pFft_wf_filter_ch0_fx ) );
move32();
pFft_wf_filter_ch0_fx[i][1] = L_shl( pFft_wf_filter_ch0_fx[i][1], sub( 31, q_pFft_wf_filter_ch0_fx ) );
move32();
}
- FOR( Word16 i = 0; i < nr_fc_fft_filter; i++ )
+ FOR( i = 0; i < nr_fc_fft_filter; i++ )
{
pFft_wf_filter_ch1_fx[i][0] = L_shl( pFft_wf_filter_ch1_fx[i][0], sub( 31, q_pFft_wf_filter_ch1_fx ) );
move32();
@@ -1699,14 +1699,14 @@ ivas_error ivas_reverb_open_fx(
/* Computing coloration filters on the basis of target responses */
ivas_reverb_calc_color_filters_fx( pColor_target_l_fx, pColor_target_r_fx, pTime_window_fx, pState->fft_size, pFft_wf_filter_ch0_fx, pFft_wf_filter_ch1_fx, &q_pFft_wf_filter_ch0_fx, &q_pFft_wf_filter_ch1_fx );
- FOR( int i = 0; i < nr_fc_fft_filter; i++ )
+ FOR( i = 0; i < nr_fc_fft_filter; i++ )
{
pFft_wf_filter_ch0_fx[i][0] = L_shl( pFft_wf_filter_ch0_fx[i][0], sub( 31, q_pFft_wf_filter_ch0_fx ) );
move32();
pFft_wf_filter_ch0_fx[i][1] = L_shl( pFft_wf_filter_ch0_fx[i][1], sub( 31, q_pFft_wf_filter_ch0_fx ) );
move32();
}
- FOR( Word16 i = 0; i < nr_fc_fft_filter; i++ )
+ FOR( i = 0; i < nr_fc_fft_filter; i++ )
{
pFft_wf_filter_ch1_fx[i][0] = L_shl( pFft_wf_filter_ch1_fx[i][0], sub( 31, q_pFft_wf_filter_ch1_fx ) );
move32();
@@ -2492,7 +2492,7 @@ ivas_error ivas_binaural_reverb_open_parambin(
const Word16 numBins, /* i : number of CLDFB bins Q0 */
const Word16 numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame Q0 */
IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */
- const int32_t sampling_rate, /* i : sampling rate Q0 */
+ const Word32 sampling_rate, /* i : sampling rate Q0 */
const HRTFS_PARAMBIN_HANDLE hHrtfParambin /* i : Parametric binauralizer HRTF handle */
)
{
diff --git a/lib_rend/ivas_reverb_iir_filter_fx.c b/lib_rend/ivas_reverb_iir_filter_fx.c
index 98b66e0c77c65c4949bbd174c3758e419de6f26d..e09ec70055ccf358879a06134430ec4765136b78 100644
--- a/lib_rend/ivas_reverb_iir_filter_fx.c
+++ b/lib_rend/ivas_reverb_iir_filter_fx.c
@@ -33,7 +33,7 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "wmc_auto.h"
#include "debug.h"
#define float_to_fix( n, factor ) ( round( n * ( 1 << factor ) ) )
diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c
index ee2bada9d7caca44043cbc6efe27aae49fbc6599..b3e1e72fa1f947d9930e486943970c422f2097a3 100644
--- a/lib_rend/ivas_reverb_utils_fx.c
+++ b/lib_rend/ivas_reverb_utils_fx.c
@@ -33,7 +33,7 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_rom_rend.h"
#include
#include "wmc_auto.h"
diff --git a/lib_rend/ivas_rom_binaural_crend_head.h b/lib_rend/ivas_rom_binaural_crend_head.h
index bc0d3cd17b39e6ef7dbba4ff6e2ef937866b6ae0..2b4c3e919fcb39f74d9d8ae84b4a89ea1bf52ecf 100644
--- a/lib_rend/ivas_rom_binaural_crend_head.h
+++ b/lib_rend/ivas_rom_binaural_crend_head.h
@@ -56,13 +56,13 @@ extern Word32 CRendBin_Combined_HRIR_latency_s_fx;
/* Sample Rate = 48000 */
-extern int16_t CRendBin_Combined_HRIR_max_num_iterations_48kHz;
-extern uint16_t CRendBin_Combined_HRIR_num_iterations_48kHz[15][BINAURAL_CHANNELS];
-extern uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
-extern uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][1];
-extern uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_48kHz;
+extern Word16 CRendBin_Combined_HRIR_max_num_iterations_48kHz;
+extern UWord16 CRendBin_Combined_HRIR_num_iterations_48kHz[15][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_48kHz;
extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[15];
-extern uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS];
+extern UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS];
extern Word32 CRendBin_Combined_HRIR_coeff_re_48kHz_fx[15][BINAURAL_CHANNELS][240];
extern Word32 CRendBin_Combined_HRIR_coeff_im_48kHz_fx[15][BINAURAL_CHANNELS][240];
extern Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS];
@@ -70,13 +70,13 @@ extern Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNEL
/* Sample Rate = 32000 */
-extern int16_t CRendBin_Combined_HRIR_max_num_iterations_32kHz;
-extern uint16_t CRendBin_Combined_HRIR_num_iterations_32kHz[15][BINAURAL_CHANNELS];
-extern uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
-extern uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][1];
-extern uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_32kHz;
+extern Word16 CRendBin_Combined_HRIR_max_num_iterations_32kHz;
+extern UWord16 CRendBin_Combined_HRIR_num_iterations_32kHz[15][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_32kHz;
extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[15];
-extern uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS];
+extern UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS];
extern Word32 CRendBin_Combined_HRIR_coeff_re_32kHz_fx[15][BINAURAL_CHANNELS][160];
extern Word32 CRendBin_Combined_HRIR_coeff_im_32kHz_fx[15][BINAURAL_CHANNELS][160];
extern Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS];
@@ -84,13 +84,13 @@ extern Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNEL
/* Sample Rate = 16000 */
-extern int16_t CRendBin_Combined_HRIR_max_num_iterations_16kHz;
-extern uint16_t CRendBin_Combined_HRIR_num_iterations_16kHz[15][BINAURAL_CHANNELS];
-extern uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
-extern uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][1];
-extern uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_16kHz;
+extern Word16 CRendBin_Combined_HRIR_max_num_iterations_16kHz;
+extern UWord16 CRendBin_Combined_HRIR_num_iterations_16kHz[15][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_16kHz;
extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[15];
-extern uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS];
+extern UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS];
extern Word32 CRendBin_Combined_HRIR_coeff_re_16kHz_fx[15][BINAURAL_CHANNELS][80];
extern Word32 CRendBin_Combined_HRIR_coeff_im_16kHz_fx[15][BINAURAL_CHANNELS][80];
extern Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS];
@@ -105,13 +105,13 @@ extern Word32 CRendBin_FOA_HRIR_latency_s_fx;
/* Sample Rate = 48000 */
-extern int16_t CRendBin_FOA_HRIR_max_num_iterations_48kHz;
-extern uint16_t CRendBin_FOA_HRIR_num_iterations_48kHz[4][BINAURAL_CHANNELS];
-extern uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
-extern uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[4][BINAURAL_CHANNELS][1];
-extern uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_48kHz;
+extern Word16 CRendBin_FOA_HRIR_max_num_iterations_48kHz;
+extern UWord16 CRendBin_FOA_HRIR_num_iterations_48kHz[4][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
+extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[4][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_48kHz;
extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[4];
-extern uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS];
+extern UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS];
extern Word32 CRendBin_FOA_HRIR_coeff_re_48kHz_fx[4][BINAURAL_CHANNELS][240];
extern Word32 CRendBin_FOA_HRIR_coeff_im_48kHz_fx[4][BINAURAL_CHANNELS][240];
extern Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS];
@@ -119,13 +119,13 @@ extern Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS];
/* Sample Rate = 32000 */
-extern int16_t CRendBin_FOA_HRIR_max_num_iterations_32kHz;
-extern uint16_t CRendBin_FOA_HRIR_num_iterations_32kHz[4][BINAURAL_CHANNELS];
-extern uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
-extern uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[4][BINAURAL_CHANNELS][1];
-extern uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_32kHz;
+extern Word16 CRendBin_FOA_HRIR_max_num_iterations_32kHz;
+extern UWord16 CRendBin_FOA_HRIR_num_iterations_32kHz[4][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
+extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[4][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_32kHz;
extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[4];
-extern uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS];
+extern UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS];
extern Word32 CRendBin_FOA_HRIR_coeff_re_32kHz_fx[4][BINAURAL_CHANNELS][160];
extern Word32 CRendBin_FOA_HRIR_coeff_im_32kHz_fx[4][BINAURAL_CHANNELS][160];
extern Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS];
@@ -133,13 +133,13 @@ extern Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS];
/* Sample Rate = 16000 */
-extern int16_t CRendBin_FOA_HRIR_max_num_iterations_16kHz;
-extern uint16_t CRendBin_FOA_HRIR_num_iterations_16kHz[4][BINAURAL_CHANNELS];
-extern uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
-extern uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[4][BINAURAL_CHANNELS][1];
-extern uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_16kHz;
+extern Word16 CRendBin_FOA_HRIR_max_num_iterations_16kHz;
+extern UWord16 CRendBin_FOA_HRIR_num_iterations_16kHz[4][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
+extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[4][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_16kHz;
extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[4];
-extern uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS];
+extern UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS];
extern Word32 CRendBin_FOA_HRIR_coeff_re_16kHz_fx[4][BINAURAL_CHANNELS][80];
extern Word32 CRendBin_FOA_HRIR_coeff_im_16kHz_fx[4][BINAURAL_CHANNELS][80];
extern Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS];
@@ -153,13 +153,13 @@ extern Word32 CRendBin_HOA2_HRIR_latency_s_fx;
/* Sample Rate = 48000 */
-extern int16_t CRendBin_HOA2_HRIR_max_num_iterations_48kHz;
-extern uint16_t CRendBin_HOA2_HRIR_num_iterations_48kHz[9][BINAURAL_CHANNELS];
-extern uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
-extern uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[9][BINAURAL_CHANNELS][1];
-extern uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_48kHz;
+extern Word16 CRendBin_HOA2_HRIR_max_num_iterations_48kHz;
+extern UWord16 CRendBin_HOA2_HRIR_num_iterations_48kHz[9][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[9][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_48kHz;
extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[9];
-extern uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS];
+extern UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS];
extern Word32 CRendBin_HOA2_HRIR_coeff_re_48kHz_fx[9][BINAURAL_CHANNELS][240];
extern Word32 CRendBin_HOA2_HRIR_coeff_im_48kHz_fx[9][BINAURAL_CHANNELS][240];
extern Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS];
@@ -167,13 +167,13 @@ extern Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS];
/* Sample Rate = 32000 */
-extern int16_t CRendBin_HOA2_HRIR_max_num_iterations_32kHz;
-extern uint16_t CRendBin_HOA2_HRIR_num_iterations_32kHz[9][BINAURAL_CHANNELS];
-extern uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
-extern uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[9][BINAURAL_CHANNELS][1];
-extern uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_32kHz;
+extern Word16 CRendBin_HOA2_HRIR_max_num_iterations_32kHz;
+extern UWord16 CRendBin_HOA2_HRIR_num_iterations_32kHz[9][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[9][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_32kHz;
extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[9];
-extern uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS];
+extern UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS];
extern Word32 CRendBin_HOA2_HRIR_coeff_re_32kHz_fx[9][BINAURAL_CHANNELS][160];
extern Word32 CRendBin_HOA2_HRIR_coeff_im_32kHz_fx[9][BINAURAL_CHANNELS][160];
extern Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS];
@@ -181,13 +181,13 @@ extern Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS];
/* Sample Rate = 16000 */
-extern int16_t CRendBin_HOA2_HRIR_max_num_iterations_16kHz;
-extern uint16_t CRendBin_HOA2_HRIR_num_iterations_16kHz[9][BINAURAL_CHANNELS];
-extern uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
-extern uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[9][BINAURAL_CHANNELS][1];
-extern uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_16kHz;
+extern Word16 CRendBin_HOA2_HRIR_max_num_iterations_16kHz;
+extern UWord16 CRendBin_HOA2_HRIR_num_iterations_16kHz[9][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[9][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_16kHz;
extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[9];
-extern uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS];
+extern UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS];
extern Word32 CRendBin_HOA2_HRIR_coeff_re_16kHz_fx[9][BINAURAL_CHANNELS][80];
extern Word32 CRendBin_HOA2_HRIR_coeff_im_16kHz_fx[9][BINAURAL_CHANNELS][80];
extern Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS];
@@ -200,13 +200,13 @@ extern Word32 CRendBin_HOA3_HRIR_latency_s_fx;
/* Sample Rate = 48000 */
-extern int16_t CRendBin_HOA3_HRIR_max_num_iterations_48kHz;
-extern uint16_t CRendBin_HOA3_HRIR_num_iterations_48kHz[16][BINAURAL_CHANNELS];
-extern uint16_t CRendBin_HOA3_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
-extern uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[16][BINAURAL_CHANNELS][1];
-extern uint16_t CRendBin_HOA3_HRIR_index_frequency_max_diffuse_48kHz;
+extern Word16 CRendBin_HOA3_HRIR_max_num_iterations_48kHz;
+extern UWord16 CRendBin_HOA3_HRIR_num_iterations_48kHz[16][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[16][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_48kHz;
extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[16];
-extern uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS];
+extern UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS];
extern Word32 CRendBin_HOA3_HRIR_coeff_re_48kHz_fx[16][BINAURAL_CHANNELS][240];
extern Word32 CRendBin_HOA3_HRIR_coeff_im_48kHz_fx[16][BINAURAL_CHANNELS][240];
extern Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS];
@@ -214,13 +214,13 @@ extern Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS];
/* Sample Rate = 32000 */
-extern int16_t CRendBin_HOA3_HRIR_max_num_iterations_32kHz;
-extern uint16_t CRendBin_HOA3_HRIR_num_iterations_32kHz[16][BINAURAL_CHANNELS];
-extern uint16_t CRendBin_HOA3_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
-extern uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[16][BINAURAL_CHANNELS][1];
-extern uint16_t CRendBin_HOA3_HRIR_index_frequency_max_diffuse_32kHz;
+extern Word16 CRendBin_HOA3_HRIR_max_num_iterations_32kHz;
+extern UWord16 CRendBin_HOA3_HRIR_num_iterations_32kHz[16][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[16][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_32kHz;
extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[16];
-extern uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS];
+extern UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS];
extern Word32 CRendBin_HOA3_HRIR_coeff_re_32kHz_fx[16][BINAURAL_CHANNELS][160];
extern Word32 CRendBin_HOA3_HRIR_coeff_im_32kHz_fx[16][BINAURAL_CHANNELS][160];
extern Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS];
@@ -228,13 +228,13 @@ extern Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS];
/* Sample Rate = 16000 */
-extern int16_t CRendBin_HOA3_HRIR_max_num_iterations_16kHz;
-extern uint16_t CRendBin_HOA3_HRIR_num_iterations_16kHz[16][BINAURAL_CHANNELS];
-extern uint16_t CRendBin_HOA3_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
-extern uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[16][BINAURAL_CHANNELS][1];
-extern uint16_t CRendBin_HOA3_HRIR_index_frequency_max_diffuse_16kHz;
+extern Word16 CRendBin_HOA3_HRIR_max_num_iterations_16kHz;
+extern UWord16 CRendBin_HOA3_HRIR_num_iterations_16kHz[16][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
+extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[16][BINAURAL_CHANNELS][1];
+extern UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_16kHz;
extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[16];
-extern uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS];
+extern UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS];
extern Word32 CRendBin_HOA3_HRIR_coeff_re_16kHz_fx[16][BINAURAL_CHANNELS][80];
extern Word32 CRendBin_HOA3_HRIR_coeff_im_16kHz_fx[16][BINAURAL_CHANNELS][80];
extern Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS];
@@ -248,13 +248,13 @@ extern Word32 CRendBin_Combined_BRIR_latency_s_fx;
/* Sample Rate = 48000 */
-extern int16_t CRendBin_Combined_BRIR_max_num_iterations_48kHz;
-extern uint16_t CRendBin_Combined_BRIR_num_iterations_48kHz[15][BINAURAL_CHANNELS];
-extern uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
-extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][22];
-extern uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz;
+extern Word16 CRendBin_Combined_BRIR_max_num_iterations_48kHz;
+extern UWord16 CRendBin_Combined_BRIR_num_iterations_48kHz[15][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][22];
+extern UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz;
extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[15];
-extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS][40];
+extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS][40];
extern Word32 CRendBin_Combined_BRIR_coeff_re_48kHz_fx[15][BINAURAL_CHANNELS][2955];
extern Word32 CRendBin_Combined_BRIR_coeff_im_48kHz_fx[15][BINAURAL_CHANNELS][2955];
extern Word32 CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS][2885];
@@ -262,13 +262,13 @@ extern Word32 CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS
/* Sample Rate = 32000 */
-extern int16_t CRendBin_Combined_BRIR_max_num_iterations_32kHz;
-extern uint16_t CRendBin_Combined_BRIR_num_iterations_32kHz[15][BINAURAL_CHANNELS];
-extern uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
-extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][22];
-extern uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz;
+extern Word16 CRendBin_Combined_BRIR_max_num_iterations_32kHz;
+extern UWord16 CRendBin_Combined_BRIR_num_iterations_32kHz[15][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][22];
+extern UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz;
extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[15];
-extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS][40];
+extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS][40];
extern Word32 CRendBin_Combined_BRIR_coeff_re_32kHz_fx[15][BINAURAL_CHANNELS][2819];
extern Word32 CRendBin_Combined_BRIR_coeff_im_32kHz_fx[15][BINAURAL_CHANNELS][2819];
extern Word32 CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS][2870];
@@ -276,13 +276,13 @@ extern Word32 CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS
/* Sample Rate = 16000 */
-extern int16_t CRendBin_Combined_BRIR_max_num_iterations_16kHz;
-extern uint16_t CRendBin_Combined_BRIR_num_iterations_16kHz[15][BINAURAL_CHANNELS];
-extern uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
-extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][23];
-extern uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz;
+extern Word16 CRendBin_Combined_BRIR_max_num_iterations_16kHz;
+extern UWord16 CRendBin_Combined_BRIR_num_iterations_16kHz[15][BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
+extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][23];
+extern UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz;
extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[15];
-extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS][40];
+extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS][40];
extern Word32 CRendBin_Combined_BRIR_coeff_re_16kHz_fx[15][BINAURAL_CHANNELS][1774];
extern Word32 CRendBin_Combined_BRIR_coeff_im_16kHz_fx[15][BINAURAL_CHANNELS][1774];
extern Word32 CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS][2522];
diff --git a/lib_rend/ivas_rom_binaural_crend_head_fx.c b/lib_rend/ivas_rom_binaural_crend_head_fx.c
index 068ce09272825eac1fc872221a8320cc3156fe65..be015058b11ea110a13953c52676ad6ac5cdc9b3 100644
--- a/lib_rend/ivas_rom_binaural_crend_head_fx.c
+++ b/lib_rend/ivas_rom_binaural_crend_head_fx.c
@@ -56,35 +56,35 @@
const Word32 CRendBin_Combined_HRIR_latency_s_fx = 44741;/*Q-31*/
/* Sample Rate = 48000 */
-const int16_t CRendBin_Combined_HRIR_max_num_iterations_48kHz = 1;
-const uint16_t CRendBin_Combined_HRIR_num_iterations_48kHz[15][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
-const uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0};
-const uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}};
-const uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_48kHz = 0;
+const Word16 CRendBin_Combined_HRIR_max_num_iterations_48kHz = 1;
+const UWord16 CRendBin_Combined_HRIR_num_iterations_48kHz[15][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0};
+const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}};
+const UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_48kHz = 0;
const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[15]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
-const uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL};
+const UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
/* Sample Rate = 32000 */
-const int16_t CRendBin_Combined_HRIR_max_num_iterations_32kHz = 1;
-const uint16_t CRendBin_Combined_HRIR_num_iterations_32kHz[15][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
-const uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0};
-const uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}};
-const uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_32kHz = 0;
+const Word16 CRendBin_Combined_HRIR_max_num_iterations_32kHz = 1;
+const UWord16 CRendBin_Combined_HRIR_num_iterations_32kHz[15][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0};
+const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}};
+const UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_32kHz = 0;
const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[15]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
-const uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL};
+const UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
/* Sample Rate = 16000 */
-const int16_t CRendBin_Combined_HRIR_max_num_iterations_16kHz = 1;
-const uint16_t CRendBin_Combined_HRIR_num_iterations_16kHz[15][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
-const uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0};
-const uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}};
-const uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_16kHz = 0;
+const Word16 CRendBin_Combined_HRIR_max_num_iterations_16kHz = 1;
+const UWord16 CRendBin_Combined_HRIR_num_iterations_16kHz[15][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0};
+const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}};
+const UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_16kHz = 0;
const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[15]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
-const uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL};
+const UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
@@ -96,35 +96,35 @@ const Word32 CRendBin_FOA_HRIR_latency_s_fx = 44741; // Q31
/* Sample Rate = 48000 */
-const int16_t CRendBin_FOA_HRIR_max_num_iterations_48kHz = 1;
-const uint16_t CRendBin_FOA_HRIR_num_iterations_48kHz[4][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} };
-const uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0};
-const uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[4][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}};
-const uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_48kHz = 0;
+const Word16 CRendBin_FOA_HRIR_max_num_iterations_48kHz = 1;
+const UWord16 CRendBin_FOA_HRIR_num_iterations_48kHz[4][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0};
+const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[4][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}};
+const UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_48kHz = 0;
const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[4]={0, 0, 0, 0};
-const uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL};
+const UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
/* Sample Rate = 32000 */
-const int16_t CRendBin_FOA_HRIR_max_num_iterations_32kHz = 1;
-const uint16_t CRendBin_FOA_HRIR_num_iterations_32kHz[4][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} };
-const uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0};
-const uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[4][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}};
-const uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_32kHz = 0;
+const Word16 CRendBin_FOA_HRIR_max_num_iterations_32kHz = 1;
+const UWord16 CRendBin_FOA_HRIR_num_iterations_32kHz[4][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0};
+const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[4][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}};
+const UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_32kHz = 0;
const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[4]={0, 0, 0, 0};
-const uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL};
+const UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
/* Sample Rate = 16000 */
-const int16_t CRendBin_FOA_HRIR_max_num_iterations_16kHz = 1;
-const uint16_t CRendBin_FOA_HRIR_num_iterations_16kHz[4][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} };
-const uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0};
-const uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[4][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}};
-const uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_16kHz = 0;
+const Word16 CRendBin_FOA_HRIR_max_num_iterations_16kHz = 1;
+const UWord16 CRendBin_FOA_HRIR_num_iterations_16kHz[4][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0};
+const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[4][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}};
+const UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_16kHz = 0;
const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[4]={0, 0, 0, 0};
-const uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL};
+const UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
@@ -135,35 +135,35 @@ const Word32 CRendBin_HOA2_HRIR_latency_s_fx = 44741; // Q31
/* Sample Rate = 48000 */
-const int16_t CRendBin_HOA2_HRIR_max_num_iterations_48kHz = 1;
-const uint16_t CRendBin_HOA2_HRIR_num_iterations_48kHz[9][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
-const uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0};
-const uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[9][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}};
-const uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_48kHz = 0;
+const Word16 CRendBin_HOA2_HRIR_max_num_iterations_48kHz = 1;
+const UWord16 CRendBin_HOA2_HRIR_num_iterations_48kHz[9][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0};
+const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[9][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}};
+const UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_48kHz = 0;
const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[9]={0, 0, 0, 0, 0, 0, 0, 0, 0};
-const uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL};
+const UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
/* Sample Rate = 32000 */
-const int16_t CRendBin_HOA2_HRIR_max_num_iterations_32kHz = 1;
-const uint16_t CRendBin_HOA2_HRIR_num_iterations_32kHz[9][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
-const uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0};
-const uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[9][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}};
-const uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_32kHz = 0;
+const Word16 CRendBin_HOA2_HRIR_max_num_iterations_32kHz = 1;
+const UWord16 CRendBin_HOA2_HRIR_num_iterations_32kHz[9][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0};
+const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[9][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}};
+const UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_32kHz = 0;
const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[9]={0, 0, 0, 0, 0, 0, 0, 0, 0};
-const uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL};
+const UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
/* Sample Rate = 16000 */
-const int16_t CRendBin_HOA2_HRIR_max_num_iterations_16kHz = 1;
-const uint16_t CRendBin_HOA2_HRIR_num_iterations_16kHz[9][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
-const uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0};
-const uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[9][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}};
-const uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_16kHz = 0;
+const Word16 CRendBin_HOA2_HRIR_max_num_iterations_16kHz = 1;
+const UWord16 CRendBin_HOA2_HRIR_num_iterations_16kHz[9][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0};
+const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[9][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}};
+const UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_16kHz = 0;
const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[9]={0, 0, 0, 0, 0, 0, 0, 0, 0};
-const uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL};
+const UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
@@ -173,36 +173,36 @@ const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={N
const Word32 CRendBin_HOA3_HRIR_latency_s_fx = 44741;/*Q-31*/
/* Sample Rate = 48000 */
-const int16_t CRendBin_HOA3_HRIR_max_num_iterations_48kHz = 1;
-const uint16_t CRendBin_HOA3_HRIR_num_iterations_48kHz[16][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
-const uint16_t CRendBin_HOA3_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0};
-const uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[16][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}};
-const uint16_t CRendBin_HOA3_HRIR_index_frequency_max_diffuse_48kHz = 0;
+const Word16 CRendBin_HOA3_HRIR_max_num_iterations_48kHz = 1;
+const UWord16 CRendBin_HOA3_HRIR_num_iterations_48kHz[16][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0};
+const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[16][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}};
+const UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_48kHz = 0;
const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[16]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-const uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL};
+const UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
/* Sample Rate = 32000 */
-const int16_t CRendBin_HOA3_HRIR_max_num_iterations_32kHz = 1;
-const uint16_t CRendBin_HOA3_HRIR_num_iterations_32kHz[16][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
-const uint16_t CRendBin_HOA3_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0};
-const uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[16][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}};
-const uint16_t CRendBin_HOA3_HRIR_index_frequency_max_diffuse_32kHz = 0;
+const Word16 CRendBin_HOA3_HRIR_max_num_iterations_32kHz = 1;
+const UWord16 CRendBin_HOA3_HRIR_num_iterations_32kHz[16][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0};
+const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[16][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}};
+const UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_32kHz = 0;
const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[16]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-const uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL};
+const UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
/* Sample Rate = 16000 */
-const int16_t CRendBin_HOA3_HRIR_max_num_iterations_16kHz = 1;
-const uint16_t CRendBin_HOA3_HRIR_num_iterations_16kHz[16][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
-const uint16_t CRendBin_HOA3_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0};
-const uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[16][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}};
-const uint16_t CRendBin_HOA3_HRIR_index_frequency_max_diffuse_16kHz = 0;
+const Word16 CRendBin_HOA3_HRIR_max_num_iterations_16kHz = 1;
+const UWord16 CRendBin_HOA3_HRIR_num_iterations_16kHz[16][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} };
+const UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0};
+const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[16][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}};
+const UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_16kHz = 0;
const float CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz[16]={0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f};
const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[16]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-const uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL};
+const UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL};
@@ -212,34 +212,34 @@ const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={N
const Word32 CRendBin_Combined_BRIR_latency_s_fx = 313176;/*Q-31*/
/* Sample Rate = 48000 */
-const int16_t CRendBin_Combined_BRIR_max_num_iterations_48kHz = 22;
-const uint16_t CRendBin_Combined_BRIR_num_iterations_48kHz[15][BINAURAL_CHANNELS]={{22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22} };
-const uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {40, 40};
-const uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][22]={{{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240},{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240}},{{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240},{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240}},{{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240},{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240}},{{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240},{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240}},{{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240},{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240}},{{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240},{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240}},{{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240},{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240}},{{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240},{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240}},{{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240},{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240}},{{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240},{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240}},{{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240},{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240}},{{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240},{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240}},{{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240},{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240}},{{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240},{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240}},{{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240},{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240}}};
-const uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz = 98;
+const Word16 CRendBin_Combined_BRIR_max_num_iterations_48kHz = 22;
+const UWord16 CRendBin_Combined_BRIR_num_iterations_48kHz[15][BINAURAL_CHANNELS]={{22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22} };
+const UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {40, 40};
+const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][22]={{{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240},{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240}},{{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240},{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240}},{{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240},{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240}},{{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240},{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240}},{{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240},{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240}},{{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240},{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240}},{{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240},{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240}},{{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240},{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240}},{{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240},{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240}},{{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240},{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240}},{{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240},{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240}},{{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240},{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240}},{{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240},{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240}},{{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240},{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240}},{{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240},{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240}}};
+const UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz = 98;
const float CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[15]={0.224183f, 0.227455f, 0.241830f, 0.207155f, 0.218087f, 0.222942f, 0.232158f, 0.248203f, 0.249262f, 0.261591f, 0.246276f, 0.279163f, 0.285701f, 0.262541f, 0.271844f};
const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[15]={7346, 7453, 7924, 6788, 7146, 7305, 7607, 8133, 8167, 8571, 8069, 9147, 9361, 8602, 8907,};
-const uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS][40]={{47, 47, 47, 47, 47, 47, 51, 51, 58, 58, 58, 65, 65, 65, 65, 65, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 91, 91, 93, 93, 93, 98},{47, 47, 47, 47, 47, 47, 51, 51, 58, 58, 58, 65, 65, 65, 65, 65, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 91, 91, 93, 93, 93, 98}};
+const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS][40]={{47, 47, 47, 47, 47, 47, 51, 51, 58, 58, 58, 65, 65, 65, 65, 65, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 91, 91, 93, 93, 93, 98},{47, 47, 47, 47, 47, 47, 51, 51, 58, 58, 58, 65, 65, 65, 65, 65, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 91, 91, 93, 93, 93, 98}};
/* Sample Rate = 32000 */
-const int16_t CRendBin_Combined_BRIR_max_num_iterations_32kHz = 22;
-const uint16_t CRendBin_Combined_BRIR_num_iterations_32kHz[15][BINAURAL_CHANNELS]={{22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22} };
-const uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {40, 40};
-const uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][22]={{{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 137, 134, 129, 128, 160},{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 137, 134, 129, 128, 160}},{{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 139, 133, 131, 128, 160},{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 139, 133, 131, 128, 160}},{{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 128, 160},{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 128, 160}},{{102, 116, 116, 121, 116, 114, 115, 121, 125, 123, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 125, 160},{102, 116, 116, 121, 116, 114, 115, 121, 125, 123, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 125, 160}},{{115, 115, 115, 119, 121, 119, 125, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 140, 146, 127, 131, 160},{115, 115, 115, 119, 121, 119, 125, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 140, 146, 127, 131, 160}},{{112, 106, 118, 121, 115, 117, 129, 123, 128, 126, 130, 130, 131, 131, 130, 134, 133, 149, 130, 132, 126, 160},{112, 106, 118, 121, 115, 117, 129, 123, 128, 126, 130, 130, 131, 131, 130, 134, 133, 149, 130, 132, 126, 160}},{{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 124, 133, 130, 129, 134, 134, 135, 127, 120, 160},{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 124, 133, 130, 129, 134, 134, 135, 127, 120, 160}},{{110, 113, 123, 113, 121, 120, 120, 126, 131, 123, 128, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160},{110, 113, 123, 113, 121, 120, 120, 126, 131, 123, 128, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160}},{{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 127, 136, 128, 128, 127, 132, 132, 129, 125, 120, 160},{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 127, 136, 128, 128, 127, 132, 132, 129, 125, 120, 160}},{{99, 100, 111, 117, 114, 114, 118, 116, 121, 124, 124, 121, 125, 130, 127, 132, 132, 130, 133, 128, 131, 160},{99, 100, 111, 117, 114, 114, 118, 116, 121, 124, 124, 121, 125, 130, 127, 132, 132, 130, 133, 128, 131, 160}},{{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 136, 128, 128, 160},{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 136, 128, 128, 160}},{{105, 100, 112, 114, 115, 108, 117, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 139, 153, 116, 160},{105, 100, 112, 114, 115, 108, 117, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 139, 153, 116, 160}},{{110, 106, 113, 110, 122, 116, 119, 125, 123, 128, 125, 127, 128, 127, 133, 130, 132, 132, 143, 155, 127, 160},{110, 106, 113, 110, 122, 116, 119, 125, 123, 128, 125, 127, 128, 127, 133, 130, 132, 132, 143, 155, 127, 160}},{{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 135, 127, 160},{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 135, 127, 160}},{{110, 117, 106, 118, 118, 116, 121, 124, 128, 125, 122, 122, 126, 131, 124, 130, 133, 131, 139, 134, 131, 160},{110, 117, 106, 118, 118, 116, 121, 124, 128, 125, 122, 122, 126, 131, 124, 130, 133, 131, 139, 134, 131, 160}}};
-const uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz = 97;
+const Word16 CRendBin_Combined_BRIR_max_num_iterations_32kHz = 22;
+const UWord16 CRendBin_Combined_BRIR_num_iterations_32kHz[15][BINAURAL_CHANNELS]={{22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22} };
+const UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {40, 40};
+const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][22]={{{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 137, 134, 129, 128, 160},{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 137, 134, 129, 128, 160}},{{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 139, 133, 131, 128, 160},{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 139, 133, 131, 128, 160}},{{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 128, 160},{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 128, 160}},{{102, 116, 116, 121, 116, 114, 115, 121, 125, 123, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 125, 160},{102, 116, 116, 121, 116, 114, 115, 121, 125, 123, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 125, 160}},{{115, 115, 115, 119, 121, 119, 125, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 140, 146, 127, 131, 160},{115, 115, 115, 119, 121, 119, 125, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 140, 146, 127, 131, 160}},{{112, 106, 118, 121, 115, 117, 129, 123, 128, 126, 130, 130, 131, 131, 130, 134, 133, 149, 130, 132, 126, 160},{112, 106, 118, 121, 115, 117, 129, 123, 128, 126, 130, 130, 131, 131, 130, 134, 133, 149, 130, 132, 126, 160}},{{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 124, 133, 130, 129, 134, 134, 135, 127, 120, 160},{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 124, 133, 130, 129, 134, 134, 135, 127, 120, 160}},{{110, 113, 123, 113, 121, 120, 120, 126, 131, 123, 128, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160},{110, 113, 123, 113, 121, 120, 120, 126, 131, 123, 128, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160}},{{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 127, 136, 128, 128, 127, 132, 132, 129, 125, 120, 160},{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 127, 136, 128, 128, 127, 132, 132, 129, 125, 120, 160}},{{99, 100, 111, 117, 114, 114, 118, 116, 121, 124, 124, 121, 125, 130, 127, 132, 132, 130, 133, 128, 131, 160},{99, 100, 111, 117, 114, 114, 118, 116, 121, 124, 124, 121, 125, 130, 127, 132, 132, 130, 133, 128, 131, 160}},{{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 136, 128, 128, 160},{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 136, 128, 128, 160}},{{105, 100, 112, 114, 115, 108, 117, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 139, 153, 116, 160},{105, 100, 112, 114, 115, 108, 117, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 139, 153, 116, 160}},{{110, 106, 113, 110, 122, 116, 119, 125, 123, 128, 125, 127, 128, 127, 133, 130, 132, 132, 143, 155, 127, 160},{110, 106, 113, 110, 122, 116, 119, 125, 123, 128, 125, 127, 128, 127, 133, 130, 132, 132, 143, 155, 127, 160}},{{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 135, 127, 160},{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 135, 127, 160}},{{110, 117, 106, 118, 118, 116, 121, 124, 128, 125, 122, 122, 126, 131, 124, 130, 133, 131, 139, 134, 131, 160},{110, 117, 106, 118, 118, 116, 121, 124, 128, 125, 122, 122, 126, 131, 124, 130, 133, 131, 139, 134, 131, 160}}};
+const UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz = 97;
const float CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[15]={0.224190f, 0.227445f, 0.241827f, 0.207131f, 0.218113f, 0.222941f, 0.232139f, 0.248192f, 0.249239f, 0.261572f, 0.246309f, 0.279145f, 0.285786f, 0.262528f, 0.271847f};
const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[15]={7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907,};
-const uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS][40]={{47, 47, 47, 47, 47, 47, 50, 50, 56, 56, 56, 63, 63, 63, 63, 63, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 93, 93, 93, 93, 93, 97},{47, 47, 47, 47, 47, 47, 50, 50, 56, 56, 56, 63, 63, 63, 63, 63, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 93, 93, 93, 93, 93, 97}};
+const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS][40]={{47, 47, 47, 47, 47, 47, 50, 50, 56, 56, 56, 63, 63, 63, 63, 63, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 93, 93, 93, 93, 93, 97},{47, 47, 47, 47, 47, 47, 50, 50, 56, 56, 56, 63, 63, 63, 63, 63, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 93, 93, 93, 93, 93, 97}};
/* Sample Rate = 16000 */
-const int16_t CRendBin_Combined_BRIR_max_num_iterations_16kHz = 23;
-const uint16_t CRendBin_Combined_BRIR_num_iterations_16kHz[15][BINAURAL_CHANNELS]={{23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23} };
-const uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {40, 40};
-const uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][23]={{{77, 76, 77, 77, 77, 76, 77, 76, 77, 76, 77, 77, 77, 78, 76, 76, 77, 77, 77, 77, 77, 76, 80},{77, 76, 77, 77, 77, 76, 77, 76, 77, 76, 77, 77, 77, 78, 76, 76, 77, 77, 77, 77, 77, 76, 80}},{{76, 77, 77, 75, 77, 78, 77, 76, 77, 77, 76, 77, 77, 77, 77, 77, 76, 77, 76, 76, 77, 78, 80},{76, 77, 77, 75, 77, 78, 77, 76, 77, 77, 76, 77, 77, 77, 77, 77, 76, 77, 76, 76, 77, 78, 80}},{{77, 76, 76, 78, 75, 76, 74, 78, 77, 76, 77, 77, 77, 76, 76, 77, 78, 78, 77, 77, 77, 77, 80},{77, 76, 76, 78, 75, 76, 74, 78, 77, 76, 77, 77, 77, 76, 76, 77, 78, 78, 77, 77, 77, 77, 80}},{{76, 76, 76, 76, 77, 77, 76, 78, 77, 77, 77, 77, 78, 78, 77, 77, 77, 77, 77, 78, 77, 78, 80},{76, 76, 76, 76, 77, 77, 76, 78, 77, 77, 77, 77, 78, 78, 77, 77, 77, 77, 77, 78, 77, 78, 80}},{{76, 77, 77, 76, 77, 77, 75, 77, 77, 77, 76, 77, 77, 77, 77, 78, 77, 77, 77, 77, 76, 76, 80},{76, 77, 77, 76, 77, 77, 75, 77, 77, 77, 76, 77, 77, 77, 77, 78, 77, 77, 77, 77, 76, 76, 80}},{{77, 76, 77, 77, 77, 77, 77, 77, 76, 78, 76, 78, 75, 76, 77, 77, 76, 76, 77, 78, 78, 77, 80},{77, 76, 77, 77, 77, 77, 77, 77, 76, 78, 76, 78, 75, 76, 77, 77, 76, 76, 77, 78, 78, 77, 80}},{{77, 77, 75, 76, 76, 77, 77, 77, 77, 77, 77, 75, 77, 76, 76, 76, 77, 77, 76, 77, 76, 77, 80},{77, 77, 75, 76, 76, 77, 77, 77, 77, 77, 77, 75, 77, 76, 76, 76, 77, 77, 76, 77, 76, 77, 80}},{{75, 76, 77, 77, 75, 77, 75, 76, 76, 77, 77, 77, 78, 78, 77, 77, 76, 77, 78, 78, 78, 76, 80},{75, 76, 77, 77, 75, 77, 75, 76, 76, 77, 77, 77, 78, 78, 77, 77, 76, 77, 78, 78, 78, 76, 80}},{{77, 77, 77, 76, 77, 77, 76, 76, 76, 77, 77, 75, 76, 78, 78, 77, 77, 78, 78, 77, 76, 76, 80},{77, 77, 77, 76, 77, 77, 76, 76, 76, 77, 77, 75, 76, 78, 78, 77, 77, 78, 78, 77, 76, 76, 80}},{{76, 75, 76, 76, 77, 77, 77, 77, 77, 77, 74, 78, 77, 78, 78, 77, 76, 77, 77, 77, 77, 76, 80},{76, 75, 76, 76, 77, 77, 77, 77, 77, 77, 74, 78, 77, 78, 78, 77, 76, 77, 77, 77, 77, 76, 80}},{{76, 76, 77, 76, 77, 77, 76, 76, 76, 76, 77, 77, 76, 76, 77, 75, 77, 76, 76, 76, 77, 77, 80},{76, 76, 77, 76, 77, 77, 76, 76, 76, 76, 77, 77, 76, 76, 77, 75, 77, 76, 76, 76, 77, 77, 80}},{{76, 76, 77, 75, 78, 77, 77, 77, 77, 77, 77, 77, 77, 76, 78, 77, 76, 78, 76, 77, 76, 77, 80},{76, 76, 77, 75, 78, 77, 77, 77, 77, 77, 77, 77, 77, 76, 78, 77, 76, 78, 76, 77, 76, 77, 80}},{{76, 77, 77, 76, 76, 77, 77, 75, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 77, 76, 76, 78, 80},{76, 77, 77, 76, 76, 77, 77, 75, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 77, 76, 76, 78, 80}},{{74, 76, 74, 76, 75, 76, 76, 76, 76, 77, 77, 78, 77, 78, 75, 76, 77, 76, 78, 76, 78, 77, 80},{74, 76, 74, 76, 75, 76, 76, 76, 76, 77, 77, 78, 77, 78, 75, 76, 77, 76, 78, 76, 78, 77, 80}},{{76, 77, 77, 77, 76, 78, 77, 76, 75, 77, 77, 77, 76, 78, 77, 78, 78, 78, 77, 76, 77, 75, 80},{76, 77, 77, 77, 76, 78, 77, 76, 75, 77, 77, 77, 76, 78, 77, 78, 78, 78, 77, 76, 77, 75, 80}}};
-const uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz = 77;
+const Word16 CRendBin_Combined_BRIR_max_num_iterations_16kHz = 23;
+const UWord16 CRendBin_Combined_BRIR_num_iterations_16kHz[15][BINAURAL_CHANNELS]={{23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23} };
+const UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {40, 40};
+const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][23]={{{77, 76, 77, 77, 77, 76, 77, 76, 77, 76, 77, 77, 77, 78, 76, 76, 77, 77, 77, 77, 77, 76, 80},{77, 76, 77, 77, 77, 76, 77, 76, 77, 76, 77, 77, 77, 78, 76, 76, 77, 77, 77, 77, 77, 76, 80}},{{76, 77, 77, 75, 77, 78, 77, 76, 77, 77, 76, 77, 77, 77, 77, 77, 76, 77, 76, 76, 77, 78, 80},{76, 77, 77, 75, 77, 78, 77, 76, 77, 77, 76, 77, 77, 77, 77, 77, 76, 77, 76, 76, 77, 78, 80}},{{77, 76, 76, 78, 75, 76, 74, 78, 77, 76, 77, 77, 77, 76, 76, 77, 78, 78, 77, 77, 77, 77, 80},{77, 76, 76, 78, 75, 76, 74, 78, 77, 76, 77, 77, 77, 76, 76, 77, 78, 78, 77, 77, 77, 77, 80}},{{76, 76, 76, 76, 77, 77, 76, 78, 77, 77, 77, 77, 78, 78, 77, 77, 77, 77, 77, 78, 77, 78, 80},{76, 76, 76, 76, 77, 77, 76, 78, 77, 77, 77, 77, 78, 78, 77, 77, 77, 77, 77, 78, 77, 78, 80}},{{76, 77, 77, 76, 77, 77, 75, 77, 77, 77, 76, 77, 77, 77, 77, 78, 77, 77, 77, 77, 76, 76, 80},{76, 77, 77, 76, 77, 77, 75, 77, 77, 77, 76, 77, 77, 77, 77, 78, 77, 77, 77, 77, 76, 76, 80}},{{77, 76, 77, 77, 77, 77, 77, 77, 76, 78, 76, 78, 75, 76, 77, 77, 76, 76, 77, 78, 78, 77, 80},{77, 76, 77, 77, 77, 77, 77, 77, 76, 78, 76, 78, 75, 76, 77, 77, 76, 76, 77, 78, 78, 77, 80}},{{77, 77, 75, 76, 76, 77, 77, 77, 77, 77, 77, 75, 77, 76, 76, 76, 77, 77, 76, 77, 76, 77, 80},{77, 77, 75, 76, 76, 77, 77, 77, 77, 77, 77, 75, 77, 76, 76, 76, 77, 77, 76, 77, 76, 77, 80}},{{75, 76, 77, 77, 75, 77, 75, 76, 76, 77, 77, 77, 78, 78, 77, 77, 76, 77, 78, 78, 78, 76, 80},{75, 76, 77, 77, 75, 77, 75, 76, 76, 77, 77, 77, 78, 78, 77, 77, 76, 77, 78, 78, 78, 76, 80}},{{77, 77, 77, 76, 77, 77, 76, 76, 76, 77, 77, 75, 76, 78, 78, 77, 77, 78, 78, 77, 76, 76, 80},{77, 77, 77, 76, 77, 77, 76, 76, 76, 77, 77, 75, 76, 78, 78, 77, 77, 78, 78, 77, 76, 76, 80}},{{76, 75, 76, 76, 77, 77, 77, 77, 77, 77, 74, 78, 77, 78, 78, 77, 76, 77, 77, 77, 77, 76, 80},{76, 75, 76, 76, 77, 77, 77, 77, 77, 77, 74, 78, 77, 78, 78, 77, 76, 77, 77, 77, 77, 76, 80}},{{76, 76, 77, 76, 77, 77, 76, 76, 76, 76, 77, 77, 76, 76, 77, 75, 77, 76, 76, 76, 77, 77, 80},{76, 76, 77, 76, 77, 77, 76, 76, 76, 76, 77, 77, 76, 76, 77, 75, 77, 76, 76, 76, 77, 77, 80}},{{76, 76, 77, 75, 78, 77, 77, 77, 77, 77, 77, 77, 77, 76, 78, 77, 76, 78, 76, 77, 76, 77, 80},{76, 76, 77, 75, 78, 77, 77, 77, 77, 77, 77, 77, 77, 76, 78, 77, 76, 78, 76, 77, 76, 77, 80}},{{76, 77, 77, 76, 76, 77, 77, 75, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 77, 76, 76, 78, 80},{76, 77, 77, 76, 76, 77, 77, 75, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 77, 76, 76, 78, 80}},{{74, 76, 74, 76, 75, 76, 76, 76, 76, 77, 77, 78, 77, 78, 75, 76, 77, 76, 78, 76, 78, 77, 80},{74, 76, 74, 76, 75, 76, 76, 76, 76, 77, 77, 78, 77, 78, 75, 76, 77, 76, 78, 76, 78, 77, 80}},{{76, 77, 77, 77, 76, 78, 77, 76, 75, 77, 77, 77, 76, 78, 77, 78, 78, 78, 77, 76, 77, 75, 80},{76, 77, 77, 77, 76, 78, 77, 76, 75, 77, 77, 77, 76, 78, 77, 78, 78, 78, 77, 76, 77, 75, 80}}};
+const UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz = 77;
const float CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[15]={0.223532f, 0.226827f, 0.248830f, 0.208782f, 0.220391f, 0.219790f, 0.231187f, 0.248730f, 0.251408f, 0.263698f, 0.243858f, 0.281483f, 0.283080f, 0.261660f, 0.273527f};
const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[15]={7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907};
-const uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS][40]={{46, 46, 46, 46, 46, 46, 46, 49, 49, 53, 53, 53, 55, 55, 61, 61, 61, 65, 67, 67, 67, 67, 67, 67, 69, 72, 72, 72, 73, 73, 75, 75, 75, 75, 75, 75, 75, 75, 75, 77},{46, 46, 46, 46, 46, 46, 46, 49, 49, 53, 53, 53, 55, 55, 61, 61, 61, 65, 67, 67, 67, 67, 67, 67, 69, 72, 72, 72, 73, 73, 75, 75, 75, 75, 75, 75, 75, 75, 75, 77}};
+const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS][40]={{46, 46, 46, 46, 46, 46, 46, 49, 49, 53, 53, 53, 55, 55, 61, 61, 61, 65, 67, 67, 67, 67, 67, 67, 69, 72, 72, 72, 73, 73, 75, 75, 75, 75, 75, 75, 75, 75, 75, 77},{46, 46, 46, 46, 46, 46, 46, 49, 49, 53, 53, 53, 55, 55, 61, 61, 61, 65, 67, 67, 67, 67, 67, 67, 69, 72, 72, 72, 73, 73, 75, 75, 75, 75, 75, 75, 75, 75, 75, 77}};
//BRIR and HRIR coeff tables in Q29
const Word32 CRendBin_Combined_BRIR_coeff_re_48kHz_fx[15][BINAURAL_CHANNELS][2955] ={
{
diff --git a/lib_rend/ivas_rom_rend_fx.c b/lib_rend/ivas_rom_rend_fx.c
index bb1b569b9d20829abf392f461a435872237e0bd5..1fe8e6a3845f863f2a60b772e6458429e8ec6123 100644
--- a/lib_rend/ivas_rom_rend_fx.c
+++ b/lib_rend/ivas_rom_rend_fx.c
@@ -49,9 +49,9 @@ const Word16 diffuse_response_CICP6_fx[5] = { 13824, 13824, 12137, 16495, 16495
const Word16 diffuse_response_CICP14_fx[7] = { 12507, 12507, 9237, 17691, 17691, 4977, 4977 };//Q15
const Word16 diffuse_response_CICP16_fx[9] = { 11324, 11324, 9945, 13513, 13513, 8853, 8853, 9905, 9905 };//Q15
-const int16_t ap_pre_delay[DIRAC_DECORR_NUM_SPLIT_BANDS] = { 7, 2, 1 };
+const Word16 ap_pre_delay[DIRAC_DECORR_NUM_SPLIT_BANDS] = { 7, 2, 1 };
-const int16_t ap_filter_length[DIRAC_DECORR_NUM_SPLIT_BANDS] = { 15, 6, 3 };
+const Word16 ap_filter_length[DIRAC_DECORR_NUM_SPLIT_BANDS] = { 15, 6, 3 };
const Word16 ap_lattice_delta_phi_fx[DIRAC_MAX_NUM_DECORR_FILTERS*DIRAC_MAX_DECORR_FILTER_LEN] /*Q14*/ =
{
@@ -91,11 +91,11 @@ const Word16 ap_split_frequencies_fx[DIRAC_DECORR_NUM_SPLIT_BANDS + 1]/*Q14*/ =
0 , 2048, 6144, 16384
};
-const int16_t sba_map_tc[11] =
+const Word16 sba_map_tc[11] =
{
0, 1, 2, 3, 4, 8, 9, 15, 5, 6, 7
};
-const int16_t sba_map_tc_512[11] =
+const Word16 sba_map_tc_512[11] =
{
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 15
};
@@ -121,11 +121,11 @@ const int16_t sba_map_tc_512[11] =
* 13 = 135, 35
* 14 = -135, 35
*/
-const int16_t channelIndex_CICP6[5] = { 0, 1, 2, 5, 6 };
-const int16_t channelIndex_CICP12[7] = { 0, 1, 2, 5, 6, 3, 4 };
-const int16_t channelIndex_CICP14[7] = { 0, 1, 2, 5, 6, 9, 10 };
-const int16_t channelIndex_CICP16[9] = { 0, 1, 2, 5, 6, 9, 10, 11, 12 };
-const int16_t channelIndex_CICP19[11] = { 0, 1, 2, 3, 4, 7, 8, 9, 10, 13, 14 };
+const Word16 channelIndex_CICP6[5] = { 0, 1, 2, 5, 6 };
+const Word16 channelIndex_CICP12[7] = { 0, 1, 2, 5, 6, 3, 4 };
+const Word16 channelIndex_CICP14[7] = { 0, 1, 2, 5, 6, 9, 10 };
+const Word16 channelIndex_CICP16[9] = { 0, 1, 2, 5, 6, 9, 10, 11, 12 };
+const Word16 channelIndex_CICP19[11] = { 0, 1, 2, 3, 4, 7, 8, 9, 10, 13, 14 };
const Word16 surCohEne_fx[MASA_NUM_DEFINED_SUR_SPR_COH_ENE_BINS] /* Q13 */ =
{
@@ -160,7 +160,7 @@ const Word32 diffuseFieldCoherenceDifferenceZ_fx[BINAURAL_COHERENCE_DIFFERENCE_B
* TD ISM binaural renderer ROM tables
*----------------------------------------------------------------------------------*/
-const int16_t HRTF_MODEL_N_CPTS_VAR[HRTF_MODEL_N_SECTIONS] =
+const Word16 HRTF_MODEL_N_CPTS_VAR[HRTF_MODEL_N_SECTIONS] =
{
13, 12, 11
};
diff --git a/lib_rend/ivas_rotation_fx.c b/lib_rend/ivas_rotation_fx.c
index 3a82c5ecc3963edf4730323c13d5864767c8022f..727a212be5ac8726ce5aeb8b574ffc01c709d812 100644
--- a/lib_rend/ivas_rotation_fx.c
+++ b/lib_rend/ivas_rotation_fx.c
@@ -38,7 +38,7 @@
#include
#include "cnst.h"
#include "prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "wmc_auto.h"
#include
#include "ivas_prot_fx.h"
diff --git a/lib_rend/ivas_sba_rendering_fx.c b/lib_rend/ivas_sba_rendering_fx.c
index 4323fc96f44671be4dc7ca553aa86eecf0d4a219..5e097ab2bedc0622f73dbcc03bdb1431c21aeeab 100644
--- a/lib_rend/ivas_sba_rendering_fx.c
+++ b/lib_rend/ivas_sba_rendering_fx.c
@@ -33,8 +33,7 @@
#include
#include "options.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_stat_dec.h"
#include "ivas_cnst.h"
#include
diff --git a/lib_rend/ivas_shoebox_fx.c b/lib_rend/ivas_shoebox_fx.c
index ba79dafc9f1c19178e7b2f77acd6701fd549b550..1a1339f5d36a68accb819f417bd681d2fcaed54e 100644
--- a/lib_rend/ivas_shoebox_fx.c
+++ b/lib_rend/ivas_shoebox_fx.c
@@ -33,7 +33,7 @@
#include "options.h"
#include
#include
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_stat_rend.h"
#include "ivas_prot_fx.h"
#include "ivas_cnst.h"
diff --git a/lib_rend/ivas_td_decorr_fx.c b/lib_rend/ivas_td_decorr_fx.c
index 6d5b23f12a963e2b5c4edbb7aca12445f0baaa7c..0c842e5bd97cc89da8857bff6bd6449d11fb62b7 100644
--- a/lib_rend/ivas_td_decorr_fx.c
+++ b/lib_rend/ivas_td_decorr_fx.c
@@ -35,8 +35,7 @@
#include "options.h"
#include "prot_fx.h"
#include "ivas_prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "math.h"
#include "wmc_auto.h"
#ifdef DEBUGGING
diff --git a/lib_rend/ivas_vbap_fx.c b/lib_rend/ivas_vbap_fx.c
index 06cbd83a6ebccaefb13cbc4d067a042cc106ba30..7495953e3e462f5eca9be008502a81e7be8a6656 100644
--- a/lib_rend/ivas_vbap_fx.c
+++ b/lib_rend/ivas_vbap_fx.c
@@ -35,8 +35,7 @@
#include
#include
#include "prot_fx.h"
-#include "ivas_prot.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_stat_dec.h"
#include "wmc_auto.h"
#include "ivas_prot_fx.h"
diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c
index fa0726d31c2cff5d80a9cf14607e85fcc587537b..9ab74d1c96a39de03be7dd7cadd74ae341330cf0 100644
--- a/lib_rend/lib_rend.c
+++ b/lib_rend/lib_rend.c
@@ -33,9 +33,8 @@
#include "options.h"
#include "lib_rend.h"
#include "prot_fx.h"
-#include "ivas_prot.h"
#include "ivas_prot_fx.h"
-#include "ivas_prot_rend.h"
+#include "ivas_prot_rend_fx.h"
#include "isar_prot.h"
#include "isar_stat.h"
#include "lib_isar_pre_rend.h"
@@ -9245,7 +9244,7 @@ IVAS_REND_openCldfb(
for ( n = 0; n < num_in_chs; n++ )
{
- if ( ( error = openCldfb_ivas_fx( &( cldfbAna[n] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK )
+ if ( ( error = openCldfb_ivas_fx( &( cldfbAna[n] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK )
{
return error;
}
@@ -9257,7 +9256,7 @@ IVAS_REND_openCldfb(
for ( n = 0; n < num_out_chs; n++ )
{
- if ( ( error = openCldfb_ivas_fx( &( cldfbSyn[n] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK )
+ if ( ( error = openCldfb_ivas_fx( &( cldfbSyn[n] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK )
{
return error;
}
@@ -10143,7 +10142,7 @@ static ivas_error initMasaExtRenderer(
{
FOR( i = 0; i < hMasaExtRend->nchan_input; i++ )
{
- IF( NE_32( ( error = openCldfb_ivas_fx( &( hMasaExtRend->cldfbAnaRend[i] ), CLDFB_ANALYSIS, *inputMasa->base.ctx.pOutSampleRate, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &( hMasaExtRend->cldfbAnaRend[i] ), CLDFB_ANALYSIS, *inputMasa->base.ctx.pOutSampleRate, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
@@ -10151,7 +10150,7 @@ static ivas_error initMasaExtRenderer(
FOR( i = 0; i < hMasaExtRend->nchan_output; i++ )
{
- IF( NE_32( ( error = openCldfb_ivas_fx( &( hMasaExtRend->cldfbSynRend[i] ), CLDFB_SYNTHESIS, *inputMasa->base.ctx.pOutSampleRate, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) )
+ IF( NE_32( ( error = openCldfb_ivas_fx( &( hMasaExtRend->cldfbSynRend[i] ), CLDFB_SYNTHESIS, *inputMasa->base.ctx.pOutSampleRate, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) )
{
return error;
}
diff --git a/lib_rend/lib_rend.h b/lib_rend/lib_rend.h
index eb8b208890349b99b232d9fa92050bf9f7fb22ea..c3d6ca703251c8b6ce11414b263b63b9da5b7847 100644
--- a/lib_rend/lib_rend.h
+++ b/lib_rend/lib_rend.h
@@ -95,7 +95,7 @@ typedef enum
IVAS_REND_AUDIO_CONFIG_TYPE_UNKNOWN,
} IVAS_REND_AudioConfigType;
-typedef uint16_t IVAS_REND_InputId;
+typedef UWord16 IVAS_REND_InputId;
typedef enum _IVAS_REND_COMPLEXITY_LEVEL
{
diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c
index 930bb79dcea6ba6e6770b5331494af5498af8447..e667dcfe5179500d1f08c3310dd27ead8b4dc2bc 100644
--- a/lib_util/hrtf_file_reader.c
+++ b/lib_util/hrtf_file_reader.c
@@ -33,8 +33,7 @@
#include "hrtf_file_reader.h"
#include
#include "prot_fx.h"
-#include "ivas_prot_rend.h"
-#include "ivas_prot.h"
+#include "ivas_prot_rend_fx.h"
#include "ivas_prot_fx.h"
/*---------------------------------------------------------------------*
diff --git a/lib_util/ls_custom_file_reader.c b/lib_util/ls_custom_file_reader.c
index 90d47b7c94a711c79d4fde345c960b98d4d1bb55..f4f43e496e358d9dae0ca00a8478fe342a3fc121 100644
--- a/lib_util/ls_custom_file_reader.c
+++ b/lib_util/ls_custom_file_reader.c
@@ -33,7 +33,7 @@
#include "ls_custom_file_reader.h"
#include
#include
-#include "ivas_prot.h"
+#include "ivas_prot_fx.h"
#include "prot_fx.h"
diff --git a/lib_util/masa_file_reader.c b/lib_util/masa_file_reader.c
index 9351d9bc9d871f00d4f5a75480afb8a90ce21e8a..efab80b79547db87abeb0a4f44e1e72dbc1a3637 100644
--- a/lib_util/masa_file_reader.c
+++ b/lib_util/masa_file_reader.c
@@ -31,7 +31,6 @@
*******************************************************************************************************/
#include "masa_file_reader.h"
-#include "ivas_prot.h"
#include "ivas_stat_com.h"
#include
#include