Loading apps/decoder.c +7 −4 Original line number Diff line number Diff line Loading @@ -467,26 +467,29 @@ int main( goto cleanup; } #ifdef CONF_DISTATT if ( ( error = RenderConfigReader_getDirectivity( renderConfigReader, arg.directivityPatternId, renderConfig.directivity_fx ) ) != IVAS_ERR_OK ) #else if ( ( error = RenderConfigReader_getDirectivity( renderConfigReader, arg.directivityPatternId, renderConfig.directivity ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "Failed to get directivity patterns for one or more of IDs: %d %d %d %d\n\n", arg.directivityPatternId[0], arg.directivityPatternId[1], arg.directivityPatternId[2], arg.directivityPatternId[3] ); goto cleanup; } #ifndef CONF_DISTATT FOR( Word16 i = 0; i < 4; i++ ) { renderConfig.directivity_fx[i * 3] = (Word16) ( renderConfig.directivity[i * 3] * ( 1u << 6 ) ); renderConfig.directivity_fx[i * 3 + 1] = (Word16) ( renderConfig.directivity[i * 3 + 1] * ( 1u << 6 ) ); renderConfig.directivity_fx[i * 3 + 2] = (Word16) ( renderConfig.directivity[i * 3 + 2] * ( ( 1u << 15 ) - 1 ) ); } #endif #ifdef CONF_DISTATT if ( ( error = RenderConfigReader_getDistanceAttenuation( renderConfigReader, renderConfig.distAtt ) ) != IVAS_ERR_OK ) if ( ( error = RenderConfigReader_getDistanceAttenuation( renderConfigReader, renderConfig.distAtt_fx ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Failed to get Distance Attenuation \n\n" ); goto cleanup; } renderConfig.distAtt_fx[0] = (Word32) ( renderConfig.distAtt[0] * ( 1u << 27 ) ); renderConfig.distAtt_fx[1] = (Word32) ( renderConfig.distAtt[1] * ( 1u << 30 ) ); renderConfig.distAtt_fx[2] = (Word32) ( renderConfig.distAtt[2] * ( 1u << 30 ) ); #endif if ( ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) Loading lib_util/render_config_reader.c +28 −2 Original line number Diff line number Diff line Loading @@ -2893,12 +2893,19 @@ ivas_error RenderConfigReader_getAcousticEnvironment( ivas_error RenderConfigReader_getDirectivity( RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ uint16_t *id, /* i : Directivity pattern ID */ #ifdef CONF_DISTATT Word16 *directivity_fx /* o : Target directivity */ #else float *directivity /* o : Target directivity */ #endif ) { uint16_t n, m; uint16_t last_specified_id; bool idExists; #ifdef CONF_DISTATT float directivity[12]; #endif if ( pRenderConfigReader == NULL ) { Loading Loading @@ -2956,6 +2963,17 @@ ivas_error RenderConfigReader_getDirectivity( } } } #ifdef CONF_DISTATT /* Convert to Word16 */ FOR( n = 0; n < 4; n++ ) { directivity_fx[n * 3] = (Word16) ( directivity[n * 3] * ( 1u << 6 ) ); directivity_fx[n * 3 + 1] = (Word16) ( directivity[n * 3 + 1] * ( 1u << 6 ) ); directivity_fx[n * 3 + 2] = (Word16) ( directivity[n * 3 + 2] * ( ( 1u << 15 ) - 1 ) ); } #endif return IVAS_ERR_OK; } Loading @@ -2968,9 +2986,12 @@ ivas_error RenderConfigReader_getDirectivity( ivas_error RenderConfigReader_getDistanceAttenuation( RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ float *distAtt /* o : Distance attenuation */ Word32 *distAtt_fx /* o : Distance attenuation */ ) { float distAtt[3]; if ( pRenderConfigReader->distAtt[0] == -1 ) { distAtt[0] = 15.75f; Loading @@ -2984,6 +3005,11 @@ ivas_error RenderConfigReader_getDistanceAttenuation( distAtt[2] = pRenderConfigReader->distAtt[2]; } /* Convert to Word32 */ distAtt_fx[0] = (Word32) ( distAtt[0] * ( 1u << 27 ) ); distAtt_fx[1] = (Word32) ( distAtt[1] * ( 1u << 30 ) ); distAtt_fx[2] = (Word32) ( distAtt[2] * ( 1u << 30 ) ); return IVAS_ERR_OK; } #endif Loading lib_util/render_config_reader.h +6 −2 Original line number Diff line number Diff line Loading @@ -60,12 +60,16 @@ ivas_error RenderConfigReader_getAcousticEnvironment( ivas_error RenderConfigReader_getDirectivity( RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ uint16_t *pId, /* i : Directivity pattern ID */ #ifdef CONF_DISTATT Word16 *directivity_fx /* o : Target directivity */ #else float *directivity /* o : Target directivity */ #endif ); #ifdef CONF_DISTATT ivas_error RenderConfigReader_getDistanceAttenuation( RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ float *distAtt /* o : Distance attenuation */ Word32 *distAtt_fx /* o : Distance attenuation */ ); #endif /* Verifies configuration parameters */ Loading Loading
apps/decoder.c +7 −4 Original line number Diff line number Diff line Loading @@ -467,26 +467,29 @@ int main( goto cleanup; } #ifdef CONF_DISTATT if ( ( error = RenderConfigReader_getDirectivity( renderConfigReader, arg.directivityPatternId, renderConfig.directivity_fx ) ) != IVAS_ERR_OK ) #else if ( ( error = RenderConfigReader_getDirectivity( renderConfigReader, arg.directivityPatternId, renderConfig.directivity ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "Failed to get directivity patterns for one or more of IDs: %d %d %d %d\n\n", arg.directivityPatternId[0], arg.directivityPatternId[1], arg.directivityPatternId[2], arg.directivityPatternId[3] ); goto cleanup; } #ifndef CONF_DISTATT FOR( Word16 i = 0; i < 4; i++ ) { renderConfig.directivity_fx[i * 3] = (Word16) ( renderConfig.directivity[i * 3] * ( 1u << 6 ) ); renderConfig.directivity_fx[i * 3 + 1] = (Word16) ( renderConfig.directivity[i * 3 + 1] * ( 1u << 6 ) ); renderConfig.directivity_fx[i * 3 + 2] = (Word16) ( renderConfig.directivity[i * 3 + 2] * ( ( 1u << 15 ) - 1 ) ); } #endif #ifdef CONF_DISTATT if ( ( error = RenderConfigReader_getDistanceAttenuation( renderConfigReader, renderConfig.distAtt ) ) != IVAS_ERR_OK ) if ( ( error = RenderConfigReader_getDistanceAttenuation( renderConfigReader, renderConfig.distAtt_fx ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Failed to get Distance Attenuation \n\n" ); goto cleanup; } renderConfig.distAtt_fx[0] = (Word32) ( renderConfig.distAtt[0] * ( 1u << 27 ) ); renderConfig.distAtt_fx[1] = (Word32) ( renderConfig.distAtt[1] * ( 1u << 30 ) ); renderConfig.distAtt_fx[2] = (Word32) ( renderConfig.distAtt[2] * ( 1u << 30 ) ); #endif if ( ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) Loading
lib_util/render_config_reader.c +28 −2 Original line number Diff line number Diff line Loading @@ -2893,12 +2893,19 @@ ivas_error RenderConfigReader_getAcousticEnvironment( ivas_error RenderConfigReader_getDirectivity( RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ uint16_t *id, /* i : Directivity pattern ID */ #ifdef CONF_DISTATT Word16 *directivity_fx /* o : Target directivity */ #else float *directivity /* o : Target directivity */ #endif ) { uint16_t n, m; uint16_t last_specified_id; bool idExists; #ifdef CONF_DISTATT float directivity[12]; #endif if ( pRenderConfigReader == NULL ) { Loading Loading @@ -2956,6 +2963,17 @@ ivas_error RenderConfigReader_getDirectivity( } } } #ifdef CONF_DISTATT /* Convert to Word16 */ FOR( n = 0; n < 4; n++ ) { directivity_fx[n * 3] = (Word16) ( directivity[n * 3] * ( 1u << 6 ) ); directivity_fx[n * 3 + 1] = (Word16) ( directivity[n * 3 + 1] * ( 1u << 6 ) ); directivity_fx[n * 3 + 2] = (Word16) ( directivity[n * 3 + 2] * ( ( 1u << 15 ) - 1 ) ); } #endif return IVAS_ERR_OK; } Loading @@ -2968,9 +2986,12 @@ ivas_error RenderConfigReader_getDirectivity( ivas_error RenderConfigReader_getDistanceAttenuation( RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ float *distAtt /* o : Distance attenuation */ Word32 *distAtt_fx /* o : Distance attenuation */ ) { float distAtt[3]; if ( pRenderConfigReader->distAtt[0] == -1 ) { distAtt[0] = 15.75f; Loading @@ -2984,6 +3005,11 @@ ivas_error RenderConfigReader_getDistanceAttenuation( distAtt[2] = pRenderConfigReader->distAtt[2]; } /* Convert to Word32 */ distAtt_fx[0] = (Word32) ( distAtt[0] * ( 1u << 27 ) ); distAtt_fx[1] = (Word32) ( distAtt[1] * ( 1u << 30 ) ); distAtt_fx[2] = (Word32) ( distAtt[2] * ( 1u << 30 ) ); return IVAS_ERR_OK; } #endif Loading
lib_util/render_config_reader.h +6 −2 Original line number Diff line number Diff line Loading @@ -60,12 +60,16 @@ ivas_error RenderConfigReader_getAcousticEnvironment( ivas_error RenderConfigReader_getDirectivity( RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ uint16_t *pId, /* i : Directivity pattern ID */ #ifdef CONF_DISTATT Word16 *directivity_fx /* o : Target directivity */ #else float *directivity /* o : Target directivity */ #endif ); #ifdef CONF_DISTATT ivas_error RenderConfigReader_getDistanceAttenuation( RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ float *distAtt /* o : Distance attenuation */ Word32 *distAtt_fx /* o : Distance attenuation */ ); #endif /* Verifies configuration parameters */ Loading