Package: simu5g.apps.mec.RealTimeVideoStreamingApp
RtVideoStreamingSender
simple moduleThis application is to be instantiated on the UE side. It requires that a DeviceApp is also instantiated on the UE. This module requests the DeviceApp to instantiate a MecRTVideoStreamingReceiver in the MEC system. Once the peer MEC application is up and running, this module starts sending packets containing video frames as read from the trace file specified in the configuration.
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| mobilityModule | string | ||
| localPort | int | 4000 |
Connection parameters |
| deviceAppPort | int | 4000 |
Port of the DeviceApp |
| deviceAppAddress | string |
IP address of the DeviceApp |
|
| packetSize | int | 10B | |
| tos | int | -1 |
If not -1, set the Type of Service (IPv4) / Traffic Class (IPv6) field of sent packets to this value |
| period | double | 1s |
Auto-scheduling parameters |
| startTime | double | 0s | |
| stopTime | double | 120s | |
| mecAppName | string | "MecrtVideoStreamingReceiverApp" |
The "appName" of the application descriptor to instantiate |
| sessionDuration | double | uniform(30s,120s) |
Session parameters |
| periodBetweenSession | double | uniform(10s,60s) |
TODO is this the right distribution? |
| fileName | string | ||
| sendAllOnOneTime | bool | true |
Properties
| Name | Value | Description |
|---|---|---|
| display | i=block/source |
Gates
| Name | Direction | Size | Description |
|---|---|---|---|
| socketOut | output | ||
| socketIn | input |
Signals
| Name | Type | Unit | Description |
|---|---|---|---|
| positionX | double | ||
| positionY | double | ||
| positionZ | double | ||
| velocity | double | ||
| rtVideoStreamingFirstFrameElapsedTime | simtime_t | ||
| rtVideoStreamingFramesDisplayed | double | ||
| rtVideoStreamingEnd2endDelaySegment | simtime_t | ||
| rtVideoStreamingSegmentPacketSize | int | ||
| rtVideoStreamingFrameSize | int | ||
| rtVideoStreamingPlayoutBufferLength | int | ||
| rtVideoStreamingInterArrivalTimeSegment | simtime_t | ||
| rtVideoStreamingPlayoutDelay | simtime_t | ||
| rtVideoStreamingPlayoutDelayAll | simtime_t | ||
| rtVideoStreamingSegmentLoss | int | ||
| rtVideoStreamingStartSession | simtime_t | ||
| rtVideoStreamingStopSession | simtime_t |
Statistics
| Name | Title | Source | Record | Unit | Interpolation Mode | Description |
|---|---|---|---|---|---|---|
| positionX | UE positionX | positionX | vector | |||
| positionY | UE positionY | positionY | vector | |||
| positionZ | UE positionY | positionZ | vector | |||
| velocity | UE velocity | velocity | vector | |||
| rtVideoStreamingFirstFrameElapsedTime | Frames displayed | rtVideoStreamingFirstFrameElapsedTime | vector | none | ||
| rtVideoStreamingFramesDisplayed | Frames displayed | rtVideoStreamingFramesDisplayed | count, vector | none | ||
| rtVideoStreamingEnd2endDelaySegment | end to end delay of segment packets | rtVideoStreamingEnd2endDelaySegment | mean, vector | |||
| rtVideoStreamingSegmentPacketSize | size of segment packets | rtVideoStreamingSegmentPacketSize | mean, vector | |||
| rtVideoStreamingFrameSize | size of frames | rtVideoStreamingFrameSize | mean, vector | |||
| rtVideoStreamingPlayoutBufferLength | playout buffer Length | rtVideoStreamingPlayoutBufferLength | mean, vector | |||
| rtVideoStreamingInterArrivalTimeSegment | inter arrival of segment packets | rtVideoStreamingInterArrivalTimeSegment | mean, vector | |||
| rtVideoStreamingPlayoutDelay | playout delay | rtVideoStreamingPlayoutDelay | mean, vector | |||
| rtVideoStreamingPlayoutDelayAll | playout delay | rtVideoStreamingPlayoutDelayAll | mean, vector | |||
| rtVideoStreamingSegmentLoss | segment packets lost | rtVideoStreamingSegmentLoss | mean, vector | none | ||
| rtVideoStreamingStartSession | start session timestamps | rtVideoStreamingStartSession | mean, vector | none | ||
| rtVideoStreamingStopSession | stop session timestamps | rtVideoStreamingStopSession | mean, vector | none |
Source code
// // This application is to be instantiated on the UE side. It requires that a ~DeviceApp is // also instantiated on the UE. This module requests the ~DeviceApp to instantiate a // ~MecRTVideoStreamingReceiver in the MEC system. // Once the peer MEC application is up and running, this module starts sending packets // containing video frames as read from the trace file specified in the configuration. // simple RtVideoStreamingSender like IApp { parameters: @display("i=block/source"); string mobilityModule; // Connection parameters int localPort = default(4000); int deviceAppPort = default(4000); // Port of the DeviceApp string deviceAppAddress; // IP address of the DeviceApp int packetSize @unit(B) = default(10B); int tos = default(-1); // If not -1, set the Type of Service (IPv4) / Traffic Class (IPv6) field of sent packets to this value // Auto-scheduling parameters double period @unit("s") = default(1s); double startTime @unit("s") = default(0s); double stopTime @unit("s") = default(120s); string mecAppName = default("MecrtVideoStreamingReceiverApp"); // The "appName" of the application descriptor to instantiate // Session parameters volatile double sessionDuration @unit("s") = default(uniform(30s,120s)); // TODO is this the right distribution? volatile double periodBetweenSession @unit("s") = default(uniform(10s,60s)); // TODO is this the right distribution? string fileName; bool sendAllOnOneTime = true; @signal[positionX](type=double); @statistic[positionX](title="UE positionX"; source=positionX; record=vector); @signal[positionY](type=double); @statistic[positionY](title="UE positionY"; source=positionY; record=vector); @signal[positionZ](type=double); @statistic[positionZ](title="UE positionY"; source=positionZ; record=vector); @signal[velocity](type=double); @statistic[velocity](title="UE velocity"; source=velocity; record=vector); @signal[rtVideoStreamingFirstFrameElapsedTime](type=simtime_t); @statistic[rtVideoStreamingFirstFrameElapsedTime](title="Frames displayed"; source="rtVideoStreamingFirstFrameElapsedTime"; record=vector; interpolationmode=none); @signal[rtVideoStreamingFramesDisplayed](type=double); @statistic[rtVideoStreamingFramesDisplayed](title="Frames displayed"; source="rtVideoStreamingFramesDisplayed"; record=count,vector; interpolationmode=none); @signal[rtVideoStreamingEnd2endDelaySegment](type=simtime_t); @statistic[rtVideoStreamingEnd2endDelaySegment](title="end to end delay of segment packets"; source="rtVideoStreamingEnd2endDelaySegment"; record=mean,vector); @signal[rtVideoStreamingSegmentPacketSize](type=int); @statistic[rtVideoStreamingSegmentPacketSize](title="size of segment packets"; source="rtVideoStreamingSegmentPacketSize"; record=mean,vector); @signal[rtVideoStreamingFrameSize](type=int); @statistic[rtVideoStreamingFrameSize](title="size of frames"; source="rtVideoStreamingFrameSize"; record=mean,vector); @signal[rtVideoStreamingPlayoutBufferLength](type=int); @statistic[rtVideoStreamingPlayoutBufferLength](title="playout buffer Length"; source="rtVideoStreamingPlayoutBufferLength"; record=mean,vector); @signal[rtVideoStreamingInterArrivalTimeSegment](type=simtime_t); @statistic[rtVideoStreamingInterArrivalTimeSegment](title="inter arrival of segment packets"; source="rtVideoStreamingInterArrivalTimeSegment"; record=mean,vector); @signal[rtVideoStreamingPlayoutDelay](type=simtime_t); @statistic[rtVideoStreamingPlayoutDelay](title="playout delay"; source="rtVideoStreamingPlayoutDelay"; record=mean,vector); @signal[rtVideoStreamingPlayoutDelayAll](type=simtime_t); @statistic[rtVideoStreamingPlayoutDelayAll](title="playout delay"; source="rtVideoStreamingPlayoutDelayAll"; record=mean,vector); @signal[rtVideoStreamingSegmentLoss](type=int); @statistic[rtVideoStreamingSegmentLoss](title="segment packets lost"; source="rtVideoStreamingSegmentLoss"; record=mean,vector; interpolationmode=none); @signal[rtVideoStreamingStartSession](type=simtime_t); @statistic[rtVideoStreamingStartSession](title="start session timestamps"; source="rtVideoStreamingStartSession"; record=mean,vector; interpolationmode=none); @signal[rtVideoStreamingStopSession](type=simtime_t); @statistic[rtVideoStreamingStopSession](title="stop session timestamps"; source="rtVideoStreamingStopSession"; record=mean,vector; interpolationmode=none); gates: output socketOut; input socketIn; }File: src/simu5g/apps/mec/RealTimeVideoStreamingApp/RtVideoStreamingSender.ned