Issue metadata
Sign in to add a comment
|
No audio when using DynamicsCompressorNode after reconnection
Reported by
andrew.macpherson@soundtrap.com,
Apr 6 2018
|
||||||||||||||||||||
Issue descriptionUserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36 Steps to reproduce the problem: 1. Go to https://jsfiddle.net/20bhjuyv/4/ and click in the document area to run the Javascript. 2. After 2 seconds a tone should play (works in earlier Chrome). 3. Instead there is no sound. What is the expected behavior? What went wrong? After disconnecting and reconnecting an earlier part of the graph the DynamicsCompressorNode stops working after its tail time (if there is silent input). Do nodes need to cancel any tail time scheduled disconnections if a new input is connected? Did this work before? Yes At least in 65.0.3325.181 and probably later Does this work in other browsers? Yes Chrome version: 67.0.3389.0 Channel: canary OS Version: OS X 10.13.4 Flash Version:
,
Apr 9 2018
Ok, I think there's some confusion in RemoveTailProcessingHandler. If tail processing is complete, we should remove the handler from the list and also disable outputs. But if we're removing the removing the handler from the list because we made a connection (or re-enabled output), we don't actually want to disable the output.
,
Apr 9 2018
Ok. When gain0 disconnects, the compressor starts tail processing. When gain0 reconnects, we don't inform the compressor to end tail processing. When the tail time comes, the compressor output is disabled. And nothing ever informs the compressor to enable outputs gain. I think this is not unique to the compressor. Any node with with a non-zero tail + latency time should have this problem.
,
Apr 9 2018
,
Apr 10 2018
,
Apr 11 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/00a02b5ca5fc489867d28ddaa3c8c0b753494cd0 commit 00a02b5ca5fc489867d28ddaa3c8c0b753494cd0 Author: Raymond Toy <rtoy@chromium.org> Date: Wed Apr 11 05:38:46 2018 Remove from tail list if node is connected or re-enabled When a node has its output disabled (because of disconnection or a source finishing), the node is placed on the tail processing list (if it has a tail). But when an upstream node is reconnected or otherwise has outputs enabled, we need to traverse the graph and re-enable all the outputs and if the node is on the tail processing list, we need to remove it from the list. If we don't, then when the tail time comes, the node will have it's output disabled and nothing will enable it again. Also, last_non_silent_time_ was incorrectly initialized to -1 instead of 0, causing tail processing to end 1 sec early in some cases. Manually verified that test-connections.html fails without this CL and passes with this CL. Also verified that the repro case works with this CL. Bug: 829767 Test: AudioNode/test-connections.html Change-Id: I3770806d30fad71c670930cc9427347ede798c90 Reviewed-on: https://chromium-review.googlesource.com/1002734 Commit-Queue: Raymond Toy <rtoy@chromium.org> Reviewed-by: Hongchan Choi <hongchan@chromium.org> Cr-Commit-Position: refs/heads/master@{#549776} [add] https://crrev.com/00a02b5ca5fc489867d28ddaa3c8c0b753494cd0/third_party/WebKit/LayoutTests/webaudio/AudioNode/tail-connections.html [modify] https://crrev.com/00a02b5ca5fc489867d28ddaa3c8c0b753494cd0/third_party/blink/renderer/modules/webaudio/audio_node.cc [modify] https://crrev.com/00a02b5ca5fc489867d28ddaa3c8c0b753494cd0/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc [modify] https://crrev.com/00a02b5ca5fc489867d28ddaa3c8c0b753494cd0/third_party/blink/renderer/modules/webaudio/deferred_task_handler.h
,
Apr 11 2018
|
|||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||
Comment 1 by rtoy@chromium.org
, Apr 6 2018Status: Assigned (was: Unconfirmed)