VoDUDPClient

Package: simu5g.apps.vod

VoDUDPClient

simple module

This module 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

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Parameters

Name Type Default value Description
localPort int
startStreamTime double 0s
startMetrics bool false
vod_trace_file 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
display i=block/app
class VoDUDPClient

Gates

Name Direction Size Description
socketIn input
socketOut output

Signals

Name Type Unit Description
VoDDelayLayer2
VoDDelayLayer1
VoDDelayLayer3
VoDDelayLayer0
VoDTptLayer3
VoDTptLayer2
VoDTptLayer1
VoDTptLayer0

Statistics

Name Title Source Record Unit Interpolation Mode Description
VoDDelayLayer2 VoD Delay Layer 2 VoDDelayLayer2 mean, vector
VoDDelayLayer1 VoD Delay Layer 1 VoDDelayLayer1 mean, vector
VoDDelayLayer3 VoD Delay Layer 3 VoDDelayLayer3 mean, vector
VoDDelayLayer0 VoD Delay Layer 0 VoDDelayLayer0 mean, vector
VoDTptLayer3 VoD Tpt Layer 3 VoDTptLayer3 mean, vector
VoDTptLayer2 VoD Tpt Layer 2 VoDTptLayer2 mean, vector
VoDTptLayer1 VoD Tpt Layer 1 VoDTptLayer1 mean, vector
VoDTptLayer0 VoD Tpt Layer 0 VoDTptLayer0 mean, vector

Source code

//
// This module 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 vod_trace_file;
        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/apps/vod/VoDUDPClient.ned