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

Unified Diff: media/audio/audio_output_dispatcher.h

Issue 5158003: Implement AudioOutputProxy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 10 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: media/audio/audio_output_dispatcher.h
diff --git a/media/audio/audio_output_dispatcher.h b/media/audio/audio_output_dispatcher.h
new file mode 100644
index 0000000000000000000000000000000000000000..532791d1819d063142c59734da15534f625c6d62
--- /dev/null
+++ b/media/audio/audio_output_dispatcher.h
@@ -0,0 +1,64 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef MEDIA_AUDIO_AUDIO_OUTPUT_DISPATCHER_H_
+#define MEDIA_AUDIO_AUDIO_OUTPUT_DISPATCHER_H_
+
+#include <vector>
+
+#include "base/basictypes.h"
+#include "base/ref_counted.h"
+#include "base/time.h"
+#include "media/audio/audio_manager.h"
+#include "media/audio/audio_parameters.h"
+
+class AudioOutputStream;
+class MessageLoop;
+
+// AudioOutputDispatcher dispatches creation and deletion of audio
+// output streams. AudioManagerBase creates one AudioOutputDispatcher
+// per each possible set of audio parameters. AudioOutputProxy
+// objects use this class to allocate and recycle actual audio output
+// streams.
+class AudioOutputDispatcher
+ : public base::RefCountedThreadSafe<AudioOutputDispatcher> {
+ public:
+ AudioOutputDispatcher(AudioManager* audio_manager,
+ const AudioParameters& params);
+ ~AudioOutputDispatcher();
scherkus (not reviewing) 2010/11/22 06:43:15 virtual
Sergey Ulanov 2010/11/23 19:51:46 Nobody inherits from this class, and there are no
+
+ // Following 4 methods are called by AudioOutput when a stream
scherkus (not reviewing) 2010/11/22 06:43:15 Might be wrong here.. but do you meant AudioOutput
Sergey Ulanov 2010/11/23 19:51:46 Done.
+ // is opened, started, stopped or closed.
+ bool StreamOpened();
+ AudioOutputStream* StreamStarted();
+ void StreamStopped(AudioOutputStream* stream);
scherkus (not reviewing) 2010/11/22 06:43:15 I think we need some comments for these functions
Sergey Ulanov 2010/11/23 19:51:46 Done.
+ void StreamClosed();
+
+ MessageLoop* message_loop();
+
+ void set_close_delay(base::TimeDelta delay);
scherkus (not reviewing) 2010/11/22 06:43:15 is this only used for tests? consider using FRIEN
Sergey Ulanov 2010/11/23 19:51:46 Yes.
+
+ private:
+ friend class AudioOutputProxyTest;
+
+ AudioOutputStream* CreateAndOpenStream();
+ void ScheduleCloseTask();
+ void OpenTask();
+ void CloseTask();
+ void ClosePendingStreams();
+
+ AudioManager* audio_manager_;
+ MessageLoop* message_loop_;
+ AudioParameters params_;
+ base::TimeDelta close_delay_;
+
+ int paused_proxies_;
+ std::vector<AudioOutputStream*> streams_;
+ base::Time last_activity_time_;
scherkus (not reviewing) 2010/11/22 06:43:15 I think you can replace a bunch of this last_activ
Sergey Ulanov 2010/11/23 19:51:46 Wow, that is fantastic. I didn't know about it. Ye
+ bool close_task_scheduled_;
+
+ DISALLOW_COPY_AND_ASSIGN(AudioOutputDispatcher);
+};
+
+#endif // MEDIA_AUDIO_AUDIO_OUTPUT_DISPATCHER_H_

Powered by Google App Engine
This is Rietveld 408576698