[theora-dev] Support for layers and alpha channel?

Dennis Pennekamp denniskamp at users.sourceforge.net
Wed Mar 24 03:25:32 PST 2004

First of all congratulations on reaching alpha status.

I was wondering if you people are implementing multiple layer support 
into the codec. I don't know if it should be in the container (ogg) or 
codec (theora) but perhaps the syncing requires at least support in the 

For example a commercial: a cup of hot chocolate with steam escaping. 
Little action, low bandwidth. Then comes the rendered animated text 
across 'Hot chocolate'. Now the animation interferes with the static 
logo on the cup, complex patterns occur and bandwidth use shoots up.

Why? The text animation was an alpha channel put on top and might by 
itself even be lower bandwidth then the cup video. Perhaps if the two 
video's would remain alpha channel separated the total bandwidth would 
be lower.

Some more examples:

'Sorry, we're closed'
'Sorry, we zijn gesloten'
As a conversation goes on the director of a movie ups the suspense by 
letting the viewer read a card, a letter, or a report. While the 
subtitles are busy translating the conversation the on-screen text is 
lost in translation or reduced to a oneliner to fit in, even if done 
well it kind of breaks concentration as you must choose what to read. 
Would it not be cool to have the possibility to overlay the text of a 
scene with a localized version of the text. Using an alpha channel 
gives low bandwidth, expressive freedom and streaming choice. Yes, the 
stream could name the available language overlay channels and the 
streaming client could say no, I don't need that part of the stream. 
The overlay track could be called a translation overlay coded 'nl NL' 
and 'nl BE' meaning Dutch translation suited for the Netherlands and 

Some people prefer to have the broadcast logo removed because of 
personal preference, because you have a licence to rebroadcast with 
your own logo, or because it interferes with subtitles. This may leave 
a smudge in the corner and some people may prefer to just see the logo 
instead, so the smudge could be on an alpha cannel and the viewer can 
decide to use it or not. A removed logo layer. It could also be a 
fixing layer, like the removal of the huge JVC logo in Highlander 
Endgame Special Edition. If good timecoding is available users could 
even share small overlay movies that fix visual bugs in already bought 

Underneath It All
Remember the No Doubt video where the singer straddles and orgasms and 
blinks of screen (to that happy place:-) to quickly return back on 
screen? Perhaps it would easier for the codec if she would be on a 
layer that simply jumps behind the background layer. Perhaps even more 
so if the motion in that layer can be frozen in time and continue when 
it is brought back to the front.

Also think about rougher videos where the drumsolo makes two different 
videos interweave like a flashlight, demanding complete screen redraws 
during the entire scene. Would it not be more efficient if you have two 
video streams where the player is instructed to franticly hustle them 
back to front with a simple rearrangement of the layer stack? Maybe, 
but definitely yes if the background video layer can be frozen in time.

If you allow continued play of background layers you could have 
integrated parallel video's. A guitar player sits by the camp fire 
singing his song about life, which comes to life in MTV style action 
sequences. Cool for an MTV broadcast but what if I want the video as 
live background picture on my plasma 'painting' on the wall when 
receiving visitors, I've only got so many MTV-live DVDs. Well if the 
layer of just the singer by the campfire would continue in the 
background and the composition would be named 'Default - Action' and 
'Romantic' I would have a great live painting on the wall by choosing 

We can all remember video's with scene reuse, well maybe not if you 
don't like electronic music. Would it not be efficient to let the 
composition track (sort of like a midi track) know that a scene will be 
reused and when a scene is the same as a previous scene. OK, you are 
making a streaming codec, but wait what if the scenes are so well 
documented in the stream that even though the stream itself is 
continuous and can be picked up at many intervals, the player can say 
'if you want, you can skip the upcoming scene (video layer) because I 
already have it cached and verified as complete' to streaming server. 
On the other hand the stored movie as a whole is smaller, while the 
streaming server knows to send duplicate scenes always by default as 
the client may have had trouble receiving the first time or maybe has 
just tuned in.

Different cultures have different censorship preferences, American 
bible belt prefers not to see female breasts, Dutch start frowning at 
genitals and Japanese at pubic hair. Let's just say that MTV Europe is 
a strange mix of (un)censorship depending on from who they got a video 
and what the target market was. Khia loses lip sync because someone 
decided to put the uncensored lyrics under the USA videoclip. Why not 
have it all and let the player decide what to play. Multiple layers for 
censored and uncensored scenes, bandwidth saved by a composition track 
which tells what scenes / layers to show and what can be used in all 
movies displayed. Standardized naming of compositions so that a player 
can be set to not play obscenities or sound effects today.

Also alpha channel is cool by itself, imagine a loop of a butterfly 
flapping on the background of a website, no you grab the movie from 
Konqueror and drag it into a dir, while it keeps flapping! Can you 
resist taking it for a spin around the screen, of course not, it's 
cooler then quicktime movies that continue playing in the Mac OS X dock.

<p>So you are creating an open source alternative, great, my point is that 
an alternative becomes a lot more viable if it not only it has feature 
parity with better license structure but also has compelling new 
features. Which brings me to overscanning, wait this mail is just too 
big I'll send another one.

So what do you think? Am I a madman or do I have some good idea's. :-)
Idea's only BTW I can't code.

Dennis SCP

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'theora-dev-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.

More information about the Theora-dev mailing list