[gmpi] Re: Topic 7: Audio packaging

> >Disagree - in the same vein as wanting to fail when appropriate, connect
> >LtRt to a Stereo plug is probably wrong.
> 
> Now I feel like I'm arguing your original point of view. Something like a 

yeah, how ironic.

> stereo peak limiter can process LtRt, binaural, M/S, but it would be really 
> awkward to have to specifically enumerate that it can deal with all these 
> encodings. That's getting way too rigid for my taste.

OK, so hold on.  We're looking at two scenarios:

1)  Tim's original idea
  a) Decode LtRt into 4 mono channels
  b) Process these 4 channels with normal plugins
     - the problem is that you can do things to these 4 channels that is not 
       LtRt safe, right?  This is bad.
  c) Re-encode to LtRt and output
     - because you may have done invalid things, your encoding may not be
       100% accurate (but that is what 'encoding' often implies) but it WILL
       be valid LtRt.

2)  Bill's idea
  a) Load an LtRt 2-channel stream as-is
  b) Process these 2 channels with normal plugins
     - the problem is that you can do things to these 2 channels that is not 
       LtRt safe, right?  This is bad.
  c) Output LtRt
     - because you may have done invalid things, your encoding may not be
     valid AT ALL as an LtRt stream.

So now, which version of "This is bad" is less bad?

> N-channel       1       (this is mono)
> N-channel       2       (this is stereo)
> N-channel       4       (this is quad)
> 
> Each of the defined formats would have a channel ordering convention.

N-channel is too generic for known encodings.  N-channel implies there are
no defined names - how can there be, if I have a 117 channel stream - you
have no frigging clue what it is.  To assume a 2-channel NChannel is stereo
is a big assumption.

There is a possible way to solve this, without picking from bad or worse
above.

Plugins define inputs as a capability tuple: (nchannels, encoding).

nchannels       encoding
--------        --------
1               mono
2               stereo
2               LtRt
2               M/S
3               2.1
4               quad
6               5.1
7               6.1
8               7.1
N               unknown

The plugin then says (this is getting gross) "I can accept '1:mono',
'2:stereo', '6:5.1'" if it is not LtRt safe.  If it is safe, it can say
'1:*', '2:*', '6:*'.  Or simpler '*:*'.  The tuple identifies number of
channels and encodings available on those channels.

Then when you connect your LtRt to a non-LtRt-safe plugin, host can gripe,
but simple things like peak-meters (I'll take your word that this actually
means something) can accept 2/*.

I just dreamed this up on the way home - poke holes in it?

Tim

p.s.  maybe it is better to say that LtRt is a 4 channel encoding, and the
semantic becomes I am a 4-channel plugin which processes LtRt encoded onto 2
streams?  Maybe not.


----------------------------------------------------------------------
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: http://www.freelists.org/archives/gmpi
Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe

Other related posts: