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

Unified Diff: media/audio/virtual_audio_output_stream.cc

Issue 11416350: Tab Audio Mirroring: WebContentsAudioInputStream is a new implementation which represents the lifet… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Created 7 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/audio/virtual_audio_output_stream.h ('k') | media/audio/virtual_audio_output_stream_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/virtual_audio_output_stream.cc
diff --git a/media/audio/virtual_audio_output_stream.cc b/media/audio/virtual_audio_output_stream.cc
index aacc6678d02065331eb2e061133646be8183e9e2..c379bbdb5d75bf7257af52a960ad3fab4edb08d3 100644
--- a/media/audio/virtual_audio_output_stream.cc
+++ b/media/audio/virtual_audio_output_stream.cc
@@ -4,30 +4,24 @@
#include "media/audio/virtual_audio_output_stream.h"
-#include "base/message_loop.h"
-#include "media/audio/audio_manager_base.h"
+#include "base/message_loop_proxy.h"
#include "media/audio/virtual_audio_input_stream.h"
namespace media {
-// static
-VirtualAudioOutputStream* VirtualAudioOutputStream::MakeStream(
- AudioManagerBase* manager, const AudioParameters& params,
- base::MessageLoopProxy* message_loop, VirtualAudioInputStream* target) {
- return new VirtualAudioOutputStream(manager, params, message_loop, target);
-}
-
VirtualAudioOutputStream::VirtualAudioOutputStream(
- AudioManagerBase* manager, const AudioParameters& params,
- base::MessageLoopProxy* message_loop, VirtualAudioInputStream* target)
- : audio_manager_(manager), message_loop_(message_loop), callback_(NULL),
- params_(params), target_input_stream_(target), volume_(1.0f),
- attached_(false) {
+ const AudioParameters& params, base::MessageLoopProxy* message_loop,
+ VirtualAudioInputStream* target, const AfterCloseCallback& after_close_cb)
+ : params_(params), message_loop_(message_loop),
+ target_input_stream_(target), after_close_cb_(after_close_cb),
+ callback_(NULL), volume_(1.0f) {
+ DCHECK(params_.IsValid());
+ DCHECK(message_loop_);
+ DCHECK(target);
}
VirtualAudioOutputStream::~VirtualAudioOutputStream() {
DCHECK(!callback_);
- DCHECK(!attached_);
}
bool VirtualAudioOutputStream::Open() {
@@ -37,30 +31,41 @@ bool VirtualAudioOutputStream::Open() {
void VirtualAudioOutputStream::Start(AudioSourceCallback* callback) {
DCHECK(message_loop_->BelongsToCurrentThread());
- DCHECK(!attached_);
+ DCHECK(!callback_);
callback_ = callback;
target_input_stream_->AddOutputStream(this, params_);
- attached_ = true;
}
void VirtualAudioOutputStream::Stop() {
DCHECK(message_loop_->BelongsToCurrentThread());
- DCHECK(attached_);
- callback_ = NULL;
- target_input_stream_->RemoveOutputStream(this, params_);
- attached_ = false;
+ if (callback_) {
+ callback_ = NULL;
+ target_input_stream_->RemoveOutputStream(this, params_);
+ }
}
void VirtualAudioOutputStream::Close() {
DCHECK(message_loop_->BelongsToCurrentThread());
- audio_manager_->ReleaseOutputStream(this);
+
+ Stop();
+
+ // If a non-null AfterCloseCallback was provided to the constructor, invoke it
+ // here. The callback is moved to a stack-local first since |this| could be
+ // destroyed during Run().
+ if (!after_close_cb_.is_null()) {
+ const AfterCloseCallback cb = after_close_cb_;
+ after_close_cb_.Reset();
+ cb.Run(this);
+ }
}
void VirtualAudioOutputStream::SetVolume(double volume) {
+ DCHECK(message_loop_->BelongsToCurrentThread());
volume_ = volume;
}
void VirtualAudioOutputStream::GetVolume(double* volume) {
+ DCHECK(message_loop_->BelongsToCurrentThread());
*volume = volume_;
}
« no previous file with comments | « media/audio/virtual_audio_output_stream.h ('k') | media/audio/virtual_audio_output_stream_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698