Commit 2966540d authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

try to persist commandline setting of reverb room size

parent 7ab35f2f
Loading
Loading
Loading
Loading
Loading
+13 −4
Original line number Diff line number Diff line
@@ -1096,11 +1096,7 @@ int main(
    }

/* === Configure === */
#ifdef FIX_1318_ROOM_SIZE_CMD_LINE
    if ( ( error = IVAS_REND_InitConfig( hIvasRend, args.reverbRoomSize, args.outConfig.audioConfig ) ) != IVAS_ERR_OK )
#else
    if ( ( error = IVAS_REND_InitConfig( hIvasRend, args.outConfig.audioConfig ) ) != IVAS_ERR_OK )
#endif
    {
        fprintf( stderr, "\nError in Renderer Config Init: %s\n", ivas_error_to_string( error ) );
        goto cleanup;
@@ -1180,6 +1176,18 @@ int main(
        fprintf( stderr, "\nError in IVAS_REND_SetOrientationTrackingMode(): %s\n", ivas_error_to_string( error ) );
        goto cleanup;
    }
#ifdef FIX_1318_ROOM_SIZE_CMD_LINE

    /* Set reverb room size if specified */
    if ( args.reverbRoomSize != IVAS_ROOM_SIZE_AUTO )
    {
        if ( ( IVAS_REND_SetReverbRoomSize( hIvasRend, args.reverbRoomSize ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nError setting reverb room size\n" );
            goto cleanup;
        }
    }
#endif

    /* Set up output custom layout configuration */
    if ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_LS_CUSTOM )
@@ -2920,6 +2928,7 @@ static void parseOption(
            if ( !parseReverbRoomSize( optionValues[0], &args->reverbRoomSize ) )
            {
                fprintf( stderr, "Error: Unsupported room size selector %s!\n\n", optionValues[0] );
                exit( -1 );
            }
            break;
#endif
+2 −1
Original line number Diff line number Diff line
@@ -1618,9 +1618,10 @@ typedef enum
#ifdef FIX_1318_ROOM_SIZE_CMD_LINE
typedef enum
{
    DEFAULT_REVERB_UNSET = -1,
    DEFAULT_REVERB_SMALL,
    DEFAULT_REVERB_MEDIUM,
    DEFAULT_REVERB_LARGE
    DEFAULT_REVERB_LARGE,
} IVAS_DefaultReverbSize;
#endif

+101 −47
Original line number Diff line number Diff line
@@ -3129,6 +3129,9 @@ ivas_error IVAS_REND_Open(
    hIvasRend->hLimiter = NULL;
    hIvasRend->efapOutWrapper.hEfap = NULL;
    hIvasRend->efapOutWrapper.pCustomLsSetup = NULL;
#ifdef FIX_1318_ROOM_SIZE_CMD_LINE
    hIvasRend->selectedRoomReverbSize = DEFAULT_REVERB_UNSET;
#endif
#ifdef DEBUGGING
    hIvasRend->numClipping = 0;
#endif
@@ -3808,7 +3811,7 @@ static ivas_error isar_pre_rend_init(
    return IVAS_ERR_OK;
}
#ifdef FIX_1318_ROOM_SIZE_CMD_LINE
static IVAS_DefaultReverbSize getDefaultReverbSize(
static IVAS_ROOM_SIZE_T getDefaultReverbSize(
    input_ism *ismInputs,
    input_masa *masaInputs,
    input_mc *mcInputs,
@@ -3816,14 +3819,14 @@ static IVAS_DefaultReverbSize getDefaultReverbSize(
{
    bool combinedFormat;
    int16_t i;
    int16_t nActiveInputsIsm, nActiveInputsMc, nActiveInputsSba, nActiveInputsMasa;
    IVAS_DefaultReverbSize selectedReverb;
    selectedReverb = DEFAULT_REVERB_MEDIUM;
    int16_t nActiveInputsIsm, nActiveInputsMasa, nActiveInputsSba, nActiveInputsMc;
    IVAS_ROOM_SIZE_T selectedReverb;
    selectedReverb = IVAS_ROOM_SIZE_MEDIUM;

    combinedFormat = false;
    nActiveInputsIsm = 0;
    nActiveInputsMc = 0;
    nActiveInputsMasa = 0;
    nActiveInputsMc = 0;
    nActiveInputsSba = 0;

    for ( i = 0; i < RENDERER_MAX_ISM_INPUTS; i++ )
@@ -3835,7 +3838,7 @@ static IVAS_DefaultReverbSize getDefaultReverbSize(
    }
    for ( i = 0; i < RENDERER_MAX_MASA_INPUTS; i++ )
    {
        if ( mcInputs[i].base.inConfig != IVAS_AUDIO_CONFIG_INVALID )
        if ( masaInputs[i].base.inConfig != IVAS_AUDIO_CONFIG_INVALID )
        {
            nActiveInputsMasa++;
        }
@@ -3849,7 +3852,7 @@ static IVAS_DefaultReverbSize getDefaultReverbSize(
    }
    for ( i = 0; i < RENDERER_MAX_SBA_INPUTS; i++ )
    {
        if ( mcInputs[i].base.inConfig != IVAS_AUDIO_CONFIG_INVALID )
        if ( sbaInputs[i].base.inConfig != IVAS_AUDIO_CONFIG_INVALID )
        {
            nActiveInputsSba++;
        }
@@ -3863,23 +3866,23 @@ static IVAS_DefaultReverbSize getDefaultReverbSize(

    if ( combinedFormat )
    {
        selectedReverb = DEFAULT_REVERB_MEDIUM;
        selectedReverb = IVAS_ROOM_SIZE_MEDIUM;
    }
    else
    {
        /* Only set large if ISM is present alone */
        if ( nActiveInputsIsm && !nActiveInputsMc )
        {
            selectedReverb = DEFAULT_REVERB_LARGE;
            selectedReverb = IVAS_ROOM_SIZE_LARGE;
        }
        /* if only MC is present, medium will not be overridden by the subsequent block */
        /* if only MC is present, set medium; Will not be overridden by the subsequent block */
        else if ( nActiveInputsMc )
        {
            selectedReverb = DEFAULT_REVERB_MEDIUM;
            selectedReverb = IVAS_ROOM_SIZE_MEDIUM;
        }
        else if ( nActiveInputsMasa || nActiveInputsSba )
        {
            selectedReverb = DEFAULT_REVERB_SMALL;
            selectedReverb = IVAS_ROOM_SIZE_SMALL;
        }
    }

@@ -3988,11 +3991,14 @@ ivas_error IVAS_REND_AddInput(
#ifdef FIX_1318_ROOM_SIZE_CMD_LINE

    /* select default reverb size after adding an input */
    ivas_render_config_change_defaults( hIvasRend->hRendererConfig,
    if ( hIvasRend->selectedRoomReverbSize == DEFAULT_REVERB_UNSET )
    {
        IVAS_REND_SetReverbRoomSize( hIvasRend,
                                     getDefaultReverbSize( hIvasRend->inputsIsm,
                                                           hIvasRend->inputsMasa,
                                                           hIvasRend->inputsMc,
                                                           hIvasRend->inputsSba ) );
    }
#endif

    return IVAS_ERR_OK;
@@ -4569,17 +4575,11 @@ ivas_error IVAS_REND_FeedInputMasaMetadata(

ivas_error IVAS_REND_InitConfig(
    IVAS_REND_HANDLE hIvasRend,       /* i/o: Renderer handle     */
#ifdef FIX_1318_ROOM_SIZE_CMD_LINE
    const IVAS_ROOM_SIZE_T roomReverbSize, /* i/o: Reverb room size    */
#endif
    const AUDIO_CONFIG outAudioConfig /* i  : output audioConfig  */
)
{
    ivas_error error;
    bool rendererConfigEnabled;
#ifdef FIX_1318_ROOM_SIZE_CMD_LINE
    IVAS_DefaultReverbSize selectedRoomReverbSize;
#endif

    rendererConfigEnabled = ( getAudioConfigType( outAudioConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL );

@@ -4602,29 +4602,6 @@ ivas_error IVAS_REND_InitConfig(
        {
            return error;
        }
#ifdef FIX_1318_ROOM_SIZE_CMD_LINE
        switch ( roomReverbSize )
        {
            case IVAS_ROOM_SIZE_SMALL:
                selectedRoomReverbSize = DEFAULT_REVERB_SMALL;
                break;
            case IVAS_ROOM_SIZE_MEDIUM:
                selectedRoomReverbSize = DEFAULT_REVERB_MEDIUM;
                break;
            case IVAS_ROOM_SIZE_LARGE:
                selectedRoomReverbSize = DEFAULT_REVERB_LARGE;
                break;
            case IVAS_ROOM_SIZE_AUTO:
            default:
                selectedRoomReverbSize = DEFAULT_REVERB_LARGE;
                break; /* will be setup in IVAS_REND_AddInput() */
        }
        if ( ( error = ivas_render_config_change_defaults( hIvasRend->hRendererConfig, selectedRoomReverbSize ) ) != IVAS_ERR_OK )
        {
            return error;
        }

#endif
    }
    else
    {
@@ -5256,6 +5233,83 @@ ivas_error IVAS_REND_GetCombinedOrientation(

    return IVAS_ERR_OK;
}
#ifdef FIX_1318_ROOM_SIZE_CMD_LINE

/*---------------------------------------------------------------------*
 * IVAS_REND_GetCombinedOrientation()
 *
 *
 *---------------------------------------------------------------------*/
ivas_error IVAS_REND_GetReverbRoomSize(
    IVAS_REND_HANDLE hIvasRend,      /* i/o: Renderer handle                                */
    IVAS_ROOM_SIZE_T *reverbRoomSize /* o  : Reverb room size                               */
)
{
    switch ( hIvasRend->selectedRoomReverbSize )
    {
        case DEFAULT_REVERB_SMALL:
            *reverbRoomSize = IVAS_ROOM_SIZE_SMALL;
            break;
        case DEFAULT_REVERB_MEDIUM:
            *reverbRoomSize = IVAS_ROOM_SIZE_MEDIUM;
            break;
        case DEFAULT_REVERB_LARGE:
            *reverbRoomSize = IVAS_ROOM_SIZE_LARGE;
            break;
        case DEFAULT_REVERB_UNSET:
        default:
            *reverbRoomSize = IVAS_ROOM_SIZE_AUTO;
            break;
    }

    return IVAS_ERR_OK;
}

/*---------------------------------------------------------------------*
 * IVAS_REND_GetCombinedOrientation()
 *
 *
 *---------------------------------------------------------------------*/
ivas_error IVAS_REND_SetReverbRoomSize(
    IVAS_REND_HANDLE hIvasRend,           /* i/o: Renderer handle                                */
    const IVAS_ROOM_SIZE_T reverbRoomSize /* i  : Reverb room size                               */
)
{
    ivas_error error;

    switch ( reverbRoomSize )
    {
        case IVAS_ROOM_SIZE_SMALL:
            hIvasRend->selectedRoomReverbSize = DEFAULT_REVERB_SMALL;
            break;
        case IVAS_ROOM_SIZE_MEDIUM:
            hIvasRend->selectedRoomReverbSize = DEFAULT_REVERB_MEDIUM;
            break;
        case IVAS_ROOM_SIZE_LARGE:
            hIvasRend->selectedRoomReverbSize = DEFAULT_REVERB_LARGE;
            break;
        case IVAS_ROOM_SIZE_AUTO:
        default:
            hIvasRend->selectedRoomReverbSize = DEFAULT_REVERB_UNSET;
            break; /* will be setup in IVAS_REND_AddInput() */
    }

    if ( hIvasRend->hRendererConfig != NULL )
    {
        if ( ( error = ivas_render_config_change_defaults( hIvasRend->hRendererConfig, hIvasRend->selectedRoomReverbSize ) ) != IVAS_ERR_OK )
        {
            return error;
        }
    }
    else
    {
        return IVAS_ERR_UNEXPECTED_NULL_POINTER;
    }

    return IVAS_ERR_OK;
}

#endif


/*-------------------------------------------------------------------*
+12 −3
Original line number Diff line number Diff line
@@ -249,9 +249,6 @@ ivas_error IVAS_REND_FeedInputMasaMetadata(

ivas_error IVAS_REND_InitConfig(
    IVAS_REND_HANDLE hIvasRend,                     /* i/o: Renderer handle                                     */
#ifdef FIX_1318_ROOM_SIZE_CMD_LINE
    const IVAS_ROOM_SIZE_T reverbRoomSize,          /* i/o: Reverb room size                                    */
#endif
    const IVAS_AUDIO_CONFIG outAudioConfig          /* i  : output audioConfig                                  */
);

@@ -264,6 +261,18 @@ ivas_error IVAS_REND_FeedRenderConfig(
    IVAS_REND_HANDLE hIvasRend,                     /* i/o: IVAS renderer handle                                */
    const IVAS_RENDER_CONFIG_DATA renderConfig      /* i  : Render configuration struct                         */
);
#ifdef FIX_1318_ROOM_SIZE_CMD_LINE

ivas_error IVAS_REND_GetReverbRoomSize(
    IVAS_REND_HANDLE hIvasRend,                     /* i/o: IVAS renderer handle                                */
    IVAS_ROOM_SIZE_T *reverbRoomSize                /* o  : Reverb room size                                    */
);

ivas_error IVAS_REND_SetReverbRoomSize(
    IVAS_REND_HANDLE hIvasRend,                     /* i/o: IVAS renderer handle                                */
    const IVAS_ROOM_SIZE_T reverbRoomSize           /* i  : Reverb room size                                    */
);
#endif

ivas_error IVAS_REND_FeedSplitBinauralBitstream(
    IVAS_REND_HANDLE hIvasRend,                     /* i/o: Renderer handle                                     */