Loading apps/decoder.c +50 −39 Original line number Diff line number Diff line Loading @@ -172,7 +172,7 @@ static int16_t app_own_random( int16_t *seed ); static IVAS_DEC_FORCED_REND_MODE parseForcedRendModeDec( char *forcedRendModeChar ); #endif #ifdef OBJ_EDITING_EXAMPLE static ivas_error do_object_editing( IVAS_DEC_HANDLE hIvasDec ); static void do_object_editing( IVAS_EDITABLE_PARAMETERS *editableParameters ); #endif Loading Loading @@ -2463,15 +2463,29 @@ static ivas_error decodeG192( } #ifdef OBJ_EDITING_API /* Object metadata editing */ if ( arg.objEditEnabled ) { /* Do object metadata editing here */ #ifdef OBJ_EDITING_EXAMPLE if ( ( error = do_object_editing( hIvasDec ) ) != IVAS_ERR_OK ) IVAS_EDITABLE_PARAMETERS editableParameters; /* get object parameters */ if ( ( error = IVAS_DEC_GetEditableParameters( hIvasDec, &editableParameters ) ) != IVAS_ERR_OK ) { goto cleanup; fprintf( stderr, "\nError: could not get the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); return error; } /* Do object metadata editing here ... */ #ifdef OBJ_EDITING_EXAMPLE do_object_editing( &editableParameters ); #endif /* set new object parameters */ if ( ( error = IVAS_DEC_SetEditableParameters( hIvasDec, editableParameters ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: could not set the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); return error; } } /* Do the final preparations needed for rendering */ Loading Loading @@ -3339,14 +3353,29 @@ static ivas_error decodeVoIP( } #ifdef OBJ_EDITING_API /* Object metadata editing */ if ( parameterAvailableForEditing == true ) // VE: harmonize it with decodeG192() { #ifdef OBJ_EDITING_EXAMPLE if ( ( error = do_object_editing( hIvasDec ) ) != IVAS_ERR_OK ) IVAS_EDITABLE_PARAMETERS editableParameters; /* get object parameters */ if ( ( error = IVAS_DEC_GetEditableParameters( hIvasDec, &editableParameters ) ) != IVAS_ERR_OK ) { goto cleanup; fprintf( stderr, "\nError: could not get the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); return error; } /* Do object metadata editing here ... */ #ifdef OBJ_EDITING_EXAMPLE do_object_editing( &editableParameters ); #endif /* set new object parameters */ if ( ( error = IVAS_DEC_SetEditableParameters( hIvasDec, editableParameters ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: could not set the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); return error; } } } /* while ( nSamplesRendered < nOutSamples ) */ #endif Loading Loading @@ -3637,33 +3666,21 @@ cleanup: /*---------------------------------------------------------------------* * do_object_editing() * * Example function of how to edit objects metadata * Example function to edit objects parameters *---------------------------------------------------------------------*/ static ivas_error do_object_editing( IVAS_DEC_HANDLE hIvasDec ) { IVAS_EDITABLE_PARAMETERS editableParameters; ivas_error error; /* get object parameters */ if ( ( error = IVAS_DEC_GetEditableParameters( hIvasDec, &editableParameters ) ) != IVAS_ERR_OK ) static void do_object_editing( IVAS_EDITABLE_PARAMETERS *editableParameters ) { fprintf( stderr, "\nError: could not get the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); return error; } /* edit object parameters...*/ /* put the objects equally spaced at the horizontal plane */ /* and play a little bit with the gains... */ int16_t obj_idx, non_diegetic_obj_idx; int16_t num_nondiegetic_objects; num_nondiegetic_objects = 0; for ( obj_idx = 0; obj_idx < editableParameters.num_obj; obj_idx++ ) for ( obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ ) { if ( !editableParameters.ism_metadata[obj_idx].non_diegetic_flag ) if ( !editableParameters->ism_metadata[obj_idx].non_diegetic_flag ) { num_nondiegetic_objects++; } Loading @@ -3674,33 +3691,27 @@ static ivas_error do_object_editing( float start_angle, angle_inc; angle_inc = 360.0f / (float) num_nondiegetic_objects; start_angle = angle_inc / 2.0f; for ( obj_idx = 0, non_diegetic_obj_idx = 0; obj_idx < editableParameters.num_obj; obj_idx++ ) for ( obj_idx = 0, non_diegetic_obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ ) { if ( !editableParameters.ism_metadata[obj_idx].non_diegetic_flag ) if ( !editableParameters->ism_metadata[obj_idx].non_diegetic_flag ) { editableParameters.ism_metadata[obj_idx].elevation = 0.0f; editableParameters.ism_metadata[obj_idx].azimuth = start_angle + (float) non_diegetic_obj_idx * angle_inc; editableParameters->ism_metadata[obj_idx].elevation = 0.0f; editableParameters->ism_metadata[obj_idx].azimuth = start_angle + (float) non_diegetic_obj_idx * angle_inc; non_diegetic_obj_idx++; } } } /* breakover object gains */ for ( obj_idx = 0; obj_idx < editableParameters.num_obj; obj_idx++ ) for ( obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ ) { editableParameters.ism_metadata[obj_idx].gain = 0.5f + (float) ( ( frame + obj_idx * 50 ) % 250 ) / 250.0f; editableParameters->ism_metadata[obj_idx].gain = 0.5f + (float) ( ( frame + obj_idx * 50 ) % 250 ) / 250.0f; } editableParameters.gain_bed = 0.5f; editableParameters->gain_bed = 0.5f; /* set new object parameters */ if ( ( error = IVAS_DEC_SetEditableParameters( hIvasDec, editableParameters ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: could not set the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); return error; } return IVAS_ERR_OK; return; } #endif Loading Loading
apps/decoder.c +50 −39 Original line number Diff line number Diff line Loading @@ -172,7 +172,7 @@ static int16_t app_own_random( int16_t *seed ); static IVAS_DEC_FORCED_REND_MODE parseForcedRendModeDec( char *forcedRendModeChar ); #endif #ifdef OBJ_EDITING_EXAMPLE static ivas_error do_object_editing( IVAS_DEC_HANDLE hIvasDec ); static void do_object_editing( IVAS_EDITABLE_PARAMETERS *editableParameters ); #endif Loading Loading @@ -2463,15 +2463,29 @@ static ivas_error decodeG192( } #ifdef OBJ_EDITING_API /* Object metadata editing */ if ( arg.objEditEnabled ) { /* Do object metadata editing here */ #ifdef OBJ_EDITING_EXAMPLE if ( ( error = do_object_editing( hIvasDec ) ) != IVAS_ERR_OK ) IVAS_EDITABLE_PARAMETERS editableParameters; /* get object parameters */ if ( ( error = IVAS_DEC_GetEditableParameters( hIvasDec, &editableParameters ) ) != IVAS_ERR_OK ) { goto cleanup; fprintf( stderr, "\nError: could not get the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); return error; } /* Do object metadata editing here ... */ #ifdef OBJ_EDITING_EXAMPLE do_object_editing( &editableParameters ); #endif /* set new object parameters */ if ( ( error = IVAS_DEC_SetEditableParameters( hIvasDec, editableParameters ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: could not set the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); return error; } } /* Do the final preparations needed for rendering */ Loading Loading @@ -3339,14 +3353,29 @@ static ivas_error decodeVoIP( } #ifdef OBJ_EDITING_API /* Object metadata editing */ if ( parameterAvailableForEditing == true ) // VE: harmonize it with decodeG192() { #ifdef OBJ_EDITING_EXAMPLE if ( ( error = do_object_editing( hIvasDec ) ) != IVAS_ERR_OK ) IVAS_EDITABLE_PARAMETERS editableParameters; /* get object parameters */ if ( ( error = IVAS_DEC_GetEditableParameters( hIvasDec, &editableParameters ) ) != IVAS_ERR_OK ) { goto cleanup; fprintf( stderr, "\nError: could not get the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); return error; } /* Do object metadata editing here ... */ #ifdef OBJ_EDITING_EXAMPLE do_object_editing( &editableParameters ); #endif /* set new object parameters */ if ( ( error = IVAS_DEC_SetEditableParameters( hIvasDec, editableParameters ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: could not set the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); return error; } } } /* while ( nSamplesRendered < nOutSamples ) */ #endif Loading Loading @@ -3637,33 +3666,21 @@ cleanup: /*---------------------------------------------------------------------* * do_object_editing() * * Example function of how to edit objects metadata * Example function to edit objects parameters *---------------------------------------------------------------------*/ static ivas_error do_object_editing( IVAS_DEC_HANDLE hIvasDec ) { IVAS_EDITABLE_PARAMETERS editableParameters; ivas_error error; /* get object parameters */ if ( ( error = IVAS_DEC_GetEditableParameters( hIvasDec, &editableParameters ) ) != IVAS_ERR_OK ) static void do_object_editing( IVAS_EDITABLE_PARAMETERS *editableParameters ) { fprintf( stderr, "\nError: could not get the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); return error; } /* edit object parameters...*/ /* put the objects equally spaced at the horizontal plane */ /* and play a little bit with the gains... */ int16_t obj_idx, non_diegetic_obj_idx; int16_t num_nondiegetic_objects; num_nondiegetic_objects = 0; for ( obj_idx = 0; obj_idx < editableParameters.num_obj; obj_idx++ ) for ( obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ ) { if ( !editableParameters.ism_metadata[obj_idx].non_diegetic_flag ) if ( !editableParameters->ism_metadata[obj_idx].non_diegetic_flag ) { num_nondiegetic_objects++; } Loading @@ -3674,33 +3691,27 @@ static ivas_error do_object_editing( float start_angle, angle_inc; angle_inc = 360.0f / (float) num_nondiegetic_objects; start_angle = angle_inc / 2.0f; for ( obj_idx = 0, non_diegetic_obj_idx = 0; obj_idx < editableParameters.num_obj; obj_idx++ ) for ( obj_idx = 0, non_diegetic_obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ ) { if ( !editableParameters.ism_metadata[obj_idx].non_diegetic_flag ) if ( !editableParameters->ism_metadata[obj_idx].non_diegetic_flag ) { editableParameters.ism_metadata[obj_idx].elevation = 0.0f; editableParameters.ism_metadata[obj_idx].azimuth = start_angle + (float) non_diegetic_obj_idx * angle_inc; editableParameters->ism_metadata[obj_idx].elevation = 0.0f; editableParameters->ism_metadata[obj_idx].azimuth = start_angle + (float) non_diegetic_obj_idx * angle_inc; non_diegetic_obj_idx++; } } } /* breakover object gains */ for ( obj_idx = 0; obj_idx < editableParameters.num_obj; obj_idx++ ) for ( obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ ) { editableParameters.ism_metadata[obj_idx].gain = 0.5f + (float) ( ( frame + obj_idx * 50 ) % 250 ) / 250.0f; editableParameters->ism_metadata[obj_idx].gain = 0.5f + (float) ( ( frame + obj_idx * 50 ) % 250 ) / 250.0f; } editableParameters.gain_bed = 0.5f; editableParameters->gain_bed = 0.5f; /* set new object parameters */ if ( ( error = IVAS_DEC_SetEditableParameters( hIvasDec, editableParameters ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: could not set the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); return error; } return IVAS_ERR_OK; return; } #endif Loading