PortAudio / portaudio

PortAudio is a cross-platform, open-source C language library for real-time audio input and output.
Other
1.5k stars 307 forks source link

blocking i/o not implemented for asio (committed needs testing see #148) #57

Open PortAudio-admin opened 17 years ago

PortAudio-admin commented 17 years ago

Issue created by @RossBencina

ReadStream and WriteStream are not implemented for ASIO. It is necessary to set up separate ring buffers to implement this. If the Read or Write functions were blocked waiting to input or output data to the FIFOs the ASIO callback could set an event/condition variable to wake them up.

There is now a new ticket covering testing this:

148 -- ASIO blocking i/o implementation needs testing

PortAudio-admin commented 16 years ago

Comment by @RossBencina

Sven Fischer from Institute of Hearing Technology and Audiology (IHA) http://www.hoertechnik-audiologie.de has sent in a patch for this (attached to this ticket). I'm working on merging it.

PortAudio-admin commented 16 years ago

Comment by @RossBencina

Progress made. I've just checked in a version of Sven's patch to allow the standard portaudio ringbuffer to handle multi-byte elements. see r1346

PortAudio-admin commented 16 years ago

Comment by @RossBencina

I have a final patch from Sven. I just need to merge and review it. No reason why this shouldn't go in before RC1

PortAudio-admin commented 16 years ago

Comment by @RossBencina

Checked in Sven Fischer's implementation of this in r1363

Still need to ensure we havn't broken the build systems too much. Waiting for some feedback and testing.

PortAudio-admin commented 16 years ago

Comment by @RossBencina

The following build files still need to be updated to included pa_ringbuffer.c

File bindings\cpp\build\vc6\devs_example.dsp: SOURCE=........\pa_asio\pa_asio.cpp File bindings\cpp\build\vc6\sine_example.dsp: SOURCE=........\pa_asio\pa_asio.cpp

File bindings\cpp\build\vc7_1\devs_example.vcproj: RelativePath="........\src\hostapi\asio\pa_asio.cpp"> File bindings\cpp\build\vc7_1\sine_example.vcproj: RelativePath="........\src\hostapi\asio\pa_asio.cpp">

File build\dev-cpp\Makefile-dll: ./pa_asio.o: ../../pa_asio/pa_asio.cpp $(CPP) -c ../../pa_asio/pa_asio.cpp -o ./pa_asio.o $(CXXFLAGS) File build\dev-cpp\Makefile-static: ./pa_asio.o: ../../pa_asio/pa_asio.cpp $(CPP) -c ../../pa_asio/pa_asio.cpp -o ./pa_asio.o $(CXXFLAGS)

File build\dev-cpp\portaudio-dll.dev: FileName=....\pa_asio\pa_asio.cpp BuildCmd=$(CPP) -c pa_asio.cpp -o ./pa_asio.o $(CXXFLAGS) File build\dev-cpp\portaudio-static.dev: FileName=....\pa_asio\pa_asio.cpp BuildCmd=$(CPP) -c pa_asio.cpp -o ./pa_asio.o $(CXXFLAGS)

PortAudio-admin commented 13 years ago

Comment by @RossBencina

The blocking API needs to be estensively tested QAed.

Code review is needed for ReadStream, WriteStream, GetStreamReadAvailable, GetStreamWriteAvailable in pa_asio.cpp.

PortAudio-admin commented 12 years ago

Comment by @RossBencina

TRAC migration: propagating ticket status from TRAC

PortAudio-admin commented 12 years ago

Comment by @RossBencina

PA_AsioBlockingIo_20080212.zip

Original patch from Patch from Sven Fischer