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

Side by Side Diff: media/audio/audio_manager.h

Issue 2582703003: Audio output debug recording. (Closed)
Patch Set: Using callbacks instead. Created 3 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
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 #ifndef MEDIA_AUDIO_AUDIO_MANAGER_H_ 5 #ifndef MEDIA_AUDIO_AUDIO_MANAGER_H_
6 #define MEDIA_AUDIO_AUDIO_MANAGER_H_ 6 #define MEDIA_AUDIO_AUDIO_MANAGER_H_
7 7
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 10
11 #include "base/callback_forward.h" 11 #include "base/callback_forward.h"
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/memory/ref_counted.h" 13 #include "base/memory/ref_counted.h"
14 #include "base/sequenced_task_runner_helpers.h" 14 #include "base/sequenced_task_runner_helpers.h"
15 #include "base/strings/string16.h" 15 #include "base/strings/string16.h"
16 #include "build/build_config.h" 16 #include "build/build_config.h"
17 #include "media/audio/audio_device_description.h" 17 #include "media/audio/audio_device_description.h"
18 #include "media/audio/audio_file_writer.h"
18 #include "media/audio/audio_logging.h" 19 #include "media/audio/audio_logging.h"
19 #include "media/base/audio_parameters.h" 20 #include "media/base/audio_parameters.h"
20 21
21 namespace base { 22 namespace base {
22 class SingleThreadTaskRunner; 23 class SingleThreadTaskRunner;
23 } 24 }
24 25
25 namespace media { 26 namespace media {
26 27
27 class AudioInputStream; 28 class AudioInputStream;
(...skipping 28 matching lines...) Expand all
56 // main thread of the process, which in our case is sadly the browser UI 57 // main thread of the process, which in our case is sadly the browser UI
57 // thread. Failure to execute calls on the right thread leads to crashes and 58 // thread. Failure to execute calls on the right thread leads to crashes and
58 // odd behavior. See http://crbug.com/158170. 59 // odd behavior. See http://crbug.com/158170.
59 // 60 //
60 // The manager will use |worker_task_runner| for heavyweight tasks. 61 // The manager will use |worker_task_runner| for heavyweight tasks.
61 // The |worker_task_runner| may be the same as |task_runner|. This same 62 // The |worker_task_runner| may be the same as |task_runner|. This same
62 // task runner is returned by GetWorkerTaskRunner. 63 // task runner is returned by GetWorkerTaskRunner.
63 static ScopedAudioManagerPtr Create( 64 static ScopedAudioManagerPtr Create(
64 scoped_refptr<base::SingleThreadTaskRunner> task_runner, 65 scoped_refptr<base::SingleThreadTaskRunner> task_runner,
65 scoped_refptr<base::SingleThreadTaskRunner> worker_task_runner, 66 scoped_refptr<base::SingleThreadTaskRunner> worker_task_runner,
66 AudioLogFactory* audio_log_factory); 67 AudioLogFactory* audio_log_factory,
68 CreateAudioFileWriterCallback create_audio_file_writer_callback);
67 69
68 // A convenience wrapper of AudioManager::Create for testing. 70 // A convenience wrapper of AudioManager::Create for testing.
69 // The given |task_runner| is shared for both audio io and heavyweight tasks. 71 // The given |task_runner| is shared for both audio io and heavyweight tasks.
70 static ScopedAudioManagerPtr CreateForTesting( 72 static ScopedAudioManagerPtr CreateForTesting(
71 scoped_refptr<base::SingleThreadTaskRunner> task_runner); 73 scoped_refptr<base::SingleThreadTaskRunner> task_runner);
72 74
73 // Starts monitoring AudioManager task runner for hangs. 75 // Starts monitoring AudioManager task runner for hangs.
74 // Runs the monitor on the given |task_runner|, which must be different from 76 // Runs the monitor on the given |task_runner|, which must be different from
75 // AudioManager::GetTaskRunner to be meaningful. 77 // AudioManager::GetTaskRunner to be meaningful.
76 // This must be called only after an AudioManager instance is created. 78 // This must be called only after an AudioManager instance is created.
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 // an empty string. Must be called on the audio worker thread (see 243 // an empty string. Must be called on the audio worker thread (see
242 // GetTaskRunner()). 244 // GetTaskRunner()).
243 virtual std::string GetAssociatedOutputDeviceID( 245 virtual std::string GetAssociatedOutputDeviceID(
244 const std::string& input_device_id) = 0; 246 const std::string& input_device_id) = 0;
245 247
246 // Create a new AudioLog object for tracking the behavior for one or more 248 // Create a new AudioLog object for tracking the behavior for one or more
247 // instances of the given component. See AudioLogFactory for more details. 249 // instances of the given component. See AudioLogFactory for more details.
248 virtual std::unique_ptr<AudioLog> CreateAudioLog( 250 virtual std::unique_ptr<AudioLog> CreateAudioLog(
249 AudioLogFactory::AudioComponent component) = 0; 251 AudioLogFactory::AudioComponent component) = 0;
250 252
253 // Enable output debug recording.
254 // TODO(grunell): Control input debug recording via these functions too.
255 virtual void EnableOutputDebugRecording(
256 const base::FilePath& base_file_name) = 0;
257
258 // Disable output debug recording.
259 virtual void DisableOutputDebugRecording() = 0;
260
251 // Gets the name of the audio manager (e.g., Windows, Mac, PulseAudio). 261 // Gets the name of the audio manager (e.g., Windows, Mac, PulseAudio).
252 virtual const char* GetName() = 0; 262 virtual const char* GetName() = 0;
253 263
254 // Limits the number of streams that can be created for testing purposes. 264 // Limits the number of streams that can be created for testing purposes.
255 virtual void SetMaxStreamCountForTesting(int max_input, int max_output); 265 virtual void SetMaxStreamCountForTesting(int max_input, int max_output);
256 266
257 protected: 267 protected:
258 AudioManager(scoped_refptr<base::SingleThreadTaskRunner> task_runner, 268 AudioManager(scoped_refptr<base::SingleThreadTaskRunner> task_runner,
259 scoped_refptr<base::SingleThreadTaskRunner> worker_task_runner); 269 scoped_refptr<base::SingleThreadTaskRunner> worker_task_runner);
260 virtual ~AudioManager(); 270 virtual ~AudioManager();
261 271
262 private: 272 private:
263 friend class base::DeleteHelper<AudioManager>; 273 friend class base::DeleteHelper<AudioManager>;
264 274
265 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 275 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
266 scoped_refptr<base::SingleThreadTaskRunner> worker_task_runner_; 276 scoped_refptr<base::SingleThreadTaskRunner> worker_task_runner_;
267 DISALLOW_COPY_AND_ASSIGN(AudioManager); 277 DISALLOW_COPY_AND_ASSIGN(AudioManager);
268 }; 278 };
269 279
270 } // namespace media 280 } // namespace media
271 281
272 #endif // MEDIA_AUDIO_AUDIO_MANAGER_H_ 282 #endif // MEDIA_AUDIO_AUDIO_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698