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

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

Issue 2886813002: Delete RtpData::OnRecoveredPacket, use RecoveredPacketReceiver instead. (Closed)
Patch Set: Comment nit. Created 3 years, 6 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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
11 #include "webrtc/modules/rtp_rtcp/source/ulpfec_receiver_impl.h" 11 #include "webrtc/modules/rtp_rtcp/source/ulpfec_receiver_impl.h"
12 12
13 #include <memory> 13 #include <memory>
14 #include <utility> 14 #include <utility>
15 15
16 #include "webrtc/base/checks.h" 16 #include "webrtc/base/checks.h"
17 #include "webrtc/base/logging.h" 17 #include "webrtc/base/logging.h"
18 #include "webrtc/modules/rtp_rtcp/source/byte_io.h" 18 #include "webrtc/modules/rtp_rtcp/source/byte_io.h"
19 #include "webrtc/modules/rtp_rtcp/source/rtp_receiver_video.h" 19 #include "webrtc/modules/rtp_rtcp/source/rtp_receiver_video.h"
20 #include "webrtc/system_wrappers/include/clock.h" 20 #include "webrtc/system_wrappers/include/clock.h"
21 21
22 namespace webrtc { 22 namespace webrtc {
23 23
24 UlpfecReceiver* UlpfecReceiver::Create(RtpData* callback) { 24 UlpfecReceiver* UlpfecReceiver::Create(RecoveredPacketReceiver* callback) {
25 return new UlpfecReceiverImpl(callback); 25 return new UlpfecReceiverImpl(callback);
26 } 26 }
27 27
28 UlpfecReceiverImpl::UlpfecReceiverImpl(RtpData* callback) 28 UlpfecReceiverImpl::UlpfecReceiverImpl(RecoveredPacketReceiver* callback)
29 : recovered_packet_callback_(callback), 29 : recovered_packet_callback_(callback),
30 fec_(ForwardErrorCorrection::CreateUlpfec()) {} 30 fec_(ForwardErrorCorrection::CreateUlpfec()) {}
31 31
32 UlpfecReceiverImpl::~UlpfecReceiverImpl() { 32 UlpfecReceiverImpl::~UlpfecReceiverImpl() {
33 received_packets_.clear(); 33 received_packets_.clear();
34 fec_->ResetState(&recovered_packets_); 34 fec_->ResetState(&recovered_packets_);
35 } 35 }
36 36
37 FecPacketCounter UlpfecReceiverImpl::GetPacketCounter() const { 37 FecPacketCounter UlpfecReceiverImpl::GetPacketCounter() const {
38 rtc::CritScope cs(&crit_sect_); 38 rtc::CritScope cs(&crit_sect_);
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 return 0; 205 return 0;
206 } 206 }
207 207
208 int32_t UlpfecReceiverImpl::ProcessReceivedFec() { 208 int32_t UlpfecReceiverImpl::ProcessReceivedFec() {
209 crit_sect_.Enter(); 209 crit_sect_.Enter();
210 if (!received_packets_.empty()) { 210 if (!received_packets_.empty()) {
211 // Send received media packet to VCM. 211 // Send received media packet to VCM.
212 if (!received_packets_.front()->is_fec) { 212 if (!received_packets_.front()->is_fec) {
213 ForwardErrorCorrection::Packet* packet = received_packets_.front()->pkt; 213 ForwardErrorCorrection::Packet* packet = received_packets_.front()->pkt;
214 crit_sect_.Leave(); 214 crit_sect_.Leave();
215 if (!recovered_packet_callback_->OnRecoveredPacket(packet->data, 215 recovered_packet_callback_->OnRecoveredPacket(packet->data,
216 packet->length)) { 216 packet->length);
217 return -1;
218 }
219 crit_sect_.Enter(); 217 crit_sect_.Enter();
220 } 218 }
221 if (fec_->DecodeFec(&received_packets_, &recovered_packets_) != 0) { 219 if (fec_->DecodeFec(&received_packets_, &recovered_packets_) != 0) {
222 crit_sect_.Leave(); 220 crit_sect_.Leave();
223 return -1; 221 return -1;
224 } 222 }
225 RTC_DCHECK(received_packets_.empty()); 223 RTC_DCHECK(received_packets_.empty());
226 } 224 }
227 // Send any recovered media packets to VCM. 225 // Send any recovered media packets to VCM.
228 for (const auto& recovered_packet : recovered_packets_) { 226 for (const auto& recovered_packet : recovered_packets_) {
229 if (recovered_packet->returned) { 227 if (recovered_packet->returned) {
230 // Already sent to the VCM and the jitter buffer. 228 // Already sent to the VCM and the jitter buffer.
231 continue; 229 continue;
232 } 230 }
233 ForwardErrorCorrection::Packet* packet = recovered_packet->pkt; 231 ForwardErrorCorrection::Packet* packet = recovered_packet->pkt;
234 ++packet_counter_.num_recovered_packets; 232 ++packet_counter_.num_recovered_packets;
235 crit_sect_.Leave(); 233 crit_sect_.Leave();
236 if (!recovered_packet_callback_->OnRecoveredPacket(packet->data, 234 recovered_packet_callback_->OnRecoveredPacket(packet->data,
237 packet->length)) { 235 packet->length);
238 return -1;
239 }
240 crit_sect_.Enter(); 236 crit_sect_.Enter();
241 recovered_packet->returned = true; 237 recovered_packet->returned = true;
242 } 238 }
243 crit_sect_.Leave(); 239 crit_sect_.Leave();
244 return 0; 240 return 0;
245 } 241 }
246 242
247 } // namespace webrtc 243 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/ulpfec_receiver_impl.h ('k') | webrtc/modules/rtp_rtcp/source/ulpfec_receiver_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698