diff --git a/media/libmediatranscoding/transcoder/VideoTrackTranscoder.cpp b/media/libmediatranscoding/transcoder/VideoTrackTranscoder.cpp
index 22ab7a5..0695bdb 100644
--- a/media/libmediatranscoding/transcoder/VideoTrackTranscoder.cpp
+++ b/media/libmediatranscoding/transcoder/VideoTrackTranscoder.cpp
@@ -40,12 +40,10 @@
 // Default key frame interval in seconds.
 static constexpr float kDefaultKeyFrameIntervalSeconds = 1.0f;
 // Default codec operating rate.
-static int32_t kDefaultCodecOperatingRate7200P = base::GetIntProperty(
+static int32_t kDefaultCodecOperatingRate720P = base::GetIntProperty(
         "debug.media.transcoding.codec_max_operating_rate_720P", /*default*/ 480);
 static int32_t kDefaultCodecOperatingRate1080P = base::GetIntProperty(
         "debug.media.transcoding.codec_max_operating_rate_1080P", /*default*/ 240);
-static int32_t kDefaultCodecOperatingRate4K = base::GetIntProperty(
-        "debug.media.transcoding.codec_max_operating_rate_4K", /*default*/ 120);
 // Default codec priority.
 static constexpr int32_t kDefaultCodecPriority = 1;
 // Default bitrate, in case source estimation fails.
@@ -193,15 +191,12 @@
     if (AMediaFormat_getInt32(encoderFormat, AMEDIAFORMAT_KEY_WIDTH, &width) && (width > 0) &&
         AMediaFormat_getInt32(encoderFormat, AMEDIAFORMAT_KEY_HEIGHT, &height) && (height > 0)) {
         if ((width == 1280 && height == 720) || (width == 720 && height == 1280)) {
-            return kDefaultCodecOperatingRate1080P;
+            return kDefaultCodecOperatingRate720P;
         } else if ((width == 1920 && height == 1080) || (width == 1080 && height == 1920)) {
             return kDefaultCodecOperatingRate1080P;
-        } else if (((width == 3840 && height == 2160) || (width == 2160 && height == 3840))) {
-            return kDefaultCodecOperatingRate4K;
         } else {
             LOG(WARNING) << "Could not find default operating rate: " << width << " " << height;
-            // Use 4K as that should be the lowest for the devices.
-            return kDefaultCodecOperatingRate4K;
+            // Don't set operating rate if the correct dimensions are not found.
         }
     } else {
         LOG(ERROR) << "Failed to get default operating rate due to missing resolution";
