Re: [linux-audio-dev] LAAGA API Proposal

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [linux-audio-dev] LAAGA API Proposal
From: Paul Davis (pbd_AT_Op.Net)
Date: Fri Jun 15 2001 - 06:36:39 EEST


Here we get to the crux of my problem with understanding GLAME's
"async" model:

>> if there's no input, and the components are driven by input, how can
>> the graph run?
>
>if you dont have input (no source) you dont have data to process and
>nothing to output - there is no point in "running" the graph then
>(of course it will be ready to run as soon as someone connects some
>input)

OK, I think I understand this now. Its because GLAME clients don't
call getBuffer() where is no connection. The problem is that the
component will never be driven (the client never calls getBuffer(),
and so never realizes there is work to do). therefore, components
downstream of its output(s) never get executed. this seems wrong. so
either i don't understand how GLAME does this, or the approach doesn't
work in a free-running system.

There's a graph that i'd like you to explain if you could.

(Cn: component N, audioio: some component driven by H/W)
   
  audioio:capture:chn1 -> C1 --------\
  audioio:capture:chn2 ---------\ ---> C4 ---> audioio:playback:chn1
                           C2 -> C3---/

C2 has no inbound connections, though some are possible. imagine it
as, say, a MIDI translator that converts incoming MIDI into a control
signal that affects C3. it could be connected to a MIDI source, but
its not.

assume also that C4 mixes its two connections into a single output.

i don't see what drives C2, and thus i don't see how the second
channel of audio ever shows up at the playback. in fact, i don't see
how anything shows up, since: nothing will ever call queueBuffer() to
send to C2, so C2 never runs. C3 never gets a buffer queued on its
second connection, so it blocks in getBuffer(). Likewise, C4 blocks
calling getBuffer() on one of its two connections as well.

it appears to me that this would stall the entire graph, which i don't
believe GLAME does. so how do you handle this?

--p


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Fri Jun 15 2001 - 08:06:30 EEST