Commit 388e78fc authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

port float MR 1501

parent add4f598
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -399,8 +399,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 ) )
+1 −0
Original line number Diff line number Diff line
@@ -135,6 +135,7 @@
#define FIX_1003_PARAMISM_BINAURAL_RECONFIG_USAN        /* FhG: fix for #1003: fix USAN caused by ParamISM reconfig                    */
#define FIX_1001_ARI_HM_OVERFLOW                        /* FhG: (no changes needed in BASOP) fix for undef behaviour in in the harmonic TCX model arithmetic coder */
#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
@@ -466,14 +466,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 ) );
@@ -481,11 +486,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 );
        }