diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index 2da703e..899b89a 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -1108,6 +1108,7 @@
     ":stream_collection",
     ":transceiver_list",
     ":usage_pattern",
+    ":used_ids",
     ":webrtc_session_description_factory",
     "../api:array_view",
     "../api:audio_options_api",
diff --git a/pc/sdp_offer_answer.cc b/pc/sdp_offer_answer.cc
index fe7093d..1ed5c80 100644
--- a/pc/sdp_offer_answer.cc
+++ b/pc/sdp_offer_answer.cc
@@ -53,6 +53,7 @@
 #include "pc/rtp_sender_proxy.h"
 #include "pc/simulcast_description.h"
 #include "pc/usage_pattern.h"
+#include "pc/used_ids.h"
 #include "pc/webrtc_session_description_factory.h"
 #include "rtc_base/helpers.h"
 #include "rtc_base/logging.h"
@@ -120,12 +121,6 @@
 static const char kDefaultAudioSenderId[] = "defaulta0";
 static const char kDefaultVideoSenderId[] = "defaultv0";
 
-// NOTE: Duplicated from pc/used_ids.h
-static const int kLastDynamicPayloadTypeLowerRange = 63;
-
-static const int kFirstDynamicPayloadTypeUpperRange = 96;
-static const int kLastDynamicPayloadTypeUpperRange = 127;
-
 void NoteAddIceCandidateResult(int result) {
   RTC_HISTOGRAM_ENUMERATION("WebRTC.PeerConnection.AddIceCandidate", result,
                             kAddIceCandidateMax);
@@ -574,10 +569,8 @@
     if (type == cricket::MEDIA_TYPE_AUDIO) {
       RTC_DCHECK(media_description->as_audio());
       for (const auto& codec : media_description->as_audio()->codecs()) {
-        if (codec.id < 0 || codec.id > kLastDynamicPayloadTypeUpperRange ||
-            (media_description->rtcp_mux() &&
-             (codec.id > kLastDynamicPayloadTypeLowerRange &&
-              codec.id < kFirstDynamicPayloadTypeUpperRange))) {
+        if (!cricket::UsedPayloadTypes::IsIdValid(
+                codec, media_description->rtcp_mux())) {
           LOG_AND_RETURN_ERROR(
               RTCErrorType::INVALID_PARAMETER,
               "The media section with MID='" + content.mid() +
@@ -589,10 +582,8 @@
     } else if (type == cricket::MEDIA_TYPE_VIDEO) {
       RTC_DCHECK(media_description->as_video());
       for (const auto& codec : media_description->as_video()->codecs()) {
-        if (codec.id < 0 || codec.id > kLastDynamicPayloadTypeUpperRange ||
-            (media_description->rtcp_mux() &&
-             (codec.id > kLastDynamicPayloadTypeLowerRange &&
-              codec.id < kFirstDynamicPayloadTypeUpperRange))) {
+        if (!cricket::UsedPayloadTypes::IsIdValid(
+                codec, media_description->rtcp_mux())) {
           LOG_AND_RETURN_ERROR(
               RTCErrorType::INVALID_PARAMETER,
               "The media section with MID='" + content.mid() +
diff --git a/pc/used_ids.h b/pc/used_ids.h
index 1236a78..6b342cb 100644
--- a/pc/used_ids.h
+++ b/pc/used_ids.h
@@ -96,6 +96,16 @@
       : UsedIds<Codec>(kFirstDynamicPayloadTypeLowerRange,
                        kLastDynamicPayloadTypeUpperRange) {}
 
+  // Check if a payload type is valid. The range [64-95] is forbidden
+  // when rtcp-mux is used.
+  static bool IsIdValid(Codec codec, bool rtcp_mux) {
+    if (rtcp_mux && (codec.id > kLastDynamicPayloadTypeLowerRange &&
+                     codec.id < kFirstDynamicPayloadTypeUpperRange)) {
+      return false;
+    }
+    return codec.id >= 0 && codec.id <= kLastDynamicPayloadTypeUpperRange;
+  }
+
  protected:
   bool IsIdUsed(int new_id) override {
     // Range marked for RTCP avoidance is "used".
