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

Side by Side Diff: media/audio/audio_output_controller.cc

Issue 163343002: Reland 153623004: Remove the unified IO code on the browser (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: fixed the cras bot Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « media/audio/audio_output_controller.h ('k') | media/audio/audio_output_controller_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "media/audio/audio_output_controller.h" 5 #include "media/audio/audio_output_controller.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/debug/trace_event.h" 8 #include "base/debug/trace_event.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/task_runner_util.h" 10 #include "base/task_runner_util.h"
(...skipping 18 matching lines...) Expand all
29 29
30 // Polling-related constants. 30 // Polling-related constants.
31 const int AudioOutputController::kPollNumAttempts = 3; 31 const int AudioOutputController::kPollNumAttempts = 3;
32 const int AudioOutputController::kPollPauseInMilliseconds = 3; 32 const int AudioOutputController::kPollPauseInMilliseconds = 3;
33 33
34 AudioOutputController::AudioOutputController( 34 AudioOutputController::AudioOutputController(
35 AudioManager* audio_manager, 35 AudioManager* audio_manager,
36 EventHandler* handler, 36 EventHandler* handler,
37 const AudioParameters& params, 37 const AudioParameters& params,
38 const std::string& output_device_id, 38 const std::string& output_device_id,
39 const std::string& input_device_id,
40 SyncReader* sync_reader) 39 SyncReader* sync_reader)
41 : audio_manager_(audio_manager), 40 : audio_manager_(audio_manager),
42 params_(params), 41 params_(params),
43 handler_(handler), 42 handler_(handler),
44 output_device_id_(output_device_id), 43 output_device_id_(output_device_id),
45 input_device_id_(input_device_id),
46 stream_(NULL), 44 stream_(NULL),
47 diverting_to_stream_(NULL), 45 diverting_to_stream_(NULL),
48 volume_(1.0), 46 volume_(1.0),
49 state_(kEmpty), 47 state_(kEmpty),
50 num_allowed_io_(0), 48 num_allowed_io_(0),
51 sync_reader_(sync_reader), 49 sync_reader_(sync_reader),
52 message_loop_(audio_manager->GetTaskRunner()), 50 message_loop_(audio_manager->GetTaskRunner()),
53 #if defined(AUDIO_POWER_MONITORING) 51 #if defined(AUDIO_POWER_MONITORING)
54 power_monitor_( 52 power_monitor_(
55 params.sample_rate(), 53 params.sample_rate(),
56 TimeDelta::FromMilliseconds(kPowerMeasurementTimeConstantMillis)), 54 TimeDelta::FromMilliseconds(kPowerMeasurementTimeConstantMillis)),
57 #endif 55 #endif
58 on_more_io_data_called_(0) { 56 on_more_io_data_called_(0) {
59 DCHECK(audio_manager); 57 DCHECK(audio_manager);
60 DCHECK(handler_); 58 DCHECK(handler_);
61 DCHECK(sync_reader_); 59 DCHECK(sync_reader_);
62 DCHECK(message_loop_.get()); 60 DCHECK(message_loop_.get());
63 } 61 }
64 62
65 AudioOutputController::~AudioOutputController() { 63 AudioOutputController::~AudioOutputController() {
66 DCHECK_EQ(kClosed, state_); 64 DCHECK_EQ(kClosed, state_);
67 } 65 }
68 66
69 // static 67 // static
70 scoped_refptr<AudioOutputController> AudioOutputController::Create( 68 scoped_refptr<AudioOutputController> AudioOutputController::Create(
71 AudioManager* audio_manager, 69 AudioManager* audio_manager,
72 EventHandler* event_handler, 70 EventHandler* event_handler,
73 const AudioParameters& params, 71 const AudioParameters& params,
74 const std::string& output_device_id, 72 const std::string& output_device_id,
75 const std::string& input_device_id,
76 SyncReader* sync_reader) { 73 SyncReader* sync_reader) {
77 DCHECK(audio_manager); 74 DCHECK(audio_manager);
78 DCHECK(sync_reader); 75 DCHECK(sync_reader);
79 76
80 if (!params.IsValid() || !audio_manager) 77 if (!params.IsValid() || !audio_manager)
81 return NULL; 78 return NULL;
82 79
83 scoped_refptr<AudioOutputController> controller(new AudioOutputController( 80 scoped_refptr<AudioOutputController> controller(new AudioOutputController(
84 audio_manager, event_handler, params, output_device_id, input_device_id, 81 audio_manager, event_handler, params, output_device_id, sync_reader));
85 sync_reader));
86 controller->message_loop_->PostTask(FROM_HERE, base::Bind( 82 controller->message_loop_->PostTask(FROM_HERE, base::Bind(
87 &AudioOutputController::DoCreate, controller, false)); 83 &AudioOutputController::DoCreate, controller, false));
88 return controller; 84 return controller;
89 } 85 }
90 86
91 void AudioOutputController::Play() { 87 void AudioOutputController::Play() {
92 message_loop_->PostTask(FROM_HERE, base::Bind( 88 message_loop_->PostTask(FROM_HERE, base::Bind(
93 &AudioOutputController::DoPlay, this)); 89 &AudioOutputController::DoPlay, this));
94 } 90 }
95 91
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 130
135 // Close() can be called before DoCreate() is executed. 131 // Close() can be called before DoCreate() is executed.
136 if (state_ == kClosed) 132 if (state_ == kClosed)
137 return; 133 return;
138 134
139 DoStopCloseAndClearStream(); // Calls RemoveOutputDeviceChangeListener(). 135 DoStopCloseAndClearStream(); // Calls RemoveOutputDeviceChangeListener().
140 DCHECK_EQ(kEmpty, state_); 136 DCHECK_EQ(kEmpty, state_);
141 137
142 stream_ = diverting_to_stream_ ? 138 stream_ = diverting_to_stream_ ?
143 diverting_to_stream_ : 139 diverting_to_stream_ :
144 audio_manager_->MakeAudioOutputStreamProxy(params_, output_device_id_, 140 audio_manager_->MakeAudioOutputStreamProxy(params_, output_device_id_);
145 input_device_id_);
146 if (!stream_) { 141 if (!stream_) {
147 state_ = kError; 142 state_ = kError;
148 handler_->OnError(); 143 handler_->OnError();
149 return; 144 return;
150 } 145 }
151 146
152 if (!stream_->Open()) { 147 if (!stream_->Open()) {
153 DoStopCloseAndClearStream(); 148 DoStopCloseAndClearStream();
154 state_ = kError; 149 state_ = kError;
155 handler_->OnError(); 150 handler_->OnError();
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 UMA_HISTOGRAM_BOOLEAN( 477 UMA_HISTOGRAM_BOOLEAN(
483 "Media.AudioOutputControllerPlaybackStartupSuccess", playback_success); 478 "Media.AudioOutputControllerPlaybackStartupSuccess", playback_success);
484 479
485 // Let the AudioManager try and fix it. 480 // Let the AudioManager try and fix it.
486 if (!playback_success) 481 if (!playback_success)
487 audio_manager_->FixWedgedAudio(); 482 audio_manager_->FixWedgedAudio();
488 } 483 }
489 } 484 }
490 485
491 } // namespace media 486 } // namespace media
OLDNEW
« no previous file with comments | « media/audio/audio_output_controller.h ('k') | media/audio/audio_output_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698