Common C++ RTP

Software screenshot:
Common C++ RTP
Dettagli del software:
Versione: 2.0.0
Data di caricamento: 11 May 15
Sviluppatore: David Sugar
Licenza: Libero
Popolarità: 35

Rating: nan/5 (Total Votes: 0)

ccRTP GNU è un'implementazione di RTP, il protocollo di trasporto in tempo reale dalla IETF (vedi RFC 3550, RFC 3551 e RFC 3555). ccRTP è una libreria C ++ basato su GNU Common C ++, che offre un rendimento elevato, conforme agli standard flessibili ed estensibili RTP pila con il supporto completo RTCP. La progettazione e la realizzazione di ccRTP lo rendono adatto per i server ad alta capacità e gateway e applicazioni client personali.
Nella progettazione ccRTP, abbiamo preso in considerazione, che la RTP è stato definito come un quadro protocollo di livello applicazione, piuttosto che un protocollo di trasporto Internet tipici come TCP e UDP. Così, RTP è raramente implementato come strato separato dall'applicazione.
Di conseguenza, le applicazioni RTP spesso devono personalizzare le RTP layout e di elaborazione dei pacchetti regole adattabili, vincoli temporali, regole di appartenenza sessione così come altri meccanismi RTP e RTCP. ccRTP mira a fornire un quadro di riferimento per il quadro RTP, piuttosto che essere solo una libreria di manipolazione dei pacchetti RTP.
Il supporto per audio e dati video viene anche preso in considerazione nel disegno di ccRTP, che può fare cornice parziale divide / riassemblaggio. Unicast, multi-unicast e modelli di trasporto multicast sono supportati, così come fonti multiple di sincronizzazione attivi, più sessioni RTP (spazi SSRC), e molteplici applicazioni RTP (spazi CNAME). Questo permette il suo utilizzo per la costruzione di tutte le forme di standard Internet sistemi di conferenza audio visive based e.
GNU ccRTP è threadsafe e prestazioni elevate. Esso utilizza elenchi coda dei pacchetti per la ricezione e la trasmissione di pacchetti di dati. Entrambi inter-media e la sincronizzazione intra-media sono gestite automaticamente entro le code dei pacchetti in entrata e in uscita. GNU ccRTP offre il supporto per RTCP e molti altri standard e caratteristiche estese che sono necessarie per entrambe le applicazioni di streaming compatibili e avanzati.
Si può mescolare diversi tipi di payload nel flusso, e quindi può essere utilizzato per impliment RFC 2833 applicazioni segnalazione compliant così come altre cose specializzati. GNU ccRTP offre anche RTP diretto e RTCP filtraggio dei pacchetti.
GNU ccRTP utilizza modelli di isolare le dipendenze filettatura e prese correlati, in modo che possa essere utilizzato per lo streaming in tempo reale impliment con diversi modelli di threading e protocolli di trasporto sottostanti, non solo con prese IPV4 UDP. Per un elenco più dettagliato delle caratteristiche ccRTP si può avere uno sguardo al manuale dei programmatori.
Al livello più alto, ccRTP fornisce classi per il trasporto in tempo reale dei dati attraverso sessioni RTP, così come le funzioni di controllo RTCP.
Il concetto principale nell'attuazione ccRTP di sessioni RTP è l'uso di code di pacchetti per gestire la trasmissione e la ricezione di pacchetti di dati RTP / unità di dati applicativi. In ccRTP, un blocco di dati vengono trasmessi, mettendola in trasmissione (i pacchetti in uscita) della coda, e ha ricevuto da ottenere dalla reception (i pacchetti in entrata) della coda.
Ci sono diversi livelli di interfaccia (interfaccia pubblico, eredità pubblico o protetto, ecc) in ccRTP. Per esempio, il programma rtphello demo distribuito con ccRTP solo utilizza l'interfaccia pubblica della classe RTPSession e non ridefinisce il metodo virtuale onGotSR, quindi ciò che questo programma sa sui rapporti SR è l'informazione veicolata nell'ultima relazione mittente da qualsiasi fonte, che possono essere recuperate tramite il metodo getMRSenderInfo della classe SyncSource.
Al contrario, il programma demo rtplisten ridefinisce onGotSR tramite eredità e potrebbe fare l'elaborazione specializzata di questi pacchetti RTCP. Generalmente, dati e pacchetti di controllo non sono direttamente accessibili attraverso l'interfaccia più esterna.
Tutte queste funzioni sono svolte attraverso alcune classi essenziali e tipi. Quelli più elementari sono il tipo StaticPayloadType enumerato, e la StaticPayloadFormat classi e DynamicPayloadFormat.
I più importanti sono le classi RTPSession, SyncSource, Partecipante e AppDataUnit, che rappresentano sessioni RTP, fonti di sincronizzazione, i partecipanti in un programma RTP, e le unità di dati delle applicazioni veicolati in pacchetti di dati RTP, rispettivamente.
Quando si utilizzano ccRTP, sia l'invio e la ricezione di dati trasportati su sessioni RTP viene fatto attraverso di ricezione e trasmissione delle code gestite dallo stack RTP. Nel caso più comune, un thread di esecuzione separato per ciascuna sessione RTP gestisce le code. Questo caso è il modello di threading che noi generalmente assumere in questo documento. Si noti comunque che ccRTP supporta altri modelli di threading, particolarmente ccRTP supporta l'utilizzo di un singolo thread di esecuzione per servire un insieme di sessioni RTP. E 'anche possibile non associare alcun thread separato con qualsiasi sessione RTP, chiamando manualmente i dati e di servizi di controllo principali metodi di qualsiasi altro thread.
L'idea di base per la ricezione pacchetto con ccRTP è che l'applicazione non legge direttamente pacchetti dal socket ma li ottiene da una coda di ricezione. Lo stack è responsabile per l'inserimento di pacchetti ricevuti nella coda di ricezione e gestione di questa coda. In generale, un pacchetto dati e l'inserimento nella coda di ricezione non avvengono contemporaneamente l'applicazione ottiene dalla coda.
Al contrario, l'idea di base per la trasmissione di pacchetti con ccRTP è che i pacchetti non sono direttamente scritti prese ma inseriti in una coda di trasmissione gestiti dallo stack. In generale, l'inserimento ed inviare pacchetti avvengono in tempi diversi, anche se non è necessario.
Per poter utilizzare ccRTP, è necessario includere l'intestazione principale due intestazioni aggiuntive sono forniti da ccRTP (#include .:
#include     Classi per piscine di thread di servizio RTP.
#include
    Classi per le estensioni RTP che non sono ancora maturi.
È necessario collegare anche nella biblioteca, attualmente ccrtp1

Caratteristiche :..

  • altamente estendibile per stack specializzati
  • · Supporta unicast, multi-unicast e multicast. Gestisce più fonti (comprese le fonti di sincronizzazione e le fonti che contribuiscono) e destinazioni. Supporta anche RTP simmetrico.
  • funzioni automatiche RTCP gestione, come ad esempio l'associazione delle fonti di sincronizzazione dallo stesso partecipante o timestamp mappatura NTP-RTP.
  • La genericità come per i protocolli di rete e di trasporto sottostanti attraverso modelli.
  • È threadsafe e supporta quasi tutti i modelli di threading.
  • generiche ed estensibili controlli di validità RTP e RTCP.
  • Maniglie Stati di origine e informazioni così come la registrazione delle statistiche.
  • gestisce automaticamente le collisioni SSRC ed esegue il rilevamento del ciclo.
  • Implementa timer riconsiderazione e invertire riconsiderazione.
  • Fornisce buoni numeri casuali, basati su / dev / urandom o, in alternativa, su MD5.

Cosa c'è di nuovo in questa versione:

  • pulitura codice, correzioni di bug per RTP informazioni mittente, e la fusione di patch Debian a monte.

Altri software di sviluppo David Sugar

GNU SIP Witch
GNU SIP Witch

17 Feb 15

Commenti a Common C++ RTP

I commenti non trovato
Aggiungi commento
Accendere le immagini!