Migrate legacy audio mirroring to use new AudioService loopback API |
||||
Issue descriptionThis is a general tracking bug for all work related to migrating away from the legacy audio mirroring implementation, and towards the new mojo AudioService loopback API. Lots of object graph surgery coming our way here! :)
,
Apr 4 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a8e2568ec1115fb89204f2ef5673b827544d7765 commit a8e2568ec1115fb89204f2ef5673b827544d7765 Author: Yuri Wiitala <miu@chromium.org> Date: Wed Apr 04 23:55:38 2018 Introduce audio::GroupCoordinator and audio::GroupMember concept. The GroupCoordinator will be used in the new Audio Service loopback and muting features. It tracks one or more audio outputs that are members of the same group, and notifies interested entities (e.g., a muter, a loopback mixer, etc.) of membership changes to the group. Bug: 824019 Change-Id: I9b8b1564e8fa7977d2d8dd21c466c7cbf5cdd3f2 Reviewed-on: https://chromium-review.googlesource.com/987093 Reviewed-by: Max Morin <maxmorin@chromium.org> Cr-Commit-Position: refs/heads/master@{#548257} [modify] https://crrev.com/a8e2568ec1115fb89204f2ef5673b827544d7765/services/audio/BUILD.gn [add] https://crrev.com/a8e2568ec1115fb89204f2ef5673b827544d7765/services/audio/group_coordinator.cc [add] https://crrev.com/a8e2568ec1115fb89204f2ef5673b827544d7765/services/audio/group_coordinator.h [add] https://crrev.com/a8e2568ec1115fb89204f2ef5673b827544d7765/services/audio/group_coordinator_unittest.cc [add] https://crrev.com/a8e2568ec1115fb89204f2ef5673b827544d7765/services/audio/group_member.h
,
Apr 6 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/08d2ef4b272610e6085aa3ea7eb0f421d1d2c8cd commit 08d2ef4b272610e6085aa3ea7eb0f421d1d2c8cd Author: Yuri Wiitala <miu@chromium.org> Date: Fri Apr 06 03:42:05 2018 Fork media::AudioOutputController → audio::OutputController In order to break-away from the legacy threading model and eliminate the need for future circular dependencies on src/media/(audio|base), this change forks AudioOutputController and AudioSyncReader into src/services/audio. In addition to the namespace and class naming changes, the following modifications have been made on the forked code: 1. Removed the ref-counting of audio::OutputController, eliminated the Create() factory methods, and changed a few heap-allocated objects into proper class data members (i.e., composition instead of indirection). 2. Removed the XYZ()→DoXYZ() thread-trampoline methods. 3. Updated comments that became misleading or are not otherwise accurate to how things work in the new Audio Service. 4. Changed the audio::OutputStream to use the forked OutputController and SyncReader. 5. Updated unit tests. Further clean-ups and code deletions/refactorings are intentionally being left TODO in future patches. Bug: 824019 , 803102 Change-Id: If479c63909c252c8fca135c9a51dcac76feeec8c Reviewed-on: https://chromium-review.googlesource.com/982904 Commit-Queue: Yuri Wiitala <miu@chromium.org> Reviewed-by: Olga Sharonova <olka@chromium.org> Reviewed-by: Max Morin <maxmorin@chromium.org> Cr-Commit-Position: refs/heads/master@{#548658} [modify] https://crrev.com/08d2ef4b272610e6085aa3ea7eb0f421d1d2c8cd/services/audio/BUILD.gn [add] https://crrev.com/08d2ef4b272610e6085aa3ea7eb0f421d1d2c8cd/services/audio/output_controller.cc [add] https://crrev.com/08d2ef4b272610e6085aa3ea7eb0f421d1d2c8cd/services/audio/output_controller.h [add] https://crrev.com/08d2ef4b272610e6085aa3ea7eb0f421d1d2c8cd/services/audio/output_controller_unittest.cc [modify] https://crrev.com/08d2ef4b272610e6085aa3ea7eb0f421d1d2c8cd/services/audio/output_stream.cc [modify] https://crrev.com/08d2ef4b272610e6085aa3ea7eb0f421d1d2c8cd/services/audio/output_stream.h [add] https://crrev.com/08d2ef4b272610e6085aa3ea7eb0f421d1d2c8cd/services/audio/sync_reader.cc [add] https://crrev.com/08d2ef4b272610e6085aa3ea7eb0f421d1d2c8cd/services/audio/sync_reader.h [add] https://crrev.com/08d2ef4b272610e6085aa3ea7eb0f421d1d2c8cd/services/audio/sync_reader_unittest.cc
,
Apr 12 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/0355b2473dd07c2fde13c657f783bf219b7869a3 commit 0355b2473dd07c2fde13c657f783bf219b7869a3 Author: Yuri Wiitala <miu@chromium.org> Date: Thu Apr 12 02:42:34 2018 Introduce audio::LocalMuter for Audio Service muting The LocalMuter is responsible for muting all audio output streams belonging to the same audio group (e.g., all audio emitted from the same browser tab). When instantiated, the streams are muted; and any newly- created streams will be muted before playout is ever attempted. Upon destruction, the streams are all unmuted. This change includes the service-side implementation, mojo IDL, and related glue. Bug: 824019 Change-Id: I291eea0f50535c56c5015ae64e6fb5fc14e076bb Reviewed-on: https://chromium-review.googlesource.com/999103 Reviewed-by: Max Morin <maxmorin@chromium.org> Reviewed-by: Robert Sesek <rsesek@chromium.org> Cr-Commit-Position: refs/heads/master@{#550001} [modify] https://crrev.com/0355b2473dd07c2fde13c657f783bf219b7869a3/services/audio/BUILD.gn [modify] https://crrev.com/0355b2473dd07c2fde13c657f783bf219b7869a3/services/audio/group_coordinator_unittest.cc [add] https://crrev.com/0355b2473dd07c2fde13c657f783bf219b7869a3/services/audio/local_muter.cc [add] https://crrev.com/0355b2473dd07c2fde13c657f783bf219b7869a3/services/audio/local_muter.h [add] https://crrev.com/0355b2473dd07c2fde13c657f783bf219b7869a3/services/audio/local_muter_unittest.cc [modify] https://crrev.com/0355b2473dd07c2fde13c657f783bf219b7869a3/services/audio/public/mojom/stream_factory.mojom [modify] https://crrev.com/0355b2473dd07c2fde13c657f783bf219b7869a3/services/audio/stream_factory.cc [modify] https://crrev.com/0355b2473dd07c2fde13c657f783bf219b7869a3/services/audio/stream_factory.h [add] https://crrev.com/0355b2473dd07c2fde13c657f783bf219b7869a3/services/audio/test/mock_group_member.cc [add] https://crrev.com/0355b2473dd07c2fde13c657f783bf219b7869a3/services/audio/test/mock_group_member.h
,
Apr 12 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/1ffa259b21360c77bffaf62e8460644b2d54dc18 commit 1ffa259b21360c77bffaf62e8460644b2d54dc18 Author: Yuri Wiitala <miu@chromium.org> Date: Thu Apr 12 06:18:12 2018 audio::OutputController implements GroupMember (muting and snooping) Adds the new audio::GroupMember implementation to provide muting and snooping functionality to audio::OutputController. Bug: 824019 Change-Id: Ib21eccf43d4f6994657731545ceb3f4218c18cbe Reviewed-on: https://chromium-review.googlesource.com/1001512 Commit-Queue: Olga Sharonova <olka@chromium.org> Reviewed-by: Olga Sharonova <olka@chromium.org> Cr-Commit-Position: refs/heads/master@{#550042} [modify] https://crrev.com/1ffa259b21360c77bffaf62e8460644b2d54dc18/services/audio/output_controller.cc [modify] https://crrev.com/1ffa259b21360c77bffaf62e8460644b2d54dc18/services/audio/output_controller.h [modify] https://crrev.com/1ffa259b21360c77bffaf62e8460644b2d54dc18/services/audio/output_controller_unittest.cc [modify] https://crrev.com/1ffa259b21360c77bffaf62e8460644b2d54dc18/services/audio/output_stream.cc [modify] https://crrev.com/1ffa259b21360c77bffaf62e8460644b2d54dc18/services/audio/output_stream.h [modify] https://crrev.com/1ffa259b21360c77bffaf62e8460644b2d54dc18/services/audio/stream_factory.cc
,
Apr 19 2018
,
Apr 19 2018
,
Apr 27 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a6046737cb83e4d276d5f5701041aaff0d7a8b01 commit a6046737cb83e4d276d5f5701041aaff0d7a8b01 Author: Yuri Wiitala <miu@chromium.org> Date: Fri Apr 27 05:50:41 2018 Add FakeGroupMember audio test utility. This is a simple test utility that will be used in upcoming tests to fake the behavior of an audio::GroupMember that can be "snooped" upon. Tests can configure it to generate a sine wave tone, per channel, and also manually push each successive AudioBus to an audio::GroupMember::Snooper. This will be used in later changes to support testing of the new loopback functionality in the Audio Service. Bug: 824019 Change-Id: I4358319f215fc6692143d4ab0ae52703c1c30427 Reviewed-on: https://chromium-review.googlesource.com/1029546 Commit-Queue: Yuri Wiitala <miu@chromium.org> Reviewed-by: Yuri Wiitala <miu@chromium.org> Reviewed-by: Olga Sharonova <olka@chromium.org> Cr-Commit-Position: refs/heads/master@{#554322} [modify] https://crrev.com/a6046737cb83e4d276d5f5701041aaff0d7a8b01/services/audio/BUILD.gn [add] https://crrev.com/a6046737cb83e4d276d5f5701041aaff0d7a8b01/services/audio/test/fake_group_member.cc [add] https://crrev.com/a6046737cb83e4d276d5f5701041aaff0d7a8b01/services/audio/test/fake_group_member.h
,
May 5 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/40c0897e3675921ba227e5ebc2fcec367d145bec commit 40c0897e3675921ba227e5ebc2fcec367d145bec Author: Yuri Wiitala <miu@chromium.org> Date: Sat May 05 16:15:24 2018 Add DelayBuffer utility class for later loopback functionality. The DelayBuffer records and maintains a recent history of an audio signal, then allows read-back of any part of the recording. While this looks a lot like "yet another FIFO," it is not because the reads will typically be somewhere in the middle, not the end, of the circular queue. This will be used in a later change to support loopback functionality in the Audio Service. Bug: 824019 Change-Id: I5321724ac3a55929318d411a08d33344a39c2272 Reviewed-on: https://chromium-review.googlesource.com/1029617 Reviewed-by: Olga Sharonova <olka@chromium.org> Reviewed-by: Xiangjun Zhang <xjz@chromium.org> Reviewed-by: Yuri Wiitala <miu@chromium.org> Commit-Queue: Yuri Wiitala <miu@chromium.org> Cr-Commit-Position: refs/heads/master@{#556334} [modify] https://crrev.com/40c0897e3675921ba227e5ebc2fcec367d145bec/services/audio/BUILD.gn [add] https://crrev.com/40c0897e3675921ba227e5ebc2fcec367d145bec/services/audio/delay_buffer.cc [add] https://crrev.com/40c0897e3675921ba227e5ebc2fcec367d145bec/services/audio/delay_buffer.h [add] https://crrev.com/40c0897e3675921ba227e5ebc2fcec367d145bec/services/audio/delay_buffer_unittest.cc
,
May 5 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/690f3329112cf3455bdf35e28f2f16d70bfeca69 commit 690f3329112cf3455bdf35e28f2f16d70bfeca69 Author: Yuri Wiitala <miu@chromium.org> Date: Sat May 05 18:35:05 2018 Add FakeConsumer audio test utility. This is a simple test utility that will be used in upcoming tests to act as a final consumer of audio in loopback unit tests. It records all the audio samples given to it, and then provides useful utility methods to analyze/interpret the signal. Bug: 824019 Change-Id: I0ef3476b2e8004c77265a85d51f5dd69a3b309b3 Reviewed-on: https://chromium-review.googlesource.com/1041653 Reviewed-by: Olga Sharonova <olka@chromium.org> Reviewed-by: Xiangjun Zhang <xjz@chromium.org> Commit-Queue: Yuri Wiitala <miu@chromium.org> Cr-Commit-Position: refs/heads/master@{#556341} [modify] https://crrev.com/690f3329112cf3455bdf35e28f2f16d70bfeca69/services/audio/BUILD.gn [add] https://crrev.com/690f3329112cf3455bdf35e28f2f16d70bfeca69/services/audio/test/fake_consumer.cc [add] https://crrev.com/690f3329112cf3455bdf35e28f2f16d70bfeca69/services/audio/test/fake_consumer.h
,
May 7 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/419c855f97b75681c59f855b22d0f46a48065fb8 commit 419c855f97b75681c59f855b22d0f46a48065fb8 Author: Yuri Wiitala <miu@chromium.org> Date: Mon May 07 02:51:38 2018 Add worker thread to audio::OwningAudioManagerAccessor. When the Audio Service will be running in its standalone process, the worker thread will be used to drive the audio flows for the loopback streams, as well as all the fake streams (including the those used for muting). These things should not become blocked by long-running control tasks on the main thread. Bug: 824019 Change-Id: I6b7fd4cb110842c70a26072161dc91929ed4f19d Reviewed-on: https://chromium-review.googlesource.com/1046153 Commit-Queue: Yuri Wiitala <miu@chromium.org> Reviewed-by: Olga Sharonova <olka@chromium.org> Cr-Commit-Position: refs/heads/master@{#556369} [modify] https://crrev.com/419c855f97b75681c59f855b22d0f46a48065fb8/services/audio/owning_audio_manager_accessor.cc
,
May 7 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a7e8d6a36b7c04a8c1d4c745cda150dec13331b4 commit a7e8d6a36b7c04a8c1d4c745cda150dec13331b4 Author: Max Morin <maxmorin@chromium.org> Date: Mon May 07 12:37:38 2018 Add group_id member in ForwardingAudioStreamFactory Actually using it is TODO. No-Try: true Bug: 824019 Change-Id: I9053827dba2504218559be523574b71ef079c72b Reviewed-on: https://chromium-review.googlesource.com/1046646 Commit-Queue: Max Morin <maxmorin@chromium.org> Reviewed-by: Olga Sharonova <olka@chromium.org> Cr-Commit-Position: refs/heads/master@{#556421} [modify] https://crrev.com/a7e8d6a36b7c04a8c1d4c745cda150dec13331b4/content/browser/media/forwarding_audio_stream_factory.cc [modify] https://crrev.com/a7e8d6a36b7c04a8c1d4c745cda150dec13331b4/content/browser/media/forwarding_audio_stream_factory.h
,
May 8 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f1b4c43b85e7cec2a61da121b9244deffec38d03 commit f1b4c43b85e7cec2a61da121b9244deffec38d03 Author: Yuri Wiitala <miu@chromium.org> Date: Tue May 08 07:39:23 2018 The SnooperNode: Audio loopback for a single stream. An audio::GroupMember::Snooper that records the audio from a GroupMember on one thread, and re-renders it to the desired output format on another thread. Since the data flow rates are known to be driven by different clocks (audio hardware clock versus system clock), the SnooperNode also uses its resampler to compensate for skew and re-synchronize the audio going into and out of it. Bug: 824019 Change-Id: I87d410724fd00f9372232bfffdfbb89ada0b3de8 Reviewed-on: https://chromium-review.googlesource.com/1041657 Commit-Queue: Yuri Wiitala <miu@chromium.org> Reviewed-by: Xiangjun Zhang <xjz@chromium.org> Reviewed-by: Chrome Cunningham <chcunningham@chromium.org> Reviewed-by: Olga Sharonova <olka@chromium.org> Cr-Commit-Position: refs/heads/master@{#556719} [modify] https://crrev.com/f1b4c43b85e7cec2a61da121b9244deffec38d03/media/base/channel_mixer.cc [modify] https://crrev.com/f1b4c43b85e7cec2a61da121b9244deffec38d03/media/base/channel_mixer.h [modify] https://crrev.com/f1b4c43b85e7cec2a61da121b9244deffec38d03/services/audio/BUILD.gn [add] https://crrev.com/f1b4c43b85e7cec2a61da121b9244deffec38d03/services/audio/snooper_node.cc [add] https://crrev.com/f1b4c43b85e7cec2a61da121b9244deffec38d03/services/audio/snooper_node.h [add] https://crrev.com/f1b4c43b85e7cec2a61da121b9244deffec38d03/services/audio/snooper_node_unittest.cc
,
May 8 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/54d2a2da9da45f819cd9db7ea4efb79a00324c27 commit 54d2a2da9da45f819cd9db7ea4efb79a00324c27 Author: Guido Urdaneta <guidou@chromium.org> Date: Tue May 08 12:35:13 2018 Revert "The SnooperNode: Audio loopback for a single stream." This reverts commit f1b4c43b85e7cec2a61da121b9244deffec38d03. Reason for revert: Causes reliable failures on Win10 Tests x64 (dbg) bot Sample failed runs: https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Win10%20Tests%20x64%20%28dbg%29/413 https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Win10%20Tests%20x64%20%28dbg%29/414 Sample logs: [ RUN ] SnooperNodeTest.ContinuousAudioFlowAdaptsToSkew/1 [ RUN ] SnooperNodeTest.ContinuousAudioFlowAdaptsToSkew/1 [ RUN ] SnooperNodeTest.ContinuousAudioFlowAdaptsToSkew/1 [ RUN ] SnooperNodeTest.ContinuousAudioFlowAdaptsToSkew/1 Original change's description: > The SnooperNode: Audio loopback for a single stream. > > An audio::GroupMember::Snooper that records the audio from a GroupMember > on one thread, and re-renders it to the desired output format on another > thread. Since the data flow rates are known to be driven by different > clocks (audio hardware clock versus system clock), the SnooperNode also > uses its resampler to compensate for skew and re-synchronize the audio > going into and out of it. > > Bug: 824019 > Change-Id: I87d410724fd00f9372232bfffdfbb89ada0b3de8 > Reviewed-on: https://chromium-review.googlesource.com/1041657 > Commit-Queue: Yuri Wiitala <miu@chromium.org> > Reviewed-by: Xiangjun Zhang <xjz@chromium.org> > Reviewed-by: Chrome Cunningham <chcunningham@chromium.org> > Reviewed-by: Olga Sharonova <olka@chromium.org> > Cr-Commit-Position: refs/heads/master@{#556719} TBR=miu@chromium.org,chcunningham@chromium.org,olka@chromium.org,xjz@chromium.org Change-Id: I47750e3abb5e9387733b5fbf275d930a79a6d45e No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: 824019 Reviewed-on: https://chromium-review.googlesource.com/1049905 Reviewed-by: Guido Urdaneta <guidou@chromium.org> Commit-Queue: Guido Urdaneta <guidou@chromium.org> Cr-Commit-Position: refs/heads/master@{#556767} [modify] https://crrev.com/54d2a2da9da45f819cd9db7ea4efb79a00324c27/media/base/channel_mixer.cc [modify] https://crrev.com/54d2a2da9da45f819cd9db7ea4efb79a00324c27/media/base/channel_mixer.h [modify] https://crrev.com/54d2a2da9da45f819cd9db7ea4efb79a00324c27/services/audio/BUILD.gn [delete] https://crrev.com/98b10b51c74376ddabe8571f6c05829867710dd2/services/audio/snooper_node.cc [delete] https://crrev.com/98b10b51c74376ddabe8571f6c05829867710dd2/services/audio/snooper_node.h [delete] https://crrev.com/98b10b51c74376ddabe8571f6c05829867710dd2/services/audio/snooper_node_unittest.cc
,
May 8 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/6dc7843c124671e9cb9741810fb46ad761810540 commit 6dc7843c124671e9cb9741810fb46ad761810540 Author: Yuri Wiitala <miu@chromium.org> Date: Tue May 08 23:33:01 2018 Reland "The SnooperNode: Audio loopback for a single stream." This is a reland of f1b4c43b85e7cec2a61da121b9244deffec38d03 Original change's description: > The SnooperNode: Audio loopback for a single stream. > > An audio::GroupMember::Snooper that records the audio from a GroupMember > on one thread, and re-renders it to the desired output format on another > thread. Since the data flow rates are known to be driven by different > clocks (audio hardware clock versus system clock), the SnooperNode also > uses its resampler to compensate for skew and re-synchronize the audio > going into and out of it. > > Bug: 824019 > Change-Id: I87d410724fd00f9372232bfffdfbb89ada0b3de8 > Reviewed-on: https://chromium-review.googlesource.com/1041657 > Commit-Queue: Yuri Wiitala <miu@chromium.org> > Reviewed-by: Xiangjun Zhang <xjz@chromium.org> > Reviewed-by: Chrome Cunningham <chcunningham@chromium.org> > Reviewed-by: Olga Sharonova <olka@chromium.org> > Cr-Commit-Position: refs/heads/master@{#556719} TBR=chcunningham@chromium.org,olka@chromium.org Bug: 824019 Change-Id: I579b99bda7bc53710004470c0cc07f8a06cdd8b5 Reviewed-on: https://chromium-review.googlesource.com/1050403 Reviewed-by: Yuri Wiitala <miu@chromium.org> Commit-Queue: Yuri Wiitala <miu@chromium.org> Cr-Commit-Position: refs/heads/master@{#557008} [modify] https://crrev.com/6dc7843c124671e9cb9741810fb46ad761810540/media/base/channel_mixer.cc [modify] https://crrev.com/6dc7843c124671e9cb9741810fb46ad761810540/media/base/channel_mixer.h [modify] https://crrev.com/6dc7843c124671e9cb9741810fb46ad761810540/services/audio/BUILD.gn [add] https://crrev.com/6dc7843c124671e9cb9741810fb46ad761810540/services/audio/snooper_node.cc [add] https://crrev.com/6dc7843c124671e9cb9741810fb46ad761810540/services/audio/snooper_node.h [add] https://crrev.com/6dc7843c124671e9cb9741810fb46ad761810540/services/audio/snooper_node_unittest.cc
,
May 9 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/8ddcbeda2299dd9a3e0ac330b17ef859ff2a6823 commit 8ddcbeda2299dd9a3e0ac330b17ef859ff2a6823 Author: Yuri Wiitala <miu@chromium.org> Date: Wed May 09 22:40:01 2018 Reland "Reland "The SnooperNode: Audio loopback for a single stream."" This is a reland of 6dc7843c124671e9cb9741810fb46ad761810540 Original change's description: > Reland "The SnooperNode: Audio loopback for a single stream." > > This is a reland of f1b4c43b85e7cec2a61da121b9244deffec38d03 > > Original change's description: > > The SnooperNode: Audio loopback for a single stream. > > > > An audio::GroupMember::Snooper that records the audio from a GroupMember > > on one thread, and re-renders it to the desired output format on another > > thread. Since the data flow rates are known to be driven by different > > clocks (audio hardware clock versus system clock), the SnooperNode also > > uses its resampler to compensate for skew and re-synchronize the audio > > going into and out of it. > > > > Bug: 824019 > > Change-Id: I87d410724fd00f9372232bfffdfbb89ada0b3de8 > > Reviewed-on: https://chromium-review.googlesource.com/1041657 > > Commit-Queue: Yuri Wiitala <miu@chromium.org> > > Reviewed-by: Xiangjun Zhang <xjz@chromium.org> > > Reviewed-by: Chrome Cunningham <chcunningham@chromium.org> > > Reviewed-by: Olga Sharonova <olka@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#556719} > > TBR=chcunningham@chromium.org,olka@chromium.org > > Bug: 824019 > Change-Id: I579b99bda7bc53710004470c0cc07f8a06cdd8b5 > Reviewed-on: https://chromium-review.googlesource.com/1050403 > Reviewed-by: Yuri Wiitala <miu@chromium.org> > Commit-Queue: Yuri Wiitala <miu@chromium.org> > Cr-Commit-Position: refs/heads/master@{#557008} TBR=chcunningham@chromium.org,olka@chromium.org Bug: 824019 Change-Id: I7b0dc10863fac6c201f770fe2d7e6f268474bb05 Reviewed-on: https://chromium-review.googlesource.com/1053147 Reviewed-by: Yuri Wiitala <miu@chromium.org> Commit-Queue: Yuri Wiitala <miu@chromium.org> Cr-Commit-Position: refs/heads/master@{#557349} [modify] https://crrev.com/8ddcbeda2299dd9a3e0ac330b17ef859ff2a6823/media/base/channel_mixer.cc [modify] https://crrev.com/8ddcbeda2299dd9a3e0ac330b17ef859ff2a6823/media/base/channel_mixer.h [modify] https://crrev.com/8ddcbeda2299dd9a3e0ac330b17ef859ff2a6823/services/audio/BUILD.gn [add] https://crrev.com/8ddcbeda2299dd9a3e0ac330b17ef859ff2a6823/services/audio/snooper_node.cc [add] https://crrev.com/8ddcbeda2299dd9a3e0ac330b17ef859ff2a6823/services/audio/snooper_node.h [add] https://crrev.com/8ddcbeda2299dd9a3e0ac330b17ef859ff2a6823/services/audio/snooper_node_unittest.cc
,
May 10 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/690551576ecc5a40a03f651e19f0746130dfb367 commit 690551576ecc5a40a03f651e19f0746130dfb367 Author: Yuri Wiitala <miu@chromium.org> Date: Thu May 10 03:19:00 2018 Introduce audio::LoopbackStream implementation. The LoopbackStream is an audio::InputStream that provides the result of looping-back and mixing-together all current and future audio output streams belonging to the same "group." An example of this would be for tab capture, where all output streams from one tab are recorded and then re-mixed into a single capture stream. Bug: 824019 Change-Id: I3374182798452bbf9d8688e318dc0546d3630f5e Reviewed-on: https://chromium-review.googlesource.com/1041661 Commit-Queue: Yuri Wiitala <miu@chromium.org> Reviewed-by: Olga Sharonova <olka@chromium.org> Reviewed-by: Max Morin <maxmorin@chromium.org> Cr-Commit-Position: refs/heads/master@{#557440} [modify] https://crrev.com/690551576ecc5a40a03f651e19f0746130dfb367/services/audio/BUILD.gn [add] https://crrev.com/690551576ecc5a40a03f651e19f0746130dfb367/services/audio/loopback_stream.cc [add] https://crrev.com/690551576ecc5a40a03f651e19f0746130dfb367/services/audio/loopback_stream.h [add] https://crrev.com/690551576ecc5a40a03f651e19f0746130dfb367/services/audio/loopback_stream_unittest.cc
,
May 11 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/79723068d858620d5aebb9baa675bf5feaa93a2d commit 79723068d858620d5aebb9baa675bf5feaa93a2d Author: Yuri Wiitala <miu@chromium.org> Date: Fri May 11 23:41:50 2018 Add audio::StreamFactory::CreateLoopbackStream() API. Adds the mojom declaration and its corresponding audio::StreamFactory implementation, allowing clients of the Audio Service to create loopback streams. Loopback streams are virtualized audio input streams. They collect the audio from one or more audio output streams, and mix it together into a single input stream. An example use case is tab capture. Bug: 824019 Change-Id: I10256b516f7e19f6e312aec7fd33dc737df095fa Reviewed-on: https://chromium-review.googlesource.com/1041662 Commit-Queue: Yuri Wiitala <miu@chromium.org> Reviewed-by: Yuri Wiitala <miu@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Reviewed-by: Olga Sharonova <olka@chromium.org> Reviewed-by: Max Morin <maxmorin@chromium.org> Cr-Commit-Position: refs/heads/master@{#558061} [modify] https://crrev.com/79723068d858620d5aebb9baa675bf5feaa93a2d/services/audio/public/cpp/fake_stream_factory.h [modify] https://crrev.com/79723068d858620d5aebb9baa675bf5feaa93a2d/services/audio/public/cpp/input_ipc_unittest.cc [modify] https://crrev.com/79723068d858620d5aebb9baa675bf5feaa93a2d/services/audio/public/mojom/stream_factory.mojom [modify] https://crrev.com/79723068d858620d5aebb9baa675bf5feaa93a2d/services/audio/stream_factory.cc [modify] https://crrev.com/79723068d858620d5aebb9baa675bf5feaa93a2d/services/audio/stream_factory.h
,
May 15 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/2ebc174f76e39335d9ca86224bed7be3e8cfc061 commit 2ebc174f76e39335d9ca86224bed7be3e8cfc061 Author: Olga Sharonova <olka@chromium.org> Date: Tue May 15 12:39:19 2018 Loopback and muting in the forwarding factory Muting: * There is an AudioSessionMuter class which manages muting for a group. * InputStreamBroker has one in case source should be muted. * ForwardingFactory also has one if webcontents should be muted. Bug: 824019 Change-Id: I41c26e8de38912f9dac1409ff9dba86cd43631ea Reviewed-on: https://chromium-review.googlesource.com/1046052 Commit-Queue: Olga Sharonova <olka@chromium.org> Reviewed-by: Max Morin <maxmorin@chromium.org> Reviewed-by: Nasko Oskov <nasko@chromium.org> Reviewed-by: Yuri Wiitala <miu@chromium.org> Cr-Commit-Position: refs/heads/master@{#558671} [modify] https://crrev.com/2ebc174f76e39335d9ca86224bed7be3e8cfc061/content/browser/BUILD.gn [modify] https://crrev.com/2ebc174f76e39335d9ca86224bed7be3e8cfc061/content/browser/media/audio_input_stream_broker_unittest.cc [add] https://crrev.com/2ebc174f76e39335d9ca86224bed7be3e8cfc061/content/browser/media/audio_loopback_stream_broker.cc [add] https://crrev.com/2ebc174f76e39335d9ca86224bed7be3e8cfc061/content/browser/media/audio_loopback_stream_broker.h [add] https://crrev.com/2ebc174f76e39335d9ca86224bed7be3e8cfc061/content/browser/media/audio_loopback_stream_broker_unittest.cc [add] https://crrev.com/2ebc174f76e39335d9ca86224bed7be3e8cfc061/content/browser/media/audio_muting_session.cc [add] https://crrev.com/2ebc174f76e39335d9ca86224bed7be3e8cfc061/content/browser/media/audio_muting_session.h [modify] https://crrev.com/2ebc174f76e39335d9ca86224bed7be3e8cfc061/content/browser/media/audio_output_stream_broker_unittest.cc [modify] https://crrev.com/2ebc174f76e39335d9ca86224bed7be3e8cfc061/content/browser/media/audio_stream_broker.cc [modify] https://crrev.com/2ebc174f76e39335d9ca86224bed7be3e8cfc061/content/browser/media/audio_stream_broker.h [modify] https://crrev.com/2ebc174f76e39335d9ca86224bed7be3e8cfc061/content/browser/media/forwarding_audio_stream_factory.cc [modify] https://crrev.com/2ebc174f76e39335d9ca86224bed7be3e8cfc061/content/browser/media/forwarding_audio_stream_factory.h [modify] https://crrev.com/2ebc174f76e39335d9ca86224bed7be3e8cfc061/content/browser/media/forwarding_audio_stream_factory_unittest.cc [modify] https://crrev.com/2ebc174f76e39335d9ca86224bed7be3e8cfc061/content/test/BUILD.gn
,
May 15 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/0d5d2e610b98b00b250189496aa355adb67fc9c2 commit 0d5d2e610b98b00b250189496aa355adb67fc9c2 Author: Max Morin <maxmorin@chromium.org> Date: Tue May 15 16:47:36 2018 Add loopback support to audio input stream factory. TBR=miu@chromium.org Bug: 824019 Change-Id: Ib70a7edf1c42ea2643393611bca81e3b986fb333 Reviewed-on: https://chromium-review.googlesource.com/1059779 Reviewed-by: Olga Sharonova <olka@chromium.org> Commit-Queue: Olga Sharonova <olka@chromium.org> Cr-Commit-Position: refs/heads/master@{#558750} [modify] https://crrev.com/0d5d2e610b98b00b250189496aa355adb67fc9c2/content/browser/media/forwarding_audio_stream_factory.cc [modify] https://crrev.com/0d5d2e610b98b00b250189496aa355adb67fc9c2/content/browser/media/forwarding_audio_stream_factory.h [modify] https://crrev.com/0d5d2e610b98b00b250189496aa355adb67fc9c2/content/browser/media/forwarding_audio_stream_factory_unittest.cc [modify] https://crrev.com/0d5d2e610b98b00b250189496aa355adb67fc9c2/content/browser/renderer_host/media/render_frame_audio_input_stream_factory.cc [modify] https://crrev.com/0d5d2e610b98b00b250189496aa355adb67fc9c2/content/browser/renderer_host/media/render_frame_audio_input_stream_factory.h [modify] https://crrev.com/0d5d2e610b98b00b250189496aa355adb67fc9c2/content/browser/renderer_host/media/render_frame_audio_input_stream_factory_unittest.cc
,
May 16 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b5506f796e9a13e88c5824ef1e6f8c4afe16b975 commit b5506f796e9a13e88c5824ef1e6f8c4afe16b975 Author: Max Morin <maxmorin@chromium.org> Date: Wed May 16 07:33:10 2018 Wire up tab muting for audio service. When using the audio service for audio streams, WebContentsImpl::SetAudioMuted must mute the streams by calling the audio service, rather than using the (currently used) WebContentsAudioMuter. This CL updates WebContentsImpl to communicate with the audio service when features::kAudioServiceAudioStreams is set, and also removes an old hack used for muting when the audio service is in-process. Bug: 824019 Change-Id: Idbe29f0edc6fd0f68287ad6254021969916a38d6 Reviewed-on: https://chromium-review.googlesource.com/1059953 Commit-Queue: Max Morin <maxmorin@chromium.org> Reviewed-by: Olga Sharonova <olka@chromium.org> Reviewed-by: Kinuko Yasuda <kinuko@chromium.org> Cr-Commit-Position: refs/heads/master@{#559007} [modify] https://crrev.com/b5506f796e9a13e88c5824ef1e6f8c4afe16b975/content/browser/media/forwarding_audio_stream_factory.cc [modify] https://crrev.com/b5506f796e9a13e88c5824ef1e6f8c4afe16b975/content/browser/web_contents/web_contents_impl.cc
,
May 17 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a3bd958dc2cf2a726126eaa5420bbdb3afd281aa commit a3bd958dc2cf2a726126eaa5420bbdb3afd281aa Author: Yuri Wiitala <miu@chromium.org> Date: Thu May 17 23:14:41 2018 Fix 'forced tab unmute' behavior when using OOP Audio Service The new Audio Service uses separate infrastructure for muting and tab capture. The legacy implementation, however, did not; and there was some logic in chrome/browser/ui/tab_utils.cc mitigating that. This change conditionally allows the mute state of a tab to be toggled/updated independently of tab capture. It also adds TODOs to mark the logic that should be deleted once the Audio Service launches. Bug: 843103 , 824019 ,672469 Change-Id: Ie21f4895717b5769808b87676f723a9ed5a30af4 Reviewed-on: https://chromium-review.googlesource.com/1065065 Reviewed-by: Xiangjun Zhang <xjz@chromium.org> Commit-Queue: Yuri Wiitala <miu@chromium.org> Cr-Commit-Position: refs/heads/master@{#559727} [modify] https://crrev.com/a3bd958dc2cf2a726126eaa5420bbdb3afd281aa/chrome/browser/extensions/api/tab_capture/tab_capture_apitest.cc [modify] https://crrev.com/a3bd958dc2cf2a726126eaa5420bbdb3afd281aa/chrome/browser/ui/tabs/tab_utils.cc [modify] https://crrev.com/a3bd958dc2cf2a726126eaa5420bbdb3afd281aa/chrome/test/data/extensions/api_test/tab_capture/api_tests.js
,
May 18 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/9c6ea194b927f76ed9d439531b83e036ea9ab287 commit 9c6ea194b927f76ed9d439531b83e036ea9ab287 Author: Yuri Wiitala <miu@chromium.org> Date: Fri May 18 10:17:11 2018 Add trace events to Audio Service loopback stream. Bug: 824019 Change-Id: I94b9c87a355c9abe5064af0c7b73d7bf23e5a1bb Reviewed-on: https://chromium-review.googlesource.com/1063371 Reviewed-by: Max Morin <maxmorin@chromium.org> Commit-Queue: Yuri Wiitala <miu@chromium.org> Cr-Commit-Position: refs/heads/master@{#559855} [modify] https://crrev.com/9c6ea194b927f76ed9d439531b83e036ea9ab287/services/audio/loopback_stream.cc [modify] https://crrev.com/9c6ea194b927f76ed9d439531b83e036ea9ab287/services/audio/snooper_node.cc
,
May 19 2018
At this point, the new implementation is in-place and [believed to be] working. From here, we'll wait until the AudioServiceAudioStreams feature is launched, and then remove all the old legacy code. Also, we'd like to look into a future improvement in the audio transfer between processes (see bug 844823); but, to reduce churn, this work shouldn't start until the Audio Service is stable and fully-launched.
,
May 19 2018
Actually, this is fixed since all remaining "loose ends" are being tracked by follow-ups: bug 843349 and bug 844823 |
||||
►
Sign in to add a comment |
||||
Comment 1 by bugdroid1@chromium.org
, Mar 22 2018