Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,7 @@ #define FIX_1904_HARM_GSC_ENC /* VA: #1904 Harmonization of EVS and IVAS GSC code */ #define FIX_2271_OOB_INDEXING_IN_PIT_OL2 /* VA: Fix for issue 2271, to silence clang18 */ #define FIX_2273_OOB_INDEXING_IN_PIT_FR4 /* VA: Fix to silence clang on ptr init */ #define FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC /* Nokia: Fix to convert non-converted binary operations */ /* #################### End BE switches ################################## */ Loading lib_enc/ivas_qmetadata_enc_fx.c +65 −5 Original line number Diff line number Diff line Loading @@ -4662,11 +4662,20 @@ static Word16 encode_coherence_indexesDCT0_fx( FOR( i = 0; i < no_idx16 - 1; i++ ) { k = sub( k, 16 ); #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC hMetaData->ind_list[indice_coherence + i].value = extract_l( W_extract_l( W_shr( idx, k ) ) ); /* ( ( idx >> k ) & 65535 ); 16 bits */ #else hMetaData->ind_list[indice_coherence + i].value = ( ( idx >> k ) & 65535 ); /* 16 bits */ move16(); #endif } #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC hMetaData->ind_list[indice_coherence + i].value = s_and( extract_l( W_extract_l( idx ) ), sub( shl( 1, k ), 1 ) ); /* ( idx & ( ( 1 << k ) - 1 ) ); */ #else hMetaData->ind_list[indice_coherence + i].value = ( idx & ( ( 1 << k ) - 1 ) ); move16(); #endif IF( nbits1 > 0 ) { Loading @@ -4687,11 +4696,19 @@ static Word16 encode_coherence_indexesDCT0_fx( FOR( j = i + 1; j < no_idx16 + i; j++ ) { k = sub( k, 16 ); #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC hMetaData->ind_list[indice_coherence + j].value = extract_l( W_extract_l( W_shr( idx1, k ) ) ); /* ( ( idx1 >> k ) & 65535 ); 16 bits */ #else hMetaData->ind_list[indice_coherence + j].value = ( ( idx1 >> k ) & 65535 ); /* 16 bits */ move16(); #endif } #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC hMetaData->ind_list[indice_coherence + j].value = s_and( extract_l( W_extract_l( idx1 ) ), sub( shl( 1, k ), 1 ) ); /* ( idx1 & ( ( 1 << k ) - 1 ) ); */ #else hMetaData->ind_list[indice_coherence + j].value = ( idx1 & ( ( 1 << k ) - 1 ) ); move16(); #endif } return add( nbits, nbits1 ); Loading Loading @@ -4967,10 +4984,17 @@ static Word16 encode_spread_coherence_1sf_fx( FOR( i = 0; i < no_idx16 - 1; i++ ) { k = sub( k, 16 ); #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMasaMetaData, extract_l( W_extract_l( W_shr( idx, k ) ) ), 16 ); /* ( ( idx >> k ) & 65535 ); 16 bits */ #else push_next_indice( hMasaMetaData, ( ( idx >> k ) & 65535 ), 16 ); /* 16 bits */ #endif } #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMasaMetaData, s_and( extract_l( W_extract_l( idx ) ), sub( shl( 1, k ), 1 ) ), k ); /* ( idx & ( ( 1 << k ) - 1 ) ); */ #else push_next_indice( hMasaMetaData, ( idx & ( ( 1 << k ) - 1 ) ), k ); #endif IF( nbits_fr1 > 0 ) { Loading @@ -4992,9 +5016,17 @@ static Word16 encode_spread_coherence_1sf_fx( FOR( i = 0; i < no_idx16 - 1; i++ ) { k = sub( k, 16 ); #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMasaMetaData, extract_l( W_extract_l( W_shr( idx1, k ) ) ), 16 ); /* ( ( idx >> k ) & 65535 ); 16 bits */ #else push_next_indice( hMasaMetaData, ( ( idx1 >> k ) & 65535 ), 16 ); /* 16 bits */ #endif } #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMasaMetaData, s_and( extract_l( W_extract_l( idx1 ) ), sub( shl( 1, k ), 1 ) ), k ); /* ( idx1 & ( ( 1 << k ) - 1 ) ); */ #else push_next_indice( hMasaMetaData, ( idx1 & ( ( 1 << k ) - 1 ) ), k ); #endif } } ELSE Loading Loading @@ -5193,10 +5225,17 @@ static Word16 encode_surround_coherence_fx( FOR( i = 0; i < no_idx16 - 1; i++ ) { k = sub( k, 16 ); #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMetaData, extract_l( W_extract_l( W_shr( idx, k ) ) ), 16 ); /* ( ( idx >> k ) & 65535 ); 16 bits */ #else push_next_indice( hMetaData, ( ( idx >> k ) & 65535 ), 16 ); /* 16 bits */ #endif } #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMetaData, s_and( extract_l( W_extract_l( idx ) ), sub( shl( 1, k ), 1 ) ), k ); /* ( idx & ( ( 1 << k ) - 1 ) ); */ #else push_next_indice( hMetaData, ( idx & ( ( 1 << k ) - 1 ) ), k ); #endif IF( nbits_fr1 > 0 ) { Loading @@ -5218,10 +5257,17 @@ static Word16 encode_surround_coherence_fx( FOR( i = 0; i < no_idx16 - 1; i++ ) { k = sub( k, 16 ); #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMetaData, extract_l( W_extract_l( W_shr( idx1, k ) ) ), 16 ); /* ( ( idx >> k ) & 65535 ); 16 bits */ #else push_next_indice( hMetaData, ( ( idx1 >> k ) & 65535 ), 16 ); /* 16 bits */ #endif } #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMetaData, s_and( extract_l( W_extract_l( idx1 ) ), sub( shl( 1, k ), 1 ) ), k ); /* ( idx & ( ( 1 << k ) - 1 ) ); */ #else push_next_indice( hMetaData, ( idx1 & ( ( 1 << k ) - 1 ) ), k ); #endif } } ELSE Loading Loading @@ -5422,10 +5468,17 @@ static Word16 encode_surround_coherence_hr_fx( FOR( i = 0; i < no_idx16 - 1; i++ ) { k = sub( k, 16 ); #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMetaData, extract_l( W_extract_l( W_shr( idx, k ) ) ), 16 ); /* ( ( idx >> k ) & 65535 ); 16 bits */ #else push_next_indice( hMetaData, ( ( idx >> k ) & 65535 ), 16 ); /* 16 bits */ #endif } #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMetaData, s_and( extract_l( W_extract_l( idx ) ), sub( shl( 1, k ), 1 ) ), k ); /* ( idx & ( ( 1 << k ) - 1 ) ); */ #else push_next_indice( hMetaData, ( idx & ( ( 1 << k ) - 1 ) ), k ); #endif IF( nbits_fr1 > 0 ) { Loading @@ -5445,10 +5498,17 @@ static Word16 encode_surround_coherence_hr_fx( FOR( i = 0; i < no_idx16 - 1; i++ ) { k = sub( k, 16 ); #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMetaData, extract_l( W_extract_l( W_shr( idx1, k ) ) ), 16 ); /* ( ( idx >> k ) & 65535 ); 16 bits */ #else push_next_indice( hMetaData, ( ( idx1 >> k ) & 65535 ), 16 ); /* 16 bits */ #endif } #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMetaData, s_and( extract_l( W_extract_l( idx1 ) ), sub( shl( 1, k ), 1 ) ), k ); /* ( idx & ( ( 1 << k ) - 1 ) ); */ #else push_next_indice( hMetaData, ( idx1 & ( ( 1 << k ) - 1 ) ), k ); #endif } } ELSE Loading Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,7 @@ #define FIX_1904_HARM_GSC_ENC /* VA: #1904 Harmonization of EVS and IVAS GSC code */ #define FIX_2271_OOB_INDEXING_IN_PIT_OL2 /* VA: Fix for issue 2271, to silence clang18 */ #define FIX_2273_OOB_INDEXING_IN_PIT_FR4 /* VA: Fix to silence clang on ptr init */ #define FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC /* Nokia: Fix to convert non-converted binary operations */ /* #################### End BE switches ################################## */ Loading
lib_enc/ivas_qmetadata_enc_fx.c +65 −5 Original line number Diff line number Diff line Loading @@ -4662,11 +4662,20 @@ static Word16 encode_coherence_indexesDCT0_fx( FOR( i = 0; i < no_idx16 - 1; i++ ) { k = sub( k, 16 ); #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC hMetaData->ind_list[indice_coherence + i].value = extract_l( W_extract_l( W_shr( idx, k ) ) ); /* ( ( idx >> k ) & 65535 ); 16 bits */ #else hMetaData->ind_list[indice_coherence + i].value = ( ( idx >> k ) & 65535 ); /* 16 bits */ move16(); #endif } #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC hMetaData->ind_list[indice_coherence + i].value = s_and( extract_l( W_extract_l( idx ) ), sub( shl( 1, k ), 1 ) ); /* ( idx & ( ( 1 << k ) - 1 ) ); */ #else hMetaData->ind_list[indice_coherence + i].value = ( idx & ( ( 1 << k ) - 1 ) ); move16(); #endif IF( nbits1 > 0 ) { Loading @@ -4687,11 +4696,19 @@ static Word16 encode_coherence_indexesDCT0_fx( FOR( j = i + 1; j < no_idx16 + i; j++ ) { k = sub( k, 16 ); #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC hMetaData->ind_list[indice_coherence + j].value = extract_l( W_extract_l( W_shr( idx1, k ) ) ); /* ( ( idx1 >> k ) & 65535 ); 16 bits */ #else hMetaData->ind_list[indice_coherence + j].value = ( ( idx1 >> k ) & 65535 ); /* 16 bits */ move16(); #endif } #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC hMetaData->ind_list[indice_coherence + j].value = s_and( extract_l( W_extract_l( idx1 ) ), sub( shl( 1, k ), 1 ) ); /* ( idx1 & ( ( 1 << k ) - 1 ) ); */ #else hMetaData->ind_list[indice_coherence + j].value = ( idx1 & ( ( 1 << k ) - 1 ) ); move16(); #endif } return add( nbits, nbits1 ); Loading Loading @@ -4967,10 +4984,17 @@ static Word16 encode_spread_coherence_1sf_fx( FOR( i = 0; i < no_idx16 - 1; i++ ) { k = sub( k, 16 ); #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMasaMetaData, extract_l( W_extract_l( W_shr( idx, k ) ) ), 16 ); /* ( ( idx >> k ) & 65535 ); 16 bits */ #else push_next_indice( hMasaMetaData, ( ( idx >> k ) & 65535 ), 16 ); /* 16 bits */ #endif } #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMasaMetaData, s_and( extract_l( W_extract_l( idx ) ), sub( shl( 1, k ), 1 ) ), k ); /* ( idx & ( ( 1 << k ) - 1 ) ); */ #else push_next_indice( hMasaMetaData, ( idx & ( ( 1 << k ) - 1 ) ), k ); #endif IF( nbits_fr1 > 0 ) { Loading @@ -4992,9 +5016,17 @@ static Word16 encode_spread_coherence_1sf_fx( FOR( i = 0; i < no_idx16 - 1; i++ ) { k = sub( k, 16 ); #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMasaMetaData, extract_l( W_extract_l( W_shr( idx1, k ) ) ), 16 ); /* ( ( idx >> k ) & 65535 ); 16 bits */ #else push_next_indice( hMasaMetaData, ( ( idx1 >> k ) & 65535 ), 16 ); /* 16 bits */ #endif } #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMasaMetaData, s_and( extract_l( W_extract_l( idx1 ) ), sub( shl( 1, k ), 1 ) ), k ); /* ( idx1 & ( ( 1 << k ) - 1 ) ); */ #else push_next_indice( hMasaMetaData, ( idx1 & ( ( 1 << k ) - 1 ) ), k ); #endif } } ELSE Loading Loading @@ -5193,10 +5225,17 @@ static Word16 encode_surround_coherence_fx( FOR( i = 0; i < no_idx16 - 1; i++ ) { k = sub( k, 16 ); #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMetaData, extract_l( W_extract_l( W_shr( idx, k ) ) ), 16 ); /* ( ( idx >> k ) & 65535 ); 16 bits */ #else push_next_indice( hMetaData, ( ( idx >> k ) & 65535 ), 16 ); /* 16 bits */ #endif } #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMetaData, s_and( extract_l( W_extract_l( idx ) ), sub( shl( 1, k ), 1 ) ), k ); /* ( idx & ( ( 1 << k ) - 1 ) ); */ #else push_next_indice( hMetaData, ( idx & ( ( 1 << k ) - 1 ) ), k ); #endif IF( nbits_fr1 > 0 ) { Loading @@ -5218,10 +5257,17 @@ static Word16 encode_surround_coherence_fx( FOR( i = 0; i < no_idx16 - 1; i++ ) { k = sub( k, 16 ); #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMetaData, extract_l( W_extract_l( W_shr( idx1, k ) ) ), 16 ); /* ( ( idx >> k ) & 65535 ); 16 bits */ #else push_next_indice( hMetaData, ( ( idx1 >> k ) & 65535 ), 16 ); /* 16 bits */ #endif } #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMetaData, s_and( extract_l( W_extract_l( idx1 ) ), sub( shl( 1, k ), 1 ) ), k ); /* ( idx & ( ( 1 << k ) - 1 ) ); */ #else push_next_indice( hMetaData, ( idx1 & ( ( 1 << k ) - 1 ) ), k ); #endif } } ELSE Loading Loading @@ -5422,10 +5468,17 @@ static Word16 encode_surround_coherence_hr_fx( FOR( i = 0; i < no_idx16 - 1; i++ ) { k = sub( k, 16 ); #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMetaData, extract_l( W_extract_l( W_shr( idx, k ) ) ), 16 ); /* ( ( idx >> k ) & 65535 ); 16 bits */ #else push_next_indice( hMetaData, ( ( idx >> k ) & 65535 ), 16 ); /* 16 bits */ #endif } #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMetaData, s_and( extract_l( W_extract_l( idx ) ), sub( shl( 1, k ), 1 ) ), k ); /* ( idx & ( ( 1 << k ) - 1 ) ); */ #else push_next_indice( hMetaData, ( idx & ( ( 1 << k ) - 1 ) ), k ); #endif IF( nbits_fr1 > 0 ) { Loading @@ -5445,10 +5498,17 @@ static Word16 encode_surround_coherence_hr_fx( FOR( i = 0; i < no_idx16 - 1; i++ ) { k = sub( k, 16 ); #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMetaData, extract_l( W_extract_l( W_shr( idx1, k ) ) ), 16 ); /* ( ( idx >> k ) & 65535 ); 16 bits */ #else push_next_indice( hMetaData, ( ( idx1 >> k ) & 65535 ), 16 ); /* 16 bits */ #endif } #ifdef FIX_2433_ARITH_OVERFLOW_IN_QMETA_ENC push_next_indice( hMetaData, s_and( extract_l( W_extract_l( idx1 ) ), sub( shl( 1, k ), 1 ) ), k ); /* ( idx & ( ( 1 << k ) - 1 ) ); */ #else push_next_indice( hMetaData, ( idx1 & ( ( 1 << k ) - 1 ) ), k ); #endif } } ELSE Loading