----- Original Message ----- From: "David Olofson" <david@xxxxxxxxxxx> To: <gmpi@xxxxxxxxxxxxx> Sent: Friday, May 23, 2003 3:07 PM Subject: [gmpi] Re: Topic 7: Audio packaging > On Friday 23 May 2003 14.26, Vincent Burel wrote: > > An other important point concerning audio package. > > > > GMPI has to fix the constraint concerning the In/Out pointers : > > - is it possible to recieve egual input pointer ? (e.g. lpin1 == > > lpin2) - is it possible to recieve egual ouput pointer ? (e.g. > > lpout1 == lpout2) - is it possible to recieve out pointer egual to > > in pointer ? (e.g. lpout1 == lpin1) > > > > these questions are important also for the host. Some algorithm , > > in some cases can use some in/out buffer as temporary buffer, In > > other case some algorithm optimization requires to know exactly > > what can be the scenario with in/out pointer values. > > Yes... > > I have this obsession with "context IDs". :-) It's what XAP uses to > describe to a host which event sources and targets live together in > inner loops, and it's a very simple and very powerful solution. > Events always come in timestamp order, and no one has to actually > sort them, ever; only merge when multiple source contexts are sending > to the same target context. > > > I think something similar could be used to turn the "inplace broken" > concept into something that's actually usefull for more than the > simplest I/O layouts, and plugins with multiple inner loops. (A synth > with separate outputs, for example.) > > Just mark each channel/pin/whatever (ie one mono audio stream in or > out) with a context ID. Same IDs means same inner loop, provided that > loop is in-place safe. > > If a plugin is *totally* in-place broken, each audio input or output > will will have it's own plugin unique context ID. This tells the host > that there must be one unique buffer connected to each pin, or weird > things will happen. > > If you have a plugin where each input is paired with an output, and > each pair is in-place safe, just mark the input and the output in > each pair with the same context ID. Now the host will know that it's > ok to reuse buffers, as long as reuse involves only ins and outs with > the same context ID. It's also possible to see exactly which output > "belongs" to which input. > > Finally, if the plugin somehow, for each sample index or for the whole > buffers, ensures that all input samples are read before any output > samples are overwritten within a group of input and output pins, it > can use the same context ID for all pins in that group. > > > Please note that I came up with this just now, and haven't thought all > that much about it. There might be holes in it. i've asked to fix it, means just write it in the documentation and reply by YES or NO to the 3 questions below. - is it possible to recieve egual input pointer ? (e.g. lpin1 == lpin2) - is it possible to recieve egual ouput pointer ? (e.g. lpout1 == lpout2) - is it possible to recieve out pointer egual to in pointer ? (e.g. lpout1 == lpin1) i don't want to deal with different cases . it's too much . I just want to know the exact constraints. Otherwise Host manufacturers or Plug-in developpers could get excellent idea which could cause trouble with some algorithm and generate compatibility problem with different host ! :-) Vincent Burel ---------------------------------------------------------------------- Generalized Music Plugin Interface (GMPI) public discussion list Participation in this list is contingent upon your abiding by the following rules: Please stay on topic. You are responsible for your own words. Please respect your fellow subscribers. Please do not redistribute anyone else's words without their permission. Archive: //www.freelists.org/archives/gmpi Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe