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

Side by Side Diff: remoting/host/audio_scheduler.cc

Issue 10836017: Piping for audio encoding. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed header guards Created 8 years, 4 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 | Annotate | Revision Log
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/host/audio_scheduler.h" 5 #include "remoting/host/audio_scheduler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/single_thread_task_runner.h" 11 #include "base/single_thread_task_runner.h"
12 #include "remoting/codec/audio_encoder.h"
12 #include "remoting/host/audio_capturer.h" 13 #include "remoting/host/audio_capturer.h"
13 #include "remoting/proto/audio.pb.h" 14 #include "remoting/proto/audio.pb.h"
14 #include "remoting/protocol/audio_stub.h" 15 #include "remoting/protocol/audio_stub.h"
15 16
16 namespace remoting { 17 namespace remoting {
17 18
18 AudioScheduler::AudioScheduler( 19 AudioScheduler::AudioScheduler(
19 scoped_refptr<base::SingleThreadTaskRunner> capture_task_runner, 20 scoped_refptr<base::SingleThreadTaskRunner> capture_task_runner,
20 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner, 21 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner,
21 AudioCapturer* audio_capturer, 22 AudioCapturer* audio_capturer,
23 scoped_ptr<AudioEncoder> audio_encoder,
22 protocol::AudioStub* audio_stub) 24 protocol::AudioStub* audio_stub)
23 : capture_task_runner_(capture_task_runner), 25 : capture_task_runner_(capture_task_runner),
24 network_task_runner_(network_task_runner), 26 network_task_runner_(network_task_runner),
25 audio_capturer_(audio_capturer), 27 audio_capturer_(audio_capturer),
28 audio_encoder_(audio_encoder.Pass()),
26 audio_stub_(audio_stub), 29 audio_stub_(audio_stub),
27 network_stopped_(false) { 30 network_stopped_(false) {
28 DCHECK(capture_task_runner_); 31 DCHECK(capture_task_runner_);
29 DCHECK(network_task_runner_); 32 DCHECK(network_task_runner_);
30 DCHECK(audio_capturer_); 33 DCHECK(audio_capturer_);
31 DCHECK(audio_stub_); 34 DCHECK(audio_stub_);
32 capture_task_runner_->PostTask( 35 capture_task_runner_->PostTask(
33 FROM_HERE, base::Bind(&AudioScheduler::DoStart, this)); 36 FROM_HERE, base::Bind(&AudioScheduler::DoStart, this));
34 } 37 }
35 38
(...skipping 14 matching lines...) Expand all
50 53
51 void AudioScheduler::OnClientDisconnected() { 54 void AudioScheduler::OnClientDisconnected() {
52 DCHECK(network_task_runner_->BelongsToCurrentThread()); 55 DCHECK(network_task_runner_->BelongsToCurrentThread());
53 DCHECK(audio_stub_); 56 DCHECK(audio_stub_);
54 audio_stub_ = NULL; 57 audio_stub_ = NULL;
55 } 58 }
56 59
57 AudioScheduler::~AudioScheduler() { 60 AudioScheduler::~AudioScheduler() {
58 } 61 }
59 62
60 void AudioScheduler::NotifyAudioPacketCaptured(scoped_ptr<AudioPacket> packet) { 63 void AudioScheduler::NotifyAudioPacketCaptured(
64 scoped_ptr<AudioPacket> packet) {
65 scoped_ptr<AudioPacket> encoded_packet =
66 audio_encoder_->Encode(packet.Pass());
61 network_task_runner_->PostTask( 67 network_task_runner_->PostTask(
62 FROM_HERE, base::Bind(&AudioScheduler::DoSendAudioPacket, 68 FROM_HERE, base::Bind(&AudioScheduler::DoSendAudioPacket,
63 this, base::Passed(packet.Pass()))); 69 this, base::Passed(encoded_packet.Pass())));
64 } 70 }
65 71
66 void AudioScheduler::DoStart() { 72 void AudioScheduler::DoStart() {
67 DCHECK(capture_task_runner_->BelongsToCurrentThread()); 73 DCHECK(capture_task_runner_->BelongsToCurrentThread());
68 74
69 // TODO(kxing): Do something with the return value. 75 // TODO(kxing): Do something with the return value.
70 audio_capturer_->Start( 76 audio_capturer_->Start(
71 base::Bind(&AudioScheduler::NotifyAudioPacketCaptured, this)); 77 base::Bind(&AudioScheduler::NotifyAudioPacketCaptured, this));
72 } 78 }
73 79
(...skipping 13 matching lines...) Expand all
87 93
88 void AudioScheduler::DoStopOnNetworkThread(const base::Closure& done_task) { 94 void AudioScheduler::DoStopOnNetworkThread(const base::Closure& done_task) {
89 DCHECK(network_task_runner_->BelongsToCurrentThread()); 95 DCHECK(network_task_runner_->BelongsToCurrentThread());
90 96
91 network_stopped_ = true; 97 network_stopped_ = true;
92 98
93 done_task.Run(); 99 done_task.Run();
94 } 100 }
95 101
96 } // namespace remoting 102 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698