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

Side by Side Diff: remoting/protocol/audio_reader.cc

Issue 10562007: Added files for audio readers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments Created 8 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 | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "remoting/protocol/audio_reader.h"
6
7 #include "base/bind.h"
8 #include "net/socket/stream_socket.h"
9 #include "remoting/base/constants.h"
10 #include "remoting/protocol/session.h"
11 #include "remoting/protocol/session_config.h"
12
13 namespace remoting {
14 namespace protocol {
15
16 AudioReader::AudioReader(AudioPacket::Encoding encoding)
17 : session_(NULL),
18 encoding_(encoding),
19 audio_stub_(NULL) {
20 }
21
22 AudioReader::~AudioReader() {
23 if (session_)
24 session_->CancelChannelCreation(kAudioChannelName);
25 }
26
27 // static
28 scoped_ptr<AudioReader> AudioReader::Create(const SessionConfig& config) {
29 // TODO(kxing): Support different session configurations.
30 return scoped_ptr<AudioReader>(new AudioReader(AudioPacket::ENCODING_RAW));
Wez 2012/06/15 20:40:54 This limits you to using a single audio encoding p
31 }
32
33 void AudioReader::Init(protocol::Session* session,
34 AudioStub* audio_stub,
35 const InitializedCallback& callback) {
36 session_ = session;
37 initialized_callback_ = callback;
38 audio_stub_ = audio_stub;
39
40 session_->CreateStreamChannel(
41 kAudioChannelName,
42 base::Bind(&AudioReader::OnChannelReady, base::Unretained(this)));
43 }
44
45 bool AudioReader::is_connected() {
46 return channel_.get() != NULL;
47 }
48
49 void AudioReader::OnChannelReady(scoped_ptr<net::StreamSocket> socket) {
50 if (!socket.get()) {
51 initialized_callback_.Run(false);
52 return;
53 }
54
55 DCHECK(!channel_.get());
Wez 2012/06/15 20:40:54 DCHECK() this in Init() as well, to trap mistaken
56 channel_ = socket.Pass();
57 reader_.Init(channel_.get(), base::Bind(&AudioReader::OnNewData,
58 base::Unretained(this)));
59 initialized_callback_.Run(true);
60 }
61
62 void AudioReader::OnNewData(scoped_ptr<AudioPacket> packet,
63 const base::Closure& done_task) {
64 audio_stub_->ProcessAudioPacket(packet.Pass(), done_task);
65 }
66
67 } // namespace protocol
68 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698