Initialization Sequence summary - Grade-A-Software/Comcast-DASH-VLC GitHub Wiki

Once the module starts, the control script (dash.cpp) immediately requests the input manifest file from the internet, and downloads it before calling the helper routine parser to construct an MPD object from the manifest file. This accomplished, the script instantiates a DASHManager object to oversee the rest of the download and playback process.

When instantiated, the singleton DASHManager instantiates a chunk object to track the current downloading chunk. Now having sufficient information to begin downloading files, the DASHManager instantiates an HTTPConnectionManager object to handle the multiple threads that will be downloading files. This new object creates a vector of PersistentConnection objects to individually handle downloading segments.

With control returned to the DASHManager, it now creates a BlockBuffer object to store the media data downloaded by the PersistentConnection objects within the HTTPConnectionManager.

With all of these objects in place, the DASHManager creates another singleton, the DASHDownloader, to handle and pass requests to the network connections and create small threads for downloading. Now the module has officially begun downloading data and can begin to play once the first few segments have arrived.

Once sufficient data has accrued in the BlockBuffer, the VLC-mandated functions read(), peek(), and seek() can be invoked from VLC to pull media from the BlockBuffer and into VLC's playback stream.

The above sequence.