Ticket #57 (assigned defect)

Opened 12 months ago

Last modified 6 months ago

blocking i/o not implemented for asio

Reported by: rossb Owned by: rossb
Priority: blocker Milestone: V19-RC1
Component: host-api-asio Version: 2.0
Keywords: Cc:

Description

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.

Attachments

PA_AsioBlockingIo_20080212.zip (31.3 kB) - added by rossb 6 months ago.
Patch from Sven Fischer

Change History

Changed 6 months ago by rossb

Patch from Sven Fischer

Changed 6 months ago by rossb

  • status changed from new to assigned

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.

Changed 6 months ago by rossb

  • priority changed from minor to major

Changed 6 months ago by rossb

  • priority changed from major to critical

Changed 6 months ago by rossb

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

Changed 6 months ago by rossb

  • priority changed from critical to blocker

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

Changed 6 months ago by rossb

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.

Changed 6 months ago by rossb

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)

Note: See TracTickets for help on using tickets.