| 65 | {{{ |
| 66 | defApplication('test:app:vlc', 'vlc') do |app| |
| 67 | |
| 68 | app.path = "/usr/local/bin/vlc" |
| 69 | # app.path = "/home/cong/work/vlc-2.1.0-git/bin/vlc-static" |
| 70 | app.version(2, 1, 0) |
| 71 | app.shortDescription = "VLC" |
| 72 | app.description = "VLC multimedia player and streamer" |
| 73 | |
| 74 | app.defProperty("input", "Stream input (e.g. file or network address)", nil, |
| 75 | {:type => :string, :dynamic => false}) |
| 76 | # app.defProperty("sout", "Stream output", "--sout", |
| 77 | # {:type => :string, :dynamic => false}) |
| 78 | app.defProperty("intf", "Main interface module", "--intf", |
| 79 | {:type => :string, :dynamic => false}) |
| 80 | # app.defProperty("extraintf", "Extra interface module(s). Use --extraintf omlstats to enable OML", "--extraintf", |
| 81 | # {:type => :string, :dynamic => false}) |
| 82 | # app.defProperty("mtu", "Specifies the MTU of the network interface", "--mtu", |
| 83 | # {:type => :string, :dynamic => false}) |
| 84 | # app.defProperty("quiet", " Deactivates all console messages", "--quiet", |
| 85 | # {:type => :boolean, :dynamic => false}) |
| 86 | # app.defProperty("play-and-exit", "Exit VLC after playing all the items in the input stream list", "--play-and-exit", |
| 87 | # {:type => :boolean, :dynamic => false}) |
| 88 | |
| 89 | app.defMeasurement('dashRateAdaptation') do |mp| |
| 90 | mp.defMetric('chosenRate_bps',:int) |
| 91 | mp.defMetric('empiricalRate_bps',:int) |
| 92 | mp.defMetric('decisionRate_bps',:int) |
| 93 | mp.defMetric('buffer_percent',:int) |
| 94 | end |
| 95 | |
| 96 | app.defMeasurement('dashDlSession') do |mp| |
| 97 | mp.defMetric('chunkCount',:int) |
| 98 | mp.defMetric('readSession_B',:int) |
| 99 | mp.defMetric('readChunk_B',:int) |
| 100 | mp.defMetric('timeSession_s',:float) |
| 101 | mp.defMetric('timeChunk_s',:float) |
| 102 | end |
| 103 | end |
| 104 | |
| 105 | defProperty('theOne','Node0','ID of sender node') |
| 106 | |
| 107 | #defProperty('packetsize', 128, "Packet size (byte) from the sender node") |
| 108 | #defProperty('bitrate', 2048, "Bitrate (bit/s) from the sender node") |
| 109 | #defProperty('runtime', 40, "Time in second for the experiment is to run") |
| 110 | defProperty('graph', true, "Display graph or not") |
| 111 | defProperty('duration', 100, "Duration of experiment") |
| 112 | |
| 113 | defGroup('Sender',property.theOne) do |node| |
| 114 | node.addApplication("test:app:vlc") do |app| |
| 115 | # app.setProperty('quiet', true) |
| 116 | # app.setProperty('play-and-exit', false) |
| 117 | app.setProperty('intf', 'dummy') |
| 118 | # app.setProperty('extraintf', 'omlstats') |
| 119 | app.setProperty('input', 'http://192.168.2.53/DASH_BuckBunny/www-itec.uni-klu.ac.at/ftp/datasets/mmsys12/BigBuckBunny/bunny_2s_480p_only/bunny_Desktop.mpd') |
| 120 | # app.setProperty('mtu', '1200') |
| 121 | app.measure('dashDlSession', :samples =>1) |
| 122 | app.measure('dashRateAdaptation', :samples =>1) |
| 123 | end |
| 124 | end |
| 125 | |
| 126 | |
| 127 | onEvent(:ALL_UP_AND_INSTALLED) do |event| |
| 128 | info "starting" |
| 129 | wait 5 |
| 130 | allGroups.startApplications |
| 131 | info "All applications started..." |
| 132 | wait property.duration |
| 133 | wait 5 |
| 134 | allGroups.stopApplications |
| 135 | info "All applications stopped." |
| 136 | Experiment.done |
| 137 | end |
| 138 | |
| 139 | defGraph 'DashRate1' do |g| |
| 140 | g.ms('dashRateAdaptation').select (:oml_seq, :decisionRate_bps) |
| 141 | g.caption "Dash Rate Adaptation." |
| 142 | g.type 'line_chart3' |
| 143 | g.mapping :x_axis => :oml_seq, :y_axis => :decisionRate_bps |
| 144 | g.xaxis :legend => 'time [s]' |
| 145 | g.yaxis :legend => 'Decision Rate', :ticks => {:format => 's'} |
| 146 | end |
| 147 | |
| 148 | defGraph 'DashRate2' do |g| |
| 149 | g.ms('dashRateAdaptation').select (:oml_seq, :buffer_percent) |
| 150 | g.caption "VLC Buffer Percentage." |
| 151 | g.type 'line_chart3' |
| 152 | g.mapping :x_axis => :oml_seq, :y_axis => :buffer_percent |
| 153 | g.xaxis :legend => 'time [s]' |
| 154 | g.yaxis :legend => 'Buffer Percentage ', :ticks => {:format => 's'} |
| 155 | end |
| 156 | |
| 157 | #defGraph 'DashRate3' do |g| |
| 158 | # g.ms('dashDlSession').select (:oml_seq, :timeChunk_s) |
| 159 | # g.caption "read Chunk." |
| 160 | # g.type 'line_chart3' |
| 161 | # g.mapping :x_axis => :oml_seq, :y_axis => :timeChunk_s |
| 162 | # g.xaxis :legend => 'time [s]' |
| 163 | # g.yaxis :legend => 'read session [bps] ', :ticks => {:format => 's'} |
| 164 | #end |
| 165 | |
| 166 | }}} |