Commit a2bcf7c1 authored by vaclav's avatar vaclav
Browse files
parents d6a02670 3d8045a9
Loading
Loading
Loading
Loading
+34 −7
Original line number Diff line number Diff line
@@ -202,7 +202,11 @@ static int16_t app_own_random( int16_t *seed );
static IVAS_DEC_FORCED_REND_MODE parseForcedRendModeDec( char *forcedRendModeChar );
#endif
#ifdef FIX_1217_OBJECT_EDIT_FILE_INTERFACE
#ifdef NONBE_FIX_1255_OBJ_EDIT_JBM
static void do_object_editing( IVAS_EDITABLE_PARAMETERS *editableParameters, const int16_t num_subframes, ObjectEditFileReader *objectEditFileReader );
#else
static void do_object_editing( IVAS_EDITABLE_PARAMETERS *editableParameters, ObjectEditFileReader *objectEditFileReader );
#endif
#else
static void do_object_editing( IVAS_EDITABLE_PARAMETERS *editableParameters );
#endif
@@ -2471,7 +2475,11 @@ static ivas_error decodeG192(

                    /* Do object metadata editing here ... */
#ifdef FIX_1217_OBJECT_EDIT_FILE_INTERFACE
#ifdef NONBE_FIX_1255_OBJ_EDIT_JBM
                    do_object_editing( &editableParameters, num_subframes, objectEditFileReader );
#else
                    do_object_editing( &editableParameters, objectEditFileReader );
#endif
#else
                    do_object_editing( &editableParameters );
#endif
@@ -3048,7 +3056,7 @@ static ivas_error decodeVoIP(

    bool bitstreamReadDone = false;

    bool parameterAvailableForEditing = false;
    bool parametersAvailableForEditing = false;
    uint16_t nSamplesRendered = 0;

    vec_pos_update = 0;
@@ -3282,11 +3290,18 @@ static ivas_error decodeVoIP(
#ifdef FIX_1217_OBJECT_EDIT_FILE_INTERFACE
        if ( arg.objEditEnabled && ( arg.objEditFileName != NULL ) )
        {
#ifdef NONBE_FIX_1255_OBJ_EDIT_JBM
            if ( frame * num_subframes % IVAS_MAX_PARAM_SPATIAL_SUBFRAMES == 0 )
            {
#endif
                if ( ( error = ObjectEditFileReader_readNextFrame( objectEditFileReader ) ) != IVAS_ERR_OK )
                {
                    fprintf( stderr, "\nError: could not read object editing instructions from file: %s\n\n", IVAS_DEC_GetErrorMessage( error ) );
                    return error;
                }
#ifdef NONBE_FIX_1255_OBJ_EDIT_JBM
            }
#endif
        }
#endif

@@ -3344,7 +3359,7 @@ static ivas_error decodeVoIP(
        while ( nSamplesRendered < nOutSamples )
        {
#ifdef SUPPORT_JBM_TRACEFILE
            if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &bitstreamReadDone, &nSamplesRendered, &parameterAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK )
            if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &bitstreamReadDone, &nSamplesRendered, &parametersAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK )
#else
            if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, &bitstreamReadDone, &nSamplesRendered, &parameterAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK )
#endif
@@ -3378,7 +3393,7 @@ static ivas_error decodeVoIP(
            }

            /* Object metadata editing */
            if ( arg.objEditEnabled && parameterAvailableForEditing == true )
            if ( arg.objEditEnabled && parametersAvailableForEditing == true )
            {
                IVAS_EDITABLE_PARAMETERS editableParameters;

@@ -3391,7 +3406,11 @@ static ivas_error decodeVoIP(

                /* Do object metadata editing here ... */
#ifdef FIX_1217_OBJECT_EDIT_FILE_INTERFACE
#ifdef NONBE_FIX_1255_OBJ_EDIT_JBM
                do_object_editing( &editableParameters, num_subframes, objectEditFileReader );
#else
                do_object_editing( &editableParameters, objectEditFileReader );
#endif
#else
                do_object_editing( &editableParameters );
#endif
@@ -3696,6 +3715,9 @@ cleanup:
static void do_object_editing(
#ifdef FIX_1217_OBJECT_EDIT_FILE_INTERFACE
    IVAS_EDITABLE_PARAMETERS *editableParameters,
#ifdef NONBE_FIX_1255_OBJ_EDIT_JBM
    const int16_t num_subframes,
#endif
    ObjectEditFileReader *objectEditFileReader )
#else
    IVAS_EDITABLE_PARAMETERS *editableParameters )
@@ -3794,7 +3816,12 @@ static void do_object_editing(
        /* breakover object gains */
        for ( obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ )
        {
#ifdef NONBE_FIX_1255_OBJ_EDIT_JBM
            editableParameters->ism_metadata[obj_idx].gain = 0.5f + (float) ( ( ( frame * num_subframes / IVAS_MAX_PARAM_SPATIAL_SUBFRAMES ) + obj_idx * 50 ) % 250 ) / 250.0f;

#else
        editableParameters->ism_metadata[obj_idx].gain = 0.5f + (float) ( ( frame + obj_idx * 50 ) % 250 ) / 250.0f;
#endif
        }

        editableParameters->gain_bed = 0.5f;
+0 −4
Original line number Diff line number Diff line
@@ -737,10 +737,8 @@ int main(
        lfeRoutingConfigs[i] = NULL;
    }

#ifdef FIX_1225_DISCLAIMER
    IVAS_REND_PrintDisclaimer();

#endif
    CmdlnArgs args = parseCmdlnArgs( argc, argv );

    if ( args.nonDiegeticPan && !( ( args.inConfig.numAudioObjects == 0 && args.inConfig.multiChannelBuses[0].audioConfig == IVAS_AUDIO_CONFIG_MONO ) ||
@@ -898,7 +896,6 @@ int main(
        exit( -1 );
    }

#ifdef FIX_1225_DISCLAIMER
    fprintf( stdout, "Input audio file:       %s\n", args.inputFilePath );
    fprintf( stdout, "Output audio file:      %s\n\n", args.outputFilePath );

@@ -940,7 +937,6 @@ int main(
        goto cleanup;
    }

#endif
    if ( !isEmptyString( args.customHrtfFilePath ) )
    {
        if ( hrtfFileReader_open( args.customHrtfFilePath, &hrtfFileReader ) != IVAS_ERR_OK )
+73 −99
Original line number Diff line number Diff line
@@ -127,15 +127,22 @@

  <hr />

    <h1 id="sec:graph-wmops_per_op">IVAS FORMAT - Worst Case WMOPS Performance
        per Operating Point</h1>
    <h1 id="sec:graph-wmops_per_op">IVAS FORMAT - Worst Case WMOPS Performance per Operating Point</h1>

      <h2 id="sec:graphs_wmops_per_op_encoder">Encoder</h2>

        <div class="graph-container">
          <div id="wmops_per_op-graph-enc"></div>
        </div>

      <h2 id="sec:graphs_wmops_per_op_decoder">Decoder</h2>

        <div class="graph-container">
  <div id="wmops_per_op-graph"></div>
          <div id="wmops_per_op-graph-dec"></div>
        </div>

        <div class="graph-container" style="clear: both; padding-top: 1em">
    <div id="wmops_per_op-legend"></div>
          <div id="wmops_per_op-legend-enc"></div>
        </div>

  <hr />
@@ -652,65 +659,29 @@ function WMOPS_perOP() {
      var encRefData, decRefData;
      var text = "";

        if (Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays.length == 2) {
          encData  = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays[0];
          decData  = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays[1];

      var x = item.datapoint[0];
      var y = item.datapoint[1];

          var scoreEnc = Math.max(parseFloat(encData.data[x][1]), 0);
          var scoreDec = Math.max(parseFloat(decData.data[x][1]), 0);
          var scoreCodec = Math.round((scoreEnc + scoreDec) * 100) / 100;

          text += "<b><u>Mode: " + Graphs_WMOPS_perOP.wmops_worstcase_per_op.runs[x].operatingPoint + "</u></b><br>";

          text += "Worst case enc: "   + scoreEnc + " WMOPS<br>";
          text += "Worst case dec: "   + scoreDec + " WMOPS<br>";
          text += "Worst case codec: " + scoreCodec + " WMOPS<br><br>";

          var nEntriesWmopsGraph = Graphs_WMOPS.wmops_worstcase.runs.length - 1;
          text += "<a href=\"logs/" + Graphs_WMOPS.wmops_worstcase.runs[nEntriesWmopsGraph].logFile + "\">Logfile</a><br>";
      text += "<b><u>Mode: " + graph.runs[x].operatingPoint + "</u></b><br>";
      if (graph.displays.length == 1) {
        var score = Math.max(parseFloat(graph.displays[0].data[x][1]), 0);
        text += "Worst case: "   + score + " WMOPS<br>";
      }
        else if (Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays.length == 4) {
          encData = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays[0];
          decData = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays[1];

          encRefData = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays[2];
          decRefData = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays[3];

          var x = item.datapoint[0];
          var y = item.datapoint[1];

          var run = Graphs_WMOPS_perOP.wmops_worstcase_per_op.runs[x];
          var op = run.operatingPoint;
          var codec = op.split(" - ")[1];

          var scoreEnc, scoreDec;

          if (codec == "FLT REF")
          {
            x = (x - 1) / 2;
            scoreEnc = Math.max(parseFloat(encRefData.data[x][1]), 0);
            scoreDec = Math.max(parseFloat(decRefData.data[x][1]), 0);
      else if (graph.displays.length == 2) {
        if ( x % 2 != 0 ) {
          // these indices are for the flt ref bars
          // we need to subtract 1 to get the correct id
          x = x - 1;
        }
          else if (codec == "BASOP") {
            x = x / 2;
            scoreEnc = Math.max(parseFloat(encData.data[x][1]), 0);
            scoreDec = Math.max(parseFloat(decData.data[x][1]), 0);
        x = Math.floor(x / 2);
        var score_basop = Math.max(parseFloat(graph.displays[0].data[x][1]), 0);
        var score_flt_ref = Math.max(parseFloat(graph.displays[1].data[x][1]), 0);
        text += "Worst case BASOP: "   + score_basop + " WMOPS<br>";
        text += "Worst case FLT REF: "   + score_flt_ref + " WMOPS<br>";
      }
      var nEntriesWmopsGraph = graph.runs.length - 1;
      text += "<a href=\"logs/" + graph.runs[nEntriesWmopsGraph].logFile + "\">Logfile</a><br>";

          var scoreCodec = Math.round((scoreEnc + scoreDec) * 100) / 100;

          text += "<b><u>Mode: " + op + "</u></b><br>";

          text += "Worst case enc: "   + scoreEnc + " WMOPS<br>";
          text += "Worst case dec: "   + scoreDec + " WMOPS<br>";
          text += "Worst case codec: " + scoreCodec + " WMOPS<br><br>";

          var nEntriesWmopsGraph = Graphs_WMOPS.wmops_worstcase.runs.length - 1;
          text += "<a href=\"logs/" + Graphs_WMOPS.wmops_worstcase.runs[nEntriesWmopsGraph].logFile + "\">Logfile</a><br>";
        }
      showToolTip(item.pageX, item.pageY, text);

       });
@@ -719,21 +690,24 @@ function WMOPS_perOP() {


    $(document).ready(function () {
        // need to get worst case of enc + dec combined, because values are stacked in the graph
        var displays = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays;
        var encData, decData;
        if (displays.length == 2) {
            encData = [displays[0]];
            decData = [displays[1]];
        }
        else if (displays.length == 4) {
            encData = [displays[0], displays[2]];
            decData = [displays[1], displays[3]];
        }
        var max_enc = get_max_y_val_for_plotting(encData, 1);
        var max_dec = get_max_y_val_for_plotting(decData, 1);
        var max = Math.ceil( (max_enc + max_dec ) / 50) * 50;
        drawGraph($("#wmops_per_op-graph"), Graphs_WMOPS_perOP.wmops_worstcase_per_op, max);
        var displays_enc = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays.filter(function(elem) {
          return elem["label"].includes("Encoder");
        });
        var displays_dec = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays.filter(function(elem) {
          return elem["label"].includes("Decoder");
        });

        var max_enc = Math.ceil(get_max_y_val_for_plotting(displays_enc, 50));
        var max_dec = Math.ceil(get_max_y_val_for_plotting(displays_dec, 50));


        // need to clone object and replace the displays
        var graph_enc = JSON.parse(JSON.stringify(Graphs_WMOPS_perOP.wmops_worstcase_per_op));
        graph_enc.displays = displays_enc;
        var graph_dec = JSON.parse(JSON.stringify(Graphs_WMOPS_perOP.wmops_worstcase_per_op));
        graph_dec.displays = displays_dec;
        drawGraph($("#wmops_per_op-graph-enc"), graph_enc, max_enc);
        drawGraph($("#wmops_per_op-graph-dec"), graph_dec, max_dec);
    });

    var nEntriesWmopsGraph = Graphs_WMOPS.wmops_worstcase.runs.length - 1;
@@ -743,7 +717,7 @@ function WMOPS_perOP() {
                Graphs_WMOPS.wmops_worstcase.runs[nEntriesWmopsGraph].fullDate + 
                "</p>";

    document.getElementById("wmops_per_op-legend").innerHTML = legend;
    document.getElementById("wmops_per_op-legend-enc").innerHTML = legend;

}

+9 −1
Original line number Diff line number Diff line
@@ -15,6 +15,9 @@ h1 {
 font-weight:700;
 text-align: center;
}
h2 {
  text-align: center;
}
em {
 font-style: normal;
 font-weight: bold;   
@@ -51,7 +54,12 @@ hr {
 width:1600px;
 float:left;
}
#wmops_per_op-graph {
#wmops_per_op-graph-enc {
 height:500px;
 width:2400px;
 float:left;
}
#wmops_per_op-graph-dec {
 height:500px;
 width:2400px;
 float:left;
+0 −4
Original line number Diff line number Diff line
@@ -47,11 +47,7 @@ int16_t print_disclaimer( FILE *fPtr )
{

    fprintf( fPtr, "\n==================================================================================================\n" );
#ifdef FIX_1225_DISCLAIMER
    fprintf( fPtr, " \n IVAS Codec Version IVAS-FL-2.0\n" );
#else
    fprintf( fPtr, " IVAS Codec Baseline\n" );
#endif
    fprintf( fPtr, " \n" );
    fprintf( fPtr, " Based on EVS Codec (Floating Point) 3GPP TS26.443 Nov 04, 2021,\n" );
    fprintf( fPtr, " Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0\n" );
Loading