blob: 074d79fca2ec8267b34c44a846d096ced77647dd [file] [log] [blame]
// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package encoding
import (
"encoding/json"
"os"
"chromiumos/tast/common/perf"
"chromiumos/tast/errors"
)
// This file contains helper functions that can be used to parse the log files
// generated by the video_encode_accelerator_perf_tests.
// ParseUncappedPerfMetrics parses the JSON log file generated by the
// MeasureUncappedPerformance test.
func ParseUncappedPerfMetrics(metricsPath string, p *perf.Values) error {
f, err := os.Open(metricsPath)
if err != nil {
return err
}
defer f.Close()
var metrics struct {
BitstreamDeliveryTimeAverage float64
BitstreamEncodeTimeAverage float64
FPS float64
}
if err := json.NewDecoder(f).Decode(&metrics); err != nil {
return errors.Wrapf(err, "failed decoding %s", metricsPath)
}
p.Set(perf.Metric{
Name: "delivery_time.average",
Unit: "milliseconds",
Direction: perf.SmallerIsBetter,
}, metrics.BitstreamDeliveryTimeAverage)
p.Set(perf.Metric{
Name: "encode_time.average",
Unit: "milliseconds",
Direction: perf.SmallerIsBetter,
}, metrics.BitstreamEncodeTimeAverage)
p.Set(perf.Metric{
Name: "frames_per_second",
Unit: "fps",
Direction: perf.SmallerIsBetter,
}, metrics.FPS)
return nil
}
// ParseQualityPerfMetrics parses the JSON log file generated by the
// MeasureProducedBitstreamQuality test.
func ParseQualityPerfMetrics(metricsPath string, p *perf.Values) error {
f, err := os.Open(metricsPath)
if err != nil {
return err
}
defer f.Close()
var metrics struct {
SSIMAverage float64
PSNRAverage float64
}
if err := json.NewDecoder(f).Decode(&metrics); err != nil {
return errors.Wrapf(err, "failed decoding %s", metricsPath)
}
p.Set(perf.Metric{
Name: "ssim.average",
Unit: "scalar",
Direction: perf.BiggerIsBetter,
}, metrics.SSIMAverage)
p.Set(perf.Metric{
Name: "psnr.average",
Unit: "scalar",
Direction: perf.BiggerIsBetter,
}, metrics.PSNRAverage)
return nil
}