VodUdpClient¶
Package: simu5g.apps.vod
simple module VodUdpClient
Simulates a video-on-demand (VoD) client application that receives video frames over UDP. It is assumed that the transmitted video is encoded using multiple layers according to the Scalable Video Coding (SVC) technique. Hence, the module collects separate statistics (such as throughput and delay) for each layer.
Inheritance diagram¶
Parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
localPort |
int |
||
startStreamTime |
double |
0s |
|
startMetrics |
bool |
false |
|
vodTraceFile |
string |
||
bsePath |
string |
“” |
|
origVideoYuv |
string |
“” |
|
origVideoSvc |
string |
“” |
|
decPath |
string |
“” |
|
traceType |
string |
“SVC” |
|
playbackSize |
int |
2s |
|
avipluginPath |
string |
“” |
|
numFrame |
int |
0 |
|
numPktPerFrame |
int |
0 |
|
tos |
int |
-1 |
If not -1, set the Type of Service (IPv4) / Traffic Class (IPv6) field of sent packets to this value |
Properties¶
Name |
Value |
Description |
|---|---|---|
class |
VodUdpClient |
|
display |
i=block/app |
Gates¶
Name |
Direction |
Size |
Description |
|---|---|---|---|
socketIn |
input |
||
socketOut |
output |
Signals¶
Name |
Type |
Unit |
Description |
|---|---|---|---|
VoDDelayLayer0 |
|||
VoDDelayLayer1 |
|||
VoDDelayLayer2 |
|||
VoDDelayLayer3 |
|||
VoDTptLayer0 |
|||
VoDTptLayer1 |
|||
VoDTptLayer2 |
|||
VoDTptLayer3 |
Statistics¶
Name |
Title |
Source |
Record |
Unit |
Interpolation Mode |
Description |
|---|---|---|---|---|---|---|
VoDDelayLayer0 |
VoD Delay Layer 0 |
VoDDelayLayer0 |
mean,vector |
|||
VoDDelayLayer1 |
VoD Delay Layer 1 |
VoDDelayLayer1 |
mean,vector |
|||
VoDDelayLayer2 |
VoD Delay Layer 2 |
VoDDelayLayer2 |
mean,vector |
|||
VoDDelayLayer3 |
VoD Delay Layer 3 |
VoDDelayLayer3 |
mean,vector |
|||
VoDTptLayer0 |
VoD Tpt Layer 0 |
VoDTptLayer0 |
mean,vector |
|||
VoDTptLayer1 |
VoD Tpt Layer 1 |
VoDTptLayer1 |
mean,vector |
|||
VoDTptLayer2 |
VoD Tpt Layer 2 |
VoDTptLayer2 |
mean,vector |
|||
VoDTptLayer3 |
VoD Tpt Layer 3 |
VoDTptLayer3 |
mean,vector |
Source code¶
//
// Simulates a video-on-demand (VoD) client application
// that receives video frames over UDP. It is assumed that the transmitted
// video is encoded using multiple layers according to the Scalable Video
// Coding (SVC) technique. Hence, the module collects separate statistics
// (such as throughput and delay) for each layer.
//
simple VodUdpClient like IApp
{
parameters:
int localPort;
double startStreamTime @unit("s") = default(0s);
bool startMetrics = default(false);
string vodTraceFile;
string bsePath = default("");
string origVideoYuv = default("");
string origVideoSvc = default("");
string decPath = default("");
string traceType = default("SVC");
int playbackSize @unit("s") = default(2s);
string avipluginPath = default("");
int numFrame = default(0);
int numPktPerFrame = default(0);
int tos = default(-1); // If not -1, set the Type of Service (IPv4) / Traffic Class (IPv6) field of sent packets to this value
@display("i=block/app");
@class(VodUdpClient);
@signal[VoDTptLayer0];
@statistic[VoDTptLayer0](title="VoD Tpt Layer 0"; unit=""; source="VoDTptLayer0"; record=mean,vector);
@signal[VoDTptLayer1];
@statistic[VoDTptLayer1](title="VoD Tpt Layer 1"; unit=""; source="VoDTptLayer1"; record=mean,vector);
@signal[VoDTptLayer2];
@statistic[VoDTptLayer2](title="VoD Tpt Layer 2"; unit=""; source="VoDTptLayer2"; record=mean,vector);
@signal[VoDTptLayer3];
@statistic[VoDTptLayer3](title="VoD Tpt Layer 3"; unit=""; source="VoDTptLayer3"; record=mean,vector);
@signal[VoDDelayLayer0];
@statistic[VoDDelayLayer0](title="VoD Delay Layer 0"; unit=""; source="VoDDelayLayer0"; record=mean,vector);
@signal[VoDDelayLayer1];
@statistic[VoDDelayLayer1](title="VoD Delay Layer 1"; unit=""; source="VoDDelayLayer1"; record=mean,vector);
@signal[VoDDelayLayer2];
@statistic[VoDDelayLayer2](title="VoD Delay Layer 2"; unit=""; source="VoDDelayLayer2"; record=mean,vector);
@signal[VoDDelayLayer3];
@statistic[VoDDelayLayer3](title="VoD Delay Layer 3"; unit=""; source="VoDDelayLayer3"; record=mean,vector);
gates:
input socketIn @labels(UdpControlInfo/up);
output socketOut @labels(UdpControlInfo/down);
}