Frédéric RUGET
2004-11-09 00:21:01 UTC
Hello,
First thanks a lot for the great easy-to-use portaudio library.
I'm the author of a portaudio output module for VLC (an open source
multimedia player). Using portaudio/ASIO enables to drive audio cards
that provide only ASIO and no WMME support (such as EMU 1820M in
multichannel mode). __Very__ useful :-)
1. MY PROBLEM
I'm using portaudio v19 on windows XP, compiled with cygwin/gcc,
and linked with steinberg ASIO sdk (also compiled with cygwin/gcc).
In this configuration,
it seems all interactions between the application and the library have
to be invoked from the same and unique thread. Even after a =
Pa_CloseStream,
the next Pa_OpenStream must be invoked from the same thread.
Failing to do so results in a popup message :
title: ASIO Multimedia
message: 'ASIOMME.DLL' is already running !
One possible workaround when you are dealing with an application
that was originally designed with multithreading in mind (such as VLC),
is to have all interactions with the portaudio library to be
performed by a single dedicated thread, that is driven via message
passing from the other threads; it works (this is the current
implementation in VLC) but it is rather ugly and unpractical.
2. MY QUESTION
Apparently (VLC team tells me), this problem only occurs with
portaudio/cygwin/ASIO and in particular does not occur with
portaudio/linux.
=3D=3D> Would it be possible to modify the win32/ASIO implementation
so that multithreaded applications are supported ?
(or maybe I did miss something and multithread is already
supported??)
Thanks a lot for your answers,
Frederic RUGET
First thanks a lot for the great easy-to-use portaudio library.
I'm the author of a portaudio output module for VLC (an open source
multimedia player). Using portaudio/ASIO enables to drive audio cards
that provide only ASIO and no WMME support (such as EMU 1820M in
multichannel mode). __Very__ useful :-)
1. MY PROBLEM
I'm using portaudio v19 on windows XP, compiled with cygwin/gcc,
and linked with steinberg ASIO sdk (also compiled with cygwin/gcc).
In this configuration,
it seems all interactions between the application and the library have
to be invoked from the same and unique thread. Even after a =
Pa_CloseStream,
the next Pa_OpenStream must be invoked from the same thread.
Failing to do so results in a popup message :
title: ASIO Multimedia
message: 'ASIOMME.DLL' is already running !
One possible workaround when you are dealing with an application
that was originally designed with multithreading in mind (such as VLC),
is to have all interactions with the portaudio library to be
performed by a single dedicated thread, that is driven via message
passing from the other threads; it works (this is the current
implementation in VLC) but it is rather ugly and unpractical.
2. MY QUESTION
Apparently (VLC team tells me), this problem only occurs with
portaudio/cygwin/ASIO and in particular does not occur with
portaudio/linux.
=3D=3D> Would it be possible to modify the win32/ASIO implementation
so that multithreaded applications are supported ?
(or maybe I did miss something and multithread is already
supported??)
Thanks a lot for your answers,
Frederic RUGET