summaryrefslogtreecommitdiffstats
path: root/media/audio
diff options
context:
space:
mode:
authortommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-15 17:35:04 +0000
committertommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-15 17:35:04 +0000
commit7b52361dd69914600e40db052cf7c4bf8671dba8 (patch)
tree8fc761b27815f655840f5e9bf7d61b4868578119 /media/audio
parent3dfc972e392157dc7f5e31b3530a98397c6a1a33 (diff)
downloadchromium_src-7b52361dd69914600e40db052cf7c4bf8671dba8.zip
chromium_src-7b52361dd69914600e40db052cf7c4bf8671dba8.tar.gz
chromium_src-7b52361dd69914600e40db052cf7c4bf8671dba8.tar.bz2
Make AudioManager non-refcounted.
BUG=107087 TEST=media and content unit tests Review URL: https://chromiumcodereview.appspot.com/9382040 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@122102 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/audio')
-rw-r--r--media/audio/audio_input_controller.cc46
-rw-r--r--media/audio/audio_input_controller.h9
-rw-r--r--media/audio/audio_input_controller_unittest.cc22
-rw-r--r--media/audio/audio_input_device_unittest.cc9
-rw-r--r--media/audio/audio_input_unittest.cc10
-rw-r--r--media/audio/audio_low_latency_input_output_unittest.cc17
-rw-r--r--media/audio/audio_manager.cc14
-rw-r--r--media/audio/audio_manager.h26
-rw-r--r--media/audio/audio_manager_base.cc22
-rw-r--r--media/audio/audio_manager_base.h12
-rw-r--r--media/audio/audio_output_controller.cc17
-rw-r--r--media/audio/audio_output_controller.h6
-rw-r--r--media/audio/audio_output_controller_unittest.cc12
-rw-r--r--media/audio/audio_output_proxy_unittest.cc8
-rw-r--r--media/audio/linux/alsa_output_unittest.cc18
-rw-r--r--media/audio/mac/audio_low_latency_input_mac_unittest.cc2
-rw-r--r--media/audio/mac/audio_output_mac_unittest.cc10
-rw-r--r--media/audio/simple_sources_unittest.cc4
-rw-r--r--media/audio/test_audio_input_controller_factory.cc7
-rw-r--r--media/audio/win/audio_low_latency_input_win_unittest.cc48
-rw-r--r--media/audio/win/audio_low_latency_output_win_unittest.cc66
-rw-r--r--media/audio/win/audio_output_win_unittest.cc30
22 files changed, 178 insertions, 237 deletions
diff --git a/media/audio/audio_input_controller.cc b/media/audio/audio_input_controller.cc
index 824bb17..14d3bba 100644
--- a/media/audio/audio_input_controller.cc
+++ b/media/audio/audio_input_controller.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -18,12 +18,9 @@ namespace media {
// static
AudioInputController::Factory* AudioInputController::factory_ = NULL;
-AudioInputController::AudioInputController(AudioManager* audio_manager,
- EventHandler* handler,
+AudioInputController::AudioInputController(EventHandler* handler,
SyncWriter* sync_writer)
: creator_loop_(base::MessageLoopProxy::current()),
- audio_manager_(audio_manager),
- message_loop_(audio_manager->GetMessageLoop()),
handler_(handler),
stream_(NULL),
ALLOW_THIS_IN_INITIALIZER_LIST(no_data_timer_(FROM_HERE,
@@ -49,19 +46,22 @@ scoped_refptr<AudioInputController> AudioInputController::Create(
if (!params.IsValid() || (params.channels > kMaxInputChannels))
return NULL;
- if (factory_) {
+ if (factory_)
return factory_->Create(audio_manager, event_handler, params);
- }
scoped_refptr<AudioInputController> controller(new AudioInputController(
- audio_manager, event_handler, NULL));
+ event_handler, NULL));
+
+ controller->message_loop_ = audio_manager->GetMessageLoop();
// Create and open a new audio input stream from the existing
// audio-device thread. Use the default audio-input device.
std::string device_id = AudioManagerBase::kDefaultDeviceId;
- controller->message_loop_->PostTask(FROM_HERE, base::Bind(
- &AudioInputController::DoCreate, base::Unretained(controller.get()),
- params, device_id));
+ if (!controller->message_loop_->PostTask(FROM_HERE,
+ base::Bind(&AudioInputController::DoCreate, controller,
+ base::Unretained(audio_manager), params, device_id))) {
+ controller = NULL;
+ }
return controller;
}
@@ -82,33 +82,37 @@ scoped_refptr<AudioInputController> AudioInputController::CreateLowLatency(
// Create the AudioInputController object and ensure that it runs on
// the audio-manager thread.
scoped_refptr<AudioInputController> controller(new AudioInputController(
- audio_manager, event_handler, sync_writer));
+ event_handler, sync_writer));
+ controller->message_loop_ = audio_manager->GetMessageLoop();
// Create and open a new audio input stream from the existing
// audio-device thread. Use the provided audio-input device.
- controller->message_loop_->PostTask(FROM_HERE, base::Bind(
- &AudioInputController::DoCreate, base::Unretained(controller.get()),
- params, device_id));
+ if (!controller->message_loop_->PostTask(FROM_HERE,
+ base::Bind(&AudioInputController::DoCreate, controller,
+ base::Unretained(audio_manager), params, device_id))) {
+ controller = NULL;
+ }
return controller;
}
void AudioInputController::Record() {
message_loop_->PostTask(FROM_HERE, base::Bind(
- &AudioInputController::DoRecord, base::Unretained(this)));
+ &AudioInputController::DoRecord, this));
}
void AudioInputController::Close(const base::Closure& closed_task) {
DCHECK(!closed_task.is_null());
message_loop_->PostTask(FROM_HERE, base::Bind(
- &AudioInputController::DoClose, base::Unretained(this), closed_task));
+ &AudioInputController::DoClose, this, closed_task));
}
-void AudioInputController::DoCreate(const AudioParameters& params,
+void AudioInputController::DoCreate(AudioManager* audio_manager,
+ const AudioParameters& params,
const std::string& device_id) {
DCHECK(message_loop_->BelongsToCurrentThread());
- stream_ = audio_manager_->MakeAudioInputStream(params, device_id);
+ stream_ = audio_manager->MakeAudioInputStream(params, device_id);
if (!stream_) {
// TODO(satish): Define error types.
@@ -173,7 +177,7 @@ void AudioInputController::DoReportNoDataError() {
// Error notifications should be sent on the audio-manager thread.
int code = 0;
message_loop_->PostTask(FROM_HERE, base::Bind(
- &AudioInputController::DoReportError, base::Unretained(this), code));
+ &AudioInputController::DoReportError, this, code));
}
void AudioInputController::DoResetNoDataTimer() {
@@ -212,7 +216,7 @@ void AudioInputController::OnClose(AudioInputStream* stream) {
void AudioInputController::OnError(AudioInputStream* stream, int code) {
// Handle error on the audio-manager thread.
message_loop_->PostTask(FROM_HERE, base::Bind(
- &AudioInputController::DoReportError, base::Unretained(this), code));
+ &AudioInputController::DoReportError, this, code));
}
void AudioInputController::DoStopCloseAndClearStream(
diff --git a/media/audio/audio_input_controller.h b/media/audio/audio_input_controller.h
index b92a8c3..13815ee 100644
--- a/media/audio/audio_input_controller.h
+++ b/media/audio/audio_input_controller.h
@@ -178,11 +178,11 @@ class MEDIA_EXPORT AudioInputController
kError
};
- AudioInputController(AudioManager* audio_manager, EventHandler* handler,
- SyncWriter* sync_writer);
+ AudioInputController(EventHandler* handler, SyncWriter* sync_writer);
// Methods called on the audio thread (owned by the AudioManager).
- void DoCreate(const AudioParameters& params, const std::string& device_id);
+ void DoCreate(AudioManager* audio_manager, const AudioParameters& params,
+ const std::string& device_id);
void DoRecord();
void DoClose(const base::Closure& closed_task);
void DoReportError(int code);
@@ -199,9 +199,6 @@ class MEDIA_EXPORT AudioInputController
// Gives access to the message loop of the creating thread.
scoped_refptr<base::MessageLoopProxy> creator_loop_;
- // Reference to the reference counted audio manager.
- scoped_refptr<AudioManager> audio_manager_;
-
// The message loop of audio-manager thread that this object runs on.
scoped_refptr<base::MessageLoopProxy> message_loop_;
diff --git a/media/audio/audio_input_controller_unittest.cc b/media/audio/audio_input_controller_unittest.cc
index ee6649b..279bbc2 100644
--- a/media/audio/audio_input_controller_unittest.cc
+++ b/media/audio/audio_input_controller_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -79,11 +79,11 @@ TEST_F(AudioInputControllerTest, CreateAndClose) {
EXPECT_CALL(event_handler, OnCreated(NotNull()))
.WillOnce(QuitMessageLoop(message_loop_.message_loop_proxy()));
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
AudioParameters params(AudioParameters::AUDIO_MOCK, kChannelLayout,
kSampleRate, kBitsPerSample, kSamplesPerPacket);
scoped_refptr<AudioInputController> controller =
- AudioInputController::Create(audio_manager, &event_handler, params);
+ AudioInputController::Create(audio_manager.get(), &event_handler, params);
ASSERT_TRUE(controller.get());
// Close the AudioInputController synchronously.
@@ -109,13 +109,13 @@ TEST_F(AudioInputControllerTest, RecordAndClose) {
.WillRepeatedly(CheckCountAndPostQuitTask(&count, 10,
message_loop_.message_loop_proxy()));
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
AudioParameters params(AudioParameters::AUDIO_MOCK, kChannelLayout,
kSampleRate, kBitsPerSample, kSamplesPerPacket);
// Creating the AudioInputController should render an OnCreated() call.
scoped_refptr<AudioInputController> controller =
- AudioInputController::Create(audio_manager, &event_handler, params);
+ AudioInputController::Create(audio_manager.get(), &event_handler, params);
ASSERT_TRUE(controller.get());
// Start recording and trigger one OnRecording() call.
@@ -155,13 +155,13 @@ TEST_F(AudioInputControllerTest, RecordAndError) {
.Times(Exactly(1))
.WillOnce(QuitMessageLoop(message_loop_.message_loop_proxy()));
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
AudioParameters params(AudioParameters::AUDIO_MOCK, kChannelLayout,
kSampleRate, kBitsPerSample, kSamplesPerPacket);
// Creating the AudioInputController should render an OnCreated() call.
scoped_refptr<AudioInputController> controller =
- AudioInputController::Create(audio_manager, &event_handler, params);
+ AudioInputController::Create(audio_manager.get(), &event_handler, params);
ASSERT_TRUE(controller.get());
// Start recording and trigger one OnRecording() call.
@@ -188,11 +188,11 @@ TEST_F(AudioInputControllerTest, SamplesPerPacketTooLarge) {
EXPECT_CALL(event_handler, OnCreated(NotNull()))
.Times(Exactly(0));
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
AudioParameters params(AudioParameters::AUDIO_MOCK, kChannelLayout,
kSampleRate, kBitsPerSample, kSamplesPerPacket * 1000);
scoped_refptr<AudioInputController> controller =
- AudioInputController::Create(audio_manager, &event_handler, params);
+ AudioInputController::Create(audio_manager.get(), &event_handler, params);
ASSERT_FALSE(controller);
}
@@ -207,11 +207,11 @@ TEST_F(AudioInputControllerTest, CloseTwice) {
EXPECT_CALL(event_handler, OnRecording(NotNull()))
.Times(Exactly(1));
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
AudioParameters params(AudioParameters::AUDIO_MOCK, kChannelLayout,
kSampleRate, kBitsPerSample, kSamplesPerPacket);
scoped_refptr<AudioInputController> controller =
- AudioInputController::Create(audio_manager, &event_handler, params);
+ AudioInputController::Create(audio_manager.get(), &event_handler, params);
ASSERT_TRUE(controller.get());
controller->Record();
diff --git a/media/audio/audio_input_device_unittest.cc b/media/audio/audio_input_device_unittest.cc
index 72e93d2..0917b79 100644
--- a/media/audio/audio_input_device_unittest.cc
+++ b/media/audio/audio_input_device_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -20,8 +20,9 @@ using media::AudioDeviceNames;
class AudioInputDeviceTest
: public ::testing::Test {
protected:
- AudioInputDeviceTest() : com_init_(ScopedCOMInitializer::kMTA) {
- audio_manager_ = AudioManager::Create();
+ AudioInputDeviceTest()
+ : audio_manager_(AudioManager::Create()),
+ com_init_(ScopedCOMInitializer::kMTA) {
}
#if defined(OS_WIN)
@@ -73,7 +74,7 @@ class AudioInputDeviceTest
}
}
- scoped_refptr<AudioManager> audio_manager_;
+ scoped_ptr<AudioManager> audio_manager_;
// The MMDevice API requires COM to be initialized on the current thread.
ScopedCOMInitializer com_init_;
diff --git a/media/audio/audio_input_unittest.cc b/media/audio/audio_input_unittest.cc
index eeea7a4..54ece0c 100644
--- a/media/audio/audio_input_unittest.cc
+++ b/media/audio/audio_input_unittest.cc
@@ -84,7 +84,7 @@ static AudioInputStream* CreateTestAudioInputStream(AudioManager* audio_man) {
// Test that AudioInputStream rejects out of range parameters.
TEST(AudioInputTest, SanityOnMakeParams) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!CanRunAudioTests(audio_man.get()))
return;
@@ -118,7 +118,7 @@ TEST(AudioInputTest, SanityOnMakeParams) {
// Test create and close of an AudioInputStream without recording audio.
TEST(AudioInputTest, CreateAndClose) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!CanRunAudioTests(audio_man.get()))
return;
AudioInputStream* ais = CreateTestAudioInputStream(audio_man.get());
@@ -127,7 +127,7 @@ TEST(AudioInputTest, CreateAndClose) {
// Test create, open and close of an AudioInputStream without recording audio.
TEST(AudioInputTest, OpenAndClose) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!CanRunAudioTests(audio_man.get()))
return;
AudioInputStream* ais = CreateTestAudioInputStream(audio_man.get());
@@ -137,7 +137,7 @@ TEST(AudioInputTest, OpenAndClose) {
// Test create, open, stop and close of an AudioInputStream without recording.
TEST(AudioInputTest, OpenStopAndClose) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!CanRunAudioTests(audio_man.get()))
return;
AudioInputStream* ais = CreateTestAudioInputStream(audio_man.get());
@@ -148,7 +148,7 @@ TEST(AudioInputTest, OpenStopAndClose) {
// Test a normal recording sequence using an AudioInputStream.
TEST(AudioInputTest, Record) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!CanRunAudioTests(audio_man.get()))
return;
MessageLoop message_loop(MessageLoop::TYPE_DEFAULT);
diff --git a/media/audio/audio_low_latency_input_output_unittest.cc b/media/audio/audio_low_latency_input_output_unittest.cc
index a989a4e..56e007a 100644
--- a/media/audio/audio_low_latency_input_output_unittest.cc
+++ b/media/audio/audio_low_latency_input_output_unittest.cc
@@ -94,19 +94,12 @@ class MockAudioManager : public AudioManagerAnyPlatform {
// Test fixture class.
class AudioLowLatencyInputOutputTest : public testing::Test {
protected:
- AudioLowLatencyInputOutputTest()
- : mock_audio_manager_(new MockAudioManager()) {
- }
-
- virtual ~AudioLowLatencyInputOutputTest() { }
+ AudioLowLatencyInputOutputTest() {}
- AudioManager* audio_manager() {
- return mock_audio_manager_.get();
- }
+ virtual ~AudioLowLatencyInputOutputTest() {}
- MessageLoopForUI* message_loop() {
- return &message_loop_;
- }
+ AudioManager* audio_manager() { return &mock_audio_manager_; }
+ MessageLoopForUI* message_loop() { return &message_loop_; }
// Convenience method which ensures that we are not running on the build
// bots and that at least one valid input and output device can be found.
@@ -120,7 +113,7 @@ class AudioLowLatencyInputOutputTest : public testing::Test {
private:
MessageLoopForUI message_loop_;
- scoped_refptr<MockAudioManager> mock_audio_manager_;
+ MockAudioManager mock_audio_manager_;
DISALLOW_COPY_AND_ASSIGN(AudioLowLatencyInputOutputTest);
};
diff --git a/media/audio/audio_manager.cc b/media/audio/audio_manager.cc
index 295aa06..2ca71f2 100644
--- a/media/audio/audio_manager.cc
+++ b/media/audio/audio_manager.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -24,18 +24,8 @@ AudioManager::~AudioManager() {
g_audio_manager = NULL;
}
-#ifndef NDEBUG
-void AudioManager::AddRef() const {
- base::RefCountedThreadSafe<AudioManager>::AddRef();
-}
-
-void AudioManager::Release() const {
- base::RefCountedThreadSafe<AudioManager>::Release();
-}
-#endif
-
// static
-scoped_refptr<AudioManager> AudioManager::Create() {
+AudioManager* AudioManager::Create() {
AudioManager* ret = CreateAudioManager();
DCHECK(ret == g_audio_manager);
ret->Init();
diff --git a/media/audio/audio_manager.h b/media/audio/audio_manager.h
index b1ca217..e1f0145 100644
--- a/media/audio/audio_manager.h
+++ b/media/audio/audio_manager.h
@@ -23,25 +23,13 @@ class MessageLoopProxy;
// Manages all audio resources. In particular it owns the AudioOutputStream
// objects. Provides some convenience functions that avoid the need to provide
// iterators over the existing streams.
-// TODO(tommi): Make the manager non-refcounted when it's safe to do so.
-// -> Bug 107087.
-class MEDIA_EXPORT AudioManager
- : public base::RefCountedThreadSafe<AudioManager> {
+class MEDIA_EXPORT AudioManager {
public:
- AudioManager();
-
-#ifndef NDEBUG
- // Allow base classes in debug builds to override the reference counting
- // functions. This allows us to protect against regressions and enforce
- // correct usage. The default implementation just calls the base class.
- virtual void AddRef() const;
- virtual void Release() const;
-#endif
+ virtual ~AudioManager();
// Use to construct the audio manager.
- // NOTE: There should only be one instance. If you try to create more than
- // one instance, it will hit a CHECK().
- static scoped_refptr<AudioManager> Create();
+ // NOTE: There should only be one instance.
+ static AudioManager* Create();
// Returns true if the OS reports existence of audio devices. This does not
// guarantee that the existing devices support all formats and sample rates.
@@ -127,11 +115,13 @@ class MEDIA_EXPORT AudioManager
virtual scoped_refptr<base::MessageLoopProxy> GetMessageLoop() = 0;
protected:
+ AudioManager();
+
// Called from Create() to initialize the instance.
virtual void Init() = 0;
- friend class base::RefCountedThreadSafe<AudioManager>;
- virtual ~AudioManager();
+ private:
+ DISALLOW_COPY_AND_ASSIGN(AudioManager);
};
#endif // MEDIA_AUDIO_AUDIO_MANAGER_H_
diff --git a/media/audio/audio_manager_base.cc b/media/audio/audio_manager_base.cc
index ff76b17..2957e96 100644
--- a/media/audio/audio_manager_base.cc
+++ b/media/audio/audio_manager_base.cc
@@ -23,28 +23,6 @@ AudioManagerBase::~AudioManagerBase() {
Shutdown();
}
-#ifndef NDEBUG
-void AudioManagerBase::AddRef() const {
- {
- base::AutoLock lock(audio_thread_lock_);
- const MessageLoop* loop = audio_thread_.get() ?
- audio_thread_->message_loop() : NULL;
- DCHECK(loop == NULL || loop != MessageLoop::current());
- }
- AudioManager::AddRef();
-}
-
-void AudioManagerBase::Release() const {
- {
- base::AutoLock lock(audio_thread_lock_);
- const MessageLoop* loop = audio_thread_.get() ?
- audio_thread_->message_loop() : NULL;
- DCHECK(loop == NULL || loop != MessageLoop::current());
- }
- AudioManager::Release();
-}
-#endif
-
void AudioManagerBase::Init() {
base::AutoLock lock(audio_thread_lock_);
DCHECK(!audio_thread_.get());
diff --git a/media/audio/audio_manager_base.h b/media/audio/audio_manager_base.h
index 1cba8a8..7f42ea7 100644
--- a/media/audio/audio_manager_base.h
+++ b/media/audio/audio_manager_base.h
@@ -27,15 +27,7 @@ class MEDIA_EXPORT AudioManagerBase : public AudioManager {
// Unique Id of the generic "default" device.
static const char kDefaultDeviceId[];
- AudioManagerBase();
-
-#ifndef NDEBUG
- // Overridden to make sure we don't accidentally get added reference counts on
- // the audio thread. The AudioManagerBase instance must always be deleted
- // from outside the audio thread.
- virtual void AddRef() const OVERRIDE;
- virtual void Release() const OVERRIDE;
-#endif
+ virtual ~AudioManagerBase();
virtual void Init() OVERRIDE;
@@ -63,7 +55,7 @@ class MEDIA_EXPORT AudioManagerBase : public AudioManager {
void Shutdown();
protected:
- virtual ~AudioManagerBase();
+ AudioManagerBase();
typedef std::map<AudioParameters, scoped_refptr<AudioOutputDispatcher>,
AudioParameters::Compare>
diff --git a/media/audio/audio_output_controller.cc b/media/audio/audio_output_controller.cc
index a205e18..7e14fac 100644
--- a/media/audio/audio_output_controller.cc
+++ b/media/audio/audio_output_controller.cc
@@ -23,11 +23,9 @@ const int AudioOutputController::kPauseMark = -1;
const int AudioOutputController::kPollNumAttempts = 3;
const int AudioOutputController::kPollPauseInMilliseconds = 3;
-AudioOutputController::AudioOutputController(AudioManager* audio_manager,
- EventHandler* handler,
+AudioOutputController::AudioOutputController(EventHandler* handler,
SyncReader* sync_reader)
- : audio_manager_(audio_manager),
- handler_(handler),
+ : handler_(handler),
stream_(NULL),
volume_(1.0),
state_(kEmpty),
@@ -68,12 +66,12 @@ scoped_refptr<AudioOutputController> AudioOutputController::Create(
// Starts the audio controller thread.
scoped_refptr<AudioOutputController> controller(new AudioOutputController(
- audio_manager, event_handler, sync_reader));
+ event_handler, sync_reader));
controller->message_loop_ = audio_manager->GetMessageLoop();
controller->message_loop_->PostTask(FROM_HERE, base::Bind(
- &AudioOutputController::DoCreate, base::Unretained(controller.get()),
- params));
+ &AudioOutputController::DoCreate, controller,
+ base::Unretained(audio_manager), params));
return controller;
}
@@ -108,7 +106,8 @@ void AudioOutputController::SetVolume(double volume) {
&AudioOutputController::DoSetVolume, base::Unretained(this), volume));
}
-void AudioOutputController::DoCreate(const AudioParameters& params) {
+void AudioOutputController::DoCreate(AudioManager* audio_manager,
+ const AudioParameters& params) {
DCHECK(message_loop_->BelongsToCurrentThread());
// Close() can be called before DoCreate() is executed.
@@ -117,7 +116,7 @@ void AudioOutputController::DoCreate(const AudioParameters& params) {
DCHECK_EQ(kEmpty, state_);
DoStopCloseAndClearStream(NULL);
- stream_ = audio_manager_->MakeAudioOutputStreamProxy(params);
+ stream_ = audio_manager->MakeAudioOutputStreamProxy(params);
if (!stream_) {
// TODO(hclam): Define error types.
handler_->OnError(this, 0);
diff --git a/media/audio/audio_output_controller.h b/media/audio/audio_output_controller.h
index 4105e15..42e8d5a 100644
--- a/media/audio/audio_output_controller.h
+++ b/media/audio/audio_output_controller.h
@@ -175,12 +175,11 @@ class MEDIA_EXPORT AudioOutputController
static const int kPollNumAttempts;
static const int kPollPauseInMilliseconds;
- AudioOutputController(AudioManager* audio_manager,
- EventHandler* handler,
+ AudioOutputController(EventHandler* handler,
SyncReader* sync_reader);
// The following methods are executed on the audio manager thread.
- void DoCreate(const AudioParameters& params);
+ void DoCreate(AudioManager* audio_manager, const AudioParameters& params);
void DoPlay();
void PollAndStartIfDataReady();
void DoPause();
@@ -196,7 +195,6 @@ class MEDIA_EXPORT AudioOutputController
// Signals event when done if it is not NULL.
void DoStopCloseAndClearStream(base::WaitableEvent *done);
- scoped_refptr<AudioManager> audio_manager_;
// |handler_| may be called only if |state_| is not kClosed.
EventHandler* handler_;
AudioOutputStream* stream_;
diff --git a/media/audio/audio_output_controller_unittest.cc b/media/audio/audio_output_controller_unittest.cc
index d67ffaa..3736a90 100644
--- a/media/audio/audio_output_controller_unittest.cc
+++ b/media/audio/audio_output_controller_unittest.cc
@@ -72,7 +72,7 @@ static void CloseAudioController(AudioOutputController* controller) {
}
TEST(AudioOutputControllerTest, CreateAndClose) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
if (!audio_manager->HasAudioOutputDevices())
return;
@@ -88,7 +88,7 @@ TEST(AudioOutputControllerTest, CreateAndClose) {
kSampleRate, kBitsPerSample, kSamplesPerPacket);
scoped_refptr<AudioOutputController> controller =
AudioOutputController::Create(
- audio_manager, &event_handler, params, &sync_reader);
+ audio_manager.get(), &event_handler, params, &sync_reader);
ASSERT_TRUE(controller.get());
// Close the controller immediately.
@@ -96,7 +96,7 @@ TEST(AudioOutputControllerTest, CreateAndClose) {
}
TEST(AudioOutputControllerTest, PlayPauseClose) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
if (!audio_manager->HasAudioOutputDevices())
return;
@@ -125,7 +125,7 @@ TEST(AudioOutputControllerTest, PlayPauseClose) {
kSampleRate, kBitsPerSample, kSamplesPerPacket);
scoped_refptr<AudioOutputController> controller =
AudioOutputController::Create(
- audio_manager, &event_handler, params, &sync_reader);
+ audio_manager.get(), &event_handler, params, &sync_reader);
ASSERT_TRUE(controller.get());
// Wait for OnCreated() to be called.
@@ -142,7 +142,7 @@ TEST(AudioOutputControllerTest, PlayPauseClose) {
TEST(AudioOutputControllerTest, HardwareBufferTooLarge) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
if (!audio_manager->HasAudioOutputDevices())
return;
@@ -155,7 +155,7 @@ TEST(AudioOutputControllerTest, HardwareBufferTooLarge) {
kSamplesPerPacket * 1000);
scoped_refptr<AudioOutputController> controller =
AudioOutputController::Create(
- audio_manager, &event_handler, params, &sync_reader);
+ audio_manager.get(), &event_handler, params, &sync_reader);
// Use assert because we don't stop the device and assume we can't
// create one.
diff --git a/media/audio/audio_output_proxy_unittest.cc b/media/audio/audio_output_proxy_unittest.cc
index 957e77a..1f955b6 100644
--- a/media/audio/audio_output_proxy_unittest.cc
+++ b/media/audio/audio_output_proxy_unittest.cc
@@ -68,10 +68,8 @@ class MockAudioSourceCallback : public AudioOutputStream::AudioSourceCallback {
class AudioOutputProxyTest : public testing::Test {
protected:
virtual void SetUp() {
- MockAudioManager* manager = new MockAudioManager();
- EXPECT_CALL(*manager, GetMessageLoop())
+ EXPECT_CALL(manager_, GetMessageLoop())
.WillRepeatedly(Return(message_loop_.message_loop_proxy()));
- manager_ = manager;
InitDispatcher(base::TimeDelta::FromMilliseconds(kTestCloseDelayMs));
}
@@ -95,13 +93,13 @@ class AudioOutputProxyTest : public testing::Test {
}
MockAudioManager& manager() {
- return *manager_;
+ return manager_;
}
MessageLoop message_loop_;
scoped_refptr<AudioOutputDispatcher> dispatcher_;
base::TimeDelta pause_delay_;
- scoped_refptr<MockAudioManager> manager_;
+ MockAudioManager manager_;
MockAudioSourceCallback callback_;
};
diff --git a/media/audio/linux/alsa_output_unittest.cc b/media/audio/linux/alsa_output_unittest.cc
index a8359f6..bcf2e3d 100644
--- a/media/audio/linux/alsa_output_unittest.cc
+++ b/media/audio/linux/alsa_output_unittest.cc
@@ -96,7 +96,7 @@ class MockAudioManagerLinux : public AudioManagerLinux {
class AlsaPcmOutputStreamTest : public testing::Test {
protected:
AlsaPcmOutputStreamTest() {
- mock_manager_ = new StrictMock<MockAudioManagerLinux>();
+ mock_manager_.reset(new StrictMock<MockAudioManagerLinux>());
test_stream_.reset(CreateStream(kTestChannelLayout));
}
@@ -115,7 +115,7 @@ class AlsaPcmOutputStreamTest : public testing::Test {
return new AlsaPcmOutputStream(kTestDeviceName,
params,
&mock_alsa_wrapper_,
- mock_manager_);
+ mock_manager_.get());
}
// Helper function to malloc the string returned by DeviceNameHint for NAME.
@@ -138,7 +138,7 @@ class AlsaPcmOutputStreamTest : public testing::Test {
}
MockAudioManagerLinux& mock_manager() {
- return *mock_manager_;
+ return *(mock_manager_.get());
}
static const ChannelLayout kTestChannelLayout;
@@ -163,7 +163,7 @@ class AlsaPcmOutputStreamTest : public testing::Test {
static void* kFakeHints[];
StrictMock<MockAlsaWrapper> mock_alsa_wrapper_;
- scoped_refptr<StrictMock<MockAudioManagerLinux> > mock_manager_;
+ scoped_ptr<StrictMock<MockAudioManagerLinux> > mock_manager_;
MessageLoop message_loop_;
scoped_ptr<AlsaPcmOutputStream> test_stream_;
scoped_refptr<media::DataBuffer> packet_;
@@ -220,7 +220,7 @@ TEST_F(AlsaPcmOutputStreamTest, ConstructedState) {
test_stream_.reset(new AlsaPcmOutputStream(kTestDeviceName,
bad_bps_params,
&mock_alsa_wrapper_,
- mock_manager_));
+ mock_manager_.get()));
EXPECT_EQ(AlsaPcmOutputStream::kInError, test_stream_->state());
// Bad format.
@@ -230,7 +230,7 @@ TEST_F(AlsaPcmOutputStreamTest, ConstructedState) {
test_stream_.reset(new AlsaPcmOutputStream(kTestDeviceName,
bad_format_params,
&mock_alsa_wrapper_,
- mock_manager_));
+ mock_manager_.get()));
EXPECT_EQ(AlsaPcmOutputStream::kInError, test_stream_->state());
}
@@ -267,7 +267,7 @@ TEST_F(AlsaPcmOutputStreamTest, LatencyFloor) {
test_stream_->Close();
Mock::VerifyAndClear(&mock_alsa_wrapper_);
- Mock::VerifyAndClear(mock_manager_);
+ Mock::VerifyAndClear(mock_manager_.get());
// Test that having more packets ends up with a latency based on packet size.
const int kOverMinLatencyPacketSize = kPacketFramesInMinLatency + 1;
@@ -297,7 +297,7 @@ TEST_F(AlsaPcmOutputStreamTest, LatencyFloor) {
test_stream_->Close();
Mock::VerifyAndClear(&mock_alsa_wrapper_);
- Mock::VerifyAndClear(mock_manager_);
+ Mock::VerifyAndClear(mock_manager_.get());
}
TEST_F(AlsaPcmOutputStreamTest, OpenClose) {
@@ -675,7 +675,7 @@ TEST_F(AlsaPcmOutputStreamTest, AutoSelectDevice_DeviceSelect) {
EXPECT_EQ(kExpectedDownmix[i], test_stream_->should_downmix_);
Mock::VerifyAndClearExpectations(&mock_alsa_wrapper_);
- Mock::VerifyAndClearExpectations(mock_manager_);
+ Mock::VerifyAndClearExpectations(mock_manager_.get());
}
}
diff --git a/media/audio/mac/audio_low_latency_input_mac_unittest.cc b/media/audio/mac/audio_low_latency_input_mac_unittest.cc
index b7be3f4..fdd170e 100644
--- a/media/audio/mac/audio_low_latency_input_mac_unittest.cc
+++ b/media/audio/mac/audio_low_latency_input_mac_unittest.cc
@@ -125,7 +125,7 @@ class MacAudioInputTest : public testing::Test {
return ais;
}
- scoped_refptr<AudioManager> audio_manager_;
+ scoped_ptr<AudioManager> audio_manager_;
};
// Test Create(), Close().
diff --git a/media/audio/mac/audio_output_mac_unittest.cc b/media/audio/mac/audio_output_mac_unittest.cc
index 76f15a9..71a7f40 100644
--- a/media/audio/mac/audio_output_mac_unittest.cc
+++ b/media/audio/mac/audio_output_mac_unittest.cc
@@ -51,7 +51,7 @@ TEST(MacAudioTest, SineWaveAudio16MonoTest) {
// Test that can it be created and closed.
TEST(MacAudioTest, PCMWaveStreamGetAndClose) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices())
return;
AudioOutputStream* oas = audio_man->MakeAudioOutputStream(
@@ -63,7 +63,7 @@ TEST(MacAudioTest, PCMWaveStreamGetAndClose) {
// Test that it can be opened and closed.
TEST(MacAudioTest, PCMWaveStreamOpenAndClose) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices())
return;
AudioOutputStream* oas = audio_man->MakeAudioOutputStream(
@@ -79,7 +79,7 @@ TEST(MacAudioTest, PCMWaveStreamOpenAndClose) {
// pops or noises while the sound is playing. The sound must also be identical
// to the sound of PCMWaveStreamPlay200HzTone22KssMono test.
TEST(MacAudioTest, PCMWaveStreamPlay200HzTone44KssMono) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices())
return;
uint32 frames_100_ms = AudioParameters::kAudioCDSampleRate / 10;
@@ -109,7 +109,7 @@ TEST(MacAudioTest, PCMWaveStreamPlay200HzTone44KssMono) {
// or noises while the sound is playing. The sound must also be identical to the
// sound of PCMWaveStreamPlay200HzTone44KssMono test.
TEST(MacAudioTest, PCMWaveStreamPlay200HzTone22KssMono) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices())
return;
uint32 frames_100_ms = AudioParameters::kAudioCDSampleRate / 10;
@@ -135,7 +135,7 @@ static void ClearBuffer(AudioOutputStream* stream, uint8* dest,
}
TEST(MacAudioTest, PCMWaveStreamPendingBytes) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices())
return;
diff --git a/media/audio/simple_sources_unittest.cc b/media/audio/simple_sources_unittest.cc
index def0411..ef00ed7 100644
--- a/media/audio/simple_sources_unittest.cc
+++ b/media/audio/simple_sources_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -68,7 +68,7 @@ TEST(SimpleSources, SineWaveAudio16MonoTest) {
SineWaveAudioSource source(SineWaveAudioSource::FORMAT_16BIT_LINEAR_PCM, 1,
freq, AudioParameters::kTelephoneSampleRate);
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
AudioParameters params(
AudioParameters::AUDIO_MOCK, CHANNEL_LAYOUT_MONO,
AudioParameters::kTelephoneSampleRate, bytes_per_sample * 2, samples);
diff --git a/media/audio/test_audio_input_controller_factory.cc b/media/audio/test_audio_input_controller_factory.cc
index 441f55b..04ab11c 100644
--- a/media/audio/test_audio_input_controller_factory.cc
+++ b/media/audio/test_audio_input_controller_factory.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -12,9 +12,10 @@ TestAudioInputController::TestAudioInputController(
AudioManager* audio_manager,
EventHandler* event_handler,
SyncWriter* sync_writer)
- : AudioInputController(audio_manager, event_handler, sync_writer),
+ : AudioInputController(event_handler, sync_writer),
factory_(factory),
event_handler_(event_handler) {
+ message_loop_ = audio_manager->GetMessageLoop();
}
TestAudioInputController::~TestAudioInputController() {
@@ -23,7 +24,7 @@ TestAudioInputController::~TestAudioInputController() {
}
void TestAudioInputController::Close(const base::Closure& closed_task) {
- audio_manager_->GetMessageLoop()->PostTask(FROM_HERE, closed_task);
+ message_loop_->PostTask(FROM_HERE, closed_task);
}
TestAudioInputControllerFactory::TestAudioInputControllerFactory()
diff --git a/media/audio/win/audio_low_latency_input_win_unittest.cc b/media/audio/win/audio_low_latency_input_win_unittest.cc
index 4234dce..a77620a 100644
--- a/media/audio/win/audio_low_latency_input_win_unittest.cc
+++ b/media/audio/win/audio_low_latency_input_win_unittest.cc
@@ -153,7 +153,7 @@ class AudioInputStreamWrapper {
}
ScopedCOMInitializer com_init_;
- scoped_refptr<AudioManager> audio_man_;
+ AudioManager* audio_man_;
AudioParameters::Format format_;
ChannelLayout channel_layout_;
int bits_per_sample_;
@@ -175,8 +175,8 @@ static AudioInputStream* CreateDefaultAudioInputStream(
// endpoint device.
// TODO(henrika): modify this test when we support full device enumeration.
TEST(WinAudioInputTest, WASAPIAudioInputStreamHardwareSampleRate) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
ScopedCOMInitializer com_init(ScopedCOMInitializer::kMTA);
@@ -200,29 +200,29 @@ TEST(WinAudioInputTest, WASAPIAudioInputStreamHardwareSampleRate) {
// Test Create(), Close() calling sequence.
TEST(WinAudioInputTest, WASAPIAudioInputStreamCreateAndClose) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
- AudioInputStream* ais = CreateDefaultAudioInputStream(audio_manager);
+ AudioInputStream* ais = CreateDefaultAudioInputStream(audio_manager.get());
ais->Close();
}
// Test Open(), Close() calling sequence.
TEST(WinAudioInputTest, WASAPIAudioInputStreamOpenAndClose) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
- AudioInputStream* ais = CreateDefaultAudioInputStream(audio_manager);
+ AudioInputStream* ais = CreateDefaultAudioInputStream(audio_manager.get());
EXPECT_TRUE(ais->Open());
ais->Close();
}
// Test Open(), Start(), Close() calling sequence.
TEST(WinAudioInputTest, WASAPIAudioInputStreamOpenStartAndClose) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
- AudioInputStream* ais = CreateDefaultAudioInputStream(audio_manager);
+ AudioInputStream* ais = CreateDefaultAudioInputStream(audio_manager.get());
EXPECT_TRUE(ais->Open());
MockAudioInputCallback sink;
ais->Start(&sink);
@@ -233,10 +233,10 @@ TEST(WinAudioInputTest, WASAPIAudioInputStreamOpenStartAndClose) {
// Test Open(), Start(), Stop(), Close() calling sequence.
TEST(WinAudioInputTest, WASAPIAudioInputStreamOpenStartStopAndClose) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
- AudioInputStream* ais = CreateDefaultAudioInputStream(audio_manager);
+ AudioInputStream* ais = CreateDefaultAudioInputStream(audio_manager.get());
EXPECT_TRUE(ais->Open());
MockAudioInputCallback sink;
ais->Start(&sink);
@@ -248,10 +248,10 @@ TEST(WinAudioInputTest, WASAPIAudioInputStreamOpenStartStopAndClose) {
// Test some additional calling sequences.
TEST(MacAudioInputTest, WASAPIAudioInputStreamMiscCallingSequences) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
- AudioInputStream* ais = CreateDefaultAudioInputStream(audio_manager);
+ AudioInputStream* ais = CreateDefaultAudioInputStream(audio_manager.get());
WASAPIAudioInputStream* wais = static_cast<WASAPIAudioInputStream*>(ais);
// Open(), Open() should fail the second time.
@@ -278,15 +278,15 @@ TEST(MacAudioInputTest, WASAPIAudioInputStreamMiscCallingSequences) {
}
TEST(WinAudioInputTest, WASAPIAudioInputStreamTestPacketSizes) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
// 10 ms packet size.
// Create default WASAPI input stream which records in stereo using
// the shared mixing rate. The default buffer size is 10ms.
- AudioInputStreamWrapper aisw(audio_manager);
+ AudioInputStreamWrapper aisw(audio_manager.get());
AudioInputStream* ais = aisw.Create();
EXPECT_TRUE(ais->Open());
@@ -359,8 +359,8 @@ TEST(WinAudioInputTest, WASAPIAudioInputStreamTestPacketSizes) {
// with --gtest_also_run_disabled_tests or set the GTEST_ALSO_RUN_DISABLED_TESTS
// environment variable to a value greater than 0.
TEST(WinAudioInputTest, DISABLED_WASAPIAudioInputStreamRecordToFile) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
// Name of the output PCM file containing captured data. The output file
@@ -368,7 +368,7 @@ TEST(WinAudioInputTest, DISABLED_WASAPIAudioInputStreamRecordToFile) {
// Example of full name: \src\build\Debug\out_stereo_10sec.pcm.
const char* file_name = "out_stereo_10sec.pcm";
- AudioInputStreamWrapper aisw(audio_manager);
+ AudioInputStreamWrapper aisw(audio_manager.get());
AudioInputStream* ais = aisw.Create();
EXPECT_TRUE(ais->Open());
diff --git a/media/audio/win/audio_low_latency_output_win_unittest.cc b/media/audio/win/audio_low_latency_output_win_unittest.cc
index 73ac984..e7f3bb8 100644
--- a/media/audio/win/audio_low_latency_output_win_unittest.cc
+++ b/media/audio/win/audio_low_latency_output_win_unittest.cc
@@ -204,7 +204,7 @@ class AudioOutputStreamWrapper {
}
ScopedCOMInitializer com_init_;
- scoped_refptr<AudioManager> audio_man_;
+ AudioManager* audio_man_;
AudioParameters::Format format_;
ChannelLayout channel_layout_;
int bits_per_sample_;
@@ -230,8 +230,8 @@ static void QuitMessageLoop(base::MessageLoopProxy* proxy) {
// endpoint device.
// TODO(henrika): modify this test when we support full device enumeration.
TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestHardwareSampleRate) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
ScopedCOMInitializer com_init(ScopedCOMInitializer::kMTA);
@@ -255,29 +255,29 @@ TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestHardwareSampleRate) {
// Test Create(), Close() calling sequence.
TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestCreateAndClose) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
- AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager);
+ AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager.get());
aos->Close();
}
// Test Open(), Close() calling sequence.
TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestOpenAndClose) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
- AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager);
+ AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager.get());
EXPECT_TRUE(aos->Open());
aos->Close();
}
// Test Open(), Start(), Close() calling sequence.
TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestOpenStartAndClose) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
- AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager);
+ AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager.get());
EXPECT_TRUE(aos->Open());
MockAudioSourceCallback source;
EXPECT_CALL(source, OnError(aos, _))
@@ -288,10 +288,10 @@ TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestOpenStartAndClose) {
// Test Open(), Start(), Stop(), Close() calling sequence.
TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestOpenStartStopAndClose) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
- AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager);
+ AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager.get());
EXPECT_TRUE(aos->Open());
MockAudioSourceCallback source;
EXPECT_CALL(source, OnError(aos, _))
@@ -303,10 +303,10 @@ TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestOpenStartStopAndClose) {
// Test SetVolume(), GetVolume()
TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestVolume) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
- AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager);
+ AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager.get());
// Initial volume should be full volume (1.0).
double volume = 0.0;
@@ -340,11 +340,11 @@ TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestVolume) {
// Test some additional calling sequences.
TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestMiscCallingSequences) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
- AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager);
+ AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager.get());
WASAPIAudioOutputStream* waos = static_cast<WASAPIAudioOutputStream*>(aos);
// Open(), Open() is a valid calling sequence (second call does nothing).
@@ -370,8 +370,8 @@ TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestMiscCallingSequences) {
// Use default packet size (10ms) and verify that rendering starts.
TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestPacketSizeInMilliseconds) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
MessageLoopForUI loop;
@@ -381,7 +381,7 @@ TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestPacketSizeInMilliseconds) {
// Create default WASAPI output stream which plays out in stereo using
// the shared mixing rate. The default buffer size is 10ms.
- AudioOutputStreamWrapper aosw(audio_manager);
+ AudioOutputStreamWrapper aosw(audio_manager.get());
AudioOutputStream* aos = aosw.Create();
EXPECT_TRUE(aos->Open());
@@ -412,8 +412,8 @@ TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestPacketSizeInMilliseconds) {
// Use a fixed packets size (independent of sample rate) and verify
// that rendering starts.
TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestPacketSizeInSamples) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
MessageLoopForUI loop;
@@ -423,7 +423,7 @@ TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestPacketSizeInSamples) {
// Create default WASAPI output stream which plays out in stereo using
// the shared mixing rate. The buffer size is set to 1024 samples.
- AudioOutputStreamWrapper aosw(audio_manager);
+ AudioOutputStreamWrapper aosw(audio_manager.get());
AudioOutputStream* aos = aosw.Create(1024);
EXPECT_TRUE(aos->Open());
@@ -452,8 +452,8 @@ TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestPacketSizeInSamples) {
}
TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestMono) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
MessageLoopForUI loop;
@@ -463,7 +463,7 @@ TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestMono) {
// Create default WASAPI output stream which plays out in *mono* using
// the shared mixing rate. The default buffer size is 10ms.
- AudioOutputStreamWrapper aosw(audio_manager);
+ AudioOutputStreamWrapper aosw(audio_manager.get());
AudioOutputStream* aos = aosw.Create(CHANNEL_LAYOUT_MONO);
bool opened = aos->Open();
@@ -505,11 +505,11 @@ TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestMono) {
// environment variable to a value greater than 0.
// The test files are approximately 20 seconds long.
TEST(WinAudioOutputTest, DISABLED_WASAPIAudioOutputStreamReadFromFile) {
- scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
- if (!CanRunAudioTests(audio_manager))
+ scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
+ if (!CanRunAudioTests(audio_manager.get()))
return;
- AudioOutputStreamWrapper aosw(audio_manager);
+ AudioOutputStreamWrapper aosw(audio_manager.get());
AudioOutputStream* aos = aosw.Create();
EXPECT_TRUE(aos->Open());
diff --git a/media/audio/win/audio_output_win_unittest.cc b/media/audio/win/audio_output_win_unittest.cc
index a6d637c..a6e240d 100644
--- a/media/audio/win/audio_output_win_unittest.cc
+++ b/media/audio/win/audio_output_win_unittest.cc
@@ -195,7 +195,7 @@ class ReadOnlyMappedFile {
// ============================================================================
// Validate that the AudioManager::AUDIO_MOCK callbacks work.
TEST(WinAudioTest, MockStreamBasicCallbacks) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
AudioOutputStream* oas = audio_man->MakeAudioOutputStream(
AudioParameters(AudioParameters::AUDIO_MOCK, CHANNEL_LAYOUT_STEREO, 8000,
8, 128));
@@ -219,7 +219,7 @@ TEST(WinAudioTest, MockStreamBasicCallbacks) {
// Test that can it be created and closed.
TEST(WinAudioTest, PCMWaveStreamGetAndClose) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices()) {
LOG(WARNING) << "No output device detected.";
return;
@@ -234,7 +234,7 @@ TEST(WinAudioTest, PCMWaveStreamGetAndClose) {
// Test that can it be cannot be created with invalid parameters.
TEST(WinAudioTest, SanityOnMakeParams) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices()) {
LOG(WARNING) << "No output device detected.";
return;
@@ -262,7 +262,7 @@ TEST(WinAudioTest, SanityOnMakeParams) {
// Test that it can be opened and closed.
TEST(WinAudioTest, PCMWaveStreamOpenAndClose) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices()) {
LOG(WARNING) << "No output device detected.";
return;
@@ -278,7 +278,7 @@ TEST(WinAudioTest, PCMWaveStreamOpenAndClose) {
// Test that it has a maximum packet size.
TEST(WinAudioTest, PCMWaveStreamOpenLimit) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices()) {
LOG(WARNING) << "No output device detected.";
return;
@@ -295,7 +295,7 @@ TEST(WinAudioTest, PCMWaveStreamOpenLimit) {
// Test that it uses the triple buffers correctly. Because it uses the actual
// audio device, you might hear a short pop noise for a short time.
TEST(WinAudioTest, PCMWaveStreamTripleBuffer) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices()) {
LOG(WARNING) << "No output device detected.";
return;
@@ -320,7 +320,7 @@ TEST(WinAudioTest, PCMWaveStreamTripleBuffer) {
// time. The actual EXPECT_GT are mostly meaningless and the real test is that
// the test completes in reasonable time.
TEST(WinAudioTest, PCMWaveSlowSource) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices()) {
LOG(WARNING) << "No output device detected.";
return;
@@ -347,7 +347,7 @@ TEST(WinAudioTest, PCMWaveSlowSource) {
// gets paused. This test is best when run over RDP with audio enabled. See
// bug 19276 for more details.
TEST(WinAudioTest, PCMWaveStreamPlaySlowLoop) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices()) {
LOG(WARNING) << "No output device detected.";
return;
@@ -378,7 +378,7 @@ TEST(WinAudioTest, PCMWaveStreamPlaySlowLoop) {
// device at 44.1K s/sec. Parameters have been chosen carefully so you should
// not hear pops or noises while the sound is playing.
TEST(WinAudioTest, PCMWaveStreamPlay200HzTone44Kss) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices()) {
LOG(WARNING) << "No output device detected.";
return;
@@ -406,7 +406,7 @@ TEST(WinAudioTest, PCMWaveStreamPlay200HzTone44Kss) {
// not hear pops or noises while the sound is playing. The audio also should
// sound with a lower volume than PCMWaveStreamPlay200HzTone44Kss.
TEST(WinAudioTest, PCMWaveStreamPlay200HzTone22Kss) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices()) {
LOG(WARNING) << "No output device detected.";
return;
@@ -443,7 +443,7 @@ TEST(WinAudioTest, PCMWaveStreamPlay200HzTone22Kss) {
// to 2KHz with a bit of fade out at the end for one second. The file is two
// of these sweeping tones back to back.
TEST(WinAudioTest, PushSourceFile16KHz) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices()) {
LOG(WARNING) << "No output device detected.";
return;
@@ -500,7 +500,7 @@ TEST(WinAudioTest, PushSourceFile16KHz) {
// stopped. You will here two .5 seconds wave signal separated by 0.5 seconds
// of silence.
TEST(WinAudioTest, PCMWaveStreamPlayTwice200HzTone44Kss) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices()) {
LOG(WARNING) << "No output device detected.";
return;
@@ -537,7 +537,7 @@ TEST(WinAudioTest, PCMWaveStreamPlayTwice200HzTone44Kss) {
// higher and Wave is used for XP and lower. It is possible to utilize a
// smaller buffer size for WASAPI than for Wave.
TEST(WinAudioTest, PCMWaveStreamPlay200HzToneLowLatency) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices()) {
LOG(WARNING) << "No output device detected.";
return;
@@ -580,7 +580,7 @@ TEST(WinAudioTest, PCMWaveStreamPlay200HzToneLowLatency) {
// Check that the pending bytes value is correct what the stream starts.
TEST(WinAudioTest, PCMWaveStreamPendingBytes) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices()) {
LOG(WARNING) << "No output device detected.";
return;
@@ -707,7 +707,7 @@ DWORD __stdcall SyncSocketThread(void* context) {
// related to the two different audio-layers for AUDIO_PCM_LOW_LATENCY.
// In this test you should hear a continuous 200Hz tone for 2 seconds.
TEST(WinAudioTest, SyncSocketBasic) {
- scoped_refptr<AudioManager> audio_man(AudioManager::Create());
+ scoped_ptr<AudioManager> audio_man(AudioManager::Create());
if (!audio_man->HasAudioOutputDevices()) {
LOG(WARNING) << "No output device detected.";
return;