On 23 Oct 2002, Benno Senoner wrote:
> I contacted the author of the VQF plugin about opinions of running > windows plugins under Linux. He is not subscribed to LAD so he told me > to forward this mail to the list. > cheers, > Benno > Interesting. But one idea I just got... Could it be possible to overcome all problems mentioned just by simply adding jack-support to the wine-server? Then someone could make a simple windows-program for chaining directx and vst plug-ins. I dont know how the wine-server works though, so please shout out if its not possible. > On Tue, 22 Oct 2002, Benno Senoner wrote: > > > We are currently discussing about the possibility to run VST or > DirectX audio > > plugins on Linux in real time. > > I remember you wrote an xmms plugin that allowed to run the windows > VQF plugin > > under Linux using wine & co. > > <snip> > > It would be cool if you could write on the linux-audio-dev list about > > experiences in that field. > > I am afraid I will have to keep this short as I'm really busy at the > moment. I also am a long way from being an audio expert or wine so I > doubt > my experiences will be of much use to you hence I didn't subscribe to > the > list . Feel free to forward this to the audio-dev list and cc me on it > if > you wish > > First, the solution I used for the VQF plugin was extremly clunky. There > was no way of letting the plugin run inside XMMS without causing > segfaults. They simply did not merge well no matter what I tried. > > I suspect but never proved that it was how WINE has to lay out it's > memory > to be able to mimic how Windows sees things like segments. The layout is > drastically different to how a Linux app normally sees things. By the > time > a VQF plugin could be loaded, the two very differnet approaches to > managing memory simply did not work well together > > In the end, the solution used was this; > > 1. At XMMS start, fork and exec an application that uses libwine to load > the windows DLL. Communicate with the parent through pipes, sockets > or > shared memory > > 2. Start up XMMS as normal > > 3. The plugin just implements stub functions for every routine a plugin > is > meant to implement and communicates the information to the child > > This had a number of issues. First, it was difficult to get information > from the plugin. It opened the sound device directly itself which meant > that visualisation data was not available. > > At one point, this was resolved by hacking wine itself to write the PCM > data to a named pipe rather than playing to a device but needless to > say, > it was too ugly to live and couldn't really be distributed easily. (I > considered it unreasonable to get users to patch and compile WINE just > to > play a piece of music, visualisations weren't that important). > > If I had a nice plugin, what I would try to do is set up two unamed > pipes > at application start to a child application using libwine. One pipe for > writing would send commands and one pipe for reading would take PCM > data. > I don't know how viable this is for you. > > > I'm not a windows / wine expert but commonsense says me it should be > > possibile to run these windows plugins under Linux in real time with > small > > buffer sizes in order to get low response times (low latency). > > I would be inclined to go the other way. With the above solution, I > would > try and buffer as much data as humanly possible to try and avoid the > overhead of calling wine constantly. For example, I would try and get 10 > seconds worth of data from the windows plugin before starting to play > anything. Once I had the PCM data, it would not matter if the plugin > could > not make real time contraints. > > > It should be possible to let wine handle the GUI stuff . (if word and > excel > > runs then it should be able to run plugin GUIs too). > > It can, but remember that if you are trying to use this plugin with a > normal application, you are likely to run into a lot of trouble. At > least > I did, but this was a few years back. Things might be different now > > I imagine you already have checked out how avifile loads it's plugins. > When I last looked at it (a few years back), it was using a stripped > down > version of WINE to just load the plugins and get the function pointers. > It > might be worth checking into. > > -- > Mel Gorman > MSc Student, University of Limerick > http://www.csn.ul.ie/~mel > > > > >