I agree that outputLatency is better in terms of both usability and
interoperability.

FYI, the counter shows getOutputTimestamp is about 0.001% and there are no
partners who are using this API:
https://chromestatus.com/metrics/feature/popularity#AudioContextGetOutputTimestamp


On Mon, Nov 22, 2021 at 3:00 PM Chris Cunningham <chcunning...@google.com>
wrote:

> Re: privacy discussion, Hongchan and I scheduled to meet with Paul Jensen
> next week.
>
> Also, I recently determined that this new WebAudio API (outputLatency) is
> largely redundant with an existing API (getOutputTimestamp()).
> https://github.com/WebAudio/web-audio-api/issues/2461
>
> Chrome has already shipped the latter API, so I believe this new API
> doesn't add potential for additional fingerprinting. Shipping both APIs is
> still a good idea for the sake of inter-op.
>
> On Friday, November 19, 2021 at 8:45:28 AM UTC-8 hongchan wrote:
>
>> Thanks for the clarification, Yoav!
>>
>> I hope the mitigation approach in the previous comment makes sense from
>> the privacy perspective, but it will hurt the usability/value of this API
>> significantly.
>> For the privacy-focused discussion, should I use other venues rather than
>> this I2S thread?
>>
>> Cheers,
>> Hongchan
>>
>>
>> On Thu, Nov 18, 2021 at 10:35 PM Yoav Weiss <yoav...@chromium.org> wrote:
>>
>>> Apologies, I misread the discussion. A spec issue is indeed not needed,
>>> as this is already covered.
>>>
>>> From my perspective, since this exposes active entropy, the fact that it
>>> exposes more data than the (passively exposed) platform is not prohibitive
>>> on its own.
>>> At the same time, it'd be good to work with privacy-focused folks to
>>> make sure we expose as little information as needed to maintain the API's
>>> functionality, but not more.
>>>
>>> On Fri, Nov 19, 2021 at 4:57 AM Chris Cunningham <chcunn...@chromium.org>
>>> wrote:
>>>
>>>> > If the reported value is incorrect, the A/V synchronization won't be
>>>> possible. (Perhaps chcunningham@ can say more about this use case.)
>>>>
>>>> The typical video player design drives the clock with audio. In short,
>>>> you send buffers of audio to the OS, use the latency value to know when
>>>> those buffers actually reach the user's ears, and choose a video frame
>>>> accordingly. Apps using WebCodecs will design apps this way (example
>>>> here <https://github.com/chcunningham/wc-talk#simple_video_playerhtml>
>>>> ).
>>>>
>>>> As Mike notes, the latency value can vary by quite a lot depending on
>>>> the device (huge differences for bluetooth vs wired), so it's critical to
>>>> have the platform tell you when this changes. In terms of precision, we can
>>>> _probably_ do some rounding like to the nearest millisecond. Higher values
>>>> may lead to issues; user studies
>>>> <https://en.wikipedia.org/wiki/Audio-to-video_synchronization#Recommendations>
>>>> have shown sensitivity to fairly low values of drift.
>>>>
>>>> Aside: we may eventually desire a display latency value for similar
>>>> reasons.
>>>>
>>>> On Thu, Nov 18, 2021 at 12:45 PM Hongchan Choi <hong...@chromium.org>
>>>> wrote:
>>>>
>>>>> Hi Yoav,
>>>>>
>>>>> Could you clarify what needs to be discussed from the spec side? The
>>>>> feature (and its behavior) is properly specified, and its privacy aspect 
>>>>> is
>>>>> already reviewed by W3C:
>>>>> https://github.com/WebAudio/web-audio-api/issues/1498 (outputLatency)
>>>>> https://github.com/WebAudio/web-audio-api/issues/1495 (general
>>>>> security/privacy consideration)
>>>>>
>>>>> I thought the request from this thread is to devise a Chrome-specific
>>>>> mitigation, not reopening the spec discussion. Please correct me if I'm
>>>>> mistaken.
>>>>>
>>>>> Cheers,
>>>>> Hongchan
>>>>>
>>>>>
>>>>> On Thu, Nov 18, 2021 at 12:37 PM Yoav Weiss <yoav...@chromium.org>
>>>>> wrote:
>>>>>
>>>>>> Hey folks!
>>>>>>
>>>>>> It seems like there are some things to figure out here before
>>>>>> shipping. Could y'all file a spec issue to discuss this with the broader
>>>>>> community?
>>>>>>
>>>>>> On Tuesday, November 16, 2021 at 6:16:14 PM UTC+1 hongchan wrote:
>>>>>>
>>>>>>> Thanks for the feedback, Mike. This is really helpful!
>>>>>>>
>>>>>>> Mitigation strategies include adding jitter (dithering) and
>>>>>>>> quantization so that the exact skew is incorrectly reported
>>>>>>>>
>>>>>>>
>>>>>>> This bit refers to the randomization mechanism deployed by other
>>>>>>> browsers, but this approach defeats the purpose of this specific API 
>>>>>>> and it
>>>>>>> is also argued in the spec:
>>>>>>>
>>>>>>> Note however that most audio systems aim for low latency, to
>>>>>>>> synchronise the audio generated by WebAudio to other audio or video 
>>>>>>>> sources
>>>>>>>> or to visual cues (for example in a game, or an audio recording or 
>>>>>>>> music
>>>>>>>> making environment). Excessive latency decreases usability and may be 
>>>>>>>> an
>>>>>>>> accessibility issue.
>>>>>>>
>>>>>>>
>>>>>>> If the reported value is incorrect, the A/V synchronization won't be
>>>>>>> possible. (Perhaps chcunningham@ can say more about this use case.)
>>>>>>>
>>>>>>> One mitigation idea: we can do some research to collect values
>>>>>>> reported by major platforms/devices and devise a reasonable "bucket 
>>>>>>> system"
>>>>>>> for them.
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Nov 16, 2021 at 8:14 AM Mike Taylor <mike...@chromium.org>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> I suppose it would be nice to do some testing to verify the idea
>>>>>>>> that there's a small number of platform + audio device pairs. I was 
>>>>>>>> hoping Mozilla's
>>>>>>>> hardware survey <https://data.firefox.com/dashboard/hardware>
>>>>>>>> might have something on that, but it doesn't track speakers.
>>>>>>>>
>>>>>>>> Just from some simple testing with the following script (thanks
>>>>>>>> dmcardle@ for the snippet) in Firefox on macOS by 3 people, we
>>>>>>>> have very different values that change dramatically when you unplug a
>>>>>>>> headset:
>>>>>>>>
>>>>>>>> ```
>>>>>>>> (function getNextSample() {
>>>>>>>>     console.log((new AudioContext).outputLatency);
>>>>>>>>     setTimeout(getNextSample, 10);
>>>>>>>> })();
>>>>>>>> ```
>>>>>>>> Here's the values on my macbook, using Firefox Nightly:
>>>>>>>> bose headset plugged in: 0.005895833
>>>>>>>> take headset out: 0.013083333
>>>>>>>> plug bose headset back in: 0.005875 (different, but stable)
>>>>>>>>
>>>>>>>> https://www.w3.org/TR/webaudio/#priv-sec mentions some mitigation
>>>>>>>> strategies - do we have a plan to apply any of them?
>>>>>>>>
>>>>>>>> On 11/15/21 11:53 AM, Ajay Rahatekar wrote:
>>>>>>>>
>>>>>>>> The small number of platform + audio output device combination i.e.
>>>>>>>> a large number of users with the same platform and output device  
>>>>>>>> (users on
>>>>>>>> macOS using airpods) would likely be a natural obfuscator. Not sure if 
>>>>>>>> we
>>>>>>>> have data about the distribution.
>>>>>>>>
>>>>>>>> On Mon, Nov 15, 2021 at 8:05 AM Mike Taylor <mike...@chromium.org>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> On 11/15/21 10:56 AM, Hongchan Choi wrote:
>>>>>>>>>
>>>>>>>>> On Mon, Nov 15, 2021 at 6:49 AM Mike Taylor <mike...@chromium.org>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> On 11/15/21 1:47 AM, Yoav Weiss wrote:
>>>>>>>>>>
>>>>>>>>>> On Fri, Nov 12, 2021 at 5:33 PM 'Ajay Rahatekar' via blink-dev <
>>>>>>>>>> blin...@chromium.org> wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> TAG review status
>>>>>>>>>>>
>>>>>>>>>>> Completed: Web Audio API specification is W3C Recommendation.
>>>>>>>>>>>
>>>>>>>>>>> Risks
>>>>>>>>>>>
>>>>>>>>>>> There is a risk of the feature being used for fingerprinting.
>>>>>>>>>>> However outputLatency is the buffer size of the
>>>>>>>>>>> platform-provided audio callback, so the value is inherently
>>>>>>>>>>> platform-specific. That said, the majority of the platform audio 
>>>>>>>>>>> buffer
>>>>>>>>>>> size is widely known. (MacOS = 128 frames, Windows = 10ms, Android 
>>>>>>>>>>> = 96
>>>>>>>>>>> frames, etc)
>>>>>>>>>>>
>>>>>>>>>>> This feature  does not expose more than what you can query/infer
>>>>>>>>>>> from the UA string.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Would that exposure map cleanly to UA-Platform
>>>>>>>>>> <https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform>,
>>>>>>>>>> which is considered low-entropy and exposed by default? Or would it 
>>>>>>>>>> add
>>>>>>>>>> more than that?
>>>>>>>>>>
>>>>>>>>>> /cc +Mike Taylor
>>>>>>>>>>
>>>>>>>>>>> Looking at
>>>>>>>>>> https://www.w3.org/TR/webaudio/#dom-audiocontext-outputlatency,
>>>>>>>>>> it states that it depends on the platform _and_ the hardware output 
>>>>>>>>>> device.
>>>>>>>>>> If I use an app using outputLatency with speaker A, then switch to 
>>>>>>>>>> speaker
>>>>>>>>>> B, will the outputLatency remain the same?
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> The specification says: If the audio output device is changed the
>>>>>>>>> outputLatency attribute value will be updated accordingly.
>>>>>>>>>
>>>>>>>>> So the answer is no. The value will change accordingly.
>>>>>>>>>
>>>>>>>>> If that's the case, then outputLatency can reveal more entropy
>>>>>>>>> than just platform alone, right? It would be useful to know what this 
>>>>>>>>> looks
>>>>>>>>> like in practice, or what mitigations we might be able to apply 
>>>>>>>>> depending
>>>>>>>>> on the size of these latency differences.
>>>>>>>>>
>>>>>>>>
>>>>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGJqXNuhn9beXUCT-ADnQ7cLMk8fnLPQwikXOpxe69Z_yS9sXQ%40mail.gmail.com.

Reply via email to