GNU ccRTP este o implementare a RTP, protocolul de transport în timp real de la IETF (a se vedea RFC 3550, RFC 3551 și RFC 3555). ccRTP este o bibliotecă C ++ bazat pe GNU comună C ++ care oferă o performanță ridicată, care respectă standardele flexibile și extensibile RTP stiva cu suport complet RTCP. Proiectarea și punerea în aplicare a ccRTP fac potrivit pentru servere de capacitate mare și gateway-uri, precum și aplicațiile client personale.
În proiectarea ccRTP, am luat în considerare faptul că RTP a fost definită ca un cadru protocol nivel de aplicație, mai degrabă decât un protocol tipic de transport Internet, cum ar fi TCP și UDP. Astfel, este greu de pus în aplicare RTP niciodată ca un strat separat de aplicație.
Prin urmare, cererile de RTP de multe ori trebuie personaliza RTP aspect și de prelucrare de pachete de regulile adaptabile, calendarul constrângeri, regulile de aderare la sesiune, precum și alte mecanisme de RTP și RTCP. ccRTP își propune să ofere un cadru pentru cadrul RTP, mai degrabă decât a fi doar o bibliotecă de manipulare pachet RTP.
Suport pentru audio și video de date sunt, de asemenea, luate în considerare în proiectarea de ccRTP, care poate face cadru parțială imparte / re-montaj. Unicast, multi-unicast și modele de transport multicast sunt acceptate, precum și mai multe surse de sincronizare activă, mai multe sesiuni RTP (spatii SSRC), și multiple aplicații RTP (spații CNAME). Acest lucru permite se folosi pentru construirea tuturor formelor de standardele Internet Sisteme conferințe audio-vizuale și bazate pe.
GNU ccRTP este fire și de înaltă performanță. Acesta utilizează pachete listele coadă pentru primirea și transmiterea de pachete de date. Atât inter-media și sincronizarea intra-media este tratată în mod automat în cozile de intrare și ieșire de pachete. GNU ccRTP oferă suport pentru RTCP și multe alte caracteristici standard si extinse, care sunt necesare pentru aplicații de streaming compatibile și avansate.
Se poate amesteca mai multe tipuri de sarcină utilă în fluxul, și prin urmare, pot fi folosite pentru a impliment RFC 2833 aplicații semnalizare conforme, precum și alte lucruri de specialitate. GNU ccRTP oferă, de asemenea, RTP directă și RTCP filtrare de pachete.
GNU ccRTP foloseste template-uri pentru a izola filetare și prize legate dependențe, astfel încât să poată fi folosit pentru a impliment de streaming în timp real cu diferite modele filetare și protocoale de transport care stau la baza, nu doar cu prize IPV4 UDP. Pentru o listă mai detaliată a caracteristicilor ccRTP puteți avea o privire la manual programatori.
La cel mai înalt nivel, ccRTP oferă cursuri pentru transportul în timp real a datelor prin sesiuni RTP, precum și funcțiile de control ale RTCP.
Conceptul principal în punerea în aplicare ccRTP sesiunilor RTP este utilizarea cozile de pachete să se ocupe de transmisie și recepție a RTP pachete de date / unități de date de aplicare. În ccRTP, un bloc de date este transmis prin inscrie in transmisie (pachete de ieșire) coadă, și a primit prin obtinerea-l de la recepție (pachete primite) coadă.
Există mai multe niveluri de interfață (interfață publică, moștenire publică sau protejate, etc.) în ccRTP. De exemplu, programul demo rtphello distribuite cu ccRTP foloseste doar interfața publică a clasei RTPSession și nu redefini metoda virtuale onGotSR, astfel cum acest program stie despre rapoartele SR este informația transmisă în ultimul raport expeditor din orice sursă, care pot fi recuperate prin metoda getMRSenderInfo al clasei SyncSource.
Dimpotrivă, programul demo rtplisten redefineste onGotSR prin moștenire și ar putea face procesarea specializată a acestor pachete RTCP. În general, atât de date și pachete de control nu sunt direct accesibile prin intermediul interfeței mai extern.
Toate aceste funcții sunt îndeplinite de prin câteva clase esențiale și tipuri. Cele mai de bază sunt de tip StaticPayloadType recenzate, iar StaticPayloadFormat clase și DynamicPayloadFormat.
Cele mai importante sunt clasele RTPSession, SyncSource, participant și AppDataUnit, care reprezintă sesiuni RTP, surse de sincronizare, participanți la o aplicație RTP, și unități de date de aplicare transmise în pachete de date RTP, respectiv.
Când utilizați ccRTP, atât trimiterea și primirea de date transportate peste sesiuni RTP se face prin cozile de primire și transmitere gestionate de stiva RTP. În cele mai frecvente caz, un fir de executie separat pentru fiecare sesiune RTP ocupă cozile. Acest caz este modelul filetare care vom asuma, în general, pe parcursul acestui document. Rețineți totuși că ccRTP acceptă alte modele de filetat, în special ccRTP sprijină utilizarea unui singur fir de executie pentru a servi o serie de sesiuni de RTP. De asemenea, este posibil să nu se asocieze orice subiect separat cu orice sesiune RTP, de asteptare manual de date și servicii de control principalele metode de orice alt fir.
Ideea de bază pentru primirea de pachete cu ccRTP este că cererea nu citește direct de pachete de prize, dar toate persoanele de la o coadă de primire. Stiva este responsabil pentru introducerea pachetelor primite în coada de primire și de manipulare această coadă. În general, o recepție pachet și inserție în coada de primire nu se produce în același timp cererea devine din coadă.
Invers, ideea de bază pentru transmisia de pachete cu ccRTP este că pachetele nu sunt scrise direct la prize, dar a introdus într-o coadă de transmisie manipulate prin stiva. In general, se introduce pachetul sau transmisie apar momente diferite, deși nu este necesar.
Pentru a utiliza ccRTP, trebuie să includă antetul principal (#include
#include
#include
Clase de extensii RTP care nu sunt maturi încă.
De asemenea, trebuie link în bibliotecă, în prezent ccrtp1
Caracteristici :..
- Foarte extensibila pentru stive de specialitate
- · Suport unicast, multi-unicast și multicast. Manere mai multe surse (inclusiv sursele de sincronizare și surse care contribuie) și destinații. Sprijină, de asemenea simetric RTP.
- funcții automate RTCP de manipulare, cum ar fi o asociație de surse de sincronizare de la același participant sau NTP-RTP maparea timestamp.
- genericitatea ca de rețea și de transport protocoale care stau la baza prin șabloane.
- Este fire și sprijină aproape orice model de threading.
- controale generice și extensibile valabilitate antet RTP și RTCP.
- Manere state sursă și informații, precum și înregistrarea statisticilor.
- se ocupă în mod automat coliziunile SSRC și realizează detectarea bucla.
- Implementează timer reconsiderare și reconsiderare invers.
- Oferă numere aleatoare bune, bazate pe / dev / urandom sau, alternativ, pe MD5.
Ce este nou în această versiune:
- Codul de curatare, bugfixes pentru RTP informatii expeditor, și fuzionarea patch-uri Debian amonte.
Comentariile nu a fost găsit