[Matroska-devel] New Subtitles standard from Frank Klemm

Christian HJ Wiesner chris at matroska.org
Sat Oct 11 11:28:23 CEST 2003


Message from Frank about Subtitles ( a new standard ) :

Generische Methode, mit der man unter anderem Untertitel generieren kann.

Das, was angezeigt wird, entsteht durch die Überlagerung von Ebenen.

Von diesen Ebenen gibt es z.B. 256 Stück (oder eine flexible Anzahl).

Je höher die Ebenennummer, um so höher die Priorität bei der Überlagerung.

Ebene 0 ist typischerweise eine schwarze Fläche.
Ebene 1 ist typsicherweise der eigentliche Film.
Ebene 2 bis 255 können für Untertitel benutzt werden.

Bereiche außerhalb eines Bildes sind immer transparent.
Innerhalb des Bildes hängt es vom Bildformat und vom Bild ab.
Sinnvollerweise sind für Untertitel Bildformate und Bilder zu nutzen, die
Transparenz benutzen.

Beispiel:

Bildschirmgröße:   1920 x 1080 Pixel
Format des Filmes: 1920 x  816 Pixel  MPEG-4
Untertitel:   max. 1920 x  132 Pixel  Bildformat, das Transparenz und 15 Farben definiert

Der schwarze Hintergrund braucht nicht explizit definiert zu werden. Er
liegt hinter allen Bildern. Er liegt in Layerebene 0 und ist schwarz.

Typischerweise auf Layer 1 liegt der Spielfilm. Er ist nur 1920 x 816 (AR:
1:2.35 groß). Auf Layer 2 und größer liegen z.B. Untertitel. Entweder man
beschränkt sich auf den schwarzen Streifen unten oder man muß für Untertitel
ein Format benutzen, was Transparenz erlaubt.

Ein Bild bleibt so lange stehen, bis es gelöscht wird (im einfachsten Fall
durch Überschreiben mit einem weiteren Bild der Größe 0 x 0 Pixel).
Mit Untertitteln in zwei Layern (z.B. 2 und 3) kann man damit z.B.
bitrateneffektiv immer "alte" Teile stehen lassen, in dem man z.B. 
wechselseitig auf zwei Layer schreibt.


	klwjlkfhoqwiedkl
	wqelfkplwqkfklwl   <--- Film
	wpqfkdqwkfpflwqe

        Ich liebe Dich!




	klwjlkfhoqwiedkl
	wqelfkplwqkfklwl   <--- Film
	wpqfkdqwkfpflwqe

        Ich liebe Dich!
        (Sirenengeheul)



	klwjlkfhoqwiedkl
	wqelfkplwqkfklwl   <--- Film
	wpqfkdqwkfpflwqe

        
        (Sirenengeheul)




	klwjlkfhoqwiedkl
	wqelfkplwqkfklwl   <--- Film
	wpqfkdqwkfpflwqe

        
   (Sirenengeheul wird lauter)



	klwjlkfhoqwiedkl
	wqelfkplwqkfklwl   <--- Film
	wpqfkdqwkfpflwqe

     ...laß uns verschwinden        
   (Sirenengeheul wird lauter)




Für jeden Layer kann man technisch gesehen beliebige Formate
benutzen:

 - M-JPEG, MPEG-1, 2, 4 als Bild			
	R = R(Bild)
	G = G(Bild)
	B = B(Bild)

 - M-JPEG, MPEG-1, 2, 4 als Transparenzmaps		

        T = a + b * R(Bild) + c * G(Bild) + d * B(Bild)		a, b, c, d sind neben dem Bild zu kodieren
        if ( T < 0 ) T = 0
        if ( T > 1 ) T = 1				Transparenz ist zwischen 0 und 1
	R = R(Hiltergrund) * (1 - T) + R(Bild) * T
	G = G(Hiltergrund) * (1 - T) + G(Bild) * T
	B = B(Hiltergrund) * (1 - T) + B(Bild) * T

   Hinter einem schwarzen Hintergrund ergibt bei a=1, b,c,d>=0 ein "MPEG-1,
   2, 4 als Transparenzmaps" genau das gleiche Bild wie ein normales Bild.

 - Bildformate, die keine Transparenz unterstützen.
   Hier ist die Konstruktion eines Transparenzkanals ähnlich wie bei "MPEG-1,
   2, 4 als Transparenzmaps" möglich

 - Bildformate, die von Natur aus Transparenz unterstützen
   Das ist natürlich die eleganteste Lösung. Hiermut sind farbige Schriften
   und Antialising der Schrift möglich.

 - Text: Besonders für Bildübertragungen mit geringen Bitraten, aber auch
   für reine Audiosignale mit Songtexten sollte es möglich sein, nicht
   gerenderte Untertitel zu verwenden. Die Untertitel sollten dann nur noch:
     - Text (Unicode)
     - Farbe (12 bit)
     - Font (max. 4 Fonts sind zu definieren)
     - Größe
     - Position
   enthalten. Mit 300 bps erhält man so sinnvolle Untertitel.

BTW ist PNG vergleichsweise einfach zu dekodieren. Das die meisten
Anzeigeprogramme auf Trägheit optimiert sind, täuscht viele darüber hinweg,
das MPEGs wesentlich aufwendiger zu dekodieren sind.

==================================================================================

Beispiele:

Untertitel mit morphenden Buchstaben:  	MPEG-1, 2, 4 als Transparenzmaps
Bewegende Untertitel:                  	MPEG-1, 2, 4 als Transparenzmaps
Normale S/W Untertitel:		       	1-bit PNGs
Normale S/W Untertitel mit Antialiasing:2-bit PNGs


Probleme:

Richtig problematisch werden solche Dinge erst, wenn man verschieden große
Pixel für die Layer zulassen will. Bild hat z.B. 352 x 288er Auflösung,
Untertitel, damit nicht so pixelig, haben 720 x 576 Pixel.

-- Frank Klemm






More information about the Matroska-devel mailing list