[theora-dev] Cross-Compiling VP3 lib on Linux

Lutz Sammer johns98 at web.de
Mon Aug 5 12:16:35 PDT 2002

On Monday 05 August 2002 16:54, Mike Melanson wrote:
> Hi,
> 	I have been working with VP3 for some time now. Dan Miller from
> On2 just told me about this list.
> 	A few months ago, I managed to get On2's VP3 source snapshot to
> compile under Linux, a feat that many have apparently attempted and
> quickly abandoned. I compiled a small console app and the results of the
> experiment are explained here:
>   http://www.geocrawler.com/archives/3/22001/2002/5/0/8664041/
> 	Last night, I finally took that same experiment and formed a xine
> video decoder plugin from it. (Aside: xine is a multimedia player for
> Linux that I help develop: http://xine.sf.net) The plugin appeared to work
> all right in that it did not crash. The picture is a bit scrambled. It
> looks like too many pixels (or not enough pixels) are being copied from
> the source planes.
> 	I'm using the ThisFrameRecon YUV buffer pointer member of the PBI
> struct as the final display frame. I'm using the [Y|U|V]DataOffset members
> in order to index into the buffer. Is that the right thing to do?
> 	Thanks...


I have made a SDL player (only video). It compiles fine under linux.
The FreeCraft CVS contains an avi player (VP3 video + OGG audio) which 
compiles fine on all SDL/FreeCraft platforms (Linux/Windows/Mac OS X/...).

It is based on the generic video routines (no assembler and other things).

The SDL player source can be found here:
My final player is only in CVS:

This is my copy routine: (overlay is a SDL overlay surface)
        GetYUVConfig(pbi, &yuv);
        for (i = 0; i < yuv.YHeight; ++i) {     // copy Y
            memcpy(overlay->pixels[0] + i * overlay->pitches[0],
                yuv.YBuffer + (yuv.YHeight - i - 1) * yuv.YStride, 
        for (i = 0; i < yuv.UVHeight; ++i) {    // copy UV
            memcpy(overlay->pixels[1] + i * overlay->pitches[1],
                yuv.VBuffer + (yuv.UVHeight - i - 1) * yuv.UVStride,
            memcpy(overlay->pixels[2] + i * overlay->pitches[2],
                yuv.UBuffer + (yuv.UVHeight - i - 1) * yuv.UVStride,

Hope this help,

Become famous, earn no money, create music or graphics for FreeCraft RTS
http://FreeCraft.Org  -  FreeCraft a free real-time strategy game engine

<p>--- >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