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

Side by Side Diff: remoting/client/audio_decode_scheduler.cc

Issue 2084123002: Adding an interface to allow extension of the audio player for CRD and iOS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removing AudioPlayer::ProcessAudioPacket. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/client/audio_decode_scheduler.h" 5 #include "remoting/client/audio_decode_scheduler.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/location.h" 10 #include "base/location.h"
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/memory/weak_ptr.h" 12 #include "base/memory/weak_ptr.h"
13 #include "base/single_thread_task_runner.h" 13 #include "base/single_thread_task_runner.h"
14 #include "remoting/client/audio_consumer.h" 14 #include "remoting/client/audio_consumer.h"
15 #include "remoting/codec/audio_decoder.h" 15 #include "remoting/codec/audio_decoder.h"
16 #include "remoting/proto/audio.pb.h" 16 #include "remoting/proto/audio.pb.h"
17 17
18 namespace remoting { 18 namespace remoting {
19 19
20 class AudioDecodeScheduler::Core : public base::RefCountedThreadSafe<Core> { 20 class AudioDecodeScheduler::Core : public base::RefCountedThreadSafe<Core> {
21 public: 21 public:
22 Core(scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, 22 Core(scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
23 scoped_refptr<base::SingleThreadTaskRunner> audio_decode_task_runner, 23 scoped_refptr<base::SingleThreadTaskRunner> audio_decode_task_runner,
24 base::WeakPtr<AudioConsumer> audio_consumer); 24 base::WeakPtr<AudioConsumer> audio_consumer);
25 25
26 void Initialize(const protocol::SessionConfig& config); 26 void Initialize(const protocol::SessionConfig& config);
27 void ProcessAudioPacket(std::unique_ptr<AudioPacket> packet, 27 void ProcessAudioPacket(std::unique_ptr<AudioPacket> packet,
28 const base::Closure& done); 28 const base::Closure& done);
29 29
30 // Called by AudioDecodeScheduler when it is destroyed.
31 void Detach();
32
33 private: 30 private:
34 friend class base::RefCountedThreadSafe<Core>; 31 friend class base::RefCountedThreadSafe<Core>;
35 32
36 virtual ~Core(); 33 virtual ~Core();
37 34
38 // Called on the audio decoder thread. 35 // Called on the audio decoder thread.
39 void DecodePacket(std::unique_ptr<AudioPacket> packet, 36 void DecodePacket(std::unique_ptr<AudioPacket> packet,
40 const base::Closure& done); 37 const base::Closure& done);
41 38
42 // Called on the main thread. 39 // Called on the main thread.
(...skipping 26 matching lines...) Expand all
69 66
70 void AudioDecodeScheduler::Core::ProcessAudioPacket( 67 void AudioDecodeScheduler::Core::ProcessAudioPacket(
71 std::unique_ptr<AudioPacket> packet, 68 std::unique_ptr<AudioPacket> packet,
72 const base::Closure& done) { 69 const base::Closure& done) {
73 DCHECK(main_task_runner_->BelongsToCurrentThread()); 70 DCHECK(main_task_runner_->BelongsToCurrentThread());
74 audio_decode_task_runner_->PostTask(FROM_HERE, base::Bind( 71 audio_decode_task_runner_->PostTask(FROM_HERE, base::Bind(
75 &AudioDecodeScheduler::Core::DecodePacket, this, 72 &AudioDecodeScheduler::Core::DecodePacket, this,
76 base::Passed(&packet), done)); 73 base::Passed(&packet), done));
77 } 74 }
78 75
79 void AudioDecodeScheduler::Core::Detach() {
80 DCHECK(main_task_runner_->BelongsToCurrentThread());
81 // TODO(nicholss) No work to do anymore. Remove this?
82 }
83
84 void AudioDecodeScheduler::Core::DecodePacket( 76 void AudioDecodeScheduler::Core::DecodePacket(
85 std::unique_ptr<AudioPacket> packet, 77 std::unique_ptr<AudioPacket> packet,
86 const base::Closure& done) { 78 const base::Closure& done) {
87 DCHECK(audio_decode_task_runner_->BelongsToCurrentThread()); 79 DCHECK(audio_decode_task_runner_->BelongsToCurrentThread());
88 std::unique_ptr<AudioPacket> decoded_packet = 80 std::unique_ptr<AudioPacket> decoded_packet =
89 decoder_->Decode(std::move(packet)); 81 decoder_->Decode(std::move(packet));
90 82
91 main_task_runner_->PostTask(FROM_HERE, base::Bind( 83 main_task_runner_->PostTask(FROM_HERE, base::Bind(
92 &AudioDecodeScheduler::Core::ProcessDecodedPacket, this, 84 &AudioDecodeScheduler::Core::ProcessDecodedPacket, this,
93 base::Passed(&decoded_packet), done)); 85 base::Passed(&decoded_packet), done));
(...skipping 12 matching lines...) Expand all
106 98
107 AudioDecodeScheduler::AudioDecodeScheduler( 99 AudioDecodeScheduler::AudioDecodeScheduler(
108 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, 100 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
109 scoped_refptr<base::SingleThreadTaskRunner> audio_decode_task_runner, 101 scoped_refptr<base::SingleThreadTaskRunner> audio_decode_task_runner,
110 base::WeakPtr<AudioConsumer> audio_consumer) 102 base::WeakPtr<AudioConsumer> audio_consumer)
111 : core_(new Core(main_task_runner, 103 : core_(new Core(main_task_runner,
112 audio_decode_task_runner, 104 audio_decode_task_runner,
113 audio_consumer)) {} 105 audio_consumer)) {}
114 106
115 AudioDecodeScheduler::~AudioDecodeScheduler() { 107 AudioDecodeScheduler::~AudioDecodeScheduler() {
116 core_->Detach();
117 } 108 }
Sergey Ulanov 2016/06/21 21:47:31 nit: this can be moved to the previous line (clang
118 109
119 void AudioDecodeScheduler::Initialize(const protocol::SessionConfig& config) { 110 void AudioDecodeScheduler::Initialize(const protocol::SessionConfig& config) {
120 core_->Initialize(config); 111 core_->Initialize(config);
121 } 112 }
122 113
123 void AudioDecodeScheduler::ProcessAudioPacket( 114 void AudioDecodeScheduler::ProcessAudioPacket(
124 std::unique_ptr<AudioPacket> packet, 115 std::unique_ptr<AudioPacket> packet,
125 const base::Closure& done) { 116 const base::Closure& done) {
126 core_->ProcessAudioPacket(std::move(packet), done); 117 core_->ProcessAudioPacket(std::move(packet), done);
127 } 118 }
128 119
129 } // namespace remoting 120 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698