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

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

Issue 145443005: Fixes for memory and threading issues in cast (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix compile Created 6 years, 11 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_receiver/video_receiver.h" 5 #include "media/cast/video_receiver/video_receiver.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/message_loop/message_loop.h" 11 #include "base/message_loop/message_loop.h"
12 #include "crypto/encryptor.h" 12 #include "crypto/encryptor.h"
13 #include "crypto/symmetric_key.h" 13 #include "crypto/symmetric_key.h"
14 #include "media/cast/cast_defines.h" 14 #include "media/cast/cast_defines.h"
15 #include "media/cast/framer/framer.h" 15 #include "media/cast/framer/framer.h"
16 #include "media/cast/rtcp/rtcp_sender.h"
16 #include "media/cast/video_receiver/video_decoder.h" 17 #include "media/cast/video_receiver/video_decoder.h"
17 18
18 namespace media { 19 namespace media {
19 namespace cast { 20 namespace cast {
20 21
21 const int64 kMinSchedulingDelayMs = 1; 22 const int64 kMinSchedulingDelayMs = 1;
22 23
23 static const int64 kMinTimeBetweenOffsetUpdatesMs = 2000; 24 static const int64 kMinTimeBetweenOffsetUpdatesMs = 2000;
24 static const int kTimeOffsetFilter = 8; 25 static const int kTimeOffsetFilter = 8;
25 static const int64_t kMinProcessIntervalMs = 5; 26 static const int64_t kMinProcessIntervalMs = 5;
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 // Send a cast feedback message. Actual message created in the framer (cast 437 // Send a cast feedback message. Actual message created in the framer (cast
437 // message builder). 438 // message builder).
438 void VideoReceiver::CastFeedback(const RtcpCastMessage& cast_message) { 439 void VideoReceiver::CastFeedback(const RtcpCastMessage& cast_message) {
439 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 440 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
440 441
441 RtcpReceiverLogMessage receiver_log; 442 RtcpReceiverLogMessage receiver_log;
442 VideoRtcpRawMap video_logs = 443 VideoRtcpRawMap video_logs =
443 cast_environment_->Logging()->GetVideoRtcpRawData(); 444 cast_environment_->Logging()->GetVideoRtcpRawData();
444 445
445 while (!video_logs.empty()) { 446 while (!video_logs.empty()) {
447 // TODO(hclam): Avoid calling begin() within a loop.
446 VideoRtcpRawMap::iterator it = video_logs.begin(); 448 VideoRtcpRawMap::iterator it = video_logs.begin();
447 uint32 rtp_timestamp = it->first; 449 uint32 rtp_timestamp = it->first;
448 std::pair<VideoRtcpRawMap::iterator, VideoRtcpRawMap::iterator> 450 std::pair<VideoRtcpRawMap::iterator, VideoRtcpRawMap::iterator>
449 frame_range = video_logs.equal_range(rtp_timestamp); 451 frame_range = video_logs.equal_range(rtp_timestamp);
450 452
451 RtcpReceiverFrameLogMessage frame_log(rtp_timestamp); 453 RtcpReceiverFrameLogMessage frame_log(rtp_timestamp);
452 454
453 VideoRtcpRawMap::const_iterator event_it = frame_range.first; 455 VideoRtcpRawMap::const_iterator event_it = frame_range.first;
454 for (; event_it != frame_range.second; ++event_it) { 456 for (; event_it != frame_range.second; ++event_it) {
457 if (!RtcpSender::IsReceiverEvent(event_it->second.type))
458 continue;
455 RtcpReceiverEventLogMessage event_log_message; 459 RtcpReceiverEventLogMessage event_log_message;
456 event_log_message.type = event_it->second.type; 460 event_log_message.type = event_it->second.type;
457 event_log_message.event_timestamp = event_it->second.timestamp; 461 event_log_message.event_timestamp = event_it->second.timestamp;
458 event_log_message.delay_delta = event_it->second.delay_delta; 462 event_log_message.delay_delta = event_it->second.delay_delta;
459 event_log_message.packet_id = event_it->second.packet_id; 463 event_log_message.packet_id = event_it->second.packet_id;
460 frame_log.event_log_messages_.push_back(event_log_message); 464 frame_log.event_log_messages_.push_back(event_log_message);
461 } 465 }
462 receiver_log.push_back(frame_log); 466 receiver_log.push_back(frame_log);
463 video_logs.erase(rtp_timestamp); 467 video_logs.erase(rtp_timestamp);
464 } 468 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 } 511 }
508 512
509 void VideoReceiver::SendNextRtcpReport() { 513 void VideoReceiver::SendNextRtcpReport() {
510 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 514 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
511 rtcp_->SendRtcpFromRtpReceiver(NULL, NULL); 515 rtcp_->SendRtcpFromRtpReceiver(NULL, NULL);
512 ScheduleNextRtcpReport(); 516 ScheduleNextRtcpReport();
513 } 517 }
514 518
515 } // namespace cast 519 } // namespace cast
516 } // namespace media 520 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/video_receiver/video_decoder_unittest.cc ('k') | media/cast/video_receiver/video_receiver_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698