Difference between revisions of "Private:psim"

From NMSL
Line 3: Line 3:
 
= Class Diagrams =
 
= Class Diagrams =
  
<UML density="180">
+
<pre>
Class.Frame("Frame")
 
("no:int",
 
"layer:int",
 
"deadlineOffsetInSecs:double",
 
"sizeInByte:int")
 
();
 
drawObject(Frame);
 
</UML>
 
  
Segment?
+
class Frame {
 +
    int no; // serial number
 +
    int layer; // layer number it belongs to, set to zero for nonscalable frame
 +
    double deadlineOffset; // deadline offset compared to the start of the video, in secs
 +
    int size; // frame size in bytes
 +
}
  
<UML density="180">
+
class Segment {
Class.Video("Video")
+
    int no; // serial number
("traceFileName:String",
+
    Vector<Frame> frames; // reference to included frame
"frameTrace:Hashtable<frameNo:int, frame:Frame>",
+
    int totalSize; // aggregate size in bytes
"segmentTrace:Hashtable<segmentNo:int, segment:Segment>")
+
}
("prepareSegment(...):void");
+
 
drawObject(Video);
+
class Video {
</UML>
+
    String filename; // video trace file path and name
 +
    Hashtable<int, Frame> frameTrace; // frames read from the trace file
 +
    Hashtable<int, Segment> segmentTrace; // segments generated by the prepareSegments(...)
 +
    void prepareSegments(int noFrame); // packetize frames into segment,
 +
        // noFrame indicates how many frames should we put in one segment;  
 +
        // we might implement other packtization schemes later.
 +
}
 +
 
 +
</pre>

Revision as of 23:09, 4 March 2009

This page documents the development of a discrete event simulator for P2P video streaming applications. This simulator captures important features of data-driven video streaming systems. In particular, it is designed to evaluate: (i) the performance of various segment scheduling algorithms; (ii) the potential of network coding in multi-layer P2P video streaming systems.

Class Diagrams


class Frame {
    int no; // serial number
    int layer; // layer number it belongs to, set to zero for nonscalable frame
    double deadlineOffset; // deadline offset compared to the start of the video, in secs
    int size; // frame size in bytes
}

class Segment {
    int no; // serial number
    Vector<Frame> frames; // reference to included frame
    int totalSize; // aggregate size in bytes
}

class Video {
    String filename; // video trace file path and name
    Hashtable<int, Frame> frameTrace; // frames read from the trace file
    Hashtable<int, Segment> segmentTrace; // segments generated by the prepareSegments(...)
    void prepareSegments(int noFrame); // packetize frames into segment, 
        // noFrame indicates how many frames should we put in one segment; 
        // we might implement other packtization schemes later.
}