Yes. I am working on it this morning and the first thing I am trying to get past is the fact that CoInitialize() failes. Even if I try to do it prior to any Ogre Init. I keep getting the RPC_E_CHANGED_MODE response.
I was able to play audio though, depending on the file type. I have created avi, dv, mpeg2 and wmv files to try and I have changed the MEDIASUBTYPE from _DV25 to _Avi and back to the RGB24 it was originally.
I am starting to wade through DirectShow doc but there isn't much there on what to do with the RPC_E_CHANGED_MODE result. From what I can tell it indicates that :
A previous call to CoInitializeEx specified a different concurrency model for the calling thread, or the thread that called CoInitializeEx currently belongs to the neutral threaded apartment.
Doh! I have little idea where that previous call could have come from.
This did not fail though:
Code: Select all
hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
throw("[DSHOW] Error in co initialize");
hr is always returned as S_FALSE. Oddly all of the other calls to CoCreateInstance and AddFilter, etc return hr=0; So they seem fine. Like somthing else has called CoInitialize.
However. With most file types I get :
First-chance exception at 0x0862a8ed in daac.exe: 0xC0000005: Access violation writing location 0x00000000.
Code: Select all
On we go. My target is to have live video on Ogre Textures at some point
Whew.. ok.. CoInitialize is the thread starter for COM? This is apparently another Rabbit Hole that would suck up my entire weekend. Even when CoInitialize is the first thing my app does it returns other than S_OK.
But this is a DShow problem. Not an Ogre problem.