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.

simu5g.apps.vod.VodUdpClientVodUdpClientsimple

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);
}

File: src/simu5g/apps/vod/VodUdpClient.ned