constexpr-ify unit tests

starting with
  git grep "^const char k" | grep unittest.cc | awk -F ':' '{print $1}' | sort | uniq | xargs sed -i 's/^const char /constexpr char /g'
and then repeating the same with each of
  uint8_t, uint32_t, uint16_t, size_t, int8_t, int16_t, int32_t, int64_t, double, uint64_t, unsigned int, float

The remainder can be seen with
  git grep "^const .* k" | grep unittest.cc  | awk '{print $2}' | sort | uniq -c | sort -b -n

Follow-up from
  https://webrtc-review.googlesource.com/c/src/+/398220

Bug: webrtc:429563452
No-Iwyu: large scale change
Change-Id: I04e8f35c001a159f006c8897dccf35f77bc9cacb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/398647
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@meta.com>
Cr-Commit-Position: refs/heads/main@{#45111}
diff --git a/api/transport/stun_unittest.cc b/api/transport/stun_unittest.cc
index 0ad62a5..16eafd7 100644
--- a/api/transport/stun_unittest.cc
+++ b/api/transport/stun_unittest.cc
@@ -37,7 +37,7 @@
 // clang-format off
 // clang formatting doesn't respect inline comments.
 
-const uint8_t kStunMessageWithIPv6MappedAddress[] = {
+constexpr uint8_t kStunMessageWithIPv6MappedAddress[] = {
   0x00, 0x01, 0x00, 0x18,  // message header
   0x21, 0x12, 0xa4, 0x42,  // transaction id
   0x29, 0x1f, 0xcd, 0x7c,
@@ -51,7 +51,7 @@
   0xfe, 0xe5, 0x00, 0xc3
 };
 
-const uint8_t kStunMessageWithIPv4MappedAddress[] = {
+constexpr uint8_t kStunMessageWithIPv4MappedAddress[] = {
   0x01, 0x01, 0x00, 0x0c,   // binding response, length 12
   0x21, 0x12, 0xa4, 0x42,   // magic cookie
   0x29, 0x1f, 0xcd, 0x7c,   // transaction ID
@@ -63,7 +63,7 @@
 };
 
 // Test XOR-mapped IP addresses:
-const uint8_t kStunMessageWithIPv6XorMappedAddress[] = {
+constexpr uint8_t kStunMessageWithIPv6XorMappedAddress[] = {
   0x01, 0x01, 0x00, 0x18,  // message header (binding response)
   0x21, 0x12, 0xa4, 0x42,  // magic cookie (rfc5389)
   0xe3, 0xa9, 0x46, 0xe1,  // transaction ID
@@ -77,7 +77,7 @@
   0xaa, 0xed, 0x01, 0xc3
 };
 
-const uint8_t kStunMessageWithIPv4XorMappedAddress[] = {
+constexpr uint8_t kStunMessageWithIPv4XorMappedAddress[] = {
   0x01, 0x01, 0x00, 0x0c,  // message header (binding response)
   0x21, 0x12, 0xa4, 0x42,  // magic cookie
   0x29, 0x1f, 0xcd, 0x7c,  // transaction ID
@@ -89,7 +89,7 @@
 };
 
 // ByteString Attribute (username)
-const uint8_t kStunMessageWithByteStringAttribute[] = {
+constexpr uint8_t kStunMessageWithByteStringAttribute[] = {
   0x00, 0x01, 0x00, 0x0c,
   0x21, 0x12, 0xa4, 0x42,
   0xe3, 0xa9, 0x46, 0xe1,
@@ -102,7 +102,7 @@
 
 // Message with an unknown but comprehensible optional attribute.
 // Parsing should succeed despite this unknown attribute.
-const uint8_t kStunMessageWithUnknownAttribute[] = {
+constexpr uint8_t kStunMessageWithUnknownAttribute[] = {
   0x00, 0x01, 0x00, 0x14,
   0x21, 0x12, 0xa4, 0x42,
   0xe3, 0xa9, 0x46, 0xe1,
@@ -116,7 +116,7 @@
 };
 
 // ByteString Attribute (username) with padding byte
-const uint8_t kStunMessageWithPaddedByteStringAttribute[] = {
+constexpr uint8_t kStunMessageWithPaddedByteStringAttribute[] = {
   0x00, 0x01, 0x00, 0x08,
   0x21, 0x12, 0xa4, 0x42,
   0xe3, 0xa9, 0x46, 0xe1,
@@ -127,7 +127,7 @@
 };
 
 // Message with an Unknown Attributes (uint16_t list) attribute.
-const uint8_t kStunMessageWithUInt16ListAttribute[] = {
+constexpr uint8_t kStunMessageWithUInt16ListAttribute[] = {
   0x00, 0x01, 0x00, 0x0c,
   0x21, 0x12, 0xa4, 0x42,
   0xe3, 0xa9, 0x46, 0xe1,
@@ -139,7 +139,7 @@
 };
 
 // Error response message (unauthorized)
-const uint8_t kStunMessageWithErrorAttribute[] = {
+constexpr uint8_t kStunMessageWithErrorAttribute[] = {
   0x01, 0x11, 0x00, 0x14,
   0x21, 0x12, 0xa4, 0x42,
   0x29, 0x1f, 0xcd, 0x7c,
@@ -155,9 +155,9 @@
 // Sample messages with an invalid length Field
 
 // The actual length in bytes of the invalid messages (including STUN header)
-const int kRealLengthOfInvalidLengthTestCases = 32;
+constexpr int kRealLengthOfInvalidLengthTestCases = 32;
 
-const uint8_t kStunMessageWithZeroLength[] = {
+constexpr uint8_t kStunMessageWithZeroLength[] = {
   0x00, 0x01, 0x00, 0x00,  // length of 0 (last 2 bytes)
   0x21, 0x12, 0xA4, 0x42,  // magic cookie
   '0', '1', '2', '3',      // transaction id
@@ -168,7 +168,7 @@
   0x21, 0x12, 0xA4, 0x53,
 };
 
-const uint8_t kStunMessageWithExcessLength[] = {
+constexpr uint8_t kStunMessageWithExcessLength[] = {
   0x00, 0x01, 0x00, 0x55,  // length of 85
   0x21, 0x12, 0xA4, 0x42,  // magic cookie
   '0', '1', '2', '3',      // transaction id
@@ -179,7 +179,7 @@
   0x21, 0x12, 0xA4, 0x53,
 };
 
-const uint8_t kStunMessageWithSmallLength[] = {
+constexpr uint8_t kStunMessageWithSmallLength[] = {
   0x00, 0x01, 0x00, 0x03,  // length of 3
   0x21, 0x12, 0xA4, 0x42,  // magic cookie
   '0', '1', '2', '3',      // transaction id
@@ -190,7 +190,7 @@
   0x21, 0x12, 0xA4, 0x53,
 };
 
-const uint8_t kStunMessageWithBadHmacAtEnd[] = {
+constexpr uint8_t kStunMessageWithBadHmacAtEnd[] = {
   0x00, 0x01, 0x00, 0x14,  // message length exactly 20
   0x21, 0x12, 0xA4, 0x42,  // magic cookie
   '0', '1', '2', '3',      // transaction ID
@@ -205,7 +205,7 @@
 
 // RTCP packet, for testing we correctly ignore non stun packet types.
 // V=2, P=false, RC=0, Type=200, Len=6, Sender-SSRC=85, etc
-const uint8_t kRtcpPacket[] = {
+constexpr uint8_t kRtcpPacket[] = {
   0x80, 0xc8, 0x00, 0x06, 0x00, 0x00, 0x00, 0x55,
   0xce, 0xa5, 0x18, 0x3a, 0x39, 0xcc, 0x7d, 0x09,
   0x23, 0xed, 0x19, 0x07, 0x00, 0x00, 0x01, 0x56,
@@ -218,30 +218,30 @@
 // Software name (response): "test vector" (without quotes)
 // Username:  "evtj:h6vY" (without quotes)
 // Password:  "VOkJxbRl1RmTxUk/WvJxBt" (without quotes)
-const uint8_t kRfc5769SampleMsgTransactionId[] = {
+constexpr uint8_t kRfc5769SampleMsgTransactionId[] = {
   0xb7, 0xe7, 0xa7, 0x01, 0xbc, 0x34, 0xd6, 0x86, 0xfa, 0x87, 0xdf, 0xae
 };
-const char kRfc5769SampleMsgClientSoftware[] = "STUN test client";
-const char kRfc5769SampleMsgServerSoftware[] = "test vector";
-const char kRfc5769SampleMsgUsername[] = "evtj:h6vY";
-const char kRfc5769SampleMsgPassword[] = "VOkJxbRl1RmTxUk/WvJxBt";
+constexpr char kRfc5769SampleMsgClientSoftware[] = "STUN test client";
+constexpr char kRfc5769SampleMsgServerSoftware[] = "test vector";
+constexpr char kRfc5769SampleMsgUsername[] = "evtj:h6vY";
+constexpr char kRfc5769SampleMsgPassword[] = "VOkJxbRl1RmTxUk/WvJxBt";
 const SocketAddress kRfc5769SampleMsgMappedAddress(
     "192.0.2.1", 32853);
 const SocketAddress kRfc5769SampleMsgIPv6MappedAddress(
     "2001:db8:1234:5678:11:2233:4455:6677", 32853);
 
-const uint8_t kRfc5769SampleMsgWithAuthTransactionId[] = {
+constexpr uint8_t kRfc5769SampleMsgWithAuthTransactionId[] = {
   0x78, 0xad, 0x34, 0x33, 0xc6, 0xad, 0x72, 0xc0, 0x29, 0xda, 0x41, 0x2e
 };
-const char kRfc5769SampleMsgWithAuthUsername[] =
+constexpr char kRfc5769SampleMsgWithAuthUsername[] =
     "\xe3\x83\x9e\xe3\x83\x88\xe3\x83\xaa\xe3\x83\x83\xe3\x82\xaf\xe3\x82\xb9";
-const char kRfc5769SampleMsgWithAuthPassword[] = "TheMatrIX";
-const char kRfc5769SampleMsgWithAuthNonce[] =
+constexpr char kRfc5769SampleMsgWithAuthPassword[] = "TheMatrIX";
+constexpr char kRfc5769SampleMsgWithAuthNonce[] =
     "f//499k954d6OL34oL9FSTvy64sA";
-const char kRfc5769SampleMsgWithAuthRealm[] = "example.org";
+constexpr char kRfc5769SampleMsgWithAuthRealm[] = "example.org";
 
 // 2.1.  Sample Request
-const uint8_t kRfc5769SampleRequest[] = {
+constexpr uint8_t kRfc5769SampleRequest[] = {
   0x00, 0x01, 0x00, 0x58,   //    Request type and message length
   0x21, 0x12, 0xa4, 0x42,   //    Magic cookie
   0xb7, 0xe7, 0xa7, 0x01,   // }
@@ -272,7 +272,7 @@
 };
 
 // 2.1.  Sample Request
-const uint8_t kSampleRequestMI32[] = {
+constexpr uint8_t kSampleRequestMI32[] = {
   0x00, 0x01, 0x00, 0x48,   //    Request type and message length
   0x21, 0x12, 0xa4, 0x42,   //    Magic cookie
   0xb7, 0xe7, 0xa7, 0x01,   // }
@@ -299,7 +299,7 @@
 };
 
 // 2.2.  Sample IPv4 Response
-const uint8_t kRfc5769SampleResponse[] = {
+constexpr uint8_t kRfc5769SampleResponse[] = {
   0x01, 0x01, 0x00, 0x3c,  //     Response type and message length
   0x21, 0x12, 0xa4, 0x42,  //     Magic cookie
   0xb7, 0xe7, 0xa7, 0x01,  // }
@@ -323,7 +323,7 @@
 };
 
 // 2.3.  Sample IPv6 Response
-const uint8_t kRfc5769SampleResponseIPv6[] = {
+constexpr uint8_t kRfc5769SampleResponseIPv6[] = {
   0x01, 0x01, 0x00, 0x48,  //    Response type and message length
   0x21, 0x12, 0xa4, 0x42,  //    Magic cookie
   0xb7, 0xe7, 0xa7, 0x01,  // }
@@ -350,7 +350,7 @@
 };
 
 // 2.4.  Sample Request with Long-Term Authentication
-const uint8_t kRfc5769SampleRequestLongTermAuth[] = {
+constexpr uint8_t kRfc5769SampleRequestLongTermAuth[] = {
   0x00, 0x01, 0x00, 0x60,  //    Request type and message length
   0x21, 0x12, 0xa4, 0x42,  //    Magic cookie
   0x78, 0xad, 0x34, 0x33,  // }
@@ -385,7 +385,7 @@
 // Length parameter is changed to 0x38 from 0x58.
 // AddMessageIntegrity will add MI information and update the length param
 // accordingly.
-const uint8_t kRfc5769SampleRequestWithoutMI[] = {
+constexpr uint8_t kRfc5769SampleRequestWithoutMI[] = {
   0x00, 0x01, 0x00, 0x38,  //    Request type and message length
   0x21, 0x12, 0xa4, 0x42,  //    Magic cookie
   0xb7, 0xe7, 0xa7, 0x01,  // }
@@ -409,7 +409,7 @@
 
 // This HMAC differs from the RFC 5769 SampleRequest message. This differs
 // because spec uses 0x20 for the padding where as our implementation uses 0.
-const uint8_t kCalculatedHmac1[] = {
+constexpr uint8_t kCalculatedHmac1[] = {
   0x79, 0x07, 0xc2, 0xd2,  // }
   0xed, 0xbf, 0xea, 0x48,  // }
   0x0e, 0x4c, 0x76, 0xd8,  // }  HMAC-SHA1 fingerprint
@@ -421,14 +421,14 @@
 // above since the sum is computed including header
 // and the header is different since the message is shorter
 // than when MESSAGE-INTEGRITY is used.
-const uint8_t kCalculatedHmac1_32[] = {
+constexpr uint8_t kCalculatedHmac1_32[] = {
   0xda, 0x39, 0xde, 0x5d,  // }
 };
 
 // Length parameter is changed to 0x1c from 0x3c.
 // AddMessageIntegrity will add MI information and update the length param
 // accordingly.
-const uint8_t kRfc5769SampleResponseWithoutMI[] = {
+constexpr uint8_t kRfc5769SampleResponseWithoutMI[] = {
   0x01, 0x01, 0x00, 0x1c,  //    Response type and message length
   0x21, 0x12, 0xa4, 0x42,  //    Magic cookie
   0xb7, 0xe7, 0xa7, 0x01,  // }
@@ -445,7 +445,7 @@
 
 // This HMAC differs from the RFC 5769 SampleResponse message. This differs
 // because spec uses 0x20 for the padding where as our implementation uses 0.
-const uint8_t kCalculatedHmac2[] = {
+constexpr uint8_t kCalculatedHmac2[] = {
   0x5d, 0x6b, 0x58, 0xbe,  // }
   0xad, 0x94, 0xe0, 0x7e,  // }
   0xef, 0x0d, 0xfc, 0x12,  // }  HMAC-SHA1 fingerprint
@@ -457,7 +457,7 @@
 // above since the sum is computed including header
 // and the header is different since the message is shorter
 // than when MESSAGE-INTEGRITY is used.
-const uint8_t kCalculatedHmac2_32[] = {
+constexpr uint8_t kCalculatedHmac2_32[] = {
   0xe7, 0x5c, 0xd3, 0x16,  // }
 };
 
@@ -465,14 +465,14 @@
 
 // A transaction ID without the 'magic cookie' portion
 // pjnat's test programs use this transaction ID a lot.
-const uint8_t kTestTransactionId1[] = {0x029, 0x01f, 0x0cd, 0x07c,
-                                       0x0ba, 0x058, 0x0ab, 0x0d7,
-                                       0x0f2, 0x041, 0x001, 0x000};
+constexpr uint8_t kTestTransactionId1[] = {0x029, 0x01f, 0x0cd, 0x07c,
+                                           0x0ba, 0x058, 0x0ab, 0x0d7,
+                                           0x0f2, 0x041, 0x001, 0x000};
 
 // They use this one sometimes too.
-const uint8_t kTestTransactionId2[] = {0x0e3, 0x0a9, 0x046, 0x0e1,
-                                       0x07c, 0x000, 0x0c2, 0x062,
-                                       0x054, 0x008, 0x001, 0x000};
+constexpr uint8_t kTestTransactionId2[] = {0x0e3, 0x0a9, 0x046, 0x0e1,
+                                           0x07c, 0x000, 0x0c2, 0x062,
+                                           0x054, 0x008, 0x001, 0x000};
 
 const in6_addr kIPv6TestAddress1 = {
     {{0x24, 0x01, 0xfa, 0x00, 0x00, 0x04, 0x10, 0x00, 0xbe, 0x30, 0x5b, 0xff,
@@ -487,17 +487,17 @@
 // Windows in_addr has a union with a uchar[] array first.
 const in_addr kIPv4TestAddress1 = {{{0x0ac, 0x017, 0x044, 0x0e6}}};
 #endif
-const char kTestUserName1[] = "abcdefgh";
-const char kTestUserName2[] = "abc";
-const char kTestErrorReason[] = "Unauthorized";
-const int kTestErrorClass = 4;
-const int kTestErrorNumber = 1;
-const int kTestErrorCode = 401;
+constexpr char kTestUserName1[] = "abcdefgh";
+constexpr char kTestUserName2[] = "abc";
+constexpr char kTestErrorReason[] = "Unauthorized";
+constexpr int kTestErrorClass = 4;
+constexpr int kTestErrorNumber = 1;
+constexpr int kTestErrorCode = 401;
 
-const int kTestMessagePort1 = 59977;
-const int kTestMessagePort2 = 47233;
-const int kTestMessagePort3 = 56743;
-const int kTestMessagePort4 = 40444;
+constexpr int kTestMessagePort1 = 59977;
+constexpr int kTestMessagePort2 = 47233;
+constexpr int kTestMessagePort3 = 56743;
+constexpr int kTestMessagePort4 = 40444;
 }  // namespace
 
 class StunTest : public ::testing::Test {
diff --git a/api/video_codecs/test/video_encoder_software_fallback_wrapper_unittest.cc b/api/video_codecs/test/video_encoder_software_fallback_wrapper_unittest.cc
index 6ac11eb..bb987a6 100644
--- a/api/video_codecs/test/video_encoder_software_fallback_wrapper_unittest.cc
+++ b/api/video_codecs/test/video_encoder_software_fallback_wrapper_unittest.cc
@@ -53,13 +53,16 @@
 using ::testing::Return;
 using ::testing::ValuesIn;
 
-const int kWidth = 320;
-const int kHeight = 240;
-const int kNumCores = 2;
-const uint32_t kFramerate = 30;
-const size_t kMaxPayloadSize = 800;
-const int kLowThreshold = 10;
-const int kHighThreshold = 20;
+constexpr int kWidth = 320;
+constexpr int kHeight = 240;
+constexpr int kNumCores = 2;
+constexpr uint32_t kFramerate = 30;
+constexpr size_t kMaxPayloadSize = 800;
+constexpr int kLowThreshold = 10;
+constexpr int kHighThreshold = 20;
+constexpr int kBitrateKbps = 200;
+constexpr int kMinPixelsPerFrame = 1;
+constexpr char kFieldTrial[] = "WebRTC-VP8-Forced-Fallback-Encoder-v2";
 
 const VideoEncoder::Capabilities kCapabilities(false);
 const VideoEncoder::Settings kSettings(kCapabilities,
@@ -90,6 +93,7 @@
   }
   int callback_count_ = 0;
 };
+
 }  // namespace
 
 class VideoEncoderSoftwareFallbackWrapperTestBase : public ::testing::Test {
@@ -486,12 +490,6 @@
             fake_sw_encoder_->last_video_frame_->height());
 }
 
-namespace {
-const int kBitrateKbps = 200;
-const int kMinPixelsPerFrame = 1;
-const char kFieldTrial[] = "WebRTC-VP8-Forced-Fallback-Encoder-v2";
-}  // namespace
-
 class ForcedFallbackTest : public VideoEncoderSoftwareFallbackWrapperTestBase {
  public:
   explicit ForcedFallbackTest(const Environment& env)
diff --git a/audio/audio_receive_stream_unittest.cc b/audio/audio_receive_stream_unittest.cc
index e969923..c3459b7 100644
--- a/audio/audio_receive_stream_unittest.cc
+++ b/audio/audio_receive_stream_unittest.cc
@@ -65,14 +65,14 @@
   return audio_decode_stats;
 }
 
-const uint32_t kRemoteSsrc = 1234;
-const uint32_t kLocalSsrc = 5678;
-const int kJitterBufferDelay = -7;
-const int kPlayoutBufferDelay = 302;
-const unsigned int kSpeechOutputLevel = 99;
-const double kTotalOutputEnergy = 0.25;
-const double kTotalOutputDuration = 0.5;
-const int64_t kPlayoutNtpTimestampMs = 5678;
+constexpr uint32_t kRemoteSsrc = 1234;
+constexpr uint32_t kLocalSsrc = 5678;
+constexpr int kJitterBufferDelay = -7;
+constexpr int kPlayoutBufferDelay = 302;
+constexpr unsigned int kSpeechOutputLevel = 99;
+constexpr double kTotalOutputEnergy = 0.25;
+constexpr double kTotalOutputDuration = 0.5;
+constexpr int64_t kPlayoutNtpTimestampMs = 5678;
 
 const CallReceiveStatistics kCallStats = {678, 234, -12, 567, 78, 890, 123};
 const std::pair<int, SdpAudioFormat> kReceiveCodec = {
diff --git a/audio/audio_send_stream_unittest.cc b/audio/audio_send_stream_unittest.cc
index 0cc9912..f7a6b8a 100644
--- a/audio/audio_send_stream_unittest.cc
+++ b/audio/audio_send_stream_unittest.cc
@@ -76,28 +76,28 @@
 using ::testing::StrEq;
 using ::testing::WithArg;
 
-const float kTolerance = 0.0001f;
+constexpr float kTolerance = 0.0001f;
 
-const uint32_t kSsrc = 1234;
+constexpr uint32_t kSsrc = 1234;
 const char* kCName = "foo_name";
 const std::array<uint32_t, 2> kCsrcs = {5678, 9012};
-const int kAudioLevelId = 2;
-const int kTransportSequenceNumberId = 4;
-const int32_t kEchoDelayMedian = 254;
-const int32_t kEchoDelayStdDev = -3;
-const double kDivergentFilterFraction = 0.2f;
-const double kEchoReturnLoss = -65;
-const double kEchoReturnLossEnhancement = 101;
-const double kResidualEchoLikelihood = -1.0f;
-const double kResidualEchoLikelihoodMax = 23.0f;
+constexpr int kAudioLevelId = 2;
+constexpr int kTransportSequenceNumberId = 4;
+constexpr int32_t kEchoDelayMedian = 254;
+constexpr int32_t kEchoDelayStdDev = -3;
+constexpr double kDivergentFilterFraction = 0.2f;
+constexpr double kEchoReturnLoss = -65;
+constexpr double kEchoReturnLossEnhancement = 101;
+constexpr double kResidualEchoLikelihood = -1.0f;
+constexpr double kResidualEchoLikelihoodMax = 23.0f;
 const CallSendStatistics kCallStats = {112, 12, 13456, 17890};
 constexpr int kFractionLost = 123;
 constexpr int kCumulativeLost = 567;
 constexpr uint32_t kInterarrivalJitter = 132;
-const int kTelephoneEventPayloadType = 123;
-const int kTelephoneEventPayloadFrequency = 65432;
-const int kTelephoneEventCode = 45;
-const int kTelephoneEventDuration = 6789;
+constexpr int kTelephoneEventPayloadType = 123;
+constexpr int kTelephoneEventPayloadFrequency = 65432;
+constexpr int kTelephoneEventCode = 45;
+constexpr int kTelephoneEventDuration = 6789;
 constexpr int kIsacPayloadType = 103;
 const SdpAudioFormat kIsacFormat = {"isac", 16000, 1};
 const SdpAudioFormat kOpusFormat = {"opus", 48000, 2};
diff --git a/call/adaptation/resource_adaptation_processor_unittest.cc b/call/adaptation/resource_adaptation_processor_unittest.cc
index d698d03..9d5a68b 100644
--- a/call/adaptation/resource_adaptation_processor_unittest.cc
+++ b/call/adaptation/resource_adaptation_processor_unittest.cc
@@ -40,8 +40,8 @@
 
 using ::testing::Eq;
 
-const int kDefaultFrameRate = 30;
-const int kDefaultFrameSize = 1280 * 720;
+constexpr int kDefaultFrameRate = 30;
+constexpr int kDefaultFrameSize = 1280 * 720;
 constexpr TimeDelta kDefaultTimeout = TimeDelta::Seconds(5);
 
 class VideoSourceRestrictionsListenerForTesting
diff --git a/call/adaptation/video_source_restrictions_unittest.cc b/call/adaptation/video_source_restrictions_unittest.cc
index aac7654..4f83abb 100644
--- a/call/adaptation/video_source_restrictions_unittest.cc
+++ b/call/adaptation/video_source_restrictions_unittest.cc
@@ -18,7 +18,7 @@
 
 namespace {
 
-const size_t kHdPixels = 1280 * 720;
+constexpr size_t kHdPixels = 1280 * 720;
 
 const VideoSourceRestrictions kUnlimited;
 const VideoSourceRestrictions k15fps(std::nullopt, std::nullopt, 15.0);
diff --git a/call/adaptation/video_stream_adapter_unittest.cc b/call/adaptation/video_stream_adapter_unittest.cc
index 16d070b..763ad2f 100644
--- a/call/adaptation/video_stream_adapter_unittest.cc
+++ b/call/adaptation/video_stream_adapter_unittest.cc
@@ -38,14 +38,14 @@
 
 namespace {
 
-const int kBalancedHighResolutionPixels = 1280 * 720;
-const int kBalancedHighFrameRateFps = 30;
+constexpr int kBalancedHighResolutionPixels = 1280 * 720;
+constexpr int kBalancedHighFrameRateFps = 30;
 
-const int kBalancedMediumResolutionPixels = 640 * 480;
-const int kBalancedMediumFrameRateFps = 20;
+constexpr int kBalancedMediumResolutionPixels = 640 * 480;
+constexpr int kBalancedMediumFrameRateFps = 20;
 
-const int kBalancedLowResolutionPixels = 320 * 240;
-const int kBalancedLowFrameRateFps = 10;
+constexpr int kBalancedLowResolutionPixels = 320 * 240;
+constexpr int kBalancedLowFrameRateFps = 10;
 
 std::string BalancedFieldTrialConfig() {
   return "WebRTC-Video-BalancedDegradationSettings/pixels:" +
diff --git a/call/bitrate_allocator_unittest.cc b/call/bitrate_allocator_unittest.cc
index 13f00ab..b4bb332 100644
--- a/call/bitrate_allocator_unittest.cc
+++ b/call/bitrate_allocator_unittest.cc
@@ -100,7 +100,7 @@
 };
 
 constexpr int64_t kDefaultProbingIntervalMs = 3000;
-const double kDefaultBitratePriority = 1.0;
+constexpr double kDefaultBitratePriority = 1.0;
 
 TargetTransferRate CreateTargetRateMessage(uint32_t target_bitrate_bps,
                                            uint8_t fraction_loss,
diff --git a/call/rtp_payload_params_unittest.cc b/call/rtp_payload_params_unittest.cc
index e38235f..377a0e2 100644
--- a/call/rtp_payload_params_unittest.cc
+++ b/call/rtp_payload_params_unittest.cc
@@ -54,14 +54,14 @@
 
 using GenericDescriptorInfo = RTPVideoHeader::GenericDescriptorInfo;
 
-const uint32_t kSsrc1 = 12345;
-const uint32_t kSsrc2 = 23456;
-const int16_t kPictureId = 123;
-const int16_t kTl0PicIdx = 20;
-const uint8_t kTemporalIdx = 1;
-const int16_t kInitialPictureId1 = 222;
-const int16_t kInitialTl0PicIdx1 = 99;
-const int64_t kDontCare = 0;
+constexpr uint32_t kSsrc1 = 12345;
+constexpr uint32_t kSsrc2 = 23456;
+constexpr int16_t kPictureId = 123;
+constexpr int16_t kTl0PicIdx = 20;
+constexpr uint8_t kTemporalIdx = 1;
+constexpr int16_t kInitialPictureId1 = 222;
+constexpr int16_t kInitialTl0PicIdx1 = 99;
+constexpr int64_t kDontCare = 0;
 
 TEST(RtpPayloadParamsTest, InfoMappedToRtpVideoHeader_Vp8) {
   RtpPayloadState state2;
diff --git a/call/rtp_video_sender_unittest.cc b/call/rtp_video_sender_unittest.cc
index 9465967..150f775 100644
--- a/call/rtp_video_sender_unittest.cc
+++ b/call/rtp_video_sender_unittest.cc
@@ -85,19 +85,19 @@
 using ::testing::SaveArg;
 using ::testing::SizeIs;
 
-const int8_t kPayloadType = 96;
-const int8_t kPayloadType2 = 98;
-const uint32_t kSsrc1 = 12345;
-const uint32_t kSsrc2 = 23456;
-const uint32_t kRtxSsrc1 = 34567;
-const uint32_t kRtxSsrc2 = 45678;
-const int16_t kInitialPictureId1 = 222;
-const int16_t kInitialPictureId2 = 44;
-const int16_t kInitialTl0PicIdx1 = 99;
-const int16_t kInitialTl0PicIdx2 = 199;
-const int64_t kRetransmitWindowSizeMs = 500;
-const int kTransportsSequenceExtensionId = 7;
-const int kDependencyDescriptorExtensionId = 8;
+constexpr int8_t kPayloadType = 96;
+constexpr int8_t kPayloadType2 = 98;
+constexpr uint32_t kSsrc1 = 12345;
+constexpr uint32_t kSsrc2 = 23456;
+constexpr uint32_t kRtxSsrc1 = 34567;
+constexpr uint32_t kRtxSsrc2 = 45678;
+constexpr int16_t kInitialPictureId1 = 222;
+constexpr int16_t kInitialPictureId2 = 44;
+constexpr int16_t kInitialTl0PicIdx1 = 99;
+constexpr int16_t kInitialTl0PicIdx2 = 199;
+constexpr int64_t kRetransmitWindowSizeMs = 500;
+constexpr int kTransportsSequenceExtensionId = 7;
+constexpr int kDependencyDescriptorExtensionId = 8;
 
 class MockRtcpIntraFrameObserver : public RtcpIntraFrameObserver {
  public:
diff --git a/common_audio/channel_buffer_unittest.cc b/common_audio/channel_buffer_unittest.cc
index a8b6489..5a0708d 100644
--- a/common_audio/channel_buffer_unittest.cc
+++ b/common_audio/channel_buffer_unittest.cc
@@ -17,9 +17,9 @@
 
 namespace {
 
-const size_t kNumFrames = 480u;
-const size_t kStereo = 2u;
-const size_t kMono = 1u;
+constexpr size_t kNumFrames = 480u;
+constexpr size_t kStereo = 2u;
+constexpr size_t kMono = 1u;
 
 void ExpectNumChannels(const IFChannelBuffer& ifchb, size_t num_channels) {
   EXPECT_EQ(ifchb.ibuf_const()->num_channels(), num_channels);
diff --git a/common_audio/resampler/push_sinc_resampler_unittest.cc b/common_audio/resampler/push_sinc_resampler_unittest.cc
index d3cfe9d..30ebfb2 100644
--- a/common_audio/resampler/push_sinc_resampler_unittest.cc
+++ b/common_audio/resampler/push_sinc_resampler_unittest.cc
@@ -25,7 +25,7 @@
 namespace {
 
 // Almost all conversions have an RMS error of around -14 dbFS.
-const double kResamplingRMSError = -14.42;
+constexpr double kResamplingRMSError = -14.42;
 
 // Used to convert errors to dbFS.
 template <typename T>
diff --git a/common_audio/resampler/resampler_unittest.cc b/common_audio/resampler/resampler_unittest.cc
index b8043ec..5a919c0 100644
--- a/common_audio/resampler/resampler_unittest.cc
+++ b/common_audio/resampler/resampler_unittest.cc
@@ -21,11 +21,11 @@
 namespace {
 
 // Rates we must support.
-const int kMaxRate = 96000;
-const int kRates[] = {8000, 16000, 32000, 44000, 48000, kMaxRate};
-const size_t kRatesSize = sizeof(kRates) / sizeof(*kRates);
-const int kMaxChannels = 2;
-const size_t kDataSize = static_cast<size_t>(kMaxChannels * kMaxRate / 100);
+constexpr int kMaxRate = 96000;
+constexpr int kRates[] = {8000, 16000, 32000, 44000, 48000, kMaxRate};
+constexpr size_t kRatesSize = sizeof(kRates) / sizeof(*kRates);
+constexpr int kMaxChannels = 2;
+constexpr size_t kDataSize = static_cast<size_t>(kMaxChannels * kMaxRate / 100);
 
 // TODO(andrew): should we be supporting these combinations?
 bool ValidRates(int in_rate, int out_rate) {
diff --git a/common_audio/signal_processing/real_fft_unittest.cc b/common_audio/signal_processing/real_fft_unittest.cc
index 7cabe7d..4162e15 100644
--- a/common_audio/signal_processing/real_fft_unittest.cc
+++ b/common_audio/signal_processing/real_fft_unittest.cc
@@ -17,16 +17,16 @@
 namespace {
 
 // FFT order.
-const int kOrder = 5;
+constexpr int kOrder = 5;
 // Lengths for real FFT's time and frequency bufffers.
 // For N-point FFT, the length requirements from API are N and N+2 respectively.
-const int kTimeDataLength = 1 << kOrder;
-const int kFreqDataLength = (1 << kOrder) + 2;
+constexpr int kTimeDataLength = 1 << kOrder;
+constexpr int kFreqDataLength = (1 << kOrder) + 2;
 // For complex FFT's time and freq buffer. The implementation requires
 // 2*N 16-bit words.
-const int kComplexFftDataLength = 2 << kOrder;
+constexpr int kComplexFftDataLength = 2 << kOrder;
 // Reference data for time signal.
-const int16_t kRefData[kTimeDataLength] = {
+constexpr int16_t kRefData[kTimeDataLength] = {
     11739,  6848,  -8688,  31980, -30295, 25242, 27085,  19410,
     -26299, 15607, -10791, 11778, -23819, 14498, -25772, 10076,
     1173,   6848,  -8688,  31980, -30295, 2522,  27085,  19410,
diff --git a/common_audio/vad/vad_filterbank_unittest.cc b/common_audio/vad/vad_filterbank_unittest.cc
index 51d8d0f..18e9f70 100644
--- a/common_audio/vad/vad_filterbank_unittest.cc
+++ b/common_audio/vad/vad_filterbank_unittest.cc
@@ -21,7 +21,7 @@
 namespace webrtc {
 namespace test {
 
-const int kNumValidFrameLengths = 3;
+constexpr int kNumValidFrameLengths = 3;
 
 TEST_F(VadTest, vad_filterbank) {
   VadInstT* self = reinterpret_cast<VadInstT*>(malloc(sizeof(VadInstT)));
diff --git a/common_video/h264/pps_parser_unittest.cc b/common_video/h264/pps_parser_unittest.cc
index e3a9c08..e0c1480 100644
--- a/common_video/h264/pps_parser_unittest.cc
+++ b/common_video/h264/pps_parser_unittest.cc
@@ -26,14 +26,14 @@
 
 namespace {
 // Contains enough of the image slice to contain slice QP.
-const uint8_t kH264BitstreamChunk[] = {
+constexpr uint8_t kH264BitstreamChunk[] = {
     0x00, 0x00, 0x00, 0x01, 0x67, 0x42, 0x80, 0x20, 0xda, 0x01, 0x40, 0x16,
     0xe8, 0x06, 0xd0, 0xa1, 0x35, 0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x06,
     0xe2, 0x00, 0x00, 0x00, 0x01, 0x65, 0xb8, 0x40, 0xf0, 0x8c, 0x03, 0xf2,
     0x75, 0x67, 0xad, 0x41, 0x64, 0x24, 0x0e, 0xa0, 0xb2, 0x12, 0x1e, 0xf8,
 };
-const size_t kPpsBufferMaxSize = 256;
-const uint32_t kIgnored = 0;
+constexpr size_t kPpsBufferMaxSize = 256;
+constexpr uint32_t kIgnored = 0;
 }  // namespace
 
 void WritePps(const PpsParser::PpsState& pps,
diff --git a/common_video/h264/sps_vui_rewriter_unittest.cc b/common_video/h264/sps_vui_rewriter_unittest.cc
index 854196a..cc88531 100644
--- a/common_video/h264/sps_vui_rewriter_unittest.cc
+++ b/common_video/h264/sps_vui_rewriter_unittest.cc
@@ -35,15 +35,15 @@
   kRewriteRequired_VuiSuboptimal,
 };
 
-const size_t kSpsBufferMaxSize = 256;
-const size_t kWidth = 640;
-const size_t kHeight = 480;
+constexpr size_t kSpsBufferMaxSize = 256;
+constexpr size_t kWidth = 640;
+constexpr size_t kHeight = 480;
 
-const uint8_t kStartSequence[] = {0x00, 0x00, 0x00, 0x01};
-const uint8_t kAud[] = {H264::NaluType::kAud, 0x09, 0x10};
-const uint8_t kSpsNaluType[] = {H264::NaluType::kSps};
-const uint8_t kIdr1[] = {H264::NaluType::kIdr, 0xFF, 0x00, 0x00, 0x04};
-const uint8_t kIdr2[] = {H264::NaluType::kIdr, 0xFF, 0x00, 0x11};
+constexpr uint8_t kStartSequence[] = {0x00, 0x00, 0x00, 0x01};
+constexpr uint8_t kAud[] = {H264::NaluType::kAud, 0x09, 0x10};
+constexpr uint8_t kSpsNaluType[] = {H264::NaluType::kSps};
+constexpr uint8_t kIdr1[] = {H264::NaluType::kIdr, 0xFF, 0x00, 0x00, 0x04};
+constexpr uint8_t kIdr2[] = {H264::NaluType::kIdr, 0xFF, 0x00, 0x11};
 
 struct VuiHeader {
   uint32_t vui_parameters_present_flag;
diff --git a/common_video/h265/h265_bitstream_parser_unittest.cc b/common_video/h265/h265_bitstream_parser_unittest.cc
index 754300b..ec629ea 100644
--- a/common_video/h265/h265_bitstream_parser_unittest.cc
+++ b/common_video/h265/h265_bitstream_parser_unittest.cc
@@ -24,7 +24,7 @@
 namespace webrtc {
 
 // VPS/SPS/PPS part of below chunk.
-const uint8_t kH265VpsSpsPps[] = {
+constexpr uint8_t kH265VpsSpsPps[] = {
     0x00, 0x00, 0x00, 0x01, 0x40, 0x01, 0x0c, 0x01, 0xff, 0xff, 0x04, 0x08,
     0x00, 0x00, 0x03, 0x00, 0x9d, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x78,
     0x95, 0x98, 0x09, 0x00, 0x00, 0x00, 0x01, 0x42, 0x01, 0x01, 0x04, 0x08,
@@ -34,7 +34,7 @@
     0x00, 0x00, 0x00, 0x01, 0x44, 0x01, 0xc1, 0x72, 0xb4, 0x62, 0x40};
 
 // Contains enough of the image slice to contain slice QP.
-const uint8_t kH265BitstreamChunk[] = {
+constexpr uint8_t kH265BitstreamChunk[] = {
     0x00, 0x00, 0x00, 0x01, 0x40, 0x01, 0x0c, 0x01, 0xff, 0xff, 0x04, 0x08,
     0x00, 0x00, 0x03, 0x00, 0x9d, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x78,
     0x95, 0x98, 0x09, 0x00, 0x00, 0x00, 0x01, 0x42, 0x01, 0x01, 0x04, 0x08,
@@ -48,13 +48,13 @@
 };
 
 // Contains enough of the image slice to contain slice QP.
-const uint8_t kH265BitstreamNextImageSliceChunk[] = {
+constexpr uint8_t kH265BitstreamNextImageSliceChunk[] = {
     0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xe0, 0x24, 0xbf, 0x82, 0x05,
     0x21, 0x12, 0x22, 0xa3, 0x29, 0xb4, 0x21, 0x91, 0xa1, 0xaa, 0x40,
 };
 
 // Contains enough of the image slice to contain slice QP.
-const uint8_t kH265SliceChunk[] = {
+constexpr uint8_t kH265SliceChunk[] = {
     0xa4, 0x04, 0x55, 0xa2, 0x6d, 0xce, 0xc0, 0xc3, 0xed, 0x0b, 0xac, 0xbc,
     0x00, 0xc4, 0x44, 0x2e, 0xf7, 0x55, 0xfd, 0x05, 0x86, 0x92, 0x19, 0xdf,
     0x58, 0xec, 0x38, 0x36, 0xb7, 0x7c, 0x00, 0x15, 0x33, 0x78, 0x03, 0x67,
@@ -62,13 +62,13 @@
 };
 
 // Contains enough of data for the second slice of a frame.
-const uint8_t kH265SecondSliceChunkInAFrame[] = {
+constexpr uint8_t kH265SecondSliceChunkInAFrame[] = {
     0x02, 0x01, 0x23, 0xfc, 0x20, 0x22, 0xad, 0x13, 0x68, 0xce, 0xc3, 0x5a,
     0x00, 0xdc, 0xeb, 0x86, 0x4b, 0x0b, 0xa7, 0x6a, 0xe1, 0x9c, 0x5c, 0xea,
 };
 
 // Contains short term ref pic set slice to verify Log2Ceiling path.
-const uint8_t kH265SliceStrChunk[] = {
+constexpr uint8_t kH265SliceStrChunk[] = {
     0x00, 0x00, 0x00, 0x01, 0x40, 0x01, 0x0c, 0x01, 0xff, 0xff, 0x01, 0x00,
     0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00,
     0x00, 0x99, 0x94, 0x90, 0x24, 0x00, 0x00, 0x00, 0x01, 0x42, 0x01, 0x01,
@@ -82,7 +82,7 @@
 };
 
 // Contains enough of the image slice to contain invalid slice QP -52.
-const uint8_t kH265BitstreamInvalidQPChunk[] = {
+constexpr uint8_t kH265BitstreamInvalidQPChunk[] = {
     0x00, 0x00, 0x00, 0x01, 0x40, 0x01, 0x0c, 0x01, 0xff, 0xff, 0x04, 0x08,
     0x00, 0x00, 0x03, 0x00, 0x9d, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x78,
     0x95, 0x98, 0x09, 0x00, 0x00, 0x00, 0x01, 0x42, 0x01, 0x01, 0x04, 0x08,
@@ -94,7 +94,7 @@
 };
 
 // Contains enough of the image slice to contain invalid slice QP 52.
-const uint8_t kH265BitstreamInvalidQPChunk52[] = {
+constexpr uint8_t kH265BitstreamInvalidQPChunk52[] = {
     0x00, 0x00, 0x00, 0x01, 0x40, 0x01, 0x0c, 0x01, 0xff, 0xff, 0x04, 0x08,
     0x00, 0x00, 0x03, 0x00, 0x9d, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x78,
     0x95, 0x98, 0x09, 0x00, 0x00, 0x00, 0x01, 0x42, 0x01, 0x01, 0x04, 0x08,
@@ -108,7 +108,7 @@
 // Bitstream that contains pred_weight_table. Contains enough data to parse
 // over pred_weight_table for slice QP. This is bear.hevc from Chromium source,
 // used for H265 hardware decoder's parser test, with some slices truncated.
-const uint8_t kH265BitstreamWithPredWeightTable[] = {
+constexpr uint8_t kH265BitstreamWithPredWeightTable[] = {
     0x00, 0x00, 0x00, 0x01, 0x40, 0x01, 0x0c, 0x01, 0xff, 0xff, 0x01, 0x60,
     0x00, 0x00, 0x03, 0x00, 0x80, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00,
     0x3c, 0x95, 0xc0, 0x90, 0x00, 0x00, 0x00, 0x01, 0x42, 0x01, 0x01, 0x01,
diff --git a/media/base/sdp_video_format_utils_unittest.cc b/media/base/sdp_video_format_utils_unittest.cc
index cde1e30..f94aff3 100644
--- a/media/base/sdp_video_format_utils_unittest.cc
+++ b/media/base/sdp_video_format_utils_unittest.cc
@@ -19,11 +19,11 @@
 namespace webrtc {
 namespace {
 // Max frame rate for VP8 and VP9 video.
-const char kVPxFmtpMaxFrameRate[] = "max-fr";
+constexpr char kVPxFmtpMaxFrameRate[] = "max-fr";
 // Max frame size for VP8 and VP9 video.
-const char kVPxFmtpMaxFrameSize[] = "max-fs";
+constexpr char kVPxFmtpMaxFrameSize[] = "max-fs";
 // Nonstandard per-layer PLI for video.
-const char kCodecParamPerLayerPictureLossIndication[] =
+constexpr char kCodecParamPerLayerPictureLossIndication[] =
     "x-google-per-layer-pli";
 }  // namespace
 
diff --git a/media/engine/webrtc_video_engine_unittest.cc b/media/engine/webrtc_video_engine_unittest.cc
index 5f22336..c9b1c8d 100644
--- a/media/engine/webrtc_video_engine_unittest.cc
+++ b/media/engine/webrtc_video_engine_unittest.cc
@@ -152,26 +152,26 @@
 using ::webrtc::test::FunctionVideoDecoderFactory;
 using ::webrtc::test::RtcpPacketParser;
 
-const uint8_t kRedRtxPayloadType = 125;
+constexpr uint8_t kRedRtxPayloadType = 125;
 
-const uint32_t kSsrc = 1234u;
-const uint32_t kSsrcs4[] = {1, 2, 3, 4};
-const int kVideoWidth = 640;
-const int kVideoHeight = 360;
-const int kFramerate = 30;
+constexpr uint32_t kSsrc = 1234u;
+constexpr uint32_t kSsrcs4[] = {1, 2, 3, 4};
+constexpr int kVideoWidth = 640;
+constexpr int kVideoHeight = 360;
+constexpr int kFramerate = 30;
 constexpr TimeDelta kFrameDuration = TimeDelta::Millis(1000 / kFramerate);
 
-const uint32_t kSsrcs1[] = {1};
-const uint32_t kSsrcs3[] = {1, 2, 3};
-const uint32_t kRtxSsrcs1[] = {4};
-const uint32_t kFlexfecSsrc = 5;
-const uint32_t kIncomingUnsignalledSsrc = 0xC0FFEE;
-const int64_t kUnsignalledReceiveStreamCooldownMs = 500;
+constexpr uint32_t kSsrcs1[] = {1};
+constexpr uint32_t kSsrcs3[] = {1, 2, 3};
+constexpr uint32_t kRtxSsrcs1[] = {4};
+constexpr uint32_t kFlexfecSsrc = 5;
+constexpr uint32_t kIncomingUnsignalledSsrc = 0xC0FFEE;
+constexpr int64_t kUnsignalledReceiveStreamCooldownMs = 500;
 
 constexpr uint32_t kRtpHeaderSize = 12;
 constexpr size_t kNumSimulcastStreams = 3;
 
-const char kUnsupportedExtensionName[] =
+constexpr char kUnsupportedExtensionName[] =
     "urn:ietf:params:rtp-hdrext:unsupported";
 
 Codec RemoveFeedbackParams(Codec&& codec) {
diff --git a/media/engine/webrtc_voice_engine_unittest.cc b/media/engine/webrtc_voice_engine_unittest.cc
index 6dfe2bb..b30d44a 100644
--- a/media/engine/webrtc_voice_engine_unittest.cc
+++ b/media/engine/webrtc_voice_engine_unittest.cc
@@ -122,13 +122,13 @@
 const webrtc::Codec kUnknownCodec =
     webrtc::CreateAudioCodec(127, "XYZ", 32000, 1);
 
-const uint32_t kSsrc0 = 0;
-const uint32_t kSsrc1 = 1;
-const uint32_t kSsrcX = 0x99;
-const uint32_t kSsrcY = 0x17;
-const uint32_t kSsrcZ = 0x42;
-const uint32_t kSsrcW = 0x02;
-const uint32_t kSsrcs4[] = {11, 200, 30, 44};
+constexpr uint32_t kSsrc0 = 0;
+constexpr uint32_t kSsrc1 = 1;
+constexpr uint32_t kSsrcX = 0x99;
+constexpr uint32_t kSsrcY = 0x17;
+constexpr uint32_t kSsrcZ = 0x42;
+constexpr uint32_t kSsrcW = 0x02;
+constexpr uint32_t kSsrcs4[] = {11, 200, 30, 44};
 
 constexpr int kRtpHistoryMs = 5000;
 
diff --git a/modules/audio_coding/codecs/cng/audio_encoder_cng_unittest.cc b/modules/audio_coding/codecs/cng/audio_encoder_cng_unittest.cc
index 4f5e3af..9ba69d1 100644
--- a/modules/audio_coding/codecs/cng/audio_encoder_cng_unittest.cc
+++ b/modules/audio_coding/codecs/cng/audio_encoder_cng_unittest.cc
@@ -41,9 +41,9 @@
 namespace webrtc {
 
 namespace {
-const size_t kMaxNumSamples = 48 * 10 * 2;  // 10 ms @ 48 kHz stereo.
-const size_t kMockReturnEncodedBytes = 17;
-const int kCngPayloadType = 18;
+constexpr size_t kMaxNumSamples = 48 * 10 * 2;  // 10 ms @ 48 kHz stereo.
+constexpr size_t kMockReturnEncodedBytes = 17;
+constexpr int kCngPayloadType = 18;
 }  // namespace
 
 class AudioEncoderCngTest : public ::testing::Test {
diff --git a/modules/audio_coding/codecs/opus/opus_unittest.cc b/modules/audio_coding/codecs/opus/opus_unittest.cc
index af00347..3d86918 100644
--- a/modules/audio_coding/codecs/opus/opus_unittest.cc
+++ b/modules/audio_coding/codecs/opus/opus_unittest.cc
@@ -113,7 +113,7 @@
 using ::testing::Values;
 
 // Maximum number of bytes in output bitstream.
-const size_t kMaxBytes = 2000;
+constexpr size_t kMaxBytes = 2000;
 
 class OpusTest
     : public TestWithParam<::testing::tuple<size_t, int, bool, int, int>> {
diff --git a/modules/audio_coding/codecs/red/audio_encoder_copy_red_unittest.cc b/modules/audio_coding/codecs/red/audio_encoder_copy_red_unittest.cc
index 0349926..14d6e73 100644
--- a/modules/audio_coding/codecs/red/audio_encoder_copy_red_unittest.cc
+++ b/modules/audio_coding/codecs/red/audio_encoder_copy_red_unittest.cc
@@ -43,8 +43,8 @@
 namespace webrtc {
 
 namespace {
-const size_t kMaxNumSamples = 48 * 10 * 2;  // 10 ms @ 48 kHz stereo.
-const size_t kRedLastHeaderLength =
+constexpr size_t kMaxNumSamples = 48 * 10 * 2;  // 10 ms @ 48 kHz stereo.
+constexpr size_t kRedLastHeaderLength =
     1;  // 1 byte RED header for the last element.
 }  // namespace
 
diff --git a/modules/audio_coding/neteq/expand_unittest.cc b/modules/audio_coding/neteq/expand_unittest.cc
index 6e2c283..c641c1c 100644
--- a/modules/audio_coding/neteq/expand_unittest.cc
+++ b/modules/audio_coding/neteq/expand_unittest.cc
@@ -28,6 +28,28 @@
 
 namespace webrtc {
 
+namespace {
+class FakeStatisticsCalculator : public StatisticsCalculator {
+ public:
+  FakeStatisticsCalculator(TickTimer* tick_timer)
+      : StatisticsCalculator(tick_timer) {}
+
+  void LogDelayedPacketOutageEvent(int num_samples, int /* fs_hz */) override {
+    last_outage_duration_samples_ = num_samples;
+  }
+
+  int last_outage_duration_samples() const {
+    return last_outage_duration_samples_;
+  }
+
+ private:
+  int last_outage_duration_samples_ = 0;
+};
+
+// This is the same size that is given to the SyncBuffer object in NetEq.
+constexpr size_t kNetEqSyncBufferLengthMs = 720;
+}  // namespace
+
 TEST(Expand, CreateAndDestroy) {
   int fs = 8000;
   size_t channels = 1;
@@ -54,28 +76,6 @@
   delete expand;
 }
 
-namespace {
-class FakeStatisticsCalculator : public StatisticsCalculator {
- public:
-  FakeStatisticsCalculator(TickTimer* tick_timer)
-      : StatisticsCalculator(tick_timer) {}
-
-  void LogDelayedPacketOutageEvent(int num_samples, int /* fs_hz */) override {
-    last_outage_duration_samples_ = num_samples;
-  }
-
-  int last_outage_duration_samples() const {
-    return last_outage_duration_samples_;
-  }
-
- private:
-  int last_outage_duration_samples_ = 0;
-};
-
-// This is the same size that is given to the SyncBuffer object in NetEq.
-const size_t kNetEqSyncBufferLengthMs = 720;
-}  // namespace
-
 class ExpandTest : public ::testing::Test {
  protected:
   ExpandTest()
diff --git a/modules/audio_coding/neteq/merge_unittest.cc b/modules/audio_coding/neteq/merge_unittest.cc
index eb5ee93..140b3c7 100644
--- a/modules/audio_coding/neteq/merge_unittest.cc
+++ b/modules/audio_coding/neteq/merge_unittest.cc
@@ -43,7 +43,7 @@
 
 namespace {
 // This is the same size that is given to the SyncBuffer object in NetEq.
-const size_t kNetEqSyncBufferLengthMs = 720;
+constexpr size_t kNetEqSyncBufferLengthMs = 720;
 }  // namespace
 
 class MergeTest : public testing::TestWithParam<size_t> {
diff --git a/modules/audio_coding/neteq/nack_tracker_unittest.cc b/modules/audio_coding/neteq/nack_tracker_unittest.cc
index 1aca036..2830a5b 100644
--- a/modules/audio_coding/neteq/nack_tracker_unittest.cc
+++ b/modules/audio_coding/neteq/nack_tracker_unittest.cc
@@ -23,10 +23,10 @@
 namespace webrtc {
 namespace {
 
-const int kSampleRateHz = 16000;
-const int kPacketSizeMs = 30;
-const uint32_t kTimestampIncrement = 480;  // 30 ms.
-const int64_t kShortRoundTripTimeMs = 1;
+constexpr int kSampleRateHz = 16000;
+constexpr int kPacketSizeMs = 30;
+constexpr uint32_t kTimestampIncrement = 480;  // 30 ms.
+constexpr int64_t kShortRoundTripTimeMs = 1;
 
 bool IsNackListCorrect(const std::vector<uint16_t>& nack_list,
                        const uint16_t* lost_sequence_numbers,
diff --git a/modules/audio_coding/neteq/time_stretch_unittest.cc b/modules/audio_coding/neteq/time_stretch_unittest.cc
index 539312a..0cf9fd3 100644
--- a/modules/audio_coding/neteq/time_stretch_unittest.cc
+++ b/modules/audio_coding/neteq/time_stretch_unittest.cc
@@ -28,7 +28,7 @@
 namespace webrtc {
 
 namespace {
-const size_t kNumChannels = 1;
+constexpr size_t kNumChannels = 1;
 }  // namespace
 
 TEST(TimeStretch, CreateAndDestroy) {
diff --git a/modules/audio_coding/neteq/tools/packet_unittest.cc b/modules/audio_coding/neteq/tools/packet_unittest.cc
index df516d8..f90ca5f 100644
--- a/modules/audio_coding/neteq/tools/packet_unittest.cc
+++ b/modules/audio_coding/neteq/tools/packet_unittest.cc
@@ -25,7 +25,7 @@
 namespace test {
 
 namespace {
-const int kHeaderLengthBytes = 12;
+constexpr int kHeaderLengthBytes = 12;
 
 void MakeRtpHeader(int payload_type,
                    int seq_number,
diff --git a/modules/audio_device/fine_audio_buffer_unittest.cc b/modules/audio_device/fine_audio_buffer_unittest.cc
index 531f646..beb6ae3 100644
--- a/modules/audio_device/fine_audio_buffer_unittest.cc
+++ b/modules/audio_device/fine_audio_buffer_unittest.cc
@@ -28,9 +28,9 @@
 
 namespace webrtc {
 
-const int kSampleRate = 44100;
-const int kChannels = 2;
-const int kSamplesPer10Ms = kSampleRate * 10 / 1000;
+constexpr int kSampleRate = 44100;
+constexpr int kChannels = 2;
+constexpr int kSamplesPer10Ms = kSampleRate * 10 / 1000;
 
 // The fake audio data is 0,1,..SCHAR_MAX-1,0,1,... This is to make it easy
 // to detect errors. This function verifies that the buffers contain such data.
diff --git a/modules/audio_mixer/audio_mixer_impl_unittest.cc b/modules/audio_mixer/audio_mixer_impl_unittest.cc
index 82d2419..9cd6b42 100644
--- a/modules/audio_mixer/audio_mixer_impl_unittest.cc
+++ b/modules/audio_mixer/audio_mixer_impl_unittest.cc
@@ -45,7 +45,7 @@
 namespace {
 
 constexpr int kDefaultSampleRateHz = 48000;
-const char kSourceCountHistogramName[] =
+constexpr char kSourceCountHistogramName[] =
     "WebRTC.Audio.AudioMixer.NewHighestSourceCount";
 
 // Utility function that resets the frame member variables with
diff --git a/modules/audio_processing/agc/loudness_histogram_unittest.cc b/modules/audio_processing/agc/loudness_histogram_unittest.cc
index a4f1020..6e2157b 100644
--- a/modules/audio_processing/agc/loudness_histogram_unittest.cc
+++ b/modules/audio_processing/agc/loudness_histogram_unittest.cc
@@ -33,7 +33,7 @@
   double loudness;
 };
 
-const double kRelativeErrTol = 1e-10;
+constexpr double kRelativeErrTol = 1e-10;
 
 class LoudnessHistogramTest : public ::testing::Test {
  protected:
diff --git a/modules/audio_processing/audio_buffer_unittest.cc b/modules/audio_processing/audio_buffer_unittest.cc
index 19711c6..b2b928b 100644
--- a/modules/audio_processing/audio_buffer_unittest.cc
+++ b/modules/audio_processing/audio_buffer_unittest.cc
@@ -22,9 +22,9 @@
 
 namespace {
 
-const size_t kSampleRateHz = 48000u;
-const size_t kStereo = 2u;
-const size_t kMono = 1u;
+constexpr size_t kSampleRateHz = 48000u;
+constexpr size_t kStereo = 2u;
+constexpr size_t kMono = 1u;
 
 void ExpectNumChannels(const AudioBuffer& ab, size_t num_channels) {
   EXPECT_EQ(ab.num_channels(), num_channels);
diff --git a/modules/audio_processing/audio_processing_unittest.cc b/modules/audio_processing/audio_processing_unittest.cc
index 6882031..61f00de 100644
--- a/modules/audio_processing/audio_processing_unittest.cc
+++ b/modules/audio_processing/audio_processing_unittest.cc
@@ -85,7 +85,7 @@
 
 // All sample rates used by APM internally during processing. Other input /
 // output rates are resampled to / from one of these.
-const int kProcessSampleRates[] = {16000, 32000, 48000};
+constexpr int kProcessSampleRates[] = {16000, 32000, 48000};
 
 enum StreamDirection { kForward = 0, kReverse };
 
diff --git a/modules/audio_processing/echo_control_mobile_bit_exact_unittest.cc b/modules/audio_processing/echo_control_mobile_bit_exact_unittest.cc
index 4491054..3b495a0 100644
--- a/modules/audio_processing/echo_control_mobile_bit_exact_unittest.cc
+++ b/modules/audio_processing/echo_control_mobile_bit_exact_unittest.cc
@@ -26,7 +26,7 @@
 
 // TODO(peah): Increase the number of frames to proces when the issue of
 // non repeatable test results have been found.
-const int kNumFramesToProcess = 200;
+constexpr int kNumFramesToProcess = 200;
 
 void SetupComponent(int sample_rate_hz,
                     EchoControlMobileImpl::RoutingMode routing_mode,
diff --git a/modules/audio_processing/gain_control_unittest.cc b/modules/audio_processing/gain_control_unittest.cc
index 050d220..7db0cd3 100644
--- a/modules/audio_processing/gain_control_unittest.cc
+++ b/modules/audio_processing/gain_control_unittest.cc
@@ -26,7 +26,7 @@
 namespace webrtc {
 namespace {
 
-const int kNumFramesToProcess = 100;
+constexpr int kNumFramesToProcess = 100;
 
 void ProcessOneFrame(int sample_rate_hz,
                      AudioBuffer* render_audio_buffer,
diff --git a/modules/audio_processing/splitting_filter_unittest.cc b/modules/audio_processing/splitting_filter_unittest.cc
index 9c6a793..773f4c9 100644
--- a/modules/audio_processing/splitting_filter_unittest.cc
+++ b/modules/audio_processing/splitting_filter_unittest.cc
@@ -21,8 +21,8 @@
 namespace webrtc {
 namespace {
 
-const size_t kSamplesPer16kHzChannel = 160;
-const size_t kSamplesPer48kHzChannel = 480;
+constexpr size_t kSamplesPer16kHzChannel = 160;
+constexpr size_t kSamplesPer48kHzChannel = 480;
 
 }  // namespace
 
diff --git a/modules/audio_processing/utility/delay_estimator_unittest.cc b/modules/audio_processing/utility/delay_estimator_unittest.cc
index ba77688f..11b28fb 100644
--- a/modules/audio_processing/utility/delay_estimator_unittest.cc
+++ b/modules/audio_processing/utility/delay_estimator_unittest.cc
@@ -30,11 +30,11 @@
 // Length of binary spectrum sequence.
 constexpr int kSequenceLength = 400;
 
-const int kDifferentHistorySize = 3;
-const int kDifferentLookahead = 1;
+constexpr int kDifferentHistorySize = 3;
+constexpr int kDifferentLookahead = 1;
 
-const int kEnable[] = {0, 1};
-const size_t kSizeEnable = sizeof(kEnable) / sizeof(*kEnable);
+constexpr int kEnable[] = {0, 1};
+constexpr size_t kSizeEnable = sizeof(kEnable) / sizeof(*kEnable);
 
 class DelayEstimatorTest : public ::testing::Test {
  protected:
diff --git a/modules/audio_processing/vad/voice_activity_detector_unittest.cc b/modules/audio_processing/vad/voice_activity_detector_unittest.cc
index 5922c8b..410209e 100644
--- a/modules/audio_processing/vad/voice_activity_detector_unittest.cc
+++ b/modules/audio_processing/vad/voice_activity_detector_unittest.cc
@@ -24,11 +24,11 @@
 namespace webrtc {
 namespace {
 
-const int kStartTimeSec = 16;
-const float kMeanSpeechProbability = 0.3f;
-const float kMaxNoiseProbability = 0.1f;
-const size_t kNumChunks = 300u;
-const size_t kNumChunksPerIsacBlock = 3;
+constexpr int kStartTimeSec = 16;
+constexpr float kMeanSpeechProbability = 0.3f;
+constexpr float kMaxNoiseProbability = 0.1f;
+constexpr size_t kNumChunks = 300u;
+constexpr size_t kNumChunksPerIsacBlock = 3;
 
 void GenerateNoise(std::vector<int16_t>* data) {
   for (size_t i = 0; i < data->size(); ++i) {
diff --git a/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc b/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
index 5e0156e..d5141c1 100644
--- a/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
+++ b/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
@@ -71,9 +71,9 @@
   return dips;
 }
 
-const uint32_t kInitialBitrateKbps = 60;
+constexpr uint32_t kInitialBitrateKbps = 60;
 const DataRate kInitialBitrate = DataRate::KilobitsPerSec(kInitialBitrateKbps);
-const float kDefaultPacingRate = 2.5f;
+constexpr float kDefaultPacingRate = 2.5f;
 
 CallClient* CreateVideoSendingClient(
     Scenario* s,
diff --git a/modules/congestion_controller/pcc/bitrate_controller_unittest.cc b/modules/congestion_controller/pcc/bitrate_controller_unittest.cc
index b16beaa..7f9c70e 100644
--- a/modules/congestion_controller/pcc/bitrate_controller_unittest.cc
+++ b/modules/congestion_controller/pcc/bitrate_controller_unittest.cc
@@ -42,7 +42,7 @@
 constexpr double kDelayGradientNegativeBound = 10;
 
 const DataRate kTargetSendingRate = DataRate::KilobitsPerSec(300);
-const double kEpsilon = 0.05;
+constexpr double kEpsilon = 0.05;
 const Timestamp kStartTime = Timestamp::Micros(0);
 const TimeDelta kPacketsDelta = TimeDelta::Millis(1);
 const TimeDelta kIntervalDuration = TimeDelta::Millis(1000);
diff --git a/modules/desktop_capture/desktop_and_cursor_composer_unittest.cc b/modules/desktop_capture/desktop_and_cursor_composer_unittest.cc
index 913258f..ba0a60d 100644
--- a/modules/desktop_capture/desktop_and_cursor_composer_unittest.cc
+++ b/modules/desktop_capture/desktop_and_cursor_composer_unittest.cc
@@ -33,15 +33,15 @@
 
 using testing::ElementsAre;
 
-const int kFrameXCoord = 100;
-const int kFrameYCoord = 200;
-const int kScreenWidth = 100;
-const int kScreenHeight = 100;
-const int kCursorWidth = 10;
-const int kCursorHeight = 10;
+constexpr int kFrameXCoord = 100;
+constexpr int kFrameYCoord = 200;
+constexpr int kScreenWidth = 100;
+constexpr int kScreenHeight = 100;
+constexpr int kCursorWidth = 10;
+constexpr int kCursorHeight = 10;
 
-const int kTestCursorSize = 3;
-const uint32_t kTestCursorData[kTestCursorSize][kTestCursorSize] = {
+constexpr int kTestCursorSize = 3;
+constexpr uint32_t kTestCursorData[kTestCursorSize][kTestCursorSize] = {
     {
         0xffffffff,
         0x99990000,
diff --git a/modules/desktop_capture/screen_capturer_unittest.cc b/modules/desktop_capture/screen_capturer_unittest.cc
index ccbce1c..bc33f0a3 100644
--- a/modules/desktop_capture/screen_capturer_unittest.cc
+++ b/modules/desktop_capture/screen_capturer_unittest.cc
@@ -28,7 +28,7 @@
 
 using ::testing::_;
 
-const int kTestSharedMemoryId = 123;
+constexpr int kTestSharedMemoryId = 123;
 
 namespace webrtc {
 
diff --git a/modules/desktop_capture/win/wgc_capture_source_unittest.cc b/modules/desktop_capture/win/wgc_capture_source_unittest.cc
index dc37ec2..6003930 100644
--- a/modules/desktop_capture/win/wgc_capture_source_unittest.cc
+++ b/modules/desktop_capture/win/wgc_capture_source_unittest.cc
@@ -30,10 +30,10 @@
 
 const WCHAR kWindowTitle[] = L"WGC Capture Source Test Window";
 
-const int kFirstXCoord = 25;
-const int kFirstYCoord = 50;
-const int kSecondXCoord = 50;
-const int kSecondYCoord = 75;
+constexpr int kFirstXCoord = 25;
+constexpr int kFirstYCoord = 50;
+constexpr int kSecondXCoord = 50;
+constexpr int kSecondYCoord = 75;
 
 }  // namespace
 
diff --git a/modules/desktop_capture/win/window_capture_utils_unittest.cc b/modules/desktop_capture/win/window_capture_utils_unittest.cc
index ec70c80..eda18ef 100644
--- a/modules/desktop_capture/win/window_capture_utils_unittest.cc
+++ b/modules/desktop_capture/win/window_capture_utils_unittest.cc
@@ -25,7 +25,7 @@
 namespace webrtc {
 namespace {
 
-const char kWindowThreadName[] = "window_capture_utils_test_thread";
+constexpr char kWindowThreadName[] = "window_capture_utils_test_thread";
 const WCHAR kWindowTitle[] = L"Window Capture Utils Test";
 
 std::unique_ptr<Thread> SetUpUnresponsiveWindow(std::mutex& mtx,
diff --git a/modules/pacing/pacing_controller_unittest.cc b/modules/pacing/pacing_controller_unittest.cc
index 8a272f0..b8134b8 100644
--- a/modules/pacing/pacing_controller_unittest.cc
+++ b/modules/pacing/pacing_controller_unittest.cc
@@ -54,7 +54,7 @@
 // For 1.8 Mbps, this comes to be about 120 kbps with 1200 probe packets.
 constexpr DataRate kProbingErrorMargin = DataRate::KilobitsPerSec(150);
 
-const float kPaceMultiplier = 2.5f;
+constexpr float kPaceMultiplier = 2.5f;
 
 constexpr uint32_t kAudioSsrc = 12345;
 constexpr uint32_t kVideoSsrc = 234565;
diff --git a/modules/remote_bitrate_estimator/inter_arrival_unittest.cc b/modules/remote_bitrate_estimator/inter_arrival_unittest.cc
index 50d3b0f..f034680 100644
--- a/modules/remote_bitrate_estimator/inter_arrival_unittest.cc
+++ b/modules/remote_bitrate_estimator/inter_arrival_unittest.cc
@@ -29,8 +29,9 @@
   kInterArrivalShift = kAbsSendTimeFraction + kAbsSendTimeInterArrivalUpshift,
 };
 
-const double kRtpTimestampToMs = 1.0 / 90.0;
-const double kAstToMs = 1000.0 / static_cast<double>(1 << kInterArrivalShift);
+constexpr double kRtpTimestampToMs = 1.0 / 90.0;
+constexpr double kAstToMs =
+    1000.0 / static_cast<double>(1 << kInterArrivalShift);
 
 class InterArrivalTest : public ::testing::Test {
  protected:
diff --git a/modules/remote_bitrate_estimator/overuse_detector_unittest.cc b/modules/remote_bitrate_estimator/overuse_detector_unittest.cc
index 8b064bd..7e7a328 100644
--- a/modules/remote_bitrate_estimator/overuse_detector_unittest.cc
+++ b/modules/remote_bitrate_estimator/overuse_detector_unittest.cc
@@ -26,7 +26,7 @@
 namespace webrtc {
 namespace testing {
 
-const double kRtpTimestampToMs = 1.0 / 90.0;
+constexpr double kRtpTimestampToMs = 1.0 / 90.0;
 
 class OveruseDetectorTest : public ::testing::Test {
  public:
diff --git a/modules/rtp_rtcp/source/flexfec_sender_unittest.cc b/modules/rtp_rtcp/source/flexfec_sender_unittest.cc
index 9c35cc8..56e509e 100644
--- a/modules/rtp_rtcp/source/flexfec_sender_unittest.cc
+++ b/modules/rtp_rtcp/source/flexfec_sender_unittest.cc
@@ -40,7 +40,7 @@
 constexpr int kFlexfecPayloadType = 123;
 constexpr uint32_t kMediaSsrc = 1234;
 constexpr uint32_t kFlexfecSsrc = 5678;
-const char kNoMid[] = "";
+constexpr char kNoMid[] = "";
 const std::vector<RtpExtension> kNoRtpHeaderExtensions;
 const std::vector<RtpExtensionSize> kNoRtpHeaderExtensionSizes;
 // Assume a single protected media SSRC.
diff --git a/modules/rtp_rtcp/source/nack_rtx_unittest.cc b/modules/rtp_rtcp/source/nack_rtx_unittest.cc
index 8f2265d..11a0a99 100644
--- a/modules/rtp_rtcp/source/nack_rtx_unittest.cc
+++ b/modules/rtp_rtcp/source/nack_rtx_unittest.cc
@@ -43,16 +43,16 @@
 
 namespace webrtc {
 
-const int kVideoNackListSize = 30;
-const uint32_t kTestSsrc = 3456;
-const uint32_t kTestRtxSsrc = kTestSsrc + 1;
-const uint16_t kTestSequenceNumber = 2345;
-const uint32_t kTestNumberOfPackets = 1350;
-const int kTestNumberOfRtxPackets = 149;
-const int kNumFrames = 30;
-const int kPayloadType = 123;
-const int kRtxPayloadType = 98;
-const int64_t kMaxRttMs = 1000;
+constexpr int kVideoNackListSize = 30;
+constexpr uint32_t kTestSsrc = 3456;
+constexpr uint32_t kTestRtxSsrc = kTestSsrc + 1;
+constexpr uint16_t kTestSequenceNumber = 2345;
+constexpr uint32_t kTestNumberOfPackets = 1350;
+constexpr int kTestNumberOfRtxPackets = 149;
+constexpr int kNumFrames = 30;
+constexpr int kPayloadType = 123;
+constexpr int kRtxPayloadType = 98;
+constexpr int64_t kMaxRttMs = 1000;
 
 class VerifyingMediaStream : public RtpPacketSinkInterface {
  public:
diff --git a/modules/rtp_rtcp/source/receive_statistics_unittest.cc b/modules/rtp_rtcp/source/receive_statistics_unittest.cc
index 5eb552b..b45ff3e 100644
--- a/modules/rtp_rtcp/source/receive_statistics_unittest.cc
+++ b/modules/rtp_rtcp/source/receive_statistics_unittest.cc
@@ -31,12 +31,12 @@
 using ::testing::SizeIs;
 using ::testing::UnorderedElementsAre;
 
-const size_t kPacketSize1 = 100;
-const size_t kPacketSize2 = 300;
-const uint32_t kSsrc1 = 101;
-const uint32_t kSsrc2 = 202;
-const uint32_t kSsrc3 = 203;
-const uint32_t kSsrc4 = 304;
+constexpr size_t kPacketSize1 = 100;
+constexpr size_t kPacketSize2 = 300;
+constexpr uint32_t kSsrc1 = 101;
+constexpr uint32_t kSsrc2 = 202;
+constexpr uint32_t kSsrc3 = 203;
+constexpr uint32_t kSsrc4 = 304;
 
 RtpPacketReceived CreateRtpPacket(uint32_t ssrc,
                                   size_t header_size,
diff --git a/modules/rtp_rtcp/source/rtcp_packet/bye_unittest.cc b/modules/rtp_rtcp/source/rtcp_packet/bye_unittest.cc
index af47d67..ff79371 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/bye_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_packet/bye_unittest.cc
@@ -25,9 +25,9 @@
 
 namespace webrtc {
 namespace {
-const uint32_t kSenderSsrc = 0x12345678;
-const uint32_t kCsrc1 = 0x22232425;
-const uint32_t kCsrc2 = 0x33343536;
+constexpr uint32_t kSenderSsrc = 0x12345678;
+constexpr uint32_t kCsrc1 = 0x22232425;
+constexpr uint32_t kCsrc2 = 0x33343536;
 }  // namespace
 
 TEST(RtcpPacketByeTest, CreateAndParseWithoutReason) {
diff --git a/modules/rtp_rtcp/source/rtcp_packet/compound_packet_unittest.cc b/modules/rtp_rtcp/source/rtcp_packet/compound_packet_unittest.cc
index 7645c26..39e09c9 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/compound_packet_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_packet/compound_packet_unittest.cc
@@ -40,9 +40,9 @@
 
 namespace webrtc {
 
-const uint32_t kSenderSsrc = 0x12345678;
-const uint32_t kRemoteSsrc = 0x23456789;
-const uint8_t kSeqNo = 13;
+constexpr uint32_t kSenderSsrc = 0x12345678;
+constexpr uint32_t kRemoteSsrc = 0x23456789;
+constexpr uint8_t kSeqNo = 13;
 
 TEST(RtcpCompoundPacketTest, AppendPacket) {
   CompoundPacket compound;
diff --git a/modules/rtp_rtcp/source/rtcp_packet/dlrr_unittest.cc b/modules/rtp_rtcp/source/rtcp_packet/dlrr_unittest.cc
index 751df2d..7298e52 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/dlrr_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_packet/dlrr_unittest.cc
@@ -22,12 +22,12 @@
 
 namespace webrtc {
 namespace {
-const uint32_t kSsrc = 0x12345678;
-const uint32_t kLastRR = 0x23344556;
-const uint32_t kDelay = 0x33343536;
-const uint8_t kBlock[] = {0x05, 0x00, 0x00, 0x03, 0x12, 0x34, 0x56, 0x78,
-                          0x23, 0x34, 0x45, 0x56, 0x33, 0x34, 0x35, 0x36};
-const size_t kBlockSizeBytes = sizeof(kBlock);
+constexpr uint32_t kSsrc = 0x12345678;
+constexpr uint32_t kLastRR = 0x23344556;
+constexpr uint32_t kDelay = 0x33343536;
+constexpr uint8_t kBlock[] = {0x05, 0x00, 0x00, 0x03, 0x12, 0x34, 0x56, 0x78,
+                              0x23, 0x34, 0x45, 0x56, 0x33, 0x34, 0x35, 0x36};
+constexpr size_t kBlockSizeBytes = sizeof(kBlock);
 }  // namespace
 
 TEST(RtcpPacketDlrrTest, Empty) {
diff --git a/modules/rtp_rtcp/source/rtcp_packet/pli_unittest.cc b/modules/rtp_rtcp/source/rtcp_packet/pli_unittest.cc
index 64d799e..fe737a9 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/pli_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_packet/pli_unittest.cc
@@ -23,11 +23,11 @@
 
 namespace webrtc {
 namespace {
-const uint32_t kSenderSsrc = 0x12345678;
-const uint32_t kRemoteSsrc = 0x23456789;
+constexpr uint32_t kSenderSsrc = 0x12345678;
+constexpr uint32_t kRemoteSsrc = 0x23456789;
 // Manually created Pli packet matching constants above.
-const uint8_t kPacket[] = {0x81, 206,  0x00, 0x02, 0x12, 0x34,
-                           0x56, 0x78, 0x23, 0x45, 0x67, 0x89};
+constexpr uint8_t kPacket[] = {0x81, 206,  0x00, 0x02, 0x12, 0x34,
+                               0x56, 0x78, 0x23, 0x45, 0x67, 0x89};
 }  // namespace
 
 TEST(RtcpPacketPliTest, Parse) {
diff --git a/modules/rtp_rtcp/source/rtcp_packet/rapid_resync_request_unittest.cc b/modules/rtp_rtcp/source/rtcp_packet/rapid_resync_request_unittest.cc
index 450b7cd..45b75e6 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/rapid_resync_request_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_packet/rapid_resync_request_unittest.cc
@@ -23,11 +23,11 @@
 
 namespace webrtc {
 namespace {
-const uint32_t kSenderSsrc = 0x12345678;
-const uint32_t kRemoteSsrc = 0x23456789;
+constexpr uint32_t kSenderSsrc = 0x12345678;
+constexpr uint32_t kRemoteSsrc = 0x23456789;
 // Manually created packet matching constants above.
-const uint8_t kPacket[] = {0x85, 205,  0x00, 0x02, 0x12, 0x34,
-                           0x56, 0x78, 0x23, 0x45, 0x67, 0x89};
+constexpr uint8_t kPacket[] = {0x85, 205,  0x00, 0x02, 0x12, 0x34,
+                               0x56, 0x78, 0x23, 0x45, 0x67, 0x89};
 }  // namespace
 
 TEST(RtcpPacketRapidResyncRequestTest, Parse) {
diff --git a/modules/rtp_rtcp/source/rtcp_packet/receiver_report_unittest.cc b/modules/rtp_rtcp/source/rtcp_packet/receiver_report_unittest.cc
index 98ff4d2..916dfcd 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/receiver_report_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_packet/receiver_report_unittest.cc
@@ -29,21 +29,21 @@
 
 namespace webrtc {
 namespace {
-const uint32_t kSenderSsrc = 0x12345678;
-const uint32_t kRemoteSsrc = 0x23456789;
-const uint8_t kFractionLost = 55;
-const int32_t kCumulativeLost = 0x111213;
-const uint32_t kExtHighestSeqNum = 0x22232425;
-const uint32_t kJitter = 0x33343536;
-const uint32_t kLastSr = 0x44454647;
-const uint32_t kDelayLastSr = 0x55565758;
+constexpr uint32_t kSenderSsrc = 0x12345678;
+constexpr uint32_t kRemoteSsrc = 0x23456789;
+constexpr uint8_t kFractionLost = 55;
+constexpr int32_t kCumulativeLost = 0x111213;
+constexpr uint32_t kExtHighestSeqNum = 0x22232425;
+constexpr uint32_t kJitter = 0x33343536;
+constexpr uint32_t kLastSr = 0x44454647;
+constexpr uint32_t kDelayLastSr = 0x55565758;
 // Manually created ReceiverReport with one ReportBlock matching constants
 // above.
 // Having this block allows to test Create and Parse separately.
-const uint8_t kPacket[] = {0x81, 201,  0x00, 0x07, 0x12, 0x34, 0x56, 0x78,
-                           0x23, 0x45, 0x67, 0x89, 55,   0x11, 0x12, 0x13,
-                           0x22, 0x23, 0x24, 0x25, 0x33, 0x34, 0x35, 0x36,
-                           0x44, 0x45, 0x46, 0x47, 0x55, 0x56, 0x57, 0x58};
+constexpr uint8_t kPacket[] = {0x81, 201,  0x00, 0x07, 0x12, 0x34, 0x56, 0x78,
+                               0x23, 0x45, 0x67, 0x89, 55,   0x11, 0x12, 0x13,
+                               0x22, 0x23, 0x24, 0x25, 0x33, 0x34, 0x35, 0x36,
+                               0x44, 0x45, 0x46, 0x47, 0x55, 0x56, 0x57, 0x58};
 }  // namespace
 
 TEST(RtcpPacketReceiverReportTest, ParseWithOneReportBlock) {
diff --git a/modules/rtp_rtcp/source/rtcp_packet/remb_unittest.cc b/modules/rtp_rtcp/source/rtcp_packet/remb_unittest.cc
index 34fe54c..bc3fa0c 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/remb_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_packet/remb_unittest.cc
@@ -28,15 +28,15 @@
 
 namespace webrtc {
 namespace {
-const uint32_t kSenderSsrc = 0x12345678;
-const uint32_t kRemoteSsrcs[] = {0x23456789, 0x2345678a, 0x2345678b};
-const uint32_t kBitrateBps = 0x3fb93 * 2;  // 522022;
-const int64_t kBitrateBps64bit = int64_t{0x3fb93} << 30;
-const uint8_t kPacket[] = {0x8f, 206,  0x00, 0x07, 0x12, 0x34, 0x56, 0x78,
-                           0x00, 0x00, 0x00, 0x00, 'R',  'E',  'M',  'B',
-                           0x03, 0x07, 0xfb, 0x93, 0x23, 0x45, 0x67, 0x89,
-                           0x23, 0x45, 0x67, 0x8a, 0x23, 0x45, 0x67, 0x8b};
-const size_t kPacketLength = sizeof(kPacket);
+constexpr uint32_t kSenderSsrc = 0x12345678;
+constexpr uint32_t kRemoteSsrcs[] = {0x23456789, 0x2345678a, 0x2345678b};
+constexpr uint32_t kBitrateBps = 0x3fb93 * 2;  // 522022;
+constexpr int64_t kBitrateBps64bit = int64_t{0x3fb93} << 30;
+constexpr uint8_t kPacket[] = {0x8f, 206,  0x00, 0x07, 0x12, 0x34, 0x56, 0x78,
+                               0x00, 0x00, 0x00, 0x00, 'R',  'E',  'M',  'B',
+                               0x03, 0x07, 0xfb, 0x93, 0x23, 0x45, 0x67, 0x89,
+                               0x23, 0x45, 0x67, 0x8a, 0x23, 0x45, 0x67, 0x8b};
+constexpr size_t kPacketLength = sizeof(kPacket);
 }  // namespace
 
 TEST(RtcpPacketRembTest, Create) {
diff --git a/modules/rtp_rtcp/source/rtcp_packet/report_block_unittest.cc b/modules/rtp_rtcp/source/rtcp_packet/report_block_unittest.cc
index 68399f0..a7fa06d 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/report_block_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_packet/report_block_unittest.cc
@@ -22,15 +22,15 @@
 namespace webrtc {
 namespace {
 
-const uint32_t kRemoteSsrc = 0x23456789;
-const uint8_t kFractionLost = 55;
+constexpr uint32_t kRemoteSsrc = 0x23456789;
+constexpr uint8_t kFractionLost = 55;
 // Use values that are streamed differently LE and BE.
-const int32_t kCumulativeLost = 0x111213;
-const uint32_t kExtHighestSeqNum = 0x22232425;
-const uint32_t kJitter = 0x33343536;
-const uint32_t kLastSr = 0x44454647;
-const uint32_t kDelayLastSr = 0x55565758;
-const size_t kBufferLength = ReportBlock::kLength;
+constexpr int32_t kCumulativeLost = 0x111213;
+constexpr uint32_t kExtHighestSeqNum = 0x22232425;
+constexpr uint32_t kJitter = 0x33343536;
+constexpr uint32_t kLastSr = 0x44454647;
+constexpr uint32_t kDelayLastSr = 0x55565758;
+constexpr size_t kBufferLength = ReportBlock::kLength;
 
 TEST(RtcpPacketReportBlockTest, ParseChecksLength) {
   uint8_t buffer[kBufferLength];
diff --git a/modules/rtp_rtcp/source/rtcp_packet/rrtr_unittest.cc b/modules/rtp_rtcp/source/rtcp_packet/rrtr_unittest.cc
index ce8640c..0e71089 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/rrtr_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_packet/rrtr_unittest.cc
@@ -22,11 +22,11 @@
 namespace webrtc {
 namespace {
 
-const uint32_t kNtpSec = 0x12345678;
-const uint32_t kNtpFrac = 0x23456789;
-const uint8_t kBlock[] = {0x04, 0x00, 0x00, 0x02, 0x12, 0x34,
-                          0x56, 0x78, 0x23, 0x45, 0x67, 0x89};
-const size_t kBlockSizeBytes = sizeof(kBlock);
+constexpr uint32_t kNtpSec = 0x12345678;
+constexpr uint32_t kNtpFrac = 0x23456789;
+constexpr uint8_t kBlock[] = {0x04, 0x00, 0x00, 0x02, 0x12, 0x34,
+                              0x56, 0x78, 0x23, 0x45, 0x67, 0x89};
+constexpr size_t kBlockSizeBytes = sizeof(kBlock);
 static_assert(
     kBlockSizeBytes == Rrtr::kLength,
     "Size of manually created Rrtr block should match class constant");
diff --git a/modules/rtp_rtcp/source/rtcp_packet/sdes_unittest.cc b/modules/rtp_rtcp/source/rtcp_packet/sdes_unittest.cc
index df1a7b4..c20155f 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/sdes_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_packet/sdes_unittest.cc
@@ -23,12 +23,12 @@
 
 namespace webrtc {
 namespace {
-const uint32_t kSenderSsrc = 0x12345678;
-const uint8_t kPadding = 0;
-const uint8_t kTerminatorTag = 0;
-const uint8_t kCnameTag = 1;
-const uint8_t kNameTag = 2;
-const uint8_t kEmailTag = 3;
+constexpr uint32_t kSenderSsrc = 0x12345678;
+constexpr uint8_t kPadding = 0;
+constexpr uint8_t kTerminatorTag = 0;
+constexpr uint8_t kCnameTag = 1;
+constexpr uint8_t kNameTag = 2;
+constexpr uint8_t kEmailTag = 3;
 }  // namespace
 
 TEST(RtcpPacketSdesTest, CreateAndParseWithoutChunks) {
diff --git a/modules/rtp_rtcp/source/rtcp_packet/sender_report_unittest.cc b/modules/rtp_rtcp/source/rtcp_packet/sender_report_unittest.cc
index f7d2478..9ffe6c7 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/sender_report_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_packet/sender_report_unittest.cc
@@ -29,16 +29,16 @@
 
 namespace webrtc {
 namespace {
-const uint32_t kSenderSsrc = 0x12345678;
-const uint32_t kRemoteSsrc = 0x23456789;
+constexpr uint32_t kSenderSsrc = 0x12345678;
+constexpr uint32_t kRemoteSsrc = 0x23456789;
 const NtpTime kNtp(0x11121418, 0x22242628);
-const uint32_t kRtpTimestamp = 0x33343536;
-const uint32_t kPacketCount = 0x44454647;
-const uint32_t kOctetCount = 0x55565758;
-const uint8_t kPacket[] = {0x80, 200,  0x00, 0x06, 0x12, 0x34, 0x56,
-                           0x78, 0x11, 0x12, 0x14, 0x18, 0x22, 0x24,
-                           0x26, 0x28, 0x33, 0x34, 0x35, 0x36, 0x44,
-                           0x45, 0x46, 0x47, 0x55, 0x56, 0x57, 0x58};
+constexpr uint32_t kRtpTimestamp = 0x33343536;
+constexpr uint32_t kPacketCount = 0x44454647;
+constexpr uint32_t kOctetCount = 0x55565758;
+constexpr uint8_t kPacket[] = {0x80, 200,  0x00, 0x06, 0x12, 0x34, 0x56,
+                               0x78, 0x11, 0x12, 0x14, 0x18, 0x22, 0x24,
+                               0x26, 0x28, 0x33, 0x34, 0x35, 0x36, 0x44,
+                               0x45, 0x46, 0x47, 0x55, 0x56, 0x57, 0x58};
 }  // namespace
 
 TEST(RtcpPacketSenderReportTest, CreateWithoutReportBlocks) {
diff --git a/modules/rtp_rtcp/source/rtcp_packet/target_bitrate_unittest.cc b/modules/rtp_rtcp/source/rtcp_packet/target_bitrate_unittest.cc
index dcaa85e..1e467f9 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/target_bitrate_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_packet/target_bitrate_unittest.cc
@@ -29,13 +29,14 @@
 constexpr uint32_t kSsrc = 0x12345678;
 
 // clang-format off
-const uint8_t kPacket[] = { TargetBitrate::kBlockType,  // Block ID.
-                                  0x00,                 // Reserved.
-                                        0x00, 0x04,     // Length = 4 words.
-                            0x00, 0x01, 0x02, 0x03,     // S0T0 0x010203 kbps.
-                            0x01, 0x02, 0x03, 0x04,     // S0T1 0x020304 kbps.
-                            0x10, 0x03, 0x04, 0x05,     // S1T0 0x030405 kbps.
-                            0x11, 0x04, 0x05, 0x06 };   // S1T1 0x040506 kbps.
+constexpr uint8_t kPacket[] = {
+    TargetBitrate::kBlockType,  // Block ID.
+          0x00,                 // Reserved.
+                0x00, 0x04,     // Length = 4 words.
+    0x00, 0x01, 0x02, 0x03,     // S0T0 0x010203 kbps.
+    0x01, 0x02, 0x03, 0x04,     // S0T1 0x020304 kbps.
+    0x10, 0x03, 0x04, 0x05,     // S1T0 0x030405 kbps.
+    0x11, 0x04, 0x05, 0x06 };   // S1T1 0x040506 kbps.
 constexpr size_t kPacketLengthBlocks = ((sizeof(kPacket) + 3) / 4) - 1;
 // clang-format on
 
diff --git a/modules/rtp_rtcp/source/rtcp_packet/tmmbn_unittest.cc b/modules/rtp_rtcp/source/rtcp_packet/tmmbn_unittest.cc
index ce1544c..00ea2d6 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/tmmbn_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_packet/tmmbn_unittest.cc
@@ -26,13 +26,13 @@
 
 namespace webrtc {
 namespace {
-const uint32_t kSenderSsrc = 0x12345678;
-const uint32_t kRemoteSsrc = 0x23456789;
-const uint32_t kBitrateBps = 312000;
-const uint16_t kOverhead = 0x1fe;
-const uint8_t kPacket[] = {0x84, 205,  0x00, 0x04, 0x12, 0x34, 0x56,
-                           0x78, 0x00, 0x00, 0x00, 0x00, 0x23, 0x45,
-                           0x67, 0x89, 0x0a, 0x61, 0x61, 0xfe};
+constexpr uint32_t kSenderSsrc = 0x12345678;
+constexpr uint32_t kRemoteSsrc = 0x23456789;
+constexpr uint32_t kBitrateBps = 312000;
+constexpr uint16_t kOverhead = 0x1fe;
+constexpr uint8_t kPacket[] = {0x84, 205,  0x00, 0x04, 0x12, 0x34, 0x56,
+                               0x78, 0x00, 0x00, 0x00, 0x00, 0x23, 0x45,
+                               0x67, 0x89, 0x0a, 0x61, 0x61, 0xfe};
 }  // namespace
 
 TEST(RtcpPacketTmmbnTest, Create) {
diff --git a/modules/rtp_rtcp/source/rtcp_packet/tmmbr_unittest.cc b/modules/rtp_rtcp/source/rtcp_packet/tmmbr_unittest.cc
index 4f45577..ecdd959 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/tmmbr_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_packet/tmmbr_unittest.cc
@@ -25,13 +25,13 @@
 
 namespace webrtc {
 namespace {
-const uint32_t kSenderSsrc = 0x12345678;
-const uint32_t kRemoteSsrc = 0x23456789;
-const uint32_t kBitrateBps = 312000;
-const uint16_t kOverhead = 0x1fe;
-const uint8_t kPacket[] = {0x83, 205,  0x00, 0x04, 0x12, 0x34, 0x56,
-                           0x78, 0x00, 0x00, 0x00, 0x00, 0x23, 0x45,
-                           0x67, 0x89, 0x0a, 0x61, 0x61, 0xfe};
+constexpr uint32_t kSenderSsrc = 0x12345678;
+constexpr uint32_t kRemoteSsrc = 0x23456789;
+constexpr uint32_t kBitrateBps = 312000;
+constexpr uint16_t kOverhead = 0x1fe;
+constexpr uint8_t kPacket[] = {0x83, 205,  0x00, 0x04, 0x12, 0x34, 0x56,
+                               0x78, 0x00, 0x00, 0x00, 0x00, 0x23, 0x45,
+                               0x67, 0x89, 0x0a, 0x61, 0x61, 0xfe};
 }  // namespace
 
 TEST(RtcpPacketTmmbrTest, Create) {
diff --git a/modules/rtp_rtcp/source/rtcp_packet_unittest.cc b/modules/rtp_rtcp/source/rtcp_packet_unittest.cc
index 2a87759..793535f 100644
--- a/modules/rtp_rtcp/source/rtcp_packet_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_packet_unittest.cc
@@ -26,7 +26,7 @@
 using ::webrtc::rtcp::ReceiverReport;
 using ::webrtc::rtcp::ReportBlock;
 
-const uint32_t kSenderSsrc = 0x12345678;
+constexpr uint32_t kSenderSsrc = 0x12345678;
 
 TEST(RtcpPacketTest, BuildWithTooSmallBuffer) {
   ReportBlock rb;
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc
index 6d88e28..24c1011 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc
@@ -55,15 +55,15 @@
 
 namespace webrtc {
 namespace {
-const uint32_t kSenderSsrc = 0x12345;
-const uint32_t kReceiverSsrc = 0x23456;
+constexpr uint32_t kSenderSsrc = 0x12345;
+constexpr uint32_t kReceiverSsrc = 0x23456;
 constexpr TimeDelta kOneWayNetworkDelay = TimeDelta::Millis(100);
-const uint8_t kBaseLayerTid = 0;
-const uint8_t kHigherLayerTid = 1;
-const uint16_t kSequenceNumber = 100;
-const uint8_t kPayloadType = 100;
-const int kWidth = 320;
-const int kHeight = 100;
+constexpr uint8_t kBaseLayerTid = 0;
+constexpr uint8_t kHigherLayerTid = 1;
+constexpr uint16_t kSequenceNumber = 100;
+constexpr uint8_t kPayloadType = 100;
+constexpr int kWidth = 320;
+constexpr int kHeight = 100;
 
 MATCHER_P2(Near, value, margin, "") {
   return value - margin <= arg && arg <= value + margin;
diff --git a/modules/rtp_rtcp/source/rtp_sender_audio_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_audio_unittest.cc
index 2cb50849..7cc4e1e 100644
--- a/modules/rtp_rtcp/source/rtp_sender_audio_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_audio_unittest.cc
@@ -39,9 +39,9 @@
   kAbsoluteCaptureTimeExtensionId = 2,
 };
 
-const uint16_t kSeqNum = 33;
-const uint32_t kSsrc = 725242;
-const uint64_t kStartTime = 123456789;
+constexpr uint16_t kSeqNum = 33;
+constexpr uint32_t kSsrc = 725242;
+constexpr uint64_t kStartTime = 123456789;
 
 using ::testing::ElementsAreArray;
 
diff --git a/modules/rtp_rtcp/source/rtp_sender_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_unittest.cc
index 2607c58..3049de6 100644
--- a/modules/rtp_rtcp/source/rtp_sender_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_unittest.cc
@@ -60,15 +60,15 @@
   kVideoTimingExtensionId,
 };
 
-const int kPayload = 100;
-const int kRtxPayload = 98;
-const uint32_t kTimestamp = 10;
-const uint16_t kSeqNum = 33;
-const uint32_t kSsrc = 725242;
-const uint32_t kRtxSsrc = 12345;
-const uint32_t kFlexFecSsrc = 45678;
-const uint64_t kStartTime = 123456789;
-const uint8_t kPayloadData[] = {47, 11, 32, 93, 89};
+constexpr int kPayload = 100;
+constexpr int kRtxPayload = 98;
+constexpr uint32_t kTimestamp = 10;
+constexpr uint16_t kSeqNum = 33;
+constexpr uint32_t kSsrc = 725242;
+constexpr uint32_t kRtxSsrc = 12345;
+constexpr uint32_t kFlexFecSsrc = 45678;
+constexpr uint64_t kStartTime = 123456789;
+constexpr uint8_t kPayloadData[] = {47, 11, 32, 93, 89};
 constexpr TimeDelta kDefaultExpectedRetransmissionTime = TimeDelta::Millis(125);
 constexpr Frequency kRtpClockRate = Frequency::Hertz(90'000);
 constexpr absl::string_view kMid = "mid";
diff --git a/modules/rtp_rtcp/source/rtp_video_stream_receiver_frame_transformer_delegate_unittest.cc b/modules/rtp_rtcp/source/rtp_video_stream_receiver_frame_transformer_delegate_unittest.cc
index 92860b1..18a0f67 100644
--- a/modules/rtp_rtcp/source/rtp_video_stream_receiver_frame_transformer_delegate_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_video_stream_receiver_frame_transformer_delegate_unittest.cc
@@ -54,8 +54,8 @@
 using ::testing::Return;
 using ::testing::SaveArg;
 
-const int kFirstSeqNum = 1;
-const int kLastSeqNum = 2;
+constexpr int kFirstSeqNum = 1;
+constexpr int kLastSeqNum = 2;
 
 std::unique_ptr<RtpFrameObject> CreateRtpFrameObject(
     const RTPVideoHeader& video_header,
diff --git a/modules/video_coding/codecs/h264/h264_encoder_impl_unittest.cc b/modules/video_coding/codecs/h264/h264_encoder_impl_unittest.cc
index e714e27..08d4174 100644
--- a/modules/video_coding/codecs/h264/h264_encoder_impl_unittest.cc
+++ b/modules/video_coding/codecs/h264/h264_encoder_impl_unittest.cc
@@ -20,8 +20,8 @@
 
 namespace {
 
-const int kMaxPayloadSize = 1024;
-const int kNumCores = 1;
+constexpr int kMaxPayloadSize = 1024;
+constexpr int kNumCores = 1;
 
 const VideoEncoder::Capabilities kCapabilities(false);
 const VideoEncoder::Settings kSettings(kCapabilities,
diff --git a/modules/video_coding/codecs/test/videocodec_test_fixture_config_unittest.cc b/modules/video_coding/codecs/test/videocodec_test_fixture_config_unittest.cc
index 581a628..60c8ff3 100644
--- a/modules/video_coding/codecs/test/videocodec_test_fixture_config_unittest.cc
+++ b/modules/video_coding/codecs/test/videocodec_test_fixture_config_unittest.cc
@@ -25,7 +25,7 @@
 using Config = VideoCodecTestFixture::Config;
 
 namespace {
-const size_t kNumTemporalLayers = 2;
+constexpr size_t kNumTemporalLayers = 2;
 }  // namespace
 
 TEST(Config, NumberOfCoresWithUseSingleCore) {
diff --git a/modules/video_coding/codecs/test/videocodec_test_stats_impl_unittest.cc b/modules/video_coding/codecs/test/videocodec_test_stats_impl_unittest.cc
index a68d8ac..b740efa 100644
--- a/modules/video_coding/codecs/test/videocodec_test_stats_impl_unittest.cc
+++ b/modules/video_coding/codecs/test/videocodec_test_stats_impl_unittest.cc
@@ -23,7 +23,7 @@
 
 namespace {
 
-const size_t kTimestamp = 12345;
+constexpr size_t kTimestamp = 12345;
 
 using ::testing::AllOf;
 using ::testing::Contains;
diff --git a/modules/video_coding/codecs/test/videoprocessor_unittest.cc b/modules/video_coding/codecs/test/videoprocessor_unittest.cc
index 0e44884..c71c06b 100644
--- a/modules/video_coding/codecs/test/videoprocessor_unittest.cc
+++ b/modules/video_coding/codecs/test/videoprocessor_unittest.cc
@@ -41,8 +41,8 @@
 
 namespace {
 
-const int kWidth = 352;
-const int kHeight = 288;
+constexpr int kWidth = 352;
+constexpr int kHeight = 288;
 
 }  // namespace
 
diff --git a/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc b/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc
index cfafc72..4e2e648 100644
--- a/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc
+++ b/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc
@@ -39,21 +39,21 @@
 namespace webrtc {
 namespace {
 // 5 frames per second at 90 kHz.
-const uint32_t kTimestampDelta5Fps = 90000 / 5;
-const int kDefaultQp = 54;
-const int kDefaultTl0BitrateKbps = 200;
-const int kDefaultTl1BitrateKbps = 2000;
-const int kFrameRate = 5;
-const int kSyncPeriodSeconds = 2;
-const int kMaxSyncPeriodSeconds = 4;
+constexpr uint32_t kTimestampDelta5Fps = 90000 / 5;
+constexpr int kDefaultQp = 54;
+constexpr int kDefaultTl0BitrateKbps = 200;
+constexpr int kDefaultTl1BitrateKbps = 2000;
+constexpr int kFrameRate = 5;
+constexpr int kSyncPeriodSeconds = 2;
+constexpr int kMaxSyncPeriodSeconds = 4;
 
 // Expected flags for corresponding temporal layers.
-const int kTl0Flags = VP8_EFLAG_NO_UPD_GF | VP8_EFLAG_NO_UPD_ARF |
-                      VP8_EFLAG_NO_REF_GF | VP8_EFLAG_NO_REF_ARF;
-const int kTl1Flags =
+constexpr int kTl0Flags = VP8_EFLAG_NO_UPD_GF | VP8_EFLAG_NO_UPD_ARF |
+                          VP8_EFLAG_NO_REF_GF | VP8_EFLAG_NO_REF_ARF;
+constexpr int kTl1Flags =
     VP8_EFLAG_NO_REF_ARF | VP8_EFLAG_NO_UPD_ARF | VP8_EFLAG_NO_UPD_LAST;
-const int kTl1SyncFlags = VP8_EFLAG_NO_REF_ARF | VP8_EFLAG_NO_REF_GF |
-                          VP8_EFLAG_NO_UPD_ARF | VP8_EFLAG_NO_UPD_LAST;
+constexpr int kTl1SyncFlags = VP8_EFLAG_NO_REF_ARF | VP8_EFLAG_NO_REF_GF |
+                              VP8_EFLAG_NO_UPD_ARF | VP8_EFLAG_NO_UPD_LAST;
 const std::vector<uint32_t> kDefault2TlBitratesBps = {
     kDefaultTl0BitrateKbps * 1000,
     (kDefaultTl1BitrateKbps - kDefaultTl0BitrateKbps) * 1000};
diff --git a/modules/video_coding/h26x_packet_buffer_unittest.cc b/modules/video_coding/h26x_packet_buffer_unittest.cc
index 467184e..f786776 100644
--- a/modules/video_coding/h26x_packet_buffer_unittest.cc
+++ b/modules/video_coding/h26x_packet_buffer_unittest.cc
@@ -50,7 +50,7 @@
 
 constexpr int kBufferSize = 2048;
 // Example sprop string from https://tools.ietf.org/html/rfc3984.
-const char kExampleSpropString[] = "Z0IACpZTBYmI,aMljiA==";
+constexpr char kExampleSpropString[] = "Z0IACpZTBYmI,aMljiA==";
 const std::vector<uint8_t> kExampleSpropRawSps{0x67, 0x42, 0x00, 0x0A, 0x96,
                                                0x53, 0x05, 0x89, 0x88};
 const std::vector<uint8_t> kExampleSpropRawPps{0x68, 0xC9, 0x63, 0x88};
diff --git a/modules/video_coding/utility/frame_dropper_unittest.cc b/modules/video_coding/utility/frame_dropper_unittest.cc
index ac3fade..7ca03b2 100644
--- a/modules/video_coding/utility/frame_dropper_unittest.cc
+++ b/modules/video_coding/utility/frame_dropper_unittest.cc
@@ -18,11 +18,11 @@
 
 namespace {
 
-const float kTargetBitRateKbps = 300;
-const float kIncomingFrameRate = 30;
-const size_t kFrameSizeBytes = 1250;
+constexpr float kTargetBitRateKbps = 300;
+constexpr float kIncomingFrameRate = 30;
+constexpr size_t kFrameSizeBytes = 1250;
 
-const size_t kLargeFrameSizeBytes = 25000;
+constexpr size_t kLargeFrameSizeBytes = 25000;
 
 const bool kIncludeKeyFrame = true;
 const bool kDoNotIncludeKeyFrame = false;
diff --git a/modules/video_coding/utility/ivf_file_writer_unittest.cc b/modules/video_coding/utility/ivf_file_writer_unittest.cc
index bc6c877..3038d87 100644
--- a/modules/video_coding/utility/ivf_file_writer_unittest.cc
+++ b/modules/video_coding/utility/ivf_file_writer_unittest.cc
@@ -26,8 +26,8 @@
 namespace webrtc {
 
 namespace {
-const int kHeaderSize = 32;
-const int kFrameHeaderSize = 12;
+constexpr int kHeaderSize = 32;
+constexpr int kFrameHeaderSize = 12;
 uint8_t dummy_payload[4] = {0, 1, 2, 3};
 // As the default parameter when the width and height of encodedImage are 0,
 // the values are copied from ivf_file_writer.cc
diff --git a/modules/video_coding/utility/qp_parser_unittest.cc b/modules/video_coding/utility/qp_parser_unittest.cc
index a7fe387..2e5b3ba 100644
--- a/modules/video_coding/utility/qp_parser_unittest.cc
+++ b/modules/video_coding/utility/qp_parser_unittest.cc
@@ -24,14 +24,14 @@
 namespace {
 // ffmpeg -s 16x16 -f rawvideo -pix_fmt rgb24 -r 30 -i /dev/zero -c:v libvpx
 // -qmin 20 -qmax 20 -crf 20 -frames:v 1 -y out.ivf
-const uint8_t kCodedFrameVp8Qp25[] = {
+constexpr uint8_t kCodedFrameVp8Qp25[] = {
     0x10, 0x02, 0x00, 0x9d, 0x01, 0x2a, 0x10, 0x00, 0x10, 0x00,
     0x02, 0x47, 0x08, 0x85, 0x85, 0x88, 0x85, 0x84, 0x88, 0x0c,
     0x82, 0x00, 0x0c, 0x0d, 0x60, 0x00, 0xfe, 0xfc, 0x5c, 0xd0};
 
 // ffmpeg -s 16x16 -f rawvideo -pix_fmt rgb24 -r 30 -i /dev/zero -c:v libvpx-vp9
 // -qmin 24 -qmax 24 -crf 24 -frames:v 1 -y out.ivf
-const uint8_t kCodedFrameVp9Qp96[] = {
+constexpr uint8_t kCodedFrameVp9Qp96[] = {
     0xa2, 0x49, 0x83, 0x42, 0xe0, 0x00, 0xf0, 0x00, 0xf6, 0x00,
     0x38, 0x24, 0x1c, 0x18, 0xc0, 0x00, 0x00, 0x30, 0x70, 0x00,
     0x00, 0x4a, 0xa7, 0xff, 0xfc, 0xb9, 0x01, 0xbf, 0xff, 0xff,
@@ -39,22 +39,22 @@
 
 // ffmpeg -s 16x16 -f rawvideo -pix_fmt yuv420p -r 30 -i /dev/zero -c:v libx264
 // -qmin 38 -qmax 38 -crf 38 -profile:v baseline -frames:v 2 -y out.264
-const uint8_t kCodedFrameH264SpsPpsIdrQp38[] = {
+constexpr uint8_t kCodedFrameH264SpsPpsIdrQp38[] = {
     0x00, 0x00, 0x00, 0x01, 0x67, 0x42, 0xc0, 0x0a, 0xd9, 0x1e, 0x84,
     0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0xf0, 0x3c,
     0x48, 0x99, 0x20, 0x00, 0x00, 0x00, 0x01, 0x68, 0xcb, 0x80, 0xc4,
     0xb2, 0x00, 0x00, 0x01, 0x65, 0x88, 0x84, 0xf1, 0x18, 0xa0, 0x00,
     0x20, 0x5b, 0x1c, 0x00, 0x04, 0x07, 0xe3, 0x80, 0x00, 0x80, 0xfe};
 
-const uint8_t kCodedFrameH264SpsPpsIdrQp49[] = {
+constexpr uint8_t kCodedFrameH264SpsPpsIdrQp49[] = {
     0x00, 0x00, 0x00, 0x01, 0x67, 0x42, 0xc0, 0x0a, 0xd9, 0x1e, 0x84,
     0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0xf0, 0x3c,
     0x48, 0x99, 0x20, 0x00, 0x00, 0x00, 0x01, 0x68, 0xcb, 0x80, 0x5d,
     0x2c, 0x80, 0x00, 0x00, 0x01, 0x65, 0x88, 0x84, 0xf1, 0x18, 0xa0,
     0x00, 0x5e, 0x38, 0x00, 0x08, 0x03, 0xc7, 0x00, 0x01, 0x00, 0x7c};
 
-const uint8_t kCodedFrameH264InterSliceQpDelta0[] = {0x00, 0x00, 0x00, 0x01,
-                                                     0x41, 0x9a, 0x39, 0xea};
+constexpr uint8_t kCodedFrameH264InterSliceQpDelta0[] = {
+    0x00, 0x00, 0x00, 0x01, 0x41, 0x9a, 0x39, 0xea};
 
 }  // namespace
 
diff --git a/modules/video_coding/utility/quality_scaler_unittest.cc b/modules/video_coding/utility/quality_scaler_unittest.cc
index dca0f4a..677654c 100644
--- a/modules/video_coding/utility/quality_scaler_unittest.cc
+++ b/modules/video_coding/utility/quality_scaler_unittest.cc
@@ -24,10 +24,10 @@
 
 namespace webrtc {
 namespace {
-const int kFramerate = 30;
-const int kLowQp = 15;
-const int kHighQp = 40;
-const int kMinFramesNeededToScale = 60;  // From quality_scaler.cc.
+constexpr int kFramerate = 30;
+constexpr int kLowQp = 15;
+constexpr int kHighQp = 40;
+constexpr int kMinFramesNeededToScale = 60;  // From quality_scaler.cc.
 constexpr TimeDelta kDefaultTimeout = TimeDelta::Millis(150);
 }  // namespace
 
diff --git a/modules/video_coding/utility/simulcast_rate_allocator_unittest.cc b/modules/video_coding/utility/simulcast_rate_allocator_unittest.cc
index 8909182..4392e7b 100644
--- a/modules/video_coding/utility/simulcast_rate_allocator_unittest.cc
+++ b/modules/video_coding/utility/simulcast_rate_allocator_unittest.cc
@@ -46,7 +46,7 @@
 constexpr uint32_t kSimulcastScreenshareMaxBitrateKbps = 1250;
 // Default video hysteresis factor: allocatable bitrate for next layer must
 // exceed 20% of min setting in order to be initially turned on.
-const double kDefaultHysteresis = 1.2;
+constexpr double kDefaultHysteresis = 1.2;
 
 class MockTemporalLayers : public Vp8FrameBufferController {
  public:
diff --git a/modules/video_coding/video_codec_initializer_unittest.cc b/modules/video_coding/video_codec_initializer_unittest.cc
index 045c86a..6688050 100644
--- a/modules/video_coding/video_codec_initializer_unittest.cc
+++ b/modules/video_coding/video_codec_initializer_unittest.cc
@@ -40,21 +40,21 @@
 namespace webrtc {
 
 namespace {
-const int kDefaultWidth = 1280;
-const int kDefaultHeight = 720;
-const int kDefaultFrameRate = 30;
-const uint32_t kDefaultMinBitrateBps = 60000;
-const uint32_t kDefaultTargetBitrateBps = 2000000;
-const uint32_t kDefaultMaxBitrateBps = 2000000;
-const uint32_t kDefaultMinTransmitBitrateBps = 400000;
-const int kDefaultMaxQp = 48;
-const uint32_t kScreenshareTl0BitrateBps = 120000;
-const uint32_t kScreenshareConferenceTl0BitrateBps = 200000;
-const uint32_t kScreenshareCodecTargetBitrateBps = 200000;
-const uint32_t kScreenshareDefaultFramerate = 5;
+constexpr int kDefaultWidth = 1280;
+constexpr int kDefaultHeight = 720;
+constexpr int kDefaultFrameRate = 30;
+constexpr uint32_t kDefaultMinBitrateBps = 60000;
+constexpr uint32_t kDefaultTargetBitrateBps = 2000000;
+constexpr uint32_t kDefaultMaxBitrateBps = 2000000;
+constexpr uint32_t kDefaultMinTransmitBitrateBps = 400000;
+constexpr int kDefaultMaxQp = 48;
+constexpr uint32_t kScreenshareTl0BitrateBps = 120000;
+constexpr uint32_t kScreenshareConferenceTl0BitrateBps = 200000;
+constexpr uint32_t kScreenshareCodecTargetBitrateBps = 200000;
+constexpr uint32_t kScreenshareDefaultFramerate = 5;
 // Bitrates for the temporal layers of the higher screenshare simulcast stream.
-const uint32_t kHighScreenshareTl0Bps = 800000;
-const uint32_t kHighScreenshareTl1Bps = 1200000;
+constexpr uint32_t kHighScreenshareTl0Bps = 800000;
+constexpr uint32_t kHighScreenshareTl1Bps = 1200000;
 }  // namespace
 
 // TODO(sprang): Extend coverage to handle the rest of the codec initializer.
diff --git a/p2p/base/p2p_transport_channel_unittest.cc b/p2p/base/p2p_transport_channel_unittest.cc
index fa2ea48..7abf8450 100644
--- a/p2p/base/p2p_transport_channel_unittest.cc
+++ b/p2p/base/p2p_transport_channel_unittest.cc
@@ -129,14 +129,14 @@
 
 // Default timeout for tests in this file.
 // Should be large enough for slow buildbots to run the tests reliably.
-const int kDefaultTimeout = 10000;
-const int kMediumTimeout = 3000;
-const int kShortTimeout = 1000;
+constexpr int kDefaultTimeout = 10000;
+constexpr int kMediumTimeout = 3000;
+constexpr int kShortTimeout = 1000;
 
-const int kOnlyLocalPorts = webrtc::PORTALLOCATOR_DISABLE_STUN |
-                            webrtc::PORTALLOCATOR_DISABLE_RELAY |
-                            webrtc::PORTALLOCATOR_DISABLE_TCP;
-const int LOW_RTT = 20;
+constexpr int kOnlyLocalPorts = webrtc::PORTALLOCATOR_DISABLE_STUN |
+                                webrtc::PORTALLOCATOR_DISABLE_RELAY |
+                                webrtc::PORTALLOCATOR_DISABLE_TCP;
+constexpr int LOW_RTT = 20;
 // Addresses on the public internet.
 const SocketAddress kPublicAddrs[2] = {SocketAddress("11.11.11.11", 0),
                                        SocketAddress("22.22.22.22", 0)};
diff --git a/p2p/base/port_allocator_unittest.cc b/p2p/base/port_allocator_unittest.cc
index ec53ea3..8bc61da 100644
--- a/p2p/base/port_allocator_unittest.cc
+++ b/p2p/base/port_allocator_unittest.cc
@@ -30,13 +30,19 @@
 using ::webrtc::CreateEnvironment;
 using ::webrtc::IceCandidateType;
 
-static const char kContentName[] = "test content";
+namespace {
+constexpr char kContentName[] = "test content";
 // Based on ICE_UFRAG_LENGTH
-static const char kIceUfrag[] = "UF00";
+constexpr char kIceUfrag[] = "UF00";
 // Based on ICE_PWD_LENGTH
-static const char kIcePwd[] = "TESTICEPWD00000000000000";
-static const char kTurnUsername[] = "test";
-static const char kTurnPassword[] = "test";
+constexpr char kIcePwd[] = "TESTICEPWD00000000000000";
+constexpr char kTurnUsername[] = "test";
+constexpr char kTurnPassword[] = "test";
+
+// Constants for testing candidates
+constexpr char kIpv4Address[] = "12.34.56.78";
+constexpr char kIpv4AddressWithPort[] = "12.34.56.78:443";
+}  // namespace
 
 class PortAllocatorTest : public ::testing::Test, public sigslot::has_slots<> {
  public:
@@ -288,10 +294,6 @@
   allocator_->DiscardCandidatePool();
 }
 
-// Constants for testing candidates
-const char kIpv4Address[] = "12.34.56.78";
-const char kIpv4AddressWithPort[] = "12.34.56.78:443";
-
 TEST_F(PortAllocatorTest, SanitizeEmptyCandidateDefaultConfig) {
   webrtc::Candidate input;
   webrtc::Candidate output = allocator_->SanitizeCandidate(input);
diff --git a/p2p/base/regathering_controller_unittest.cc b/p2p/base/regathering_controller_unittest.cc
index 33ead46..51f8214 100644
--- a/p2p/base/regathering_controller_unittest.cc
+++ b/p2p/base/regathering_controller_unittest.cc
@@ -34,17 +34,17 @@
 
 namespace {
 
-const int kOnlyLocalPorts = webrtc::PORTALLOCATOR_DISABLE_STUN |
-                            webrtc::PORTALLOCATOR_DISABLE_RELAY |
-                            webrtc::PORTALLOCATOR_DISABLE_TCP;
+constexpr int kOnlyLocalPorts = webrtc::PORTALLOCATOR_DISABLE_STUN |
+                                webrtc::PORTALLOCATOR_DISABLE_RELAY |
+                                webrtc::PORTALLOCATOR_DISABLE_TCP;
 // The address of the public STUN server.
 const webrtc::SocketAddress kStunAddr("99.99.99.1", webrtc::STUN_SERVER_PORT);
 // The addresses for the public TURN server.
 const webrtc::SocketAddress kTurnUdpIntAddr("99.99.99.3",
                                             webrtc::STUN_SERVER_PORT);
 const webrtc::RelayCredentials kRelayCredentials("test", "test");
-const char kIceUfrag[] = "UF00";
-const char kIcePwd[] = "TESTICEPWD00000000000000";
+constexpr char kIceUfrag[] = "UF00";
+constexpr char kIcePwd[] = "TESTICEPWD00000000000000";
 
 }  // namespace
 
diff --git a/p2p/base/stun_port_unittest.cc b/p2p/base/stun_port_unittest.cc
index dc5c215..6d74db4 100644
--- a/p2p/base/stun_port_unittest.cc
+++ b/p2p/base/stun_port_unittest.cc
@@ -95,13 +95,14 @@
 const SocketAddress kBadHostnameAddr("not-a-real-hostname", 5000);
 // STUN timeout (with all retries) is webrtc::STUN_TOTAL_TIMEOUT.
 // Add some margin of error for slow bots.
-const int kTimeoutMs = webrtc::STUN_TOTAL_TIMEOUT;
+constexpr int kTimeoutMs = webrtc::STUN_TOTAL_TIMEOUT;
 // stun prio = 100 (srflx) << 24 | 30 (IPv4) << 8 | 256 - 1 (component)
-const uint32_t kStunCandidatePriority = (100 << 24) | (30 << 8) | (256 - 1);
+constexpr uint32_t kStunCandidatePriority = (100 << 24) | (30 << 8) | (256 - 1);
 // stun prio = 100 (srflx) << 24 | 40 (IPv6) << 8 | 256 - 1 (component)
-const uint32_t kIPv6StunCandidatePriority = (100 << 24) | (40 << 8) | (256 - 1);
-const int kInfiniteLifetime = -1;
-const int kHighCostPortKeepaliveLifetimeMs = 2 * 60 * 1000;
+constexpr uint32_t kIPv6StunCandidatePriority =
+    (100 << 24) | (40 << 8) | (256 - 1);
+constexpr int kInfiniteLifetime = -1;
+constexpr int kHighCostPortKeepaliveLifetimeMs = 2 * 60 * 1000;
 
 constexpr uint64_t kTiebreakerDefault = 44444;
 
diff --git a/p2p/base/turn_port_unittest.cc b/p2p/base/turn_port_unittest.cc
index 15903be..5afce1b 100644
--- a/p2p/base/turn_port_unittest.cc
+++ b/p2p/base/turn_port_unittest.cc
@@ -112,13 +112,13 @@
 const SocketAddress kTurnInvalidAddr("www.google.invalid.", 3478);
 const SocketAddress kTurnValidAddr("www.google.valid.", 3478);
 
-const char kCandidateFoundation[] = "foundation";
-const char kIceUfrag1[] = "TESTICEUFRAG0001";
-const char kIceUfrag2[] = "TESTICEUFRAG0002";
-const char kIcePwd1[] = "TESTICEPWD00000000000001";
-const char kIcePwd2[] = "TESTICEPWD00000000000002";
-const char kTurnUsername[] = "test";
-const char kTurnPassword[] = "test";
+constexpr char kCandidateFoundation[] = "foundation";
+constexpr char kIceUfrag1[] = "TESTICEUFRAG0001";
+constexpr char kIceUfrag2[] = "TESTICEUFRAG0002";
+constexpr char kIcePwd1[] = "TESTICEPWD00000000000001";
+constexpr char kIcePwd2[] = "TESTICEPWD00000000000002";
+constexpr char kTurnUsername[] = "test";
+constexpr char kTurnPassword[] = "test";
 // This test configures the virtual socket server to simulate delay so that we
 // can verify operations take no more than the expected number of round trips.
 constexpr unsigned int kSimulatedRtt = 50;
diff --git a/p2p/dtls/dtls_transport_unittest.cc b/p2p/dtls/dtls_transport_unittest.cc
index 1e7067d..b1dced7 100644
--- a/p2p/dtls/dtls_transport_unittest.cc
+++ b/p2p/dtls/dtls_transport_unittest.cc
@@ -67,7 +67,7 @@
 static const int kFakePacketId = 0x1234;
 static const int kTimeout = 10000;
 
-const uint8_t kRtpLeadByte = 0x80;
+constexpr uint8_t kRtpLeadByte = 0x80;
 
 static bool IsRtpLeadByte(uint8_t b) {
   return b == kRtpLeadByte;
diff --git a/pc/channel_unittest.cc b/pc/channel_unittest.cc
index 7209a3b..611339c 100644
--- a/pc/channel_unittest.cc
+++ b/pc/channel_unittest.cc
@@ -88,14 +88,14 @@
     webrtc::CreateAudioCodec(103, "ISAC", 40000, 1);
 const webrtc::Codec kH264Codec = webrtc::CreateVideoCodec(97, "H264");
 const webrtc::Codec kH264SvcCodec = webrtc::CreateVideoCodec(99, "H264-SVC");
-const uint32_t kSsrc1 = 0x1111;
-const uint32_t kSsrc2 = 0x2222;
-const uint32_t kSsrc3 = 0x3333;
-const uint32_t kSsrc4 = 0x4444;
-const int kAudioPts[] = {0, 8};
-const int kVideoPts[] = {97, 99};
-const char kAudioMid[] = "0";
-const char kVideoMid[] = "1";
+constexpr uint32_t kSsrc1 = 0x1111;
+constexpr uint32_t kSsrc2 = 0x2222;
+constexpr uint32_t kSsrc3 = 0x3333;
+constexpr uint32_t kSsrc4 = 0x4444;
+constexpr int kAudioPts[] = {0, 8};
+constexpr int kVideoPts[] = {97, 99};
+constexpr char kAudioMid[] = "0";
+constexpr char kVideoMid[] = "1";
 enum class NetworkIsWorker { Yes, No };
 
 template <class ChannelT,
diff --git a/pc/dtls_srtp_transport_unittest.cc b/pc/dtls_srtp_transport_unittest.cc
index a4c27fe..1101ab2 100644
--- a/pc/dtls_srtp_transport_unittest.cc
+++ b/pc/dtls_srtp_transport_unittest.cc
@@ -46,7 +46,7 @@
 using ::webrtc::RtpTransport;
 using ::webrtc::SrtpTransport;
 
-const int kRtpAuthTagLen = 10;
+constexpr int kRtpAuthTagLen = 10;
 
 class DtlsSrtpTransportTest : public ::testing::Test,
                               public sigslot::has_slots<> {
diff --git a/pc/jsep_session_description_unittest.cc b/pc/jsep_session_description_unittest.cc
index 842462d..5960d58 100644
--- a/pc/jsep_session_description_unittest.cc
+++ b/pc/jsep_session_description_unittest.cc
@@ -39,17 +39,17 @@
 using ::testing::Values;
 
 namespace {
-const char kAudioMid[] = "audio";
-const char kVideoMid[] = "video";
-const char kCandidateUfrag[] = "ufrag";
-const char kCandidatePwd[] = "pwd";
-const char kCandidateUfragVoice[] = "ufrag_voice";
-const char kCandidatePwdVoice[] = "pwd_voice";
-const char kCandidateUfragVideo[] = "ufrag_video";
-const char kCandidatePwdVideo[] = "pwd_video";
-const char kCandidateFoundation[] = "a0+B/1";
-const uint32_t kCandidatePriority = 2130706432U;  // pref = 1.0
-const uint32_t kCandidateGeneration = 2;
+constexpr char kAudioMid[] = "audio";
+constexpr char kVideoMid[] = "video";
+constexpr char kCandidateUfrag[] = "ufrag";
+constexpr char kCandidatePwd[] = "pwd";
+constexpr char kCandidateUfragVoice[] = "ufrag_voice";
+constexpr char kCandidatePwdVoice[] = "pwd_voice";
+constexpr char kCandidateUfragVideo[] = "ufrag_video";
+constexpr char kCandidatePwdVideo[] = "pwd_video";
+constexpr char kCandidateFoundation[] = "a0+B/1";
+constexpr uint32_t kCandidatePriority = 2130706432U;  // pref = 1.0
+constexpr uint32_t kCandidateGeneration = 2;
 
 // This creates a session description with both audio and video media contents.
 // In SDP this is described by two m lines, one audio and one video.
diff --git a/pc/jsep_transport_unittest.cc b/pc/jsep_transport_unittest.cc
index f425777..06bf6fd 100644
--- a/pc/jsep_transport_unittest.cc
+++ b/pc/jsep_transport_unittest.cc
@@ -61,11 +61,11 @@
 namespace webrtc {
 namespace {
 
-const char kIceUfrag1[] = "U001";
-const char kIcePwd1[] = "TESTICEPWD00000000000001";
-const char kIceUfrag2[] = "U002";
-const char kIcePwd2[] = "TESTIEPWD00000000000002";
-const char kTransportName[] = "Test Transport";
+constexpr char kIceUfrag1[] = "U001";
+constexpr char kIcePwd1[] = "TESTICEPWD00000000000001";
+constexpr char kIceUfrag2[] = "U002";
+constexpr char kIcePwd2[] = "TESTIEPWD00000000000002";
+constexpr char kTransportName[] = "Test Transport";
 
 struct NegotiateRoleParams {
   ConnectionRole local_role;
diff --git a/pc/legacy_stats_collector_unittest.cc b/pc/legacy_stats_collector_unittest.cc
index 5f6aff4..36d9a49 100644
--- a/pc/legacy_stats_collector_unittest.cc
+++ b/pc/legacy_stats_collector_unittest.cc
@@ -61,30 +61,21 @@
 #include "test/gmock.h"
 #include "test/gtest.h"
 
+namespace webrtc {
+
 using ::testing::_;
 using ::testing::AtMost;
 using ::testing::Eq;
 using ::testing::Return;
 using ::testing::UnorderedElementsAre;
-using ::webrtc::ConnectionInfo;
-using ::webrtc::SsrcReceiverInfo;
-using ::webrtc::TransportChannelStats;
-using ::webrtc::VideoMediaInfo;
-using ::webrtc::VideoReceiverInfo;
-using ::webrtc::VideoSenderInfo;
-using ::webrtc::VoiceMediaInfo;
-using ::webrtc::VoiceReceiverInfo;
-using ::webrtc::VoiceSenderInfo;
-
-namespace webrtc {
 
 // Error return values
-const char kNotFound[] = "NOT FOUND";
+constexpr char kNotFound[] = "NOT FOUND";
 
 // Constant names for track identification.
-const char kLocalTrackId[] = "local_track_id";
-const char kRemoteTrackId[] = "remote_track_id";
-const uint32_t kSsrcOfTrack = 1234;
+constexpr char kLocalTrackId[] = "local_track_id";
+constexpr char kRemoteTrackId[] = "remote_track_id";
+constexpr uint32_t kSsrcOfTrack = 1234;
 
 class FakeAudioProcessor : public AudioProcessorInterface {
  public:
diff --git a/pc/media_session_unittest.cc b/pc/media_session_unittest.cc
index b63161b..0501ef0 100644
--- a/pc/media_session_unittest.cc
+++ b/pc/media_session_unittest.cc
@@ -87,9 +87,9 @@
 
 using Candidates = std::vector<Candidate>;
 
-const char kAudioMid[] = "0";
-const char kVideoMid[] = "1";
-const char kDataMid[] = "2";
+constexpr char kAudioMid[] = "0";
+constexpr char kVideoMid[] = "1";
+constexpr char kDataMid[] = "2";
 
 class CodecLookupHelperForTesting : public CodecLookupHelper {
  public:
@@ -144,11 +144,11 @@
 // H.265 level-id, according to H.265 spec, is calculated this way:
 // For any given H.265 level a.b, level-id = (a * 10 + b) * 3. For level 6.0,
 // level-id = (6 * 10 + 0) * 3 = 180. Similar for all other H.265 levels.
-const char kVideoCodecsH265Level6LevelId[] = "180";
-const char kVideoCodecsH265Level52LevelId[] = "156";
-const char kVideoCodecsH265Level5LevelId[] = "150";
-const char kVideoCodecsH265Level4LevelId[] = "120";
-const char kVideoCodecsH265Level31LevelId[] = "93";
+constexpr char kVideoCodecsH265Level6LevelId[] = "180";
+constexpr char kVideoCodecsH265Level52LevelId[] = "156";
+constexpr char kVideoCodecsH265Level5LevelId[] = "150";
+constexpr char kVideoCodecsH265Level4LevelId[] = "120";
+constexpr char kVideoCodecsH265Level31LevelId[] = "93";
 
 const SdpVideoFormat kH265MainProfileLevel31Sdp(
     "H265",
@@ -357,19 +357,19 @@
                  3),
 };
 
-const uint32_t kSimulcastParamsSsrc[] = {10, 11, 20, 21, 30, 31};
-const uint32_t kSimSsrc[] = {10, 20, 30};
-const uint32_t kFec1Ssrc[] = {10, 11};
-const uint32_t kFec2Ssrc[] = {20, 21};
-const uint32_t kFec3Ssrc[] = {30, 31};
+constexpr uint32_t kSimulcastParamsSsrc[] = {10, 11, 20, 21, 30, 31};
+constexpr uint32_t kSimSsrc[] = {10, 20, 30};
+constexpr uint32_t kFec1Ssrc[] = {10, 11};
+constexpr uint32_t kFec2Ssrc[] = {20, 21};
+constexpr uint32_t kFec3Ssrc[] = {30, 31};
 
-const char kMediaStream1[] = "stream_1";
-const char kMediaStream2[] = "stream_2";
-const char kVideoTrack1[] = "video_1";
-const char kVideoTrack2[] = "video_2";
-const char kAudioTrack1[] = "audio_1";
-const char kAudioTrack2[] = "audio_2";
-const char kAudioTrack3[] = "audio_3";
+constexpr char kMediaStream1[] = "stream_1";
+constexpr char kMediaStream2[] = "stream_2";
+constexpr char kVideoTrack1[] = "video_1";
+constexpr char kVideoTrack2[] = "video_2";
+constexpr char kAudioTrack1[] = "audio_1";
+constexpr char kAudioTrack2[] = "audio_2";
+constexpr char kAudioTrack3[] = "audio_3";
 
 const char* kMediaProtocols[] = {"RTP/AVP", "RTP/SAVP", "RTP/AVPF",
                                  "RTP/SAVPF"};
@@ -4882,18 +4882,18 @@
  *     6   | x    x    x |  x    x    x |  x    x    x    x    x
  */
 // Codecs used by offerer in the AudioCodecsAnswerTest
-const int kOfferSendCodecs[] = {0, 1, 3, 5, 6};
-const int kOfferRecvCodecs[] = {1, 2, 3, 4, 6};
+constexpr int kOfferSendCodecs[] = {0, 1, 3, 5, 6};
+constexpr int kOfferRecvCodecs[] = {1, 2, 3, 4, 6};
 // Codecs used in the answerer in the AudioCodecsAnswerTest.  The order is
 // jumbled to catch the answer not following the order in the offer.
-const int kAnswerSendCodecs[] = {6, 5, 2, 3, 4};
-const int kAnswerRecvCodecs[] = {6, 5, 4, 1, 0};
+constexpr int kAnswerSendCodecs[] = {6, 5, 2, 3, 4};
+constexpr int kAnswerRecvCodecs[] = {6, 5, 4, 1, 0};
 // The resulting sets of codecs in the answer in the AudioCodecsAnswerTest
-const int kResultSend_RecvCodecs[] = {0, 1, 5, 6};
-const int kResultRecv_SendCodecs[] = {2, 3, 4, 6};
-const int kResultSendrecv_SendCodecs[] = {3, 6};
-const int kResultSendrecv_RecvCodecs[] = {1, 6};
-const int kResultSendrecv_SendrecvCodecs[] = {6};
+constexpr int kResultSend_RecvCodecs[] = {0, 1, 5, 6};
+constexpr int kResultRecv_SendCodecs[] = {2, 3, 4, 6};
+constexpr int kResultSendrecv_SendCodecs[] = {3, 6};
+constexpr int kResultSendrecv_RecvCodecs[] = {1, 6};
+constexpr int kResultSendrecv_SendrecvCodecs[] = {6};
 
 template <typename T, int IDXS>
 std::vector<T> VectorFromIndices(const T* array, const int (&indices)[IDXS]) {
diff --git a/pc/peer_connection_end_to_end_unittest.cc b/pc/peer_connection_end_to_end_unittest.cc
index 2fcf4dc..32c0b9a 100644
--- a/pc/peer_connection_end_to_end_unittest.cc
+++ b/pc/peer_connection_end_to_end_unittest.cc
@@ -73,7 +73,7 @@
 
 namespace {
 
-const int kMaxWait = 25000;
+constexpr int kMaxWait = 25000;
 
 }  // namespace
 
diff --git a/pc/peer_connection_factory_unittest.cc b/pc/peer_connection_factory_unittest.cc
index 568c123..cde9c61 100644
--- a/pc/peer_connection_factory_unittest.cc
+++ b/pc/peer_connection_factory_unittest.cc
@@ -87,23 +87,25 @@
 using ::testing::Return;
 using ::testing::UnorderedElementsAre;
 
-const char kStunIceServer[] = "stun:stun.l.google.com:19302";
-const char kTurnIceServer[] = "turn:test.com:1234";
-const char kTurnIceServerWithTransport[] = "turn:hello.com?transport=tcp";
-const char kSecureTurnIceServer[] = "turns:hello.com?transport=tcp";
-const char kSecureTurnIceServerWithoutTransportParam[] = "turns:hello.com:443";
-const char kSecureTurnIceServerWithoutTransportAndPortParam[] =
+constexpr char kStunIceServer[] = "stun:stun.l.google.com:19302";
+constexpr char kTurnIceServer[] = "turn:test.com:1234";
+constexpr char kTurnIceServerWithTransport[] = "turn:hello.com?transport=tcp";
+constexpr char kSecureTurnIceServer[] = "turns:hello.com?transport=tcp";
+constexpr char kSecureTurnIceServerWithoutTransportParam[] =
+    "turns:hello.com:443";
+constexpr char kSecureTurnIceServerWithoutTransportAndPortParam[] =
     "turns:hello.com";
-const char kTurnIceServerWithNoUsernameInUri[] = "turn:test.com:1234";
-const char kTurnPassword[] = "turnpassword";
-const int kDefaultStunPort = 3478;
-const int kDefaultStunTlsPort = 5349;
-const char kTurnUsername[] = "test";
-const char kStunIceServerWithIPv4Address[] = "stun:1.2.3.4:1234";
-const char kStunIceServerWithIPv4AddressWithoutPort[] = "stun:1.2.3.4";
-const char kStunIceServerWithIPv6Address[] = "stun:[2401:fa00:4::]:1234";
-const char kStunIceServerWithIPv6AddressWithoutPort[] = "stun:[2401:fa00:4::]";
-const char kTurnIceServerWithIPv6Address[] = "turn:[2401:fa00:4::]:1234";
+constexpr char kTurnIceServerWithNoUsernameInUri[] = "turn:test.com:1234";
+constexpr char kTurnPassword[] = "turnpassword";
+constexpr int kDefaultStunPort = 3478;
+constexpr int kDefaultStunTlsPort = 5349;
+constexpr char kTurnUsername[] = "test";
+constexpr char kStunIceServerWithIPv4Address[] = "stun:1.2.3.4:1234";
+constexpr char kStunIceServerWithIPv4AddressWithoutPort[] = "stun:1.2.3.4";
+constexpr char kStunIceServerWithIPv6Address[] = "stun:[2401:fa00:4::]:1234";
+constexpr char kStunIceServerWithIPv6AddressWithoutPort[] =
+    "stun:[2401:fa00:4::]";
+constexpr char kTurnIceServerWithIPv6Address[] = "turn:[2401:fa00:4::]:1234";
 
 class NullPeerConnectionObserver : public PeerConnectionObserver {
  public:
diff --git a/pc/peer_connection_histogram_unittest.cc b/pc/peer_connection_histogram_unittest.cc
index d802c6d..7641345 100644
--- a/pc/peer_connection_histogram_unittest.cc
+++ b/pc/peer_connection_histogram_unittest.cc
@@ -48,9 +48,15 @@
 #include "test/wait_until.h"
 
 namespace webrtc {
-
 namespace {
 
+using ::testing::NiceMock;
+using RTCConfiguration = PeerConnectionInterface::RTCConfiguration;
+using RTCOfferAnswerOptions = PeerConnectionInterface::RTCOfferAnswerOptions;
+
+class PeerConnectionWrapperForUsageHistogramTest;
+typedef PeerConnectionWrapperForUsageHistogramTest* RawWrapperPtr;
+
 constexpr const char kBasicRemoteDescription[] = R"(v=0
 o=- 0 0 IN IP4 127.0.0.1
 s=-
@@ -68,11 +74,7 @@
 a=rtpmap:101 fake_audio_codec/8000
 )";
 
-using RTCConfiguration = PeerConnectionInterface::RTCConfiguration;
-using RTCOfferAnswerOptions = PeerConnectionInterface::RTCOfferAnswerOptions;
-using ::testing::NiceMock;
-
-const char kUsagePatternMetric[] = "WebRTC.PeerConnection.UsagePattern";
+constexpr char kUsagePatternMetric[] = "WebRTC.PeerConnection.UsagePattern";
 constexpr TimeDelta kDefaultTimeout = TimeDelta::Millis(10000);
 const SocketAddress kLocalAddrs[2] = {SocketAddress("1.1.1.1", 0),
                                       SocketAddress("2.2.2.2", 0)};
@@ -87,10 +89,6 @@
   return signature;
 }
 
-class PeerConnectionWrapperForUsageHistogramTest;
-
-typedef PeerConnectionWrapperForUsageHistogramTest* RawWrapperPtr;
-
 class ObserverForUsageHistogramTest : public MockPeerConnectionObserver {
  public:
   void OnIceCandidate(const IceCandidate* candidate) override;
@@ -812,5 +810,4 @@
 #endif
 
 }  // namespace
-
 }  // namespace webrtc
diff --git a/pc/peer_connection_interface_unittest.cc b/pc/peer_connection_interface_unittest.cc
index d54564d..04ac3fd 100644
--- a/pc/peer_connection_interface_unittest.cc
+++ b/pc/peer_connection_interface_unittest.cc
@@ -107,30 +107,30 @@
 using RTCConfiguration = PeerConnectionInterface::RTCConfiguration;
 using RTCOfferAnswerOptions = PeerConnectionInterface::RTCOfferAnswerOptions;
 
-const char kStreamId1[] = "local_stream_1";
-const char kStreamId2[] = "local_stream_2";
-const char kStreamId3[] = "local_stream_3";
-const int kDefaultStunPort = 3478;
-const char kStunAddressOnly[] = "stun:address";
-const char kStunInvalidPort[] = "stun:address:-1";
-const char kStunAddressPortAndMore1[] = "stun:address:port:more";
-const char kStunAddressPortAndMore2[] = "stun:address:port more";
-const char kTurnIceServerUri[] = "turn:turn.example.org";
-const char kTurnUsername[] = "user";
-const char kTurnPassword[] = "password";
-const char kTurnHostname[] = "turn.example.org";
-const uint32_t kTimeout = 10000U;
+constexpr char kStreamId1[] = "local_stream_1";
+constexpr char kStreamId2[] = "local_stream_2";
+constexpr char kStreamId3[] = "local_stream_3";
+constexpr int kDefaultStunPort = 3478;
+constexpr char kStunAddressOnly[] = "stun:address";
+constexpr char kStunInvalidPort[] = "stun:address:-1";
+constexpr char kStunAddressPortAndMore1[] = "stun:address:port:more";
+constexpr char kStunAddressPortAndMore2[] = "stun:address:port more";
+constexpr char kTurnIceServerUri[] = "turn:turn.example.org";
+constexpr char kTurnUsername[] = "user";
+constexpr char kTurnPassword[] = "password";
+constexpr char kTurnHostname[] = "turn.example.org";
+constexpr uint32_t kTimeout = 10000U;
 
-const char kStreams[][8] = {"stream1", "stream2"};
-const char kAudioTracks[][32] = {"audiotrack0", "audiotrack1"};
-const char kVideoTracks[][32] = {"videotrack0", "videotrack1"};
+constexpr char kStreams[][8] = {"stream1", "stream2"};
+constexpr char kAudioTracks[][32] = {"audiotrack0", "audiotrack1"};
+constexpr char kVideoTracks[][32] = {"videotrack0", "videotrack1"};
 
-const char kRecvonly[] = "recvonly";
-const char kSendrecv[] = "sendrecv";
+constexpr char kRecvonly[] = "recvonly";
+constexpr char kSendrecv[] = "sendrecv";
 
 // Reference SDP with a MediaStream with label "stream1" and audio track with
 // id "audio_1" and a video track with id "video_1;
-const char kSdpStringWithStream1PlanB[] =
+constexpr char kSdpStringWithStream1PlanB[] =
     "v=0\r\n"
     "o=- 0 0 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
@@ -160,7 +160,7 @@
 // Same string as above but with the MID changed to the Unified Plan default and
 // a=msid added. This is needed so that this SDP can be used as an answer for a
 // Unified Plan offer.
-const char kSdpStringWithStream1UnifiedPlan[] =
+constexpr char kSdpStringWithStream1UnifiedPlan[] =
     "v=0\r\n"
     "o=- 0 0 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
@@ -190,7 +190,7 @@
 
 // Reference SDP with a MediaStream with label "stream1" and audio track with
 // id "audio_1";
-const char kSdpStringWithStream1AudioTrackOnly[] =
+constexpr char kSdpStringWithStream1AudioTrackOnly[] =
     "v=0\r\n"
     "o=- 0 0 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
@@ -210,7 +210,7 @@
 // Reference SDP with two MediaStreams with label "stream1" and "stream2. Each
 // MediaStreams have one audio track and one video track.
 // This uses MSID.
-const char kSdpStringWithStream1And2PlanB[] =
+constexpr char kSdpStringWithStream1And2PlanB[] =
     "v=0\r\n"
     "o=- 0 0 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
@@ -242,7 +242,7 @@
     "a=ssrc:2 msid:stream1 videotrack0\r\n"
     "a=ssrc:4 cname:stream2\r\n"
     "a=ssrc:4 msid:stream2 videotrack1\r\n";
-const char kSdpStringWithStream1And2UnifiedPlan[] =
+constexpr char kSdpStringWithStream1And2UnifiedPlan[] =
     "v=0\r\n"
     "o=- 0 0 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
@@ -294,7 +294,7 @@
     "a=ssrc:4 msid:stream2 videotrack1\r\n";
 
 // Reference SDP without MediaStreams. Msid is not supported.
-const char kSdpStringWithoutStreams[] =
+constexpr char kSdpStringWithoutStreams[] =
     "v=0\r\n"
     "o=- 0 0 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
@@ -319,7 +319,7 @@
     "a=rtpmap:120 VP8/90000\r\n";
 
 // Reference SDP without MediaStreams. Msid is supported.
-const char kSdpStringWithMsidWithoutStreams[] =
+constexpr char kSdpStringWithMsidWithoutStreams[] =
     "v=0\r\n"
     "o=- 0 0 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
@@ -345,7 +345,7 @@
     "a=rtpmap:120 VP8/90000\r\n";
 
 // Reference SDP without MediaStreams and audio only.
-const char kSdpStringWithoutStreamsAudioOnly[] =
+constexpr char kSdpStringWithoutStreamsAudioOnly[] =
     "v=0\r\n"
     "o=- 0 0 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
@@ -361,7 +361,7 @@
     "a=rtpmap:111 OPUS/48000/2\r\n";
 
 // Reference SENDONLY SDP without MediaStreams. Msid is not supported.
-const char kSdpStringSendOnlyWithoutStreams[] =
+constexpr char kSdpStringSendOnlyWithoutStreams[] =
     "v=0\r\n"
     "o=- 0 0 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
@@ -387,14 +387,14 @@
     "a=rtcp-mux\r\n"
     "a=rtpmap:120 VP8/90000\r\n";
 
-const char kSdpStringInit[] =
+constexpr char kSdpStringInit[] =
     "v=0\r\n"
     "o=- 0 0 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
     "t=0 0\r\n"
     "a=msid-semantic: WMS\r\n";
 
-const char kSdpStringAudio[] =
+constexpr char kSdpStringAudio[] =
     "m=audio 1 RTP/AVPF 111\r\n"
     "a=ice-ufrag:e5785931\r\n"
     "a=ice-pwd:36fb7878390db89481c1d46daa4278d8\r\n"
@@ -405,7 +405,7 @@
     "a=rtcp-mux\r\n"
     "a=rtpmap:111 OPUS/48000/2\r\n";
 
-const char kSdpStringVideo[] =
+constexpr char kSdpStringVideo[] =
     "m=video 1 RTP/AVPF 120\r\n"
     "a=ice-ufrag:e5785931\r\n"
     "a=ice-pwd:36fb7878390db89481c1d46daa4278d8\r\n"
@@ -416,19 +416,19 @@
     "a=rtcp-mux\r\n"
     "a=rtpmap:120 VP8/90000\r\n";
 
-const char kSdpStringMs1Audio0[] =
+constexpr char kSdpStringMs1Audio0[] =
     "a=ssrc:1 cname:stream1\r\n"
     "a=ssrc:1 msid:stream1 audiotrack0\r\n";
 
-const char kSdpStringMs1Video0[] =
+constexpr char kSdpStringMs1Video0[] =
     "a=ssrc:2 cname:stream1\r\n"
     "a=ssrc:2 msid:stream1 videotrack0\r\n";
 
-const char kSdpStringMs1Audio1[] =
+constexpr char kSdpStringMs1Audio1[] =
     "a=ssrc:3 cname:stream1\r\n"
     "a=ssrc:3 msid:stream1 audiotrack1\r\n";
 
-const char kSdpStringMs1Video1[] =
+constexpr char kSdpStringMs1Video1[] =
     "a=ssrc:4 cname:stream1\r\n"
     "a=ssrc:4 msid:stream1 videotrack1\r\n";
 
diff --git a/pc/peer_connection_signaling_unittest.cc b/pc/peer_connection_signaling_unittest.cc
index 61c4a7a..571d224 100644
--- a/pc/peer_connection_signaling_unittest.cc
+++ b/pc/peer_connection_signaling_unittest.cc
@@ -82,7 +82,7 @@
 using ::testing::Values;
 
 namespace {
-const int64_t kWaitTimeout = 10000;
+constexpr int64_t kWaitTimeout = 10000;
 }  // namespace
 
 class PeerConnectionWrapperForSignalingTest : public PeerConnectionWrapper {
diff --git a/pc/rtc_stats_collector_unittest.cc b/pc/rtc_stats_collector_unittest.cc
index f3f2a92..77a9ebb 100644
--- a/pc/rtc_stats_collector_unittest.cc
+++ b/pc/rtc_stats_collector_unittest.cc
@@ -105,7 +105,7 @@
 
 namespace {
 
-const int64_t kGetStatsReportTimeoutMs = 1000;
+constexpr int64_t kGetStatsReportTimeoutMs = 1000;
 
 // Fake data used by `SetupExampleStatsVoiceGraph()` to fill in remote outbound
 // stats.
diff --git a/pc/rtp_sender_receiver_unittest.cc b/pc/rtp_sender_receiver_unittest.cc
index 5074c1d..5b32de7 100644
--- a/pc/rtp_sender_receiver_unittest.cc
+++ b/pc/rtp_sender_receiver_unittest.cc
@@ -71,15 +71,15 @@
 
 namespace {
 
-const char kStreamId1[] = "local_stream_1";
-const char kVideoTrackId[] = "video_1";
-const char kAudioTrackId[] = "audio_1";
-const uint32_t kVideoSsrc = 98;
-const uint32_t kVideoSsrc2 = 100;
-const uint32_t kAudioSsrc = 99;
-const uint32_t kAudioSsrc2 = 101;
-const uint32_t kVideoSsrcSimulcast = 102;
-const uint32_t kVideoSimulcastLayerCount = 2;
+constexpr char kStreamId1[] = "local_stream_1";
+constexpr char kVideoTrackId[] = "video_1";
+constexpr char kAudioTrackId[] = "audio_1";
+constexpr uint32_t kVideoSsrc = 98;
+constexpr uint32_t kVideoSsrc2 = 100;
+constexpr uint32_t kAudioSsrc = 99;
+constexpr uint32_t kAudioSsrc2 = 101;
+constexpr uint32_t kVideoSsrcSimulcast = 102;
+constexpr uint32_t kVideoSimulcastLayerCount = 2;
 
 class MockSetStreamsObserver
     : public webrtc::RtpSenderBase::SetStreamsObserver {
diff --git a/pc/webrtc_sdp_unittest.cc b/pc/webrtc_sdp_unittest.cc
index 5bb0a0c..12c6a79 100644
--- a/pc/webrtc_sdp_unittest.cc
+++ b/pc/webrtc_sdp_unittest.cc
@@ -64,39 +64,45 @@
 using ::testing::Field;
 using ::testing::Property;
 
-const uint32_t kDefaultSctpPort = 5000;
-const uint16_t kUnusualSctpPort = 9556;
-const char kSessionTime[] = "t=0 0\r\n";
-const uint32_t kCandidatePriority = 2130706432U;  // pref = 1.0
-const char kAttributeIceUfragVoice[] = "a=ice-ufrag:ufrag_voice\r\n";
-const char kAttributeIcePwdVoice[] = "a=ice-pwd:pwd_voice\r\n";
-const char kAttributeIceUfragVideo[] = "a=ice-ufrag:ufrag_video\r\n";
-const char kAttributeIcePwdVideo[] = "a=ice-pwd:pwd_video\r\n";
-const uint32_t kCandidateGeneration = 2;
-const char kCandidateFoundation1[] = "a0+B/1";
-const char kCandidateFoundation2[] = "a0+B/2";
-const char kCandidateFoundation3[] = "a0+B/3";
-const char kCandidateFoundation4[] = "a0+B/4";
-const char kFingerprint[] =
+constexpr uint32_t kDefaultSctpPort = 5000;
+constexpr uint16_t kUnusualSctpPort = 9556;
+constexpr char kSessionTime[] = "t=0 0\r\n";
+constexpr uint32_t kCandidatePriority = 2130706432U;  // pref = 1.0
+constexpr char kAttributeIceUfragVoice[] = "a=ice-ufrag:ufrag_voice\r\n";
+constexpr char kAttributeIcePwdVoice[] = "a=ice-pwd:pwd_voice\r\n";
+constexpr char kAttributeIceUfragVideo[] = "a=ice-ufrag:ufrag_video\r\n";
+constexpr char kAttributeIcePwdVideo[] = "a=ice-pwd:pwd_video\r\n";
+constexpr uint32_t kCandidateGeneration = 2;
+constexpr char kCandidateFoundation1[] = "a0+B/1";
+constexpr char kCandidateFoundation2[] = "a0+B/2";
+constexpr char kCandidateFoundation3[] = "a0+B/3";
+constexpr char kCandidateFoundation4[] = "a0+B/4";
+constexpr char kFingerprint[] =
     "a=fingerprint:sha-1 "
     "4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB\r\n";
-const char kExtmapAllowMixed[] = "a=extmap-allow-mixed\r\n";
-const int kExtmapId = 1;
-const char kExtmapUri[] = "http://example.com/082005/ext.htm#ttime";
-const char kExtmap[] = "a=extmap:1 http://example.com/082005/ext.htm#ttime\r\n";
-const char kExtmapWithDirectionAndAttribute[] =
+constexpr char kExtmapAllowMixed[] = "a=extmap-allow-mixed\r\n";
+constexpr int kExtmapId = 1;
+constexpr char kExtmapUri[] = "http://example.com/082005/ext.htm#ttime";
+constexpr char kExtmap[] =
+    "a=extmap:1 http://example.com/082005/ext.htm#ttime\r\n";
+constexpr char kExtmapWithDirectionAndAttribute[] =
     "a=extmap:1/sendrecv http://example.com/082005/ext.htm#ttime a1 a2\r\n";
-const char kExtmapWithDirectionAndAttributeEncrypted[] =
+constexpr char kExtmapWithDirectionAndAttributeEncrypted[] =
     "a=extmap:1/sendrecv urn:ietf:params:rtp-hdrext:encrypt "
     "http://example.com/082005/ext.htm#ttime a1 a2\r\n";
 
-const uint8_t kIdentityDigest[] = {0x4A, 0xAD, 0xB9, 0xB1, 0x3F, 0x82, 0x18,
-                                   0x3B, 0x54, 0x02, 0x12, 0xDF, 0x3E, 0x5D,
-                                   0x49, 0x6B, 0x19, 0xE5, 0x7C, 0xAB};
+constexpr uint8_t kIdentityDigest[] = {0x4A, 0xAD, 0xB9, 0xB1, 0x3F, 0x82, 0x18,
+                                       0x3B, 0x54, 0x02, 0x12, 0xDF, 0x3E, 0x5D,
+                                       0x49, 0x6B, 0x19, 0xE5, 0x7C, 0xAB};
 
-const char kDtlsSctp[] = "DTLS/SCTP";
-const char kUdpDtlsSctp[] = "UDP/DTLS/SCTP";
-const char kTcpDtlsSctp[] = "TCP/DTLS/SCTP";
+constexpr char kDtlsSctp[] = "DTLS/SCTP";
+constexpr char kUdpDtlsSctp[] = "UDP/DTLS/SCTP";
+constexpr char kTcpDtlsSctp[] = "TCP/DTLS/SCTP";
+
+constexpr char kMediaSectionMsidLine[] =
+    "a=msid:local_stream_1 audio_track_id_1";
+constexpr char kSsrcAttributeMsidLine[] =
+    "a=ssrc:1 msid:local_stream_1 audio_track_id_1";
 
 struct CodecParams {
   int max_ptime;
@@ -109,7 +115,7 @@
 };
 
 // Reference sdp string
-const char kSdpFullString[] =
+constexpr char kSdpFullString[] =
     "v=0\r\n"
     "o=- 18446744069414584320 18446462598732840960 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
@@ -172,7 +178,7 @@
     "a=ssrc:3 cname:stream_1_cname\r\n";
 
 // SDP reference string without the candidates.
-const char kSdpString[] =
+constexpr char kSdpString[] =
     "v=0\r\n"
     "o=- 18446744069414584320 18446462598732840960 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
@@ -211,7 +217,7 @@
     "a=ssrc:3 cname:stream_1_cname\r\n";
 
 // draft-ietf-mmusic-sctp-sdp-03
-const char kSdpSctpDataChannelString[] =
+constexpr char kSdpSctpDataChannelString[] =
     "m=application 9 UDP/DTLS/SCTP 5000\r\n"
     "c=IN IP4 0.0.0.0\r\n"
     "a=ice-ufrag:ufrag_data\r\n"
@@ -225,7 +231,7 @@
 // draft-ietf-mmusic-sctp-sdp-12
 // Note - this is invalid per draft-ietf-mmusic-sctp-sdp-26,
 // since the separator after "sctp-port" needs to be a colon.
-const char kSdpSctpDataChannelStringWithSctpPort[] =
+constexpr char kSdpSctpDataChannelStringWithSctpPort[] =
     "m=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\n"
     "a=sctp-port 5000\r\n"
     "c=IN IP4 0.0.0.0\r\n"
@@ -237,7 +243,7 @@
     "a=mid:data_content_name\r\n";
 
 // draft-ietf-mmusic-sctp-sdp-26
-const char kSdpSctpDataChannelStringWithSctpColonPort[] =
+constexpr char kSdpSctpDataChannelStringWithSctpColonPort[] =
     "m=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\n"
     "a=sctp-port:5000\r\n"
     "c=IN IP4 0.0.0.0\r\n"
@@ -248,7 +254,7 @@
 
     "a=mid:data_content_name\r\n";
 
-const char kSdpSctpDataChannelWithCandidatesString[] =
+constexpr char kSdpSctpDataChannelWithCandidatesString[] =
     "m=application 2345 UDP/DTLS/SCTP 5000\r\n"
     "c=IN IP4 74.125.127.126\r\n"
     "a=candidate:a0+B/1 1 udp 2130706432 192.168.1.5 1234 typ host "
@@ -266,7 +272,7 @@
     "a=mid:data_content_name\r\n"
     "a=sctpmap:5000 webrtc-datachannel 1024\r\n";
 
-const char kSdpConferenceString[] =
+constexpr char kSdpConferenceString[] =
     "v=0\r\n"
     "o=- 18446744069414584320 18446462598732840960 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
@@ -279,14 +285,14 @@
     "c=IN IP4 0.0.0.0\r\n"
     "a=x-google-flag:conference\r\n";
 
-const char kSdpSessionString[] =
+constexpr char kSdpSessionString[] =
     "v=0\r\n"
     "o=- 18446744069414584320 18446462598732840960 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
     "t=0 0\r\n"
     "a=msid-semantic: WMS local_stream\r\n";
 
-const char kSdpAudioString[] =
+constexpr char kSdpAudioString[] =
     "m=audio 9 RTP/SAVPF 111\r\n"
     "c=IN IP4 0.0.0.0\r\n"
     "a=rtcp:9 IN IP4 0.0.0.0\r\n"
@@ -300,7 +306,7 @@
     "a=ssrc:1 cname:stream_1_cname\r\n"
     "a=ssrc:1 msid:local_stream audio_track_id_1\r\n";
 
-const char kSdpVideoString[] =
+constexpr char kSdpVideoString[] =
     "m=video 9 RTP/SAVPF 120\r\n"
     "c=IN IP4 0.0.0.0\r\n"
     "a=rtcp:9 IN IP4 0.0.0.0\r\n"
@@ -315,7 +321,7 @@
     "a=ssrc:2 msid:local_stream video_track_id_1\r\n";
 
 // Reference sdp string using bundle-only.
-const char kBundleOnlySdpFullString[] =
+constexpr char kBundleOnlySdpFullString[] =
     "v=0\r\n"
     "o=- 18446744069414584320 18446462598732840960 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
@@ -369,7 +375,7 @@
 
 // Plan B SDP reference string, with 2 streams, 2 audio tracks and 3 video
 // tracks.
-const char kPlanBSdpFullString[] =
+constexpr char kPlanBSdpFullString[] =
     "v=0\r\n"
     "o=- 18446744069414584320 18446462598732840960 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
@@ -442,7 +448,7 @@
 
 // Unified Plan SDP reference string, with 2 streams, 2 audio tracks and 3 video
 // tracks.
-const char kUnifiedPlanSdpFullString[] =
+constexpr char kUnifiedPlanSdpFullString[] =
     "v=0\r\n"
     "o=- 18446744069414584320 18446462598732840960 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
@@ -558,7 +564,7 @@
 //   there are 0 media stream ids.
 // This Unified Plan SDP represents a SDP that signals the msid using both
 // a=msid and a=ssrc msid semantics.
-const char kUnifiedPlanSdpFullStringWithSpecialMsid[] =
+constexpr char kUnifiedPlanSdpFullStringWithSpecialMsid[] =
     "v=0\r\n"
     "o=- 18446744069414584320 18446462598732840960 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
@@ -638,7 +644,7 @@
     "a=ssrc:7 msid:- audio_track_id_3\r\n";
 
 // SDP string for unified plan without SSRCs
-const char kUnifiedPlanSdpFullStringNoSsrc[] =
+constexpr char kUnifiedPlanSdpFullStringNoSsrc[] =
     "v=0\r\n"
     "o=- 18446744069414584320 18446462598732840960 IN IP4 127.0.0.1\r\n"
     "s=-\r\n"
@@ -732,101 +738,101 @@
 
 // One candidate reference string as per W3c spec.
 // candidate:<blah> not a=candidate:<blah>CRLF
-const char kRawCandidate[] =
+constexpr char kRawCandidate[] =
     "candidate:a0+B/1 1 udp 2130706432 192.168.1.5 1234 typ host generation 2";
 // One candidate reference string.
-const char kSdpOneCandidate[] =
+constexpr char kSdpOneCandidate[] =
     "a=candidate:a0+B/1 1 udp 2130706432 192.168.1.5 1234 typ host "
     "generation 2\r\n";
 
-const char kSdpTcpActiveCandidate[] =
+constexpr char kSdpTcpActiveCandidate[] =
     "candidate:a0+B/1 1 tcp 2130706432 192.168.1.5 9 typ host "
     "tcptype active generation 2";
-const char kSdpTcpPassiveCandidate[] =
+constexpr char kSdpTcpPassiveCandidate[] =
     "candidate:a0+B/1 1 tcp 2130706432 192.168.1.5 9 typ host "
     "tcptype passive generation 2";
-const char kSdpTcpSOCandidate[] =
+constexpr char kSdpTcpSOCandidate[] =
     "candidate:a0+B/1 1 tcp 2130706432 192.168.1.5 9 typ host "
     "tcptype so generation 2";
-const char kSdpTcpInvalidCandidate[] =
+constexpr char kSdpTcpInvalidCandidate[] =
     "candidate:a0+B/1 1 tcp 2130706432 192.168.1.5 9 typ host "
     "tcptype invalid generation 2";
 
 // One candidate reference string with IPV6 address.
-const char kRawIPV6Candidate[] =
+constexpr char kRawIPV6Candidate[] =
     "candidate:a0+B/1 1 udp 2130706432 "
     "abcd:abcd:abcd:abcd:abcd:abcd:abcd:abcd 1234 typ host generation 2";
 
 // One candidate reference string.
-const char kSdpOneCandidateWithUfragPwd[] =
+constexpr char kSdpOneCandidateWithUfragPwd[] =
     "a=candidate:a0+B/1 1 udp 2130706432 192.168.1.5 1234 typ host network_name"
     " eth0 ufrag user_rtp pwd password_rtp generation 2\r\n";
 
-const char kRawHostnameCandidate[] =
+constexpr char kRawHostnameCandidate[] =
     "candidate:a0+B/1 1 udp 2130706432 a.test 1234 typ host generation 2";
 
 // Session id and version
-const char kSessionId[] = "18446744069414584320";
-const char kSessionVersion[] = "18446462598732840960";
+constexpr char kSessionId[] = "18446744069414584320";
+constexpr char kSessionVersion[] = "18446462598732840960";
 
 // ICE options.
-const char kIceOption1[] = "iceoption1";
-const char kIceOption2[] = "iceoption2";
-const char kIceOption3[] = "iceoption3";
+constexpr char kIceOption1[] = "iceoption1";
+constexpr char kIceOption2[] = "iceoption2";
+constexpr char kIceOption3[] = "iceoption3";
 
 // ICE ufrags/passwords.
-const char kUfragVoice[] = "ufrag_voice";
-const char kPwdVoice[] = "pwd_voice";
-const char kUfragVideo[] = "ufrag_video";
-const char kPwdVideo[] = "pwd_video";
-const char kUfragData[] = "ufrag_data";
-const char kPwdData[] = "pwd_data";
+constexpr char kUfragVoice[] = "ufrag_voice";
+constexpr char kPwdVoice[] = "pwd_voice";
+constexpr char kUfragVideo[] = "ufrag_video";
+constexpr char kPwdVideo[] = "pwd_video";
+constexpr char kUfragData[] = "ufrag_data";
+constexpr char kPwdData[] = "pwd_data";
 
 // Extra ufrags/passwords for extra unified plan m= sections.
-const char kUfragVoice2[] = "ufrag_voice_2";
-const char kPwdVoice2[] = "pwd_voice_2";
-const char kUfragVoice3[] = "ufrag_voice_3";
-const char kPwdVoice3[] = "pwd_voice_3";
-const char kUfragVideo2[] = "ufrag_video_2";
-const char kPwdVideo2[] = "pwd_video_2";
-const char kUfragVideo3[] = "ufrag_video_3";
-const char kPwdVideo3[] = "pwd_video_3";
+constexpr char kUfragVoice2[] = "ufrag_voice_2";
+constexpr char kPwdVoice2[] = "pwd_voice_2";
+constexpr char kUfragVoice3[] = "ufrag_voice_3";
+constexpr char kPwdVoice3[] = "pwd_voice_3";
+constexpr char kUfragVideo2[] = "ufrag_video_2";
+constexpr char kPwdVideo2[] = "pwd_video_2";
+constexpr char kUfragVideo3[] = "ufrag_video_3";
+constexpr char kPwdVideo3[] = "pwd_video_3";
 
 // Content name
-const char kAudioContentName[] = "audio_content_name";
-const char kVideoContentName[] = "video_content_name";
-const char kDataContentName[] = "data_content_name";
+constexpr char kAudioContentName[] = "audio_content_name";
+constexpr char kVideoContentName[] = "video_content_name";
+constexpr char kDataContentName[] = "data_content_name";
 
 // Extra content names for extra unified plan m= sections.
-const char kAudioContentName2[] = "audio_content_name_2";
-const char kAudioContentName3[] = "audio_content_name_3";
-const char kVideoContentName2[] = "video_content_name_2";
-const char kVideoContentName3[] = "video_content_name_3";
+constexpr char kAudioContentName2[] = "audio_content_name_2";
+constexpr char kAudioContentName3[] = "audio_content_name_3";
+constexpr char kVideoContentName2[] = "video_content_name_2";
+constexpr char kVideoContentName3[] = "video_content_name_3";
 
 // MediaStream 1
-const char kStreamId1[] = "local_stream_1";
-const char kStream1Cname[] = "stream_1_cname";
-const char kAudioTrackId1[] = "audio_track_id_1";
-const uint32_t kAudioTrack1Ssrc = 1;
-const char kVideoTrackId1[] = "video_track_id_1";
-const uint32_t kVideoTrack1Ssrc1 = 2;
-const uint32_t kVideoTrack1Ssrc2 = 3;
+constexpr char kStreamId1[] = "local_stream_1";
+constexpr char kStream1Cname[] = "stream_1_cname";
+constexpr char kAudioTrackId1[] = "audio_track_id_1";
+constexpr uint32_t kAudioTrack1Ssrc = 1;
+constexpr char kVideoTrackId1[] = "video_track_id_1";
+constexpr uint32_t kVideoTrack1Ssrc1 = 2;
+constexpr uint32_t kVideoTrack1Ssrc2 = 3;
 
 // MediaStream 2
-const char kStreamId2[] = "local_stream_2";
-const char kStream2Cname[] = "stream_2_cname";
-const char kAudioTrackId2[] = "audio_track_id_2";
-const uint32_t kAudioTrack2Ssrc = 4;
-const char kVideoTrackId2[] = "video_track_id_2";
-const uint32_t kVideoTrack2Ssrc = 5;
-const char kVideoTrackId3[] = "video_track_id_3";
-const uint32_t kVideoTrack3Ssrc = 6;
-const char kAudioTrackId3[] = "audio_track_id_3";
-const uint32_t kAudioTrack3Ssrc = 7;
+constexpr char kStreamId2[] = "local_stream_2";
+constexpr char kStream2Cname[] = "stream_2_cname";
+constexpr char kAudioTrackId2[] = "audio_track_id_2";
+constexpr uint32_t kAudioTrack2Ssrc = 4;
+constexpr char kVideoTrackId2[] = "video_track_id_2";
+constexpr uint32_t kVideoTrack2Ssrc = 5;
+constexpr char kVideoTrackId3[] = "video_track_id_3";
+constexpr uint32_t kVideoTrack3Ssrc = 6;
+constexpr char kAudioTrackId3[] = "audio_track_id_3";
+constexpr uint32_t kAudioTrack3Ssrc = 7;
 
 // Candidate
-const char kDummyMid[] = "dummy_mid";
-const int kDummyIndex = 123;
+constexpr char kDummyMid[] = "dummy_mid";
+constexpr int kDummyIndex = 123;
 
 // Misc
 SdpType kDummyType = SdpType::kOffer;
@@ -3745,10 +3751,6 @@
             jsep_desc.description()->msid_signaling());
 }
 
-const char kMediaSectionMsidLine[] = "a=msid:local_stream_1 audio_track_id_1";
-const char kSsrcAttributeMsidLine[] =
-    "a=ssrc:1 msid:local_stream_1 audio_track_id_1";
-
 TEST_F(WebRtcSdpTest, SerializeOnlyMediaSectionMsid) {
   jdesc_.description()->set_msid_signaling(kMsidSignalingMediaSection);
   std::string sdp = SdpSerialize(jdesc_);
diff --git a/rtc_base/async_dns_resolver_unittest.cc b/rtc_base/async_dns_resolver_unittest.cc
index ae03b20..bf595c2 100644
--- a/rtc_base/async_dns_resolver_unittest.cc
+++ b/rtc_base/async_dns_resolver_unittest.cc
@@ -29,7 +29,7 @@
 using ::testing::IsTrue;
 
 const TimeDelta kDefaultTimeout = TimeDelta::Millis(1000);
-const int kPortNumber = 3027;
+constexpr int kPortNumber = 3027;
 
 TEST(AsyncDnsResolver, ConstructorWorks) {
   AsyncDnsResolver resolver;
diff --git a/rtc_base/buffer_unittest.cc b/rtc_base/buffer_unittest.cc
index 47eb2e4..405d8fb 100644
--- a/rtc_base/buffer_unittest.cc
+++ b/rtc_base/buffer_unittest.cc
@@ -28,10 +28,8 @@
 using ::testing::ElementsAre;
 using ::testing::ElementsAreArray;
 
-// clang-format off
-const uint8_t kTestData[] = {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
-                             0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf};
-// clang-format on
+constexpr uint8_t kTestData[] = {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
+                                 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf};
 
 void TestBuf(const Buffer& b1, size_t size, size_t capacity) {
   EXPECT_EQ(b1.size(), size);
diff --git a/rtc_base/copy_on_write_buffer_unittest.cc b/rtc_base/copy_on_write_buffer_unittest.cc
index 6d73ee2..59247e5 100644
--- a/rtc_base/copy_on_write_buffer_unittest.cc
+++ b/rtc_base/copy_on_write_buffer_unittest.cc
@@ -24,10 +24,8 @@
 
 namespace {
 
-// clang-format off
-const uint8_t kTestData[] = {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
-                             0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf};
-// clang-format on
+constexpr uint8_t kTestData[] = {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
+                                 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf};
 
 }  // namespace
 
diff --git a/rtc_base/cpu_time_unittest.cc b/rtc_base/cpu_time_unittest.cc
index 591ae80..8bbc48c 100644
--- a/rtc_base/cpu_time_unittest.cc
+++ b/rtc_base/cpu_time_unittest.cc
@@ -27,9 +27,9 @@
 #endif
 
 namespace {
-const int kAllowedErrorMillisecs = 30;
-const int kProcessingTimeMillisecs = 500;
-const int kWorkingThreads = 2;
+constexpr int kAllowedErrorMillisecs = 30;
+constexpr int kProcessingTimeMillisecs = 500;
+constexpr int kWorkingThreads = 2;
 
 // Consumes approximately kProcessingTimeMillisecs of CPU time in single thread.
 void WorkingFunction(int64_t* counter) {
diff --git a/rtc_base/rate_statistics_unittest.cc b/rtc_base/rate_statistics_unittest.cc
index a037b7b..e5fda5c 100644
--- a/rtc_base/rate_statistics_unittest.cc
+++ b/rtc_base/rate_statistics_unittest.cc
@@ -21,7 +21,7 @@
 
 using webrtc::RateStatistics;
 
-const int64_t kWindowMs = 500;
+constexpr int64_t kWindowMs = 500;
 
 class RateStatisticsTest : public ::testing::Test {
  protected:
diff --git a/rtc_base/rate_tracker_unittest.cc b/rtc_base/rate_tracker_unittest.cc
index 7eed504..d2ceaba 100644
--- a/rtc_base/rate_tracker_unittest.cc
+++ b/rtc_base/rate_tracker_unittest.cc
@@ -16,7 +16,7 @@
 
 namespace webrtc {
 namespace {
-const uint32_t kBucketIntervalMs = 100;
+constexpr uint32_t kBucketIntervalMs = 100;
 }  // namespace
 
 class RateTrackerForTest : public RateTracker {
diff --git a/rtc_base/rolling_accumulator_unittest.cc b/rtc_base/rolling_accumulator_unittest.cc
index b32aa8c..c321e3c 100644
--- a/rtc_base/rolling_accumulator_unittest.cc
+++ b/rtc_base/rolling_accumulator_unittest.cc
@@ -18,7 +18,7 @@
 
 namespace {
 
-const double kLearningRate = 0.5;
+constexpr double kLearningRate = 0.5;
 
 // Add `n` samples drawn from uniform distribution in [a;b].
 void FillStatsFromUniformDistribution(RollingAccumulator<double>& stats,
diff --git a/rtc_base/ssl_identity_unittest.cc b/rtc_base/ssl_identity_unittest.cc
index ec1a800..a35afdc 100644
--- a/rtc_base/ssl_identity_unittest.cc
+++ b/rtc_base/ssl_identity_unittest.cc
@@ -41,7 +41,7 @@
 namespace webrtc {
 namespace {
 
-const char kTestCertificate[] =
+constexpr char kTestCertificate[] =
     "-----BEGIN CERTIFICATE-----\n"
     "MIIB6TCCAVICAQYwDQYJKoZIhvcNAQEEBQAwWzELMAkGA1UEBhMCQVUxEzARBgNV\n"
     "BAgTClF1ZWVuc2xhbmQxGjAYBgNVBAoTEUNyeXB0U29mdCBQdHkgTHRkMRswGQYD\n"
@@ -87,7 +87,7 @@
 // and the update changes the string form of the keys, these will have to be
 // updated too.  The fingerprint, fingerprint algorithm and base64 certificate
 // were created by calling `identity->certificate().GetStats()`.
-const char kRSA_PRIVATE_KEY_PEM[] =
+constexpr char kRSA_PRIVATE_KEY_PEM[] =
     "-----BEGIN PRI"   // Linebreak to avoid detection of private
     "VATE KEY-----\n"  // keys by linters.
     "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAMQPqDStRlYeDpkX\n"
@@ -105,14 +105,14 @@
     "bhvEzY/fu8gEp+EzsER96/D79az5z1BaMGL5OPM2xHBPJATKlswnAa7Lp3QKGZGk\n"
     "TxslfL18J71s\n"
     "-----END PRIVATE KEY-----\n";
-const char kRSA_PUBLIC_KEY_PEM[] =
+constexpr char kRSA_PUBLIC_KEY_PEM[] =
     "-----BEGIN PUBLIC KEY-----\n"
     "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDED6g0rUZWHg6ZF3q0Zr/mtZ2j\n"
     "PL0lUmNIBtqZZ656H1YlkVtzEalgvtNtDLCI94T2XkgJ7f8vxS/56+BGuzV3MHUa\n"
     "Nf9cRCu1P3/3I0oNWrp8rxwh8HBXDK99Ryxbx69GYHBcG4CLhSzRJe5CuRzDvQD8\n"
     "9Z7VI3pPAZgY/MjJfQIDAQAB\n"
     "-----END PUBLIC KEY-----\n";
-const char kRSA_CERT_PEM[] =
+constexpr char kRSA_CERT_PEM[] =
     "-----BEGIN CERTIFICATE-----\n"
     "MIIBnDCCAQWgAwIBAgIJAOEHLgeWYwrpMA0GCSqGSIb3DQEBCwUAMBAxDjAMBgNV\n"
     "BAMMBXRlc3QxMB4XDTE2MDQyNDE4MTAyMloXDTE2MDUyNTE4MTAyMlowEDEOMAwG\n"
@@ -124,11 +124,11 @@
     "yTpU3ixErjQvoZew5ngXTEvTY8BSQUijJEaLWh8n6NDKRbEGTdAk8nPAmq9hdCFq\n"
     "e3UkexqNHm3g/VxG4NUC1Y+w29ai0/Rgh+VvgbDwK+Q=\n"
     "-----END CERTIFICATE-----\n";
-const char kRSA_FINGERPRINT[] =
+constexpr char kRSA_FINGERPRINT[] =
     "3C:E8:B2:70:09:CF:A9:09:5A:F4:EF:8F:8D:8A:32:FF:EA:04:91:BA:6E:D4:17:78:16"
     ":2A:EE:F9:9A:DD:E2:2B";
-const char kRSA_FINGERPRINT_ALGORITHM[] = "sha-256";
-const char kRSA_BASE64_CERTIFICATE[] =
+constexpr char kRSA_FINGERPRINT_ALGORITHM[] = "sha-256";
+constexpr char kRSA_BASE64_CERTIFICATE[] =
     "MIIBnDCCAQWgAwIBAgIJAOEHLgeWYwrpMA0GCSqGSIb3DQEBCwUAMBAxDjAMBgNVBAMMBXRlc3"
     "QxMB4XDTE2MDQyNDE4MTAyMloXDTE2MDUyNTE4MTAyMlowEDEOMAwGA1UEAwwFdGVzdDEwgZ8w"
     "DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMQPqDStRlYeDpkXerRmv+a1naM8vSVSY0gG2plnrn"
@@ -138,19 +138,19 @@
     "i8dxyTpU3ixErjQvoZew5ngXTEvTY8BSQUijJEaLWh8n6NDKRbEGTdAk8nPAmq9hdCFqe3Ukex"
     "qNHm3g/VxG4NUC1Y+w29ai0/Rgh+VvgbDwK+Q=";
 
-const char kECDSA_PRIVATE_KEY_PEM[] =
+constexpr char kECDSA_PRIVATE_KEY_PEM[] =
     "-----BEGIN PRI"   // Linebreak to avoid detection of private
     "VATE KEY-----\n"  // keys by linters.
     "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg/AkEA2hklq7dQ2rN\n"
     "ZxYL6hOUACL4pn7P4FYlA3ZQhIChRANCAAR7YgdO3utP/8IqVRq8G4VZKreMAxeN\n"
     "rUa12twthv4uFjuHAHa9D9oyAjncmn+xvZZRyVmKrA56jRzENcEEHoAg\n"
     "-----END PRIVATE KEY-----\n";
-const char kECDSA_PUBLIC_KEY_PEM[] =
+constexpr char kECDSA_PUBLIC_KEY_PEM[] =
     "-----BEGIN PUBLIC KEY-----\n"
     "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEe2IHTt7rT//CKlUavBuFWSq3jAMX\n"
     "ja1GtdrcLYb+LhY7hwB2vQ/aMgI53Jp/sb2WUclZiqwOeo0cxDXBBB6AIA==\n"
     "-----END PUBLIC KEY-----\n";
-const char kECDSA_CERT_PEM[] =
+constexpr char kECDSA_CERT_PEM[] =
     "-----BEGIN CERTIFICATE-----\n"
     "MIIBFDCBu6ADAgECAgkArpkxjw62sW4wCgYIKoZIzj0EAwIwEDEOMAwGA1UEAwwF\n"
     "dGVzdDMwHhcNMTYwNDI0MTgxNDM4WhcNMTYwNTI1MTgxNDM4WjAQMQ4wDAYDVQQD\n"
@@ -159,11 +159,11 @@
     "gCAwCgYIKoZIzj0EAwIDSAAwRQIhANyreQ/K5yuPPpirsd0e/4WGLHou6bIOSQks\n"
     "DYzo56NmAiAKOr3u8ol3LmygbUCwEvtWrS8QcJDygxHPACo99hkekw==\n"
     "-----END CERTIFICATE-----\n";
-const char kECDSA_FINGERPRINT[] =
+constexpr char kECDSA_FINGERPRINT[] =
     "9F:47:FA:88:76:3D:18:B8:00:A0:59:9D:C3:5D:34:0B:1F:B8:99:9E:68:DA:F3:A5:DA"
     ":50:33:A9:FF:4D:31:89";
-const char kECDSA_FINGERPRINT_ALGORITHM[] = "sha-256";
-const char kECDSA_BASE64_CERTIFICATE[] =
+constexpr char kECDSA_FINGERPRINT_ALGORITHM[] = "sha-256";
+constexpr char kECDSA_BASE64_CERTIFICATE[] =
     "MIIBFDCBu6ADAgECAgkArpkxjw62sW4wCgYIKoZIzj0EAwIwEDEOMAwGA1UEAwwFdGVzdDMwHh"
     "cNMTYwNDI0MTgxNDM4WhcNMTYwNTI1MTgxNDM4WjAQMQ4wDAYDVQQDDAV0ZXN0MzBZMBMGByqG"
     "SM49AgEGCCqGSM49AwEHA0IABHtiB07e60//wipVGrwbhVkqt4wDF42tRrXa3C2G/i4WO4cAdr"
diff --git a/rtc_base/ssl_stream_adapter_unittest.cc b/rtc_base/ssl_stream_adapter_unittest.cc
index f78aaf1..6c19323 100644
--- a/rtc_base/ssl_stream_adapter_unittest.cc
+++ b/rtc_base/ssl_stream_adapter_unittest.cc
@@ -68,7 +68,7 @@
 using ::testing::WithParamInterface;
 
 // Generated using `openssl genrsa -out key.pem 2048`
-const char kRSA_PRIVATE_KEY_PEM[] =
+constexpr char kRSA_PRIVATE_KEY_PEM[] =
     "-----BEGIN RSA PRI"  // Linebreak to avoid detection of private
     "VATE KEY-----\n"     // keys by linters.
     "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC4XOJ6agj673j+\n"
@@ -104,7 +104,7 @@
 // `openssl req -new -x509 -key key.pem -out cert.pem -days 365`
 // after setting the machine date to something that will ensure the
 // certificate is expired.
-const char kCERT_PEM[] =
+constexpr char kCERT_PEM[] =
     "-----BEGIN CERTIFICATE-----\n"
     "MIIDjTCCAnWgAwIBAgIUTkCy4o8+4W/86RYmgWc8FEhWTzYwDQYJKoZIhvcNAQEL\n"
     "BQAwVjELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM\n"
@@ -129,7 +129,7 @@
     "-----END CERTIFICATE-----\n";
 
 // Google GTS CA 1C3 certificate. Obtained from https://www.webrtc.org
-const char kIntCert1[] =
+constexpr char kIntCert1[] =
     "-----BEGIN CERTIFICATE-----\n"
     "MIIFljCCA36gAwIBAgINAgO8U1lrNMcY9QFQZjANBgkqhkiG9w0BAQsFADBHMQsw\n"
     "CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU\n"
@@ -164,7 +164,7 @@
     "-----END CERTIFICATE-----\n";
 
 // Google GTS Root R1 certificate. Obtained from https://www.webrtc.org
-const char kCACert[] =
+constexpr char kCACert[] =
     "-----BEGIN CERTIFICATE-----\n"
     "MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBH\n"
     "MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM\n"
@@ -403,8 +403,8 @@
   BufferQueue buffer_;
 };
 
-const int kBufferCapacity = 1;
-const size_t kDefaultBufferSize = 2048;
+constexpr int kBufferCapacity = 1;
+constexpr size_t kDefaultBufferSize = 2048;
 
 class SSLStreamAdapterTestBase : public ::testing::Test,
                                  public sigslot::has_slots<> {
diff --git a/rtc_base/swap_queue_unittest.cc b/rtc_base/swap_queue_unittest.cc
index e8ce02a..207a28c 100644
--- a/rtc_base/swap_queue_unittest.cc
+++ b/rtc_base/swap_queue_unittest.cc
@@ -22,7 +22,7 @@
 namespace {
 
 // Test parameter for the basic sample based SwapQueue Tests.
-const size_t kChunkSize = 3;
+constexpr size_t kChunkSize = 3;
 
 // Queue item verification function for the vector test.
 bool LengthVerifierFunction(const std::vector<int>& v) {
diff --git a/system_wrappers/source/metrics_default_unittest.cc b/system_wrappers/source/metrics_default_unittest.cc
index be612e7..bc4d7c8 100644
--- a/system_wrappers/source/metrics_default_unittest.cc
+++ b/system_wrappers/source/metrics_default_unittest.cc
@@ -22,8 +22,8 @@
 namespace webrtc {
 
 namespace {
-const int kSample = 22;
-const char kName[] = "Name";
+constexpr int kSample = 22;
+constexpr char kName[] = "Name";
 
 int NumSamples(absl::string_view name,
                const std::map<std::string,
diff --git a/system_wrappers/source/metrics_unittest.cc b/system_wrappers/source/metrics_unittest.cc
index 4952daa..4ba72c8 100644
--- a/system_wrappers/source/metrics_unittest.cc
+++ b/system_wrappers/source/metrics_unittest.cc
@@ -25,7 +25,7 @@
 #if RTC_METRICS_ENABLED
 namespace webrtc {
 namespace {
-const int kSample = 22;
+constexpr int kSample = 22;
 
 void AddSparseSample(absl::string_view name, int sample) {
   RTC_HISTOGRAM_COUNTS_SPARSE_100(name, sample);
diff --git a/test/testsupport/video_frame_writer_unittest.cc b/test/testsupport/video_frame_writer_unittest.cc
index 2c32409..9c858a1 100644
--- a/test/testsupport/video_frame_writer_unittest.cc
+++ b/test/testsupport/video_frame_writer_unittest.cc
@@ -32,15 +32,15 @@
 namespace test {
 namespace {
 
-const size_t kFrameWidth = 50;
-const size_t kFrameHeight = 20;
-const size_t kFrameLength = 3 * kFrameWidth * kFrameHeight / 2;  // I420.
-const size_t kFrameRate = 30;
+constexpr size_t kFrameWidth = 50;
+constexpr size_t kFrameHeight = 20;
+constexpr size_t kFrameLength = 3 * kFrameWidth * kFrameHeight / 2;  // I420.
+constexpr size_t kFrameRate = 30;
 
 // Size of header: "YUV4MPEG2 W50 H20 F30:1 C420\n"
-const size_t kFileHeaderSize = 29;
+constexpr size_t kFileHeaderSize = 29;
 // Size of header: "FRAME\n"
-const size_t kFrameHeaderSize = 6;
+constexpr size_t kFrameHeaderSize = 6;
 
 scoped_refptr<I420Buffer> CreateI420Buffer(int width, int height) {
   scoped_refptr<I420Buffer> buffer(I420Buffer::Create(width, height));
diff --git a/test/testsupport/y4m_frame_writer_unittest.cc b/test/testsupport/y4m_frame_writer_unittest.cc
index f2acc00..af287e6 100644
--- a/test/testsupport/y4m_frame_writer_unittest.cc
+++ b/test/testsupport/y4m_frame_writer_unittest.cc
@@ -24,10 +24,10 @@
 namespace test {
 
 namespace {
-const size_t kFrameWidth = 50;
-const size_t kFrameHeight = 20;
-const size_t kFrameLength = 3 * kFrameWidth * kFrameHeight / 2;  // I420.
-const size_t kFrameRate = 30;
+constexpr size_t kFrameWidth = 50;
+constexpr size_t kFrameHeight = 20;
+constexpr size_t kFrameLength = 3 * kFrameWidth * kFrameHeight / 2;  // I420.
+constexpr size_t kFrameRate = 30;
 
 const std::string kFileHeader = "YUV4MPEG2 W50 H20 F30:1 C420\n";
 const std::string kFrameHeader = "FRAME\n";
diff --git a/test/testsupport/yuv_frame_writer_unittest.cc b/test/testsupport/yuv_frame_writer_unittest.cc
index 63c3cd1..19a259e 100644
--- a/test/testsupport/yuv_frame_writer_unittest.cc
+++ b/test/testsupport/yuv_frame_writer_unittest.cc
@@ -24,9 +24,9 @@
 namespace test {
 
 namespace {
-const size_t kFrameWidth = 50;
-const size_t kFrameHeight = 20;
-const size_t kFrameLength = 3 * kFrameWidth * kFrameHeight / 2;  // I420.
+constexpr size_t kFrameWidth = 50;
+constexpr size_t kFrameHeight = 20;
+constexpr size_t kFrameLength = 3 * kFrameWidth * kFrameHeight / 2;  // I420.
 }  // namespace
 
 class YuvFrameWriterTest : public ::testing::Test {
diff --git a/video/adaptation/overuse_frame_detector_unittest.cc b/video/adaptation/overuse_frame_detector_unittest.cc
index b836cc3..30fa879 100644
--- a/video/adaptation/overuse_frame_detector_unittest.cc
+++ b/video/adaptation/overuse_frame_detector_unittest.cc
@@ -36,11 +36,11 @@
 using ::testing::InvokeWithoutArgs;
 
 namespace {
-const int kWidth = 640;
-const int kHeight = 480;
+constexpr int kWidth = 640;
+constexpr int kHeight = 480;
 // Corresponds to load of 15%
-const int kFrameIntervalUs = 33 * kNumMicrosecsPerMillisec;
-const int kProcessTimeUs = 5 * kNumMicrosecsPerMillisec;
+constexpr int kFrameIntervalUs = 33 * kNumMicrosecsPerMillisec;
+constexpr int kProcessTimeUs = 5 * kNumMicrosecsPerMillisec;
 }  // namespace
 
 class MockCpuOveruseObserver : public OveruseFrameDetectorObserverInterface {
diff --git a/video/corruption_detection/halton_frame_sampler_unittest.cc b/video/corruption_detection/halton_frame_sampler_unittest.cc
index 135ccfb..9ee5ff0 100644
--- a/video/corruption_detection/halton_frame_sampler_unittest.cc
+++ b/video/corruption_detection/halton_frame_sampler_unittest.cc
@@ -38,15 +38,15 @@
 using Coordinates = HaltonFrameSampler::Coordinates;
 
 // Defaults for sampling tests.
-const int kDefaultScaledWidth = 4;
-const int kDefaultScaledHeight = 4;
-const double kDefaultStdDevGaussianBlur = 0.02;
+constexpr int kDefaultScaledWidth = 4;
+constexpr int kDefaultScaledHeight = 4;
+constexpr double kDefaultStdDevGaussianBlur = 0.02;
 
 #if GTEST_HAS_DEATH_TEST
 // Defaults for blurring tests.
-const int kDefaultRow = 3;
-const int kDefaultColumn = 2;
-const double kDefaultStdDev = 1.12;
+constexpr int kDefaultRow = 3;
+constexpr int kDefaultColumn = 2;
+constexpr double kDefaultStdDev = 1.12;
 #endif  // GTEST_HAS_DEATH_TEST
 
 VideoFrame MakeDefaultFrame() {
diff --git a/video/receive_statistics_proxy_unittest.cc b/video/receive_statistics_proxy_unittest.cc
index 101b745..520d2a2 100644
--- a/video/receive_statistics_proxy_unittest.cc
+++ b/video/receive_statistics_proxy_unittest.cc
@@ -50,10 +50,10 @@
 using ::testing::DoubleEq;
 
 const TimeDelta kFreqOffsetProcessInterval = TimeDelta::Seconds(40);
-const uint32_t kRemoteSsrc = 456;
-const int kMinRequiredSamples = 200;
-const int kWidth = 1280;
-const int kHeight = 720;
+constexpr uint32_t kRemoteSsrc = 456;
+constexpr int kMinRequiredSamples = 200;
+constexpr int kWidth = 1280;
+constexpr int kHeight = 720;
 }  // namespace
 
 // TODO(sakal): ReceiveStatisticsProxy is lacking unittesting.
diff --git a/video/rtp_video_stream_receiver2_unittest.cc b/video/rtp_video_stream_receiver2_unittest.cc
index db5e0cc..a188a00 100644
--- a/video/rtp_video_stream_receiver2_unittest.cc
+++ b/video/rtp_video_stream_receiver2_unittest.cc
@@ -82,7 +82,7 @@
 using ::testing::SizeIs;
 using ::testing::Values;
 
-const uint8_t kH264StartCode[] = {0x00, 0x00, 0x00, 0x01};
+constexpr uint8_t kH264StartCode[] = {0x00, 0x00, 0x00, 0x01};
 
 // Corruption detection metrics for testing.
 constexpr double kStd = 1.0;
diff --git a/video/send_delay_stats_unittest.cc b/video/send_delay_stats_unittest.cc
index 5bd0d98..b4eef11 100644
--- a/video/send_delay_stats_unittest.cc
+++ b/video/send_delay_stats_unittest.cc
@@ -24,14 +24,14 @@
 
 namespace webrtc {
 namespace {
-const uint32_t kSsrc1 = 17;
-const uint32_t kSsrc2 = 42;
-const uint32_t kRtxSsrc1 = 18;
-const uint32_t kRtxSsrc2 = 43;
-const uint16_t kPacketId = 2345;
+constexpr uint32_t kSsrc1 = 17;
+constexpr uint32_t kSsrc2 = 42;
+constexpr uint32_t kRtxSsrc1 = 18;
+constexpr uint32_t kRtxSsrc2 = 43;
+constexpr uint16_t kPacketId = 2345;
 const TimeDelta kMaxPacketDelay = TimeDelta::Seconds(11);
-const int kMinRequiredPeriodicSamples = 5;
-const int kProcessIntervalMs = 2000;
+constexpr int kMinRequiredPeriodicSamples = 5;
+constexpr int kProcessIntervalMs = 2000;
 }  // namespace
 
 class SendDelayStatsTest : public ::testing::Test {
diff --git a/video/send_statistics_proxy_unittest.cc b/video/send_statistics_proxy_unittest.cc
index 0ef5aba..089f4b7 100644
--- a/video/send_statistics_proxy_unittest.cc
+++ b/video/send_statistics_proxy_unittest.cc
@@ -53,17 +53,17 @@
 
 using ::testing::Optional;
 
-const uint32_t kFirstSsrc = 17;
-const uint32_t kSecondSsrc = 42;
-const uint32_t kFirstRtxSsrc = 18;
-const uint32_t kSecondRtxSsrc = 43;
-const uint32_t kFlexFecSsrc = 55;
-const int kFpsPeriodicIntervalMs = 2000;
-const int kWidth = 640;
-const int kHeight = 480;
-const int kQpIdx0 = 21;
-const int kQpIdx1 = 39;
-const int kRtpClockRateHz = 90000;
+constexpr uint32_t kFirstSsrc = 17;
+constexpr uint32_t kSecondSsrc = 42;
+constexpr uint32_t kFirstRtxSsrc = 18;
+constexpr uint32_t kSecondRtxSsrc = 43;
+constexpr uint32_t kFlexFecSsrc = 55;
+constexpr int kFpsPeriodicIntervalMs = 2000;
+constexpr int kWidth = 640;
+constexpr int kHeight = 480;
+constexpr int kQpIdx0 = 21;
+constexpr int kQpIdx1 = 39;
+constexpr int kRtpClockRateHz = 90000;
 const CodecSpecificInfo kDefaultCodecInfo = []() {
   CodecSpecificInfo codec_info;
   codec_info.codecType = kVideoCodecVP8;
diff --git a/video/stats_counter_unittest.cc b/video/stats_counter_unittest.cc
index 9f67afc..fba22bd 100644
--- a/video/stats_counter_unittest.cc
+++ b/video/stats_counter_unittest.cc
@@ -17,8 +17,8 @@
 
 namespace webrtc {
 namespace {
-const int kDefaultProcessIntervalMs = 2000;
-const uint32_t kStreamId = 123456;
+constexpr int kDefaultProcessIntervalMs = 2000;
+constexpr uint32_t kStreamId = 123456;
 
 class StatsCounterObserverImpl : public StatsCounterObserver {
  public:
diff --git a/video/video_stream_encoder_unittest.cc b/video/video_stream_encoder_unittest.cc
index 99f1275..0f0976e 100644
--- a/video/video_stream_encoder_unittest.cc
+++ b/video/video_stream_encoder_unittest.cc
@@ -143,21 +143,21 @@
 using ::testing::StrictMock;
 
 namespace {
-const int kMinPixelsPerFrame = 320 * 180;
-const int kQpLow = 1;
-const int kQpHigh = 2;
-const int kMinFramerateFps = 2;
-const int kMinBalancedFramerateFps = 7;
+constexpr int kMinPixelsPerFrame = 320 * 180;
+constexpr int kQpLow = 1;
+constexpr int kQpHigh = 2;
+constexpr int kMinFramerateFps = 2;
+constexpr int kMinBalancedFramerateFps = 7;
 constexpr TimeDelta kFrameTimeout = TimeDelta::Millis(100);
-const size_t kMaxPayloadLength = 1440;
+constexpr size_t kMaxPayloadLength = 1440;
 const DataRate kTargetBitrate = DataRate::KilobitsPerSec(1000);
 const DataRate kLowTargetBitrate = DataRate::KilobitsPerSec(100);
 const DataRate kStartBitrate = DataRate::KilobitsPerSec(600);
 const DataRate kSimulcastTargetBitrate = DataRate::KilobitsPerSec(3150);
-const int kMaxInitialFramedrop = 4;
-const int kDefaultFramerate = 30;
-const int64_t kFrameIntervalMs = kNumMillisecsPerSec / kDefaultFramerate;
-const int64_t kProcessIntervalMs = 1000;
+constexpr int kMaxInitialFramedrop = 4;
+constexpr int kDefaultFramerate = 30;
+constexpr int64_t kFrameIntervalMs = kNumMillisecsPerSec / kDefaultFramerate;
+constexpr int64_t kProcessIntervalMs = 1000;
 const VideoEncoder::ResolutionBitrateLimits
     kEncoderBitrateLimits540p(960 * 540, 100 * 1000, 100 * 1000, 2000 * 1000);
 const VideoEncoder::ResolutionBitrateLimits
@@ -168,7 +168,7 @@
                          0x05, 0x03, 0xC7, 0xE0, 0x1B,
                          0x41, 0x10, 0x8D, 0x00};
 
-const uint8_t kCodedFrameVp8Qp25[] = {
+constexpr uint8_t kCodedFrameVp8Qp25[] = {
     0x10, 0x02, 0x00, 0x9d, 0x01, 0x2a, 0x10, 0x00, 0x10, 0x00,
     0x02, 0x47, 0x08, 0x85, 0x85, 0x88, 0x85, 0x84, 0x88, 0x0c,
     0x82, 0x00, 0x0c, 0x0d, 0x60, 0x00, 0xfe, 0xfc, 0x5c, 0xd0};