LGTM1 conditional on those metrics landing (but no need to wait for data 
from the metrics to come in).

On Monday, December 6, 2021 at 3:22:26 PM UTC+1 Mike Taylor wrote:

> To circle back - last week we (myself + some other privacy/anti-covert 
> tracking reviewers) met with some folks working on this feature. We ended 
> up with an AI for Hongchan to land metrics on the values that 
> getOutputTimestamp would produce (if called, when a new AudioContext is 
> created, IIRC) as a way to get some data on the utility for using either of 
> these APIs for device fingerprinting.
>
> On 12/1/21 11:27 AM, Hongchan Choi wrote:
>
> So far we have not discussed the deprecation plan, but I believe that's 
> reasonable as well. 
>
> I registered myself to the webkit-dev list to post a question, but somehow 
> I am getting 403 forbidden. The email is sent to the list, I am not seeing 
> the message is getting posted on the list. Not sure what to do there.
>
> On Wed, Dec 1, 2021 at 3:18 AM Yoav Weiss <yoavwe...@chromium.org> wrote:
>
>> So are y'all planning to deprecate and remove `getOutputTimestamp` once 
>> this ships? If so, that sounds reasonable. 
>>
>> I note Chris asked y'all to file for a webkit signal upthread. Did that 
>> happen?
>>
>> On Tuesday, November 30, 2021 at 12:54:17 AM UTC+1 hongchan wrote:
>>
>>> 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/18800ec4-580e-4cea-bbaf-9e39345b9d53n%40chromium.org.

Reply via email to