Libtheora playback library

BlitzMax Forums/BlitzMax Programming/Libtheora playback library

Russell(Posted 2011) [#1]
Greetings, everyone!

I came across this C++ video playback library on sourceforge that, among many things, fully supports audio and video playback of theora files (with a/v synch) in a generic sort of way (The frames are decompressed and you send them to your own device {sdl, directx, opengl, etc}). This should make the library compatible with just about any platform.

Anyone want to take a crack at making it into a module? (C++ is beyond me, but the example code looks very straightforward). Here's the page, if anyone here wants to have a look-see:

http://sourceforge.net/projects/libtheoraplayer/

Here's a snippet on how to load a video and get a frame:
// Initialize the library
TheoraVideoManager *mgr=new TheoraVideoManager();

// Load a video
TheoraVideoClip *clip=mgr->createVideoClip("path/to/video/file.ogg");

// Grab a frame
TheoraVideoFrame *frame=clip->getNextFrame();
if (frame)
{
    // transfer the frame pixels to your display device, texture, graphical context or whatever you use.
    clip->popFrame(); // be sure to pop the frame from the frame queue when you're done
}

// When you're done, delete the object
delete mgr;

I'll bet a lot of people would find this extremely useful!

I know PantsOn did one (and I have it), but it doesn't do sound :(

Anyone interested?
Russell


xlsior(Posted 2011) [#2]
Does sound interesting...

Maybe Brucey is bored?


Russell(Posted 2011) [#3]
I wonder if I should post this in Brucey's section, or if that would be too forward of me? Brucey has already done so much for the Blitz community, I almost hate to ask him.

Oh, and because the code library is generic, it would be cross-platform, too!

Russell


Kryzon(Posted 2011) [#4]
Maybe it'd be easier to add sound to the already existing module? I mean, following the glue code's logic and format.

I don't have time right now, but please share the link to this module so we can give it a look :)

Last edited 2011


xlsior(Posted 2011) [#5]
I don't have time right now, but please share the link to this module so we can give it a look :)


The pantson theora module can be found here: http://www.pantson.com/mods/

Last edited 2011


Russell(Posted 2011) [#6]
Keeping the sound and video in synch can be tricky (In fact, I know of several full-blown video players that screw this up from time to time...).

Anyway, I think the PantsOn ogg mod is at least a few years old, so it would be nice to have an ogg player based on the latest library AND have sound with synch to boot!

I know a lot of people here have migrated to Monkey, but Bmax still has many years left in her for desktop applications & games, so this would still be highly useful and valuable!

Would any of the top BlitzMax coders here be willing to have a look at the libtheora playback library (SDK) on sourceforge and create a module?

Full cross-platform video playback with sound would be extremely useful! (And there are several convert programs out there that can convert from various formats to theora - such as ffmpeg2theora - if you're source video is in another format)

Imagine your own:
- Intros!
- OutTros!
- Cut scenes!
- In-game animations!

Russell


AdamRedwoods(Posted 2011) [#7]
What, Quicktime not good enough??
http://www.blitzbasic.com/Community/posts.php?topic=89883


xlsior(Posted 2011) [#8]
What, Quicktime not good enough??


While nice that it's available, it's definitely inconvenient that it requires to you register with Apple to be able to download the SDK first, and modify MinGW files in order to use it.

Anoter advantage of Theora is that it's an open standard, unlike quicktime.


Russell(Posted 2011) [#9]
Plus, I find Quicktime files to be really HUGE, as compared to theora.

Not sure how well Quicktime is supported on Linux... Theora is an excellent cross-platform solution.

Russell


SLotman(Posted 2011) [#10]
Quicktime is awful. Everytime I see a .mov, I don't even bother to watch it.

As for this, it would be great... but that lib posted seems to be compiled with VS9 - which could mean .NET dependencies, so also very big, and probably no portability. (I'm probably completely wrong in this, last Visual Studio I used was 6...)


Russell(Posted 2011) [#11]
Actually, I believe this theora lib is written in an abstract sort of way and has no external dependencies once compiled (If I understand the website, anyway). All of the code necessary to decompress theora files is included in the library and can be statically or dynamically linked to your programs, including commercial ones!

The linked website says:

Description

A C++ library that plays theora files, supporting all libtheora features, easy to use, fast, responsive and with minimal dependencies. Best suited for graphical applications and video games but can be used on any platform supporting RGB or YUV display


As far as Visual C goes, it doesn't appear to be a requirement, although the 'solution' file for VC2008 is included for ease. It is, I gather, written in straight C++.

The only caveat, that I can see, is that the end user has to deal with the frames that are produced by sending them to your frame buffer, texture or display entity (SDL, OpenGL, DirectX, etc).

I really think this library could benefit a lot of users here, and should be fairly easy to adapt to BlitzMax and probably even BlitzPlus and Blitz3D!

Anyone willing to make this happen? This is a module that I personally would be willing to make a donation towards...

Russell


AdamRedwoods(Posted 2011) [#12]
Well, if you use the Quicktime container, this project is done :D just kidding


Xiph QuickTime Components (XiphQT) is, in short, the solution for Mac and Windows users who want to use Xiph formats in any QuickTime-based application, e.g. playing Ogg Vorbis in iTunes or producing Ogg Theora with iMovie.


http://xiph.org/quicktime/


I did look at libTheora before tackling Quicktime, but then I also found:
http://www.webmproject.org/

which is backed by Google and VP8/Theora technology, but seems to be less mature.


Russell(Posted 2011) [#13]
I'm willing to use any library as long as:

- The licensing allows free and commercial programs to use it without a fee
- It is available (or modifiable) to be used on Windows, Mac OSX and Linux (This is the main thing that would keep me from using the XiphQT mentioned above - No linux support)

Plus, wouldn't that require the Quicktime distributable to be on the users system (or be downloaded from Apple or included in the download - A not-too-small package...)?

Russell


Brucey(Posted 2011) [#14]
Maybe Brucey is bored?

It seems he must have been...


xlsior(Posted 2011) [#15]
It seems he must have been...


Cool!

(Downloading bah.theoraplayer and bah.theoraplayeropenal from Brucey's SVN repository now)


xlsior(Posted 2011) [#16]
...Works like a charm, very useful!


Rixarn(Posted 2011) [#17]
Wow! As always, great work Brucey!


Brucey(Posted 2011) [#18]
Not quite feature complete yet, and not thoroughly tested. Basically I implemented just enough to play a video.
And I haven't tried a build on Linux yet. Likely it will need further tweaking on there.
Oh, and only OpenAL for now, since that's the default implementation. Possibly a future BASS driver since I've done one of those before.


Brucey(Posted 2011) [#19]
Tried it on Linux and it appears to have worked first time... who'da taw't it ! :-)


Russell(Posted 2011) [#20]
YES! YES! YES! :) :) :)

I was hoping Brucey would see this thread...

Can't wait to give this a try, even if it's only openal for now.

Excellent work, Brucey!

Thanks again,
Russell


Brucey(Posted 2011) [#21]
OpenAL is easy... it already had a driver for it. Although I had to rewrite it to support dynamic loading of the DLL... and it possibly still needs some work in the area of the device driver itself.

The others will require writing from scratch of course, which requires actual thinking about - ack!


Russell(Posted 2011) [#22]
Excellent! I got an EXCEPTION_ACCESS_VIOLATION the first time I ran one of the examples, but then realized that I didn't have OpenAL installed (DUH!). Got that from Creative Labs' website and the example ran fine. (Performance seems excellent so far).

I did notice that when the "pipe dreams" video first starts there's a loud and quick burst of static. When I played the video outside of the example program, it did the same thing, so it's an encoding error, not a playback error. This is really awesome, Brucey!

Very COOL!

Thanks again (again!)
Russell


Russell(Posted 2011) [#23]
The size of the compiled library is a respectable 325K (release version), plus 21k for the audio interface library. Very impressive! Even if you factor in a possible OpenAL install (which is 791k compressed on Windows), you're looking at a fairly small footprint.

Russell


Brucey(Posted 2011) [#24]
Ah, yes, it doesn't care if the dll is loaded or not. I should probably at some code to check, and not let the audio play if it's not available.

I could throw a BlitzMax exception, I suppose.


Russell(Posted 2011) [#25]
Oh, and be sure to add this to your list of available modules! I'm sure a lot of people will find this quite useful!

Russell


Russell(Posted 2011) [#26]
I just commented out the offending line and the video ran without sound with no problems.

I think it would be ok to leave it up to the end user to check to make sure OpenAL is installed. It's the least we can do since you've done all the rest of the work! ;)

Russell


Brucey(Posted 2011) [#27]
This might do the trick...
If OpenALInstalled() Then
	manager.setAudioInterfaceFactory(New TOpenALTheoraAudioInterfaceFactory.Create())
End If



Russell(Posted 2011) [#28]
Yep, that's what I have now. Works great!

I noticed that in your example code, you get the clip size like this:
Local pix:TPixmap = TPixmap.Create(clip.getWidth(), clip.getHeight(), PF_RGB888)

which returns 400 x 304, but then you set the graphics mode to 800 x 600 (The video is stretched to fit). If I set the graphics mode to the actual video size of 400 x 304 (windowed), I only see the upper left of the video. If I play the video in WMP the video is displayed at 400 x 304.

Any ideas?

----> Nevermind, I just saw "SetScale 2,2" which is doubling the output size.... (Duh! Again...)

Russell


Brucey(Posted 2011) [#29]
I didn't actually know what the frame size was. I just doubled it up and it seemed to just about fit in the window. Lucky guess I think ;-)


AdamRedwoods(Posted 2011) [#30]
Nice job, you just bought me some free time, Brucey.
(Not that I had any...)


Russell(Posted 2011) [#31]
The performance of the library seems to be good on my system. Does anyone have a low-end PC they can test it on to see how well it does? Say, something like <2Ghz, <1GB memory and a medium range vid card? (Hard to believe that we can consider those specs "low end"... I can remember when I plugged in my 33Mhz 68030 board into my Amiga 1200 with 8 WHOLE megabytes of 16 bit ram... Now THAT was EXTREME power! ;) By the way, that 8 Megabyte memory module cost over $300US... The hard drive? A WHOPPING 80MB...

Russell


SLotman(Posted 2011) [#32]
Does my laptop counts? 1.86Ghz, 1Gb RAM, ATI X1300, running XP... where can I get this lib?

I followed Brucey's links on his signature, but couldn't find it :(


AdamRedwoods(Posted 2011) [#33]
... where can I get this lib?

you need an svn client (tortoisesvn for example) and hook up I assume to his google code site.


Russell(Posted 2011) [#34]
After you install TortoiseSVN (recommended), it's easy to get SVN files (if you know which server they're located on - See below for Brucey's svn server location).

First, create two folders inside your [BlitzMax]/mod/bah.mod folder: One called "theoraplayer.mod" and the other one called theoraplayeropenal.mod"

Next, right-click on the "theoraplayer.mod" folder icon and select "SVN Checkout...". In the window that opens (if Tortoise is installed properly, and with context menus activated), in the box for "URL of repository", enter
http://maxmods.googlecode.com/svn/trunk/theoraplayer.mod

The box for "Checkout directory" should already be filled with the correct location (the folder you right-clicked on). Now click "Ok".

Do the same thing for the other folder, "theoraplayeropenal.mod", except the URL location will be, of course
http://maxmods.googlecode.com/svn/trunk/theoraplayeropenal.mod

(The Checkout directory should once again already be correctly set to theoraplayeropenal.mod). Click "Ok" again.

The Checkout process shouldn't take too long for these relatively small libraries (less than a minute total if you're on broadband).

If you don't have the OpenAL library installed on your system (You need it to run the example program(s)), you can get it from here: http://connect.creativelabs.com/openal/Downloads/Forms/AllItems.aspx
(For Windows XP, you want the one called "oalinst").

[EDIT] Oh, I almost forgot to mention that you will probably have to compile these libraries before you can use them.

Have fun!
Russell

Last edited 2011


SLotman(Posted 2011) [#35]
I just needed the SVN address, I already have ToirtoiseSVN installed ;)

I just tought it was something different from the google address, since from the web interface, using the "browse svn", I couldn't see anything theora related...

Anyway, downloading it now, thanks! :)

Edit: Tested - at first I've got some video lockups (the video would stop being played, sound kept going) - but then I changed the example to use 'flip 0' instead of just 'flip' and it worked perfectly!

The process is using here something around 55%-65% of processor, so it should be ok to use on even lower machines :)

As usual, top notch work from Brucey :)
(I just wish it wasn't dependent on OpenAL, but other than that, it's really amazing!)

Last edited 2011


Russell(Posted 2011) [#36]

(I just wish it wasn't dependent on OpenAL, but other than that, it's really amazing!)


OpenAL is working perfectly for me, but maybe Brucey or someone else would be willing to adapt it to use BMax's built-in audio library, FreeAudio? (Which, quite nicely, is available for all three platforms as well!)

He did mention that he'd have to write a good portion of the driver from scratch, though...

I suppose it would actually be nice to not have to rely on an external library like OpenAL (even though it has a small footprint and offers many additional benefits for sound production). I wish I was smart enough to do this, but alas, that crayon I stuck up my nose in the fifth grade is still lodged in my brain :)

Russell


Brucey(Posted 2011) [#37]
The theora player pushes the audio to the driver using its own thread. This means you need to avoid any native BlitzMax code to do the audio.
I've been having a look at making a BASS one, but I wouldn't know where to start with the FreeAudio one... At least BASS is documented :-)


Brucey(Posted 2011) [#38]
I appear to have managed to get a BASS driver working on OS X. I haven't tested it on the other platforms yet, and it's generally a case of me making it up as I go, so your mileage may vary.

Interesting that I had to re-arrange the buffer data in a different order for BASS...


Russell(Posted 2011) [#39]

Interesting that I had to re-arrange the buffer data in a different order for BASS..


Hmm... That's interesting. Is it an endian issue? Strange if it is.

Too bad the theoraplayer audio library doesn't just stick the decompressed audio data in a memory buffer and give you access to it so you can send it to whatever audio driver you want to use. Granted, this would require being notified when it needs the next packet of audio data through some sort of callback or just requiring the program to call the function that does this automatically every loop.

Still, I'm perfectly happy with the current OpenAL option, as it works great, is free, and is available on all three platforms!

Russell

p.s. I had no idea that the FreeAudio library is undocumented! :/


Russell(Posted 2011) [#40]
Hello, Brucey! Thought I'd try to get theoraplayer working under linux (ubuntu 11.10 running on virtualbox), but I get this error message:

Compiling:theoraplayer.bmx
flat assembler version 1.68 (32768 kilobytes memory)
3 passes, 21883 bytes.
Archiving:theoraplayer.debug.linux.x86.a
ar: creating /home/amiga5k/BlitzMax/mod/bah.mod/theoraplayer.mod/theoraplayer.debug.linux.x86.a
Compiling:OpenAL_AudioInterface.cpp
In file included from /home/amiga5k/BlitzMax/mod/bah.mod/theoraplayeropenal.mod/audio_interface/src/OpenAL_AudioInterface.cpp:10:0:
/home/amiga5k/BlitzMax/mod/bah.mod/theoraplayeropenal.mod/audio_interface/src/OpenAL_AudioInterface.h:21:19: fatal error: AL/al.h: No such file or directory
compilation terminated.
Build Error: failed to compile /home/amiga5k/BlitzMax/mod/bah.mod/theoraplayeropenal.mod/audio_interface/src/OpenAL_AudioInterface.cpp
Process complete


Any ideas?

Russell


Russell(Posted 2011) [#41]
I couldn't find an AL directory, but the header files "al.h" and "alc.h" are in the BlitzMax/mod/bah.mod/theoraplayeropenal.mod/openal/include folder.

Short of hard-coding the actual location of the header files, are there any suggestions?

Thanks in advance!
Russell


Russell(Posted 2011) [#42]
Am I the only one thinking that Linux is more of a pain in the arse than it's worth to support? Seems like virtually nothing "just works".

I hope Mac OSX is more problem-free...

Russell


xlsior(Posted 2011) [#43]
I hope Mac OSX is more problem-free...


It should, given that there is a fairly small number of different operating system versions and hardware platforms.

Pretty much -everything- is variable under Linux, with dozens of different versions released by numerous vendors, each with their own configurations, which are running on pretty much any hardware imaginable.

Plus probably the biggest limitation of blitzmax under linux is that it is a 32-bit program that has legacy dependencies that may or may not be preinstalled on a user system, which is more and more likely to run in 64-bit mode these days.


Russell(Posted 2011) [#44]
Yeah, I know what you mean.

<stands on soap box>
You know, when I first bought BlitzMax, one of the main features that drew me to it was the ability to "write once" and compile to several platforms, and I was really keen on doing good things for the linux community because I believed in the open source concept (and still do!), but to be honest, my experiences so far with linux have been largely disappointing... (Like, what the hell is that Unity crap in Ubuntu 11.10? Why isn't Synaptic Package Manager installed by default anymore? I digress...)

To be sure, there are some excellent programs out there that run on linux, such as Gimp, Inkscape, Blender 3D and some others, but the OS itself, it seems, is just not mature enough to be taken seriously by the general public, and many of those excellent programs are now also available for Windows. Linux has come a loooong way since its inception, but if they really want to have any chance of being accepted by the lay person, in my opinion, they need to REALLY re-think their entire strategy and watch an average person install and use it for a while and see what sorts of issues they come up against.

I suppose if they do a basic install using, say, one of the many 'Live Cds' that are out there then the average person might have a chance, assuming that they can figure out how to burn an ISO and don't want to do anything too complicated... (Have any of the distro makers ever thought of making a self-contained iso burner+image program that only requires the user to insert a blank CD/DVD and then does the rest for them?).

Anyway, I think I'm going to stick to Windows for now, and possibly Mac OSX if I can save up the money for a mac mini... I've uninstalled Linux completely from my system with a little feeling of regret.. and disgust.

Maybe I'll check back in on Linux in a few years to see if they've learned anything...
<steps down from soap box>

Russell


LT(Posted 2012) [#45]
Hey everyone, I'm glad to see that someone (by the name of Brucey) decided to tackle this. I've been using the avbin module and pantson's module, but each have their drawbacks and I haven't had time to look into them further.

However, I must be missing something. When I tried to compile the new libs, I got an error in glue.cpp. Any ideas?

Btw, Russell, 8 MB is HUGE compared to the 1 MB I had with my Amiga 500, and that was after the upgrade! :)


xlsior(Posted 2012) [#46]
However, I must be missing something. When I tried to compile the new libs, I got an error in glue.cpp. Any ideas?


what version of Blitzmax & MinGW are you using?


LT(Posted 2012) [#47]
Tried a couple of different MinGW versions, but for some reason, I didn't think of Blitzmax version. I'm still using 1.30 because I was having a conflict with the latest and haven't gotten around to fixing that. Suppose that's probably it.


LT(Posted 2012) [#48]
Hmm, got it running, but the sound in the sample is quite a bit out of synch. :(


Russell(Posted 2012) [#49]
LT, I couldn't get it to work under Ubuntu, but under Windows 7/64 it worked like a charm with sound synced perfectly.

What OS are you using?

Also, are you using the BASS driver or the OpenAL driver? Maybe the latency for your sound card/driver can be adjusted? Do you have sync issues with any other program? Like when you watch DVDs, etc?

Russell


LT(Posted 2012) [#50]
No sync issues with other programs - I'm using XP. Strangely, the sound sync problem seems to only happen with the example ogv that was included. I've tried others and they work fine, but I've only tested a couple of them.

I was wondering if you happen to know if the c++ lib is full featured - meaning has video creation functions(?). Also, I tried using the seek function and it sort of worked, but then the video would skip every now and then for the rest of the playback. It would be nice to be able to make a scrub tool to jump around in the videos. I know I'm reaching for the sky here.

Have to say I'm pleased with this module. It looks like it will replace the other two I've been using quite nicely!


Russell(Posted 2012) [#51]
AFAIK, the theora module is just for playing theora videos (with sound). But the fact that it decompresses to a pixmap makes it very powerful (You can stretch it, while playing, by setting the scale, etc.).

If you're looking to create videos from scratch programmatically, I don't think there's a module for that...yet. I can imagine a couple of options here:
- libavcodec (This is the library that FFMPeg uses internally, as do many other players, encoders, etc. It's open source, too! All it needs is a wrapper..... :))
- handbrake - http://handbrake.fr/ (This is also open source and cross-platform program for video transcoding. It's more of a stand-alone program, but it's GPL'd and the source is available from their site.)

Avisynth is interesting as well (it allows manipulation of video in very clever ways, through a scripting command line), but is only available for Windows AFAIK, and is not intended to create videos from scratch (also AFAIK).

Hope this helps!
Russell


LT(Posted 2012) [#52]
Yeah, the pixmap stuff is important because I'm working on an OpenGL engine and use videos as textures all the time. Had that part working for a while using avbin and pantson, but neither of them work for all of the ogv videos I have and, as you've noted, the pantson mod doesn't do sound (so I have to separate the sound into a wav and play it, which doesn't guarantee sync). This new mod looks like it could replace them both, but I won't know for sure until I get around to thoroughly testing it.

Thanks a lot for the info! I may look into wrapping a video encoder at some point, but it will be some time as I have other fires burning. :)


Russell(Posted 2012) [#53]
If someone could find the time and know-how to wrap the libavcodec..
[subliminal message]
Brucey!!!
[/subliminal message]
that would be extremely cool, and very useful for creating all kinds of video-related apps. Otherwise, there are a sizable number of free standalone programs that do just about anything you can think of with/to video and/or audio. I check source forge ( www.sf.net ) pretty regularly to see what's new...

Anyway, take care and good luck!
Russell


LT(Posted 2012) [#54]
My vote would be for a bullet physics wrapper... ;)


Russell(Posted 2012) [#55]
There is a bullet wrapper for Blitz3D ( http://tools.mirage-lab.com/ ), but it's not free (about $25US).

For BlitzMax, there is Box2D (free) and Chipmunk (also free), and ppIsaac (about 6 euros http://www.pyroplay.de/ppisaac.html ), which is a wrapper for Newton (free, I believe), so physics capabilities are out there for BlitzMax if you know where to look.

Have a look at ppIsaac. It's only 6 euros, for crying out loud! ;)

Russell


LT(Posted 2012) [#56]
Thanks for your suggestions. However, all except the bullet wrapper are 2D physics engines. I need a full-fledged 3d physics engine. I don't care if it's free, but it can't have any restrictions because my project is commercial (been working on it for over two years on my own dime) and I will provide my own editor. I don't know if the Mirage bullet wrapper has restrictions, but it is for Blitz3D. There is JV-ODE, but it definitely has restrictions on its use.

The ppIsaac engine is based on Klepto's Newton physics wrapper, which is what I had been planning to use. I may still do it, but found recently that I couldn't compile it using the latest version of Blitz, so it's going to require some additional work. With that in mind, along with the fact that I don't really know how complete Klepto's wrapper is, a bullet wrapper seems to be the way to go. Might have to do that myself.

Last edited 2012

Last edited 2012


Russell(Posted 2012) [#57]
Well, let me know what you end up using. I didn't realize that ppIsaac was 2D only...

Russell


AdamRedwoods(Posted 2012) [#58]
3d physics for free is asking quite a bit....


LT(Posted 2012) [#59]
I did say, "I don't care if it's free..." Besides, I'm talking about a wrapper for a free and open source physics engine. In any case, didn't mean to hijack this thread, which is really about a very nice video module contribution.


Tachyon(Posted 2012) [#60]
So.... is there a link for Brucey's Libtheora wrap? I've looked everywhere in this thread, and searched through all of Brucey's sig links.

I'd love to have video playback in my next release.


SystemError51(Posted 2012) [#61]
3d physics for free is asking quite a bit....


I'm not sure you know about this little gem. :)


Also, Tachyon, if you're not afraid to use OpenGL -
THIS may help you.

Last edited 2012


LT(Posted 2012) [#62]
Getting this error when I try to compile in debug mode...

C:/Program Files/BlitzMax/mod/bah.mod/theoraplayer.mod/theoraplayer.debug.win32.x86.a(glue.cpp.debug.win32.x86.o):glue.cpp:(.text+0x5a): undefined reference to `_bah_theoraplayer_TTheoraGenericException__create'


Anyone know why?


LT(Posted 2012) [#63]
Just downloaded everything from scratch and recompiled. So far, so good.

Then, I run example_02 and it works, but is out of sync with the sound.

I change the video to another of the Mars Curiosity. Still works and is in sync!

I change Framework to Import because I intend to use this with my own code. Still seems to work (except for the sync issue) with the PipeDream video, but...

Then I try it with the Curiosity video and it no longer works. No other changes except the video source. Can't find anything else wrong with the Curiosity video - it works everywhere else that I've tried it.

Unfortunately, I am not getting any reported error in Debug mode and have no idea where to look. Any ideas?

Are there size or aspect ratio limitations that I should know about? Even so, why would Framework/Import make a difference?


Regular K(Posted 2012) [#64]
Hi,

I'd love to try out this library but I get spammed with various errors at compile time on the examples, all similar to: "C:/BlitzMax/mod/bah.mod/theoraplayer.mod/theoraplayer.debug.win32.x86.a(TheoraVideoClip.cpp.debug.win32.x86.o):TheoraVideoClip.cpp:(.text+0x46): undefined reference to `__gxx_personality_sj0'"

and then ends with an error failing to link.

I followed the installation instructions above.

Any ideas?