Commit 50e14199 authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

port float MR 1501

parent 7da3628a
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -346,7 +346,11 @@ void ivas_get_dirac_sba_max_md_bits(
        /* OSBA needs an additional 2-bits safety margin to avoid acelp crashes */
        if ( ivas_format == SBA_ISM_FORMAT )
        {
#ifdef NONBE_FIX_SBA_SIGNALING_BITS_B
			(*metadata_max_bits) -= 7;
#else
			(*metadata_max_bits) -= 3;
#endif
		}
    }
    else if ( sba_total_brate <= IVAS_32k )
+1 −0
Original line number Diff line number Diff line
@@ -209,6 +209,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: 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 ############################ */

+15 −1
Original line number Diff line number Diff line
@@ -428,22 +428,36 @@ ivas_error ivas_dec_setup(
            /* the number of objects is written at the end of the bitstream, in the SBA metadata */
            st_ivas->nchan_ism = 2 * st_ivas->bit_stream[ivas_total_brate / FRAMES_PER_SEC - 1] + st_ivas->bit_stream[ivas_total_brate / FRAMES_PER_SEC - 2] + 1;

#ifndef NONBE_FIX_SBA_SIGNALING_BITS_B
            if ( ivas_total_brate < IVAS_24k4 || ivas_total_brate >= IVAS_256k )
            {
#endif
                /* read Ambisonic (SBA) planar flag */
                st_ivas->sba_planar = st_ivas->bit_stream[num_bits_read];
                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];
            st_ivas->sba_order += 2 * st_ivas->bit_stream[num_bits_read];
            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 ( ivas_total_brate < IVAS_256k )
            {
                st_ivas->sba_order = 3;
            }
#endif

            if ( st_ivas->ini_frame > 0 && ivas_total_brate != st_ivas->last_active_ivas_total_brate )
            {
+14 −2
Original line number Diff line number Diff line
@@ -497,10 +497,18 @@ void ivas_mct_core_enc(
    {
        nAvailBits -= IVAS_FORMAT_SIGNALING_NBITS_EXTENDED;
        nAvailBits -= SBA_ORDER_BITS + SBA_PLANAR_BITS;
#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 ( ivas_format == SBA_ISM_FORMAT && nChannels > 4 )
        {
            nAvailBits -= IVAS_COMBINED_FORMAT_SIGNALLING_BITS;
        }
#endif
    }

    for ( cpe_id = 0, i = 0; cpe_id < nCPE; cpe_id++ )
@@ -574,7 +582,11 @@ void ivas_mct_core_enc(

#ifdef DEBUGGING
    format_bits = ( ivas_format == MC_FORMAT ? IVAS_FORMAT_SIGNALING_NBITS + MC_LS_SETUP_BITS : IVAS_FORMAT_SIGNALING_NBITS_EXTENDED + SBA_ORDER_BITS + SBA_PLANAR_BITS );
#ifdef NONBE_FIX_SBA_SIGNALING_BITS_B
	format_bits += (ivas_format == SBA_ISM_FORMAT);
#else
	format_bits += (ivas_format == SBA_ISM_FORMAT && nChannels > FOA_CHANNELS);
#endif
	mct_bits += hMCT->nBitsMCT + hMCT->nchan_out_woLFE;
    assert( ( total_brate + ( NBITS_BWIDTH + format_bits + mct_bits + sba_meta + lfe_bits ) * FRAMES_PER_SEC ) == ivas_total_brate );
#endif
+13 −2
Original line number Diff line number Diff line
@@ -354,11 +354,22 @@ ivas_error ivas_spar_enc(
            /* Write SBA planar flag */
            push_indice( st0->hBstr, IND_SMODE, hEncoderConfig->sba_planar, SBA_PLANAR_BITS );

            /* hack to indicate OSBA bitstream at VLBR */
			/* hack to indicate OSBA format (SBA order = 0) at low bitrates */
			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 );
        }