On Thu, Aug 4, 2016 at 10:19 AM, Andrew Eikum aeikum@codeweavers.com wrote:
On Wed, Aug 03, 2016 at 02:50:07PM -0300, Bruno Jesus wrote:
After looking for gstreamer related source code in Wine I could not find a place that calls winegstreamer to actually do something like video/audio decode/output. I think it should be somewhere amstream/quartz related but I'm not sure.
quartz is crazy complicated. The short version is Wine calls winegstreamer's DllRegisterServer during prefix creation because it's present in <loader/wine.inf.in>. Applications which use directshow (quartz and friends) eventually will load winegstreamer, usually via IGraphBuilder::Connect in quartz.
winegstreamer itself subclasses the implementations in strmbase, which handles a lot of the actual moving of data between filter graph components.
My question is basically what I need to do (preferably with source example or documentation) to get a mpg movie to play and that ends up using winegstreamer, for example. For example with AVI files I can simply do some avifil32/msvfw32 calls and get the video output to a window.
AVI has a decoder built into Wine, as you found. Other formats that don't have a built-in decoder should go through winegstreamer, though the connection will fail if your gstreamer installation can't decode it. Very few distros ship useful 32-bit gstreamer libraries.
You can use a program called Graph Studio[1] to explore dshow graphs. The "File->Render Media File" function is basically a front-end to IGraphBuilder::RenderFile, which should build a complete graph to play back a media file.
[1] http://blog.monogram.sk/janos/tools/monogram-graphstudio/
Hope that helps, Andrew
Hi, thank you very much for your response. I downloaded the app but as expected it looks like I don't have the required codecs for the test videos I got.
#Test 1 fixme:gstreamer:unknown_type Could not find a filter for caps: video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, framerate=(fraction)10000000/333667, width=(int)704, height=(int)396
#Test 2 fixme:gstreamer:unknown_type Could not find a filter for caps: audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, level=(string)2, base-profile=(string)lc, profile=(string)lc, codec_data=(buffer)1210, rate=(int)44100, channels=(int)2
#Test 3 fixme:gstreamer:unknown_type Could not find a filter for caps: video/mpeg, systemstream=(boolean)true, mpegversion=(int)2
The application crashed in tests 1 and 3, test 2 plays audio only. Not sure if it was supposed to crash or not.
I tried installing some extra i386 packages here in Debian x86_64 but apt-get wants to uninstall basically everything else if I do so I guess I'm stuck for now. Currently I have plugins-base, plugins-good and fluendo-mp3.
Best regards, Bruno