Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(188)

Issue 1897953003: Unmute Tab Audio For Desktop Share (Closed)

Created:
4 years, 8 months ago by qiangchen
Modified:
4 years, 6 months ago
Reviewers:
DaleCurtis, miu
CC:
chromium-reviews, darin-cc_chromium.org, feature-media-reviews_chromium.org, jam, mcasas+watch+vc_chromium.org, miu+watch_chromium.org, posciak+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Unmute Tab Audio For Desktop Share We did an enhancement to support audio for desktop share. However, using the existing framework, we found a deficiency: During the tab sharing with audio, on the sender side, we cannot hear the sound. The main reason is that we divert the audio stream to WebContentsAudioInputStream, and no longer serve the speaker. In this CL, we make the code path capable of duplicating audio data. BUG=595428 Committed: https://crrev.com/092d94c06544ef160955147dce1527da9699c81b Cr-Commit-Position: refs/heads/master@{#397288}

Patch Set 1 : #

Total comments: 26

Patch Set 2 : Fix by comment (After rebase) #

Patch Set 3 : Fix trybot error #

Total comments: 55

Patch Set 4 : Resolving Comments #

Patch Set 5 : Unittest #

Total comments: 51

Patch Set 6 : Resolving Comments #

Total comments: 18

Patch Set 7 : Rebased and Fix comments #

Total comments: 6

Patch Set 8 : Nit Fix #

Total comments: 20

Patch Set 9 : Nit #

Unified diffs Side-by-side diffs Delta from patch set Stats (+910 lines, -184 lines) Patch
M content/browser/media/capture/audio_mirroring_manager.h View 1 2 3 4 5 4 chunks +48 lines, -12 lines 0 comments Download
M content/browser/media/capture/audio_mirroring_manager.cc View 1 2 3 4 5 6 chunks +75 lines, -16 lines 0 comments Download
M content/browser/media/capture/audio_mirroring_manager_unittest.cc View 1 2 3 4 5 29 chunks +295 lines, -76 lines 0 comments Download
M content/browser/media/capture/web_contents_audio_input_stream.h View 1 2 3 4 1 chunk +6 lines, -5 lines 0 comments Download
M content/browser/media/capture/web_contents_audio_input_stream.cc View 1 2 3 4 5 8 chunks +47 lines, -13 lines 0 comments Download
M content/browser/media/capture/web_contents_audio_input_stream_unittest.cc View 1 2 3 4 5 6 17 chunks +70 lines, -32 lines 0 comments Download
M content/browser/media/capture/web_contents_audio_muter.cc View 1 2 chunks +7 lines, -1 line 0 comments Download
M media/audio/BUILD.gn View 1 2 3 4 5 6 1 chunk +2 lines, -0 lines 0 comments Download
M media/audio/audio_output_controller.h View 1 2 3 4 5 6 7 5 chunks +13 lines, -1 line 0 comments Download
M media/audio/audio_output_controller.cc View 1 2 3 4 5 6 7 5 chunks +69 lines, -0 lines 0 comments Download
M media/audio/audio_output_controller_unittest.cc View 1 2 3 4 5 6 7 chunks +95 lines, -1 line 0 comments Download
M media/audio/audio_source_diverter.h View 1 2 3 4 5 6 3 chunks +22 lines, -1 line 0 comments Download
M media/audio/virtual_audio_input_stream.h View 1 6 1 chunk +6 lines, -6 lines 0 comments Download
M media/audio/virtual_audio_input_stream.cc View 1 2 3 4 5 6 1 chunk +13 lines, -11 lines 0 comments Download
M media/audio/virtual_audio_output_stream.cc View 1 2 3 4 5 6 1 chunk +2 lines, -2 lines 0 comments Download
M media/audio/virtual_audio_output_stream_unittest.cc View 1 2 chunks +8 lines, -7 lines 0 comments Download
A media/audio/virtual_audio_sink.h View 1 2 3 4 5 6 7 8 1 chunk +63 lines, -0 lines 0 comments Download
A media/audio/virtual_audio_sink.cc View 1 2 3 4 5 6 7 8 1 chunk +67 lines, -0 lines 0 comments Download
M media/media.gyp View 1 2 3 4 5 6 1 chunk +2 lines, -0 lines 0 comments Download

Messages

Total messages: 44 (15 generated)
qiangchen
The formal CL implementing the sink for loopback audio
4 years, 8 months ago (2016-04-19 16:14:28 UTC) #6
miu
General approach looks good. First round of comments: https://codereview.chromium.org/1897953003/diff/60001/content/browser/media/capture/audio_mirroring_manager.cc File content/browser/media/capture/audio_mirroring_manager.cc (right): https://codereview.chromium.org/1897953003/diff/60001/content/browser/media/capture/audio_mirroring_manager.cc#newcode85 content/browser/media/capture/audio_mirroring_manager.cc:85: if ...
4 years, 8 months ago (2016-04-21 00:15:25 UTC) #7
qiangchen
Fixed by your comments. Thanks. https://codereview.chromium.org/1897953003/diff/60001/content/browser/media/capture/audio_mirroring_manager.cc File content/browser/media/capture/audio_mirroring_manager.cc (right): https://codereview.chromium.org/1897953003/diff/60001/content/browser/media/capture/audio_mirroring_manager.cc#newcode85 content/browser/media/capture/audio_mirroring_manager.cc:85: if (destination->IsDuplication()) { On ...
4 years, 7 months ago (2016-04-28 00:00:56 UTC) #8
miu
Comments on Patch Set 3: https://codereview.chromium.org/1897953003/diff/100001/content/browser/media/capture/audio_mirroring_manager.cc File content/browser/media/capture/audio_mirroring_manager.cc (right): https://codereview.chromium.org/1897953003/diff/100001/content/browser/media/capture/audio_mirroring_manager.cc#newcode106 content/browser/media/capture/audio_mirroring_manager.cc:106: destination->QueryForMatches( This won't work, ...
4 years, 7 months ago (2016-05-02 20:06:14 UTC) #9
qiangchen
Resolved most comments. Still working on unittests. Leave one question in audio_mirroring_manager.cc. Can you take ...
4 years, 7 months ago (2016-05-03 16:58:24 UTC) #10
qiangchen
Added Unit test cases. https://codereview.chromium.org/1897953003/diff/100001/content/browser/media/capture/audio_mirroring_manager_unittest.cc File content/browser/media/capture/audio_mirroring_manager_unittest.cc (right): https://codereview.chromium.org/1897953003/diff/100001/content/browser/media/capture/audio_mirroring_manager_unittest.cc#newcode561 content/browser/media/capture/audio_mirroring_manager_unittest.cc:561: On 2016/05/02 20:06:13, miu wrote: ...
4 years, 7 months ago (2016-05-04 22:36:47 UTC) #12
miu
Looks great! Thanks for bearing with me through all this: This code is highly sensitive ...
4 years, 7 months ago (2016-05-06 22:29:50 UTC) #13
miu
Adding Dale, because he should look at AudioOutputController changes, but he might also have an ...
4 years, 7 months ago (2016-05-06 22:37:06 UTC) #15
DaleCurtis
https://codereview.chromium.org/1897953003/diff/160001/media/audio/audio_output_controller.cc File media/audio/audio_output_controller.cc (right): https://codereview.chromium.org/1897953003/diff/160001/media/audio/audio_output_controller.cc#newcode311 media/audio/audio_output_controller.cc:311: for (AudioPushSink* target : duplication_targets_) { On 2016/05/06 at ...
4 years, 7 months ago (2016-05-09 18:53:25 UTC) #16
qiangchen
Thanks for your reviews. https://codereview.chromium.org/1897953003/diff/160001/content/browser/media/capture/audio_mirroring_manager.cc File content/browser/media/capture/audio_mirroring_manager.cc (right): https://codereview.chromium.org/1897953003/diff/160001/content/browser/media/capture/audio_mirroring_manager.cc#newcode65 content/browser/media/capture/audio_mirroring_manager.cc:65: ChangeRoute(&(*it), NULL); On 2016/05/06 22:29:49, ...
4 years, 7 months ago (2016-05-10 22:36:53 UTC) #17
qiangchen
Pin this CL.
4 years, 7 months ago (2016-05-19 16:37:10 UTC) #18
miu
Apologies in the delays from my end. I have been fighting fires. I will take ...
4 years, 7 months ago (2016-05-25 01:52:57 UTC) #19
miu
Getting closer... Instead of multiple copies executed on the real-time audio thread, only a single ...
4 years, 6 months ago (2016-05-28 02:45:00 UTC) #20
qiangchen
Fixed. Thanks. https://codereview.chromium.org/1897953003/diff/180001/content/browser/media/capture/web_contents_audio_input_stream_unittest.cc File content/browser/media/capture/web_contents_audio_input_stream_unittest.cc (right): https://codereview.chromium.org/1897953003/diff/180001/content/browser/media/capture/web_contents_audio_input_stream_unittest.cc#newcode214 content/browser/media/capture/web_contents_audio_input_stream_unittest.cc:214: bool is_duplication() { return GetParam(); } On ...
4 years, 6 months ago (2016-05-31 21:17:33 UTC) #23
miu
lgtm % minor things: https://codereview.chromium.org/1897953003/diff/180001/media/audio/virtual_audio_sink.cc File media/audio/virtual_audio_sink.cc (right): https://codereview.chromium.org/1897953003/diff/180001/media/audio/virtual_audio_sink.cc#newcode55 media/audio/virtual_audio_sink.cc:55: // We must copy data ...
4 years, 6 months ago (2016-06-01 00:29:43 UTC) #24
miu
BTW--We could eliminate the mutex in AOC::OnMoreData() by instead using an atomic int (set to ...
4 years, 6 months ago (2016-06-01 00:34:51 UTC) #25
qiangchen
NoBarrier_Load/Store looks more like low level code, and maybe less maintainable. Any other opinion? https://codereview.chromium.org/1897953003/diff/180001/media/audio/virtual_audio_sink.cc ...
4 years, 6 months ago (2016-06-01 17:51:12 UTC) #26
miu
lgtm! :)
4 years, 6 months ago (2016-06-01 17:54:15 UTC) #27
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1897953003/260001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1897953003/260001
4 years, 6 months ago (2016-06-01 19:53:15 UTC) #29
commit-bot: I haz the power
Try jobs failed on following builders: chromium_presubmit on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/chromium_presubmit/builds/193153)
4 years, 6 months ago (2016-06-01 20:04:39 UTC) #31
qiangchen
Hi, Dale: can you glance this CL, or can you sign off this CL? I ...
4 years, 6 months ago (2016-06-01 20:07:33 UTC) #32
DaleCurtis
https://codereview.chromium.org/1897953003/diff/260001/media/audio/audio_output_controller.cc File media/audio/audio_output_controller.cc (right): https://codereview.chromium.org/1897953003/diff/260001/media/audio/audio_output_controller.cc#newcode322 media/audio/audio_output_controller.cc:322: total_bytes_delay / These are integer values and will lose ...
4 years, 6 months ago (2016-06-01 20:58:07 UTC) #33
qiangchen
Fixed. Thanks. The std::next() is used to save an extra data copy. It is necessary, ...
4 years, 6 months ago (2016-06-01 21:43:15 UTC) #34
DaleCurtis
lgtm https://codereview.chromium.org/1897953003/diff/260001/media/audio/audio_output_controller.cc File media/audio/audio_output_controller.cc (right): https://codereview.chromium.org/1897953003/diff/260001/media/audio/audio_output_controller.cc#newcode322 media/audio/audio_output_controller.cc:322: total_bytes_delay / On 2016/06/01 at 21:43:15, qiangchenC wrote: ...
4 years, 6 months ago (2016-06-01 21:52:09 UTC) #35
DaleCurtis
Whoops, missed a comment. https://codereview.chromium.org/1897953003/diff/260001/media/audio/audio_output_controller.cc File media/audio/audio_output_controller.cc (right): https://codereview.chromium.org/1897953003/diff/260001/media/audio/audio_output_controller.cc#newcode347 media/audio/audio_output_controller.cc:347: for (auto target = std::next(duplication_targets_.begin(), ...
4 years, 6 months ago (2016-06-01 21:52:58 UTC) #36
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1897953003/280001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1897953003/280001
4 years, 6 months ago (2016-06-01 23:00:26 UTC) #39
qiangchen
https://codereview.chromium.org/1897953003/diff/260001/media/audio/audio_output_controller.cc File media/audio/audio_output_controller.cc (right): https://codereview.chromium.org/1897953003/diff/260001/media/audio/audio_output_controller.cc#newcode322 media/audio/audio_output_controller.cc:322: total_bytes_delay / On 2016/06/01 21:52:09, DaleCurtis wrote: > On ...
4 years, 6 months ago (2016-06-01 23:11:13 UTC) #40
commit-bot: I haz the power
Committed patchset #9 (id:280001)
4 years, 6 months ago (2016-06-02 01:27:32 UTC) #42
commit-bot: I haz the power
4 years, 6 months ago (2016-06-02 01:29:03 UTC) #44
Message was sent while issue was closed.
Patchset 9 (id:??) landed as
https://crrev.com/092d94c06544ef160955147dce1527da9699c81b
Cr-Commit-Position: refs/heads/master@{#397288}

Powered by Google App Engine
This is Rietveld 408576698