Loading apps/renderer.c +4 −4 Original line number Diff line number Diff line Loading @@ -191,7 +191,7 @@ typedef struct float lfeConfigElevation; bool lfeCustomRoutingEnabled; char inLfePanningMatrixFile[RENDERER_MAX_CLI_ARG_LENGTH]; float syncMdDelay; int16_t syncMdDelay; IVAS_RENDER_FRAMESIZE render_framesize; uint16_t directivityPatternId[RENDERER_MAX_ISM_INPUTS]; AcousticEnvironmentSequence aeSequence; Loading Loading @@ -1278,7 +1278,7 @@ int main( fprintf( stderr, "\nError in IVAS_REND_SetTotalNumberOfObjects(): %s\n", ivas_error_to_string( error ) ); goto cleanup; } Word32 var1 = (Word32) ( args.syncMdDelay ); Word16 var1 = (Word16) ( args.syncMdDelay ); IF( ( error = IVAS_REND_SetIsmMetadataDelay( hIvasRend, var1 ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_REND_SetIsmMetadataDelay(): %s\n", ivas_error_to_string( error ) ); Loading Loading @@ -2123,7 +2123,7 @@ int main( if ( args.inConfig.numAudioObjects != 0 && ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL || args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { fprintf( stdout, "\n\nMetadata delayed %d subframes\n\n", (int16_t) round( args.syncMdDelay / ( 1000 / IVAS_NUM_FRAMES_PER_SEC / IVAS_MAX_PARAM_SPATIAL_SUBFRAMES ) ) ); fprintf( stdout, "\n\nMetadata delayed %d subframes\n\n", (int16_t) round( args.syncMdDelay / ( float BINAURAL_RENDERING_FRAME_SIZE_MS ) ) ); } if ( !args.quietModeEnabled && args.delayCompensationEnabled ) Loading Loading @@ -3023,7 +3023,7 @@ static void parseOption( case CmdLnOptionId_syncMdDelay: assert( numOptionValues == 1 ); /* Metadata Delay to sync with audio delay in ms */ args->syncMdDelay = strtof( optionValues[0], NULL ); args->syncMdDelay = (int16_t) strtol( optionValues[0], NULL, 10 ); break; default: assert( 0 && "This should be unreachable - all command line options should be explicitly handled." ); Loading lib_rend/lib_rend_fx.c +8 −4 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ #include "ivas_rom_com.h" #include "ivas_rom_rend.h" #include "stl.h" #include "typedef.h" #include <assert.h> #include <math.h> #include <stdbool.h> Loading Loading @@ -137,7 +138,7 @@ typedef struct #ifdef NONBE_1377_REND_DIRATT_CONF Word16 object_id; #endif Word32 ism_metadata_delay_ms_fx; /* Q0 */ Word16 ism_metadata_delay_ms_fx; /* Q0 */ } input_ism; typedef struct Loading Loading @@ -1674,8 +1675,11 @@ static ivas_error alignInputDelay( /* for ISM inputs, ensure the metadata sync delay is updated */ IF( getAudioConfigType( inputBase->inConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_OBJECT_BASED ) { Word64 tmp; inputIsm = (input_ism *) inputBase; inputIsm->ism_metadata_delay_ms_fx = Mpy_32_32( maxGlobalDelayNs /* Q0 */, 2147 /* (1 / 1e6f) in Q31 */ ); tmp = W_mult0_32_32( L_add( maxGlobalDelayNs, 500000 ) /* + 0.5ms for rounding */, /* Q0 */, 2147 /* (1 / 1e6f) in Q31 */ ); // Q31 inputIsm->ism_metadata_delay_ms_fx = add( inputIsm->ism_metadata_delay_ms_fx, extract_h( W_extract_h( tmp ) ) ); } } } Loading Loading @@ -9053,7 +9057,7 @@ ivas_error IVAS_REND_SetTotalNumberOfObjects( ivas_error IVAS_REND_SetIsmMetadataDelay( IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS renderer handle */ const Word32 sync_md_delay /* i : ISM Metadata Delay in ms to sync with audio delay */ const Word16 sync_md_delay /* i : ISM Metadata Delay in ms to sync with audio delay */ ) { Word16 i; Loading @@ -9065,7 +9069,7 @@ ivas_error IVAS_REND_SetIsmMetadataDelay( FOR( i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i ) { hIvasRend->inputsIsm[i].ism_metadata_delay_ms_fx = sync_md_delay; move32(); move16(); } return IVAS_ERR_OK; Loading Loading
apps/renderer.c +4 −4 Original line number Diff line number Diff line Loading @@ -191,7 +191,7 @@ typedef struct float lfeConfigElevation; bool lfeCustomRoutingEnabled; char inLfePanningMatrixFile[RENDERER_MAX_CLI_ARG_LENGTH]; float syncMdDelay; int16_t syncMdDelay; IVAS_RENDER_FRAMESIZE render_framesize; uint16_t directivityPatternId[RENDERER_MAX_ISM_INPUTS]; AcousticEnvironmentSequence aeSequence; Loading Loading @@ -1278,7 +1278,7 @@ int main( fprintf( stderr, "\nError in IVAS_REND_SetTotalNumberOfObjects(): %s\n", ivas_error_to_string( error ) ); goto cleanup; } Word32 var1 = (Word32) ( args.syncMdDelay ); Word16 var1 = (Word16) ( args.syncMdDelay ); IF( ( error = IVAS_REND_SetIsmMetadataDelay( hIvasRend, var1 ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_REND_SetIsmMetadataDelay(): %s\n", ivas_error_to_string( error ) ); Loading Loading @@ -2123,7 +2123,7 @@ int main( if ( args.inConfig.numAudioObjects != 0 && ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL || args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { fprintf( stdout, "\n\nMetadata delayed %d subframes\n\n", (int16_t) round( args.syncMdDelay / ( 1000 / IVAS_NUM_FRAMES_PER_SEC / IVAS_MAX_PARAM_SPATIAL_SUBFRAMES ) ) ); fprintf( stdout, "\n\nMetadata delayed %d subframes\n\n", (int16_t) round( args.syncMdDelay / ( float BINAURAL_RENDERING_FRAME_SIZE_MS ) ) ); } if ( !args.quietModeEnabled && args.delayCompensationEnabled ) Loading Loading @@ -3023,7 +3023,7 @@ static void parseOption( case CmdLnOptionId_syncMdDelay: assert( numOptionValues == 1 ); /* Metadata Delay to sync with audio delay in ms */ args->syncMdDelay = strtof( optionValues[0], NULL ); args->syncMdDelay = (int16_t) strtol( optionValues[0], NULL, 10 ); break; default: assert( 0 && "This should be unreachable - all command line options should be explicitly handled." ); Loading
lib_rend/lib_rend_fx.c +8 −4 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ #include "ivas_rom_com.h" #include "ivas_rom_rend.h" #include "stl.h" #include "typedef.h" #include <assert.h> #include <math.h> #include <stdbool.h> Loading Loading @@ -137,7 +138,7 @@ typedef struct #ifdef NONBE_1377_REND_DIRATT_CONF Word16 object_id; #endif Word32 ism_metadata_delay_ms_fx; /* Q0 */ Word16 ism_metadata_delay_ms_fx; /* Q0 */ } input_ism; typedef struct Loading Loading @@ -1674,8 +1675,11 @@ static ivas_error alignInputDelay( /* for ISM inputs, ensure the metadata sync delay is updated */ IF( getAudioConfigType( inputBase->inConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_OBJECT_BASED ) { Word64 tmp; inputIsm = (input_ism *) inputBase; inputIsm->ism_metadata_delay_ms_fx = Mpy_32_32( maxGlobalDelayNs /* Q0 */, 2147 /* (1 / 1e6f) in Q31 */ ); tmp = W_mult0_32_32( L_add( maxGlobalDelayNs, 500000 ) /* + 0.5ms for rounding */, /* Q0 */, 2147 /* (1 / 1e6f) in Q31 */ ); // Q31 inputIsm->ism_metadata_delay_ms_fx = add( inputIsm->ism_metadata_delay_ms_fx, extract_h( W_extract_h( tmp ) ) ); } } } Loading Loading @@ -9053,7 +9057,7 @@ ivas_error IVAS_REND_SetTotalNumberOfObjects( ivas_error IVAS_REND_SetIsmMetadataDelay( IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS renderer handle */ const Word32 sync_md_delay /* i : ISM Metadata Delay in ms to sync with audio delay */ const Word16 sync_md_delay /* i : ISM Metadata Delay in ms to sync with audio delay */ ) { Word16 i; Loading @@ -9065,7 +9069,7 @@ ivas_error IVAS_REND_SetIsmMetadataDelay( FOR( i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i ) { hIvasRend->inputsIsm[i].ism_metadata_delay_ms_fx = sync_md_delay; move32(); move16(); } return IVAS_ERR_OK; Loading