Commit 5f0de586 authored by sagnowski's avatar sagnowski
Browse files

Fix missing binaural pairs in output from ivas_dec

parent 4a022bea
Loading
Loading
Loading
Loading
Loading
+25 −8
Original line number Diff line number Diff line
@@ -87,6 +87,9 @@ ivas_error ivas_dec(
#ifdef MASA_AND_OBJECTS
    int32_t ism_total_brate;
#endif
#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT
    int16_t nchan_out_syn_output;
#endif

    error = IVAS_ERR_OK;

@@ -1062,17 +1065,28 @@ ivas_error ivas_dec(
     *   - float to integer conversion
     *----------------------------------------------------------------*/

#ifdef API_5MS
#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT
    if ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
    {
        nchan_out_syn_output = BINAURAL_CHANNELS * st_ivas->splitBinRend.splitrend.multiBinPoseData.num_poses;
    }
    else
    {
        nchan_out_syn_output = nchan_out;
    }

    if ( st_ivas->hDecoderConfig->Opt_Limiter )
#endif
    {
        ivas_limiter_dec( st_ivas->hLimiter, p_output, nchan_out, output_frame, st_ivas->BER_detect );
        ivas_limiter_dec( st_ivas->hLimiter, p_output,
#ifdef API_5MS
                          nchan_out_syn_output,
#else
                          nchan_out,
#endif
                          output_frame, st_ivas->BER_detect );
    }

#ifdef DEBUGGING
    st_ivas->noClipping +=
#endif
        ivas_syn_output( p_output, output_frame, nchan_out, data );
#ifdef API_5MS
    switch ( pcm_resolution )
    {
@@ -1081,16 +1095,19 @@ ivas_error ivas_dec(
#ifdef DEBUGGING
            st_ivas->noClipping +=
#endif
                ivas_syn_output( p_output, output_frame, nchan_out,
                ivas_syn_output( p_output, output_frame,
#ifdef API_5MS
                                 nchan_out_syn_output,
                                 (int16_t *)
#else
                     nchan_out,
#endif
                                     data );

#ifdef API_5MS
            break;
        case PCM_FLOAT32:
            ivas_syn_output_f( p_output, output_frame, nchan_out, (float *) data );
            ivas_syn_output_f( p_output, output_frame, nchan_out_syn_output, (float *) data );
            break;
        default:
            error = IVAS_ERR_UNKNOWN;
+2 −5
Original line number Diff line number Diff line
@@ -1293,9 +1293,9 @@ ivas_error IVAS_DEC_GetSplitBinauralBitstream(
        {
            return error;
        }
        assert( numSamplesPerChannelToDecode == *nOutSamples );
#ifdef DEBUGGING
        dbgwrite( output, sizeof( float ), numSamplesPerChannelToDecode * BINAURAL_CHANNELS * numPoses, 1, "res/output_float.pcm" );
        assert( numSamplesPerChannelToDecode == *nOutSamples );
        dbgwrite( pcmBuf, sizeof( float ), numSamplesPerChannelToDecode * BINAURAL_CHANNELS * numPoses, 1, "res/IVAS_DEC_GetSamples_split.pcm" );
#endif

        /* copy to cache if cache is in use */
@@ -1340,9 +1340,6 @@ ivas_error IVAS_DEC_GetSplitBinauralBitstream(
            output[j][i] = pcmBuf[i * BINAURAL_CHANNELS * numPoses + j];
        }
    }
#ifdef DEBUGGING
    dbgwrite( output[0], sizeof( float ), numSamplesPerChannelToSplitEncode, 1, "res/output.pcm" );
#endif
    max_band = (int16_t) ( ( BINAURAL_MAXBANDS * output_Fs ) / 48000 );
    pcm_out = ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0;
    td_input = st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && st_ivas->renderer_type != RENDERER_STEREO_PARAMETRIC;
+0 −3
Original line number Diff line number Diff line
@@ -2098,9 +2098,6 @@ static ivas_error splitRendLc3plusEncodeAndWrite(
    ivas_split_rend_bitstream_write_int32( pBits, ivas_get_lc3plus_bitrate_id( SplitRendBitRate ), 8 );

    /* Write bitstream */
#ifdef DEBUGGING
    dbgwrite( in[0], sizeof( float ), 960, 1, "res/IVAS_LC3PLUS_ENC_Encode.raw" );
#endif
    if ( ( error = IVAS_LC3PLUS_ENC_Encode( hSplitBin->hLc3plusEnc, channel_ptrs, &pBits->bits_buf[pBits->bits_written / 8] ) ) != IVAS_ERR_OK )
    {
        return error;