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

Side by Side Diff: media/cast/receiver/frame_receiver.cc

Issue 1905763002: Convert //media/cast from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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
« no previous file with comments | « media/cast/receiver/frame_receiver.h ('k') | media/cast/receiver/frame_receiver_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/receiver/frame_receiver.h" 5 #include "media/cast/receiver/frame_receiver.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/big_endian.h" 10 #include "base/big_endian.h"
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 cast_environment_->logger()->Unsubscribe(&event_subscriber_); 74 cast_environment_->logger()->Unsubscribe(&event_subscriber_);
75 } 75 }
76 76
77 void FrameReceiver::RequestEncodedFrame( 77 void FrameReceiver::RequestEncodedFrame(
78 const ReceiveEncodedFrameCallback& callback) { 78 const ReceiveEncodedFrameCallback& callback) {
79 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 79 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
80 frame_request_queue_.push_back(callback); 80 frame_request_queue_.push_back(callback);
81 EmitAvailableEncodedFrames(); 81 EmitAvailableEncodedFrames();
82 } 82 }
83 83
84 bool FrameReceiver::ProcessPacket(scoped_ptr<Packet> packet) { 84 bool FrameReceiver::ProcessPacket(std::unique_ptr<Packet> packet) {
85 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 85 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
86 86
87 if (IsRtcpPacket(&packet->front(), packet->size())) { 87 if (IsRtcpPacket(&packet->front(), packet->size())) {
88 rtcp_.IncomingRtcpPacket(&packet->front(), packet->size()); 88 rtcp_.IncomingRtcpPacket(&packet->front(), packet->size());
89 } else { 89 } else {
90 RtpCastHeader rtp_header; 90 RtpCastHeader rtp_header;
91 const uint8_t* payload_data; 91 const uint8_t* payload_data;
92 size_t payload_size; 92 size_t payload_size;
93 if (!packet_parser_.ParsePacket(&packet->front(), 93 if (!packet_parser_.ParsePacket(&packet->front(),
94 packet->size(), 94 packet->size(),
(...skipping 19 matching lines...) Expand all
114 void FrameReceiver::ProcessParsedPacket(const RtpCastHeader& rtp_header, 114 void FrameReceiver::ProcessParsedPacket(const RtpCastHeader& rtp_header,
115 const uint8_t* payload_data, 115 const uint8_t* payload_data,
116 size_t payload_size) { 116 size_t payload_size) {
117 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 117 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
118 118
119 const base::TimeTicks now = cast_environment_->Clock()->NowTicks(); 119 const base::TimeTicks now = cast_environment_->Clock()->NowTicks();
120 120
121 frame_id_to_rtp_timestamp_[rtp_header.frame_id & 0xff] = 121 frame_id_to_rtp_timestamp_[rtp_header.frame_id & 0xff] =
122 rtp_header.rtp_timestamp; 122 rtp_header.rtp_timestamp;
123 123
124 scoped_ptr<PacketEvent> receive_event(new PacketEvent()); 124 std::unique_ptr<PacketEvent> receive_event(new PacketEvent());
125 receive_event->timestamp = now; 125 receive_event->timestamp = now;
126 receive_event->type = PACKET_RECEIVED; 126 receive_event->type = PACKET_RECEIVED;
127 receive_event->media_type = event_media_type_; 127 receive_event->media_type = event_media_type_;
128 receive_event->rtp_timestamp = rtp_header.rtp_timestamp; 128 receive_event->rtp_timestamp = rtp_header.rtp_timestamp;
129 receive_event->frame_id = rtp_header.frame_id; 129 receive_event->frame_id = rtp_header.frame_id;
130 receive_event->packet_id = rtp_header.packet_id; 130 receive_event->packet_id = rtp_header.packet_id;
131 receive_event->max_packet_id = rtp_header.max_packet_id; 131 receive_event->max_packet_id = rtp_header.max_packet_id;
132 receive_event->size = base::checked_cast<uint32_t>(payload_size); 132 receive_event->size = base::checked_cast<uint32_t>(payload_size);
133 cast_environment_->logger()->DispatchPacketEvent(std::move(receive_event)); 133 cast_environment_->logger()->DispatchPacketEvent(std::move(receive_event));
134 134
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 EmitAvailableEncodedFrames(); 177 EmitAvailableEncodedFrames();
178 } 178 }
179 179
180 void FrameReceiver::CastFeedback(const RtcpCastMessage& cast_message) { 180 void FrameReceiver::CastFeedback(const RtcpCastMessage& cast_message) {
181 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 181 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
182 182
183 base::TimeTicks now = cast_environment_->Clock()->NowTicks(); 183 base::TimeTicks now = cast_environment_->Clock()->NowTicks();
184 RtpTimeTicks rtp_timestamp = 184 RtpTimeTicks rtp_timestamp =
185 frame_id_to_rtp_timestamp_[cast_message.ack_frame_id & 0xff]; 185 frame_id_to_rtp_timestamp_[cast_message.ack_frame_id & 0xff];
186 186
187 scoped_ptr<FrameEvent> ack_sent_event(new FrameEvent()); 187 std::unique_ptr<FrameEvent> ack_sent_event(new FrameEvent());
188 ack_sent_event->timestamp = now; 188 ack_sent_event->timestamp = now;
189 ack_sent_event->type = FRAME_ACK_SENT; 189 ack_sent_event->type = FRAME_ACK_SENT;
190 ack_sent_event->media_type = event_media_type_; 190 ack_sent_event->media_type = event_media_type_;
191 ack_sent_event->rtp_timestamp = rtp_timestamp; 191 ack_sent_event->rtp_timestamp = rtp_timestamp;
192 ack_sent_event->frame_id = cast_message.ack_frame_id; 192 ack_sent_event->frame_id = cast_message.ack_frame_id;
193 cast_environment_->logger()->DispatchFrameEvent(std::move(ack_sent_event)); 193 cast_environment_->logger()->DispatchFrameEvent(std::move(ack_sent_event));
194 194
195 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; 195 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events;
196 event_subscriber_.GetRtcpEventsWithRedundancy(&rtcp_events); 196 event_subscriber_.GetRtcpEventsWithRedundancy(&rtcp_events);
197 SendRtcpReport(rtcp_.local_ssrc(), rtcp_.remote_ssrc(), 197 SendRtcpReport(rtcp_.local_ssrc(), rtcp_.remote_ssrc(),
198 CreateRtcpTimeData(now), &cast_message, nullptr, 198 CreateRtcpTimeData(now), &cast_message, nullptr,
199 target_playout_delay_, &rtcp_events, nullptr); 199 target_playout_delay_, &rtcp_events, nullptr);
200 } 200 }
201 201
202 void FrameReceiver::EmitAvailableEncodedFrames() { 202 void FrameReceiver::EmitAvailableEncodedFrames() {
203 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 203 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
204 204
205 while (!frame_request_queue_.empty()) { 205 while (!frame_request_queue_.empty()) {
206 // Attempt to peek at the next completed frame from the |framer_|. 206 // Attempt to peek at the next completed frame from the |framer_|.
207 // TODO(miu): We should only be peeking at the metadata, and not copying the 207 // TODO(miu): We should only be peeking at the metadata, and not copying the
208 // payload yet! Or, at least, peek using a StringPiece instead of a copy. 208 // payload yet! Or, at least, peek using a StringPiece instead of a copy.
209 scoped_ptr<EncodedFrame> encoded_frame( 209 std::unique_ptr<EncodedFrame> encoded_frame(new EncodedFrame());
210 new EncodedFrame());
211 bool is_consecutively_next_frame = false; 210 bool is_consecutively_next_frame = false;
212 bool have_multiple_complete_frames = false; 211 bool have_multiple_complete_frames = false;
213 if (!framer_.GetEncodedFrame(encoded_frame.get(), 212 if (!framer_.GetEncodedFrame(encoded_frame.get(),
214 &is_consecutively_next_frame, 213 &is_consecutively_next_frame,
215 &have_multiple_complete_frames)) { 214 &have_multiple_complete_frames)) {
216 VLOG(1) << "Wait for more packets to produce a completed frame."; 215 VLOG(1) << "Wait for more packets to produce a completed frame.";
217 return; // ProcessParsedPacket() will invoke this method in the future. 216 return; // ProcessParsedPacket() will invoke this method in the future.
218 } 217 }
219 218
220 const base::TimeTicks now = cast_environment_->Clock()->NowTicks(); 219 const base::TimeTicks now = cast_environment_->Clock()->NowTicks();
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 } 285 }
287 } 286 }
288 287
289 void FrameReceiver::EmitAvailableEncodedFramesAfterWaiting() { 288 void FrameReceiver::EmitAvailableEncodedFramesAfterWaiting() {
290 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 289 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
291 DCHECK(is_waiting_for_consecutive_frame_); 290 DCHECK(is_waiting_for_consecutive_frame_);
292 is_waiting_for_consecutive_frame_ = false; 291 is_waiting_for_consecutive_frame_ = false;
293 EmitAvailableEncodedFrames(); 292 EmitAvailableEncodedFrames();
294 } 293 }
295 294
296 void FrameReceiver::EmitOneFrame(const ReceiveEncodedFrameCallback& callback, 295 void FrameReceiver::EmitOneFrame(
297 scoped_ptr<EncodedFrame> encoded_frame) const { 296 const ReceiveEncodedFrameCallback& callback,
297 std::unique_ptr<EncodedFrame> encoded_frame) const {
298 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 298 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
299 if (!callback.is_null()) 299 if (!callback.is_null())
300 callback.Run(std::move(encoded_frame)); 300 callback.Run(std::move(encoded_frame));
301 } 301 }
302 302
303 base::TimeTicks FrameReceiver::GetPlayoutTime(const EncodedFrame& frame) const { 303 base::TimeTicks FrameReceiver::GetPlayoutTime(const EncodedFrame& frame) const {
304 base::TimeDelta target_playout_delay = target_playout_delay_; 304 base::TimeDelta target_playout_delay = target_playout_delay_;
305 if (frame.new_playout_delay_ms) { 305 if (frame.new_playout_delay_ms) {
306 target_playout_delay = base::TimeDelta::FromMilliseconds( 306 target_playout_delay = base::TimeDelta::FromMilliseconds(
307 frame.new_playout_delay_ms); 307 frame.new_playout_delay_ms);
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 transport_->AddCastFeedback(*cast_message, target_delay); 394 transport_->AddCastFeedback(*cast_message, target_delay);
395 if (pli_message) 395 if (pli_message)
396 transport_->AddPli(*pli_message); 396 transport_->AddPli(*pli_message);
397 if (rtcp_events) 397 if (rtcp_events)
398 transport_->AddRtcpEvents(*rtcp_events); 398 transport_->AddRtcpEvents(*rtcp_events);
399 transport_->SendRtcpFromRtpReceiver(); 399 transport_->SendRtcpFromRtpReceiver();
400 } 400 }
401 401
402 } // namespace cast 402 } // namespace cast
403 } // namespace media 403 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/receiver/frame_receiver.h ('k') | media/cast/receiver/frame_receiver_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698