GNU ccRTP jest realizacja RTP, protokołu transportowego w czasie rzeczywistym z IETF (patrz RFC 3550, RFC 3551 i RFC 3555). ccRTP jest biblioteka C ++ oparte na wspólnej C GNU ++, który zapewnia wysoką wydajność, elastyczne i rozszerzalny zgodnych ze standardami RTP stos z pełnym wsparciem RTCP. Projektowanie i wdrażanie ccRTP sprawiają, że nadaje się do dużych serwerów i bram, a także zdolności osobistych aplikacji klienckich.
W projektowaniu ccRTP, mamy brać pod uwagę, że RTP została zdefiniowana jako poziom Application Protocol ramach zamiast typowego protokołu transportowego internetowe takie jak TCP i UDP. Tak więc, RTP jest rzadko wykonany jako oddzielona od warstwy aplikacji.
W związku z tym, często muszą aplikacje RTP dostosować do dostosowania zasad układu i przetwarzania pakietów RTP, ograniczenia czasowe, zasady członkostwa sesji, jak również inne mechanizmy, RTP i RTCP. ccRTP ma na celu stworzenie ram dla ram RTP, a nie jest tylko biblioteka manipulacji pakiet RTP.
Wsparcie dla audio i danych wideo jest również uważane w projektowaniu ccRTP, że może zrobić częściowe rama pęka / ponownego montażu. Unicast, multi-unicast i multicast modele transportowe są obsługiwane, a także wiele aktywnych źródła synchronizacji, wiele sesji RTP (obowiązuje SSRC), a wiele aplikacji RTP (obowiązuje CNAME). Pozwala to wykorzystać do budowy wszelkiego rodzaju standardów internetowych dźwiękowych systemów konferencyjnych i oparte wizualne.
GNU ccRTP jest threadsafe i wysoka wydajność. Korzysta z listy kolejki pakietów do odbioru i transmisji pakietów danych. Zarówno Inter-media i synchronizacji wewnątrz materiał jest obsługiwana automatycznie w ciągu kolejki przychodzących i wychodzących pakietów. GNU ccRTP oferuje wsparcie dla RTCP i wiele innych standardowych i dodatkowych funkcji, które są niezbędne zarówno dla zaawansowanych aplikacji kompatybilnych i streamingu.
Może on mieszać wiele typów danych użytecznych w strumieniu, a tym samym może być stosowany do impliment RFC 2833 zgodnych aplikacji sygnalizacji, jak również innych specjalnych rzeczy. GNU ccRTP oferuje również bezpośredni RTP i filtrowanie pakietów RTCP.
GNU ccRTP wykorzystuje szablony, aby wyizolować i gniazda gwintowania zależności związane, tak, że może on być stosowany w czasie rzeczywistym impliment strumieniowe z różnych modeli gwintowania i podstawowych protokołów transportowych, nie tylko z gniazd IPv4 UDP. Dla bardziej szczegółowej listy funkcji ccRTP można spojrzeć na instrukcji programistów.
Na najwyższym poziomie, ccRTP zapewnia zajęcia dla transportu w czasie rzeczywistym danych poprzez sesji RTP, a także funkcji sterujących RTCP.
Główną koncepcją w realizacji ccRTP sesji RTP jest stosowanie kolejek pakietów do obsługi transmisji i odbioru pakietów danych RTP / jednostek danych aplikacji. W ccRTP, blok danych jest nadawany przez wprowadzenie go do transmisji (pakiety wychodzące) kolejki, a przyjęty przez coraz to w recepcji (pakiety przychodzące) kolejki.
Istnieje kilka poziomów interfejsu (interfejs publiczny, dziedziczenia publicznego lub chronionym, etc) w ccRTP. Na przykład, program demo rtphello rozpowszechniany z ccRTP po prostu korzysta z interfejsu publicznego klasy RTPSession i nie przedefiniować sposób wirtualny onGotSR, więc to, co wie na temat tego programu raportach SR informacja przekazana w ostatnim sprawozdaniu nadawcy z dowolnego źródła, które mogą być pobierane metodą getMRSenderInfo klasy SyncSource.
Wręcz przeciwnie, rtplisten Program demo redefiniuje onGotSR drodze dziedziczenia i może zrobić specjalistyczne przetwarzanie tych pakietów RTCP. Ogólnie rzecz biorąc, oba pakiety danych i sterowania nie są bezpośrednio dostępne przez najbardziej zewnętrzny interfejs.
Wszystkie te funkcje są wykonywane przez kilka podstawowych klas i typów. Najbardziej podstawowe z nich to wyliczany typ StaticPayloadType i StaticPayloadFormat i DynamicPayloadFormat klasy.
Najważniejszymi z nich są zajęcia RTPSession, SyncSource, Uczestnik i AppDataUnit, które reprezentują sesji RTP, źródła synchronizacji, uczestników aplikacji RTP i aplikacji przekazywanych jednostek danych w pakietach danych RTP, odpowiednio.
Podczas korzystania ccRTP, zarówno wysyłanie i odbieranie danych transportowanych na sesji RTP odbywa się poprzez przyjmowanie i przekazywanie kolejek obsługiwanych przez stos RTP. W najbardziej powszechnym przypadku, oddzielny wątek wykonanie dla każdej sesji RTP obsługuje kolejki. Ta sprawa jest model wątków, które na ogół zakładamy w tym dokumencie. Należy jednak pamiętać, że ccRTP inne modele gwintowania wspiera szczególnie ccRTP obsługuje korzystanie z jednego wątku realizacji służyć zestaw sesji RTP. Możliwe jest również, aby nie kojarzy żadnego oddzielnego wątku w każdej sesji RTP, ręcznie wywołanie danych i obsługi sterowania główne metody z jakiegokolwiek innego wątku.
Podstawową ideą do odbioru pakietów z ccRTP jest to, że aplikacja nie bezpośrednio przeczytać pakiety z gniazd, ale dostaje je z kolejki odbiorczej. Stos jest odpowiedzialny za wstawianie odebranych pakietów w kolejce recepcji i obsługi tej kolejki. Generalnie, odbiór pakietów i do wprowadzania w kolejce odbiorczej nie występuje w tym samym czasie aplikacji pobiera go z kolejki.
Z drugiej strony, idea do transmisji pakietu z ccRTP jest to, że pakiety nie są zapisywane bezpośrednio do gniazd, ale umieszczone w kolejce transmisji obsługiwanej przez stos. Na ogół, wprowadzenie i transmisji pakietów występuje w różnych momentach, choć nie jest to konieczne.
W celu wykorzystania ccRTP, należy dołączyć główny nagłówek (#include
#include
#include
Zajęcia dla rozszerzeń RTP, które nie są jeszcze starsze.
Musisz również połączyć w bibliotece, obecnie ccrtp1
Opis :..
- rozszerzalna do wyspecjalizowanych stosy
- · Obsługa multi-unicast, multicast oraz unicast. Obsługuje wiele źródeł (w tym źródeł synchronizacji i źródeł przyczyniających) i okolicy. Obsługuje również symetryczne RTP.
- Automatyczne RTCP obsługi funkcje, takie jak stowarzyszenia źródeł synchronizacji z tego samego uczestnika lub NTP-RTP mapowania datownik.
- genericity jak dla podstawowych protokołów sieciowych i komunikacyjnych poprzez szablonów.
- Jest threadsafe i obsługuje prawie każdego modelu wątków.
- Ogólne i rozsuwane prawidłowość nagłówka RTP i RTCP.
- Uchwyty stany źródłowych i informacji, jak również nagrania statystyk.
- Automatycznie obsługuje SSRC kolizji i wykonuje wykrywanie pętli.
- Narzędzia zegara ponowne rozpatrzenie i odwrócić ponownego rozpatrzenia.
- Zapewnia dobre liczb losowych, oparte na / dev / urandom lub, alternatywnie, na MD5.
Co nowego w tym wydaniu:
- cleanupie, poprawki dla RTP informacji o nadawcy, i łączenie Plastry Debiana prąd.
Komentarze nie znaleziono