OLD | NEW |
1 #!/bin/bash | 1 #!/bin/bash |
2 | 2 |
3 # Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 3 # Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. |
4 # | 4 # |
5 # Use of this source code is governed by a BSD-style license | 5 # Use of this source code is governed by a BSD-style license |
6 # that can be found in the LICENSE file in the root of the source | 6 # that can be found in the LICENSE file in the root of the source |
7 # tree. An additional intellectual property rights grant can be found | 7 # tree. An additional intellectual property rights grant can be found |
8 # in the file PATENTS. All contributing project authors may | 8 # in the file PATENTS. All contributing project authors may |
9 # be found in the AUTHORS file in the root of the source tree. | 9 # be found in the AUTHORS file in the root of the source tree. |
10 | 10 |
(...skipping 11 matching lines...) Expand all Loading... |
22 # with "#<axis number (1 or 2)>" two y axis will be used, the first will be | 22 # with "#<axis number (1 or 2)>" two y axis will be used, the first will be |
23 # assumed to represent bitrate (in kbps) and the second will be assumed to | 23 # assumed to represent bitrate (in kbps) and the second will be assumed to |
24 # represent time deltas (in ms). | 24 # represent time deltas (in ms). |
25 | 25 |
26 log=$(</dev/stdin) | 26 log=$(</dev/stdin) |
27 | 27 |
28 # Plot dynamics. | 28 # Plot dynamics. |
29 function gen_gnuplot_input { | 29 function gen_gnuplot_input { |
30 colors=(a7001f 0a60c2 b2582b 21a66c d6604d 4393c3 f4a582 92c5de edcbb7 b1c5d0) | 30 colors=(a7001f 0a60c2 b2582b 21a66c d6604d 4393c3 f4a582 92c5de edcbb7 b1c5d0) |
31 plots=$(echo "$log" | grep "^PLOT") | 31 plots=$(echo "$log" | grep "^PLOT") |
| 32 # Each figure corresponds to a separate plot window. |
32 figures=($(echo "$plots" | cut -f 2 | sort | uniq)) | 33 figures=($(echo "$plots" | cut -f 2 | sort | uniq)) |
33 | 34 |
34 for figure in "${figures[@]}" ; do | 35 for figure in "${figures[@]}" ; do |
| 36 # Each data set corresponds to a plot line. |
35 data_sets=$(echo "$plots" | grep "^PLOT.$figure" | cut -f 3 | sort | uniq) | 37 data_sets=$(echo "$plots" | grep "^PLOT.$figure" | cut -f 3 | sort | uniq) |
| 38 # Lines can be scaled on the left (1) or right (2) axis. |
36 linetypes=($(echo "$data_sets" | grep "#" | cut -d '#' -f 2 | \ | 39 linetypes=($(echo "$data_sets" | grep "#" | cut -d '#' -f 2 | \ |
37 cut -d ' ' -f 1)) | 40 cut -d '@' -f 1 | uniq)) |
| 41 |
| 42 # Set plot configurations. |
38 echo "reset; " | 43 echo "reset; " |
39 echo "set terminal wxt $figure size 1440,900 font \"Arial,9\"; " | 44 echo "set terminal wxt $figure size 1440,900 font \"Arial,9\"; " |
40 echo "set xlabel \"Seconds\"; " | 45 echo "set xlabel \"Seconds\"; " |
41 if (( "${#linetypes[@]}" > "0" )); then | 46 if (( "${#linetypes[@]}" > "1" )); then |
42 echo "set ylabel 'bitrate (kbps)';" | 47 echo "set ylabel 'Bitrate (kbps)';" # Left side. |
43 echo "set ytics nomirror;" | 48 echo "set ytics nomirror;" |
44 echo "set y2label 'time delta (ms)';" | 49 echo "set y2label 'Time delta (ms)';" # Right side. |
45 echo "set y2tics nomirror;" | 50 echo "set y2tics nomirror;" |
| 51 else |
| 52 # Single axis (left side), set its label according to data. |
| 53 y_label=$(echo "$data_sets" | grep "#" | cut -d '#' -f 1 | \ |
| 54 cut -d ' ' -f 1 | cut -d '/' -f 3 | sed 's/[0-9]/#/g' | \ |
| 55 cut -d '#' -f 3 | head -n 1 | sed 's/_/ /g') |
| 56 echo "set ylabel \"$y_label\";" |
46 fi | 57 fi |
| 58 |
| 59 i=0 |
47 echo -n "plot " | 60 echo -n "plot " |
48 i=0 | |
49 for set in $data_sets ; do | 61 for set in $data_sets ; do |
50 (( i++ )) && echo -n "," | 62 (( i++ )) && echo -n "," |
51 echo -n "'-' with " | 63 echo -n "'-' with " |
52 echo -n "linespoints " | 64 echo -n "linespoints " |
53 echo -n "ps 0.5 " | 65 echo -n "ps 0.5 " |
54 echo -n "lc rgbcolor \"#${colors[$(($i % 10))]}\" " | 66 echo -n "lc rgbcolor \"#${colors[$(($i % 10))]}\" " |
55 if (( "${#linetypes[@]}" > "0" )); then | 67 if (( "${#linetypes[@]}" > "1" )); then |
56 if (( "$i" <= "${#linetypes[@]}" )); then | 68 # Multiple sets can have a same line plot. |
57 echo -n "axes x1y${linetypes[$i - 1]} " | 69 linetype=$(echo "$set" | grep "#" | cut -d '#' -f 2 | cut -d '@' -f 1) |
| 70 if (( "${#linetype}" > "0")); then |
| 71 echo -n "axes x1y$linetype " |
58 else | 72 else |
59 # If no line type is specified, but line types are used, we will | 73 # If no line type is specified, but line types are used, we will |
60 # default to the bitrate axis. | 74 # default to scale on the left axis. |
61 echo -n "axes x1y1 " | 75 echo -n "axes x1y1 " |
62 fi | 76 fi |
63 fi | 77 fi |
64 echo -n "title \"$set\" " | 78 echo -n "title \"$set\" " |
65 done | 79 done |
66 echo | 80 echo |
67 for set in $data_sets ; do | 81 for set in $data_sets ; do |
68 echo "$log" | grep "^PLOT.$figure.$set" | cut -f 4,5 | 82 echo "$log" | grep "^PLOT.$figure.$set" | cut -f 4,5 |
69 echo "e" | 83 echo "e" |
70 done | 84 done |
71 done | 85 done |
72 } | 86 } |
73 gen_gnuplot_input | gnuplot -persist | 87 gen_gnuplot_input | gnuplot -persist |
OLD | NEW |