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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/flexfec_receiver.cc

Issue 2589583004: Add GUARDED_BY's in FlexfecReceiver. (Closed)
Patch Set: Created 4 years 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 | « webrtc/modules/rtp_rtcp/include/flexfec_receiver.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 last_recovered_packet_ms_(-1) { 42 last_recovered_packet_ms_(-1) {
43 // It's OK to create this object on a different thread/task queue than 43 // It's OK to create this object on a different thread/task queue than
44 // the one used during main operation. 44 // the one used during main operation.
45 sequence_checker_.Detach(); 45 sequence_checker_.Detach();
46 } 46 }
47 47
48 FlexfecReceiver::~FlexfecReceiver() = default; 48 FlexfecReceiver::~FlexfecReceiver() = default;
49 49
50 bool FlexfecReceiver::AddAndProcessReceivedPacket(const uint8_t* packet, 50 bool FlexfecReceiver::AddAndProcessReceivedPacket(const uint8_t* packet,
51 size_t packet_length) { 51 size_t packet_length) {
52 RTC_DCHECK(sequence_checker_.CalledSequentially()); 52 RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
53
54 if (!AddReceivedPacket(packet, packet_length)) { 53 if (!AddReceivedPacket(packet, packet_length)) {
55 return false; 54 return false;
56 } 55 }
57 return ProcessReceivedPackets(); 56 return ProcessReceivedPackets();
58 } 57 }
59 58
60 FecPacketCounter FlexfecReceiver::GetPacketCounter() const { 59 FecPacketCounter FlexfecReceiver::GetPacketCounter() const {
61 RTC_DCHECK(sequence_checker_.CalledSequentially()); 60 RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
62 return packet_counter_; 61 return packet_counter_;
63 } 62 }
64 63
65 bool FlexfecReceiver::AddReceivedPacket(const uint8_t* packet, 64 bool FlexfecReceiver::AddReceivedPacket(const uint8_t* packet,
66 size_t packet_length) { 65 size_t packet_length) {
67 RTC_DCHECK(sequence_checker_.CalledSequentially()); 66 RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
68 67
69 // RTP packets with a full base header (12 bytes), but without payload, 68 // RTP packets with a full base header (12 bytes), but without payload,
70 // could conceivably be useful in the decoding. Therefore we check 69 // could conceivably be useful in the decoding. Therefore we check
71 // with a strict inequality here. 70 // with a strict inequality here.
72 if (packet_length < kRtpHeaderSize) { 71 if (packet_length < kRtpHeaderSize) {
73 LOG(LS_WARNING) << "Truncated packet, discarding."; 72 LOG(LS_WARNING) << "Truncated packet, discarding.";
74 return false; 73 return false;
75 } 74 }
76 75
77 // TODO(brandtr): Consider how to handle received FlexFEC packets and 76 // TODO(brandtr): Consider how to handle received FlexFEC packets and
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 // Note that the implementation of this member function and the implementation 122 // Note that the implementation of this member function and the implementation
124 // in UlpfecReceiver::ProcessReceivedFec() are slightly different. 123 // in UlpfecReceiver::ProcessReceivedFec() are slightly different.
125 // This implementation only returns _recovered_ media packets through the 124 // This implementation only returns _recovered_ media packets through the
126 // callback, whereas the implementation in UlpfecReceiver returns _all inserted_ 125 // callback, whereas the implementation in UlpfecReceiver returns _all inserted_
127 // media packets through the callback. The latter behaviour makes sense 126 // media packets through the callback. The latter behaviour makes sense
128 // for ULPFEC, since the ULPFEC receiver is owned by the RtpStreamReceiver. 127 // for ULPFEC, since the ULPFEC receiver is owned by the RtpStreamReceiver.
129 // Here, however, the received media pipeline is more decoupled from the 128 // Here, however, the received media pipeline is more decoupled from the
130 // FlexFEC decoder, and we therefore do not interfere with the reception 129 // FlexFEC decoder, and we therefore do not interfere with the reception
131 // of non-recovered media packets. 130 // of non-recovered media packets.
132 bool FlexfecReceiver::ProcessReceivedPackets() { 131 bool FlexfecReceiver::ProcessReceivedPackets() {
133 RTC_DCHECK(sequence_checker_.CalledSequentially()); 132 RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
134 133
135 // Decode. 134 // Decode.
136 if (!received_packets_.empty()) { 135 if (!received_packets_.empty()) {
137 if (erasure_code_->DecodeFec(&received_packets_, &recovered_packets_) != 136 if (erasure_code_->DecodeFec(&received_packets_, &recovered_packets_) !=
138 0) { 137 0) {
139 return false; 138 return false;
140 } 139 }
141 } 140 }
142 // Return recovered packets through callback. 141 // Return recovered packets through callback.
143 for (const auto& recovered_packet : recovered_packets_) { 142 for (const auto& recovered_packet : recovered_packets_) {
(...skipping 13 matching lines...) Expand all
157 ForwardErrorCorrection::ParseSsrc(recovered_packet->pkt->data); 156 ForwardErrorCorrection::ParseSsrc(recovered_packet->pkt->data);
158 LOG(LS_INFO) << "Recovered media packet with SSRC: " << media_ssrc 157 LOG(LS_INFO) << "Recovered media packet with SSRC: " << media_ssrc
159 << " from FlexFEC stream with SSRC: " << ssrc_ << "."; 158 << " from FlexFEC stream with SSRC: " << ssrc_ << ".";
160 last_recovered_packet_ms_ = now_ms; 159 last_recovered_packet_ms_ = now_ms;
161 } 160 }
162 } 161 }
163 return true; 162 return true;
164 } 163 }
165 164
166 } // namespace webrtc 165 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/include/flexfec_receiver.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698