Hi there,
Firstly... the runtime error (not initialised), is due to the theora source
code. If you look at the project file in my source, it disables all those
runtime checks so this shouldn't happen.
Secondly... the crash is likely due to linking to the wrong runtime
libraries. You need to link to Multithreaded Debug DLL (in debug mode) or
Multi-threaded DLL in release mode. Also remember, if you have compiled the
theora dll in debug mode, you have to compile everything that links to it in
debug mode. Another thing, my filters never link directly to libtheora.dll,
i use libtheora as a static library and it is wrapped inside the
libOOTheora.dll.
When you say you downloaded the theora source to compile yourself, do you
mean the source to libtheora, or the source i have on my website (which
contains a custom version of libtheora)... if you compiled libtheora
yourself, from something other than what was in my package, you likely have
a lot of incorrect settings. Is there a reason why you can't use the version
that is provided ?
Also, i assume you know that to build it needs the BaseClasses library from
the directX9 sdk. You have to change some settings in this project, so it
links with __stdcall, uses Multithreaded Debug Dll (or MultiThreaded DLL for
release) and builds as a static library.
Another thing... there are several other static libraries that are linked to
those libraries you list.
If you are using the code provided, you should just be able to toggle the
setting to "Debug" at the top of visual studio, rebuild the
"oggcodecs"
project, and that will build all the dependancies. As far as i'm aware, all
the correct runtime/warning ignore settings are set such that the runtime
error should not occur.
If it is still occuring change the "Runtime Checks" field in the
property
pages to "Stack Frames" rather than "Both"
Another thing... you can't just rebuild and start using them... directshow
filters are COM objects... all filters need to be properly registered on the
system, which also means deregistering any existing ones first.
Also, never put them in the system directory. COM object registrations can
point to anywhere, there's no need to clutter up the system directory with
them.
If you look at the dependancies dialog box for each of the libraries you are
trying to build you should be able to see what else they depend on.
One other thing to be aware of... the filters haven't been all that well
tested in real-time conditions... it's entirely possible the encoder is too
slow for the amount of data you are throwing at it. I just did a brief test,
not with a live source but using a file source run into a theora encoder
then into a theora decoder then to a video renderer, and that configuration
works ok.
If you have anything of any substantial resolution and framerate, the
encoder just isn't fast enough to cope with that yet. And there is no built
in throttling/frame dropping mechanism, so it will just eventually back up
with unencoded frames and die.
It is also possible that the custom video renderer is causing a problem in
the way it connects to the decoder.
Can you be a bit more specific than "it just crashes" ?
Zen.
----- Original Message -----
From: "Sebastien DALOZ" <sebddlr@yahoo.fr>
To: <theora-dev@xiph.org>
Sent: Wednesday, April 27, 2005 5:16 PM
Subject: [Theora-dev] Theora dll in debug mode
Hi everybody.
I have a problem using Theora in a specific way. I am going to explain that.
I have downloaded ogg codecs for Windows on the Theora website. More
precisely
there are DirectShow Filters. I try to use Theora codec in a commercial
application and the application crash. It doesn't with another codec like
XviD,
so the problem may be Theora codec.
Note that I can use Theora outwards this application encoding and decoding
videos without problems.
But this application uses their own DirectShow filters in addition of the
basic
filters (video capture filter and video renderer filter). Might they be
incompatible with Theora ?
I also downloaded source code of Theora, in order to compress myself the
codec
in debug mode with Microsoft Visual C++ .NET 2003. I have successfully
compiled
the next 5 libraries (it seems libOOOggSeek was not necessary for other dll
compilation) :
- dsfTheoraDecoder.dll
- dsfTheoraEncoder.dll
- libOOOgg.dll
- libOOOggSeek.dll
- libOOTheora.dll
After replacing Release version of the dll by the Debug version of them,
nothing works. I can't play any theora encoded file, nor encode a new file.
Error is "Debug Assertion Failed !".
With a minimal graph in GraphEdit (Microsoft DirectX SDK) composed by a
webcam
capture source filter, a Theora Encode Filter, a Theora Decode Filter and a
Video Renderer, I get another error, as you can see here :
http://membres.lycos.fr/univers2lanime/theora/CaptureGraph.jpg
Error seems to be in ntdll.dll (a Windows XP library), but it may be a bad
request of Theora.
http://membres.lycos.fr/univers2lanime/theora/dll_faulted.jpg
Is it possible I haven't well compiled the libraries or forgotten some of
them
which are needed ? Could you send me proper compiled libraries in debug mode
(with corresponding sources if there are modifications with distributed
sources
on illiminable website
(http://www.illiminable.com/ogg/oggcodecs_src_0.69.8924.zip).
You can download the debug mode libraries I have compiled on
http://membres.lycos.fr/univers2lanime/theora/theora_debug_dll.zip
__________________________________________________________________
D?couvrez le nouveau Yahoo! Mail : 250 Mo d'espace de stockage pour vos
mails !
Cr?ez votre Yahoo! Mail sur http://fr.mail.yahoo.com/
_______________________________________________
Theora-dev mailing list
Theora-dev@xiph.org
http://lists.xiph.org/mailman/listinfo/theora-dev