Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/protocol/rtp_video_reader.h" | 5 #include "remoting/protocol/rtp_video_reader.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/task.h" | 8 #include "base/task.h" |
| 9 #include "remoting/base/constants.h" | 9 #include "remoting/base/constants.h" |
| 10 #include "remoting/proto/video.pb.h" | 10 #include "remoting/proto/video.pb.h" |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 34 } | 34 } |
| 35 | 35 |
| 36 void RtpVideoReader::Init(protocol::Session* session, | 36 void RtpVideoReader::Init(protocol::Session* session, |
| 37 VideoStub* video_stub, | 37 VideoStub* video_stub, |
| 38 const InitializedCallback& callback) { | 38 const InitializedCallback& callback) { |
| 39 initialized_callback_ = callback; | 39 initialized_callback_ = callback; |
| 40 video_stub_ = video_stub; | 40 video_stub_ = video_stub; |
| 41 | 41 |
| 42 session->CreateDatagramChannel( | 42 session->CreateDatagramChannel( |
| 43 kVideoRtpChannelName, | 43 kVideoRtpChannelName, |
| 44 base::Bind(&RtpVideoReader::OnChannelReady, base::Unretained(this))); | 44 base::Bind(&RtpVideoReader::OnChannelReady, |
| 45 base::Unretained(this), true)); | |
| 45 session->CreateDatagramChannel( | 46 session->CreateDatagramChannel( |
| 46 kVideoRtcpChannelName, | 47 kVideoRtcpChannelName, |
| 47 base::Bind(&RtpVideoReader::OnChannelReady, base::Unretained(this))); | 48 base::Bind(&RtpVideoReader::OnChannelReady, |
| 49 base::Unretained(this), false)); | |
| 48 } | 50 } |
| 49 | 51 |
| 50 void RtpVideoReader::OnChannelReady(const std::string& name, | 52 void RtpVideoReader::OnChannelReady(bool rtp, net::Socket* socket) { |
|
Wez
2011/08/09 23:42:35
Why have an |rtp| bool here, rather than the conta
Sergey Ulanov
2011/08/10 00:00:43
because we also need to initialized |rtp_reader_|
Wez
2011/08/10 00:37:13
Yes, but that could be managed with:
if (socket
| |
| 51 net::Socket* socket) { | |
| 52 if (!socket) { | 53 if (!socket) { |
| 53 if (!initialized_) { | 54 if (!initialized_) { |
| 54 initialized_ = true; | 55 initialized_ = true; |
| 55 initialized_callback_.Run(false); | 56 initialized_callback_.Run(false); |
| 56 } | 57 } |
| 57 return; | 58 return; |
| 58 } | 59 } |
| 59 | 60 |
| 60 if (name == kVideoRtpChannelName) { | 61 if (rtp) { |
| 61 DCHECK(!rtp_channel_.get()); | 62 DCHECK(!rtp_channel_.get()); |
| 62 rtp_channel_.reset(socket); | 63 rtp_channel_.reset(socket); |
| 63 rtp_reader_.Init(socket, NewCallback(this, &RtpVideoReader::OnRtpPacket)); | 64 rtp_reader_.Init(socket, NewCallback(this, &RtpVideoReader::OnRtpPacket)); |
| 64 } else if (name == kVideoRtcpChannelName) { | 65 } else { |
| 65 DCHECK(!rtcp_channel_.get()); | 66 DCHECK(!rtcp_channel_.get()); |
| 66 rtcp_channel_.reset(socket); | 67 rtcp_channel_.reset(socket); |
| 67 rtcp_writer_.Init(socket); | 68 rtcp_writer_.Init(socket); |
| 68 } else { | |
| 69 NOTREACHED(); | |
| 70 } | 69 } |
| 71 | 70 |
| 72 if (rtp_channel_.get() && rtcp_channel_.get()) { | 71 if (rtp_channel_.get() && rtcp_channel_.get()) { |
| 73 DCHECK(!initialized_); | 72 DCHECK(!initialized_); |
| 74 initialized_ = true; | 73 initialized_ = true; |
| 75 initialized_callback_.Run(true); | 74 initialized_callback_.Run(true); |
| 76 } | 75 } |
| 77 } | 76 } |
| 78 | 77 |
| 79 void RtpVideoReader::ResetQueue() { | 78 void RtpVideoReader::ResetQueue() { |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 220 RtcpReceiverReport report; | 219 RtcpReceiverReport report; |
| 221 rtp_reader_.GetReceiverReport(&report); | 220 rtp_reader_.GetReceiverReport(&report); |
| 222 rtcp_writer_.SendReport(report); | 221 rtcp_writer_.SendReport(report); |
| 223 | 222 |
| 224 last_receiver_report_ = now; | 223 last_receiver_report_ = now; |
| 225 } | 224 } |
| 226 } | 225 } |
| 227 | 226 |
| 228 } // namespace protocol | 227 } // namespace protocol |
| 229 } // namespace remoting | 228 } // namespace remoting |
| OLD | NEW |