W3C home > Mailing lists > Public > public-audio@w3.org > July to September 2013

Re: AudioBuffer channel read/write APIs

From: K. Gadd <kg@luminance.org>
Date: Thu, 12 Sep 2013 11:27:34 -0700
Message-ID: <CAPJwq3Xgqi1iYrBMWpFbB9c_pRw+He7-mvaL98fBeSi63ZK=QA@mail.gmail.com>
To: "Robert O'Callahan" <robert@ocallahan.org>
Cc: Ehsan Akhgari <ehsan.akhgari@gmail.com>, Marcus Geelnard <mage@opera.com>, "public-audio@w3.org" <public-audio@w3.org>
More talking about completeness than anything else; fully expressive memcpy
effectively has five arguments:

dest, src, dest offset, src offset, count

In a language like C, you encode the offsets into the pointers, that is:

&dest[dest offset], &src[src offset], count

You can't do that trivially in this case, so with the current API it looks
something like

new TypedArrayView(dest.buffer, dest offset, count), src, src offset, count

The lack of symmetry is just weird, especially since given the lack of
symmetry, it becomes unclear which buffer the offset refers to. And the
symmetry is hard to express since in this case one of the buffers is
controlled by the browser, so you can't just make a view out of it.

Mostly I want symmetry here (and in similar operations like memcpy
equivalents) because without it you have to cause a bunch of GC churn by
creating thousands of temporary views, and that's pretty error-prone to
boot.

So essentially I think I'm asking for the Web Audio version of a given API
to be as expressive and symmetric as the C version would be, where
reasonable. This seems like a good opportunity, since it's speccing a new
API that basically just exposes two special variants of memcpy.

(That's also why I'm okay with a version that is just one buffer and an
offset, since everything else can be expressed via a view, if you ignore
the performance consequences)


On Thu, Sep 12, 2013 at 8:56 AM, Robert O'Callahan <robert@ocallahan.org>wrote:

> On Thu, Sep 12, 2013 at 5:13 AM, K. Gadd <kg@luminance.org> wrote:
>
>> Arguably no matter the terminology, start/offset are unclear when you
>> have both a source and a destination. IMO either prefix the offset argument
>> (sourceOffset, etc) or allow offsets to be specified for source and
>> destination. Passing both source and destination offsets would make these
>> APIs a lot more useful since they allow you to carve slices out of a much
>> larger buffer, and there's already the length argument. If you just want
>> people to use typed array views for that, probably take out the length
>> argument and just use the length of the source array.
>>
>
> For most uses I could think of, starting at offset 0 of the array was
> fine. How would an offset into the array make this much more useful?
>
> Rob
> --
> Jtehsauts  tshaei dS,o n" Wohfy  Mdaon  yhoaus  eanuttehrotraiitny  eovni
> le atrhtohu gthot sf oirng iyvoeu rs ihnesa.r"t sS?o  Whhei csha iids  teoa
> stiheer :p atroa lsyazye,d  'mYaonu,r  "sGients  uapr,e  tfaokreg iyvoeunr,
> 'm aotr  atnod  sgaoy ,h o'mGee.t"  uTph eann dt hwea lmka'n?  gBoutt  uIp
> waanndt  wyeonut  thoo mken.o w  *
> *
>
Received on Thursday, 12 September 2013 18:28:43 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:50:11 UTC