Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: webrtc/video/full_stack_plot.py

Issue 1308403003: Refactoring full stack and loopback tests (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase updates Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/video/full_stack.cc ('k') | webrtc/video/full_stack_quality_sampler.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 2 # Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
3 # 3 #
4 # Use of this source code is governed by a BSD-style license 4 # Use of this source code is governed by a BSD-style license
5 # that can be found in the LICENSE file in the root of the source 5 # that can be found in the LICENSE file in the root of the source
6 # tree. An additional intellectual property rights grant can be found 6 # tree. An additional intellectual property rights grant can be found
7 # in the file PATENTS. All contributing project authors may 7 # in the file PATENTS. All contributing project authors may
8 # be found in the AUTHORS file in the root of the source tree. 8 # be found in the AUTHORS file in the root of the source tree.
9 9
10 """Generate graphs for data generated by full_stack_quality_sampler.cc. 10 """Generate graphs for data generated by loopback tests.
11 11
12 Usage examples: 12 Usage examples:
13 Show end to end time for a single full stack test. 13 Show end to end time for a single full stack test.
14 ./full_stack_plot.py -df end_to_end -o 600 --frames 1000 vp9_data.txt 14 ./full_stack_plot.py -df end_to_end -o 600 --frames 1000 vp9_data.txt
15 15
16 Show simultaneously PSNR and encoded frame size for two different runs of 16 Show simultaneously PSNR and encoded frame size for two different runs of
17 full stack test. Averaged over a cycle of 200 frames. Used e.g. for 17 full stack test. Averaged over a cycle of 200 frames. Used e.g. for
18 screenshare slide test. 18 screenshare slide test.
19 ./full_stack_plot.py -c 200 -df psnr -drf encoded_frame_size \\ 19 ./full_stack_plot.py -c 200 -df psnr -drf encoded_frame_size \\
20 before.txt after.txt 20 before.txt after.txt
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 # Auto-generated 69 # Auto-generated
70 (SENDER_TIME, "sender_time", "sender time"), 70 (SENDER_TIME, "sender_time", "sender time"),
71 (RECEIVER_TIME, "receiver_time", "receiver time"), 71 (RECEIVER_TIME, "receiver_time", "receiver time"),
72 (END_TO_END, "end_to_end", "end to end"), 72 (END_TO_END, "end_to_end", "end to end"),
73 (RENDERED_DELTA, "rendered_delta", "rendered delta"), 73 (RENDERED_DELTA, "rendered_delta", "rendered delta"),
74 ] 74 ]
75 75
76 name_to_id = {field[1]: field[0] for field in _fields} 76 name_to_id = {field[1]: field[0] for field in _fields}
77 id_to_title = {field[0]: field[2] for field in _fields} 77 id_to_title = {field[0]: field[2] for field in _fields}
78 78
79
80 def field_arg_to_id(arg): 79 def field_arg_to_id(arg):
81 if arg == "none": 80 if arg == "none":
82 return None 81 return None
83 if arg in name_to_id: 82 if arg in name_to_id:
84 return name_to_id[arg] 83 return name_to_id[arg]
85 if arg + "_ms" in name_to_id: 84 if arg + "_ms" in name_to_id:
86 return name_to_id[arg + "_ms"] 85 return name_to_id[arg + "_ms"]
87 raise Exception("Unrecognized field name \"{}\"".format(arg)) 86 raise Exception("Unrecognized field name \"{}\"".format(arg))
88 87
89 88
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 else: 289 else:
291 data = Data(filename) 290 data = Data(filename)
292 load_files.cache[filename] = data 291 load_files.cache[filename] = data
293 result.append(data) 292 result.append(data)
294 return result 293 return result
295 load_files.cache = {} 294 load_files.cache = {}
296 295
297 296
298 def get_parser(): 297 def get_parser():
299 class CustomAction(argparse.Action): 298 class CustomAction(argparse.Action):
300
301 def __call__(self, parser, namespace, values, option_string=None): 299 def __call__(self, parser, namespace, values, option_string=None):
302 if "ordered_args" not in namespace: 300 if "ordered_args" not in namespace:
303 namespace.ordered_args = [] 301 namespace.ordered_args = []
304 namespace.ordered_args.append((self.dest, values)) 302 namespace.ordered_args.append((self.dest, values))
305 303
306 parser = argparse.ArgumentParser( 304 parser = argparse.ArgumentParser(
307 description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) 305 description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
308 306
309 parser.add_argument( 307 parser.add_argument(
310 "-c", "--cycle_length", nargs=1, action=CustomAction, 308 "-c", "--cycle_length", nargs=1, action=CustomAction,
(...skipping 13 matching lines...) Expand all
324 "--frames", nargs=1, action=CustomAction, type=int, 322 "--frames", nargs=1, action=CustomAction, type=int,
325 help="Frame count to show or take into account while averaging.") 323 help="Frame count to show or take into account while averaging.")
326 parser.add_argument("-t", "--title", nargs=1, action=CustomAction, 324 parser.add_argument("-t", "--title", nargs=1, action=CustomAction,
327 help="Title of the graph.") 325 help="Title of the graph.")
328 parser.add_argument( 326 parser.add_argument(
329 "-O", "--output_filename", nargs=1, action=CustomAction, 327 "-O", "--output_filename", nargs=1, action=CustomAction,
330 help="Use to save the graph into a file. " 328 help="Use to save the graph into a file. "
331 "Otherwise, a window will be shown.") 329 "Otherwise, a window will be shown.")
332 parser.add_argument( 330 parser.add_argument(
333 "files", nargs="+", action=CustomAction, 331 "files", nargs="+", action=CustomAction,
334 help="List of text-based files generated by full_stack.cc") 332 help="List of text-based files generated by loopback tests.")
335 return parser 333 return parser
336 334
337 335
338 def _plot_config_from_args(args, graph_num): 336 def _plot_config_from_args(args, graph_num):
339 # Pylint complains about using kwargs, so have to do it this way. 337 # Pylint complains about using kwargs, so have to do it this way.
340 cycle_length = None 338 cycle_length = None
341 frames = None 339 frames = None
342 offset = 0 340 offset = 0
343 output_filename = None 341 output_filename = None
344 title = "Graph" 342 title = "Graph"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 config.plot(ax) 403 config.plot(ax)
406 if config.output_filename: 404 if config.output_filename:
407 print "Saving to", config.output_filename 405 print "Saving to", config.output_filename
408 fig.savefig(config.output_filename) 406 fig.savefig(config.output_filename)
409 plt.close(fig) 407 plt.close(fig)
410 408
411 plt.show() 409 plt.show()
412 410
413 if __name__ == "__main__": 411 if __name__ == "__main__":
414 show_or_save_plots(plot_configs_from_args(sys.argv[1:])) 412 show_or_save_plots(plot_configs_from_args(sys.argv[1:]))
OLDNEW
« no previous file with comments | « webrtc/video/full_stack.cc ('k') | webrtc/video/full_stack_quality_sampler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698