Loading lib_util/render_config_reader.c +31 −26 Original line number Diff line number Diff line Loading @@ -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 */ ) { Loading @@ -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; Loading @@ -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 ); } Loading Loading @@ -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 ) Loading Loading @@ -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] ) Loading Loading @@ -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; } Loading @@ -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; } Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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 Loading Loading @@ -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 ); } Loading scripts/reverb/generate_acoustic_environments_metadata.py +10 −10 Original line number Diff line number Diff line Loading @@ -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: Loading Loading @@ -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)]) Loading Loading @@ -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 Loading @@ -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() Loading Loading @@ -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 Loading @@ -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() Loading Loading @@ -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() Loading
lib_util/render_config_reader.c +31 −26 Original line number Diff line number Diff line Loading @@ -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 */ ) { Loading @@ -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; Loading @@ -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 ); } Loading Loading @@ -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 ) Loading Loading @@ -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] ) Loading Loading @@ -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; } Loading @@ -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; } Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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 Loading Loading @@ -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 ); } Loading
scripts/reverb/generate_acoustic_environments_metadata.py +10 −10 Original line number Diff line number Diff line Loading @@ -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: Loading Loading @@ -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)]) Loading Loading @@ -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 Loading @@ -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() Loading Loading @@ -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 Loading @@ -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() Loading Loading @@ -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()