Commit 3056cb80 authored by Jan Kiene's avatar Jan Kiene
Browse files

fix pre delay calculation + add some missing move's

parent 843c8462
Loading
Loading
Loading
Loading
Loading
+43 −4
Original line number Diff line number Diff line
@@ -1660,7 +1660,6 @@ static ivas_error alignInputDelay(
                              shl( inputAudio.config.numSamplesPerChannel, 1 ) );

        /* pre delay for this input is maximum delay - input delay */
        preDelay = maxGlobalDelaySamples - inputBase->delayNumSamples * cldfb2tdSampleFact;
        preDelay = sub( maxGlobalDelaySamples,
                        i_mult( inputBase->delayNumSamples, cldfb2tdSampleFact ) );

@@ -1701,10 +1700,10 @@ static ivas_error alignInputDelay(
        ELSE
        {
            numSamplesToPush = inputAudio.config.numSamplesPerChannel;
            move32();
            move16();

            numSamplesToPop = inputAudio.config.numSamplesPerChannel;
            move32();
            move16();
        }

        ivas_TD_RINGBUF_Push( inputBase->delayBuffer, inputAudio.data_fx, numSamplesToPush );
@@ -3607,13 +3606,20 @@ ivas_error IVAS_REND_Open(
    }

    hIvasRend = *phIvasRend;
    move32();
    hIvasRend->sampleRateOut = outputSampleRate;
    move32();
    hIvasRend->outputConfig = outConfig;
    move32();
    hIvasRend->customLsOut = defaultCustomLs();
    hIvasRend->hLimiter = NULL;
    move32();
    hIvasRend->efapOutWrapper.hEfap = NULL;
    move32();
    hIvasRend->efapOutWrapper.pCustomLsSetup = NULL;
    move32();
    hIvasRend->num_subframes = num_subframes;
    move16();

    /* Initialize limiter */
    IF( NE_32( ( error = IVAS_REND_GetNumOutChannels( hIvasRend, &numOutChannels ) ), IVAS_ERR_OK ) )
@@ -3675,27 +3681,38 @@ ivas_error IVAS_REND_Open(
        isar_init_split_rend_handles( hIvasRend->splitRendWrapper );
    }
    hIvasRend->splitRendEncBuffer.data_fx = NULL;
    move32();
    hIvasRend->splitRendEncBuffer.config.is_cldfb = 0;
    move16();
    hIvasRend->splitRendEncBuffer.config.numChannels = 0;
    move16();
    hIvasRend->splitRendEncBuffer.config.numSamplesPerChannel = 0;
    move16();

    FOR( i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i )
    {
        initRendInputBase_fx( &hIvasRend->inputsIsm[i].base, IVAS_AUDIO_CONFIG_INVALID, 0, getRendCtx( hIvasRend ), NULL, 0 );
        hIvasRend->inputsIsm[i].crendWrapper = NULL;
        move32();
        hIvasRend->inputsIsm[i].hReverb = NULL;
        move32();
        hIvasRend->inputsIsm[i].tdRendWrapper.hBinRendererTd = NULL;
        move32();
        FOR( j = 0; j < MAX_HEAD_ROT_POSES - 1; ++j )
        {
            hIvasRend->inputsIsm[i].splitTdRendWrappers[j].hBinRendererTd = NULL;
            move32();
            hIvasRend->inputsIsm[i].splitTdRendWrappers[j].hHrtfTD = NULL;
            move32();
        }
        hIvasRend->inputsIsm[i].nonDiegeticPan = nonDiegeticPan;
        move16();
        hIvasRend->inputsIsm[i].nonDiegeticPanGain_fx = nonDiegeticPanGain;
        move32();
        hIvasRend->inputsIsm[i].hOMasa = NULL;
        move32();
        hIvasRend->inputsIsm[i].bufferData_fx = NULL;
        move32();
    }

    FOR( i = 0; i < RENDERER_MAX_MC_INPUTS; ++i )
@@ -3703,20 +3720,29 @@ ivas_error IVAS_REND_Open(
        initRendInputBase_fx( &hIvasRend->inputsMc[i].base, IVAS_AUDIO_CONFIG_INVALID, 0, getRendCtx( hIvasRend ), NULL, 0 );

        hIvasRend->inputsMc[i].efapInWrapper.hEfap = NULL;
        move32();
        hIvasRend->inputsMc[i].crendWrapper = NULL;
        move32();
        hIvasRend->inputsMc[i].hReverb = NULL;
        move32();
        hIvasRend->inputsMc[i].tdRendWrapper.hBinRendererTd = NULL;
        move32();
        hIvasRend->inputsMc[i].bufferData_fx = NULL;
        move32();
        hIvasRend->inputsMc[i].lfeDelayBuffer_fx = NULL;
        move32();
        hIvasRend->inputsMc[i].nonDiegeticPan = nonDiegeticPan;
        move16();
        hIvasRend->inputsMc[i].nonDiegeticPanGain_fx = nonDiegeticPanGain;
        move32();
        hIvasRend->inputsMc[i].hMcMasa = NULL;
        move32();
        FOR( j = 0; j < MAX_HEAD_ROT_POSES - 1; ++j )
        {
            hIvasRend->inputsMc[i].splitTdRendWrappers[j].hBinRendererTd = NULL;
            move32();
            hIvasRend->inputsMc[i].splitTdRendWrappers[j].hHrtfTD = NULL;
            move32();
        }
    }

@@ -3725,10 +3751,15 @@ ivas_error IVAS_REND_Open(
        initRendInputBase_fx( &hIvasRend->inputsSba[i].base, IVAS_AUDIO_CONFIG_INVALID, 0, getRendCtx( hIvasRend ), NULL, 0 );

        hIvasRend->inputsSba[i].crendWrapper = NULL;
        move32();
        hIvasRend->inputsSba[i].cldfbRendWrapper.hCldfbRend = NULL;
        move32();
        hIvasRend->inputsSba[i].cldfbRendWrapper.hHrtfFastConv = NULL;
        move32();
        hIvasRend->inputsSba[i].bufferData_fx = NULL;
        move32();
        hIvasRend->inputsSba[i].hDirAC = NULL;
        move32();
    }

    FOR( i = 0; i < RENDERER_MAX_MASA_INPUTS; ++i )
@@ -3736,17 +3767,25 @@ ivas_error IVAS_REND_Open(
        initRendInputBase_fx( &hIvasRend->inputsMasa[i].base, IVAS_AUDIO_CONFIG_INVALID, 0, getRendCtx( hIvasRend ), NULL, 0 );

        hIvasRend->inputsMasa[i].metadataHasBeenFed = false;
        move16();
        hIvasRend->inputsMasa[i].bufferData_fx = NULL;
        move32();
        hIvasRend->inputsMasa[i].hMasaPrerend = NULL;
        move32();
        hIvasRend->inputsMasa[i].hMasaExtRend = NULL;
        move16();
        move32();
    }

    hIvasRend->hHrtfs.hHrtfFastConv = NULL;
    move32();
    hIvasRend->hHrtfs.hHrtfParambin = NULL;
    move32();
    hIvasRend->hHrtfs.hHrtfTD = NULL;
    move32();
    hIvasRend->hHrtfs.hHrtfCrend = NULL;
    move32();
    hIvasRend->hHrtfs.hHrtfStatistics = NULL;
    move32();

    IF( asHrtfBinary )
    {