Commit 69ced9c4 authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

port float MR 1501

parent 18d69b69
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -397,8 +397,13 @@ void ivas_get_dirac_sba_max_md_bits_fx(
        /* OSBA needs an additional 2-bits safety margin to avoid acelp crashes */
        IF( EQ_32( ivas_format, SBA_ISM_FORMAT ) )
        {
#ifdef NONBE_FIX_SBA_SIGNALING_BITS_B
			( *metadata_max_bits ) = sub((*metadata_max_bits), 7);
			move16();
#else
            ( *metadata_max_bits ) = sub( ( *metadata_max_bits ), 3 );
            move16();
#endif
        }
    }
    ELSE IF( LE_32( sba_total_brate, IVAS_32k ) )
+2 −1
Original line number Diff line number Diff line
@@ -129,7 +129,8 @@
#define NONBE_FIX_1014_1015_1016_OSBA_JBM_STEREO              /* FhG: issues #1014, #1015, #1016: fix tc buffer info update in the discrete ism renderer */
#define NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING       /* FhG: issue 987: solution b: downmix HOA3 to stereo a input for the reverberator */
#define NONBE_FIX_1006_PAST_DMX_NRG_ERROR               /* Eri/FhG: Issue 1006: Bug fix in ivas_stereo_dft_dec not replicated in ivas_stereo_dft_dec_dmx */

#define NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE            /* FhG: issue #1005: fix TC Buffer update at a MC rate switch */
#define NONBE_FIX_SBA_SIGNALING_BITS_B                  /* FhG: issue 1061: option B: signal sba order additionally in OSBA */

/* #################### End BASOP porting switches ############################ */

+16 −1
Original line number Diff line number Diff line
@@ -457,14 +457,19 @@ ivas_error ivas_dec_setup(
            move16();

            test();
#ifndef NONBE_FIX_SBA_SIGNALING_BITS_B
            IF( LT_32( ivas_total_brate, IVAS_24k4 ) || GE_32( ivas_total_brate, IVAS_256k ) )
            {
#endif
                /* read Ambisonic (SBA) planar flag */
                st_ivas->sba_planar = st_ivas->bit_stream[num_bits_read];
                move16();
                num_bits_read = add( num_bits_read, SBA_PLANAR_BITS );
#ifndef NONBE_FIX_SBA_SIGNALING_BITS_B
			}
#endif

			/* read Ambisonic (SBA) order (0 for signaling OSBA format at low bitrates)*/
            st_ivas->sba_order = st_ivas->bit_stream[num_bits_read + 1];
            move16();
            st_ivas->sba_order = add( st_ivas->sba_order, shl( st_ivas->bit_stream[num_bits_read], 1 ) );
@@ -472,11 +477,21 @@ ivas_error ivas_dec_setup(
            num_bits_read = add( num_bits_read, SBA_ORDER_BITS );

            /* read Ambisonic (SBA) order */
#ifdef NONBE_FIX_SBA_SIGNALING_BITS_B
			/* read the real Ambisonic order when the above bits are used to signal OSBA format */
			if (ivas_total_brate < IVAS_24k4)
			{
				st_ivas->sba_order = st_ivas->bit_stream[num_bits_read + 1];
				st_ivas->sba_order += 2 * st_ivas->bit_stream[num_bits_read];
				num_bits_read += SBA_ORDER_BITS;
			}
#else
            if ( LT_32( ivas_total_brate, IVAS_256k ) )
            {
                st_ivas->sba_order = 3;
                move16();
            }
#endif

            test();
            IF( st_ivas->ini_frame > 0 && NE_32( ivas_total_brate, st_ivas->last_active_ivas_total_brate ) )
+8 −0
Original line number Diff line number Diff line
@@ -700,10 +700,18 @@ void ivas_mct_core_enc_fx(
        nAvailBits = sub( nAvailBits, IVAS_FORMAT_SIGNALING_NBITS_EXTENDED );
        nAvailBits = sub( nAvailBits, SBA_ORDER_BITS + SBA_PLANAR_BITS );
        test();
#ifdef NONBE_FIX_SBA_SIGNALING_BITS_B
		/*MCT is used at bitrates > 80 kbps and additional 1 bit is present at these bitrates*/
		if (ivas_format == SBA_ISM_FORMAT)
		{
			nAvailBits -= IVAS_COMBINED_FORMAT_SIGNALLING_BITS;
		}
#else
        if ( EQ_32( ivas_format, SBA_ISM_FORMAT ) && GT_16( nChannels, 4 ) )
        {
            nAvailBits = sub( nAvailBits, IVAS_COMBINED_FORMAT_SIGNALLING_BITS );
        }
#endif
    }

    FOR( ( cpe_id = 0, i = 0 ); cpe_id < nCPE; cpe_id++ )
+10 −1
Original line number Diff line number Diff line
@@ -371,9 +371,18 @@ ivas_error ivas_spar_enc_fx(

            /* hack to indicate OSBA bitstream at VLBR */
            push_indice( st0->hBstr, IND_SMODE, 0, SBA_ORDER_BITS );
#ifdef NONBE_FIX_SBA_SIGNALING_BITS_B

			/* additionally code the real SBA order */
			push_indice(st0->hBstr, IND_SMODE, hEncoderConfig->sba_order, SBA_ORDER_BITS);
#endif
	    }
        ELSE
        {
#ifdef NONBE_FIX_SBA_SIGNALING_BITS_B
			/* Write SBA planar flag */
			push_indice(st0->hBstr, IND_SMODE, hEncoderConfig->sba_planar, SBA_PLANAR_BITS);
#endif
            /* Write SBA order */
            push_indice( st0->hBstr, IND_SMODE, hEncoderConfig->sba_order, SBA_ORDER_BITS );
        }