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

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: 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 const bool is_key_frame =
172 VLOG(1) << "Send encoded key frame; frame_id:" 171 (encoded_frame->frame_id == encoded_frame->base_frame_id);
173 << static_cast<int>(encoded_frame->frame_id); 172 VLOG_IF(1, is_key_frame) << "Send encoded key frame; frame_id: "
174 } 173 << encoded_frame->frame_id;
175 174
176 DCHECK_GT(frames_in_encoder_, 0); 175 DCHECK_GT(frames_in_encoder_, 0);
177 frames_in_encoder_--; 176 frames_in_encoder_--;
178 uint32 frame_id = encoded_frame->frame_id; 177 uint32 frame_id = encoded_frame->frame_id;
179 cast_environment_->Logging()->InsertEncodedFrameEvent( 178 cast_environment_->Logging()->InsertEncodedFrameEvent(
180 last_send_time_, FRAME_ENCODED, VIDEO_EVENT, encoded_frame->rtp_timestamp, 179 last_send_time_, FRAME_ENCODED, VIDEO_EVENT, encoded_frame->rtp_timestamp,
181 frame_id, static_cast<int>(encoded_frame->data.size()), 180 frame_id, static_cast<int>(encoded_frame->data.size()),
182 encoded_frame->key_frame, 181 is_key_frame,
183 current_requested_bitrate_); 182 current_requested_bitrate_);
184 183
185 // Used by chrome/browser/extension/api/cast_streaming/performance_test.cc 184 // Used by chrome/browser/extension/api/cast_streaming/performance_test.cc
186 TRACE_EVENT_INSTANT1( 185 TRACE_EVENT_INSTANT1(
187 "cast_perf_test", "VideoFrameEncoded", 186 "cast_perf_test", "VideoFrameEncoded",
188 TRACE_EVENT_SCOPE_THREAD, 187 TRACE_EVENT_SCOPE_THREAD,
189 "rtp_timestamp", GetVideoRtpTimestamp(capture_time)); 188 "rtp_timestamp", encoded_frame->rtp_timestamp);
190 189
191 // Only use lowest 8 bits as key. 190 // Only use lowest 8 bits as key.
192 frame_id_to_rtp_timestamp_[frame_id & 0xff] = encoded_frame->rtp_timestamp; 191 frame_id_to_rtp_timestamp_[frame_id & 0xff] = encoded_frame->rtp_timestamp;
193 192
194 last_sent_frame_id_ = static_cast<int>(encoded_frame->frame_id); 193 last_sent_frame_id_ = static_cast<int>(encoded_frame->frame_id);
195 transport_sender_->InsertCodedVideoFrame(encoded_frame.get(), capture_time); 194 transport_sender_->InsertCodedVideoFrame(*encoded_frame);
196 UpdateFramesInFlight(); 195 UpdateFramesInFlight();
197 InitializeTimers(); 196 InitializeTimers();
198 } 197 }
199 198
200 void VideoSender::IncomingRtcpPacket(scoped_ptr<Packet> packet) { 199 void VideoSender::IncomingRtcpPacket(scoped_ptr<Packet> packet) {
201 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 200 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
202 rtcp_->IncomingRtcpPacket(&packet->front(), packet->size()); 201 rtcp_->IncomingRtcpPacket(&packet->front(), packet->size());
203 } 202 }
204 203
205 void VideoSender::ScheduleNextRtcpReport() { 204 void VideoSender::ScheduleNextRtcpReport() {
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 void VideoSender::UpdateBitrate(int new_bitrate) { 436 void VideoSender::UpdateBitrate(int new_bitrate) {
438 new_bitrate /= current_bitrate_divider_; 437 new_bitrate /= current_bitrate_divider_;
439 // Make sure we don't set the bitrate too insanely low. 438 // Make sure we don't set the bitrate too insanely low.
440 DCHECK_GT(new_bitrate, 1000); 439 DCHECK_GT(new_bitrate, 1000);
441 video_encoder_->SetBitRate(new_bitrate); 440 video_encoder_->SetBitRate(new_bitrate);
442 current_requested_bitrate_ = new_bitrate; 441 current_requested_bitrate_ = new_bitrate;
443 } 442 }
444 443
445 } // namespace cast 444 } // namespace cast
446 } // namespace media 445 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698