New Subtitles standard from Frank Klemm

Christian HJ Wiesner <[email protected]> Sat, 11 Oct 2003 11:28:23 +0200
Newsgroups gmane.comp.multimedia.matroska.devel,gmane.comp.multimedia.usf.devel
Message-ID <[email protected]>
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 =DCberlagerung von Ebenen.

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

Je h=F6her die Ebenennummer, um so h=F6her die Priorit=E4t bei der =DCber=
lagerung.

Ebene 0 ist typischerweise eine schwarze Fl=E4che.
Ebene 1 ist typsicherweise der eigentliche Film.
Ebene 2 bis 255 k=F6nnen f=FCr Untertitel benutzt werden.

Bereiche au=DFerhalb eines Bildes sind immer transparent.
Innerhalb des Bildes h=E4ngt es vom Bildformat und vom Bild ab.
Sinnvollerweise sind f=FCr Untertitel Bildformate und Bilder zu nutzen, d=
ie
Transparenz benutzen.

Beispiel:

Bildschirmgr=F6=DFe:   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=DF). Auf Layer 2 und gr=F6=DFer liegen z.B. Untertitel. Entwed=
er man
beschr=E4nkt sich auf den schwarzen Streifen unten oder man mu=DF f=FCr U=
ntertitel
ein Format benutzen, was Transparenz erlaubt.

Ein Bild bleibt so lange stehen, bis es gel=F6scht wird (im einfachsten F=
all
durch =DCberschreiben mit einem weiteren Bild der Gr=F6=DFe 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.=20
wechselseitig auf zwei Layer schreibt.


	klwjlkfhoqwiedkl
	wqelfkplwqkfklwl   <--- Film
	wpqfkdqwkfpflwqe

        Ich liebe Dich!




	klwjlkfhoqwiedkl
	wqelfkplwqkfklwl   <--- Film
	wpqfkdqwkfpflwqe

        Ich liebe Dich!
        (Sirenengeheul)



	klwjlkfhoqwiedkl
	wqelfkplwqkfklwl   <--- Film
	wpqfkdqwkfpflwqe

       =20
        (Sirenengeheul)




	klwjlkfhoqwiedkl
	wqelfkplwqkfklwl   <--- Film
	wpqfkdqwkfpflwqe

       =20
   (Sirenengeheul wird lauter)



	klwjlkfhoqwiedkl
	wqelfkplwqkfklwl   <--- Film
	wpqfkdqwkfpflwqe

     ...la=DF uns verschwinden       =20
   (Sirenengeheul wird lauter)




F=FCr jeden Layer kann man technisch gesehen beliebige Formate
benutzen:

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

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

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

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

 - Bildformate, die keine Transparenz unterst=FCtzen.
   Hier ist die Konstruktion eines Transparenzkanals =E4hnlich wie bei "M=
PEG-1,
   2, 4 als Transparenzmaps" m=F6glich

 - Bildformate, die von Natur aus Transparenz unterst=FCtzen
   Das ist nat=FCrlich die eleganteste L=F6sung. Hiermut sind farbige Sch=
riften
   und Antialising der Schrift m=F6glich.

 - Text: Besonders f=FCr Bild=FCbertragungen mit geringen Bitraten, aber =
auch
   f=FCr reine Audiosignale mit Songtexten sollte es m=F6glich sein, nich=
t
   gerenderte Untertitel zu verwenden. Die Untertitel sollten dann nur no=
ch:
     - Text (Unicode)
     - Farbe (12 bit)
     - Font (max. 4 Fonts sind zu definieren)
     - Gr=F6=DFe
     - Position
   enthalten. Mit 300 bps erh=E4lt man so sinnvolle Untertitel.

BTW ist PNG vergleichsweise einfach zu dekodieren. Das die meisten
Anzeigeprogramme auf Tr=E4gheit optimiert sind, t=E4uscht viele dar=FCber=
 hinweg,
das MPEGs wesentlich aufwendiger zu dekodieren sind.

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D

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=DF=
e
Pixel f=FCr die Layer zulassen will. Bild hat z.B. 352 x 288er Aufl=F6sun=
g,
Untertitel, damit nicht so pixelig, haben 720 x 576 Pixel.

-- Frank Klemm