Commit d637882b authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

set output SBA order to the input order for OSBA EXT output

parent fe197c3c
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -174,6 +174,8 @@
#define REVERT_ZERO_FLUSH_TRESH                               /* FhG: issue 1069: revert threshold value introduced with !1518 due to significant complexity increase*/ 
#define NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC            /* FhG: fix out-of-bound errors when switching from SID frame to active frame*/

#define NONBE_FIX_1128_OSBA_EXT_OUTPUT_ORDER                  /* FhG: issue 1128: set output ambisonics order to input order for EXT output */

/* ##################### End NON-BE switches ########################### */

/* ################## End DEVELOPMENT switches ######################### */
+45 −0
Original line number Diff line number Diff line
@@ -940,7 +940,29 @@ ivas_error ivas_init_decoder(
        }
        else if ( st_ivas->ivas_format == SBA_ISM_FORMAT )
        {
#ifdef NONBE_FIX_1128_OSBA_EXT_OUTPUT_ORDER

			st_ivas->hOutSetup.ambisonics_order = st_ivas->sba_order;
			switch (st_ivas->sba_order)
			{
			case 1:
				hDecoderConfig->nchan_out = audioCfg2channels( IVAS_AUDIO_CONFIG_FOA );
				break;

			case 2:
				hDecoderConfig->nchan_out = audioCfg2channels( IVAS_AUDIO_CONFIG_HOA2 );
				break;

			case 3:
				hDecoderConfig->nchan_out = audioCfg2channels( IVAS_AUDIO_CONFIG_HOA3 );
				break;

			default:
				assert(0 && "Invalid SBA order!");
			}
#else
            hDecoderConfig->nchan_out = audioCfg2channels( IVAS_AUDIO_CONFIG_HOA3 );
#endif
            hDecoderConfig->nchan_out += st_ivas->nchan_ism;
        }
        else if ( st_ivas->ivas_format == MASA_ISM_FORMAT || st_ivas->ivas_format == MASA_FORMAT )
@@ -981,10 +1003,33 @@ ivas_error ivas_init_decoder(

    if ( st_ivas->ivas_format == SBA_ISM_FORMAT && output_config == IVAS_AUDIO_CONFIG_EXTERNAL )
    {
#ifdef NONBE_FIX_1128_OSBA_EXT_OUTPUT_ORDER
		st_ivas->hOutSetup.ambisonics_order = st_ivas->sba_order;
	    switch ( st_ivas->sba_order )
		{
			case 1:
				st_ivas->intern_config = IVAS_AUDIO_CONFIG_FOA;
				break;

			case 2:
				st_ivas->intern_config = IVAS_AUDIO_CONFIG_HOA2;
				break;

			case 3:
				st_ivas->intern_config = IVAS_AUDIO_CONFIG_HOA3;
				break;

			default:
				assert( 0 && "Invalid SBA order!");
		}
		st_ivas->hOutSetup.output_config = st_ivas->intern_config;
		st_ivas->hOutSetup.nchan_out_woLFE = audioCfg2channels(st_ivas->intern_config);
#else
        st_ivas->hOutSetup.ambisonics_order = SBA_HOA3_ORDER;
        st_ivas->intern_config = IVAS_AUDIO_CONFIG_HOA3;
        st_ivas->hOutSetup.output_config = IVAS_AUDIO_CONFIG_HOA3;
        st_ivas->hOutSetup.nchan_out_woLFE = audioCfg2channels( IVAS_AUDIO_CONFIG_HOA3 );
#endif
    }

    /* Only initialize transport setup if it is used */