OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROMEOS_AUDIO_CRAS_AUDIO_HANDLER_H_ | 5 #ifndef CHROMEOS_AUDIO_CRAS_AUDIO_HANDLER_H_ |
6 #define CHROMEOS_AUDIO_CRAS_AUDIO_HANDLER_H_ | 6 #define CHROMEOS_AUDIO_CRAS_AUDIO_HANDLER_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 #include <queue> | 10 #include <queue> |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 protected: | 80 protected: |
81 AudioObserver(); | 81 AudioObserver(); |
82 virtual ~AudioObserver(); | 82 virtual ~AudioObserver(); |
83 DISALLOW_COPY_AND_ASSIGN(AudioObserver); | 83 DISALLOW_COPY_AND_ASSIGN(AudioObserver); |
84 }; | 84 }; |
85 | 85 |
86 enum DeviceActivateType { | 86 enum DeviceActivateType { |
87 ACTIVATE_BY_PRIORITY = 0, | 87 ACTIVATE_BY_PRIORITY = 0, |
88 ACTIVATE_BY_USER, | 88 ACTIVATE_BY_USER, |
89 ACTIVATE_BY_RESTORE_PREVIOUS_STATE, | 89 ACTIVATE_BY_RESTORE_PREVIOUS_STATE, |
| 90 ACTIVATE_BY_CAMERA |
90 }; | 91 }; |
91 | 92 |
92 // Sets the global instance. Must be called before any calls to Get(). | 93 // Sets the global instance. Must be called before any calls to Get(). |
93 static void Initialize( | 94 static void Initialize( |
94 scoped_refptr<AudioDevicesPrefHandler> audio_pref_handler); | 95 scoped_refptr<AudioDevicesPrefHandler> audio_pref_handler); |
95 | 96 |
96 // Sets the global instance for testing. | 97 // Sets the global instance for testing. |
97 static void InitializeForTesting(); | 98 static void InitializeForTesting(); |
98 | 99 |
99 // Destroys the global instance. | 100 // Destroys the global instance. |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 // If necessary, sets the starting point for re-discovering the active HDMI | 255 // If necessary, sets the starting point for re-discovering the active HDMI |
255 // output device caused by device entering/exiting docking mode, HDMI display | 256 // output device caused by device entering/exiting docking mode, HDMI display |
256 // changing resolution, or chromeos device suspend/resume. If | 257 // changing resolution, or chromeos device suspend/resume. If |
257 // |force_rediscovering| is true, it will force to set the starting point for | 258 // |force_rediscovering| is true, it will force to set the starting point for |
258 // re-discovering the active HDMI output device again if it has been in the | 259 // re-discovering the active HDMI output device again if it has been in the |
259 // middle of rediscovering the HDMI active output device. | 260 // middle of rediscovering the HDMI active output device. |
260 void SetActiveHDMIOutoutRediscoveringIfNecessary(bool force_rediscovering); | 261 void SetActiveHDMIOutoutRediscoveringIfNecessary(bool force_rediscovering); |
261 | 262 |
262 const AudioDevice* GetDeviceFromId(uint64_t device_id) const; | 263 const AudioDevice* GetDeviceFromId(uint64_t device_id) const; |
263 | 264 |
| 265 // Returns true the device has dual internal microphones(front and rear). |
| 266 bool HasDualInternalMic() const; |
| 267 |
| 268 // Returns true if |device| is front or rear microphone. |
| 269 bool IsFrontOrRearMic(const AudioDevice& device) const; |
| 270 |
| 271 // Switches to either front or rear microphone depending on the |
| 272 // the use case. It should be called from a user initiated action. |
| 273 void SwitchToFrontOrRearMic(); |
| 274 |
264 protected: | 275 protected: |
265 explicit CrasAudioHandler( | 276 explicit CrasAudioHandler( |
266 scoped_refptr<AudioDevicesPrefHandler> audio_pref_handler); | 277 scoped_refptr<AudioDevicesPrefHandler> audio_pref_handler); |
267 ~CrasAudioHandler() override; | 278 ~CrasAudioHandler() override; |
268 | 279 |
269 private: | 280 private: |
270 friend class CrasAudioHandlerTest; | 281 friend class CrasAudioHandlerTest; |
271 | 282 |
272 // CrasAudioClient::Observer overrides. | 283 // CrasAudioClient::Observer overrides. |
273 void AudioClientRestarted() override; | 284 void AudioClientRestarted() override; |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
432 void HandleHotPlugDevice( | 443 void HandleHotPlugDevice( |
433 const AudioDevice& hotplug_device, | 444 const AudioDevice& hotplug_device, |
434 const AudioDevicePriorityQueue& device_priority_queue); | 445 const AudioDevicePriorityQueue& device_priority_queue); |
435 | 446 |
436 void SwitchToTopPriorityDevice(bool is_input); | 447 void SwitchToTopPriorityDevice(bool is_input); |
437 | 448 |
438 // Switch to previous active device if it is found, otherwise, switch | 449 // Switch to previous active device if it is found, otherwise, switch |
439 // to the top priority device. | 450 // to the top priority device. |
440 void SwitchToPreviousActiveDeviceIfAvailable(bool is_input); | 451 void SwitchToPreviousActiveDeviceIfAvailable(bool is_input); |
441 | 452 |
| 453 // Activates the internal mic attached with the camera specified by |
| 454 // |camera_facing|. |
| 455 void ActivateMicForCamera(media::VideoFacingMode camera_facing); |
| 456 |
| 457 // Activates the front or rear mic that is consistent with the active camera. |
| 458 // Note: This should only be called for the dural camera/mic use case. |
| 459 void ActivateInternalMicForActiveCamera(); |
| 460 |
| 461 // Returns the microphone for the camera with |camera_facing|. |
| 462 const AudioDevice* GetMicForCamera(media::VideoFacingMode camera_facing); |
| 463 |
| 464 // Returns the device matched with |type|. Assuming there is only one device |
| 465 // matched the |type|, if there is more than one matched devices, it will |
| 466 // return the first one found. |
| 467 const AudioDevice* GetDeviceByType(AudioDeviceType type); |
| 468 |
| 469 bool IsCameraOn() const; |
| 470 |
| 471 // Returns true if there are any external devices. |
| 472 bool HasExternalDevice(bool is_input) const; |
| 473 |
442 scoped_refptr<AudioDevicesPrefHandler> audio_pref_handler_; | 474 scoped_refptr<AudioDevicesPrefHandler> audio_pref_handler_; |
443 base::ObserverList<AudioObserver> observers_; | 475 base::ObserverList<AudioObserver> observers_; |
444 | 476 |
445 // Audio data and state. | 477 // Audio data and state. |
446 AudioDeviceMap audio_devices_; | 478 AudioDeviceMap audio_devices_; |
447 | 479 |
448 AudioDevicePriorityQueue input_devices_pq_; | 480 AudioDevicePriorityQueue input_devices_pq_; |
449 AudioDevicePriorityQueue output_devices_pq_; | 481 AudioDevicePriorityQueue output_devices_pq_; |
450 | 482 |
451 bool output_mute_on_; | 483 bool output_mute_on_; |
(...skipping 24 matching lines...) Expand all Loading... |
476 // FIFO list of reasons passed to | 508 // FIFO list of reasons passed to |
477 // SetOutputVolumePercentWithoutNotifyingObservers() for which we're still | 509 // SetOutputVolumePercentWithoutNotifyingObservers() for which we're still |
478 // waiting for OutputNodeVolumeChanged() calls. These are used to suppress | 510 // waiting for OutputNodeVolumeChanged() calls. These are used to suppress |
479 // notifications for those changes. | 511 // notifications for those changes. |
480 std::deque<AutomatedVolumeChangeReason> automated_volume_change_reasons_; | 512 std::deque<AutomatedVolumeChangeReason> automated_volume_change_reasons_; |
481 | 513 |
482 bool initializing_audio_state_ = false; | 514 bool initializing_audio_state_ = false; |
483 int init_volume_; | 515 int init_volume_; |
484 uint64_t init_node_id_; | 516 uint64_t init_node_id_; |
485 | 517 |
| 518 bool front_camera_on_ = false; |
| 519 bool rear_camera_on_ = false; |
| 520 |
486 base::WeakPtrFactory<CrasAudioHandler> weak_ptr_factory_; | 521 base::WeakPtrFactory<CrasAudioHandler> weak_ptr_factory_; |
487 | 522 |
488 DISALLOW_COPY_AND_ASSIGN(CrasAudioHandler); | 523 DISALLOW_COPY_AND_ASSIGN(CrasAudioHandler); |
489 }; | 524 }; |
490 | 525 |
491 } // namespace chromeos | 526 } // namespace chromeos |
492 | 527 |
493 #endif // CHROMEOS_AUDIO_CRAS_AUDIO_HANDLER_H_ | 528 #endif // CHROMEOS_AUDIO_CRAS_AUDIO_HANDLER_H_ |
OLD | NEW |