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

Issue 11233023: Handle audio device changes on Windows. (Closed)

Created:
8 years, 2 months ago by DaleCurtis
Modified:
8 years, 1 month ago
CC:
chromium-reviews, joi+watch-content_chromium.org, darin-cc_chromium.org, jam, feature-media-reviews_chromium.org, Chris Rogers
Visibility:
Public.

Description

Handle audio device changes on Windows. Uses the new AudioDeviceListener framework to notify of device changes. Handles only default device changes at the moment, e.g., not manually changing the sample rate, etc on a current default device. This all works well enough that I can connect / disconnect remote desktop sessions with and without audio and everything continues to play seamlessly and in sync! BUG=153056 TEST=Unplug... Plug... Unplug! Plug! Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=164236

Patch Set 1 : Wow! It actually works! #

Total comments: 49

Patch Set 2 : Comments! #

Total comments: 30

Patch Set 3 : Comments! Unit tests! #

Total comments: 16

Patch Set 4 : Callbacks! #

Total comments: 8

Patch Set 5 : DestructOnAudioThread(). BindToLoop. #

Total comments: 2

Patch Set 6 : No ctor thread check. #

Total comments: 1
Unified diffs Side-by-side diffs Delta from patch set Stats (+407 lines, -87 lines) Patch
M content/renderer/media/audio_renderer_mixer_manager.h View 1 chunk +2 lines, -2 lines 0 comments Download
M media/audio/audio_manager_base.h View 1 2 3 4 2 chunks +3 lines, -2 lines 0 comments Download
M media/audio/audio_manager_base.cc View 1 2 3 4 2 chunks +43 lines, -31 lines 0 comments Download
M media/audio/audio_parameters.h View 1 2 3 2 chunks +13 lines, -6 lines 0 comments Download
M media/audio/audio_parameters.cc View 1 chunk +0 lines, -22 lines 0 comments Download
M media/audio/audio_parameters_unittest.cc View 1 chunk +2 lines, -3 lines 0 comments Download
A media/audio/win/audio_device_listener_win.h View 1 2 3 4 1 chunk +62 lines, -0 lines 0 comments Download
A media/audio/win/audio_device_listener_win.cc View 1 2 3 4 5 1 chunk +145 lines, -0 lines 0 comments Download
A media/audio/win/audio_device_listener_win_unittest.cc View 1 2 3 1 chunk +93 lines, -0 lines 1 comment Download
M media/audio/win/audio_low_latency_output_win.h View 1 2 3 4 1 chunk +3 lines, -2 lines 0 comments Download
M media/audio/win/audio_low_latency_output_win.cc View 1 2 chunks +1 line, -14 lines 0 comments Download
M media/audio/win/audio_manager_win.h View 1 2 3 4 3 chunks +13 lines, -4 lines 0 comments Download
M media/audio/win/audio_manager_win.cc View 1 2 3 4 4 chunks +24 lines, -1 line 0 comments Download
M media/media.gyp View 1 2 3 4 2 chunks +3 lines, -0 lines 0 comments Download

Messages

Total messages: 31 (0 generated)
DaleCurtis
Boom!
8 years, 2 months ago (2012-10-21 03:40:42 UTC) #1
henrika (OOO until Aug 14)
Nice Dale! Added some early comment on the nasty MMDevice-specific parts. https://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_device_listener_win.cc File media/audio/win/audio_device_listener_win.cc (right): ...
8 years, 2 months ago (2012-10-21 09:00:19 UTC) #2
henrika (OOO until Aug 14)
Also, please note that you are now running two different notifiers in MMDevice. Are you ...
8 years, 2 months ago (2012-10-21 09:20:19 UTC) #3
DaleCurtis
Pretty sure it was this one since I had log statements in AudioOutputController during testing. ...
8 years, 2 months ago (2012-10-21 16:29:13 UTC) #4
henrika (OOO until Aug 14)
http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_device_listener_win.cc File media/audio/win/audio_device_listener_win.cc (right): http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_device_listener_win.cc#newcode91 media/audio/win/audio_device_listener_win.cc:91: // TODO(dalecurtis): Why do we have this code under ...
8 years, 2 months ago (2012-10-22 10:40:24 UTC) #5
henrika (OOO until Aug 14)
http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_device_listener_win.cc File media/audio/win/audio_device_listener_win.cc (right): http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_device_listener_win.cc#newcode139 media/audio/win/audio_device_listener_win.cc:139: // Only fire a state change event if the ...
8 years, 2 months ago (2012-10-22 13:39:01 UTC) #6
henrika (OOO until Aug 14)
http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_device_listener_win.cc File media/audio/win/audio_device_listener_win.cc (right): http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_device_listener_win.cc#newcode102 media/audio/win/audio_device_listener_win.cc:102: // TODO(dalecurtis): We need to handle changes for the ...
8 years, 2 months ago (2012-10-22 13:44:30 UTC) #7
scherkus (not reviewing)
cool stuff! https://codereview.chromium.org/11233023/diff/5001/media/audio/audio_manager_base.cc File media/audio/audio_manager_base.cc (right): https://codereview.chromium.org/11233023/diff/5001/media/audio/audio_manager_base.cc#newcode217 media/audio/audio_manager_base.cc:217: output_params.format() != AudioParameters::AUDIO_FAKE) { sanity q: do ...
8 years, 2 months ago (2012-10-22 23:51:05 UTC) #8
DaleCurtis
http://codereview.chromium.org/11233023/diff/5001/media/audio/audio_manager_base.cc File media/audio/audio_manager_base.cc (right): http://codereview.chromium.org/11233023/diff/5001/media/audio/audio_manager_base.cc#newcode217 media/audio/audio_manager_base.cc:217: output_params.format() != AudioParameters::AUDIO_FAKE) { On 2012/10/22 23:51:05, scherkus wrote: ...
8 years, 2 months ago (2012-10-23 01:49:42 UTC) #9
scherkus (not reviewing)
http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_manager_win.h File media/audio/win/audio_manager_win.h (right): http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_manager_win.h#newcode24 media/audio/win/audio_manager_win.h:24: NON_EXPORTED_BASE(public AudioManager::AudioDeviceListener) { On 2012/10/23 01:49:42, DaleCurtis wrote: > ...
8 years, 2 months ago (2012-10-23 02:23:10 UTC) #10
DaleCurtis
http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_manager_win.h File media/audio/win/audio_manager_win.h (right): http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_manager_win.h#newcode24 media/audio/win/audio_manager_win.h:24: NON_EXPORTED_BASE(public AudioManager::AudioDeviceListener) { On 2012/10/23 02:23:11, scherkus wrote: > ...
8 years, 2 months ago (2012-10-23 03:28:19 UTC) #11
henrika (OOO until Aug 14)
http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_device_listener_win.h File media/audio/win/audio_device_listener_win.h (right): http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_device_listener_win.h#newcode25 media/audio/win/audio_device_listener_win.h:25: STDMETHOD_(ULONG, AddRef)(); Thanks for the effort Andrew. http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_manager_win.h File ...
8 years, 2 months ago (2012-10-23 07:38:06 UTC) #12
henrika (OOO until Aug 14)
http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_device_listener_win.h File media/audio/win/audio_device_listener_win.h (right): http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_device_listener_win.h#newcode25 media/audio/win/audio_device_listener_win.h:25: STDMETHOD_(ULONG, AddRef)(); But as Tommi states, I am also ...
8 years, 2 months ago (2012-10-23 08:21:43 UTC) #13
scherkus (not reviewing)
http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_manager_win.h File media/audio/win/audio_manager_win.h (right): http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_manager_win.h#newcode24 media/audio/win/audio_manager_win.h:24: NON_EXPORTED_BASE(public AudioManager::AudioDeviceListener) { On 2012/10/23 07:38:06, henrika wrote: > ...
8 years, 2 months ago (2012-10-23 17:48:18 UTC) #14
DaleCurtis
http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_manager_win.h File media/audio/win/audio_manager_win.h (right): http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_manager_win.h#newcode24 media/audio/win/audio_manager_win.h:24: NON_EXPORTED_BASE(public AudioManager::AudioDeviceListener) { On 2012/10/23 07:38:06, henrika wrote: > ...
8 years, 2 months ago (2012-10-23 20:09:07 UTC) #15
DaleCurtis
http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_manager_win.h File media/audio/win/audio_manager_win.h (right): http://codereview.chromium.org/11233023/diff/5001/media/audio/win/audio_manager_win.h#newcode24 media/audio/win/audio_manager_win.h:24: NON_EXPORTED_BASE(public AudioManager::AudioDeviceListener) { On 2012/10/23 20:09:07, DaleCurtis wrote: > ...
8 years, 2 months ago (2012-10-23 20:19:43 UTC) #16
scherkus (not reviewing)
OK I reviewed that other CL. Please re-P+M this CL when you've updated + rebased.
8 years, 2 months ago (2012-10-23 21:02:12 UTC) #17
DaleCurtis
All good. Now with a unit test! https://codereview.chromium.org/11233023/diff/14004/media/audio/audio_output_controller.cc File media/audio/audio_output_controller.cc (right): https://codereview.chromium.org/11233023/diff/14004/media/audio/audio_output_controller.cc#newcode373 media/audio/audio_output_controller.cc:373: // implementations ...
8 years, 2 months ago (2012-10-24 00:09:27 UTC) #18
scherkus (not reviewing)
https://codereview.chromium.org/11233023/diff/7029/media/audio/audio_parameters.h File media/audio/audio_parameters.h (right): https://codereview.chromium.org/11233023/diff/7029/media/audio/audio_parameters.h#newcode83 media/audio/audio_parameters.h:83: inline bool operator<(const AudioParameters& a, this fits on a ...
8 years, 2 months ago (2012-10-24 04:27:09 UTC) #19
DaleCurtis
http://codereview.chromium.org/11233023/diff/7029/media/audio/win/audio_manager_win.h File media/audio/win/audio_manager_win.h (right): http://codereview.chromium.org/11233023/diff/7029/media/audio/win/audio_manager_win.h#newcode24 media/audio/win/audio_manager_win.h:24: NON_EXPORTED_BASE(public AudioManager::AudioDeviceListener) { On 2012/10/24 04:27:09, scherkus wrote: > ...
8 years, 2 months ago (2012-10-24 04:52:47 UTC) #20
scherkus (not reviewing)
http://codereview.chromium.org/11233023/diff/7029/media/audio/win/audio_manager_win.h File media/audio/win/audio_manager_win.h (right): http://codereview.chromium.org/11233023/diff/7029/media/audio/win/audio_manager_win.h#newcode24 media/audio/win/audio_manager_win.h:24: NON_EXPORTED_BASE(public AudioManager::AudioDeviceListener) { On 2012/10/24 04:52:47, DaleCurtis wrote: > ...
8 years, 2 months ago (2012-10-24 16:52:11 UTC) #21
DaleCurtis
http://codereview.chromium.org/11233023/diff/7029/media/audio/audio_parameters.h File media/audio/audio_parameters.h (right): http://codereview.chromium.org/11233023/diff/7029/media/audio/audio_parameters.h#newcode83 media/audio/audio_parameters.h:83: inline bool operator<(const AudioParameters& a, On 2012/10/24 04:27:09, scherkus ...
8 years, 1 month ago (2012-10-24 19:27:28 UTC) #22
henrika (OOO until Aug 14)
http://codereview.chromium.org/11233023/diff/7029/media/audio/win/audio_device_listener_win.cc File media/audio/win/audio_device_listener_win.cc (right): http://codereview.chromium.org/11233023/diff/7029/media/audio/win/audio_device_listener_win.cc#newcode35 media/audio/win/audio_device_listener_win.cc:35: if (base::win::GetVersion() < base::win::VERSION_VISTA) I have not been able ...
8 years, 1 month ago (2012-10-24 19:49:21 UTC) #23
scherkus (not reviewing)
lgtm w/ nits nice stuff! http://codereview.chromium.org/11233023/diff/37016/media/audio/win/audio_device_listener_win.h File media/audio/win/audio_device_listener_win.h (right): http://codereview.chromium.org/11233023/diff/37016/media/audio/win/audio_device_listener_win.h#newcode30 media/audio/win/audio_device_listener_win.h:30: // thus the callee ...
8 years, 1 month ago (2012-10-24 21:00:59 UTC) #24
henrika (OOO until Aug 14)
LGTM w/nits. Assuming green lights of course.
8 years, 1 month ago (2012-10-25 18:12:46 UTC) #25
henrika (OOO until Aug 14)
http://codereview.chromium.org/11233023/diff/37016/media/audio/win/audio_low_latency_output_win.h File media/audio/win/audio_low_latency_output_win.h (right): http://codereview.chromium.org/11233023/diff/37016/media/audio/win/audio_low_latency_output_win.h#newcode162 media/audio/win/audio_low_latency_output_win.h:162: // AudioDeviceListenerWin; currently just disabled since extraction is tricky. ...
8 years, 1 month ago (2012-10-25 18:12:56 UTC) #26
DaleCurtis
http://codereview.chromium.org/11233023/diff/37016/media/audio/win/audio_device_listener_win.h File media/audio/win/audio_device_listener_win.h (right): http://codereview.chromium.org/11233023/diff/37016/media/audio/win/audio_device_listener_win.h#newcode30 media/audio/win/audio_device_listener_win.h:30: // thus the callee must be thread safe. On ...
8 years, 1 month ago (2012-10-25 20:27:37 UTC) #27
scherkus (not reviewing)
lgtm w/ nit http://codereview.chromium.org/11233023/diff/42001/media/audio/win/audio_device_listener_win.cc File media/audio/win/audio_device_listener_win.cc (right): http://codereview.chromium.org/11233023/diff/42001/media/audio/win/audio_device_listener_win.cc#newcode34 media/audio/win/audio_device_listener_win.cc:34: DCHECK(thread_checker_.CalledOnValidThread()); remove -- this is always ...
8 years, 1 month ago (2012-10-25 20:39:32 UTC) #28
DaleCurtis
http://codereview.chromium.org/11233023/diff/42001/media/audio/win/audio_device_listener_win.cc File media/audio/win/audio_device_listener_win.cc (right): http://codereview.chromium.org/11233023/diff/42001/media/audio/win/audio_device_listener_win.cc#newcode34 media/audio/win/audio_device_listener_win.cc:34: DCHECK(thread_checker_.CalledOnValidThread()); On 2012/10/25 20:39:32, scherkus wrote: > remove -- ...
8 years, 1 month ago (2012-10-25 20:44:50 UTC) #29
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/dalecurtis@chromium.org/11233023/37019
8 years, 1 month ago (2012-10-25 20:46:59 UTC) #30
henrika (OOO until Aug 14)
8 years, 1 month ago (2012-10-29 07:54:31 UTC) #31
https://codereview.chromium.org/11233023/diff/37019/media/audio/win/audio_dev...
File media/audio/win/audio_device_listener_win_unittest.cc (right):

https://codereview.chromium.org/11233023/diff/37019/media/audio/win/audio_dev...
media/audio/win/audio_device_listener_win_unittest.cc:72: // The second device
event should be ignored since the device id has not
Have you really set the expectations to verify that this is the case here?
(.Times(0)?)
Also, do you not need VerifyAndClear again?

Powered by Google App Engine
This is Rietveld 408576698