EaseReader gives fixme:amstream:IAMMultiMediaStreamImpl_Initialize

Rob Shearman rob at codeweavers.com
Fri Mar 3 10:14:29 CST 2006

Peter Åstrand wrote:

> On Thu, 26 Jan 2006, Peter Åstrand wrote:
>> Hi. I'm trying to get the EaseReader application 
>> (http://www.dolphinaudiopublishing.com/products/EaseReader/) running 
>> in Wine. By using the native oleacc, oleaut32 and rpcrt4, it's now 
>> actually possible to start the application. The "self voicing" mode 
>> also works: The application "speaks", for example when hovering above 
>> menu choices. Listening to the actual DAISY book does not work, 
>> however. I get:
>> fixme:imm:ImmGetContext (0x10136): stub
>> fixme:imm:ImmGetContext (0x10136): stub
>> fixme:amstream:IAMMultiMediaStreamImpl_QueryInterface 
>> (0x7a4fdc50/0x7a4fdc50)->({bebe595c-9a6f-11d0-8fde-00c04fd9189d},0x7fc6e968) 
>> fixme:amstream:IAMMultiMediaStreamImpl_Initialize 
>> (0x7a4fdc50/0x7a4fdc50)->(0,1,(nil)) partial stub!
>> fixme:amstream:IAMMultiMediaStreamImpl_AddMediaStream 
>> (0x7a4fdc50/0x7a4fdc50)->((nil),0x4b0d3200,0,(nil)) partial stub!
>> fixme:amstream:IAMMultiMediaStreamImpl_OpenFile 
>> (0x7a4fdc50/0x7a4fdc50)->(L"c:\\program files\\easereader 
>> demo\\help\\22_highlig.mp3",8) stub!
> It seems like the main problem is the IAMMultiMediaStreamImpl_OpenFile 
> stub. I've tried a quick-n-dirty hack: Just calling ShellExecute from 
> IAMMultiMediaStreamImpl_OpenFile. See the patch below. After 
> installing Winamp, this actually works (but stop/seek etc doesn't 
> work, of course).
> So: Now I'm wondering: How difficult would it be to properly implement
> IAMMultiMediaStreamImpl_OpenFile?

Most of the base functionality is there. 
IAMMultiMediaStreamImpl_OpenFile is just a helper method. This is 
roughly what it should do:
CoCreateInstance with IFileSourceFilter on CLSID_AsyncReader.
Call IFileSourceFilter_Load.
Get the output pin and stash it in This.
Call IGraphBuilder_AddSourceFilter.

Then IAMMultiMediaStreamImpl_Render should do the following:
Call IGraphBuilder_Render using the pin previously stashed away.

Care needs to be taken in both cases to ensure the IGraphBuilder object 
has been set and in the second case the pin as well.

Hope this helps,

More information about the wine-devel mailing list