Commit 81183cb7 authored by Jan Brouwer's avatar Jan Brouwer
Browse files

Corrected bugs reported as part of crosscheck feedback

parent ae14ad17
Loading
Loading
Loading
Loading
Loading
+31 −26
Original line number Diff line number Diff line
@@ -412,7 +412,7 @@ const float defaultFrequencyGrid_8[] = {
 *-----------------------------------------------------------------------------------------*/
static ivas_error read_bits(
    RenderConfigReader *this, /* i/o  : Renderer config reader handle */
    uint32_t *pTarget,        /* i/o  : Target read data pointer      */
    uint32_t *pTarget,        /* o    : Target read data pointer      */
    const size_t nBits        /* i    : Number of bits to read        */
)
{
@@ -430,6 +430,7 @@ static ivas_error read_bits(
        return IVAS_ERR_INVALID_RENDER_CONFIG;
    }

    *pTarget = 0;
    for ( n = 0; n < nBits; n++ )
    {
        nByte = ( this->readOffset + n ) >> 3;
@@ -451,7 +452,6 @@ static ivas_error read_bool(
    uint32_t *pResult         /* o    : Target read data pointer      */
)
{
    *pResult = false;
    return read_bits( this, pResult, 1 );
}

@@ -513,10 +513,14 @@ static ivas_error read_code_word(
    uint8_t size;
    uint8_t n;
    uint32_t code;
    uint32_t bits;
    uint32_t nr_bits;
    uint8_t len;

    minLen = 255;
    maxLen = 0;
    bits = 0;
    nr_bits = 0;
    code = 0;

    if ( pResult == NULL )
@@ -624,11 +628,12 @@ static ivas_error read_code_word(
    }
    for ( len = minLen; len <= maxLen; len++ )
    {
        if ( ( error = read_bits( this, &code, ( len == minLen ) ? minLen : 1 ) ) != IVAS_ERR_OK )
        nr_bits = ( len == minLen ) ? minLen : 1;
        if ( ( error = read_bits( this, &bits, nr_bits ) ) != IVAS_ERR_OK )
        {
            return error;
        }

        code = ( code << nr_bits ) | bits;
        for ( n = 0; n < size; n++ )
        {
            if ( code == pCodes[n] && len == pLengths[n] )
@@ -835,7 +840,7 @@ static ivas_error get_distance(
    if ( isSmall == false )
    {
        /* addHectometers flag */
        if ( ( error = read_bits( this, &flag, 1 ) ) != IVAS_ERR_OK )
        if ( ( error = read_bool( this, &flag ) ) != IVAS_ERR_OK )
        {
            return error;
        }
@@ -850,7 +855,7 @@ static ivas_error get_distance(
            *pResult += value * 100.0f;

            /* addKilometers flag */
            if ( ( error = read_bits( this, &flag, 1 ) ) != IVAS_ERR_OK )
            if ( ( error = read_bool( this, &flag ) ) != IVAS_ERR_OK )
            {
                return error;
            }
@@ -865,29 +870,28 @@ static ivas_error get_distance(
                *pResult += value * 1000.0f;

                /* addKilometers flag */
                if ( ( error = read_bits( this, &flag, 1 ) ) != IVAS_ERR_OK )
                if ( ( error = read_bool( this, &flag ) ) != IVAS_ERR_OK )
                {
                    return error;
                }
            }
        }
    }

    /* addCentimeters flag */
        if ( ( error = read_bits( this, &flag, 1 ) ) != IVAS_ERR_OK )
    if ( ( error = read_bool( this, &flag ) ) != IVAS_ERR_OK )
    {
        return error;
    }
    if ( flag == true )
    {
        /* Centimeters */
            /* Kilometers */
        if ( ( error = read_code_word( this, RC_LUT_CENTIMETERS, &value ) ) != IVAS_ERR_OK )
        {
            return error;
        }
        *pResult += value * 0.01f;
    }
    }

    return IVAS_ERR_OK;
}
@@ -1240,7 +1244,7 @@ static ivas_error RenderConfigReader_readReverb(
    /****************************/
    /* Read the presence flag   */
    /****************************/
    if ( ( error = read_bits( pRenderConfigReader, &value, 1 ) ) != IVAS_ERR_OK )
    if ( ( error = read_bool( pRenderConfigReader, &value ) ) != IVAS_ERR_OK )
    {
        return error;
    }
@@ -1506,7 +1510,7 @@ static ivas_error RenderConfigReader_readReverb(

#ifdef CONTROL_METADATA_EARLY_REFLECTIONS
        /* Has early reflections */
        if ( ( error = read_bits( pRenderConfigReader, &value, 1 ) ) != IVAS_ERR_OK )
        if ( ( error = read_bool( pRenderConfigReader, &value ) ) != IVAS_ERR_OK )
        {
            return error;
        }
@@ -1556,7 +1560,7 @@ static ivas_error RenderConfigReader_readReverb(
            }

            /* Has listener origin */
            if ( ( error = read_bits( pRenderConfigReader, &value, 1 ) ) != IVAS_ERR_OK )
            if ( ( error = read_bool( pRenderConfigReader, &value ) ) != IVAS_ERR_OK )
            {
                return error;
            }
@@ -1592,6 +1596,10 @@ static ivas_error RenderConfigReader_readReverb(
                {
                    pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin->y *= -1.0f;
                }
                if ( ( error = get_distance( pRenderConfigReader, true, &pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin->z ) ) != IVAS_ERR_OK )
                {
                    return error;
                }
            }
        }
#endif
@@ -1941,11 +1949,8 @@ void RenderConfigReader_close(
    {
#ifdef CONTROL_METADATA_EARLY_REFLECTIONS
        if ( ( *ppRenderConfigReader )->pAE[n].pEarlyReflections != NULL )
        {
            if ( ( *ppRenderConfigReader )->pAE[n].pEarlyReflections->pListenerOrigin != NULL )
        {
            free( ( *ppRenderConfigReader )->pAE[n].pEarlyReflections->pListenerOrigin );
            }
            free( ( *ppRenderConfigReader )->pAE[n].pEarlyReflections->pAbsCoeff );
            free( ( *ppRenderConfigReader )->pAE[n].pEarlyReflections );
        }
+10 −10
Original line number Diff line number Diff line
@@ -294,7 +294,7 @@ def get_distance_code(distance, isSmallScene = True):
    code = metersCode[m]
    
    if isSmallScene:
        assert(m == hm == km == 0)
        assert(hm == km == 0)
    else:
        # large scenes
        if hm > 0 or km > 0:
@@ -359,7 +359,7 @@ def test():
    string += concatenate(lambda d : get_distance_code(d, False), [d       for d in range(20 * 1000)])
    string += concatenate(lambda d : get_distance_code(d, False), [d / 10  for d in range(20 * 1000)])
    string += concatenate(lambda d : get_distance_code(d, False), [d / 100 for d in range(20 * 1000)])
    string += concatenate(lambda d : get_distance_code(d, True),  [d / 100 for d in range(      100)])
    string += concatenate(lambda d : get_distance_code(d, True),  [d / 100 for d in range(10 * 1000)])

    # absorption encoding
    string += concatenate(get_absorption_code, [a / 100 for a in range(100 + 1)])
@@ -450,7 +450,7 @@ def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_re
              2.6267e-08 ])

        + '1'                                     #   hasEarlyReflections
        + concatenate(lambda d : get_distance_code(d, False),
        + concatenate(lambda d : get_distance_code(d, True),
            [ 3.0, 4.0, 2.5 ])                    #     room dimensions
        
        + get_count_or_index_code(0)              #     FreqGridID
@@ -461,7 +461,7 @@ def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_re

        , endian='big')

    file = open('rend_config_renderer.dat', 'wb')
    file = open('rend_config_renderer_cfg_plus_early_reflections_no_listener_origin.dat', 'wb')
    data.tofile(file)
    file.close()

@@ -507,7 +507,7 @@ def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_re
              2.6267e-08 ])

        + '1'                                     #   hasEarlyReflections
        + concatenate(lambda code : get_distance_code(code, False),
        + concatenate(lambda code : get_distance_code(code, True),
            [ 3.0, 4.0, 2.5 ])                    #     room dimensions

        + get_count_or_index_code(0)              #     FreqGridID
@@ -515,14 +515,14 @@ def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_re
            [ 0.8, 0.8, 0.8, 0.8, 0.2, 0.6 ])

        + '1'                                     #     listener origin flag
        + '1'                                     #     positive x origin
        + '0'                                     #     negative y origin
        + concatenate(lambda d : get_distance_code(d, False),
        + '1'                                     #     is possitive x
        + '0'                                     #     is possitive y
        + concatenate(lambda d : get_distance_code(d, True),
            [ 0.5, 0.5, 1.5 ])                    #     listener origin (x, y, z)

        , endian='big')

    file = open('rend_config_renderer.dat', 'wb')
    file = open('rend_config_renderer_cfg_plus_early_reflections_listener_origin.dat', 'wb')
    data.tofile(file)
    file.close()

@@ -616,5 +616,5 @@ generate_reverb_payload_equivalent_to_rend_config_renderer_cfg()
generate_reverb_payload_equivalent_to_rend_config_hospital_patientroom_cfg()
generate_reverb_payload_equivalent_to_rend_config_recreation_cfg()

#generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_reflections_no_listener_origin()
#generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_reflections_listener_origin()
#generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_reflections_no_listener_origin()