Update header formatters to FlexFEC draft 03.
The only difference is that the F and R bits have changed place.
BUG=webrtc:5654
Review-Url: https://codereview.webrtc.org/2495253002
Cr-Commit-Position: refs/heads/master@{#15064}
diff --git a/webrtc/modules/rtp_rtcp/source/flexfec_header_reader_writer.cc b/webrtc/modules/rtp_rtcp/source/flexfec_header_reader_writer.cc
index 2d7fa0b..9017ab5 100644
--- a/webrtc/modules/rtp_rtcp/source/flexfec_header_reader_writer.cc
+++ b/webrtc/modules/rtp_rtcp/source/flexfec_header_reader_writer.cc
@@ -85,18 +85,18 @@
LOG(LS_WARNING) << "Discarding truncated FlexFEC packet.";
return false;
}
- bool f_bit = (fec_packet->pkt->data[0] & 0x80) != 0;
- if (f_bit) {
- LOG(LS_INFO) << "FlexFEC packet with inflexible generator matrix. We do "
- "not yet support this, thus discarding packet.";
- return false;
- }
- bool r_bit = (fec_packet->pkt->data[0] & 0x40) != 0;
+ bool r_bit = (fec_packet->pkt->data[0] & 0x80) != 0;
if (r_bit) {
LOG(LS_INFO) << "FlexFEC packet with retransmission bit set. We do not yet "
"support this, thus discarding the packet.";
return false;
}
+ bool f_bit = (fec_packet->pkt->data[0] & 0x40) != 0;
+ if (f_bit) {
+ LOG(LS_INFO) << "FlexFEC packet with inflexible generator matrix. We do "
+ "not yet support this, thus discarding packet.";
+ return false;
+ }
uint8_t ssrc_count =
ByteReader<uint8_t>::ReadBigEndian(&fec_packet->pkt->data[8]);
if (ssrc_count != 1) {
@@ -247,8 +247,8 @@
const uint8_t* packet_mask,
size_t packet_mask_size,
ForwardErrorCorrection::Packet* fec_packet) const {
- fec_packet->data[0] &= 0x7f; // Clear F bit.
- fec_packet->data[0] &= 0xbf; // Clear R bit.
+ fec_packet->data[0] &= 0x7f; // Clear R bit.
+ fec_packet->data[0] &= 0xbf; // Clear F bit.
ByteWriter<uint8_t>::WriteBigEndian(&fec_packet->data[8], kSsrcCount);
ByteWriter<uint32_t, 3>::WriteBigEndian(&fec_packet->data[9], kReservedBits);
ByteWriter<uint32_t>::WriteBigEndian(&fec_packet->data[12], media_ssrc);
diff --git a/webrtc/modules/rtp_rtcp/source/flexfec_header_reader_writer.h b/webrtc/modules/rtp_rtcp/source/flexfec_header_reader_writer.h
index ffd0c9f..13f7477 100644
--- a/webrtc/modules/rtp_rtcp/source/flexfec_header_reader_writer.h
+++ b/webrtc/modules/rtp_rtcp/source/flexfec_header_reader_writer.h
@@ -20,7 +20,7 @@
// 0 1 2 3
// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// 0 |F|R|P|X| CC |M| PT recovery | length recovery |
+// 0 |R|F|P|X| CC |M| PT recovery | length recovery |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// 4 | TS recovery |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -43,7 +43,7 @@
// 0 1 2 3
// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// 0 |1|0|P|X| CC |M| PT recovery | length recovery |
+// 0 |0|1|P|X| CC |M| PT recovery | length recovery |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// 4 | TS recovery |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
diff --git a/webrtc/modules/rtp_rtcp/source/flexfec_header_reader_writer_unittest.cc b/webrtc/modules/rtp_rtcp/source/flexfec_header_reader_writer_unittest.cc
index 5d0e69c..7546931 100644
--- a/webrtc/modules/rtp_rtcp/source/flexfec_header_reader_writer_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/flexfec_header_reader_writer_unittest.cc
@@ -43,8 +43,8 @@
constexpr size_t kFlexfecMaxPacketSize = kFlexfecPacketMaskSizes[2];
// Reader tests.
-constexpr uint8_t kNoFBit = 0 << 7;
-constexpr uint8_t kNoRBit = 0 << 6;
+constexpr uint8_t kNoRBit = 0 << 7;
+constexpr uint8_t kNoFBit = 0 << 6;
constexpr uint8_t kPtRecovery = 123;
constexpr uint8_t kLengthRecov[] = {0xab, 0xcd};
constexpr uint8_t kTsRecovery[] = {0x01, 0x23, 0x45, 0x67};
@@ -173,7 +173,7 @@
constexpr uint8_t kUlpfecPacketMask[] = {0x11, 0x02};
// clang-format on
constexpr uint8_t kPacketData[] = {
- kNoFBit | kNoRBit, kPtRecovery, kLengthRecov[0], kLengthRecov[1],
+ kNoRBit | kNoFBit, kPtRecovery, kLengthRecov[0], kLengthRecov[1],
kTsRecovery[0], kTsRecovery[1], kTsRecovery[2], kTsRecovery[3],
kSsrcCount, kReservedBits, kReservedBits, kReservedBits,
kProtSsrc[0], kProtSsrc[1], kProtSsrc[2], kProtSsrc[3],
@@ -204,7 +204,7 @@
0x08, 0x44, 0x00, 0x84};
// clang-format on
constexpr uint8_t kPacketData[] = {
- kNoFBit | kNoRBit, kPtRecovery, kLengthRecov[0], kLengthRecov[1],
+ kNoRBit | kNoFBit, kPtRecovery, kLengthRecov[0], kLengthRecov[1],
kTsRecovery[0], kTsRecovery[1], kTsRecovery[2], kTsRecovery[3],
kSsrcCount, kReservedBits, kReservedBits, kReservedBits,
kProtSsrc[0], kProtSsrc[1], kProtSsrc[2], kProtSsrc[3],
@@ -241,7 +241,7 @@
0x88, 0x88, 0x88, 0x88};
// clang-format on
constexpr uint8_t kPacketData[] = {
- kNoFBit | kNoRBit, kPtRecovery, kLengthRecov[0], kLengthRecov[1],
+ kNoRBit | kNoFBit, kPtRecovery, kLengthRecov[0], kLengthRecov[1],
kTsRecovery[0], kTsRecovery[1], kTsRecovery[2], kTsRecovery[3],
kSsrcCount, kReservedBits, kReservedBits, kReservedBits,
kProtSsrc[0], kProtSsrc[1], kProtSsrc[2], kProtSsrc[3],