# MPEG-4

MPEG-4 ist ein MPEG-Standard (ISO/IEC-14496), der unter anderem Verfahren zur Video- und Audiodatenkompression beschreibt. Ursprünglich war das Ziel von MPEG-4, Systeme mit geringen Ressourcen oder schmalen Bandbreiten (Mobiltelefon, Video-Telefon, …) bei relativ geringen Qualitätseinbußen zu unterstützen. Da H.263, ein Standard der ITU zur Videodekodierung und -kompression, jene Voraussetzungen bereits zufriedenstellend verwirklicht hatte, wurde er ohne größere Änderungen als Teil 2 in MPEG-4 integriert.
Bis Mitte 2019 sind fast alle Patente zum Teil 2 ausgelaufen, so dass dieser darauf beliebig lizenzfrei genutzt werden konnte. In Deutschland sind keine Patente mehr gültig. Es laufen im Herbst 2022 nur noch 6 Patente in Brasilien und den USA. Das letzte amerikanische Patent hier lief Ende 2023 aus.
Zusätzlich zur Videodekodierung wurden auch noch einige Audiostandards, wie das bereits in MPEG-2 standardisierte Advanced Audio Coding (AAC) sowie die Unterstützung für Digitale Rechteverwaltung, die unter der englischen Bezeichnung Intellectual Property Management and Protection (IPMP) läuft, in den Standard aufgenommen.
Das offizielle Containerformat von MPEG-4 ist MP4.

## MPEG-4-Teile

MPEG-4 besteht aus mehreren Standards, die Teile (englisch parts) genannt werden, einschließlich der folgenden:
* Teil 1 (ISO/IEC 14496-1): Systems
* Teil 2 (ISO/IEC 14496-2): Visual. Hierzu zählen die bekannten MPEG-4-Codecs DivX und Xvid. Eines der vielen Profile in Teil 2 ist das Advanced Simple Profile (ASP).
* Teil 3 (ISO/IEC 14496-3): Audio. Enthält die Beschreibungen von Advanced Audio Coding (einschließlich HE-AAC), Audio Lossless Coding, Scalable to Lossless, Direct Stream Transfer, CELP, HVXC und TwinVQ.
* Teil 4 (ISO/IEC 14496-4): Conformance
* Teil 5 (ISO/IEC 14496-5): Reference Software
* Teil 6 (ISO/IEC 14496-6): Delivery Multimedia Integration Framework (DMIF).
* Teil 7 (ISO/IEC 14496-7): Optimized Reference Software
* Teil 8 (ISO/IEC 14496-8): Carriage on IP networks
* Teil 9 (ISO/IEC 14496-9): Reference Hardware
* Teil 10 (ISO/IEC 14496-10): Advanced Video Coding (AVC). Ein Codec für Videosignale, der technisch identisch mit dem H.264-Standard der ITU-T ist.
* Teil 11 (ISO/IEC 14496-11): Scene description (BIFS) and Application engine (MPEG-J)
* Teil 12 (ISO/IEC 14496-12): ISO Base Media File Format. Enthält die Beschreibung des Quicktime Containerformats.
* Teil 13 (ISO/IEC 14496-13): Intellectual Property Management and Protection (IPMP) Extensions
* Teil 14 (ISO/IEC 14496-14): MPEG-4 File Format (MP4). Containerformat für MPEG-4-Inhalt, basierend auf Teil 12.
* Teil 15 (ISO/IEC 14496-15): AVC File Format. Containerformat für Teil-10-Videos, basierend auf Teil 12
* Teil 16 (ISO/IEC 14496-16): Animation Framework eXtension (AFX)
* Teil 17 (ISO/IEC 14496-17): Timed Text subtitle format
* Teil 18 (ISO/IEC 14496-18): Font Compression and Streaming (for OpenType fonts)
* Teil 19 (ISO/IEC 14496-19): Synthesized Texture Stream
* Teil 20 (ISO/IEC 14496-20): Lightweight Scene Representation (LASeR)
* Teil 21 (ISO/IEC 14496-21): MPEG-J Graphical Framework eXtension (GFX)
* Teil 22 (ISO/IEC 14496-22): Open Font Format Specification (OFFS), basierend auf OpenType
* Teil 23 (ISO/IEC 14496-23): Symbolic Music Representation (SMR)
* Teil 24 (ISO/IEC 14496-24): Audio and systems interaction
* Teil 25 (ISO/IEC 14496-25): 3D Graphics Compression Model
* Teil 26 (ISO/IEC 14496-26): Audio Conformance (noch nicht fertig)
* Teil 27 (ISO/IEC 14496-27): 3D Graphics Conformance (noch nicht fertig)
* Teil 28 (ISO/IEC 14496-28): Composite Font (noch nicht fertig)
* Teil 29 (ISO/IEC 14496-29): Web Video Coding (noch nicht fertig)
* Teil 30 (ISO/IEC 14496-30): Timed text (and Other Visual Overlays) and associated images in ISO Base Media File Format (noch nicht fertig)
* Teil 31 (ISO/IEC 14496-31): Video Coding for Browsers (noch nicht fertig)
(Stand Juli 2014).
Profile werden auch innerhalb der Teile definiert, weshalb die Implementierung eines Teils gewöhnlich keine Implementierung des ganzen Teils ist.

## Videodekodierung

Für das Advanced Simple Profile (ASP) kann der Dekoder-Teil für die globale Bewegungskompensation einfach weggelassen werden.

### Variable Längendekodierung

Die variable Längendekodierung (VLC) basiert auf dem Verfahren nach Huffman zur Redundanzreduktion. Die Codewörter werden mit Hilfe von Tabellen, sogenannten „look-up-tables“, dekodiert.

### Inverses Abtasten

Aus der variablen Längendekodierung erhält man ein eindimensionales Datenfeld QFS[n] mit Werten von 0 bis 63 für n. Diese Ausgabe wird an dieser Stelle in ein zweidimensionales Datenfeld konvertiert mit dem Bezeichner aus dem Blockschaltbild oben PQF[v][u], wobei v und u Werte von 0 bis 7 annehmen. In der folgenden Abbildung sind die drei definierten Muster zur Abtastung dargestellt.

### Inverse DC- und AC-Prädiktion

Diese anpassungsfähige Auswahl von DC- und AC-Prädiktionsrichtungen basiert auf einem Vergleich der horizontalen und vertikalen DC-Gradienten um den zu dekodierenden Block herum.

### Inverse Quantisierung

Der Quantisierungsprozess an sich ist reversibel und somit ein redundanzreduzierendes Verfahren. Allerdings stehen bei der Rekonstruktion der DCT-Koeffizienten eine beschränkte Anzahl von diskreten Werten zur Verfügung. Somit ist die inverse Quantisierung verlustbehaftet. Die beiden Vorteile des Quantisierungsprozesses sind:
* Für den Betrachter signifikante Koeffizienten, also jene, die maßgeblich zum Qualitätserhalt des Bildes beitragen, bleiben trotz geringfügiger Abweichung erhalten. Nicht signifikante Koeffizienten werden gestrichen. Typischerweise resultiert dies darin, dass der überwiegende Anteil der 64 Koeffizienten in der 8×8-Matrix nach der inversen Quantisierung null ist.
* Eine dünn besetzte Matrix mit einer beschränkten Anzahl von diskreten Werten kann effizient komprimiert werden.

### Inverse Diskrete Kosinustransformation

Die Inverse Diskrete Kosinustransformation (IDCT) ist ein Verfahren zur Irrelevanzreduktion.

## Bekannte Codec-Implementierungen (MPEG-4-Codecs)
### Video

    DivX
    Xvid
    HDX4
    3ivx
    FFmpeg enthält einen nativen MPEG-4 ASP Video Encoder und Decoder sowie einen H.264 Decoder
    x264 Open-Source-Encoder für H.264
    Nero Digital Video (ASP, H.264)
    Apple QuickTime (MPEG-4 Video, H.263, H.264)

### Audio

    Psytel AAC, der Vorgänger von Nero AAC
    FAAC, ein AAC Encoder und FAAD2, ein Open Source Decoder
    FFmpeg unterstützt das Decoden und – experimentell – das Encoden von AAC und enthält einen ALS Decoder

### Systems (BIFS)

    GPAC Project on Advanced Content, BIFS-Player, -Encoder sowie Authoring-Werkzeuge für interaktive MPEG-4-Inhalte

## Transport

Der Transport wird in MPEG-4-„Delivery Multimedia Integration Framework“ genannt. Die Funktion besteht darin, die eigentliche Quelle der multimedialen Datenströme zu verbergen, so dass der Player auf dem Terminal (evtl. PC) unabhängig von dem Transportnetz ist. Als mögliche Szenarien sind standardisiert:
* lokal (beispielsweise auf der lokalen Festplatte)
* remote-interactive (Client-Server-Anwendung, wie Video On Demand)
* broadcast (unidirektionaler Empfang von Datenströmen).
Für den lokalen Fall ist das Dateiformat als „ISO Base Media File Format“ in MPEG-4 Teil 12 standardisiert. Das Unternehmen Apple stellte 1998 den ersten Quellcode zur Verfügung. Auf diesem wurde das MP4-Dateiformat im Teil 14 des Standards aufgebaut und entwickelt.

## Referenz-Software

* Implementation Modell 1 (IM1)
* IM1 – 2D