Commit 4eaa3439 authored by Ke Zhao's avatar Ke Zhao
Browse files

Fix bug with checking of channel numbers when reading HOA2 and FOA HRTF binary files

parent f190d90b
Loading
Loading
Loading
Loading
Loading
+69 −24
Original line number Diff line number Diff line
@@ -1135,10 +1135,17 @@ static ivas_error create_fastconv_HRTF_from_rawdata(
        ( *hHRTF )->FASTCONV_HOA3_latency_s = *( (float *) ( hrtf_data_rptr ) );
        hrtf_data_rptr += sizeof( float );

#ifdef UPDATE_FASTCONV_SBA_FILTER
        if ( HOA3_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) )
        {
            return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HOA3_CHANNELS)" );
        }
#else
        if ( HRTF_SH_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) )
        {
            return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HRTF_SH_CHANNELS)" );
        }
#endif
        hrtf_data_rptr += sizeof( uint16_t );

#ifdef UPDATE_FASTCONV_SBA_FILTER
@@ -1156,12 +1163,14 @@ static ivas_error create_fastconv_HRTF_from_rawdata(

        for ( i = 0; i < BINAURAL_CONVBANDS; i++ )
        {
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
#ifdef UPDATE_FASTCONV_SBA_FILTER
            for ( j = 0; j < HOA3_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->leftHRIRReal_HOA3[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float );
#else
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->leftHRIRReal_HOA3[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float );
#endif
@@ -1169,12 +1178,14 @@ static ivas_error create_fastconv_HRTF_from_rawdata(
        }
        for ( i = 0; i < BINAURAL_CONVBANDS; i++ )
        {
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
#ifdef UPDATE_FASTCONV_SBA_FILTER
            for ( j = 0; j < HOA3_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->leftHRIRImag_HOA3[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float );
#else
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->leftHRIRImag_HOA3[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float );
#endif
@@ -1182,12 +1193,14 @@ static ivas_error create_fastconv_HRTF_from_rawdata(
        }
        for ( i = 0; i < BINAURAL_CONVBANDS; i++ )
        {
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
#ifdef UPDATE_FASTCONV_SBA_FILTER
            for ( j = 0; j < HOA3_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->rightHRIRReal_HOA3[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float );
#else
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->rightHRIRReal_HOA3[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float );
#endif
@@ -1195,12 +1208,14 @@ static ivas_error create_fastconv_HRTF_from_rawdata(
        }
        for ( i = 0; i < BINAURAL_CONVBANDS; i++ )
        {
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
#ifdef UPDATE_FASTCONV_SBA_FILTER
            for ( j = 0; j < HOA3_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->rightHRIRImag_HOA3[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float );
#else
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->rightHRIRImag_HOA3[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float );
#endif
@@ -1213,10 +1228,17 @@ static ivas_error create_fastconv_HRTF_from_rawdata(
        ( *hHRTF )->FASTCONV_HOA2_latency_s = *( (float *) ( hrtf_data_rptr ) );
        hrtf_data_rptr += sizeof( float );

#ifdef UPDATE_FASTCONV_SBA_FILTER
        if ( HOA2_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) )
        {
            return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HOA2_CHANNELS)" );
        }
#else
        if ( HRTF_SH_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) )
        {
            return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HRTF_SH_CHANNELS)" );
        }
#endif
        hrtf_data_rptr += sizeof( uint16_t );

#ifdef UPDATE_FASTCONV_SBA_FILTER
@@ -1234,12 +1256,14 @@ static ivas_error create_fastconv_HRTF_from_rawdata(

        for ( i = 0; i < BINAURAL_CONVBANDS; i++ )
        {
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
#ifdef UPDATE_FASTCONV_SBA_FILTER
            for ( j = 0; j < HOA2_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->leftHRIRReal_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float );
#else
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->leftHRIRReal_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float );
#endif
@@ -1247,12 +1271,14 @@ static ivas_error create_fastconv_HRTF_from_rawdata(
        }
        for ( i = 0; i < BINAURAL_CONVBANDS; i++ )
        {
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
#ifdef UPDATE_FASTCONV_SBA_FILTER
            for ( j = 0; j < HOA2_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->leftHRIRImag_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float );
#else
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->leftHRIRImag_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float );
#endif
@@ -1260,12 +1286,14 @@ static ivas_error create_fastconv_HRTF_from_rawdata(
        }
        for ( i = 0; i < BINAURAL_CONVBANDS; i++ )
        {
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
#ifdef UPDATE_FASTCONV_SBA_FILTER
            for ( j = 0; j < HOA2_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->rightHRIRReal_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float );
#else
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->rightHRIRReal_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float );
#endif
@@ -1273,12 +1301,14 @@ static ivas_error create_fastconv_HRTF_from_rawdata(
        }
        for ( i = 0; i < BINAURAL_CONVBANDS; i++ )
        {
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
#ifdef UPDATE_FASTCONV_SBA_FILTER
            for ( j = 0; j < HOA2_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->rightHRIRImag_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float );
#else
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->rightHRIRImag_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float );
#endif
@@ -1291,10 +1321,17 @@ static ivas_error create_fastconv_HRTF_from_rawdata(
        ( *hHRTF )->FASTCONV_FOA_latency_s = *( (float *) ( hrtf_data_rptr ) );
        hrtf_data_rptr += sizeof( float );

#ifdef UPDATE_FASTCONV_SBA_FILTER
        if ( FOA_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) )
        {
            return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (FOA_CHANNELS)" );
        }
#else
        if ( HRTF_SH_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) )
        {
            return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HRTF_SH_CHANNELS)" );
        }
#endif
        hrtf_data_rptr += sizeof( uint16_t );

#ifdef UPDATE_FASTCONV_SBA_FILTER
@@ -1312,12 +1349,14 @@ static ivas_error create_fastconv_HRTF_from_rawdata(

        for ( i = 0; i < BINAURAL_CONVBANDS; i++ )
        {
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
#ifdef UPDATE_FASTCONV_SBA_FILTER
            for ( j = 0; j < FOA_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->leftHRIRReal_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float );
#else
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->leftHRIRReal_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float );
#endif
@@ -1325,12 +1364,14 @@ static ivas_error create_fastconv_HRTF_from_rawdata(
        }
        for ( i = 0; i < BINAURAL_CONVBANDS; i++ )
        {
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
#ifdef UPDATE_FASTCONV_SBA_FILTER
            for ( j = 0; j < FOA_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->leftHRIRImag_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float );
#else
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->leftHRIRImag_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float );
#endif
@@ -1338,12 +1379,14 @@ static ivas_error create_fastconv_HRTF_from_rawdata(
        }
        for ( i = 0; i < BINAURAL_CONVBANDS; i++ )
        {
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
#ifdef UPDATE_FASTCONV_SBA_FILTER
            for ( j = 0; j < FOA_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->rightHRIRReal_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float );
#else
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->rightHRIRReal_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float );
#endif
@@ -1351,12 +1394,14 @@ static ivas_error create_fastconv_HRTF_from_rawdata(
        }
        for ( i = 0; i < BINAURAL_CONVBANDS; i++ )
        {
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
#ifdef UPDATE_FASTCONV_SBA_FILTER
            for ( j = 0; j < FOA_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->rightHRIRImag_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float );
#else
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
                memcpy( ( *hHRTF )->rightHRIRImag_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) );
                hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float );
#endif