Commit 2d75a92b authored by Jan Kiene's avatar Jan Kiene
Browse files

Merge branch '2106_basop_several_small_code_improvements' into 'main'

Port float MR 2132 to BASOP

See merge request !2385
parents 2db54d23 87262f68
Loading
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1678,13 +1678,13 @@ static ivas_error initOnFirstGoodFrame(
        return error;
    }

    int16_t *zeroBuf = malloc( pcmFrameSize * sizeof( int16_t ) );
    /* Write zeros to the output audio buffer */
    int16_t *zeroBuf = calloc( pcmFrameSize, sizeof( int16_t ) );
    if ( zeroBuf == NULL )
    {
        fprintf( stdout, "Error: Unable to allocate memory for output buffer.\n" );
        return IVAS_ERR_FAILED_ALLOC;
    }
    memset( zeroBuf, 0, pcmFrameSize * sizeof( int16_t ) );

    for ( int16_t i = 0; i < numInitialBadFrames; ++i )
    {
+1 −1
Original line number Diff line number Diff line
@@ -111,7 +111,7 @@
#define FIX_RENDERER_STACK                              /* VA: issue 1322: reduction of renderers' buffers size */
#define FIX_1370_EXTERNAL_ORIENTATION_CHECK             /* Nokia: add sanity check for Euler angles for external orientations */
#define FIX_1413_IGF_INIT_PRINTOUT                      /* FhG: use correct variable for IGF initiliazation */

#define CODE_IMPROVEMENTS

// object-editing feature porting
#define TMP_FIX_SPLIT_REND                              // temporary fix to split-rendering (it follows the later state of the framework but it is needed now because of current test-conditions)
+1 −1
Original line number Diff line number Diff line
@@ -836,7 +836,7 @@ int16_t make_dirs( const char *const pathname )

    if ( sep != 0 )
    {
        temp = calloc( 1, strlen( pathname ) + 1 );
        temp = calloc( strlen( pathname ) + 1, sizeof( char ) );
        p = pathname;
        while ( ( p = strchr( p, sep ) ) != NULL )
        {
+6 −0
Original line number Diff line number Diff line
@@ -81,9 +81,15 @@ const Word32 ap_lattice_coeffs_2_fx[132] /* Q31 */ = { 1360843264, 1462880896,
const Word32 ap_lattice_coeffs_3_fx[66] /* Q31 */ = { 1360843264,  1462880896,  -106124344,  615715776,  313579872,  290773568,  -880779712,  -444026592,  -1410828032,  -218497872,  936944960,  729753600,  -282142848,  -1661606912,  -647739072,  703431872,  713452032,  442076704,  1541038592,  -1186205568,  -322414592,  117158120,  514363136,  -1392593792,  -1550156800,  406684000,  146426176,  13348758,  165409920,  83060376,  909276800,  -233341280,  927820288,  -890434752,  596656832,  898691840,  167097856,  -607873152,  -766668864,  9951439,  -950562176,  -799540352,  866157440,  521887904,  675097984,  954584384,  746287104,  1065244224,  232804400,  1007990144,  -365686400,  700745408,  369704352,  945610048,  125449552,  729442240,  -418684160,  1054884800,  -604078592,  -92599496,  -1036132928,  -719417728,  -721895936,  421913952,  -353525216,  950242176};
const Word32 * const ap_lattice_coeffs_fx[DIRAC_DECORR_NUM_SPLIT_BANDS] =
{
#ifdef CODE_IMPROVEMENTS
    ap_lattice_coeffs_1_fx,
    ap_lattice_coeffs_2_fx,
    ap_lattice_coeffs_3_fx,
#else
    &ap_lattice_coeffs_1_fx[0],
    &ap_lattice_coeffs_2_fx[0],
    &ap_lattice_coeffs_3_fx[0],
#endif
};

const Word16 ap_split_frequencies_fx[DIRAC_DECORR_NUM_SPLIT_BANDS + 1]/*Q14*/ = {
+84 −8
Original line number Diff line number Diff line
@@ -3769,31 +3769,82 @@ static ivas_error getConstInputById(
    return IVAS_ERR_OK;
}

#ifdef CODE_IMPROVEMENTS
static void *getInputByIndex_fx(
    void *inputsArray,
    const size_t index,
    const IVAS_REND_AudioConfigType inputType )
{
    SWITCH( inputType )
    {
        case IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED:
            return (input_mc *) inputsArray + index;
        case IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS:
            return (input_sba *) inputsArray + index;
        case IVAS_REND_AUDIO_CONFIG_TYPE_OBJECT_BASED:
            return (input_ism *) inputsArray + index;
        case IVAS_REND_AUDIO_CONFIG_TYPE_MASA:
            return (input_masa *) inputsArray + index;
        default:
            break;
    }
    /* this should be unreachable */
    assert( 0 );

    /* include a final return to make the linter happy and avoid problems with wmc_tool (see #1355) */
    return NULL;
}
#endif

static ivas_error findFreeInputSlot_fx(
#ifdef CODE_IMPROVEMENTS
    void *inputs,
    const IVAS_REND_AudioConfigType inputType,
#else
    const void *inputs,
    const Word32 inputStructSize,
    const int32_t inputStructSize,
#endif
    const Word32 maxInputs,
    Word32 *inputIndex )
{
#ifdef CODE_IMPROVEMENTS
    /* Using a void pointer and a separately provided type is a hack for this function
       to be reusable for arrays of any input type (input_ism, input_mc, input_sba, input_masa).
        Assumptions:
            - input_base is always the first member in the input struct
            - memory alignments of original input type and input_base are the same
    */
#else
    /* Using a void pointer and a separately provided size is a hack for this function
       to be reusable for arrays of any input type (input_ism, input_mc, input_sba, input_masa).
        Assumptions:
            - input_base is always the first member in the input struct
            - provided size is correct
    */
#endif

    Word32 i;
    bool canAddInput;
#ifndef CODE_IMPROVEMENTS
    const UWord8 *pByte;
#endif
    const input_base *pInputBase;

    canAddInput = false;
    move16();

    /* Find first unused input in array */
    FOR( ( i = 0, pByte = inputs ); i < maxInputs; ( ++i, pByte += inputStructSize ) )
#ifdef CODE_IMPROVEMENTS
    FOR( i = 0; i < maxInputs; ++i )
#else
    FOR( i = 0, pByte = inputs; i < maxInputs; ++i, pByte += inputStructSize )
#endif
    {
#ifdef CODE_IMPROVEMENTS
        pInputBase = (const input_base *) getInputByIndex_fx( inputs, i, inputType );
#else
        pInputBase = (const input_base *) pByte;
#endif

        IF( EQ_32( pInputBase->inConfig, IVAS_AUDIO_CONFIG_INVALID ) )
        {
@@ -3966,7 +4017,11 @@ ivas_error IVAS_REND_AddInput_fx(
    ivas_error error;
    Word32 maxNumInputsOfType;
    void *inputsArray;
#ifdef CODE_IMPROVEMENTS
    IVAS_REND_AudioConfigType inputType;
#else
    Word32 inputStructSize;
#endif
    ivas_error ( *activateInput )( void *, AUDIO_CONFIG, IVAS_REND_InputId, RENDER_CONFIG_DATA *, hrtf_handles *hrtfs );
    Word32 inputIndex;

@@ -3989,12 +4044,19 @@ ivas_error IVAS_REND_AddInput_fx(
    }


#ifdef CODE_IMPROVEMENTS
    inputType = getAudioConfigType( inConfig );
    SWITCH( inputType )
#else
    SWITCH( getAudioConfigType( inConfig ) )
#endif
    {
        case IVAS_REND_AUDIO_CONFIG_TYPE_OBJECT_BASED:
            maxNumInputsOfType = RENDERER_MAX_ISM_INPUTS;
            inputsArray = hIvasRend->inputsIsm;
#ifndef CODE_IMPROVEMENTS
            inputStructSize = sizeof( *hIvasRend->inputsIsm );
#endif
            activateInput = setRendInputActiveIsm;
            move32();
            move32();
@@ -4002,7 +4064,9 @@ ivas_error IVAS_REND_AddInput_fx(
        case IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED:
            maxNumInputsOfType = RENDERER_MAX_MC_INPUTS;
            inputsArray = hIvasRend->inputsMc;
#ifndef CODE_IMPROVEMENTS
            inputStructSize = sizeof( *hIvasRend->inputsMc );
#endif
            activateInput = setRendInputActiveMc;
            move32();
            move32();
@@ -4010,7 +4074,9 @@ ivas_error IVAS_REND_AddInput_fx(
        case IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS:
            maxNumInputsOfType = RENDERER_MAX_SBA_INPUTS;
            inputsArray = hIvasRend->inputsSba;
#ifndef CODE_IMPROVEMENTS
            inputStructSize = sizeof( *hIvasRend->inputsSba );
#endif
            activateInput = setRendInputActiveSba;
            move32();
            move32();
@@ -4018,7 +4084,9 @@ ivas_error IVAS_REND_AddInput_fx(
        case IVAS_REND_AUDIO_CONFIG_TYPE_MASA:
            maxNumInputsOfType = RENDERER_MAX_MASA_INPUTS;
            inputsArray = hIvasRend->inputsMasa;
#ifndef CODE_IMPROVEMENTS
            inputStructSize = sizeof( *hIvasRend->inputsMasa );
#endif
            activateInput = setRendInputActiveMasa;
            move32();
            move32();
@@ -4028,14 +4096,22 @@ ivas_error IVAS_REND_AddInput_fx(
    }

        /* Find first free input in array corresponding to input type */
#ifdef CODE_IMPROVEMENTS
    IF( NE_32( ( error = findFreeInputSlot_fx( inputsArray, inputType, maxNumInputsOfType, &inputIndex ) ), IVAS_ERR_OK ) )
#else
    IF( NE_32( ( error = findFreeInputSlot_fx( inputsArray, inputStructSize, maxNumInputsOfType, &inputIndex ) ), IVAS_ERR_OK ) )
#endif
    {
        return error;
    }

    *inputId = makeInputId( inConfig, inputIndex );
    move16();
#ifdef CODE_IMPROVEMENTS
    IF( NE_32( ( error = activateInput( getInputByIndex_fx( inputsArray, inputIndex, inputType ), inConfig, *inputId, hIvasRend->hRendererConfig, &hIvasRend->hHrtfs ) ), IVAS_ERR_OK ) )
#else
    IF( NE_32( ( error = activateInput( (uint8_t *) inputsArray + inputStructSize * inputIndex, inConfig, *inputId, hIvasRend->hRendererConfig, &hIvasRend->hHrtfs ) ), IVAS_ERR_OK ) )
#endif
    {
        return error;
    }
Loading