Loading lib_rend/lib_rend_fx.c +12 −33 Original line number Diff line number Diff line Loading @@ -5530,53 +5530,32 @@ static void renderIsmToMasa( Word16 *exp ) { Word32 tmpRendBuffer_fx[MAX_NUM_OBJECTS][L_FRAME48k]; Word16 i, j; Word16 q_fact; Word16 i, guard_bits, q_min, q_diff; push_wmops( "renderIsmToMasa" ); FOR( i = 0; i < MAX_NUM_OBJECTS; i++ ) { set32_fx( tmpRendBuffer_fx[i], 0, L_FRAME48k ); } copyBufferTo2dArray_fx( ismInput->base.inputBuffer, tmpRendBuffer_fx ); Word16 input_e[MAX_NUM_OBJECTS], max_e; FOR( i = 0; i < MAX_NUM_OBJECTS; i++ ) { input_e[i] = sub( 31, add( getScaleFactor32( tmpRendBuffer_fx[i], L_FRAME48k ), *outAudio.pq_fact ) ); move16(); } Word16 guard_bits = find_guarded_bits_fx( L_FRAME48k ); max_e = input_e[0]; q_min = MAX_16; move16(); FOR( i = 1; i < MAX_NUM_OBJECTS; i++ ) FOR( i = 0; i < ismInput->base.inputBuffer.config.numChannels; i++ ) { if ( LT_16( max_e, input_e[0] ) ) { max_e = input_e[i]; move16(); } q_min = s_min( q_min, L_norm_arr( tmpRendBuffer_fx[i], ismInput->base.inputBuffer.config.numSamplesPerChannel ) ); } FOR( i = 0; i < MAX_NUM_OBJECTS; i++ ) { FOR( j = 0; j < L_FRAME48k; j++ ) guard_bits = find_guarded_bits_fx( ismInput->base.inputBuffer.config.numSamplesPerChannel ); q_min = sub( add( q_min, *outAudio.pq_fact ), guard_bits ); q_diff = sub( q_min, *outAudio.pq_fact ); FOR( i = 0; i < ismInput->base.inputBuffer.config.numChannels; i++ ) { tmpRendBuffer_fx[i][j] = L_shr( tmpRendBuffer_fx[i][j], add( sub( max_e, sub( 31, *outAudio.pq_fact ) ), guard_bits ) ); /* Q(31 - (max_e + guard_bits)) */ move32(); scale_sig32( tmpRendBuffer_fx[i], ismInput->base.inputBuffer.config.numSamplesPerChannel, q_diff ); // *outAudio.pq_fact -> q_min } } max_e = add( max_e, guard_bits ); q_fact = sub( Q31, max_e ); ivas_omasa_ana_fx( ismInput->hOMasa, tmpRendBuffer_fx, &q_fact, ismInput->base.inputBuffer.config.numSamplesPerChannel, outAudio.config.numChannels, ismInput->base.inputBuffer.config.numChannels ); ivas_omasa_ana_fx( ismInput->hOMasa, tmpRendBuffer_fx, &q_min, ismInput->base.inputBuffer.config.numSamplesPerChannel, outAudio.config.numChannels, ismInput->base.inputBuffer.config.numChannels ); *exp = q_fact; *exp = q_min; move16(); accumulate2dArrayToBuffer_fx( tmpRendBuffer_fx, &outAudio ); Loading Loading
lib_rend/lib_rend_fx.c +12 −33 Original line number Diff line number Diff line Loading @@ -5530,53 +5530,32 @@ static void renderIsmToMasa( Word16 *exp ) { Word32 tmpRendBuffer_fx[MAX_NUM_OBJECTS][L_FRAME48k]; Word16 i, j; Word16 q_fact; Word16 i, guard_bits, q_min, q_diff; push_wmops( "renderIsmToMasa" ); FOR( i = 0; i < MAX_NUM_OBJECTS; i++ ) { set32_fx( tmpRendBuffer_fx[i], 0, L_FRAME48k ); } copyBufferTo2dArray_fx( ismInput->base.inputBuffer, tmpRendBuffer_fx ); Word16 input_e[MAX_NUM_OBJECTS], max_e; FOR( i = 0; i < MAX_NUM_OBJECTS; i++ ) { input_e[i] = sub( 31, add( getScaleFactor32( tmpRendBuffer_fx[i], L_FRAME48k ), *outAudio.pq_fact ) ); move16(); } Word16 guard_bits = find_guarded_bits_fx( L_FRAME48k ); max_e = input_e[0]; q_min = MAX_16; move16(); FOR( i = 1; i < MAX_NUM_OBJECTS; i++ ) FOR( i = 0; i < ismInput->base.inputBuffer.config.numChannels; i++ ) { if ( LT_16( max_e, input_e[0] ) ) { max_e = input_e[i]; move16(); } q_min = s_min( q_min, L_norm_arr( tmpRendBuffer_fx[i], ismInput->base.inputBuffer.config.numSamplesPerChannel ) ); } FOR( i = 0; i < MAX_NUM_OBJECTS; i++ ) { FOR( j = 0; j < L_FRAME48k; j++ ) guard_bits = find_guarded_bits_fx( ismInput->base.inputBuffer.config.numSamplesPerChannel ); q_min = sub( add( q_min, *outAudio.pq_fact ), guard_bits ); q_diff = sub( q_min, *outAudio.pq_fact ); FOR( i = 0; i < ismInput->base.inputBuffer.config.numChannels; i++ ) { tmpRendBuffer_fx[i][j] = L_shr( tmpRendBuffer_fx[i][j], add( sub( max_e, sub( 31, *outAudio.pq_fact ) ), guard_bits ) ); /* Q(31 - (max_e + guard_bits)) */ move32(); scale_sig32( tmpRendBuffer_fx[i], ismInput->base.inputBuffer.config.numSamplesPerChannel, q_diff ); // *outAudio.pq_fact -> q_min } } max_e = add( max_e, guard_bits ); q_fact = sub( Q31, max_e ); ivas_omasa_ana_fx( ismInput->hOMasa, tmpRendBuffer_fx, &q_fact, ismInput->base.inputBuffer.config.numSamplesPerChannel, outAudio.config.numChannels, ismInput->base.inputBuffer.config.numChannels ); ivas_omasa_ana_fx( ismInput->hOMasa, tmpRendBuffer_fx, &q_min, ismInput->base.inputBuffer.config.numSamplesPerChannel, outAudio.config.numChannels, ismInput->base.inputBuffer.config.numChannels ); *exp = q_fact; *exp = q_min; move16(); accumulate2dArrayToBuffer_fx( tmpRendBuffer_fx, &outAudio ); Loading