From 45df87ca5798e495ee1d5d037e6e9db731617c45 Mon Sep 17 00:00:00 2001 From: paulwilkins Date: Mon, 9 May 2016 12:04:09 +0100 Subject: [PATCH] Added a measure of rc drift. Added actual and absolute rate miss values to the opsnr.stt stats output line. Changes to the borg graphing may be needed before merge. Change-Id: I1e9d548ce445d29002f0c59ebfd3957a6f15e702 --- vp10/encoder/encoder.c | 7 +++++-- vp8/encoder/onyx_if.c | 10 +++++++--- vp9/encoder/vp9_encoder.c | 7 +++++-- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/vp10/encoder/encoder.c b/vp10/encoder/encoder.c index 31a9390..e7fff82 100644 --- a/vp10/encoder/encoder.c +++ b/vp10/encoder/encoder.c @@ -1858,6 +1858,8 @@ void vp10_remove_compressor(VP10_COMP *cpi) { const double dr = (double)cpi->bytes * (double) 8 / (double)1000 / time_encoded; const double peak = (double)((1 << cpi->oxcf.input_bit_depth) - 1); + const double target_rate = (double)cpi->oxcf.target_bandwidth / 1000; + const double rate_err = ((100.0 * (dr - target_rate)) / target_rate); if (cpi->b_calculate_psnr) { const double total_psnr = @@ -1909,8 +1911,9 @@ void vp10_remove_compressor(VP10_COMP *cpi) { SNPRINT2(results, "\t%7.3f", cpi->ssimg.worst); } - fprintf(f, "%s\t Time\n", headings); - fprintf(f, "%s\t%8.0f\n", results, total_encode_time); + fprintf(f, "%s\t Time Rc-Err Abs Err\n", headings); + fprintf(f, "%s\t%8.0f %7.2f %7.2f\n", results, + total_encode_time, rate_err, fabs(rate_err)); } fclose(f); diff --git a/vp8/encoder/onyx_if.c b/vp8/encoder/onyx_if.c index 88c191e..6617422 100644 --- a/vp8/encoder/onyx_if.c +++ b/vp8/encoder/onyx_if.c @@ -2257,6 +2257,8 @@ void vp8_remove_compressor(VP8_COMP **ptr) double total_encode_time = (cpi->time_receive_data + cpi->time_compress_data) / 1000.000; double dr = (double)cpi->bytes * 8.0 / 1000.0 / time_encoded; + const double target_rate = (double)cpi->oxcf.target_bandwidth / 1000; + const double rate_err = ((100.0 * (dr - target_rate)) / target_rate); if (cpi->b_calculate_psnr) { @@ -2302,12 +2304,14 @@ void vp8_remove_compressor(VP8_COMP **ptr) cpi->summed_weights, 8.0); fprintf(f, "Bitrate\tAVGPsnr\tGLBPsnr\tAVPsnrP\t" - "GLPsnrP\tVPXSSIM\t Time(us)\n"); + "GLPsnrP\tVPXSSIM\t Time(us) Rc-Err " + "Abs Err\n"); fprintf(f, "%7.3f\t%7.3f\t%7.3f\t%7.3f\t%7.3f\t" - "%7.3f\t%8.0f\n", + "%7.3f\t%8.0f %7.2f %7.2f\n", dr, cpi->total / cpi->count, total_psnr, cpi->totalp / cpi->count, total_psnr2, - total_ssim, total_encode_time); + total_ssim, total_encode_time, + rate_err, fabs(rate_err)); } } diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c index 68537e9..b888f7e 100644 --- a/vp9/encoder/vp9_encoder.c +++ b/vp9/encoder/vp9_encoder.c @@ -2024,6 +2024,8 @@ void vp9_remove_compressor(VP9_COMP *cpi) { const double dr = (double)cpi->bytes * (double) 8 / (double)1000 / time_encoded; const double peak = (double)((1 << cpi->oxcf.input_bit_depth) - 1); + const double target_rate = (double)cpi->oxcf.target_bandwidth / 1000; + const double rate_err = ((100.0 * (dr - target_rate)) / target_rate); if (cpi->b_calculate_psnr) { const double total_psnr = @@ -2075,8 +2077,9 @@ void vp9_remove_compressor(VP9_COMP *cpi) { SNPRINT2(results, "\t%7.3f", cpi->ssimg.worst); } - fprintf(f, "%s\t Time\n", headings); - fprintf(f, "%s\t%8.0f\n", results, total_encode_time); + fprintf(f, "%s\t Time Rc-Err Abs Err\n", headings); + fprintf(f, "%s\t%8.0f %7.2f %7.2f\n", results, + total_encode_time, rate_err, fabs(rate_err)); } fclose(f); -- 2.7.4