Index: remoting/client/audio_decode_scheduler.cc |
diff --git a/remoting/client/audio_decode_scheduler.cc b/remoting/client/audio_decode_scheduler.cc |
index 3f0e46660024c9af504985d7a42d82663a361c35..f73497deca2ab50b090b77937a628ffa1d0bc255 100644 |
--- a/remoting/client/audio_decode_scheduler.cc |
+++ b/remoting/client/audio_decode_scheduler.cc |
@@ -9,8 +9,9 @@ |
#include "base/bind.h" |
#include "base/location.h" |
#include "base/macros.h" |
+#include "base/memory/weak_ptr.h" |
#include "base/single_thread_task_runner.h" |
-#include "remoting/client/audio_player.h" |
+#include "remoting/client/audio_consumer.h" |
#include "remoting/codec/audio_decoder.h" |
#include "remoting/proto/audio.pb.h" |
@@ -20,15 +21,12 @@ class AudioDecodeScheduler::Core : public base::RefCountedThreadSafe<Core> { |
public: |
Core(scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
scoped_refptr<base::SingleThreadTaskRunner> audio_decode_task_runner, |
- std::unique_ptr<AudioPlayer> audio_player); |
+ base::WeakPtr<AudioConsumer> audio_consumer); |
void Initialize(const protocol::SessionConfig& config); |
void ProcessAudioPacket(std::unique_ptr<AudioPacket> packet, |
const base::Closure& done); |
- // Called by AudioDecodeScheduler when it is destroyed. |
- void Detach(); |
- |
private: |
friend class base::RefCountedThreadSafe<Core>; |
@@ -45,7 +43,7 @@ class AudioDecodeScheduler::Core : public base::RefCountedThreadSafe<Core> { |
scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_; |
scoped_refptr<base::SingleThreadTaskRunner> audio_decode_task_runner_; |
std::unique_ptr<AudioDecoder> decoder_; |
- std::unique_ptr<AudioPlayer> audio_player_; |
+ base::WeakPtr<AudioConsumer> audio_consumer_; |
DISALLOW_COPY_AND_ASSIGN(Core); |
}; |
@@ -53,10 +51,10 @@ class AudioDecodeScheduler::Core : public base::RefCountedThreadSafe<Core> { |
AudioDecodeScheduler::Core::Core( |
scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
scoped_refptr<base::SingleThreadTaskRunner> audio_decode_task_runner, |
- std::unique_ptr<AudioPlayer> audio_player) |
+ base::WeakPtr<AudioConsumer> audio_consumer) |
: main_task_runner_(main_task_runner), |
audio_decode_task_runner_(audio_decode_task_runner), |
- audio_player_(std::move(audio_player)) {} |
+ audio_consumer_(audio_consumer) {} |
AudioDecodeScheduler::Core::~Core() {} |
@@ -75,11 +73,6 @@ void AudioDecodeScheduler::Core::ProcessAudioPacket( |
base::Passed(&packet), done)); |
} |
-void AudioDecodeScheduler::Core::Detach() { |
- DCHECK(main_task_runner_->BelongsToCurrentThread()); |
- audio_player_.reset(); |
-} |
- |
void AudioDecodeScheduler::Core::DecodePacket( |
std::unique_ptr<AudioPacket> packet, |
const base::Closure& done) { |
@@ -97,21 +90,21 @@ void AudioDecodeScheduler::Core::ProcessDecodedPacket( |
const base::Closure& done) { |
DCHECK(main_task_runner_->BelongsToCurrentThread()); |
// Only process |packet| if it is non-null. |
- if (packet.get() && audio_player_.get()) |
- audio_player_->ProcessAudioPacket(std::move(packet)); |
+ if (packet.get() && audio_consumer_) { |
+ audio_consumer_->AddAudioPacket(std::move(packet)); |
+ } |
done.Run(); |
} |
AudioDecodeScheduler::AudioDecodeScheduler( |
scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
scoped_refptr<base::SingleThreadTaskRunner> audio_decode_task_runner, |
- std::unique_ptr<AudioPlayer> audio_player) |
+ base::WeakPtr<AudioConsumer> audio_consumer) |
: core_(new Core(main_task_runner, |
audio_decode_task_runner, |
- std::move(audio_player))) {} |
+ audio_consumer)) {} |
AudioDecodeScheduler::~AudioDecodeScheduler() { |
- core_->Detach(); |
} |
void AudioDecodeScheduler::Initialize(const protocol::SessionConfig& config) { |