Menu

getting started

Alex Libov

Basic Concepts

Modules

StreamAID defines four main modules that make up a P2P live streaming protocol:

Network Module

This module handles all network related aspects and provides an easy to use interface for other modules to use.
Other modules such as Streaming and Overlay modules send and receive messages form other peers using the network module. Network Module implementation inherit from NetworkModule.
Currently supported network modules: [network modules]

Overlay Module

The Overlay module builds and maintains neighboring relationships between peers. The abstract class OverlayModule provides a general getNeighbors() abstract function that should return all current neighbors.

More types of overlays are supported. For example, a tree overlay module should extend the TreeOverlayModule class that offers additional API methods such as getFather() and getSons().

Currently supported overlay modules: [overlay modules]

Streaming Module

The Streaming module handles actual chunk dissemination using an instance (or several) of overlay modules. Streaming module implementations should inherit from StreamingModule. The Streaming module also initializes the player module's video stream, usually upon reception of a chunk or a chunk availability bitmap.
Currently supported streaming modules: [streaming modules]

Player Module

The player module plays out the chunks received by the streaming module.
Currently supported player modules: [player modules]

Ingredients

StreamAID introduces the concept of ingredients. Ingredient is the smallest unit of code that expresses a single design choice. Ingredient implementations inherit from AbstractIngredient and are tied to a specific module. An ingredient of a module will also receive all of the messages send to the module and has the opportunity to either send a message to the corresponding ingredient or to the corresponding underlying module (and to all ingredients) of a different peer.

Ingredients are meant to decompose modules, to facilitate code reuse. Note that unlike modules, ingredients are very protocol specific. Some protocols may include some ingredients while others don't.


Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.