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

Side by Side Diff: media/cast/video_sender/video_sender.cc

Issue 109413004: Cast:Adding cast_transport_config and cleaning up (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Injecting TaskRunner Created 6 years, 12 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "media/cast/video_sender/video_sender.h" 5 #include "media/cast/video_sender/video_sender.h"
6 6
7 #include <list> 7 #include <list>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 VideoSender::VideoSender( 53 VideoSender::VideoSender(
54 scoped_refptr<CastEnvironment> cast_environment, 54 scoped_refptr<CastEnvironment> cast_environment,
55 const VideoSenderConfig& video_config, 55 const VideoSenderConfig& video_config,
56 VideoEncoderController* const video_encoder_controller, 56 VideoEncoderController* const video_encoder_controller,
57 transport::PacedPacketSender* const paced_packet_sender) 57 transport::PacedPacketSender* const paced_packet_sender)
58 : rtp_max_delay_( 58 : rtp_max_delay_(
59 base::TimeDelta::FromMilliseconds(video_config.rtp_max_delay_ms)), 59 base::TimeDelta::FromMilliseconds(video_config.rtp_max_delay_ms)),
60 max_frame_rate_(video_config.max_frame_rate), 60 max_frame_rate_(video_config.max_frame_rate),
61 cast_environment_(cast_environment), 61 cast_environment_(cast_environment),
62 rtcp_feedback_(new LocalRtcpVideoSenderFeedback(this)), 62 rtcp_feedback_(new LocalRtcpVideoSenderFeedback(this)),
63 rtp_sender_(new transport::RtpSender(cast_environment, 63 rtp_sender_(new transport::RtpSender(cast_environment->Clock(),
64 NULL, 64 NULL,
65 &video_config, 65 &video_config,
66 paced_packet_sender)), 66 paced_packet_sender)),
67 last_acked_frame_id_(-1), 67 last_acked_frame_id_(-1),
68 last_sent_frame_id_(-1), 68 last_sent_frame_id_(-1),
69 duplicate_ack_(0), 69 duplicate_ack_(0),
70 last_skip_count_(0), 70 last_skip_count_(0),
71 congestion_control_(cast_environment->Clock(), 71 congestion_control_(cast_environment->Clock(),
72 video_config.congestion_control_back_off, 72 video_config.congestion_control_back_off,
73 video_config.max_bitrate, 73 video_config.max_bitrate,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 base::TimeTicks now = cast_environment_->Clock()->NowTicks(); 140 base::TimeTicks now = cast_environment_->Clock()->NowTicks();
141 cast_environment_->Logging()->InsertFrameEvent(now, kVideoFrameReceived, 141 cast_environment_->Logging()->InsertFrameEvent(now, kVideoFrameReceived,
142 GetVideoRtpTimestamp(capture_time), kFrameIdUnknown); 142 GetVideoRtpTimestamp(capture_time), kFrameIdUnknown);
143 143
144 if (!video_encoder_->EncodeVideoFrame(video_frame, capture_time, 144 if (!video_encoder_->EncodeVideoFrame(video_frame, capture_time,
145 base::Bind(&VideoSender::SendEncodedVideoFrameMainThread, 145 base::Bind(&VideoSender::SendEncodedVideoFrameMainThread,
146 weak_factory_.GetWeakPtr()))) { 146 weak_factory_.GetWeakPtr()))) {
147 } 147 }
148 } 148 }
149 149
150 void VideoSender::InsertCodedVideoFrame(const EncodedVideoFrame* encoded_frame, 150 void VideoSender::InsertCodedVideoFrame(
151 const base::TimeTicks& capture_time, 151 const transport::EncodedVideoFrame* encoded_frame,
152 const base::Closure callback) { 152 const base::TimeTicks& capture_time,
153 const base::Closure callback) {
153 DCHECK(!video_encoder_.get()) << "Invalid state"; 154 DCHECK(!video_encoder_.get()) << "Invalid state";
154 DCHECK(encoded_frame) << "Invalid argument"; 155 DCHECK(encoded_frame) << "Invalid argument";
155 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 156 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
156 157
157 SendEncodedVideoFrame(encoded_frame, capture_time); 158 SendEncodedVideoFrame(encoded_frame, capture_time);
158 cast_environment_->PostTask(CastEnvironment::MAIN, FROM_HERE, callback); 159 cast_environment_->PostTask(CastEnvironment::MAIN, FROM_HERE, callback);
159 } 160 }
160 161
161 void VideoSender::SendEncodedVideoFrameMainThread( 162 void VideoSender::SendEncodedVideoFrameMainThread(
162 scoped_ptr<EncodedVideoFrame> video_frame, 163 scoped_ptr<transport::EncodedVideoFrame> video_frame,
163 const base::TimeTicks& capture_time) { 164 const base::TimeTicks& capture_time) {
164 SendEncodedVideoFrame(video_frame.get(), capture_time); 165 SendEncodedVideoFrame(video_frame.get(), capture_time);
165 } 166 }
166 167
167 bool VideoSender::EncryptVideoFrame(const EncodedVideoFrame& video_frame, 168 bool VideoSender::EncryptVideoFrame(
168 EncodedVideoFrame* encrypted_frame) { 169 const transport::EncodedVideoFrame& video_frame,
170 transport::EncodedVideoFrame* encrypted_frame) {
169 DCHECK(encryptor_) << "Invalid state"; 171 DCHECK(encryptor_) << "Invalid state";
170 172
171 if (!encryptor_->SetCounter(GetAesNonce(video_frame.frame_id, iv_mask_))) { 173 if (!encryptor_->SetCounter(GetAesNonce(video_frame.frame_id, iv_mask_))) {
172 NOTREACHED() << "Failed to set counter"; 174 NOTREACHED() << "Failed to set counter";
173 return false; 175 return false;
174 } 176 }
175 177
176 if (!encryptor_->Encrypt(video_frame.data, &encrypted_frame->data)) { 178 if (!encryptor_->Encrypt(video_frame.data, &encrypted_frame->data)) {
177 NOTREACHED() << "Encrypt error"; 179 NOTREACHED() << "Encrypt error";
178 return false; 180 return false;
179 } 181 }
180 encrypted_frame->codec = video_frame.codec; 182 encrypted_frame->codec = video_frame.codec;
181 encrypted_frame->key_frame = video_frame.key_frame; 183 encrypted_frame->key_frame = video_frame.key_frame;
182 encrypted_frame->frame_id = video_frame.frame_id; 184 encrypted_frame->frame_id = video_frame.frame_id;
183 encrypted_frame->last_referenced_frame_id = 185 encrypted_frame->last_referenced_frame_id =
184 video_frame.last_referenced_frame_id; 186 video_frame.last_referenced_frame_id;
185 return true; 187 return true;
186 } 188 }
187 189
188 void VideoSender::SendEncodedVideoFrame(const EncodedVideoFrame* encoded_frame, 190 void VideoSender::SendEncodedVideoFrame(
189 const base::TimeTicks& capture_time) { 191 const transport::EncodedVideoFrame* encoded_frame,
192 const base::TimeTicks& capture_time) {
190 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 193 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
191 last_send_time_ = cast_environment_->Clock()->NowTicks(); 194 last_send_time_ = cast_environment_->Clock()->NowTicks();
192 195
193 if (encryptor_) { 196 if (encryptor_) {
194 EncodedVideoFrame encrypted_video_frame; 197 transport::EncodedVideoFrame encrypted_video_frame;
195 198
196 if (!EncryptVideoFrame(*encoded_frame, &encrypted_video_frame)) { 199 if (!EncryptVideoFrame(*encoded_frame, &encrypted_video_frame)) {
197 // Logging already done. 200 // Logging already done.
198 return; 201 return;
199 } 202 }
200 rtp_sender_->IncomingEncodedVideoFrame(&encrypted_video_frame, 203 rtp_sender_->IncomingEncodedVideoFrame(&encrypted_video_frame,
201 capture_time); 204 capture_time);
202 } else { 205 } else {
203 rtp_sender_->IncomingEncodedVideoFrame(encoded_frame, capture_time); 206 rtp_sender_->IncomingEncodedVideoFrame(encoded_frame, capture_time);
204 } 207 }
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 460 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
458 MissingFramesAndPacketsMap missing_frames_and_packets; 461 MissingFramesAndPacketsMap missing_frames_and_packets;
459 PacketIdSet missing; 462 PacketIdSet missing;
460 missing_frames_and_packets.insert(std::make_pair(resend_frame_id, missing)); 463 missing_frames_and_packets.insert(std::make_pair(resend_frame_id, missing));
461 rtp_sender_->ResendPackets(missing_frames_and_packets); 464 rtp_sender_->ResendPackets(missing_frames_and_packets);
462 last_send_time_ = cast_environment_->Clock()->NowTicks(); 465 last_send_time_ = cast_environment_->Clock()->NowTicks();
463 } 466 }
464 467
465 } // namespace cast 468 } // namespace cast
466 } // namespace media 469 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698