Chromium Code Reviews| 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..2358521bc28b547f943545edfebd4083da00a2e7 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,7 +21,7 @@ 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, |
| @@ -45,7 +46,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 +54,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() {} |
| @@ -77,7 +78,7 @@ void AudioDecodeScheduler::Core::ProcessAudioPacket( |
| void AudioDecodeScheduler::Core::Detach() { |
| DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| - audio_player_.reset(); |
| + // TODO(nicholss) No work to do anymore. Remove this? |
|
Sergey Ulanov
2016/06/18 00:43:38
Yes please.
nicholss
2016/06/20 17:47:52
Done.
|
| } |
| void AudioDecodeScheduler::Core::DecodePacket( |
| @@ -97,18 +98,19 @@ 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(); |