Commit 2e2b8692 authored by multrus's avatar multrus
Browse files

Merge branch '1637_ref_port-mr-1501-from-float' into 'ivas-float-update'

[non io][non-BE]Port MR 1501 from float to float

See merge request !1679
parents 2b3f7dc5 49480b55
Loading
Loading
Loading
Loading
+4 −0
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
@@ -193,6 +193,7 @@
#define FIX_1044_ISM_REND_MEMORY                        /* VA: issue 1044: Lower the memory of the ISM renderer handle. */
#define NONBE_FIX_1063_DIV_BY_ZERO_SUMNRG               /* VoiceAge: issue 1063: division by zero for angle_rot feature in the UNCLR classifier */
#define FIX_1060_USAN_ARRAY_BOUNDS                      /* FhG: issue 1060: USAN array-bounds errors */
#define NONBE_FIX_SBA_SIGNALING_BITS_B                  /* FhG: issue 1061: option B: signal sba order additionally in OSBA */

#define NONBE_FIX_984_OMASA_EXT_OUTPUT                  /* Nok: issue 1497 - porting OMASA EXT MR   */
/* #################### End BASOP porting switches ############################ */
+15 −1
Original line number Diff line number Diff line
@@ -415,22 +415,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 )
            {
+12 −0
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
+11 −1
Original line number Diff line number Diff line
@@ -354,11 +354,21 @@ 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 );
        }