diff --git a/api/video_codecs/video_codec.cc b/api/video_codecs/video_codec.cc
index b841575..a710243 100644
--- a/api/video_codecs/video_codec.cc
+++ b/api/video_codecs/video_codec.cc
@@ -18,6 +18,16 @@
 #include "rtc_base/checks.h"
 
 namespace webrtc {
+namespace {
+constexpr char kPayloadNameVp8[] = "VP8";
+constexpr char kPayloadNameVp9[] = "VP9";
+// TODO(bugs.webrtc.org/11042): Rename to AV1 when rtp payload format for av1 is
+// frozen.
+constexpr char kPayloadNameAv1[] = "AV1X";
+constexpr char kPayloadNameH264[] = "H264";
+constexpr char kPayloadNameGeneric[] = "Generic";
+constexpr char kPayloadNameMultiplex[] = "Multiplex";
+}  // namespace
 
 bool VideoCodecVP8::operator==(const VideoCodecVP8& other) const {
   return (complexity == other.complexity &&
@@ -104,22 +114,19 @@
   return codec_specific_.H264;
 }
 
-static const char* kPayloadNameVp8 = "VP8";
-static const char* kPayloadNameVp9 = "VP9";
-static const char* kPayloadNameH264 = "H264";
-static const char* kPayloadNameGeneric = "Generic";
-static const char* kPayloadNameMultiplex = "Multiplex";
-
 const char* CodecTypeToPayloadString(VideoCodecType type) {
   switch (type) {
     case kVideoCodecVP8:
       return kPayloadNameVp8;
     case kVideoCodecVP9:
       return kPayloadNameVp9;
+    case kVideoCodecAV1:
+      return kPayloadNameAv1;
     case kVideoCodecH264:
       return kPayloadNameH264;
-    // Other codecs default to generic.
-    default:
+    case kVideoCodecMultiplex:
+      return kPayloadNameMultiplex;
+    case kVideoCodecGeneric:
       return kPayloadNameGeneric;
   }
 }
@@ -129,6 +136,8 @@
     return kVideoCodecVP8;
   if (absl::EqualsIgnoreCase(name, kPayloadNameVp9))
     return kVideoCodecVP9;
+  if (absl::EqualsIgnoreCase(name, kPayloadNameAv1))
+    return kVideoCodecAV1;
   if (absl::EqualsIgnoreCase(name, kPayloadNameH264))
     return kVideoCodecH264;
   if (absl::EqualsIgnoreCase(name, kPayloadNameMultiplex))
diff --git a/call/rtp_video_sender.cc b/call/rtp_video_sender.cc
index f9ef569..a926eb5 100644
--- a/call/rtp_video_sender.cc
+++ b/call/rtp_video_sender.cc
@@ -19,6 +19,7 @@
 #include "absl/strings/match.h"
 #include "api/array_view.h"
 #include "api/transport/field_trial_based_config.h"
+#include "api/video_codecs/video_codec.h"
 #include "call/rtp_transport_controller_send_interface.h"
 #include "modules/pacing/packet_router.h"
 #include "modules/rtp_rtcp/include/rtp_rtcp.h"
@@ -273,19 +274,10 @@
 }
 
 absl::optional<VideoCodecType> GetVideoCodecType(const RtpConfig& config) {
-  absl::optional<VideoCodecType> video_type;
-  if (!config.raw_payload) {
-    if (absl::EqualsIgnoreCase(config.payload_name, "VP8")) {
-      video_type = kVideoCodecVP8;
-    } else if (absl::EqualsIgnoreCase(config.payload_name, "VP9")) {
-      video_type = kVideoCodecVP9;
-    } else if (absl::EqualsIgnoreCase(config.payload_name, "H264")) {
-      video_type = kVideoCodecH264;
-    } else {
-      video_type = kVideoCodecGeneric;
-    }
+  if (config.raw_payload) {
+    return absl::nullopt;
   }
-  return video_type;
+  return PayloadStringToCodecType(config.payload_name);
 }
 }  // namespace
 
