Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Przejdź do zawartości

MPEG-1

Z Wikipedii, wolnej encyklopedii

MPEG-1 – standard kompresji dźwięku i ruchomych obrazów zaproponowany przez MPEG. Format wideo MPEG-1 używany jest na Video CD. Jakość obrazu przy zwykłej przepustowości VCD jest gorsza od tej znanej z nowych kaset VHS dobrej jakości. MPEG-1 Audio Layer 3 jest pełną nazwą popularnego formatu kompresji dźwięku, MP3.

MPEG-1 składa się z wielu "partii", kolejno:

  1. Synchronizacja oraz mieszanie wideo i audio.
  2. Kodek kompresji sygnałów wideo bez przeplotu.
  3. Kodek kompresji stratnej sygnałów audio. Standard definiuje trzy "warstwy", czy też poziomy złożoności kodowania audio MPEG.
    1. MP1 lub MPEG-1 Part 3 Layer 1 (MPEG-1 Audio Layer 1)
    2. MP2 lub MPEG-1 Part 3 Layer 2 (MPEG-1 Audio Layer 2)
    3. MP3 lub MPEG-1 Part 3 Layer 3 (MPEG-1 Audio Layer 3)
  4. Procedury dla testów zgodności.
  5. Oprogramowanie referencyjne.

Odniesienie: ISO/IEC JTC1/SC29/WG11 (czerwiec 1996)

Część 1: 'System'

[edytuj | edytuj kod]

Część 1 odnosi się do problemu łączenia jednego lub kilku strumieni danych audio i wideo standardu MPEG-1 do postaci jednego strumienia. Jest to ważna funkcja, ponieważ po połączeniu w jeden strumień danych o postaci cyfrowej, obraz lepiej nadaje się do przechowywania lub przesyłania.

Strumienie podstawowe (ES – elementary streams) to zakodowane strumienie bitów MPEG-1 audio i video. Te rodzaje strumieni mogą być osobno udostępniane, np. tak jak w przypadku MP3. Dodatkowo, podstawowe strumienie mogą być bardziej wydajne poprzez ich spakowanie, np. dzieląc je na niezależne kawałki i dodając do nich sumę kontrolną (cykliczny kod nadmiarowy, CRC – cyclic redundancy check), dla każdego segmentu do wykrywania błędów. Taką strukturę nazywa się strukturą PES (z ang. packetized elementary stream).

SCR (system clock reference) jest wartością czasową przechowywaną w 33-bitowych nagłówkach każdego z elementarnych strumieni, przy częstotliwości/dokładność 90 kHz, z dodatkowym 9 -bitowym rozszerzeniem, które przechowuje dodatkowe dane czasu z dokładnością do 27 MHz. Te zakodowane wartości, pochodzą z zegara systemowego (STC – system time clock). Jednocześnie zakodowane strumienie audio i video nie mają identycznych wartości SCR.

Strumienie programowe (PS – program streams) są związane z powiązaniem wielu pakietów strumieni elementarnych (zwykle tylko jeden elementarny pakiet strumieni audio i video) w jeden strumień, zapewniając jednoczesne dostarczanie, utrzymywanie i synchronizacje. Struktury PS znane są też jako multipleksy.

Czasowe znaczniki dekodowania (PTS – presentation time stamps) istnieją w PS do poprawienia nieuniknionych rozbieżności między wartościami audio i wideo SCR. Wartość 90 kHz PTS w nagłówku PS przekazuje dekoderowi, jakie wartości audio SCR odpowiadają wartościom video SCR. PTS określa, kiedy wyświetlić odpowiednią część programu, a także jest wykorzystywany przez dekoder do określenia, kiedy mogą być wyrzucone dane z bufora. Każda część wideo lub audio może być opóźniona w dekodowaniu aż do momentu, gdy odpowiadający jej segment będzie gotowy do dekodowania.

Dekodowanie znaczników czasowych (DTS – decoding time stamps) jest wymagane ze względu na klatki typu B (B-frames), które w strumieniach video, kodują i dekodują sąsiadujące klatki w innej kolejnością. DTS jest trochę podobny do PTS, ale zamiast obsługi kolejnych klatek, zawiera znaczniki czasu, które przekazują, kiedy dekodować lub odkodować i wyświetlić kolejne klatki typu B. Bez klatek typu B w filmie, PTS i DTS mają identyczne wartości.

Multipleksowanie. Do generowania strumieni programowych (PS), multiplekser przeplata (dwa lub więcej) pakiety elementarnych strumieni (ES). Dzieje się tak, gdy pakiety równoległych strumieni mogą być przekazane na tym samym kanale i mogą być zakodowane w dokładnie tym samym czasie.

Część 2: 'Video'

[edytuj | edytuj kod]

Część 2 określa kodowanie, które można wykorzystać do kompresji sekwencji wideo - zarówno 625 i 525 linii w strumień binarny prędkości. Początkowo część 2 została stworzona do pracy głównie z nośnikami oferującymi ciągły transfer do 1,5 Mbit / s. Niemniej jednak może ona być stosowana w szerszym zakresie.

MPEG-1 wykorzystuje znane metody kompresji wideo do zredukowania ilości danych wymaganych przez strumień wideo. W pewnym stopniu zmniejszane są lub całkowicie usuwane określone częstotliwości i obszary obrazu takie, których ludzkie oko w pełni nie dostrzega ze względu na naturalne ograniczenia. Wykorzystywane jest również czasowe oraz przestrzenne zredukowanie wspólnej części wideo do osiągnięcia lepszej kompresji danych, niż byłoby to możliwe w inny sposób.

Kompresja barwy:

Przed kodowaniem wideo MPEG-1, kolory zostają przekształcone na format Y'CbCr (Y '= Luma, Cb = Chroma Blue, Cr = Chroma Red). Luma (jasność, rozdzielczość) i chroma (kolor, barwa, faza) są przechowywane oddzielnie, a nawet podzielone na kolejne części (np. kolor na odcienie czerwone i niebieskie). Chroma jest również podzielona w skali 4 do 2 do 0, co oznacza, że jest zmniejszana o połowę w pionie i o połowę w poziomie, do zaledwie jednej czwartej rozdzielczość wideo.

Ludzkie oko jest bardziej wrażliwe na niewielkie zmiany w jasności niż kolorze, dlatego próbkowanie chromy jest bardzo skutecznym sposobem na zmniejszenie ilości danych wideo które muszą być skompresowane(nie potrzeba aż tyle danych koloru, żeby oko postrzegało tę samą jakość obrazu). Przy obrazie wideo z doskonałym odwzorowaniem szczegółów (o wysokiej złożoności przestrzennej) może objawiać się aliasowy artefakt barwy. W porównaniu do innych cyfrowych artefaktów kompresji, kwestia ta jest bardzo rzadkim źródłem irytacji. Y'CbCr jest często błędnie nazywane YUV, która to nazwa dotyczy tylko niektórych analogowych sygnałów wideo.

Przepustowość binarna i rozdzielczość:

MPEG-1 obsługuje rozdzielczość do 4095 × 4095 (12-bitów) i strumień binarny do 100 Mbit / s. Standard ten jest najczęściej używany w rozdzielczość: 352x240, 352x288, lub 320x240. Te niskie rozdzielczości, w połączeniu ze strumieniem bitów poniżej 1,5 Mbit / s, tworzą CPB (Constrained Parameters Bitstream), później przemianowana na "niski poziom" (LL – Low Level) w formacie MPEG-2. Są to minimalne wymogi, które powinien spełniać obraz wideo zgodny z formatem MPEG-1. Paramety te zostały wybrane jako kompromis między jakością nagrywanego video a kosztami urządzeń koniecznych do jego obsługi w ówczesnych czasach.

Typy klatek / typy bloków:

MPEG-1 ma kilka typów klatek, które służą do różnych celów. Najpowszechniejszymi i najprostszymi są klatki typu I (I-frames).

I-frames:

Klatki typu I mogą być dekodowane niezależnie od innych klatek i są zwane jako Intra-frames. Klatki typu I można uważać za identyczne z podstawą formatu zdjęć JPEG. Szybkie przeszukiwanie video MPEG-1 jest możliwe jedynie z dokładnością do najbliższej klatki typu I. Jeśli brać pod uwagę tylko kompresję klatki typu I są bardzo szybkie, jednak tworzą bardzo duże rozmiary plików, większe niż zwykle kodowany obraz wideo MPEG-1. Długości pomiędzy klatkami typu I znane są jako wielkość GOP (Group of pictures). MPEG-1 przeważnie używa GOP wielkości rzędu 15-18.

P-frames:

Nazwa p-frame jest skrótem od Predicted-frames. Klatki typu P nazywane są też między-klatkami (inter-frames). Klatki typu P pozwalają na poprawę kompresji poprzez wykorzystanie czasowego zwolnienia w wideo. Klatki te przechowują tylko różnice pomiędzy obrazem obecnym i korzeniem obrazem. Różnica między klatką typu p i jej korzeniem oblicza się za pomocą wektorów ruchu w każdym makrobloku klatki. Takie dane wektora ruchu są osadzone w klatce typu P do użytku przy dekodowaniu. Jeśli plik wideo drastycznie zmienia się z jednej klatki do drugiej (np. cięcie), to bardziej wydajne będzie zastosowanie kodowania poprzez klatkę typu I.

B-frames:

B-frame oznacza klatkę dwukierunkową (bidirectional-frame). Mogą być również znane jako obrazki typu B (B-pictures). Klatki typu B są bardzo podobne do klatek typu P, lecz mogą korzystać z dwóch klatek-korzeni. Konieczne jest zatem jako pierwsze zakodowanie następnego korzenia klatki typu I lub klatki typu P kolejno po klatce typu B, przed tym jak klatka typa B zostanie zakodowana i wyświetlona. Przez to klatki typu B wymagają złożonych obliczeń i długich buforów danych. Zwiększa to opóźnienia przy kodowaniu i dekodowaniu.

D-frames:

MPEG-1 posiada unikatowy typ klatki, która nie występuje w późniejszych standardach wideo. Nazywane również obrazkami DC (DC-pictures) są niezależne od zdjęcia (intra-frames), które zostały zakodowane tylko dla DC. Klatki typu D są bardzo niskiej jakości. Klatki typu D nigdy nie są zamienne z klatkami typu I, P, B. Ten typ klatek jest wykorzystywany jedynie do szybkiego podglądu wideo.

Makrobloki:

MPEG-1 operuje na obrazach video podzielonych na bloki 8x8. Jednak z powodu podziału koloru przez współczynnik 4, każda para (czerwony i niebieski) bloku koloru odpowiada czterem różnym blokom jasności. Ten zestaw 6 bloków, o rozdzielczości 16x16, nazywa się makroblokiem. Makroblok jest najmniejszą niezależną jednostką koloru wideo. Wektory ruchu działają wyłącznie na poziomie makrobloku.

Wektory ruchu:

Do zmniejszenia ilości zwolnień przestrzennych w nagraniu, tylko bloki, które się zmieniają są aktualizowane (do maksymalnej wielkości GOP). Jest to nazywane uzupełnieniem warunkowym. Jednak to nie jest same w sobie skuteczne. Ruch obiektów, i / lub ruch aparatu może doprowadzić do powstania dużej części klatek, które muszą być aktualizowane, nawet jeśli tylko pozycja wcześniej zakodowanego obiektu się zmieniła. Poprzez przewidywanie ruchu dekodowanie może wyłączyć ten ruch i usunąć dużą ilość niepotrzebnych informacji.

Kodowanie entropii:

Kilka kroków w kodowaniu video formatu MPEG-1 jest bezstratnych, co oznacza, że po odkodowaniu powrócą do tych samych wartości jak sprzed kodowania. Takie bezstratne kodowanie bez dodawania dźwięku nazywa się cichym kodowaniem. W teorii kodowanie entropii, zakłada usunięcie jak największej możliwości nadmiaru informacji przy kompresji bezstratnej.

RLE (Run-length encoding) jest bardzo prostą metodą kompresji powtórzeń. Sekwencyjny ciąg znaków, bez względu na długość, może być zastąpiony przez kilka bajtów, uwzględniając wartość, która się powtarza i ile razy się powtarza.

Informacja o wektorach ruchu i współczynnikach DCT jest kodowana kodem Huffmana. Wartości bardzo prawdopodobne są reprezentowane przez krótsze ciągi zer i jedynek, a mało prawdopodobne - przez dłuższe ciągi. Najpierw następuje odtworzenie informacji zero-jedynkowej przy pomocy dekodowania Huffmana. Uzyskuje się dwa rodzaje klatek: kluczowe — zawierające pełne obrazy oraz predykcyjne, zawierające różnice między skompensowanymi ruchowo klatkami kluczowymi i oryginalnymi w filmie. Następnie strumienie bitów z klatek predykcyjnych są podawane odwrotnej transformacji kosinusowej celem odtworzenia przybliżonych obrazów, będących wynikiem poprzesuwania bloków z klatki odniesienia zgodnie z wektorami ruchu. Następnie obrazy te są dodawane do klatek odniesienia (również odtworzonych za pomocą odwrotnej transformacji kosinusowej), dzięki czemu odtworzone zostają pozostałe klatki filmu.

Część 3: 'Audio'

[edytuj | edytuj kod]

Część 3 standardu MPEG-1 wykorzystuje psychoakustyki by istotnie zmniejszyć prędkość transmisji danych wymaganych przez strumień audio. Standard ten zmniejsza lub całkowicie usuwa niektóre części audio, których ludzkie ucho nie słyszy, ponieważ są poza częstotliwością słyszenia ludzkiego ucha.

Kodowanie kanału:

  • Mono
  • Joint Stereo
  • audio/mpeg, video/mpeg
  • Podwójne (dwa skorelowane kanały mono)
  • Próbkowanie : 32000, 44100 i 48000 Hz
  • Strumień bitów : 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 i 384 kbit / s

Audio MPEG-1 jest podzielony na 3 warstwy. Każda wyższa warstwa jest bardziej złożona obliczeniowo, i ogólnie bardziej skuteczna w niższych strumieniach bitów niż poprzednie. Warstwy wyższe są częściowo kompatybilne z warstwą niższą.

Warstwa I (Layer I)

Warstwa pierwsza standardu MPEG-1 to po prostu uproszczona warstwa II. Warstwa I używa mniejszego rozmiaru klatki dla bardzo małych opóźnień i lepszej rozdzielczości. Jest to korzystne dla aplikacji takich jak np. telekonferencje. W roku 1990 warstwa I miała mniejszą złożoność do zakodowania sygnału niż Warstwa II.

Warstwa II (Layer II)

MPEG-1 warstwa II (MP2, często błędnie nazywana Musicam) to stratny format audio przeznaczony do zapewnienia wysokiej jakości na przepustowości około 192 kbit / s dla dźwięku stereo. Dekodowanie dźwięku MP2 jest proste obliczeniowo, w stosunku do MP3, AAC, itp. Subiektywne badania audio wykonane przez ekspertów wykazały, że w najbardziej krytycznych warunkach MP2 oferuje przejrzystą kompresję audio ld 256 kbit/s dla 16 bit 44.1 kHz audio CD.

Warstwa III (Layer III)

MPEG-1 warstwa III(MP3) to stratny format audio zaprojektowany w celu zapewnienia odpowiedniej jakości dla przepustowości ok. 64 kbit/s dla ścieżek audio na pojedynczym kanale o 128 kbit /s dla dźwięku stereo. MP3 korzysta z niektórych funkcji niższej warstwy, lecz znacznie się od niej różni.

Warstwa ta pracuje na 1152 próbkach warstwy niższej, ale potrzebuje przeanalizować więcej klatek przed procesem efektywnego podzielenia. Jakość 3 warstwy może być gorsza od jakości niższej warstwy przy wysokich strumieniach bitów. Ogólnie jakość MP3 uważana jest za średnio dobrą jakość.

Część 4: 'Testy zgodności'

[edytuj | edytuj kod]

Część 4 ma na celu sprawdzenie, czy strumienie bitowe dekoderów spełniają wymogi określone w części 1, 2 i 3 standardu MPEG-1. Odbywa się to za pomocą testów. Testy te mogą być wykorzystywane przez:

  • producentów koderów i ich klientów, w celu sprawdzenia, czy koder produkuje poprawny strumień bitów.
  • producentów dekoderów i ich klientów do sprawdzenia, czy dekoder spełnia wymogi określone w części 1,2 i 3 standardu MPEG-1
  • producentów aplikacji w celu sprawdzenia, czy cechy danego strumienia bitów spełniają wymagania aplikacji, na przykład, czy rozmiar kodowanego obrazu nie przekracza maksymalnej wartości dopuszczalnej standardu MPEG-1.

Część 5: 'Oprogramowanie referencyjne'

[edytuj | edytuj kod]

Część 5 nie jest standardem, a sprawozdaniem technicznym, jest to pełna implementacja oprogramowania trzech pierwszych części standardu MPEG-1. Kod źródłowy nie jest publicznie dostępny.

Zobacz też

[edytuj | edytuj kod]