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],
