Strona Ogg

Nagłówek strony Ogg

Strona Ogg to jednostka danych w strumieniu bitów Ogg , zwykle o wielkości od 4 kB do 8 kB, o maksymalnym rozmiarze 65 307 bajtów.

Zamiar

z celów formatów kontenerów multimedialnych jest umożliwienie multipleksowania wielu kodeków w jednym pliku lub strumieniu. Na przykład, aby połączyć audio , wideo i napisy w jeden plik.

Z punktu widzenia Christophera Montgomery'ego , twórcy formatu Ogg, jednostki zmultipleksowanych danych kodeków powinny stanowić oddzielną warstwę abstrakcji od jednostek danych używanych przez kodek, aby ograniczyć ilość buforowania niezbędnego podczas dekodowania zawartych danych . Jego zdaniem, popieranym przez innych programistów współpracujących z Fundacją Xiph.org , daje to Oggowi przewagę techniczną nad alternatywnymi formatami bitstream , takimi jak AVI , QuickTime i MPEG .

Każda strona Ogg zapewnia również przesunięcie czasowe zawartych danych, co umożliwia wydajne wyszukiwanie, które jest zarówno dokładne, jak i kompatybilne z przesyłaniem strumieniowym . W przeciwieństwie do tego wiele innych formatów stara się określać pozycje bajtów w strumieniu lub polegać na spisie treści w celu wyszukiwania informacji.

Struktura strony

Każda strona Ogg zaczyna się od czterobajtowego magicznego ciągu „OggS”. Jeśli synchronizacja zostanie utracona, dekoder może szukać następnego wystąpienia tej sekwencji, aby ponownie rozpocząć dekodowanie. Po tych czterech bajtach następuje bajt zerowy dla wersji Ogg 0. Pierwotnie pole wersji miało umożliwiać współistnienie wielu typów stron Ogg dostosowanych do różnych ładunków w tym samym strumieniu. W 2000 roku stało się jasne, że używana będzie tylko jedna wersja strony.

Szósty bajt każdej strony określa flagi typu. Wartość 1 oznacza, że ​​strona zawiera dane pakietu kontynuowanego z poprzedniej strony. Wartość 2 określa, że ​​jest to pierwsza strona strumienia, a wartość 4 określa, że ​​jest to ostatnia strona strumienia. Wartości te można łączyć za pomocą dodawania lub logicznego OR .

Następne 8 bajtów, czyli 64 bity , nazywane jest absolutną pozycją granulek , która jest syntetyczną wartością, która koduje znacznik czasu dekodowania, znacznik czasu prezentacji i odległość do pierwszego potrzebnego odniesienia. Dokładne kodowanie pozycji granulek zależy od określonego kodeka.

Kolejne 4 bajty to numer seryjny strumienia , do którego należy ta strona. Każdy strumień logiczny musi mieć unikalny numer seryjny w ramach strumienia fizycznego. Jest również przeznaczony do użycia jako słaby skrót, dzięki czemu kolizja jest bardzo mało prawdopodobna podczas multipleksowania różnych strumieni, co eliminuje potrzebę ciągłego ponownego obliczania nagłówków stron na każdym etapie multipleksowania.

Kolejne 4 bajty to numer kolejny strony w strumieniu. Jest to licznik stron, który umożliwia wykrywanie utraconych stron. W porównaniu z innymi formatami kontenerów, duża liczba bitów umożliwia również bezpośrednią emisję unicast / multicast UDP z Ogg obsługującym zmianę kolejności i ponowne składanie.

Następne 4 bajty, począwszy od 23 bajtu strony, to suma kontrolna CRC strony. Ponieważ wartość tego pola zmienia się, wynik sprawdzenia jest obliczany z tym polem równym zero.

Następnie 27-my bajt każdej strony określa liczbę segmentów, które zawiera, w zakresie od 0 do 255. Jest to również rozmiar poniższej tabeli segmentów w bajtach. Każdy bajt tablicy segmentów zawiera długość segmentu.

Każdy segment może mieć długość do 255 bajtów i jest ograniczony przez stronę. Segment mniejszy niż 255 bajtów oznacza koniec pakietu; następny segment rozpocznie nowy pakiet. Pakiet o długości będącej wielokrotnością 255 bajtów zakończy się segmentem o długości 0. Jeśli ostatni segment strony ma 255 bajtów, to ostatni pakiet jest kontynuowany na następnej stronie.

Edycja ze stronami

Jednym z typowych zastosowań stron Ogg jest umożliwienie edycji plików Ogg bez obniżania jakości lub konieczności transkodowania plików.

Dowolna seria stron w strumieniu może być poprzedzona stronami nagłówka strumienia (strony z bezwzględną pozycją granulek równą 0) i być prawidłowo dekodowana przez odtwarzacze multimedialne. Tej techniki można użyć do bezstratnego przycięcia pliku multimedialnego.

Wiele przyciętych segmentów można łączyć ze sobą w procesie zwanym łączeniem łańcuchowym , pod warunkiem, że numery seryjne tych segmentów zostaną zmodyfikowane do unikalnych numerów. Nowe treści można również wstawiać między tymi segmentami.

Linki zewnętrzne