| 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 20 matching lines...) Expand all Loading... |
| 31 | 31 |
| 32 class CHROMEOS_EXPORT CrasAudioHandler : public CrasAudioClient::Observer, | 32 class CHROMEOS_EXPORT CrasAudioHandler : public CrasAudioClient::Observer, |
| 33 public AudioPrefObserver, | 33 public AudioPrefObserver, |
| 34 public SessionManagerClient::Observer { | 34 public SessionManagerClient::Observer { |
| 35 public: | 35 public: |
| 36 typedef std::priority_queue<AudioDevice, | 36 typedef std::priority_queue<AudioDevice, |
| 37 std::vector<AudioDevice>, | 37 std::vector<AudioDevice>, |
| 38 AudioDeviceCompare> AudioDevicePriorityQueue; | 38 AudioDeviceCompare> AudioDevicePriorityQueue; |
| 39 typedef std::vector<uint64_t> NodeIdList; | 39 typedef std::vector<uint64_t> NodeIdList; |
| 40 | 40 |
| 41 // Volume change reasons that are not user-initiated. |
| 42 enum AutomatedVolumeChangeReason { |
| 43 // Indicates it is from initializing audio state. |
| 44 VOLUME_CHANGE_INITIALIZING_AUDIO_STATE, |
| 45 |
| 46 // Indicates it is from restoring volume in maximimize mode screenshot. |
| 47 VOLUME_CHANGE_MAXIMIZE_MODE_SCREENSHOT, |
| 48 }; |
| 49 |
| 41 class AudioObserver { | 50 class AudioObserver { |
| 42 public: | 51 public: |
| 43 // Called when an active output volume changed. | 52 // Called when an active output volume changed. |
| 44 virtual void OnOutputNodeVolumeChanged(uint64_t node_id, int volume); | 53 virtual void OnOutputNodeVolumeChanged(uint64_t node_id, int volume); |
| 45 | 54 |
| 46 // Called when output mute state changed. | 55 // Called when output mute state changed. |
| 47 // |mute_on|: True if output is muted. | 56 // |mute_on|: True if output is muted. |
| 48 // |system_adjust|: True if the mute state is adjusted by the system | 57 // |system_adjust|: True if the mute state is adjusted by the system |
| 49 // automatically(i.e. not by user). UI should reflect the system's mute | 58 // automatically(i.e. not by user). UI should reflect the system's mute |
| 50 // state, but it should not be too loud, e.g., the volume pop up window | 59 // state, but it should not be too loud, e.g., the volume pop up window |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 // This call can be invoked from I/O thread or UI thread because | 157 // This call can be invoked from I/O thread or UI thread because |
| 149 // it does not need to access CrasAudioClient on DBus. | 158 // it does not need to access CrasAudioClient on DBus. |
| 150 virtual void GetAudioDevices(AudioDeviceList* device_list) const; | 159 virtual void GetAudioDevices(AudioDeviceList* device_list) const; |
| 151 | 160 |
| 152 virtual bool GetPrimaryActiveOutputDevice(AudioDevice* device) const; | 161 virtual bool GetPrimaryActiveOutputDevice(AudioDevice* device) const; |
| 153 | 162 |
| 154 // Whether there is alternative input/output audio device. | 163 // Whether there is alternative input/output audio device. |
| 155 virtual bool has_alternative_input() const; | 164 virtual bool has_alternative_input() const; |
| 156 virtual bool has_alternative_output() const; | 165 virtual bool has_alternative_output() const; |
| 157 | 166 |
| 158 // Sets all active output devices' volume level to |volume_percent|, whose | 167 // Sets all active output devices' volume levels to |volume_percent|, whose |
| 159 // range is from 0-100%. | 168 // range is from 0-100%. |
| 160 virtual void SetOutputVolumePercent(int volume_percent); | 169 virtual void SetOutputVolumePercent(int volume_percent); |
| 161 | 170 |
| 171 // Sets all active output devices' volume levels to |volume_percent|, whose |
| 172 // range is from 0-100%, without notifying observers. |
| 173 virtual void SetOutputVolumePercentWithoutNotifyingObservers( |
| 174 int volume_percent, |
| 175 AutomatedVolumeChangeReason reason); |
| 176 |
| 162 // Sets all active input devices' gain level to |gain_percent|, whose range is | 177 // Sets all active input devices' gain level to |gain_percent|, whose range is |
| 163 // from 0-100%. | 178 // from 0-100%. |
| 164 virtual void SetInputGainPercent(int gain_percent); | 179 virtual void SetInputGainPercent(int gain_percent); |
| 165 | 180 |
| 166 // Adjusts all active output devices' volume up (positive percentage) or down | 181 // Adjusts all active output devices' volume up (positive percentage) or down |
| 167 // (negative percentage). | 182 // (negative percentage). |
| 168 virtual void AdjustOutputVolumeByPercent(int adjust_by_percent); | 183 virtual void AdjustOutputVolumeByPercent(int adjust_by_percent); |
| 169 | 184 |
| 170 // Adjusts all active output devices' volume to a minimum audible level if it | 185 // Adjusts all active output devices' volume to a minimum audible level if it |
| 171 // is too low. | 186 // is too low. |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 425 // Failures are not logged at startup, since CRAS may not be running yet. | 440 // Failures are not logged at startup, since CRAS may not be running yet. |
| 426 bool log_errors_; | 441 bool log_errors_; |
| 427 | 442 |
| 428 // Timer for HDMI re-discovering grace period. | 443 // Timer for HDMI re-discovering grace period. |
| 429 base::OneShotTimer hdmi_rediscover_timer_; | 444 base::OneShotTimer hdmi_rediscover_timer_; |
| 430 int hdmi_rediscover_grace_period_duration_in_ms_; | 445 int hdmi_rediscover_grace_period_duration_in_ms_; |
| 431 bool hdmi_rediscovering_; | 446 bool hdmi_rediscovering_; |
| 432 | 447 |
| 433 bool cras_service_available_ = false; | 448 bool cras_service_available_ = false; |
| 434 | 449 |
| 450 // FIFO list of reasons passed to |
| 451 // SetOutputVolumePercentWithoutNotifyingObservers() for which we're still |
| 452 // waiting for OutputNodeVolumeChanged() calls. These are used to suppress |
| 453 // notifications for those changes. |
| 454 std::deque<AutomatedVolumeChangeReason> automated_volume_change_reasons_; |
| 455 |
| 435 bool initializing_audio_state_ = false; | 456 bool initializing_audio_state_ = false; |
| 436 int init_volume_; | 457 int init_volume_; |
| 437 uint64_t init_node_id_; | 458 uint64_t init_node_id_; |
| 438 int init_volume_count_ = 0; | |
| 439 | 459 |
| 440 base::WeakPtrFactory<CrasAudioHandler> weak_ptr_factory_; | 460 base::WeakPtrFactory<CrasAudioHandler> weak_ptr_factory_; |
| 441 | 461 |
| 442 DISALLOW_COPY_AND_ASSIGN(CrasAudioHandler); | 462 DISALLOW_COPY_AND_ASSIGN(CrasAudioHandler); |
| 443 }; | 463 }; |
| 444 | 464 |
| 445 } // namespace chromeos | 465 } // namespace chromeos |
| 446 | 466 |
| 447 #endif // CHROMEOS_AUDIO_CRAS_AUDIO_HANDLER_H_ | 467 #endif // CHROMEOS_AUDIO_CRAS_AUDIO_HANDLER_H_ |
| OLD | NEW |