TCP Queue ist im Grunde eine Queue, 2 Sockets und eine konstante Übertragungsrate am Sendesocket.
Man nehme 2 TCP Queues, eine ohne Beschränkung der Senderade, und eine mit konstanter Senderate und einer pre-buffering Position. Beide lesen auf dem Eingangssocket so schnell sie können.
Die erste Queue sendet so schnell wie möglich die eingehenden Daten an die zweite Queue. Die zweite Queue sammelt die Daten, bis die pre-buffering Position erreicht ist. Nun sendet diese mit der vorgegebenen konstanten Bitrate.
Kommt es nun zu einer Störung zwischen beiden Queues, so dass der Sende-Prozess der ersten Queue blockiert, so läuft die erste Queue langsam voll und die zweite zehrt ihren Datenvorrat auf.
Nimmt die Verbindung zwischen beiden Queues wieder die Arbeit auf, so wird die erste Queue die zwischengespeicherten Daten so schnell wie möglich übertragen und seinen Puffer wieder leeren. Die zweite Queue kann ihren Puffer wieder bis zur pre-buffering Position aufladen.
Ist die Eingangsdatenrate der ersten Queue identisch mit der Ausgangsdatenrate der zweiten Queue, so ergibt sich ein stabiles Gleichgewicht.
Dieses Konstrukt kann dann Ausfälle von bis zu
pre-buffering Position [bytes]
------------------------------ = Verzögerung [s]
konst. Senderate [bytes/sec]
Auffangen und erzeugt eine Verzögerung des Streams um genau den gleichen Betrag.
Bei Interesse sende ich gerne die Quellen zu. Im Moment befindetsich das Projekt auf Eis, erreichte jedoch ein stabiles Stadium.