OLD | NEW |
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 |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 // Output packet | 87 // Output packet |
88 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 88 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
89 // | FEC Header (10 octets) | | 89 // | FEC Header (10 octets) | |
90 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 90 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
91 // | FEC Level 0 Header | | 91 // | FEC Level 0 Header | |
92 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 92 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
93 // | FEC Level 0 Payload | | 93 // | FEC Level 0 Payload | |
94 // | | | 94 // | | |
95 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 95 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
96 // | 96 // |
97 // Note that any potential RED headers are added/removed before calling | 97 int ForwardErrorCorrection::EncodeFec(const PacketList& media_packets, |
98 // GenerateFec() or DecodeFec(). | 98 uint8_t protection_factor, |
99 int ForwardErrorCorrection::GenerateFec(const PacketList& media_packets, | 99 int num_important_packets, |
100 uint8_t protection_factor, | 100 bool use_unequal_protection, |
101 int num_important_packets, | 101 FecMaskType fec_mask_type, |
102 bool use_unequal_protection, | 102 std::list<Packet*>* fec_packets) { |
103 FecMaskType fec_mask_type, | 103 const size_t num_media_packets = media_packets.size(); |
104 std::list<Packet*>* fec_packets) { | 104 |
105 const uint16_t num_media_packets = media_packets.size(); | |
106 // Sanity check arguments. | 105 // Sanity check arguments. |
107 RTC_DCHECK_GT(num_media_packets, 0); | 106 RTC_DCHECK_GT(num_media_packets, 0u); |
108 RTC_DCHECK_GE(num_important_packets, 0); | 107 RTC_DCHECK_GE(num_important_packets, 0); |
109 RTC_DCHECK_LE(num_important_packets, num_media_packets); | 108 RTC_DCHECK_LE(static_cast<size_t>(num_important_packets), num_media_packets); |
110 RTC_DCHECK(fec_packets->empty()); | 109 RTC_DCHECK(fec_packets->empty()); |
111 | 110 |
112 if (num_media_packets > kMaxMediaPackets) { | 111 if (num_media_packets > kMaxMediaPackets) { |
113 LOG(LS_WARNING) << "Can't protect " << num_media_packets | 112 LOG(LS_WARNING) << "Can't protect " << num_media_packets |
114 << " media packets per frame. Max is " << kMaxMediaPackets | 113 << " media packets per frame. Max is " << kMaxMediaPackets |
115 << "."; | 114 << "."; |
116 return -1; | 115 return -1; |
117 } | 116 } |
118 | 117 |
119 bool l_bit = (num_media_packets > 8 * kMaskSizeLBitClear); | 118 bool l_bit = (num_media_packets > 8 * kMaskSizeLBitClear); |
(...skipping 650 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
770 } | 769 } |
771 InsertPackets(received_packets, recovered_packets); | 770 InsertPackets(received_packets, recovered_packets); |
772 AttemptRecover(recovered_packets); | 771 AttemptRecover(recovered_packets); |
773 return 0; | 772 return 0; |
774 } | 773 } |
775 | 774 |
776 size_t ForwardErrorCorrection::MaxPacketOverhead() const { | 775 size_t ForwardErrorCorrection::MaxPacketOverhead() const { |
777 return kFecHeaderSize + kUlpHeaderSizeLBitSet; | 776 return kFecHeaderSize + kUlpHeaderSizeLBitSet; |
778 } | 777 } |
779 } // namespace webrtc | 778 } // namespace webrtc |
OLD | NEW |