Commit 10cb47ff authored by Jouni Paulus's avatar Jouni Paulus
Browse files

added initial support for paramBin split rendering for paramISM

parent 3d853840
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -121,13 +121,21 @@ ivas_error ivas_dec(
    if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ||
         ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
    {
        assert( ( st_ivas->ivas_format == SBA_FORMAT ||
#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN
        assert( ( st_ivas->ivas_format == SBA_FORMAT ||
                  st_ivas->ivas_format == MASA_FORMAT ||
#endif
                  st_ivas->ivas_format == ISM_FORMAT ||
                  ( st_ivas->ivas_format == ISM_FORMAT && st_ivas->ism_mode != ISM_MODE_PARAM ) ||
                  ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode != MC_MODE_MCMASA ) ) &&
                ( output_Fs == 48000 ) && "split binaural mode is currently supported with SBA, discrete ISM, or MCT-MC formats and 48 kHz sampling rate only" );
#else
        assert( ( st_ivas->ivas_format == SBA_FORMAT ||
                  st_ivas->ivas_format == MASA_FORMAT ||
                  st_ivas->ivas_format == ISM_FORMAT ||
                  ( st_ivas->ivas_format == ISM_FORMAT && st_ivas->ism_mode != ISM_MODE_PARAM ) ||
                  ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode != MC_MODE_MCMASA ) ) &&
                ( output_Fs == 48000 ) && "split binaural mode is currently supported with SBA, discrete ISM, or MCT-MC formats and 48 kHz sampling rate only" );
#endif
        ivas_set_split_rend_setup( &st_ivas->splitBinRend, &st_ivas->hRenderConfig->split_rend_config, st_ivas->hCombinedOrientationData, hSplitRendBits );
    }
#endif
+0 −2
Original line number Diff line number Diff line
@@ -1318,7 +1318,6 @@ ivas_error ivas_init_decoder(
    else if ( st_ivas->ivas_format == ISM_FORMAT && st_ivas->ism_mode == ISM_MODE_PARAM && ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) )
    {
#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN
        /* TODO jpaulus: paramBin modes needed? */
        if ( ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ||
             ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
        {
@@ -1340,7 +1339,6 @@ ivas_error ivas_init_decoder(
        {
            return error;
        }
        /* TODO jpaulus: is this needed here? */
#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN
        if ( ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ||
             ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
+13 −0
Original line number Diff line number Diff line
@@ -386,7 +386,11 @@ static ivas_error ivas_param_ism_rendering_init(
        return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for interpolator\n" ) );
    }

#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN
    if ( !( output_config == AUDIO_CONFIG_EXTERNAL || output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM) )
#else
    if ( !( output_config == AUDIO_CONFIG_EXTERNAL || output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
#endif
    {
        /* computation of proto matrix */
        ivas_ism_get_proto_matrix( hOutSetup, nchan_transport, hParamIsmRendering->proto_matrix );
@@ -540,8 +544,13 @@ ivas_error ivas_param_ism_dec_open(
        }
    }

#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN
    if ( !( output_config == AUDIO_CONFIG_EXTERNAL || output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ||
            output_config == AUDIO_CONFIG_MONO || output_config == AUDIO_CONFIG_STEREO || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
#else
    if ( !( output_config == AUDIO_CONFIG_EXTERNAL || output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ||
            output_config == AUDIO_CONFIG_MONO || output_config == AUDIO_CONFIG_STEREO ) )
#endif
    {
        /* Initialize efap handle */
        if ( ( error = efap_init_data( &( st_ivas->hEFAPdata ), hOutSetup.ls_azimuth, hOutSetup.ls_elevation, hOutSetup.nchan_out_woLFE, EFAP_MODE_EFAP ) ) != IVAS_ERR_OK )
@@ -559,7 +568,11 @@ ivas_error ivas_param_ism_dec_open(
    hSpatParamRendCom->dirac_read_idx = 0;
    hDirAC->spar_to_dirac_write_idx = 0;

#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN
    if ( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
#else
    if ( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB )
#endif
    {
        if ( ( error = ivas_dirac_allocate_parameters( hSpatParamRendCom, 1 ) ) != IVAS_ERR_OK )
        {
+4 −0
Original line number Diff line number Diff line
@@ -1161,7 +1161,11 @@ static ivas_error ivas_mc_dec_reconfig(
                ivas_td_binaural_close( &st_ivas->hBinRendererTd );
            }

#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN
            if ( st_ivas->hDiracDecBin[0] != NULL )
#else
            if ( st_ivas->hDiracDecBin != NULL )
#endif
            {
                if ( st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && st_ivas->renderer_type != RENDERER_STEREO_PARAMETRIC )
                {