Index: webrtc/modules/video_coding/codecs/test/plot_webrtc_test_logs.py |
diff --git a/webrtc/modules/video_coding/codecs/test/plot_webrtc_test_logs.py b/webrtc/modules/video_coding/codecs/test/plot_webrtc_test_logs.py |
index 0488ac7ac24a435ab9b40eff40d6ad6973bb7cfb..70b942d4572c345b69a78f629bc51deeaad8c84e 100755 |
--- a/webrtc/modules/video_coding/codecs/test/plot_webrtc_test_logs.py |
+++ b/webrtc/modules/video_coding/codecs/test/plot_webrtc_test_logs.py |
@@ -22,14 +22,14 @@ EVENT_START = 'RUN ] CodecSettings/PlotVideoProcessorIntegrationTest.' |
EVENT_END = 'OK ] CodecSettings/PlotVideoProcessorIntegrationTest.' |
# Metrics to plot, tuple: (name to parse in file, label to use when plotting). |
-BITRATE = ('Target Bitrate', 'bitrate (kbps)') |
+BITRATE = ('Target Bitrate', 'target bitrate (kbps)') |
WIDTH = ('Width', 'width') |
HEIGHT = ('Height', 'height') |
FILENAME = ('Filename', 'clip') |
CODEC_TYPE = ('Codec type', 'Codec') |
ENCODER_IMPLEMENTATION_NAME = ('Encoder implementation name', 'enc name') |
DECODER_IMPLEMENTATION_NAME = ('Decoder implementation name', 'dec name') |
-NUM_FRAMES = ('Total # of frames', 'num frames') |
+CODEC_IMPLEMENTATION_NAME = ('Codec implementation name', 'codec name') |
CORES = ('#CPU cores used', 'CPU cores used') |
DENOISING = ('Denoising', 'denoising') |
RESILIENCE = ('Resilience', 'resilience') |
@@ -39,6 +39,7 @@ PSNR = ('PSNR avg', 'PSNR (dB)') |
SSIM = ('SSIM avg', 'SSIM') |
ENC_BITRATE = ('Encoding bitrate', 'encoded bitrate (kbps)') |
FRAMERATE = ('Frame rate', 'fps') |
+NUM_FRAMES = ('Number of processed frames', 'num frames') |
NUM_DROPPED_FRAMES = ('Number of dropped frames', 'num dropped frames') |
NUM_FRAMES_TO_TARGET = ('Number of frames to approach target rate', |
'frames to reach target rate') |
@@ -78,6 +79,7 @@ SUBPLOT_SETTINGS = [ |
CODEC_TYPE, |
ENCODER_IMPLEMENTATION_NAME, |
DECODER_IMPLEMENTATION_NAME, |
+ CODEC_IMPLEMENTATION_NAME, |
] + X_SETTINGS |
# Results. |
@@ -99,8 +101,8 @@ METRICS_TO_PARSE = SETTINGS + SUBPLOT_SETTINGS + RESULTS |
Y_METRICS = [res[1] for res in RESULTS] |
# Parameters for plotting. |
-FIG_SIZE_SCALE_FACTOR_X = 2 |
-FIG_SIZE_SCALE_FACTOR_Y = 2.8 |
+FIG_SIZE_SCALE_FACTOR_X = 1.6 |
+FIG_SIZE_SCALE_FACTOR_Y = 1.8 |
GRID_COLOR = [0.45, 0.45, 0.45] |
@@ -285,7 +287,7 @@ def Plot(y_metric, x_metric, metrics): |
}, |
} |
""" |
- for key in metrics: |
+ for key in sorted(metrics): |
data = metrics[key] |
if y_metric not in data: |
print "Failed to find metric: %s" % y_metric |
@@ -315,7 +317,8 @@ def PlotFigure(settings, y_metrics, x_metric, metrics, title): |
""" |
plt.figure() |
- plt.suptitle(title, fontsize='small', fontweight='bold') |
+ plt.suptitle(title, fontsize='large', fontweight='bold') |
+ settings.sort() |
rows = len(settings) |
cols = 1 |
pos = 1 |
@@ -323,39 +326,47 @@ def PlotFigure(settings, y_metrics, x_metric, metrics, title): |
plt.rc('grid', color=GRID_COLOR) |
ax = plt.subplot(rows, cols, pos) |
plt.grid() |
- plt.setp(ax.get_xticklabels(), visible=(pos == rows), fontsize='small') |
- plt.setp(ax.get_yticklabels(), fontsize='small') |
+ plt.setp(ax.get_xticklabels(), visible=(pos == rows), fontsize='large') |
+ plt.setp(ax.get_yticklabels(), fontsize='large') |
setting = settings[pos - 1] |
Plot(y_metrics[pos - 1], x_metric, metrics[setting]) |
- plt.title(setting, fontsize='x-small') |
- plt.legend(fontsize='xx-small') |
+ if setting.startswith(WIDTH[1]): |
+ plt.title(setting, fontsize='medium') |
+ plt.legend(fontsize='large', loc='best') |
pos += 1 |
- plt.xlabel(x_metric, fontsize='small') |
- plt.subplots_adjust(left=0.04, right=0.98, bottom=0.04, top=0.96, hspace=0.1) |
+ plt.xlabel(x_metric, fontsize='large') |
+ plt.subplots_adjust(left=0.06, right=0.98, bottom=0.05, top=0.94, hspace=0.08) |
-def GetTitle(filename): |
+def GetTitle(filename, setting): |
title = '' |
- codec_types = ParseSetting(filename, CODEC_TYPE[1]) |
- for i in range(0, len(codec_types)): |
- title += codec_types[i] + ', ' |
+ if setting != CODEC_IMPLEMENTATION_NAME[1] and setting != CODEC_TYPE[1]: |
+ codec_types = ParseSetting(filename, CODEC_TYPE[1]) |
+ for i in range(0, len(codec_types)): |
+ title += codec_types[i] + ', ' |
- cores = ParseSetting(filename, CORES[1]) |
- for i in range(0, len(cores)): |
- title += cores[i].split('.')[0] + ', ' |
- |
- framerate = ParseSetting(filename, FRAMERATE[1]) |
- for i in range(0, len(framerate)): |
- title += framerate[i].split('.')[0] + ', ' |
- |
- enc_names = ParseSetting(filename, ENCODER_IMPLEMENTATION_NAME[1]) |
- for i in range(0, len(enc_names)): |
- title += enc_names[i] + ', ' |
- |
- dec_names = ParseSetting(filename, DECODER_IMPLEMENTATION_NAME[1]) |
- for i in range(0, len(dec_names)): |
- title += dec_names[i] + ', ' |
+ if setting != CORES[1]: |
+ cores = ParseSetting(filename, CORES[1]) |
+ for i in range(0, len(cores)): |
+ title += cores[i].split('.')[0] + ', ' |
+ |
+ if setting != FRAMERATE[1]: |
+ framerate = ParseSetting(filename, FRAMERATE[1]) |
+ for i in range(0, len(framerate)): |
+ title += framerate[i].split('.')[0] + ', ' |
+ |
+ if (setting != CODEC_IMPLEMENTATION_NAME[1] and |
+ setting != ENCODER_IMPLEMENTATION_NAME[1]): |
+ enc_names = ParseSetting(filename, ENCODER_IMPLEMENTATION_NAME[1]) |
+ for i in range(0, len(enc_names)): |
+ title += enc_names[i] + ', ' |
+ |
+ if (setting != CODEC_IMPLEMENTATION_NAME[1] and |
+ setting != DECODER_IMPLEMENTATION_NAME[1]): |
+ dec_names = ParseSetting(filename, DECODER_IMPLEMENTATION_NAME[1]) |
+ for i in range(0, len(dec_names)): |
+ title += dec_names[i] + ', ' |
filenames = ParseSetting(filename, FILENAME[1]) |
title += filenames[0].split('_')[0] |
@@ -430,7 +441,8 @@ def main(): |
figsize[1] *= FIG_SIZE_SCALE_FACTOR_Y |
plt.rcParams["figure.figsize"] = figsize |
- PlotFigure(sub_keys, y_metrics, x_metric, metrics, GetTitle(filename)) |
+ PlotFigure(sub_keys, y_metrics, x_metric, metrics, |
+ GetTitle(filename, setting2)) |
plt.show() |