diff --git a/webrtc/modules/rtp_rtcp/source/rtp_format_h264.cc b/webrtc/modules/rtp_rtcp/source/rtp_format_h264.cc
index d986eae..c4f40e6 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_format_h264.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_format_h264.cc
@@ -45,16 +45,16 @@
   h264_header->single_nalu = true;
   h264_header->stap_a = false;
 
-  uint8_t nal_type = payload_data[0] & NalDefs::kTypeMask;
-  if (nal_type == Nalu::kStapA) {
-    nal_type = payload_data[3] & NalDefs::kTypeMask;
+  uint8_t nal_type = payload_data[0] & kTypeMask;
+  if (nal_type == kStapA) {
+    nal_type = payload_data[3] & kTypeMask;
     h264_header->stap_a = true;
   }
 
   switch (nal_type) {
-    case Nalu::kSps:
-    case Nalu::kPps:
-    case Nalu::kIdr:
+    case kSps:
+    case kPps:
+    case kIdr:
       rtp_header->frameType = kVideoFrameKey;
       break;
     default:
@@ -67,9 +67,9 @@
                   const uint8_t* payload_data,
                   size_t payload_data_length,
                   size_t* offset) {
-  uint8_t fnri = payload_data[0] & (NalDefs::kFBit | NalDefs::kNriMask);
-  uint8_t original_nal_type = payload_data[1] & NalDefs::kTypeMask;
-  bool first_fragment = (payload_data[1] & FuDefs::kSBit) > 0;
+  uint8_t fnri = payload_data[0] & (kFBit | kNriMask);
+  uint8_t original_nal_type = payload_data[1] & kTypeMask;
+  bool first_fragment = (payload_data[1] & kSBit) > 0;
 
   uint8_t original_nal_header = fnri | original_nal_type;
   if (first_fragment) {
@@ -80,7 +80,7 @@
     *offset = kFuAHeaderSize;
   }
 
-  if (original_nal_type == Nalu::kIdr) {
+  if (original_nal_type == kIdr) {
     rtp_header->frameType = kVideoFrameKey;
   } else {
     rtp_header->frameType = kVideoFrameDelta;
@@ -272,9 +272,9 @@
 bool RtpDepacketizerH264::Parse(WebRtcRTPHeader* rtp_header,
                                 const uint8_t* payload_data,
                                 size_t payload_data_length) {
-  uint8_t nal_type = payload_data[0] & NalDefs::kTypeMask;
+  uint8_t nal_type = payload_data[0] & kTypeMask;
   size_t offset = 0;
-  if (nal_type == Nalu::kFuA) {
+  if (nal_type == kFuA) {
     // Fragmented NAL units (FU-A).
     ParseFuaNalu(rtp_header, payload_data, payload_data_length, &offset);
   } else {
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_format_h264_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_format_h264_unittest.cc
index 61c7f4c..cb18833 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_format_h264_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_format_h264_unittest.cc
@@ -326,11 +326,10 @@
 }
 
 TEST_F(RtpDepacketizerH264Test, TestStapAKey) {
-  uint8_t packet[16] = {Nalu::kStapA,  // F=0, NRI=0, Type=24.
+  uint8_t packet[16] = {kStapA,  // F=0, NRI=0, Type=24.
                         // Length, nal header, payload.
-                        0,            0x02,       Nalu::kIdr, 0xFF, 0,
-                        0x03,         Nalu::kIdr, 0xFF,       0x00, 0,
-                        0x04,         Nalu::kIdr, 0xFF,       0x00, 0x11};
+                        0,      0x02, kIdr, 0xFF, 0,    0x03, kIdr, 0xFF,
+                        0x00,   0,    0x04, kIdr, 0xFF, 0x00, 0x11};
 
   WebRtcRTPHeader expected_header;
   memset(&expected_header, 0, sizeof(expected_header));
@@ -343,11 +342,10 @@
 }
 
 TEST_F(RtpDepacketizerH264Test, TestStapADelta) {
-  uint8_t packet[16] = {Nalu::kStapA,  // F=0, NRI=0, Type=24.
+  uint8_t packet[16] = {kStapA,  // F=0, NRI=0, Type=24.
                         // Length, nal header, payload.
-                        0,            0x02,         Nalu::kSlice, 0xFF, 0,
-                        0x03,         Nalu::kSlice, 0xFF,         0x00, 0,
-                        0x04,         Nalu::kSlice, 0xFF,         0x00, 0x11};
+                        0,      0x02, kSlice, 0xFF,   0,    0x03, kSlice, 0xFF,
+                        0x00,   0,    0x04,   kSlice, 0xFF, 0x00, 0x11};
 
   WebRtcRTPHeader expected_header;
   memset(&expected_header, 0, sizeof(expected_header));
@@ -361,23 +359,23 @@
 
 TEST_F(RtpDepacketizerH264Test, TestFuA) {
   uint8_t packet1[3] = {
-      Nalu::kFuA,                  // F=0, NRI=0, Type=28.
-      FuDefs::kSBit | Nalu::kIdr,  // FU header.
-      0x01                         // Payload.
+      kFuA,          // F=0, NRI=0, Type=28.
+      kSBit | kIdr,  // FU header.
+      0x01           // Payload.
   };
-  const uint8_t kExpected1[2] = {Nalu::kIdr, 0x01};
+  const uint8_t kExpected1[2] = {kIdr, 0x01};
 
   uint8_t packet2[3] = {
-      Nalu::kFuA,  // F=0, NRI=0, Type=28.
-      Nalu::kIdr,  // FU header.
-      0x02         // Payload.
+      kFuA,  // F=0, NRI=0, Type=28.
+      kIdr,  // FU header.
+      0x02   // Payload.
   };
   const uint8_t kExpected2[1] = {0x02};
 
   uint8_t packet3[3] = {
-      Nalu::kFuA,                  // F=0, NRI=0, Type=28.
-      FuDefs::kEBit | Nalu::kIdr,  // FU header.
-      0x03                         // Payload.
+      kFuA,          // F=0, NRI=0, Type=28.
+      kEBit | kIdr,  // FU header.
+      0x03           // Payload.
   };
   const uint8_t kExpected3[1] = {0x03};
 
