Commit 9f0808fb authored by Jan Kiene's avatar Jan Kiene
Browse files

port changes in (ivas-float-update) MR 2384 for main

parent 4368d1c4
Loading
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1784,8 +1784,12 @@ static ivas_error initOnFirstGoodFrame(
        }
    }

#ifdef CODE_IMPROVEMENTS
    int16_t *zeroBuf = calloc( pcmFrameSize, sizeof( int16_t ) );
#else
    int16_t *zeroBuf = malloc( pcmFrameSize * sizeof( int16_t ) );
    memset( zeroBuf, 0, pcmFrameSize * sizeof( int16_t ) );
#endif

    for ( int16_t i = 0; i < numInitialBadFrames; ++i )
    {
+1 −0
Original line number Diff line number Diff line
@@ -159,6 +159,7 @@
#define NONBE_1200_ISM_JBM_BRATE_SW_FLUSH               /* VA: issue 1200: fix bug in renderer flush in ISM JBM bitrate switching */
#define NONBE_1293_CRASH_FIRST_FRAME_LOST               /* VA: issue 1293: fix G.192 decoder crash when first frame is lost */
#define FIX_1384_MSAN_stereo_tcx_core_enc               /* VA: issue 1384: fix use-of-uninitialized value in stereo_tcx_core_enc() */
#define CODE_IMPROVEMENTS

// object-editing feature porting
#define OBJ_EDITING_API                                 /* object editing changes related to the API */
+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*/ = {
+85 −9
Original line number Diff line number Diff line
@@ -3974,31 +3974,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;
    const UWord8 *pByte;
#ifndef CODE_IMPROVEMENTS
    const uint8_t *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 ) )
        {
@@ -4175,7 +4226,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;

@@ -4198,12 +4253,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();
@@ -4211,7 +4273,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();
@@ -4219,7 +4283,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();
@@ -4227,7 +4293,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();
@@ -4237,14 +4305,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