[gmpi] Re: Decision Time: 7.1.2

  • From: Tim Hockin <thockin@xxxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Sat, 14 Jun 2003 00:43:03 -0700 (PDT)

> "Give developers the freedom to use either MAS, DX or TDM. There's
> bound to be situations where two formats will co-exist to provide
> backward compatibility, whatever".
> 
> What is the difference? 

yes, I am starting to see the problem.  If we allow F32 and F64 types, some
developers will start to write F64 plugs, JUST for marketing.  Then, when
they fail to load in some host, we have to say "Oh that host supports GMPI
v1.0 and this is a GMPI v1.0 plugin, but that host doesn't support this
plug".  We thereby (kinda) force all hosts to support F64, just so they aren't
incompatible with plugs.  Especially as F64 gains momentum.

If we force plug developers hands to F32, we can say a GMPI v1 host that
does float supports all GMPI v1 plugins.  Maybe GMPI v2 supports only F64,
and any GMPI v2 host must support F64, but CAN support v1 and v2

If we didn't have to support Int at all, this would be much easier.

So I THINK I am starting to believe 
a) supporting multiple datatypes costs plugins nothing (they choose one)
b) supporting multiple datatypes costs hosts because they need to support
the different types or be less competitive.

I don't really think B is all that bad, but we don't have a good reason to
do it.

As a jaunt aside:

We could make it pretty painless for hosts.  We allow both F32 and F64.  We
provide loadable converter libs as part of the GMPI SDK for all GMPI types.
When the host sees a plug with format X and wants to convert it to format Y
it loads the libgmpi_convert.so and calls gmpi_convert(X, Y).  

for example (real code!):
   int gmpi_convert(gmpi_datatype, gmpi_datatype, int, ...);

   int r;
   r = gmpi_convert(GMPI_FLOAT32, GMPI_FLOAT64, nsamples, f32_buf, f64_buf);
   if (r < 0) {
        /* can convert those types! */
   }

It isn't the most efficient thing in the whole world (you really do want to
discourage the user from doing it too often), but it does allow
hosts to support multiple types essentially transparently.  It even allows
the user to load other libs with the gmpi lib, if the other lib
provides better functionality (dithering or whatnot) for a conversion.

The engineer in me REALLY likes this.  I know everyone here will hate it.

But think about it - it makes plugs free to do a lot of things.  It is
almost free to host coders.  We debug it once.  It even opens a new market
where dithering companies can sell dithering modules.  Maximum flexibility,
and the only cost is to the user at runtime, where it should be.

----------------------------------------------------------------------
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

Other related posts: