[gst-devel] gst directshow wrapper weirdness

Sébastien Moutte sebastien at moutte.net
Wed Jun 13 23:21:05 CEST 2007


So i guess the problem could come from AMovieDllRegisterServer2 which is 
the function called when registering the filters.
It's using GetModuleFileNameA to get the path of the current DLL thanks 
to a global variable g_hInst which is normally initialized in 
DllEntryPoint function.
You should try to debug this to see what's the problem trying to compare 
the handle passed to DLLMain of libdshow to the one in g_hInst used to 
register the COM object (they should be the same).
Is there a g_hInst exported from libdshowsrcwrapper ?
It seems you get a lot of exported elements from libdshowsrcwrapper, vs6 
is just doing explicit exportation maybe mingw+gcc is exporting to much 
thing from directshow baseclasses ...
Let me know.
Sebastien

Ali Sabil a écrit :
> It doesn't seem to be the case, since gst_dshow_register_fakefilters is exported by libgstdshow, and libdshowsrcwrapper exports gst_dshowaudiosrc_get_type, gst_dshowvideosrc_get_type and gst_plugin_desc , as well as a lot of symbols like  TIME_FORMAT_BYTE, PIN_*, AMPROPSETID_Pin ...
>
> Still weird ...
>
> -----Original Message-----
> From: Sébastien Moutte [mailto:sebastien at moutte.net] 
> Sent: Wednesday, June 13, 2007 10:26 PM
> To: Ali Sabil
> Cc: gstreamer-devel at lists.sourceforge.net
> Subject: Re: [gst-devel] gst directshow wrapper weirdness
>
> well, this is really strange.
> It looks like you built some source files of libdshow in libdshowsrcwrapper.
> gst_dshow_register_fakefilters is called in plugin_init function of 
> libdshowsrcwrapper but this function must be implemented and exported 
> from libdshow.
> Could you check if it is the case ?
>
> Ali Sabil a écrit :
>   
>> It seems like when I use regserv32 the key get set to the correct value,
>> but once I try to run gst-launch the key get reset to the wrong value :/
>>
>> On Mon, 2007-06-11 at 13:39 +0200, Sebastien Moutte wrote:
>>   
>>     
>>> It should point to libdshow-0.10.dll as the fake sink COM object is implemented in the library and not in the plugin.
>>>
>>> -----Original Message-----
>>> From: Ali Sabil [mailto:ali.sabil at tandberg.com] 
>>> Sent: lundi 11 juin 2007 12:26
>>> To: Sébastien Moutte
>>> Cc: gstreamer-devel at lists.sourceforge.net
>>> Subject: Re: [gst-devel] gst directshow wrapper weirdness
>>>
>>> Hello again :)
>>>
>>> the key exists, and it points to libgstdshowsrcwrapper.dll
>>>
>>> Thanks
>>>
>>> --
>>> Ali
>>>
>>> On Sun, 2007-06-10 at 23:42 +0200, Sébastien Moutte wrote:
>>>     
>>>       
>>>> if you still have the same error code saying that it can't find the fake 
>>>> sink's CLSID in the registry, you should search for 
>>>> {6A780808-9725-4d0b-8695-A4DD8D210773} key in your registry to check if 
>>>> the filter object registration was done correctly or not.
>>>> Normally, you will find a key 
>>>> HKEY_CLASSES_ROOT\CLSID\{6A780808-9725-4D0B-8695-A4DD8D210773} with the 
>>>> path of DLL in as default value of InprocServer32 subkey.
>>>> Sebastien
>>>>
>>>> Ali Sabil a écrit :
>>>>       
>>>>         
>>>>> Hello again,
>>>>>
>>>>> Now I finally managed to fix the stdcall symbol naming problem (the @x
>>>>> that get appended), by making use of Aliasing (both symbols are
>>>>> available now), now Regsvr32 succeeds, but I still get this error saying
>>>>> that it failed at creating the FakeSink filter.
>>>>>
>>>>> Any help/idea/suggestion would be very welcome.
>>>>>
>>>>> Thanks
>>>>>
>>>>> --
>>>>> Ali
>>>>>
>>>>> On Thu, 2007-06-07 at 23:29 +0200, Sébastien Moutte wrote:
>>>>>   
>>>>>         
>>>>>           
>>>>>> It could be an exportation problem, you should see DllRegisterServer in 
>>>>>> the Dependency Walker and not DllRegisterServer at 0
>>>>>> I'm using a .def to export functions, maybe mingw doesn't handle it 
>>>>>> correctly ...
>>>>>>
>>>>>> Ali Sabil a écrit :
>>>>>>     
>>>>>>           
>>>>>>             
>>>>>>> The actual error message from regsvr32 is "ligstdhow-0.10-0.dll was
>>>>>>> loaded, but the DllRegisterServer entry point was not found".
>>>>>>>
>>>>>>> The weird thing is that the DllRegisterServer at 0 symbol is defined in
>>>>>>> the .dll file (I checked using a tool called Dependency Walker)
>>>>>>>
>>>>>>> Any ideas about the problem ?
>>>>>>>
>>>>>>> --
>>>>>>> Ali
>>>>>>>
>>>>>>> On Wed, 2007-06-06 at 18:13 +0200, Ali Sabil wrote:
>>>>>>>   
>>>>>>>       
>>>>>>>             
>>>>>>>               
>>>>>>>> It seems like the filter doesn't get registered as it should be. I
>>>>>>>> also tried to make DllRegister and DllUnregister dllexported and ran
>>>>>>>> regsvr32 to register it, but it failed saying that the filter could
>>>>>>>> not be registered.
>>>>>>>>
>>>>>>>>  
>>>>>>>>
>>>>>>>> Btw, I had to apply some fixes, to get it to build, and I am building
>>>>>>>> it using mingw32 on GNU/Linux, if you want I can make the compiled
>>>>>>>> libgstdshow available so hat you can take a look at it.
>>>>>>>>
>>>>>>>>  
>>>>>>>>
>>>>>>>> Thank you
>>>>>>>>
>>>>>>>>  
>>>>>>>>
>>>>>>>> --
>>>>>>>>
>>>>>>>> Ali
>>>>>>>>
>>>>>>>>  
>>>>>>>>
>>>>>>>>                                    
>>>>>>>> ______________________________________________________________________
>>>>>>>> From:Sebastien Moutte [mailto:sebastien at moutte.net] 
>>>>>>>> Sent: Wednesday, June 06, 2007 4:34 PM
>>>>>>>> To: Ali Sabil; gstreamer-devel at lists.sourceforge.net
>>>>>>>> Subject: RE: [gst-devel] gst directshow wrapper weirdness
>>>>>>>>
>>>>>>>>
>>>>>>>>  
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> It seems the DirectShow fake sink element is not registered on your
>>>>>>>> computer.
>>>>>>>>
>>>>>>>> This filter is implemented inside libdshow-0.10.dll and normally
>>>>>>>> dshowvideosrc and dshowaudiosrc are registering it automatically so
>>>>>>>> you have probably some dependency problem or there was a problem
>>>>>>>> during the registration.
>>>>>>>>
>>>>>>>> If you have installed DirectX SDK, you have probably graphedit.exe on your computer, you can use it to search for "DSHOW fake sink filter" in the DirectShow installed filters list.
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>>
>>>>>>>> Sebastien
>>>>>>>>
>>>>>>>>  
>>>>>>>>
>>>>>>>> From:gstreamer-devel-bounces at lists.sourceforge.net
>>>>>>>> [mailto:gstreamer-devel-bounces at lists.sourceforge.net] On Behalf Of
>>>>>>>> Ali Sabil
>>>>>>>> Sent: mardi 5 juin 2007 11:55
>>>>>>>> To: gstreamer-devel at lists.sourceforge.net
>>>>>>>> Subject: [gst-devel] gst directshow wrapper weirdness
>>>>>>>>
>>>>>>>>
>>>>>>>>  
>>>>>>>>
>>>>>>>> Hello all,
>>>>>>>>
>>>>>>>> After many days trying to cross compile the new directshow wrapper,
>>>>>>>> and
>>>>>>>> the audio and video source for windows using mingw32, I finally
>>>>>>>> succeeded in building the .dll files, but now when I try to run it I
>>>>>>>> get
>>>>>>>> the following error :
>>>>>>>>
>>>>>>>>  $ gst-launch-0.10.exe dshowvideosrc ! ffmpegcolorspace !
>>>>>>>> directdrawsink
>>>>>>>> Setting pipeline to PAUSED ...
>>>>>>>> 0:00:00.264301000  2056 003D42E0 ERROR        dshowvideosrc
>>>>>>>> gstdshowvideosrc.c:602:gst_dshowvideosrc_start: Can't create an
>>>>>>>> instance
>>>>>>>> of our dshow fakesink filter (error=-2147221164)
>>>>>>>> ERROR: Pipeline doesn't want to pause.
>>>>>>>> Setting pipeline to NULL ...
>>>>>>>> FREEING pipeline ...
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>>
>>>>>>>> --
>>>>>>>> Ali
>>>>>>>>
>>>>>>>>  
>>>>>>>>
>>>>>>>>
>>>>>>>> -------------------------------------------------------------------------
>>>>>>>> This SF.net email is sponsored by DB2 Express
>>>>>>>> Download DB2 Express C - the FREE version of DB2 express and take
>>>>>>>> control of your XML. No limits. Just data. Click to get it now.
>>>>>>>> http://sourceforge.net/powerbar/db2/
>>>>>>>> _______________________________________________ gstreamer-devel mailing list gstreamer-devel at lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>>>>>>>>     
>>>>>>>>         
>>>>>>>>               
>>>>>>>>                 
>>>>>>> -------------------------------------------------------------------------
>>>>>>> This SF.net email is sponsored by DB2 Express
>>>>>>> Download DB2 Express C - the FREE version of DB2 express and take
>>>>>>> control of your XML. No limits. Just data. Click to get it now.
>>>>>>> http://sourceforge.net/powerbar/db2/
>>>>>>> _______________________________________________
>>>>>>> gstreamer-devel mailing list
>>>>>>> gstreamer-devel at lists.sourceforge.net
>>>>>>> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>>>>>>>   
>>>>>>>       
>>>>>>>             
>>>>>>>               
>>>>>   
>>>>>         
>>>>>           
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by DB2 Express
>> Download DB2 Express C - the FREE version of DB2 express and take
>> control of your XML. No limits. Just data. Click to get it now.
>> http://sourceforge.net/powerbar/db2/
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>>   
>>     
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>
>   




More information about the gstreamer-devel mailing list