diff options
author | tommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-15 17:35:04 +0000 |
---|---|---|
committer | tommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-15 17:35:04 +0000 |
commit | 7b52361dd69914600e40db052cf7c4bf8671dba8 (patch) | |
tree | 8fc761b27815f655840f5e9bf7d61b4868578119 /media/audio | |
parent | 3dfc972e392157dc7f5e31b3530a98397c6a1a33 (diff) | |
download | chromium_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')
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; |