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

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

Issue 288103002: [Cast] EncodedAudioFrame+EncodedVideoFrame+reference_time --> EncodedFrame (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed hclam@'s first round comments. Fixed chrome unit_tests compiles. Created 6 years, 7 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 <cstring> 7 #include <cstring>
8 #include <list> 8 #include <list>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 cast_environment_->Clock()->NowTicks(), 144 cast_environment_->Clock()->NowTicks(),
145 FRAME_CAPTURE_END, VIDEO_EVENT, 145 FRAME_CAPTURE_END, VIDEO_EVENT,
146 rtp_timestamp, 146 rtp_timestamp,
147 kFrameIdUnknown); 147 kFrameIdUnknown);
148 148
149 // Used by chrome/browser/extension/api/cast_streaming/performance_test.cc 149 // Used by chrome/browser/extension/api/cast_streaming/performance_test.cc
150 TRACE_EVENT_INSTANT2( 150 TRACE_EVENT_INSTANT2(
151 "cast_perf_test", "InsertRawVideoFrame", 151 "cast_perf_test", "InsertRawVideoFrame",
152 TRACE_EVENT_SCOPE_THREAD, 152 TRACE_EVENT_SCOPE_THREAD,
153 "timestamp", capture_time.ToInternalValue(), 153 "timestamp", capture_time.ToInternalValue(),
154 "rtp_timestamp", GetVideoRtpTimestamp(capture_time)); 154 "rtp_timestamp", rtp_timestamp);
155 155
156 if (video_encoder_->EncodeVideoFrame( 156 if (video_encoder_->EncodeVideoFrame(
157 video_frame, 157 video_frame,
158 capture_time, 158 capture_time,
159 base::Bind(&VideoSender::SendEncodedVideoFrameMainThread, 159 base::Bind(&VideoSender::SendEncodedVideoFrameMainThread,
160 weak_factory_.GetWeakPtr()))) { 160 weak_factory_.GetWeakPtr()))) {
161 frames_in_encoder_++; 161 frames_in_encoder_++;
162 UpdateFramesInFlight(); 162 UpdateFramesInFlight();
163 } 163 }
164 } 164 }
165 165
166 void VideoSender::SendEncodedVideoFrameMainThread( 166 void VideoSender::SendEncodedVideoFrameMainThread(
167 scoped_ptr<transport::EncodedVideoFrame> encoded_frame, 167 scoped_ptr<transport::EncodedFrame> encoded_frame) {
168 const base::TimeTicks& capture_time) {
169 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 168 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
170 last_send_time_ = cast_environment_->Clock()->NowTicks(); 169 last_send_time_ = cast_environment_->Clock()->NowTicks();
171 if (encoded_frame->key_frame) { 170 VLOG_IF(1, encoded_frame->relationship == transport::EncodedFrame::KEY)
172 VLOG(1) << "Send encoded key frame; frame_id:" 171 << "Send encoded key frame; frame_id: " << encoded_frame->frame_id;
173 << static_cast<int>(encoded_frame->frame_id);
174 }
175 172
176 DCHECK_GT(frames_in_encoder_, 0); 173 DCHECK_GT(frames_in_encoder_, 0);
177 frames_in_encoder_--; 174 frames_in_encoder_--;
178 uint32 frame_id = encoded_frame->frame_id; 175 uint32 frame_id = encoded_frame->frame_id;
179 cast_environment_->Logging()->InsertEncodedFrameEvent( 176 cast_environment_->Logging()->InsertEncodedFrameEvent(
180 last_send_time_, FRAME_ENCODED, VIDEO_EVENT, encoded_frame->rtp_timestamp, 177 last_send_time_, FRAME_ENCODED, VIDEO_EVENT, encoded_frame->rtp_timestamp,
181 frame_id, static_cast<int>(encoded_frame->data.size()), 178 frame_id, static_cast<int>(encoded_frame->data.size()),
182 encoded_frame->key_frame, 179 encoded_frame->relationship == transport::EncodedFrame::KEY,
183 current_requested_bitrate_); 180 current_requested_bitrate_);
184 181
185 // Used by chrome/browser/extension/api/cast_streaming/performance_test.cc 182 // Used by chrome/browser/extension/api/cast_streaming/performance_test.cc
186 TRACE_EVENT_INSTANT1( 183 TRACE_EVENT_INSTANT1(
187 "cast_perf_test", "VideoFrameEncoded", 184 "cast_perf_test", "VideoFrameEncoded",
188 TRACE_EVENT_SCOPE_THREAD, 185 TRACE_EVENT_SCOPE_THREAD,
189 "rtp_timestamp", GetVideoRtpTimestamp(capture_time)); 186 "rtp_timestamp", encoded_frame->rtp_timestamp);
190 187
191 // Only use lowest 8 bits as key. 188 // Only use lowest 8 bits as key.
192 frame_id_to_rtp_timestamp_[frame_id & 0xff] = encoded_frame->rtp_timestamp; 189 frame_id_to_rtp_timestamp_[frame_id & 0xff] = encoded_frame->rtp_timestamp;
193 190
194 last_sent_frame_id_ = static_cast<int>(encoded_frame->frame_id); 191 last_sent_frame_id_ = static_cast<int>(encoded_frame->frame_id);
195 transport_sender_->InsertCodedVideoFrame(encoded_frame.get(), capture_time); 192 transport_sender_->InsertCodedVideoFrame(*encoded_frame);
196 UpdateFramesInFlight(); 193 UpdateFramesInFlight();
197 InitializeTimers(); 194 InitializeTimers();
198 } 195 }
199 196
200 void VideoSender::IncomingRtcpPacket(scoped_ptr<Packet> packet) { 197 void VideoSender::IncomingRtcpPacket(scoped_ptr<Packet> packet) {
201 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 198 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
202 rtcp_->IncomingRtcpPacket(&packet->front(), packet->size()); 199 rtcp_->IncomingRtcpPacket(&packet->front(), packet->size());
203 } 200 }
204 201
205 void VideoSender::ScheduleNextRtcpReport() { 202 void VideoSender::ScheduleNextRtcpReport() {
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 void VideoSender::UpdateBitrate(int new_bitrate) { 434 void VideoSender::UpdateBitrate(int new_bitrate) {
438 new_bitrate /= current_bitrate_divider_; 435 new_bitrate /= current_bitrate_divider_;
439 // Make sure we don't set the bitrate too insanely low. 436 // Make sure we don't set the bitrate too insanely low.
440 DCHECK_GT(new_bitrate, 1000); 437 DCHECK_GT(new_bitrate, 1000);
441 video_encoder_->SetBitRate(new_bitrate); 438 video_encoder_->SetBitRate(new_bitrate);
442 current_requested_bitrate_ = new_bitrate; 439 current_requested_bitrate_ = new_bitrate;
443 } 440 }
444 441
445 } // namespace cast 442 } // namespace cast
446 } // namespace media 443 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698