[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...
Hi,
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:
http://freecraft.sourceforge.net/snapshots/myvp3.tar.gz
My final player is only in CVS:
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/freecraft/freecraft/src/movie/
This is my copy routine: (overlay is a SDL overlay surface)
SDL_LockYUVOverlay(overlay);
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,
yuv.YWidth);
}
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,
yuv.UVWidth);
memcpy(overlay->pixels[2] + i * overlay->pitches[2],
yuv.UBuffer + (yuv.UVHeight - i - 1) * yuv.UVStride,
yuv.UVWidth);
}
SDL_UnlockYUVOverlay(overlay);
Hope this help,
Johns
--
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